feat: Добавлена нативная установка Singbox и обновлены скрипты прокси и документация.
This commit is contained in:
@@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user