From c0033d4ba5ada1c2abfcce75cc84aa604da7ba0d Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sun, 18 Feb 2024 09:17:03 +1300 Subject: [PATCH] Accept all events from our users --- src/nostr.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/nostr.rs b/src/nostr.rs index e09ab14..e77beb5 100644 --- a/src/nostr.rs +++ b/src/nostr.rs @@ -3,7 +3,7 @@ use crate::globals::GLOBALS; use crate::reply::{NostrReply, NostrReplyPrefix}; use crate::types::parse::json_escape::json_unescape; use crate::types::parse::json_parse::*; -use crate::types::{Event, Filter, Kind, OwnedFilter, Time}; +use crate::types::{Event, Filter, Kind, OwnedFilter, Pubkey, Time}; use crate::WebSocketService; use futures::SinkExt; use hyper_tungstenite::tungstenite::Message; @@ -139,7 +139,7 @@ impl WebSocketService { } // Screen the event to see if we are willing to accept it - if !screen_event(&event).await? { + if !screen_event(&event, self.user).await? { let prefix = if self.user.is_some() { NostrReplyPrefix::Restricted } else { @@ -276,7 +276,7 @@ impl WebSocketService { } } -async fn screen_event(event: &Event<'_>) -> Result { +async fn screen_event(event: &Event<'_>, user: Option) -> Result { // Accept relay lists from anybody if event.kind() == Kind(10002) { return Ok(true); @@ -306,6 +306,14 @@ async fn screen_event(event: &Event<'_>) -> Result { } } + // If the user is authenticated as one of our users, accept anything + // that they give us + if let Some(pk) = user { + if GLOBALS.config.read().await.user_keys.contains(&pk) { + return Ok(true); + } + } + // Reject everything else Ok(false) }