ddnsman
Version:
DDNS Management
42 lines (41 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const node_ipc_1 = require("node-ipc");
const IpMonitor_1 = require("./IpMonitor");
const util_1 = require("./util");
const Worker_1 = require("./Worker");
process.on('uncaughtException', (err) => {
util_1.logger.error(err.message);
});
process.on('unhandledRejection', (err) => {
util_1.logger.error(err.message);
});
const worker = new Worker_1.Worker();
const ipMonitor = new IpMonitor_1.IpMonitor();
ipMonitor.on('change', (ip) => {
worker.sync(ip);
});
const ipc = new node_ipc_1.IPC();
ipc.config.appspace = 'ddns.';
ipc.config.id = 'worker';
ipc.config.silent = true;
ipc.serve(() => {
ipc.server.on('message', (data, socket) => {
try {
const res = worker.onMessage(data);
ipc.server.emit(socket, 'message', res);
}
catch (err) {
ipc.server.emit(socket, 'message', err.message);
}
finally {
if (worker.getActiveDomainCount() > 0) {
ipMonitor.start();
}
else {
ipMonitor.stop();
}
}
});
});
ipc.server.start();