diff --git a/config.toml b/config.toml index 6bcf6c7..7e4c02f 100644 --- a/config.toml +++ b/config.toml @@ -100,6 +100,11 @@ reject_future_seconds = 1800 # backpressure to senders if writes are slow. #event_persist_buffer = 4096 +# Event kind blacklist. Events with these kinds will be discarded. +#event_kind_blacklist = [ +# 70202, +#] + [authorization] # Pubkey addresses in this array are whitelisted for event publishing. # Only valid events by these authors will be accepted, if the variable diff --git a/src/config.rs b/src/config.rs index 99e4377..3d22984 100644 --- a/src/config.rs +++ b/src/config.rs @@ -60,6 +60,7 @@ pub struct Limits { pub max_ws_frame_bytes: Option, pub broadcast_buffer: usize, // events to buffer for subscribers (prevents slow readers from consuming memory) pub event_persist_buffer: usize, // events to buffer for database commits (block senders if database writes are too slow) + pub event_kind_blacklist: Option> } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -225,6 +226,7 @@ impl Default for Settings { max_ws_frame_bytes: Some(2 << 17), // 128K broadcast_buffer: 16384, event_persist_buffer: 4096, + event_kind_blacklist: None, }, authorization: Authorization { pubkey_whitelist: None, // Allow any address to publish diff --git a/src/db.rs b/src/db.rs index 5106880..2f809cf 100644 --- a/src/db.rs +++ b/src/db.rs @@ -232,6 +232,24 @@ pub async fn db_writer( } } + // Check that event kind isn't blacklisted + let kinds_blacklist = &settings.limits.event_kind_blacklist.clone(); + if let Some(event_kind_blacklist) = kinds_blacklist { + if event_kind_blacklist.contains(&event.kind) { + info!( + "Rejecting event {}, blacklisted kind", + &event.get_event_id_prefix() + ); + notice_tx + .try_send(Notice::blocked( + event.id, + "event kind is blocked by relay" + )) + .ok(); + continue; + } + } + // send any metadata events to the NIP-05 verifier if nip05_active && event.is_kind_metadata() { // we are sending this prior to even deciding if we @@ -901,4 +919,4 @@ pub async fn db_query( let ok: Result<()> = Ok(()); ok }); -} +} \ No newline at end of file