replace some code & pause client socket before bouncer connect to relays

Signed-off-by: Yonle <yonle@lecturify.net>
This commit is contained in:
Yonle
2023-11-15 13:18:43 +07:00
parent 7d6e2018e3
commit e651221256
2 changed files with 10 additions and 8 deletions

View File

@@ -102,10 +102,9 @@ function newConn(addr) {
} }
}); });
relay.addr = addr;
relay.on('open', _ => { relay.on('open', _ => {
socks.add(relay); // Add this socket session to [socks] socks.add(relay); // Add this socket session to [socks]
if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.log(process.pid, "---", `[${socks.size}/${relays.length}]`, relay.addr, "is connected"); if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.log(process.pid, "---", `[${socks.size}/${relays.length}]`, relay.url, "is connected");
for (i of sess.prepare("SELECT data FROM recentEvents;").iterate()) { for (i of sess.prepare("SELECT data FROM recentEvents;").iterate()) {
if (relay.readyState >= 2) break; if (relay.readyState >= 2) break;
@@ -189,11 +188,11 @@ function newConn(addr) {
}); });
relay.on('error', _ => { relay.on('error', _ => {
if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.error(process.pid, "-!-", relay.addr, _.toString()); if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.error(process.pid, "-!-", relay.url, _.toString());
}); });
relay.on('close', _ => { relay.on('close', _ => {
socks.delete(relay) // Remove this socket session from [socks] list socks.delete(relay) // Remove this socket session from [socks] list
if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.log(process.pid, "-!-", `[${socks.size}/${relays.length}]`, "Disconnected from", relay.addr); if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.log(process.pid, "-!-", `[${socks.size}/${relays.length}]`, "Disconnected from", relay.url);
setTimeout(_ => newConn(addr), 5000); // As a bouncer server, We need to reconnect. setTimeout(_ => newConn(addr), 5000); // As a bouncer server, We need to reconnect.
}); });

View File

@@ -76,6 +76,9 @@ module.exports = (ws, req) => {
terminate_sess(ws.id); terminate_sess(ws.id);
}); });
// Chill down first buddy....
ws.pause();
csess.set(ws.id, ws); csess.set(ws.id, ws);
relays.forEach(_ => newConn(_, ws.id)); relays.forEach(_ => newConn(_, ws.id));
} }
@@ -123,10 +126,10 @@ function newConn(addr, id) {
}); });
relay.id = id; relay.id = id;
relay.addr = addr;
relay.on('open', _ => { relay.on('open', _ => {
socks.add(relay); // Add this socket session to [socks] socks.add(relay); // Add this socket session to [socks]
if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.log(process.pid, "---", `[${id}] [${socks.size}/${relays.length*csess.size}]`, relay.addr, "is connected"); if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.log(process.pid, "---", `[${id}] [${socks.size}/${relays.length*csess.size}]`, relay.url, "is connected");
if (csess.get(id)?.isPaused) csess.get(id).resume();
for (i of sess.prepare("SELECT data FROM recentEvents WHERE cID = ?;").iterate(id)) { for (i of sess.prepare("SELECT data FROM recentEvents WHERE cID = ?;").iterate(id)) {
if (relay.readyState >= 2) break; if (relay.readyState >= 2) break;
@@ -192,11 +195,11 @@ function newConn(addr, id) {
}); });
relay.on('error', _ => { relay.on('error', _ => {
if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.error(process.pid, "-!-", `[${id}]`, relay.addr, _.toString()) if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.error(process.pid, "-!-", `[${id}]`, relay.url, _.toString())
}); });
relay.on('close', _ => { relay.on('close', _ => {
socks.delete(relay) // Remove this socket session from [socks] list socks.delete(relay) // Remove this socket session from [socks] list
if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.log(process.pid, "-!-", `[${id}] [${socks.size}/${relays.length*csess.size}]`, "Disconnected from", relay.addr); if (process.env.LOG_ABOUT_RELAYS || log_about_relays) console.log(process.pid, "-!-", `[${id}] [${socks.size}/${relays.length*csess.size}]`, "Disconnected from", relay.url);
if (!csess.has(id)) return; if (!csess.has(id)) return;
setTimeout(_ => newConn(addr, id), 5000); // As a bouncer server, We need to reconnect. setTimeout(_ => newConn(addr, id), 5000); // As a bouncer server, We need to reconnect.