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

74 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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