mirror of
https://github.com/NVIDIA/dgx-spark-playbooks.git
synced 2026-06-22 14:19:30 +00:00
50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
// OpenClaw os.networkInterfaces() shim for OpenShell sandboxes.
|
|
//
|
|
// Why: OpenClaw 2026.3.x calls os.networkInterfaces() at startup
|
|
// (pickPrimaryLanIPv4 -> initSelfPresence). The OpenShell sandbox kernel
|
|
// blocks the netlink syscall libuv uses, so the call throws
|
|
// `uv_interface_addresses returned Unknown system error 1` and the
|
|
// gateway crashes before binding port 18789.
|
|
//
|
|
// Fix: catch the error and return a deterministic localhost-only
|
|
// interface list. Self-presence advertising still works; the gateway
|
|
// just reports 127.0.0.1 as its LAN IP, which is fine for a sandbox
|
|
// that only ever serves loopback or the proxy-forwarded port.
|
|
//
|
|
// Wire-up: setup_sandbox.sh and restart_sandbox.sh export
|
|
// NODE_OPTIONS="--require /sandbox/clinical-intelligence/scripts/openclaw-os-shim.js"
|
|
// before invoking `openclaw gateway run`.
|
|
|
|
const os = require('os');
|
|
const original = os.networkInterfaces;
|
|
|
|
os.networkInterfaces = function safeNetworkInterfaces() {
|
|
try {
|
|
return original.call(os);
|
|
} catch (err) {
|
|
const msg = (err && err.message) || '';
|
|
const code = err && err.code;
|
|
if (code === 'ERR_SYSTEM_ERROR' || /uv_interface_addresses/.test(msg)) {
|
|
return {
|
|
lo: [{
|
|
address: '127.0.0.1',
|
|
netmask: '255.0.0.0',
|
|
family: 'IPv4',
|
|
mac: '00:00:00:00:00:00',
|
|
internal: true,
|
|
cidr: '127.0.0.1/8',
|
|
}],
|
|
eth0: [{
|
|
address: '127.0.0.1',
|
|
netmask: '255.0.0.0',
|
|
family: 'IPv4',
|
|
mac: '00:00:00:00:00:00',
|
|
internal: false,
|
|
cidr: '127.0.0.1/8',
|
|
}],
|
|
};
|
|
}
|
|
throw err;
|
|
}
|
|
};
|