mirror of
https://github.com/Yonle/bostr.git
synced 2025-06-17 04:11:27 +02:00
bouncer: use matchFilters function from nostr-tools
Signed-off-by: Yonle <yonle@lecturify.net>
This commit is contained in:
parent
c20430e756
commit
b865fa1b65
24
bouncer.js
24
bouncer.js
@ -1,7 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const { version } = require("./package.json");
|
const { version } = require("./package.json");
|
||||||
const WebSocket = require("ws");
|
const WebSocket = require("ws");
|
||||||
const { verifySignature, validateEvent, nip19 } = require("nostr-tools");
|
const { verifySignature, validateEvent, nip19, matchFilters } = require("nostr-tools");
|
||||||
const auth = require("./auth.js");
|
const auth = require("./auth.js");
|
||||||
const nip42 = require("./nip42.js");
|
const nip42 = require("./nip42.js");
|
||||||
|
|
||||||
@ -167,26 +167,6 @@ function bc(msg, ws) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateFilter(event, filters) {
|
|
||||||
for (const filter of filters) {
|
|
||||||
if (filter === {}) return true;
|
|
||||||
// if filter.since > receivedEvent.created_at, skip
|
|
||||||
// if receivedEvent.created_at > filter.until, skip
|
|
||||||
if (Array.isArray(filter?.ids) && !filter.ids.includes(event.id)) continue;
|
|
||||||
if (Array.isArray(filter?.authors) && !filter.authors.includes(event.pubkey)) continue;
|
|
||||||
if (Array.isArray(filter?.kinds) && !filter.kinds.includes(event.kind)) continue;
|
|
||||||
if (filter?.since > event.created_at) continue;
|
|
||||||
if (event.created_at > filter?.until) continue;
|
|
||||||
|
|
||||||
const NotInSearchQuery = "search" in filter && !event?.content?.toLowerCase().includes(filter.search.toLowerCase());
|
|
||||||
if (NotInSearchQuery) continue;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// WS - Sessions
|
// WS - Sessions
|
||||||
function newConn(addr, client, reconn_t = 0) {
|
function newConn(addr, client, reconn_t = 0) {
|
||||||
if (client.readyState !== 1) return;
|
if (client.readyState !== 1) return;
|
||||||
@ -229,7 +209,7 @@ function newConn(addr, client, reconn_t = 0) {
|
|||||||
if (client.pause_subs.has(data[1])) return;
|
if (client.pause_subs.has(data[1])) return;
|
||||||
|
|
||||||
const filters = client.subs.get(data[1]);
|
const filters = client.subs.get(data[1]);
|
||||||
if (!validateFilter(data[2], filters)) return;
|
if (!matchFilters(filters, data[2])) return;
|
||||||
if (client.events.get(data[1]).has(data[2]?.id)) return; // No need to transmit once it has been transmitted before.
|
if (client.events.get(data[1]).has(data[2]?.id)) return; // No need to transmit once it has been transmitted before.
|
||||||
|
|
||||||
if (!client.pause_subs.has(data[1])) {
|
if (!client.pause_subs.has(data[1])) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user