feat: Добавлена нативная установка Singbox и обновлены скрипты прокси и документация.

This commit is contained in:
2025-12-29 12:24:44 +03:00
parent af72540aa8
commit a837072454
4 changed files with 686 additions and 48 deletions

View File

@@ -3,7 +3,7 @@
# ==========================================
param(
[switch]$Force, # Принудительная переустановка
[string]$Proxy = "", # Адрес прокси (для неинтерактивного режима), например "127.0.0.1:8082"
[string]$Proxy = "", # Адрес прокси (для неинтерактивного режима), например "127.0.0.1:8080"
[string[]]$Apps = @(), # Приложения (для неинтерактивного режима), например @("Discord", "Vesktop")
[switch]$Silent # Тихий режим (без лишнего вывода, для вызова из других скриптов)
)
@@ -44,9 +44,11 @@ if ($proxifyreExists -and -not $Force) {
Write-Host "📊 Статус службы: " -NoNewline -ForegroundColor Yellow
if ($proxifyreService -and $proxifyreService.Status -eq 'Running') {
Write-Host "РАБОТАЕТ" -ForegroundColor Green
} elseif ($proxifyreService) {
}
elseif ($proxifyreService) {
Write-Host "$($proxifyreService.Status)" -ForegroundColor Red
} else {
}
else {
Write-Host "НЕ ЗАРЕГИСТРИРОВАНА" -ForegroundColor Red
}
@@ -68,7 +70,8 @@ if ($proxifyreExists -and -not $Force) {
Write-Host " Прокси: $proxy" -ForegroundColor White
Write-Host " Приложения: $apps" -ForegroundColor White
Write-Host ""
} catch {
}
catch {
Write-Host " ⚠️ Не удалось прочитать конфиг" -ForegroundColor Yellow
}
}
@@ -114,14 +117,90 @@ if ($proxifyreExists -and -not $Force) {
}
"4" {
Write-Host "`n⚙️ Изменение настроек..." -ForegroundColor Cyan
# Продолжаем выполнение скрипта для настройки
# Выбор режима
Write-Host ""
Write-Host "📡 Где работает VPN-прокси?" -ForegroundColor Yellow
Write-Host " [1] Удалённый сервер (Docker на VPS/другом ПК)" -ForegroundColor White
Write-Host " [2] Локальный Docker Desktop (на этом ПК)" -ForegroundColor White
$modeChoice = Read-Host "👉 Выбор (1-2)"
if ($modeChoice -eq "2") {
# Локальный Docker — нужен sing-box
$singboxTask = Get-ScheduledTask -TaskName "SingBoxProxy" -ErrorAction SilentlyContinue
if ($singboxTask -and $singboxTask.State -eq "Running") {
Write-Host "`n✅ Нативный sing-box работает!" -ForegroundColor Green
$NewProxy = "127.0.0.1:1080"
}
else {
Write-Host "`n⚠️ Нативный sing-box не запущен!" -ForegroundColor Yellow
Write-Host " Запустите: .\setup-singbox-native.ps1" -ForegroundColor Cyan
$runSetup = Read-Host " Запустить сейчас? (y/n)"
if ($runSetup -eq "y") {
$setupScript = Join-Path $PSScriptRoot "setup-singbox-native.ps1"
if (Test-Path $setupScript) { & $setupScript }
}
$NewProxy = "127.0.0.1:1080"
}
}
else {
# Удалённый прокси
Write-Host "`n🌐 SOCKS5 Прокси (IP:PORT):" -ForegroundColor Yellow
$NewProxy = Read-Host " [Enter] для 127.0.0.1:8080"
if ([string]::IsNullOrWhiteSpace($NewProxy)) { $NewProxy = "127.0.0.1:8080" }
}
# Запрос приложений
Write-Host "`n🎮 Что проксируем?" -ForegroundColor Yellow
Write-Host " [1] Vesktop"
Write-Host " [2] Discord"
Write-Host " [3] Vesktop + Discord"
$AppChoice = Read-Host "👉 Выбор (1-3)"
switch ($AppChoice) {
"2" { $NewApps = @("Discord") }
"3" { $NewApps = @("Vesktop", "Discord") }
Default { $NewApps = @("Vesktop") }
}
# Генерируем новый конфиг
Write-Host "`n📝 Обновляем конфиг..." -ForegroundColor Cyan
$ConfigData = @{
logLevel = "Info"
proxies = @(
@{
appNames = $NewApps
socks5ProxyEndpoint = $NewProxy
username = ""
password = ""
supportedProtocols = @("TCP", "UDP")
}
)
excludes = @()
} | ConvertTo-Json -Depth 4
Set-Content -Path $configPath -Value $ConfigData -Encoding UTF8
Write-Host " ✅ Конфиг обновлён:" -ForegroundColor Green
Write-Host " Прокси: $NewProxy" -ForegroundColor White
Write-Host " Приложения: $($NewApps -join ', ')" -ForegroundColor White
# Перезапуск службы
Write-Host "`n🔄 Перезапуск службы для применения..." -ForegroundColor Cyan
Start-Process -FilePath "$InstallPath\ProxiFyre.exe" -ArgumentList "stop" -Wait -NoNewWindow
Start-Sleep -s 1
Start-Process -FilePath "$InstallPath\ProxiFyre.exe" -ArgumentList "start" -Wait -NoNewWindow
Start-Sleep -s 2
$svc = Get-Service -Name "ProxiFyreService" -ErrorAction SilentlyContinue
Write-Host " Статус: $($svc.Status)" -ForegroundColor Green
exit 0
}
"5" {
Write-Host "`n📋 Логи ProxiFyre:" -ForegroundColor Cyan
$logFiles = Get-ChildItem "$InstallPath\logs\*.log" -ErrorAction SilentlyContinue | Sort-Object LastWriteTime -Descending | Select-Object -First 1
if ($logFiles) {
Get-Content $logFiles.FullName -Tail 50
} else {
}
else {
Write-Host " Лог-файлы не найдены" -ForegroundColor Yellow
}
exit 0
@@ -130,14 +209,16 @@ if ($proxifyreExists -and -not $Force) {
Write-Host "`n📄 Конфиг ProxiFyre:" -ForegroundColor Cyan
if (Test-Path $configPath) {
Get-Content $configPath
} else {
}
else {
Write-Host " Конфиг не найден" -ForegroundColor Yellow
}
exit 0
}
"7" {
Write-Host "`n🔧 Переустановка..." -ForegroundColor Cyan
# Продолжаем выполнение скрипта
$Force = $true
# Продолжаем выполнение скрипта для полной переустановки
}
default {
Write-Host "`n Выход" -ForegroundColor Gray
@@ -157,11 +238,77 @@ if ($Proxy -and $Apps.Count -gt 0) {
Write-Host " Прокси: $UserProxy" -ForegroundColor White
Write-Host " Приложения: $($TargetApps -join ', ')" -ForegroundColor White
}
} else {
# Интерактивный режим
Write-Host "`n🌐 SOCKS5 Прокси (IP:PORT):" -ForegroundColor Yellow
$UserProxy = Read-Host " [Enter] для 127.0.0.1:8082"
if ([string]::IsNullOrWhiteSpace($UserProxy)) { $UserProxy = "127.0.0.1:8082" }
}
else {
# Интерактивный режим — сначала выбор режима
Write-Host ""
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host " 📡 ГДЕ РАБОТАЕТ ВАШ VPN-ПРОКСИ? " -ForegroundColor Cyan
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host ""
Write-Host " [1] 🌐 УДАЛЁННЫЙ СЕРВЕР" -ForegroundColor White
Write-Host " Docker на VPS или другом ПК в сети" -ForegroundColor Gray
Write-Host " (UDP работает, просто укажите адрес)" -ForegroundColor Gray
Write-Host ""
Write-Host " [2] 💻 ЛОКАЛЬНЫЙ DOCKER НА WINDOWS" -ForegroundColor White
Write-Host " Docker Desktop на этом компьютере" -ForegroundColor Gray
Write-Host " (UDP НЕ работает, нужен нативный sing-box)" -ForegroundColor Gray
Write-Host ""
$modeChoice = Read-Host "👉 Выбор (1-2)"
if ($modeChoice -eq "2") {
# Локальный Docker — нужен нативный sing-box
Write-Host ""
Write-Host "==========================================" -ForegroundColor Yellow
Write-Host " ⚠️ ЛОКАЛЬНЫЙ DOCKER DESKTOP " -ForegroundColor Yellow
Write-Host "==========================================" -ForegroundColor Yellow
Write-Host ""
Write-Host "Docker Desktop на Windows НЕ поддерживает UDP!" -ForegroundColor Red
Write-Host "Для голосовых звонков Discord нужен нативный sing-box." -ForegroundColor Red
Write-Host ""
# Проверяем, установлен ли уже нативный sing-box
$singboxInstalled = Test-Path "C:\Tools\sing-box\sing-box.exe"
$singboxTask = Get-ScheduledTask -TaskName "SingBoxProxy" -ErrorAction SilentlyContinue
if ($singboxInstalled -and $singboxTask -and $singboxTask.State -eq "Running") {
Write-Host "✅ Нативный sing-box уже установлен и работает!" -ForegroundColor Green
Write-Host " Прокси: 127.0.0.1:1080" -ForegroundColor White
$UserProxy = "127.0.0.1:1080"
}
else {
Write-Host "Для установки нативного sing-box запустите:" -ForegroundColor Yellow
Write-Host " .\setup-singbox-native.ps1" -ForegroundColor Cyan
Write-Host ""
$runSetup = Read-Host "Запустить setup-singbox-native.ps1 сейчас? (y/n)"
if ($runSetup -eq "y") {
$setupScript = Join-Path $PSScriptRoot "setup-singbox-native.ps1"
if (Test-Path $setupScript) {
& $setupScript
# После установки используем порт 1080
$UserProxy = "127.0.0.1:1080"
}
else {
Write-Host "❌ Скрипт setup-singbox-native.ps1 не найден!" -ForegroundColor Red
exit 1
}
}
else {
Write-Host ""
Write-Host "Установите sing-box вручную и повторите." -ForegroundColor Yellow
exit 0
}
}
}
else {
# Удалённый прокси — просто спрашиваем адрес
Write-Host "`n🌐 SOCKS5 Прокси (IP:PORT):" -ForegroundColor Yellow
Write-Host " Примеры: 192.168.1.100:8080, myserver.com:8080" -ForegroundColor Gray
$UserProxy = Read-Host " [Enter] для 127.0.0.1:8080"
if ([string]::IsNullOrWhiteSpace($UserProxy)) { $UserProxy = "127.0.0.1:8080" }
}
Write-Host "`n🎮 Что проксируем?" -ForegroundColor Yellow
Write-Host " [1] Vesktop"
@@ -193,7 +340,8 @@ try {
$Proc = Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"$MsiFile`" /qn /norestart" -Wait -PassThru
if ($Proc.ExitCode -eq 0) { Write-Host " ✅ Успешно." -ForegroundColor Green }
elseif ($Proc.ExitCode -eq 1603) { Write-Host " ⚠️ Уже установлен." -ForegroundColor Yellow }
} catch {
}
catch {
Write-Error "❌ Ошибка скачивания драйвера: $_"; Exit
}
@@ -209,7 +357,8 @@ try {
Invoke-WebRequest -Uri $AppUrl -OutFile $ZipFile -ErrorAction Stop
Expand-Archive -Path $ZipFile -DestinationPath $InstallPath -Force
Write-Host " ✅ Распаковано." -ForegroundColor Green
} catch {
}
catch {
Write-Error "❌ Ошибка скачивания ProxiFyre: $_"; Exit
}
@@ -224,13 +373,13 @@ Write-Host "`n📝 [3/3] Генерируем конфиг..." -ForegroundColor
$ConfigPath = Join-Path -Path $InstallPath -ChildPath "app-config.json"
$ConfigData = @{
logLevel = "Info"
proxies = @(
proxies = @(
@{
appNames = $TargetApps
appNames = $TargetApps
socks5ProxyEndpoint = $UserProxy
username = ""
password = ""
supportedProtocols = @("TCP", "UDP")
username = ""
password = ""
supportedProtocols = @("TCP", "UDP")
}
)
excludes = @()
@@ -263,7 +412,8 @@ if ($Service -and $Service.Status -eq 'Running') {
Write-Host "🎉 УСПЕХ! Служба работает в фоне." -ForegroundColor Green
Write-Host "📁 Логи тут: $InstallPath\logs"
Write-Host "=========================================="
} else {
}
else {
Write-Host "`n⚠️ Служба установлена, но статус: $($Service.Status). Проверь логи." -ForegroundColor Red
Write-Host "Попробуй вручную: net start ProxiFyreService"
}