bouncer: improve the acceptKinds

Signed-off-by: Yonle <yonle@lecturify.net>
This commit is contained in:
Yonle
2024-02-18 12:45:26 +07:00
parent 3cc41c47c2
commit 64749963be

View File

@@ -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;