# ========================================== # 🚀 VPN PROXY INSTALLER # ========================================== # Этот скрипт автоматически скачивает и устанавливает VPN Proxy # Использование: # iwr https://git.dokops.ru/dokril/vpn-proxy/raw/branch/master/install.ps1 | iex $ErrorActionPreference = "Stop" # --- 1. Проверка прав администратора --- if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator")) { Write-Warning "⚠️ Требуются права администратора!" Write-Host "🔄 Перезапускаю скрипт с правами администратора..." -ForegroundColor Cyan # Сохраняем скрипт во временный файл, если он запущен из памяти (iex) if ($MyInvocation.MyCommand.CommandType -eq 'Script') { Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$($MyInvocation.MyCommand.Path)`"" -Verb RunAs } else { # Если запущено через IEX, мы не можем просто перезапустить файл. # Поэтому мы просто просим пользователя запустить терминал от админа. Write-Error "Пожалуйста, запустите PowerShell от имени Администратора и попробуйте снова." } exit } # --- 2. Настройки --- $InstallRoot = "C:\Tools" $InstallDir = "$InstallRoot\vpn-proxy" # Точная ссылка предоставленная пользователем $ZipUrl = "https://git.dokops.ru/dokril/vpn-proxy/archive/master.zip" $TempZip = "$env:TEMP\vpn-proxy-install.zip" Write-Host "🚀 Начинаем установку VPN Proxy..." -ForegroundColor Green Write-Host "📂 Путь установки: $InstallDir" -ForegroundColor Gray # --- 3. Подготовка папки --- if (-not (Test-Path $InstallRoot)) { New-Item -ItemType Directory -Path $InstallRoot -Force | Out-Null } # --- 4. Скачивание --- Write-Host "⬇️ Скачивание архива обновления..." -ForegroundColor Cyan try { Invoke-WebRequest -Uri $ZipUrl -OutFile $TempZip } catch { Write-Error "❌ Ошибка скачивания с $ZipUrl`nПроверьте подключение к интернету." exit 1 } # --- 5. Распаковка --- Write-Host "📦 Распаковка..." -ForegroundColor Cyan # Если папка уже есть, удаляем старую (делаем бэкап конфигов если нужно, но пока просто clean install) if (Test-Path $InstallDir) { # Можно добавить логику сохранения client.json, если нужно Remove-Item $InstallDir -Recurse -Force } Expand-Archive -Path $TempZip -DestinationPath $InstallRoot -Force # Архивы обычно распаковываются в папку vpn-proxy-master или vpn-proxy-main # Нам нужно переименовать её в vpn-proxy $ExtractedFolder = Get-ChildItem -Path $InstallRoot -Directory | Where-Object { $_.Name -match "vpn-proxy-(master|main)" } | Select-Object -First 1 if ($ExtractedFolder) { Rename-Item -Path $ExtractedFolder.FullName -NewName "vpn-proxy" -Force } # Удаляем временный архив Remove-Item $TempZip -Force if (-not (Test-Path "$InstallDir\manage.ps1")) { Write-Error "❌ Ошибка установки: файл manage.ps1 не найден в $InstallDir" exit 1 } # --- 6. Запуск --- Write-Host "✅ Установка завершена!" -ForegroundColor Green Write-Host "🚀 Запускаем меню управления..." -ForegroundColor Cyan Start-Sleep -Seconds 1 Set-Location $InstallDir .\manage.ps1