Files
vpn-proxy/install.ps1

86 lines
3.9 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ==========================================
# 🚀 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