From b1865d99e347f8b3e870cd9bfd9225436e9e6339 Mon Sep 17 00:00:00 2001 From: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com> Date: Tue, 13 Oct 2020 21:38:40 +0200 Subject: only check playercount on mouseover --- webAO/master.js | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) (limited to 'webAO') diff --git a/webAO/master.js b/webAO/master.js index be3478e..4a3321f 100644 --- a/webAO/master.js +++ b/webAO/master.js @@ -11,9 +11,9 @@ const options = { fonts: { extendedJsFonts: true, userDefinedFonts: ["Ace Attorn let lowMemory = false; -const server_description = []; -server_description[-1] = "This is your computer on port 50001"; -const online_counter = []; +let servers = []; +servers[-2] = { name: "Singleplayer", description: "Build cases, try out new things", ip: "127.0.0.1", port: 50001, assets: "", online: "" }; +servers[-1] = { name: "Localhost", description: "This is your computer on port 50001", ip: "127.0.0.1", port: 50001, assets: "", online: "Online: ?/?" }; if (window.requestIdleCallback) { requestIdleCallback(function () { @@ -64,9 +64,11 @@ export function check_https() { } export function setServ(ID) { - console.log(server_description[ID]); - if (server_description[ID] !== undefined) { - document.getElementById("serverdescription_content").innerHTML = "" + online_counter[ID] + "
" + server_description[ID]; + if (!lowMemory) + checkOnline(ID, servers[ID].ip + ":" + servers[ID].port); + + if (servers[ID].description !== undefined) { + document.getElementById("serverdescription_content").innerHTML = "" + servers[ID].online + "
" + servers[ID].description; } else { document.getElementById("serverdescription_content").innerHTML = ""; @@ -106,12 +108,12 @@ function checkOnline(serverID, coIP) { const coheader = comsg.split("#", 2)[0]; const coarguments = comsg.split("#").slice(1); if (coheader === "PN") { - online_counter[serverID] = `Online: ${coarguments[0]}/${coarguments[1]}`; + servers[serverID].online = `Online: ${coarguments[0]}/${coarguments[1]}`; oserv.close(); } else if (coheader === "BD") { - online_counter[serverID] = "Banned"; - server_description[serverID] = coarguments[0]; + servers[serverID].online = "Banned"; + servers[serverID].description = coarguments[0]; oserv.close(); } } @@ -137,21 +139,21 @@ function onMessage(e) { console.debug(msg); if (header === "ALL") { - const servers = msg.split("#").slice(1); - for (let i = 0; i < servers.length - 1; i++) { - const serverEntry = servers[i]; + const allservers = msg.split("#").slice(1); + for (let i = 0; i < allservers.length - 1; i++) { + const serverEntry = allservers[i]; const args = serverEntry.split("&"); + + let thisserver = { name: args[0], description: args[1], ip: args[2], port: args[3], assets: args[4], online: "Online: ?/?" }; + servers[i] = thisserver; + const ipport = args[2] + ":" + args[3]; const asset = args[4] ? `&asset=${args[4]}` : ""; - const liclass = lowMemory ? "" : "unavailable"; // don't hide the entries if we're not checking them document.getElementById("masterlist").innerHTML += - `
  • ${args[0]}

    ` + `
  • ${servers[i].name}

    ` + `Watch` - + `Join
  • `; - server_description[i] = args[1]; - if (!lowMemory) - setTimeout(() => checkOnline(i, ipport), 0); + + `Join`; } masterserver.close(); } -- cgit From 63c636aac58cdb494c170ac847be8ecf4dd87a4d Mon Sep 17 00:00:00 2001 From: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com> Date: Mon, 16 Nov 2020 21:14:42 +0100 Subject: only check real entries once and hide nonworking ones --- webAO/master.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'webAO') diff --git a/webAO/master.js b/webAO/master.js index 4a3321f..b961701 100644 --- a/webAO/master.js +++ b/webAO/master.js @@ -64,7 +64,7 @@ export function check_https() { } export function setServ(ID) { - if (!lowMemory) + if (!lowMemory && document.getElementById(`server${ID}`).className === "") checkOnline(ID, servers[ID].ip + ":" + servers[ID].port); if (servers[ID].description !== undefined) { @@ -94,7 +94,15 @@ function onError(evt) { } function checkOnline(serverID, coIP) { - let oserv = new WebSocket("ws://" + coIP); + let oserv; + if (serverID !== -2) { + try { + oserv = new WebSocket("ws://" + coIP); + } catch (SecurityError) { + document.getElementById(`server${serverID}`).className = "unavailable"; + } + + } // define what the callbacks do function onCOOpen(_e) { @@ -129,6 +137,7 @@ function checkOnline(serverID, coIP) { oserv.onerror = function (_evt) { console.warn(coIP + " threw an error."); + document.getElementById(`server${serverID}`).className = "unavailable"; }; } -- cgit From 9f172285d9ea59242f35b20f6ead7739d86c0236 Mon Sep 17 00:00:00 2001 From: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com> Date: Mon, 16 Nov 2020 21:19:19 +0100 Subject: update the playercount immediatly if it's selected --- webAO/master.js | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'webAO') diff --git a/webAO/master.js b/webAO/master.js index b961701..8cb4311 100644 --- a/webAO/master.js +++ b/webAO/master.js @@ -11,6 +11,8 @@ const options = { fonts: { extendedJsFonts: true, userDefinedFonts: ["Ace Attorn let lowMemory = false; +let selectedServer = -1; + let servers = []; servers[-2] = { name: "Singleplayer", description: "Build cases, try out new things", ip: "127.0.0.1", port: 50001, assets: "", online: "" }; servers[-1] = { name: "Localhost", description: "This is your computer on port 50001", ip: "127.0.0.1", port: 50001, assets: "", online: "Online: ?/?" }; @@ -64,6 +66,8 @@ export function check_https() { } export function setServ(ID) { + selectedServer = ID; + if (!lowMemory && document.getElementById(`server${ID}`).className === "") checkOnline(ID, servers[ID].ip + ":" + servers[ID].port); @@ -124,6 +128,8 @@ function checkOnline(serverID, coIP) { servers[serverID].description = coarguments[0]; oserv.close(); } + if (serverID === selectedServer) + document.getElementById("serverdescription_content").innerHTML = "" + servers[serverID].online + "
    " + servers[serverID].description; } // assign the callbacks -- cgit From 4858b67ea68cce8f485a0fd12e00e176b4ca33c7 Mon Sep 17 00:00:00 2001 From: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com> Date: Tue, 17 Nov 2020 22:53:44 +0100 Subject: escape args that can make it into the html --- webAO/master.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'webAO') diff --git a/webAO/master.js b/webAO/master.js index 8cb4311..1501398 100644 --- a/webAO/master.js +++ b/webAO/master.js @@ -3,6 +3,7 @@ import { version } from '../package.json'; import Fingerprint2 from 'fingerprintjs2'; import { unescapeChat } from './encoding.js'; +import { safe_tags } from './encoding.js'; let masterserver; @@ -120,12 +121,12 @@ function checkOnline(serverID, coIP) { const coheader = comsg.split("#", 2)[0]; const coarguments = comsg.split("#").slice(1); if (coheader === "PN") { - servers[serverID].online = `Online: ${coarguments[0]}/${coarguments[1]}`; + servers[serverID].online = `Online: ${Number(coarguments[0])}/${Number(coarguments[1])}`; oserv.close(); } else if (coheader === "BD") { servers[serverID].online = "Banned"; - servers[serverID].description = coarguments[0]; + servers[serverID].description = safe_tags(coarguments[0]); oserv.close(); } if (serverID === selectedServer) @@ -159,7 +160,7 @@ function onMessage(e) { const serverEntry = allservers[i]; const args = serverEntry.split("&"); - let thisserver = { name: args[0], description: args[1], ip: args[2], port: args[3], assets: args[4], online: "Online: ?/?" }; + let thisserver = { name: safe_tags(args[0]), description: safe_tags(args[1]), ip: args[2], port: Number(args[3]), assets: args[4], online: "Online: ?/?" }; servers[i] = thisserver; const ipport = args[2] + ":" + args[3]; -- cgit From 03e1bd2b7b87cea01e2aab9ea54dfdbeff5874b9 Mon Sep 17 00:00:00 2001 From: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com> Date: Tue, 17 Nov 2020 23:28:38 +0100 Subject: fix escaping --- webAO/encoding.js | 4 ++-- webAO/master.js | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'webAO') diff --git a/webAO/encoding.js b/webAO/encoding.js index 71ebe53..04a44e7 100644 --- a/webAO/encoding.js +++ b/webAO/encoding.js @@ -31,8 +31,8 @@ export function unescapeChat(estring) { export function safe_tags(unsafe) { if (unsafe) { return unsafe - .replace(/>/g, "&rt;") - .replace(//g, '>') + .replace(/
    " + servers[ID].description; + document.getElementById("serverdescription_content").innerHTML = "" + servers[ID].online + "
    " + safe_tags(servers[ID].description); } else { document.getElementById("serverdescription_content").innerHTML = ""; @@ -126,11 +126,11 @@ function checkOnline(serverID, coIP) { } else if (coheader === "BD") { servers[serverID].online = "Banned"; - servers[serverID].description = safe_tags(coarguments[0]); + servers[serverID].description = coarguments[0]; oserv.close(); } if (serverID === selectedServer) - document.getElementById("serverdescription_content").innerHTML = "" + servers[serverID].online + "
    " + servers[serverID].description; + document.getElementById("serverdescription_content").innerHTML = "" + servers[serverID].online + "
    " + safe_tags(servers[serverID].description); } // assign the callbacks @@ -160,14 +160,14 @@ function onMessage(e) { const serverEntry = allservers[i]; const args = serverEntry.split("&"); - let thisserver = { name: safe_tags(args[0]), description: safe_tags(args[1]), ip: args[2], port: Number(args[3]), assets: args[4], online: "Online: ?/?" }; + let thisserver = { name: args[0], description: args[1], ip: args[2], port: Number(args[3]), assets: args[4], online: "Online: ?/?" }; servers[i] = thisserver; const ipport = args[2] + ":" + args[3]; const asset = args[4] ? `&asset=${args[4]}` : ""; document.getElementById("masterlist").innerHTML += - `
  • ${servers[i].name}

    ` + `
  • ${safe_tags(servers[i].name)}

    ` + `Watch` + `Join
  • `; } -- cgit From 29905ce6f2271b0b790301c164b35809550410fc Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 18 Nov 2020 00:04:49 +0100 Subject: officially return from the exception handler Co-authored-by: oldmud0 --- webAO/master.js | 1 + 1 file changed, 1 insertion(+) (limited to 'webAO') diff --git a/webAO/master.js b/webAO/master.js index aec279c..947889b 100644 --- a/webAO/master.js +++ b/webAO/master.js @@ -105,6 +105,7 @@ function checkOnline(serverID, coIP) { oserv = new WebSocket("ws://" + coIP); } catch (SecurityError) { document.getElementById(`server${serverID}`).className = "unavailable"; + return; } } -- cgit From 2f6a09f901ec981744960665110f25dc990697b5 Mon Sep 17 00:00:00 2001 From: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com> Date: Wed, 18 Nov 2020 00:08:50 +0100 Subject: returns are free --- webAO/index.html | 6 +++--- webAO/master.js | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'webAO') diff --git a/webAO/index.html b/webAO/index.html index dda9e0a..d3fc05f 100644 --- a/webAO/index.html +++ b/webAO/index.html @@ -19,11 +19,11 @@ + content="default-src 'self' 'unsafe-inline' 'unsafe-eval' *.aceattorneyonline.com data:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' ws:;"> + content="default-src 'self' 'unsafe-inline' 'unsafe-eval' *.aceattorneyonline.com data:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' ws:;"> + content="default-src 'self' 'unsafe-inline' 'unsafe-eval' *.aceattorneyonline.com data:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' ws:;"> diff --git a/webAO/master.js b/webAO/master.js index 947889b..c1543f3 100644 --- a/webAO/master.js +++ b/webAO/master.js @@ -96,6 +96,7 @@ function onOpen(_e) { function onError(evt) { document.getElementById("ms_error").style.display = "block"; document.getElementById("ms_error_code").innerText = `A network error occurred: ${evt.reason} (${evt.code})`; + return; } function checkOnline(serverID, coIP) { @@ -124,11 +125,13 @@ function checkOnline(serverID, coIP) { if (coheader === "PN") { servers[serverID].online = `Online: ${Number(coarguments[0])}/${Number(coarguments[1])}`; oserv.close(); + return; } else if (coheader === "BD") { servers[serverID].online = "Banned"; servers[serverID].description = coarguments[0]; oserv.close(); + return; } if (serverID === selectedServer) document.getElementById("serverdescription_content").innerHTML = "" + servers[serverID].online + "
    " + safe_tags(servers[serverID].description); @@ -146,6 +149,7 @@ function checkOnline(serverID, coIP) { oserv.onerror = function (_evt) { console.warn(coIP + " threw an error."); document.getElementById(`server${serverID}`).className = "unavailable"; + return; }; } @@ -173,6 +177,7 @@ function onMessage(e) { + `Join`; } masterserver.close(); + return; } else if (header === "servercheok") { const args = msg.split("#").slice(1); -- cgit