fix fuck tonne bug

This commit is contained in:
Soph :3 2024-07-19 05:14:39 +03:00
parent 698fafb6ba
commit ea011422f2
Signed by: sophie
GPG key ID: EDA5D222A0C270F2
3 changed files with 31 additions and 35 deletions

View file

@ -17,22 +17,6 @@ export class Client {
.join("");
this.uniqWsID = crypto.randomUUID();
}
sendWelcome() {
const profile = Server.profiles.get(this.id)
if(!profile) return;
this.send(new proto.ServerMessage({
event: proto.ServerMessage_EventType.WELCOME,
welcome: {
id: this.id,
name: profile.name,
color: profile.color,
room: this.room!.name,
owner: this.room!.owner,
chat: this.room!.chats,
role: profile.role,
},
}));
}
send(message: proto.ServerMessage) {
this.ws.send(message.toBinary());
}

View file

@ -26,10 +26,15 @@ export class Room {
}
this.systemMessage("This is a development server. Instability may occur. Written by @fucksophie")
}
private addToChatArray(chat: proto.ServerMessage_Chat) {
this.chats.push(chat);
if (this.chats.length > 150) this.chats.shift();
}
systemMessage(message: string) {
const system = Server.systemMessage(message);
this.chats.push(system.chat!);
this.addToChatArray(system.chat!);
this.particpiants.forEach((z) => {
z.clients.forEach(g => {
g.send(system);
@ -54,7 +59,7 @@ export class Room {
z.send(chatPacket);
});
this.chats.push(chatPacket.chat!);
this.addToChatArray(chatPacket.chat!);
}
ban(ws: ServerWebSocket<Client>, minutes: number) {
@ -86,8 +91,18 @@ export class Room {
particpiant.addClient(ws.data);
}
ws.data.sendWelcome();
ws.data.send(new proto.ServerMessage({
event: proto.ServerMessage_EventType.WELCOME,
welcome: {
id: ws.data.id,
name: particpiant.profile.name,
color: particpiant.profile.color,
room: ws.data.room!.name,
owner: ws.data.room!.owner,
chat: ws.data.room!.chats,
role: particpiant.profile.role,
},
}));
if (particpiant.clients.length <= 1) {
//#region Annouce to everyone that the user has joined
const joinMessage = new proto.ServerMessage({

View file

@ -42,10 +42,12 @@ export class Server {
// #region WS upgrading
fetch(req, server) {
let data;
if(process.env.TRUST_PROXY) {
data = req.headers.get("X-Forwarded-For")?.split(",")[0]?.trim()
if(!data) {
console.log('Trust proxy is enabled, but XFF is empty. Spoofing / server issue?')
if (process.env.TRUST_PROXY) {
data = req.headers.get("X-Forwarded-For")?.split(",")[0]?.trim();
if (!data) {
console.log(
"Trust proxy is enabled, but XFF is empty. Spoofing / server issue?"
);
}
}
if (server.upgrade(req, { data })) {
@ -125,9 +127,7 @@ export class Server {
profile.commit();
profile.emit("update");
Server.wses.forEach((z) => {
if (z.data.id == profile.id) {
z?.data?.sendWelcome();
}
if (z.data.id == profile.id) z.close(6969);
});
return;
}
@ -162,9 +162,7 @@ export class Server {
profile.commit();
profile.emit("update");
Server.wses.forEach((z) => {
if (z.data.id == profile.id) {
z?.data?.sendWelcome();
}
if (z.data.id == profile.id) z.close(6969);
});
ws.data.send(
Server.systemMessage(
@ -182,9 +180,7 @@ export class Server {
profile.commit();
profile.emit("update");
Server.wses.forEach((z) => {
if (z.data.id == profile.id) {
z?.data?.sendWelcome();
}
if (z.data.id == profile.id) z.close(6969);
});
ws.data.send(
@ -202,6 +198,7 @@ export class Server {
if (!ws.data.room) return;
const profile = Server.profiles.get(ws.data.id);
if (!profile) return;
if(!ws.data.room.owner) return;
if (profile.role !== proto.Role.DEVELOPER) {
if (ws.data.room.owner != ws.data.id) return;
}
@ -305,7 +302,7 @@ export class Server {
},
open(ws: ServerWebSocket<Client>) {
let ip: string = ws.remoteAddress;
if(process.env.TRUST_PROXY) ip = ws.data as unknown as string;
if (process.env.TRUST_PROXY) ip = ws.data as unknown as string;
const client = new Client(ws, ip);
if (getSiteBan(client.id)) {