You've already forked fm-dx-webserver
mirror of
https://github.com/KubaPro010/fm-dx-webserver.git
synced 2026-02-26 22:13:53 +01:00
library cleanup / code cleanup + custom titles
This commit is contained in:
61
index.js
61
index.js
@@ -4,23 +4,19 @@ const http = require('http');
|
|||||||
const WebSocket = require('ws');
|
const WebSocket = require('ws');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const net = require('net');
|
const net = require('net');
|
||||||
const cors = require('cors');
|
|
||||||
const axios = require('axios');
|
|
||||||
const crypto = require('crypto');
|
const crypto = require('crypto');
|
||||||
|
|
||||||
let receivedSalt = '';
|
|
||||||
let receivedPassword = false;
|
|
||||||
let currentUsers = 0;
|
|
||||||
|
|
||||||
const infoMsg = "\x1b[32m[INFO]\x1b[0m";
|
|
||||||
const debugMsg = "\x1b[36m[DEBUG]\x1b[0m";
|
|
||||||
|
|
||||||
// Other JS files
|
|
||||||
const dataHandler = require('./datahandler');
|
const dataHandler = require('./datahandler');
|
||||||
const config = require('./userconfig');
|
const config = require('./userconfig');
|
||||||
|
|
||||||
/* Server settings */
|
/* Server settings */
|
||||||
const { webServerHost, webServerPort, xdrdServerHost, xdrdServerPort, xdrdPassword, qthLatitude, qthLongitude } = config;
|
const { webServerHost, webServerPort, webServerName, xdrdServerHost, xdrdServerPort, xdrdPassword, qthLatitude, qthLongitude } = config;
|
||||||
|
|
||||||
|
const infoMsg = "\x1b[32m[INFO]\x1b[0m";
|
||||||
|
const debugMsg = "\x1b[36m[DEBUG]\x1b[0m";
|
||||||
|
|
||||||
|
let receivedSalt = '';
|
||||||
|
let receivedPassword = false;
|
||||||
|
let currentUsers = 0;
|
||||||
|
|
||||||
const wss = new WebSocket.Server({ noServer: true });
|
const wss = new WebSocket.Server({ noServer: true });
|
||||||
|
|
||||||
@@ -34,7 +30,7 @@ wss.on('connection', (ws, request) => {
|
|||||||
const clientIp = request.connection.remoteAddress;
|
const clientIp = request.connection.remoteAddress;
|
||||||
currentUsers++;
|
currentUsers++;
|
||||||
dataHandler.showOnlineUsers(currentUsers);
|
dataHandler.showOnlineUsers(currentUsers);
|
||||||
console.log(infoMsg, `WebSocket client \x1b[32mconnected\x1b[0m (${clientIp}) \x1b[90m[${currentUsers}]`);
|
console.log(infoMsg, `Web client \x1b[32mconnected\x1b[0m (${clientIp}) \x1b[90m[${currentUsers}]`);
|
||||||
|
|
||||||
ws.on('message', (message) => {
|
ws.on('message', (message) => {
|
||||||
if(config.verboseMode === true) {
|
if(config.verboseMode === true) {
|
||||||
@@ -47,7 +43,7 @@ wss.on('connection', (ws, request) => {
|
|||||||
ws.on('close', (code, reason) => {
|
ws.on('close', (code, reason) => {
|
||||||
currentUsers--;
|
currentUsers--;
|
||||||
dataHandler.showOnlineUsers(currentUsers);
|
dataHandler.showOnlineUsers(currentUsers);
|
||||||
console.log(infoMsg, `WebSocket client \x1b[31mdisconnected\x1b[0m (${clientIp}) \x1b[90m[${currentUsers}]`);
|
console.log(infoMsg, `Web client \x1b[31mdisconnected\x1b[0m (${clientIp}) \x1b[90m[${currentUsers}]`);
|
||||||
});
|
});
|
||||||
|
|
||||||
ws.on('error', console.error);
|
ws.on('error', console.error);
|
||||||
@@ -60,16 +56,11 @@ app.use(express.static(path.join(__dirname, 'web')));
|
|||||||
// Function to authenticate with the xdrd server
|
// Function to authenticate with the xdrd server
|
||||||
function authenticateWithXdrd(client, salt, password) {
|
function authenticateWithXdrd(client, salt, password) {
|
||||||
const sha1 = crypto.createHash('sha1');
|
const sha1 = crypto.createHash('sha1');
|
||||||
|
|
||||||
// Convert salt and password to buffers
|
|
||||||
const saltBuffer = Buffer.from(salt, 'utf-8');
|
const saltBuffer = Buffer.from(salt, 'utf-8');
|
||||||
const passwordBuffer = Buffer.from(password, 'utf-8');
|
const passwordBuffer = Buffer.from(password, 'utf-8');
|
||||||
|
|
||||||
// Update the hash context with salt and password
|
|
||||||
sha1.update(saltBuffer);
|
sha1.update(saltBuffer);
|
||||||
sha1.update(passwordBuffer);
|
sha1.update(passwordBuffer);
|
||||||
|
|
||||||
// Finalize the hash and get the hashed password
|
|
||||||
const hashedPassword = sha1.digest('hex');
|
const hashedPassword = sha1.digest('hex');
|
||||||
client.write(hashedPassword + '\n');
|
client.write(hashedPassword + '\n');
|
||||||
client.write('x\n');
|
client.write('x\n');
|
||||||
@@ -83,7 +74,7 @@ client.connect(xdrdServerPort, xdrdServerHost, () => {
|
|||||||
const receivedData = data.toString();
|
const receivedData = data.toString();
|
||||||
const lines = receivedData.split('\n');
|
const lines = receivedData.split('\n');
|
||||||
|
|
||||||
// Assuming that the first message contains the salt
|
// Salt reading, so we can authenticate
|
||||||
if (lines.length > 0 && !receivedPassword) {
|
if (lines.length > 0 && !receivedPassword) {
|
||||||
receivedSalt = lines[0].trim();
|
receivedSalt = lines[0].trim();
|
||||||
authenticateWithXdrd(client, receivedSalt, xdrdPassword);
|
authenticateWithXdrd(client, receivedSalt, xdrdPassword);
|
||||||
@@ -120,32 +111,6 @@ httpServer.listen(webServerPort, webServerHost, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
app.get('/coordinates', (req, res) => {
|
app.get('/static_data', (req, res) => {
|
||||||
// Sending the coordinates to the client
|
res.json({ qthLatitude, qthLongitude, webServerName });
|
||||||
res.json({ qthLatitude, qthLongitude });
|
|
||||||
});
|
});
|
||||||
/* Audio */
|
|
||||||
|
|
||||||
app.get('/audio-proxy', (req, res) => {
|
|
||||||
const audioStreamUrl = 'http://fmdx.pl:8000/noobish.opus';
|
|
||||||
|
|
||||||
axios.get(audioStreamUrl, {
|
|
||||||
headers: {
|
|
||||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
|
|
||||||
},
|
|
||||||
responseType: 'stream', // Specify the response type as a stream
|
|
||||||
})
|
|
||||||
.then((response) => {
|
|
||||||
const contentType = response.headers['content-type'] || 'audio/ogg';
|
|
||||||
res.setHeader('Content-Type', contentType);
|
|
||||||
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
||||||
console.log(contentType);
|
|
||||||
response.data.pipe(res);
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
console.error('Error in audio proxy request:', error);
|
|
||||||
res.status(500).send('Error in audio proxy request');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
app.use('/audio-proxy', cors());
|
|
||||||
111
package-lock.json
generated
111
package-lock.json
generated
@@ -9,15 +9,13 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.6.0",
|
"express": "4.18.2",
|
||||||
"cors": "^2.8.5",
|
|
||||||
"express": "^4.18.2",
|
|
||||||
"http": "^0.0.1-security",
|
"http": "^0.0.1-security",
|
||||||
"https": "^1.0.0",
|
"https": "1.0.0",
|
||||||
"koffi": "^2.6.6",
|
"koffi": "2.7.2",
|
||||||
"net": "^1.0.2",
|
"net": "1.0.2",
|
||||||
"websocket": "^1.0.34",
|
"websocket": "1.0.34",
|
||||||
"ws": "^8.14.2"
|
"ws": "8.14.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/accepts": {
|
"node_modules/accepts": {
|
||||||
@@ -37,34 +35,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||||
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
|
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
|
||||||
},
|
},
|
||||||
"node_modules/asynckit": {
|
|
||||||
"version": "0.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
|
||||||
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
|
||||||
},
|
|
||||||
"node_modules/axios": {
|
|
||||||
"version": "1.6.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
|
|
||||||
"integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==",
|
|
||||||
"dependencies": {
|
|
||||||
"follow-redirects": "^1.15.0",
|
|
||||||
"form-data": "^4.0.0",
|
|
||||||
"proxy-from-env": "^1.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/axios/node_modules/form-data": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
|
||||||
"dependencies": {
|
|
||||||
"asynckit": "^0.4.0",
|
|
||||||
"combined-stream": "^1.0.8",
|
|
||||||
"mime-types": "^2.1.12"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/body-parser": {
|
"node_modules/body-parser": {
|
||||||
"version": "1.20.1",
|
"version": "1.20.1",
|
||||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
|
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
|
||||||
@@ -121,17 +91,6 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/combined-stream": {
|
|
||||||
"version": "1.0.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
|
||||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
|
||||||
"dependencies": {
|
|
||||||
"delayed-stream": "~1.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/content-disposition": {
|
"node_modules/content-disposition": {
|
||||||
"version": "0.5.4",
|
"version": "0.5.4",
|
||||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
||||||
@@ -164,18 +123,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||||
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
|
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
|
||||||
},
|
},
|
||||||
"node_modules/cors": {
|
|
||||||
"version": "2.8.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
|
||||||
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
|
||||||
"dependencies": {
|
|
||||||
"object-assign": "^4",
|
|
||||||
"vary": "^1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/d": {
|
"node_modules/d": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
|
||||||
@@ -206,14 +153,6 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/delayed-stream": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/depd": {
|
"node_modules/depd": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||||
@@ -361,25 +300,6 @@
|
|||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/follow-redirects": {
|
|
||||||
"version": "1.15.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
|
|
||||||
"integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "individual",
|
|
||||||
"url": "https://github.com/sponsors/RubenVerborgh"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"debug": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/forwarded": {
|
"node_modules/forwarded": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
||||||
@@ -528,9 +448,9 @@
|
|||||||
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
|
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
|
||||||
},
|
},
|
||||||
"node_modules/koffi": {
|
"node_modules/koffi": {
|
||||||
"version": "2.6.6",
|
"version": "2.7.2",
|
||||||
"resolved": "https://registry.npmjs.org/koffi/-/koffi-2.6.6.tgz",
|
"resolved": "https://registry.npmjs.org/koffi/-/koffi-2.7.2.tgz",
|
||||||
"integrity": "sha512-+iFkVdkZYsqlgJLU4cm7AbhsCCxlmR62IfWLvpQGZ7FCkit5aECE0nAXn5hjowhxCUwFzfvhmlUaWEngeZlnTQ==",
|
"integrity": "sha512-AWcsEKETQuELxK0Wq/aXDkDiNFFY41TxZQSrKm2Nd6HO/KTHeohPOOIlh2OfQnBXJbRjx5etpWt8cbqMUZo2sg==",
|
||||||
"hasInstallScript": true
|
"hasInstallScript": true
|
||||||
},
|
},
|
||||||
"node_modules/media-typer": {
|
"node_modules/media-typer": {
|
||||||
@@ -617,14 +537,6 @@
|
|||||||
"node-gyp-build-test": "build-test.js"
|
"node-gyp-build-test": "build-test.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/object-assign": {
|
|
||||||
"version": "4.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
|
||||||
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/object-inspect": {
|
"node_modules/object-inspect": {
|
||||||
"version": "1.13.1",
|
"version": "1.13.1",
|
||||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
|
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
|
||||||
@@ -669,11 +581,6 @@
|
|||||||
"node": ">= 0.10"
|
"node": ">= 0.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/proxy-from-env": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
|
|
||||||
},
|
|
||||||
"node_modules/qs": {
|
"node_modules/qs": {
|
||||||
"version": "6.11.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
|
||||||
|
|||||||
17
package.json
17
package.json
@@ -4,19 +4,18 @@
|
|||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"debug": "node index.js",
|
||||||
|
"start": "node index.js"
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.6.0",
|
"express": "4.18.2",
|
||||||
"cors": "^2.8.5",
|
|
||||||
"express": "^4.18.2",
|
|
||||||
"http": "^0.0.1-security",
|
"http": "^0.0.1-security",
|
||||||
"https": "^1.0.0",
|
"https": "1.0.0",
|
||||||
"koffi": "^2.6.6",
|
"koffi": "2.7.2",
|
||||||
"net": "^1.0.2",
|
"net": "1.0.2",
|
||||||
"websocket": "^1.0.34",
|
"websocket": "1.0.34",
|
||||||
"ws": "^8.14.2"
|
"ws": "8.14.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const webServerHost = '192.168.1.14'; // IP of the web server
|
const webServerHost = '192.168.1.14'; // 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 xdrdServerHost = '192.168.1.15'; // xdrd server iP
|
const xdrdServerHost = '192.168.1.15'; // xdrd server iP
|
||||||
const xdrdServerPort = 7373; // xdrd server port
|
const xdrdServerPort = 7373; // xdrd server port
|
||||||
@@ -10,6 +11,7 @@ const qthLongitude = '15.924395'; // your longitude, useful for maps.fmdx.pl int
|
|||||||
|
|
||||||
const verboseMode = false; // if true, console will display extra messages
|
const verboseMode = false; // if true, console will display extra messages
|
||||||
|
|
||||||
|
// DO NOT MODIFY ANYTHING BELOW THIS LINE
|
||||||
module.exports = {
|
module.exports = {
|
||||||
webServerHost, webServerPort, xdrdServerHost, xdrdServerPort, xdrdPassword, qthLatitude, qthLongitude, verboseMode
|
webServerHost, webServerPort, webServerName, xdrdServerHost, xdrdServerPort, xdrdPassword, qthLatitude, qthLongitude, verboseMode
|
||||||
};
|
};
|
||||||
@@ -170,7 +170,8 @@ h3 {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
height: 425px;
|
height: 425px;
|
||||||
overflow: scroll;
|
overflow-y: scroll;
|
||||||
|
overflow-x: hidden;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>FM-DX Webserver [Noobish's Server]</title>
|
<title>FM-DX Webserver</title>
|
||||||
<link href="css/styles.css" type="text/css" rel="stylesheet">
|
<link href="css/styles.css" type="text/css" rel="stylesheet">
|
||||||
<link href="css/flags.min.css" type="text/css" rel="stylesheet">
|
<link href="css/flags.min.css" type="text/css" rel="stylesheet">
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" type="text/css" rel="stylesheet">
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" type="text/css" rel="stylesheet">
|
||||||
|
|||||||
@@ -39,12 +39,15 @@ function zoomOut() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getInitialSettings() {
|
function getInitialSettings() {
|
||||||
fetch('/coordinates')
|
fetch('/static_data')
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
// Use the received data (data.qthLatitude, data.qthLongitude) as needed
|
// Use the received data (data.qthLatitude, data.qthLongitude) as needed
|
||||||
localStorage.setItem('qthLatitude', data.qthLatitude);
|
localStorage.setItem('qthLatitude', data.qthLatitude);
|
||||||
localStorage.setItem('qthLongitude', data.qthLongitude);
|
localStorage.setItem('qthLongitude', data.qthLongitude);
|
||||||
|
localStorage.setItem('webServerName', data.webServerName);
|
||||||
|
|
||||||
|
document.title = 'FM-DX Webserver [' + data.webServerName + ']';
|
||||||
})
|
})
|
||||||
.catch(error => console.error('Error:', error));
|
.catch(error => console.error('Error:', error));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user