From 134649f87e842928ef6481984f3506fae3e9aa40 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Sat, 4 Apr 2026 10:14:55 +0200 Subject: [PATCH] send users to rawcomm --- server/datahandler.js | 2 ++ server/helpers.js | 22 ++-------------------- server/rawcomm.js | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 20 deletions(-) create mode 100644 server/rawcomm.js diff --git a/server/datahandler.js b/server/datahandler.js index 41a0bfd..c8d1dfb 100644 --- a/server/datahandler.js +++ b/server/datahandler.js @@ -1,4 +1,5 @@ /* Libraries / Imports */ +const send_to_rawcomm = require('./rawcomm'); const RDSDecoder = require("./rds.js"); const { serverConfig } = require('./server_config'); @@ -273,6 +274,7 @@ checkSerialPortStatus(); function showOnlineUsers(currentUsers) { dataToSend.users = currentUsers; initialData.users = currentUsers; + send_to_rawcomm(`o${currentUsers},0\n`); } let prevFreq = initialData.freq || '87.500'; diff --git a/server/helpers.js b/server/helpers.js index 6046083..c483cdd 100644 --- a/server/helpers.js +++ b/server/helpers.js @@ -7,23 +7,7 @@ const dataHandler = require('./datahandler'); const storage = require('./storage'); const consoleCmd = require('./console'); const { serverConfig, configSave } = require('./server_config'); - -const WebSocket = require('ws'); -const rawComm = new WebSocket.Server({ noServer: true }); - -rawComm.on('connection', (ws, request) => { - const { isAdminAuthenticated } = request.session || {}; - if(!isAdminAuthenticated) { - ws.close(1008, "No admin"); - return; - } - - ws.on('message', (message) => { - storage.ctl_output.write(`${message.toString()}\n`); - }); -}); - -storage.websocket_delegation.set("/rawcomm", rawComm); +const send_to_rawcomm = require("./rawcomm") let geoip = null; try { @@ -292,9 +276,7 @@ function resolveDataBuffer(data, wss, rdsWss) { if (receivedData.length) { dataHandler.handleData(wss, receivedData, rdsWss); - rawComm.clients.forEach((client) => { - if (client.readyState === WebSocket.OPEN) client.send(receivedData); - }); + send_to_rawcomm(receivedData); } } diff --git a/server/rawcomm.js b/server/rawcomm.js new file mode 100644 index 0000000..54dd7e0 --- /dev/null +++ b/server/rawcomm.js @@ -0,0 +1,25 @@ +const storage = require('./storage'); +const WebSocket = require('ws'); +const rawComm = new WebSocket.Server({ noServer: true }); + +rawComm.on('connection', (ws, request) => { + const { isAdminAuthenticated } = request.session || {}; + if(!isAdminAuthenticated) { + ws.close(1008, "No admin"); + return; + } + + ws.on('message', (message) => { + storage.ctl_output.write(`${message.toString()}\n`); + }); +}); + +storage.websocket_delegation.set("/rawcomm", rawComm); + +function send_to_rawcomm(data) { + rawComm.clients.forEach((client) => { + if (client.readyState === WebSocket.OPEN) client.send(data); + }); +} + +module.exports = send_to_rawcomm; \ No newline at end of file