From d338c0ede98703aaf05d380077a76ab66b763f65 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sat, 12 Mar 2022 01:14:36 +0100 Subject: actual ms3 --- public/index.html | 12 ++-- webAO/master.js | 211 +++++++++++++++++++++++------------------------------- 2 files changed, 95 insertions(+), 128 deletions(-) diff --git a/public/index.html b/public/index.html index 30bd23a..8d0b1c4 100644 --- a/public/index.html +++ b/public/index.html @@ -19,11 +19,11 @@ + content="default-src 'self' 'unsafe-inline' 'unsafe-eval' *.aceattorneyonline.com data:; frame-src https://servers.aceattorneyonline.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://servers.aceattorneyonline.com ws:;"> + content="default-src 'self' 'unsafe-inline' 'unsafe-eval' *.aceattorneyonline.com data:; frame-src https://servers.aceattorneyonline.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://servers.aceattorneyonline.com ws:;"> + content="default-src 'self' 'unsafe-inline' 'unsafe-eval' *.aceattorneyonline.com data:; frame-src https://servers.aceattorneyonline.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://servers.aceattorneyonline.com ws:;"> @@ -109,10 +109,12 @@

Masterserver version - ...

Client version - ...

- + + +

Having trouble? Join us on Discord

+

Privacy Policy

-

diff --git a/webAO/master.js b/webAO/master.js index 6b791e6..2d1e69a 100644 --- a/webAO/master.js +++ b/webAO/master.js @@ -10,7 +10,6 @@ const MASTERSERVER_IP = 'master.aceattorneyonline.com:27014'; let masterserver; let hdid; -const options = { fonts: { extendedJsFonts: true, userDefinedFonts: ['Ace Attorney', '8bitoperator', 'DINEngschrift'] }, excludes: { userAgent: true, enumerateDevices: true } }; let selectedServer = -1; @@ -28,145 +27,111 @@ fpPromise .then((result) => { hdid = result.visitorId; - check_https(); + check_https(); - masterserver = new WebSocket(`ws://${MASTERSERVER_IP}`); - masterserver.onopen = (evt) => onOpen(evt); - masterserver.onerror = (evt) => onError(evt); - masterserver.onmessage = (evt) => onMessage(evt); + fetch("https://servers.aceattorneyonline.com/servers") + .then(response => response.json()) + .then(data => processServerlist(data)); - // i don't need the ms to play alone - setTimeout(() => checkOnline(-1, '127.0.0.1:50001'), 0); - }); + fetch("https://servers.aceattorneyonline.com/version") + .then(response => response.text()) + .then(response => processVersion(response)); + + // i don't need the ms to play alone + setTimeout(() => checkOnline(-1, '127.0.0.1:50001'), 0); +}); export function check_https() { - if (document.location.protocol === 'https:') { + if (document.location.protocol === 'https:') { document.getElementById('https_error').style.display = ''; - } + } } export function setServ(ID) { - selectedServer = ID; + selectedServer = ID; - if (document.getElementById(`server${ID}`).className === '') { checkOnline(ID, `${servers[ID].ip}:${servers[ID].port}`); } + if (document.getElementById(`server${ID}`).className === '') { checkOnline(ID, `${servers[ID].ip}:${servers[ID].ws_port}`); } - if (servers[ID].description !== undefined) { - document.getElementById('serverdescription_content').innerHTML = `${servers[ID].online}
${safeTags(servers[ID].description)}`; - } else { - document.getElementById('serverdescription_content').innerHTML = ''; - } + if (servers[ID].description !== undefined) { + document.getElementById('serverdescription_content').innerHTML = `${servers[ID].online}
${safeTags(servers[ID].description)}`; + } else { + document.getElementById('serverdescription_content').innerHTML = ''; + } } window.setServ = setServ; -function onOpen(_e) { - masterserver.send('ID#webAO#webAO#%'); - - masterserver.send('ALL#%'); - masterserver.send('VC#%'); +function checkOnline(serverID, coIP) { + let oserv; + if (serverID !== -2) { + try { + oserv = new WebSocket(`ws://${coIP}`); + } catch (SecurityError) { + document.getElementById(`server${serverID}`).className = 'unavailable'; + return; + } + } + + // define what the callbacks do + function onCOOpen(_e) { + document.getElementById(`server${serverID}`).className = 'available'; + oserv.send(`HI#${hdid}#%`); + oserv.send('ID#webAO#webAO#%'); + } + + function onCOMessage(e) { + const comsg = e.data; + const coheader = comsg.split('#', 2)[0]; + const coarguments = comsg.split('#').slice(1); + 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}
${safeTags(servers[serverID].description)}`; + } + } + + // assign the callbacks + oserv.onopen = function (evt) { + onCOOpen(evt); + }; + + oserv.onmessage = function (evt) { + onCOMessage(evt); + }; + + oserv.onerror = function (_evt) { + document.getElementById(`server${serverID}`).className = 'unavailable'; + }; } -function parseMasterlist(msg) { - const allservers = msg.split('#').slice(1); - for (let i = 0; i < allservers.length - 1; i++) { - const serverEntry = allservers[i]; - const args = serverEntry.split('&'); - - const 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 - += `
  • ${safeTags(servers[i].name)}

    ` - + `Watch` - + `Join
  • `; - } -} +function processServerlist(thelist) { + for (let i = 0; i < thelist.length - 1; i++) { + const serverEntry = thelist[i]; + console.debug(serverEntry) -/** - * Triggered when an network error occurs. - * @param {ErrorEvent} e - */ -function onError(evt) { - document.getElementById('ms_error').style.display = 'block'; - console.error(`A network error occurred: ${evt.reason} (${evt.code})`); - parseMasterlist(localStorage.getItem('masterlist')); -} + servers[i] = serverEntry; -function checkOnline(serverID, coIP) { - let oserv; - if (serverID !== -2) { - try { - oserv = new WebSocket(`ws://${coIP}`); - } catch (SecurityError) { - document.getElementById(`server${serverID}`).className = 'unavailable'; - return; - } - } - - // define what the callbacks do - function onCOOpen(_e) { - document.getElementById(`server${serverID}`).className = 'available'; - oserv.send(`HI#${hdid}#%`); - oserv.send('ID#webAO#webAO#%'); - } - - function onCOMessage(e) { - const comsg = e.data; - const coheader = comsg.split('#', 2)[0]; - const coarguments = comsg.split('#').slice(1); - if (coheader === 'PN') { - servers[serverID].online = `Online: ${Number(coarguments[0])}/${Number(coarguments[1])}`; - oserv.close(); - return; - } - 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}
    ${safeTags(servers[serverID].description)}`; } - } - - // assign the callbacks - oserv.onopen = function (evt) { - onCOOpen(evt); - }; - - oserv.onmessage = function (evt) { - onCOMessage(evt); - }; - - oserv.onerror = function (_evt) { - document.getElementById(`server${serverID}`).className = 'unavailable'; - }; + const ipport = serverEntry.ip + ":" + serverEntry.ws_port; + + if (serverEntry.ws_port) { + document.getElementById("masterlist").innerHTML += + `
  • ${safeTags(serverEntry.name)}

    ` + + `Watch` + + `Join
  • `; + } + } + return; } -function onMessage(e) { - const msg = e.data; - const header = msg.split('#', 2)[0]; - console.debug(msg); - - if (header === 'ALL') { - localStorage.setItem('masterlist', msg); - parseMasterlist(msg); - masterserver.close(); - } else if (header === 'servercheok') { - const args = msg.split('#').slice(1); - document.getElementById('clientinfo').innerHTML = `Client version: ${version} expected: ${args[0]}`; - } else if (header === 'SV') { - const args = msg.split('#').slice(1); - document.getElementById('serverinfo').innerHTML = `Master server version: ${args[0]}`; - } else if (header === 'CT') { - const args = msg.split('#').slice(1); - const msChat = document.getElementById('masterchat'); - msChat.innerHTML += `${unescapeChat(args[0])}: ${unescapeChat(args[1])}\r\n`; - if (msChat.scrollTop > msChat.scrollHeight - 600) { - msChat.scrollTop = msChat.scrollHeight; - } - } +function processVersion(data) { + console.debug(data); + document.getElementById("clientinfo").innerHTML = `Client version: ${version}`; + document.getElementById("serverinfo").innerHTML = `Master server version: ${data}`; } -- cgit