mirror of
https://github.com/Yonle/bostr.git
synced 2025-09-23 18:03:50 +02:00
bouncer: improve the acceptKinds
Signed-off-by: Yonle <yonle@lecturify.net>
This commit is contained in:
18
bouncer.js
18
bouncer.js
@@ -96,12 +96,16 @@ module.exports = (ws, req, onClose) => {
|
|||||||
let filter = mergeFilters(...filters);
|
let filter = mergeFilters(...filters);
|
||||||
|
|
||||||
for (const fn in filters) {
|
for (const fn in filters) {
|
||||||
if (!Array.isArray(filters[fn].kinds)) continue;
|
if (!Array.isArray(filters[fn].kinds)) {
|
||||||
filters[fn].kinds = filters[fn].kinds?.filter(kind => {
|
filters[fn].kinds = ws.acceptKinds;
|
||||||
if (ws.rejectKinds && ws.rejectKinds.includes(kind)) return false;
|
continue;
|
||||||
if (ws.acceptKinds && !ws.acceptKinds.includes(kind)) return true;
|
} else {
|
||||||
return true;
|
filters[fn].kinds = filters[fn].kinds?.filter(kind => {
|
||||||
});
|
if (ws.rejectKinds && ws.rejectKinds.includes(kind)) return false;
|
||||||
|
if (ws.acceptKinds && !ws.acceptKinds.includes(kind)) return true;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ws.subs.set(origID, filters);
|
ws.subs.set(origID, filters);
|
||||||
ws.events.set(origID, new Set());
|
ws.events.set(origID, new Set());
|
||||||
@@ -225,6 +229,8 @@ function newConn(addr, client, reconn_t = 0) {
|
|||||||
data[1] = client.subalias.get(data[1]);
|
data[1] = client.subalias.get(data[1]);
|
||||||
if (client.pause_subs.has(data[1])) return;
|
if (client.pause_subs.has(data[1])) return;
|
||||||
|
|
||||||
|
if (client.rejectKinds && client.rejectKinds.includes(data[2]?.id)) return;
|
||||||
|
|
||||||
const filters = client.subs.get(data[1]);
|
const filters = client.subs.get(data[1]);
|
||||||
if (!matchFilters(filters, data[2])) return;
|
if (!matchFilters(filters, data[2])) return;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user