53 lines
1.8 KiB
PowerShell
53 lines
1.8 KiB
PowerShell
$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'
|