summaryrefslogtreecommitdiff
path: root/MistyCore/socket.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-11-28 17:31:34 +0100
committerMinteck <contact@minteck.org>2022-11-28 17:31:34 +0100
commit7923aa8942b55884320ef2428417e3ee4b121613 (patch)
tree7993632f2898b1998f25b11ce40a8d2eb3d44730 /MistyCore/socket.js
downloadmistyos-og-7923aa8942b55884320ef2428417e3ee4b121613.tar.gz
mistyos-og-7923aa8942b55884320ef2428417e3ee4b121613.tar.bz2
mistyos-og-7923aa8942b55884320ef2428417e3ee4b121613.zip
Initial commitHEADmane
Diffstat (limited to 'MistyCore/socket.js')
-rw-r--r--MistyCore/socket.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/MistyCore/socket.js b/MistyCore/socket.js
new file mode 100644
index 0000000..0db4f5b
--- /dev/null
+++ b/MistyCore/socket.js
@@ -0,0 +1,68 @@
+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 ?? "<unknown>", data.payload.text ?? "<unknown>");
+ 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();
+}); \ No newline at end of file