log("MistyCore-Socket", "Installing socket..."); const net = require('net'); const fs = require('fs'); const unixSocketServer = net.createServer(); if (fs.existsSync(systemRoot + "/../Volumes/VM/MistyCore-Socket")) fs.unlinkSync(systemRoot + "/../Volumes/VM/MistyCore-Socket"); unixSocketServer.listen(systemRoot + "/../Volumes/VM/MistyCore-Socket", () => { log("MistyCore-Socket", "Socket ready"); }); unixSocketServer.on('connection', (s) => { s.on('data', function (msg) { try { let data = JSON.parse(msg.toString()); if (!data.action || !data.payload) { log("MistyCore-Socket", "Received data but it is not correctly formatted:\n" + e.stack); } else { switch (data.action) { case "LOG": log(data.payload.service ?? "", data.payload.text ?? ""); break; case "SHUTDOWN": require('./power')(false); break; case "REBOOT": require('./power')(true); break; case "SERVICE": switch (data.payload.option) { case "restart": services.restart(data.payload.service); break; case "stop": services.stop(data.payload.service); break; case "forcestop": services.stop(data.payload.service, true); break; case "start": services.start(data.payload.service, true); break; default: log("MistyCore-Socket", "Received unrecognized launch daemon command: " + data.payload.option); break; } break; default: log("MistyCore-Socket", "Received data but the action is not recognized:\n" + data.action); break; } } } catch (e) { log("MistyCore-Socket", "Received data but unable to decode it:\n" + e.stack); } }); s.end(); });