auth & console bugfixes

This commit is contained in:
NoobishSVK
2024-01-23 23:25:55 +01:00
parent ef0108e608
commit a83231780d
6 changed files with 93 additions and 56 deletions
+3 -2
View File
@@ -1,3 +1,4 @@
node_modules/ node_modules/
./example.js /example.js
./userconfig.json /userconfig.json
/userconfig_backup.js
+15 -10
View File
@@ -1,17 +1,22 @@
const { verboseMode } = require('./userconfig'); const { verboseMode } = require('./userconfig');
const MESSAGE_PREFIX = { const getCurrentTime = () => {
INFO: "\x1b[32m[INFO]\x1b[0m", const currentTime = new Date();
DEBUG: "\x1b[36m[DEBUG]\x1b[0m", const hours = currentTime.getHours().toString().padStart(2, '0');
const minutes = currentTime.getMinutes().toString().padStart(2, '0');
return `\x1b[90m[${hours}:${minutes}]\x1b[0m`;
}; };
const logInfo = (...messages) => console.log(MESSAGE_PREFIX.INFO, ...messages); const MESSAGE_PREFIX = {
const logDebug = (...messages) => { DEBUG: "\x1b[36m[DEBUG]\x1b[0m",
if (verboseMode) { INFO: "\x1b[32m[INFO]\x1b[0m",
console.log(MESSAGE_PREFIX.DEBUG, ...messages); WARN: "\x1b[33m[WARN]\x1b[0m",
}
}; };
const logDebug = (...messages) => verboseMode ? console.log(getCurrentTime(), MESSAGE_PREFIX.DEBUG, ...messages) : '';
const logInfo = (...messages) => console.log(getCurrentTime(), MESSAGE_PREFIX.INFO, ...messages);
const logWarn = (...messages) => console.log(getCurrentTime(), MESSAGE_PREFIX.WARN, ...messages);
module.exports = { module.exports = {
logInfo, logDebug logInfo, logDebug, logWarn
} };
+2 -1
View File
@@ -197,6 +197,7 @@ var dataToSend = {
country_iso: 'UN', country_iso: 'UN',
users: '', users: '',
}; };
var legacyRdsPiBuffer = null; var legacyRdsPiBuffer = null;
const initialData = { ...dataToSend }; const initialData = { ...dataToSend };
const resetToDefault = dataToSend => Object.assign(dataToSend, initialData); const resetToDefault = dataToSend => Object.assign(dataToSend, initialData);
@@ -297,5 +298,5 @@ function showOnlineUsers(currentUsers) {
} }
module.exports = { module.exports = {
handleData, showOnlineUsers handleData, showOnlineUsers, dataToSend
}; };
+37 -9
View File
@@ -61,20 +61,46 @@ function authenticateWithXdrd(client, salt, password) {
// WebSocket client connection // WebSocket client connection
client.connect(xdrdServerPort, xdrdServerHost, () => { client.connect(xdrdServerPort, xdrdServerHost, () => {
consoleCmd.logInfo('Connected to xdrd successfully.'); consoleCmd.logInfo('Connection to xdrd established successfully.');
client.once('data', (data) => { const authFlags = {
authMsg: false,
firstClient: false,
receivedPassword: false
};
const authDataHandler = (data) => {
const receivedData = data.toString(); const receivedData = data.toString();
const lines = receivedData.split('\n'); const lines = receivedData.split('\n');
// Salt reading, so we can authenticate for (const line of lines) {
if (lines.length > 0 && !receivedPassword) {
receivedSalt = lines[0].trim(); if (!authFlags.receivedPassword) {
authenticateWithXdrd(client, receivedSalt, xdrdPassword); authFlags.receivedSalt = line.trim();
receivedPassword = true; authenticateWithXdrd(client, authFlags.receivedSalt, xdrdPassword);
authFlags.receivedPassword = true;
} else {
if (line.startsWith('a')) {
authFlags.authMsg = true;
consoleCmd.logWarn('Authentication with xdrd failed. Is your password set correctly?');
} else if (line.startsWith('o1')) {
authFlags.firstClient = true;
} else if (line.startsWith('T') && line.length <= 7) {
const freq = line.slice(1) / 1000;
dataHandler.dataToSend.freq = freq.toFixed(3);
} else if (line.startsWith('OK')) {
authFlags.authMsg = true;
consoleCmd.logInfo('Authentication with xdrd successful.');
} }
});
}); if (authFlags.authMsg && authFlags.firstClient) {
client.write('T87500\n');
client.off('data', authDataHandler);
return;
}
}
}
};
client.on('data', (data) => { client.on('data', (data) => {
const receivedData = data.toString(); const receivedData = data.toString();
@@ -86,6 +112,8 @@ client.on('data', (data) => {
}); });
}); });
client.on('data', authDataHandler);
});
client.on('close', () => { client.on('close', () => {
console.log('Disconnected from xdrd'); console.log('Disconnected from xdrd');
+1 -1
View File
@@ -2,7 +2,7 @@ const webServerHost = '0.0.0.0'; // IP of the web server
const webServerPort = 8080; // web server port const webServerPort = 8080; // web server port
const webServerName = "Noobish's Server" // web server name (will be displayed in title, bookmarks...) const webServerName = "Noobish's Server" // web server name (will be displayed in title, bookmarks...)
const xdrdServerHost = '192.168.1.15'; // xdrd server IP (if it's running on the same machine, use 127.0.0.1) const xdrdServerHost = '127.0.0.1'; // xdrd server IP (if it's running on the same machine, use 127.0.0.1)
const xdrdServerPort = 7373; // xdrd server port const xdrdServerPort = 7373; // xdrd server port
const xdrdPassword = 'password'; // xdrd password (optional) const xdrdPassword = 'password'; // xdrd password (optional)
+8 -6
View File
@@ -14,7 +14,7 @@ $(document).ready(function() {
canvas.width = canvas.parentElement.clientWidth; canvas.width = canvas.parentElement.clientWidth;
var data = []; var data = [];
var maxDataPoints = 250; var maxDataPoints = 300;
var pointWidth = (canvas.width - 80) / maxDataPoints; var pointWidth = (canvas.width - 80) / maxDataPoints;
var europe_programmes = [ var europe_programmes = [
@@ -75,12 +75,15 @@ $(document).ready(function() {
// Draw the signal graph with zoom // Draw the signal graph with zoom
context.beginPath(); context.beginPath();
context.moveTo(50, canvas.height - (data[0] - zoomMinValue) * (canvas.height / (zoomMaxValue - zoomMinValue)));
for (let i = 1; i < data.length; i++) { // Start drawing from the rightmost point
const x = i * pointWidth; const startingIndex = Math.max(0, data.length - maxDataPoints);
context.moveTo(canvas.width - 40 - (data.length - startingIndex) * pointWidth, canvas.height - (data[startingIndex] - zoomMinValue) * (canvas.height / (zoomMaxValue - zoomMinValue)));
for (let i = startingIndex + 1; i < data.length; i++) {
const x = canvas.width - (data.length - i) * pointWidth - 40;
const y = canvas.height - (data[i] - zoomMinValue) * (canvas.height / (zoomMaxValue - zoomMinValue)); const y = canvas.height - (data[i] - zoomMinValue) * (canvas.height / (zoomMaxValue - zoomMinValue));
context.lineTo(x + 40, y); context.lineTo(x, y);
} }
context.strokeStyle = color4; context.strokeStyle = color4;
@@ -133,7 +136,6 @@ $(document).ready(function() {
} }
function compareNumbers(a, b) { function compareNumbers(a, b) {
return a - b; return a - b;
} }