guanghulab/image-studio/deploy/test-network.mjs

74 lines
2.7 KiB
JavaScript
Raw Permalink Normal View History

/**
* 测试广州新加坡网络连通性然后配置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))