120 lines
4.6 KiB
PowerShell
120 lines
4.6 KiB
PowerShell
# XYZW Token Manager - 防火墙配置脚本
|
||
# 需要以管理员权限运行
|
||
|
||
# 设置控制台编码为UTF-8
|
||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||
$OutputEncoding = [System.Text.Encoding]::UTF8
|
||
chcp 65001 | Out-Null
|
||
|
||
Write-Host "================================" -ForegroundColor Cyan
|
||
Write-Host "XYZW Token Manager" -ForegroundColor Cyan
|
||
Write-Host "防火墙配置脚本" -ForegroundColor Cyan
|
||
Write-Host "================================" -ForegroundColor Cyan
|
||
Write-Host ""
|
||
|
||
# 检查管理员权限
|
||
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||
|
||
if (-not $isAdmin) {
|
||
Write-Host "[错误] 此脚本需要管理员权限" -ForegroundColor Red
|
||
Write-Host "请右键点击此脚本,选择'以管理员身份运行'" -ForegroundColor Yellow
|
||
Write-Host ""
|
||
Read-Host "按回车键退出"
|
||
exit 1
|
||
}
|
||
|
||
Write-Host "[检查] 正在检查现有防火墙规则..." -ForegroundColor Yellow
|
||
|
||
# 检查是否已存在规则
|
||
$existingRule = Get-NetFirewallRule -DisplayName "XYZW Token Manager - 25432" -ErrorAction SilentlyContinue
|
||
|
||
if ($existingRule) {
|
||
Write-Host "[发现] 已存在防火墙规则" -ForegroundColor Green
|
||
Write-Host ""
|
||
$response = Read-Host "是否要删除并重新创建规则?(Y/N)"
|
||
|
||
if ($response -eq 'Y' -or $response -eq 'y') {
|
||
Write-Host "[删除] 正在删除旧规则..." -ForegroundColor Yellow
|
||
Remove-NetFirewallRule -DisplayName "XYZW Token Manager - 25432"
|
||
Write-Host "[成功] 旧规则已删除" -ForegroundColor Green
|
||
} else {
|
||
Write-Host "[跳过] 保留现有规则" -ForegroundColor Yellow
|
||
Write-Host ""
|
||
Read-Host "按回车键退出"
|
||
exit 0
|
||
}
|
||
}
|
||
|
||
Write-Host ""
|
||
Write-Host "[创建] 正在添加防火墙规则..." -ForegroundColor Yellow
|
||
Write-Host " - 端口: 25432" -ForegroundColor Gray
|
||
Write-Host " - 协议: TCP" -ForegroundColor Gray
|
||
Write-Host " - 方向: 入站" -ForegroundColor Gray
|
||
Write-Host " - 配置: 所有配置文件(域/专用/公用)" -ForegroundColor Gray
|
||
|
||
try {
|
||
# 创建新的防火墙规则
|
||
New-NetFirewallRule `
|
||
-DisplayName "XYZW Token Manager - 25432" `
|
||
-Description "允许XYZW Token Manager通过端口25432访问(IPv4和IPv6)" `
|
||
-Direction Inbound `
|
||
-LocalPort 25432 `
|
||
-Protocol TCP `
|
||
-Action Allow `
|
||
-Profile Any `
|
||
-Enabled True | Out-Null
|
||
|
||
Write-Host ""
|
||
Write-Host "[成功] 防火墙规则创建成功!" -ForegroundColor Green
|
||
|
||
} catch {
|
||
Write-Host ""
|
||
Write-Host "[错误] 创建防火墙规则失败" -ForegroundColor Red
|
||
Write-Host "错误信息: $($_.Exception.Message)" -ForegroundColor Red
|
||
Write-Host ""
|
||
Read-Host "按回车键退出"
|
||
exit 1
|
||
}
|
||
|
||
Write-Host ""
|
||
Write-Host "================================" -ForegroundColor Cyan
|
||
Write-Host "配置完成" -ForegroundColor Cyan
|
||
Write-Host "================================" -ForegroundColor Cyan
|
||
Write-Host ""
|
||
|
||
# 显示创建的规则详情
|
||
Write-Host "[规则详情]" -ForegroundColor Cyan
|
||
$rule = Get-NetFirewallRule -DisplayName "XYZW Token Manager - 25432"
|
||
$addressFilter = $rule | Get-NetFirewallAddressFilter
|
||
$portFilter = $rule | Get-NetFirewallPortFilter
|
||
$applicationFilter = $rule | Get-NetFirewallApplicationFilter
|
||
|
||
Write-Host " 名称: $($rule.DisplayName)" -ForegroundColor White
|
||
Write-Host " 启用: $($rule.Enabled)" -ForegroundColor White
|
||
Write-Host " 方向: $($rule.Direction)" -ForegroundColor White
|
||
Write-Host " 操作: $($rule.Action)" -ForegroundColor White
|
||
Write-Host " 协议: $($portFilter.Protocol)" -ForegroundColor White
|
||
Write-Host " 端口: $($portFilter.LocalPort)" -ForegroundColor White
|
||
Write-Host " 配置: $($rule.Profile)" -ForegroundColor White
|
||
|
||
Write-Host ""
|
||
Write-Host "[下一步]" -ForegroundColor Cyan
|
||
Write-Host "1. 确保DNS已配置IPv6 AAAA记录指向你的服务器" -ForegroundColor White
|
||
Write-Host "2. 运行 start-deploy.bat 启动服务" -ForegroundColor White
|
||
Write-Host "3. 通过 http://winnas.whtnas.top:25432 访问" -ForegroundColor White
|
||
Write-Host ""
|
||
|
||
Write-Host "[验证命令]" -ForegroundColor Cyan
|
||
Write-Host "# 检查端口监听状态" -ForegroundColor Gray
|
||
Write-Host "netstat -ano | findstr 25432" -ForegroundColor Yellow
|
||
Write-Host ""
|
||
Write-Host "# 测试本地访问" -ForegroundColor Gray
|
||
Write-Host "curl http://localhost:25432" -ForegroundColor Yellow
|
||
Write-Host ""
|
||
Write-Host "# 测试域名访问" -ForegroundColor Gray
|
||
Write-Host "curl http://winnas.whtnas.top:25432" -ForegroundColor Yellow
|
||
Write-Host ""
|
||
|
||
Read-Host "按回车键退出"
|
||
|