mirror of
https://github.com/Yonle/bostr.git
synced 2025-09-20 06:30:37 +02:00
bouncer: only start connect after first relay command.
Signed-off-by: Yonle <yonle@lecturify.net>
This commit is contained in:
15
bouncer.js
15
bouncer.js
@@ -20,6 +20,7 @@ module.exports = (ws, req, onClose) => {
|
|||||||
let query = querystring.parse(req.url.slice(2));
|
let query = querystring.parse(req.url.slice(2));
|
||||||
let authKey = null;
|
let authKey = null;
|
||||||
let authorized = true;
|
let authorized = true;
|
||||||
|
let sessStarted = false;
|
||||||
let lastEvent = Date.now();
|
let lastEvent = Date.now();
|
||||||
ws.ip = req.headers["x-forwarded-for"]?.split(",")[0] || req.socket.address()?.address;
|
ws.ip = req.headers["x-forwarded-for"]?.split(",")[0] || req.socket.address()?.address;
|
||||||
ws.relays = new Set(); // Set() of connected relays.
|
ws.relays = new Set(); // Set() of connected relays.
|
||||||
@@ -77,6 +78,11 @@ module.exports = (ws, req, onClose) => {
|
|||||||
return ws.send(JSON.stringify(["OK", data[1]?.id, false, "rate-limited: request too fast."]));
|
return ws.send(JSON.stringify(["OK", data[1]?.id, false, "rate-limited: request too fast."]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ws.relays.size && !sessStarted) {
|
||||||
|
newsess(ws);
|
||||||
|
sessStarted = true;
|
||||||
|
}
|
||||||
|
|
||||||
lastEvent = Date.now();
|
lastEvent = Date.now();
|
||||||
|
|
||||||
ws.my_events.add(data[1]);
|
ws.my_events.add(data[1]);
|
||||||
@@ -107,6 +113,12 @@ module.exports = (ws, req, onClose) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ws.relays.size && !sessStarted) {
|
||||||
|
newsess(ws);
|
||||||
|
sessStarted = true;
|
||||||
|
}
|
||||||
|
|
||||||
ws.subs.set(origID, filters);
|
ws.subs.set(origID, filters);
|
||||||
ws.events.set(origID, new Set());
|
ws.events.set(origID, new Set());
|
||||||
ws.pause_subs.delete(origID);
|
ws.pause_subs.delete(origID);
|
||||||
@@ -142,7 +154,6 @@ module.exports = (ws, req, onClose) => {
|
|||||||
ws.pubkey = data[1].pubkey;
|
ws.pubkey = data[1].pubkey;
|
||||||
console.log(process.pid, "---", ws.ip, "successfully authorized as", ws.pubkey, private_keys[ws.pubkey] ? "(admin)" : "(user)");
|
console.log(process.pid, "---", ws.ip, "successfully authorized as", ws.pubkey, private_keys[ws.pubkey] ? "(admin)" : "(user)");
|
||||||
if (authorized) return;
|
if (authorized) return;
|
||||||
newsess(ws);
|
|
||||||
authorized = true;
|
authorized = true;
|
||||||
lastEvent = Date.now();
|
lastEvent = Date.now();
|
||||||
}
|
}
|
||||||
@@ -168,8 +179,6 @@ module.exports = (ws, req, onClose) => {
|
|||||||
sock.terminate();
|
sock.terminate();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (authorized) newsess(ws);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WS - New session for client $id
|
// WS - New session for client $id
|
||||||
|
Reference in New Issue
Block a user