blob: 8e69d55f57c486ec8e7222062fcd69bc19b82878 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
import Fingerprint from "./fingerprint.js";
const MASTERSERVER_IP = "master.aceattorneyonline.com:27014";
const fp = new Fingerprint({
canvas: true,
ie_activex: true,
screen_resolution: true
});
/** An emulated, semi-unique HDID that is generally safe for HDID bans. */
const hdid = fp.get();
console.log(`Your emulated HDID is ${hdid}`);
let oldLoading = true;
export function onLoad(){
if (!(/webOS|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|PlayStation|Opera Mini/i.test(navigator.userAgent))) {
oldLoading = false;
}
}
window.onLoad = onLoad;
const masterserver = new WebSocket("ws://" + MASTERSERVER_IP);
masterserver.onopen = (evt) => onOpen(evt);
masterserver.onmessage = (evt) => onMessage(evt);
const server_description = [];
server_description[99] = "This is your computer on port 27016";
const onlinec = [];
export function setServ(ID) {
console.log(server_description[ID]);
if (server_description[ID] !== undefined) {
document.getElementById("serverdescC").innerHTML = "<b>Online: " + onlinec[ID] + "</b><br>" + server_description[ID];
}
else {
document.getElementById("serverdescC").innerHTML = "";
}
}
window.setServ = setServ;
function onOpen(_e) {
masterserver.send("ID#webAO#webAO#%");
if (oldLoading === true) {
masterserver.send("askforservers#%");
}
else {
masterserver.send("ALL#%");
}
masterserver.send("VC#%");
}
function checkOnline(serverID, coIP) {
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") {
onlinec[serverID] = `${coarguments[0]}/${coarguments[1]}`;
oserv.close();
}
else if (coheader === "BD") {
onlinec[serverID] = `Banned`;
server_description[serverID] = coarguments[0];
oserv.close();
}
}
var oserv = new WebSocket("ws://" + coIP);
oserv.onopen = function (evt) {
onCOOpen(evt);
};
oserv.onmessage = function (evt) {
onCOMessage(evt);
};
}
function onMessage(e) {
const msg = e.data;
console.log(msg);
const header = msg.split("#", 2)[0];
if (header === "ALL") {
const servers = msg.split("#").slice(1);
for (let i = 0; i < servers.length; i++) {
const serverEntry = servers[i];
const args = serverEntry.split("&");
const asset = args[4] ? `&asset=${args[4]}` : "";
document.getElementById("masterlist").innerHTML +=
`<li id="server${i}" class="unavailable" onmouseover="setServ(${i})"><p>${args[0]}</p>`
+ `<a class="button" href="client.html?mode=watch&ip=${args[2]}:${args[3]}${asset}">Watch</a>`
+ `<a class="button" href="client.html?mode=join&ip=${args[2]}:${args[3]}${asset}">Join</a></li>`;
server_description[i] = args[1];
setTimeout(checkOnline(i, args[2] + ":" + args[3]), 100);
}
}
else if (header === "SN") {
const args = msg.split("#");
const i = args[1];
console.log(args);
document.getElementById("masterlist").innerHTML +=
`<li id="server${i}" class="unavailable" onmouseover="setServ(${i})"><p>${args[5]}</p>`
+ `<a class="button" href="client.html?mode=watch&ip=${args[2]}:${args[4]}">Watch</a>`
+ `<a class="button" href="client.html?mode=join&ip=${args[2]}:${args[4]}">Join</a></li>`;
server_description[i] = args[6];
masterserver.send("SR#" + i + "#%");
setTimeout(checkOnline(i, args[2] + ":" + args[4]), i*1000);
}
else if (header === "servercheok") {
const args = msg.split("#").slice(1);
console.log(args);
document.getElementById("clientinfo").innerHTML = `Client version: ${args[0]}`;
}
else if (header === "SV") {
const args = msg.split("#").slice(1);
console.log(args);
document.getElementById("serverinfo").innerHTML = `Master server version: ${args[0]}`;
}
}
|