# ========================================== # �️ PROXIFYRE INSTALLER ДЛЯ DISCORD/VESKTOP # ========================================== param( [switch]$Force, # Принудительная переустановка [string]$Proxy = "", # Адрес прокси (для неинтерактивного режима), например "127.0.0.1:8082" [string[]]$Apps = @(), # Приложения (для неинтерактивного режима), например @("Discord", "Vesktop") [switch]$Silent # Тихий режим (без лишнего вывода, для вызова из других скриптов) ) # ========================================== # 🛠️ ПРЯМЫЕ ССЫЛКИ (Hardcoded) # ========================================== $InstallPath = "C:\Tools\ProxiFyre" $DriverUrl = "https://github.com/wiresock/ndisapi/releases/download/v3.6.2/Windows.Packet.Filter.3.6.2.1.x64.msi" $AppUrl = "https://github.com/wiresock/proxifyre/releases/download/v2.1.4/ProxiFyre-v2.1.4-x64-signed.zip" # ========================================== # 0. Проверка прав if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Host "⛔ Запусти от имени АДМИНИСТРАТОРА!" -ForegroundColor Red Start-Sleep -s 3; Exit } Clear-Host Write-Host "==========================================" -ForegroundColor Cyan Write-Host " 🚀 PROXIFYRE SERVICE INSTALLER " -ForegroundColor Cyan Write-Host "==========================================" -ForegroundColor Cyan # ========================================== # ПРОВЕРКА СУЩЕСТВУЮЩЕЙ УСТАНОВКИ # ========================================== $proxifyreExists = Test-Path "$InstallPath\ProxiFyre.exe" $proxifyreService = Get-Service -Name "ProxiFyreService" -ErrorAction SilentlyContinue if ($proxifyreExists -and -not $Force) { Write-Host "" Write-Host "==========================================" -ForegroundColor Green Write-Host " ✅ PROXIFYRE УЖЕ УСТАНОВЛЕН! " -ForegroundColor Green Write-Host "==========================================" -ForegroundColor Green Write-Host "" # Статус службы Write-Host "📊 Статус службы: " -NoNewline -ForegroundColor Yellow if ($proxifyreService -and $proxifyreService.Status -eq 'Running') { Write-Host "РАБОТАЕТ" -ForegroundColor Green } elseif ($proxifyreService) { Write-Host "$($proxifyreService.Status)" -ForegroundColor Red } else { Write-Host "НЕ ЗАРЕГИСТРИРОВАНА" -ForegroundColor Red } Write-Host "" Write-Host "📁 Расположение:" -ForegroundColor Yellow Write-Host " Путь: $InstallPath" -ForegroundColor White Write-Host " Конфиг: $InstallPath\app-config.json" -ForegroundColor White Write-Host " Логи: $InstallPath\logs\" -ForegroundColor White Write-Host "" # Показываем текущий конфиг $configPath = "$InstallPath\app-config.json" if (Test-Path $configPath) { try { $config = Get-Content $configPath -Raw | ConvertFrom-Json $apps = $config.proxies[0].appNames -join ", " $proxy = $config.proxies[0].socks5ProxyEndpoint Write-Host "⚙️ Текущие настройки:" -ForegroundColor Yellow Write-Host " Прокси: $proxy" -ForegroundColor White Write-Host " Приложения: $apps" -ForegroundColor White Write-Host "" } catch { Write-Host " ⚠️ Не удалось прочитать конфиг" -ForegroundColor Yellow } } Write-Host "==========================================" -ForegroundColor Cyan Write-Host "" Write-Host "Что вы хотите сделать?" -ForegroundColor Yellow Write-Host " [1] Запустить службу" -ForegroundColor White Write-Host " [2] Остановить службу" -ForegroundColor White Write-Host " [3] Перезапустить службу" -ForegroundColor White Write-Host " [4] Изменить настройки (прокси/приложения)" -ForegroundColor White Write-Host " [5] Показать логи" -ForegroundColor White Write-Host " [6] Показать конфиг" -ForegroundColor White Write-Host " [7] Переустановить (полная переустановка)" -ForegroundColor White Write-Host " [q] Выход" -ForegroundColor White Write-Host "" $choice = Read-Host "👉 Выбор (1-7/q)" switch ($choice) { "1" { Write-Host "`n🚀 Запуск службы..." -ForegroundColor Cyan 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 } "2" { Write-Host "`n⏹️ Остановка службы..." -ForegroundColor Cyan Start-Process -FilePath "$InstallPath\ProxiFyre.exe" -ArgumentList "stop" -Wait -NoNewWindow Write-Host " ✅ Служба остановлена" -ForegroundColor Green exit 0 } "3" { 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 } "4" { Write-Host "`n⚙️ Изменение настроек..." -ForegroundColor Cyan # Продолжаем выполнение скрипта для настройки } "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 { Write-Host " Лог-файлы не найдены" -ForegroundColor Yellow } exit 0 } "6" { Write-Host "`n📄 Конфиг ProxiFyre:" -ForegroundColor Cyan if (Test-Path $configPath) { Get-Content $configPath } else { Write-Host " Конфиг не найден" -ForegroundColor Yellow } exit 0 } "7" { Write-Host "`n🔧 Переустановка..." -ForegroundColor Cyan # Продолжаем выполнение скрипта } default { Write-Host "`n ℹ️ Выход" -ForegroundColor Gray exit 0 } } } # --- ШАГ 1: КОНФИГУРАЦИЯ --- # Если параметры переданы — используем их (неинтерактивный режим) if ($Proxy -and $Apps.Count -gt 0) { $UserProxy = $Proxy $TargetApps = $Apps if (-not $Silent) { Write-Host "`n⚙️ Неинтерактивный режим:" -ForegroundColor Cyan 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:1080" if ([string]::IsNullOrWhiteSpace($UserProxy)) { $UserProxy = "127.0.0.1:1080" } 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" { $TargetApps = @("Discord") } "3" { $TargetApps = @("Vesktop", "Discord") } Default { $TargetApps = @("Vesktop") } } } [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # --- ШАГ 2: ПОДГОТОВКА (ОЧИСТКА) --- Write-Host "`n🧹 [0/3] Очистка процессов..." -ForegroundColor Magenta # Убиваем любые старые процессы, чтобы они не держали драйвер Stop-Process -Name "ProxiFyre" -Force -ErrorAction SilentlyContinue Start-Sleep -s 1 # --- ШАГ 3: ДРАЙВЕР --- Write-Host "⚙️ [1/3] Ставим драйвер (Packet Filter)..." -ForegroundColor Magenta $MsiFile = "$env:TEMP\WinpkFilter.msi" try { Invoke-WebRequest -Uri $DriverUrl -OutFile $MsiFile -ErrorAction Stop $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 { Write-Error "❌ Ошибка скачивания драйвера: $_"; Exit } # --- ШАГ 4: PROXIFYRE --- Write-Host "`n⬇️ [2/3] Ставим ProxiFyre..." -ForegroundColor Magenta # Если папка есть, чистим всё, кроме конфига (если вдруг хотим сохранить), но проще пересоздать if (Test-Path $InstallPath) { Remove-Item $InstallPath -Recurse -Force -ErrorAction SilentlyContinue } New-Item -ItemType Directory -Force -Path $InstallPath | Out-Null try { $ZipFile = "$env:TEMP\ProxiFyre.zip" Invoke-WebRequest -Uri $AppUrl -OutFile $ZipFile -ErrorAction Stop Expand-Archive -Path $ZipFile -DestinationPath $InstallPath -Force Write-Host " ✅ Распаковано." -ForegroundColor Green } catch { Write-Error "❌ Ошибка скачивания ProxiFyre: $_"; Exit } # Вытаскиваем из подпапки если надо $ExeItem = Get-ChildItem -Path $InstallPath -Filter "ProxiFyre.exe" -Recurse | Select-Object -First 1 if ($ExeItem.DirectoryName -ne $InstallPath) { Copy-Item -Path "$($ExeItem.DirectoryName)\*" -Destination $InstallPath -Recurse -Force } # --- ШАГ 5: КОНФИГ --- Write-Host "`n📝 [3/3] Генерируем конфиг..." -ForegroundColor Cyan $ConfigPath = Join-Path -Path $InstallPath -ChildPath "app-config.json" $ConfigData = @{ logLevel = "Info" proxies = @( @{ appNames = $TargetApps socks5ProxyEndpoint = $UserProxy username = "" password = "" supportedProtocols = @("TCP", "UDP") } ) excludes = @() } | ConvertTo-Json -Depth 4 Set-Content -Path $ConfigPath -Value $ConfigData -Encoding UTF8 # --- ШАГ 6: УСТАНОВКА СЛУЖБЫ --- Write-Host "`n🛡️ [4/3] Регистрация службы Windows..." -ForegroundColor Cyan $ExePath = Join-Path -Path $InstallPath -ChildPath "ProxiFyre.exe" # 1. Удаляем старую службу если была Start-Process -FilePath $ExePath -ArgumentList "uninstall" -Wait -NoNewWindow Start-Sleep -s 1 # 2. Инсталлируем службу Start-Process -FilePath $ExePath -ArgumentList "install" -Wait -NoNewWindow Start-Sleep -s 1 # 3. Запускаем службу Write-Host " 🚀 Запускаем службу..." -ForegroundColor Yellow Start-Process -FilePath $ExePath -ArgumentList "start" -Wait -NoNewWindow Start-Sleep -s 3 # 4. Проверка # Важно: имя службы в системе именно "ProxiFyreService" (судя по твоим логам) $Service = Get-Service -Name "ProxiFyreService" -ErrorAction SilentlyContinue if ($Service -and $Service.Status -eq 'Running') { Write-Host "`n==========================================" -ForegroundColor Green Write-Host "🎉 УСПЕХ! Служба работает в фоне." -ForegroundColor Green Write-Host "📁 Логи тут: $InstallPath\logs" Write-Host "==========================================" } else { Write-Host "`n⚠️ Служба установлена, но статус: $($Service.Status). Проверь логи." -ForegroundColor Red Write-Host "Попробуй вручную: net start ProxiFyreService" }