74 lines
2.7 KiB
JavaScript
74 lines
2.7 KiB
JavaScript
/**
|
||
* 测试广州→新加坡网络连通性,然后配置Nginx
|
||
*/
|
||
const SERVERS = {
|
||
sg: { name: '新加坡·铸渊大脑', ip: '43.156.237.110', port: 3911, key: 'zy_gtw_74d30f54fa8b5581514569ee7874def57861a31ccb2be8c9' },
|
||
gz: { name: '广州·代码仓库', ip: '43.139.217.141', port: 3910, key: 'zy_gtw_4a155446b7acc09fe46a2a29972c0ca5d9954da19c35dc23' },
|
||
}
|
||
|
||
async function callGatekeeper(server, method, path, body = null) {
|
||
const url = `http://${server.ip}:${server.port}${path}`
|
||
const opts = {
|
||
method,
|
||
headers: { 'Authorization': `Bearer ${server.key}`, 'Content-Type': 'application/json' },
|
||
}
|
||
if (body) opts.body = JSON.stringify(body)
|
||
const res = await fetch(url, opts)
|
||
const text = await res.text()
|
||
let data
|
||
try { data = JSON.parse(text) } catch { data = { raw: text } }
|
||
return { status: res.status, data }
|
||
}
|
||
|
||
async function exec(server, cmd) {
|
||
const result = await callGatekeeper(server, 'POST', '/exec', { cmd })
|
||
return result.data
|
||
}
|
||
|
||
async function readFile(server, path) {
|
||
const result = await callGatekeeper(server, 'POST', '/file/read', { path })
|
||
if (result.status === 200) return result.data.content
|
||
return null
|
||
}
|
||
|
||
async function writeFile(server, path, content) {
|
||
const result = await callGatekeeper(server, 'POST', '/file/write', { path, content })
|
||
return result.status === 200
|
||
}
|
||
|
||
async function main() {
|
||
const gz = SERVERS.gz
|
||
const sg = SERVERS.sg
|
||
|
||
// 测试广州→新加坡网络(详细)
|
||
console.log('🔌 广州→新加坡 网络测试:')
|
||
const r1 = await exec(gz, `curl -v --connect-timeout 5 http://${sg.ip}:3912/ 2>&1 | head -20`)
|
||
console.log(r1.stdout || r1.stderr || 'empty')
|
||
|
||
// 测试广州→新加坡 Gatekeeper (3911)
|
||
console.log('\n🔌 广州→新加坡 Gatekeeper 测试:')
|
||
const r2 = await exec(gz, `curl -s --connect-timeout 5 -X POST http://${sg.ip}:3911/ping 2>&1 | head -5`)
|
||
console.log(r2.stdout || r2.stderr || 'empty')
|
||
|
||
// 如果广州不能直接连新加坡,试试从新加坡创建反向隧道
|
||
console.log('\n🔍 检查是否需要反向代理方案')
|
||
|
||
// 查看新加坡的ufw防火墙
|
||
const r3 = await exec(sg, 'ufw status 2>&1 || echo "ufw not active"')
|
||
console.log('新加坡防火墙:', r3.stdout || r3.stderr)
|
||
|
||
// 查看广州的防火墙
|
||
const r4 = await exec(gz, 'ufw status 2>&1 || echo "ufw not active"')
|
||
console.log('广州防火墙:', r4.stdout || r4.stderr)
|
||
|
||
// 检查新加坡3912端口是否监听在0.0.0.0
|
||
const r5 = await exec(sg, 'ss -tlnp | grep 3912')
|
||
console.log('新加坡3912监听:', r5.stdout || r5.stderr)
|
||
|
||
// 直接测试新加坡本地的3912
|
||
const r6 = await exec(sg, 'curl -s http://localhost:3912/ | head -3')
|
||
console.log('新加坡本地测试:', r6.stdout || r6.stderr)
|
||
}
|
||
|
||
main().catch(err => console.error('❌', err))
|