Files
Ananta-ps/Ananta.Proxy/Start-Proxy.ps1
T

53 lines
1.8 KiB
PowerShell
Raw Normal View History

$ErrorActionPreference = 'Stop'
$Root = Split-Path -Parent $MyInvocation.MyCommand.Path
$ProjectRoot = Split-Path -Parent $Root
$ConfigPath = Join-Path $ProjectRoot 'config\private-server.json'
$ProxyDir = Join-Path $Root 'proxy'
if (-not (Test-Path -LiteralPath $ConfigPath)) {
throw "Private server config is missing: $ConfigPath"
}
$Config = Get-Content -Raw -Encoding UTF8 -LiteralPath $ConfigPath | ConvertFrom-Json
$env:Ananta_CONFIG = $ConfigPath
$DnsName = [string]$Config.network.proxy.updateHost
$PfxPath = Join-Path $ProxyDir ("certs\{0}.pfx" -f $DnsName)
if (-not (Test-Path -LiteralPath $PfxPath)) {
throw 'Proxy certificate is missing. Run SETUP_PROXY_AS_ADMIN.ps1 once as Administrator.'
}
$NodeExe = $env:Ananta_NODE_EXE
if (-not $NodeExe) { $NodeExe = $env:ANANTA_NODE_EXE }
if (-not $NodeExe) {
$cmd = Get-Command node -ErrorAction SilentlyContinue
if ($cmd) { $NodeExe = $cmd.Source }
}
if (-not $NodeExe) {
foreach ($candidate in @(
(Join-Path $Root 'tools\node\node.exe'),
'C:\Program Files\nodejs\node.exe'
)) {
if (Test-Path -LiteralPath $candidate) { $NodeExe = $candidate; break }
}
}
if (-not $NodeExe) {
throw 'node.exe was not found. Install Node.js LTS or set Ananta_NODE_EXE.'
}
$ports = @(
[int]$Config.network.proxy.httpPort,
[int]$Config.network.proxy.httpsPort,
[int]$Config.network.proxy.loginListPort,
[int]$Config.network.proxy.loginTcpPort,
[int]$Config.network.proxy.gameTcpPort,
[int]$Config.network.proxy.sceneSubPort
) | Select-Object -Unique
New-Item -ItemType Directory -Force -Path (Join-Path $ProxyDir 'logs') | Out-Null
Set-Location $ProxyDir
Write-Host "Starting Ananta-ps proxy with: $NodeExe"
Write-Host ("Config: {0}" -f $ConfigPath)
Write-Host ("Ports: {0}" -f (($ports | Sort-Object) -join ', '))
& $NodeExe 'server.js'