Compare commits

..

No commits in common. "db8b29dfc47d682a191e0bacc977c490bdceeea7" and "1e2ca3f8c83136edda7ec90e1ed90b39800f8e99" have entirely different histories.

10 changed files with 104 additions and 171 deletions

151
Cargo.lock generated
View File

@ -90,9 +90,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "aws-lc-rs"
version = "1.12.3"
version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c6a895b664295a4ba0c2c0203c7075ea585dd75cd5c37a8efac829e13e460ef"
checksum = "1ea835662a0af02443aa1396d39be523bbf8f11ee6fad20329607c480bea48c3"
dependencies = [
"aws-lc-sys",
"paste",
@ -101,9 +101,9 @@ dependencies = [
[[package]]
name = "aws-lc-sys"
version = "0.26.0"
version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f9dd2e03ee80ca2822dd6ea431163d2ef259f2066a4d6ccaca6d9dcb386aa43"
checksum = "71b2ddd3ada61a305e1d8bb6c005d1eaa7d14d903681edfc400406d523a9b491"
dependencies = [
"bindgen",
"cc",
@ -230,15 +230,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
version = "1.10.0"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9"
checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
[[package]]
name = "cc"
version = "1.2.14"
version = "1.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9"
checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229"
dependencies = [
"jobserver",
"libc",
@ -312,9 +312,9 @@ dependencies = [
[[package]]
name = "cmake"
version = "0.1.54"
version = "0.1.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0"
checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e"
dependencies = [
"cc",
]
@ -333,9 +333,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
[[package]]
name = "cpufeatures"
version = "0.2.17"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3"
dependencies = [
"libc",
]
@ -381,15 +381,15 @@ dependencies = [
[[package]]
name = "data-encoding"
version = "2.8.0"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010"
checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f"
[[package]]
name = "derive_more"
version = "0.99.19"
version = "0.99.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f"
checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce"
dependencies = [
"convert_case",
"proc-macro2",
@ -465,9 +465,9 @@ dependencies = [
[[package]]
name = "equivalent"
version = "1.0.2"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
@ -627,18 +627,6 @@ dependencies = [
"wasi 0.11.0+wasi-snapshot-preview1",
]
[[package]]
name = "getrandom"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
dependencies = [
"cfg-if",
"libc",
"wasi 0.13.3+wasi-0.2.2",
"windows-targets",
]
[[package]]
name = "gimli"
version = "0.31.1"
@ -767,9 +755,9 @@ dependencies = [
[[package]]
name = "httparse"
version = "1.10.0"
version = "1.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a"
checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"
[[package]]
name = "httpdate"
@ -785,9 +773,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
name = "hyper"
version = "1.6.0"
version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0"
dependencies = [
"bytes",
"futures-channel",
@ -1132,9 +1120,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
version = "0.8.4"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b"
checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924"
dependencies = [
"adler2",
]
@ -1187,9 +1175,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.20.3"
version = "1.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]]
name = "page_size"
@ -1293,7 +1281,7 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pocket-db"
version = "0.1.0"
source = "git+https://github.com/mikedilger/pocket?branch=master#57513d3a22b89a20313c018a01b5281d98d40c47"
source = "git+https://github.com/mikedilger/pocket?branch=master#e6d55e205cc140cc04728960c2ca4e6e906808ef"
dependencies = [
"heed",
"libc",
@ -1304,7 +1292,7 @@ dependencies = [
[[package]]
name = "pocket-types"
version = "0.1.0"
source = "git+https://github.com/mikedilger/pocket?branch=master#57513d3a22b89a20313c018a01b5281d98d40c47"
source = "git+https://github.com/mikedilger/pocket?branch=master#e6d55e205cc140cc04728960c2ca4e6e906808ef"
dependencies = [
"derive_more",
"secp256k1 0.28.2",
@ -1458,14 +1446,15 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "ring"
version = "0.17.9"
version = "0.17.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24"
checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
dependencies = [
"cc",
"cfg-if",
"getrandom 0.2.15",
"libc",
"spin",
"untrusted",
"windows-sys 0.52.0",
]
@ -1493,9 +1482,9 @@ dependencies = [
[[package]]
name = "rustix"
version = "0.38.44"
version = "0.38.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6"
dependencies = [
"bitflags",
"errno",
@ -1506,9 +1495,9 @@ dependencies = [
[[package]]
name = "rustls"
version = "0.23.23"
version = "0.23.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395"
checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8"
dependencies = [
"aws-lc-rs",
"log",
@ -1530,9 +1519,9 @@ dependencies = [
[[package]]
name = "rustls-pki-types"
version = "1.11.0"
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37"
[[package]]
name = "rustls-webpki"
@ -1548,9 +1537,9 @@ dependencies = [
[[package]]
name = "ryu"
version = "1.0.19"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
[[package]]
name = "scopeguard"
@ -1626,9 +1615,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.138"
version = "1.0.137"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949"
checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b"
dependencies = [
"itoa",
"memchr",
@ -1688,9 +1677,9 @@ dependencies = [
[[package]]
name = "smallvec"
version = "1.14.0"
version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]]
name = "socket2"
@ -1723,6 +1712,12 @@ dependencies = [
"syn",
]
[[package]]
name = "spin"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
[[package]]
name = "stable_deref_trait"
version = "1.2.0"
@ -1737,9 +1732,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "syn"
version = "2.0.98"
version = "2.0.96"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80"
dependencies = [
"proc-macro2",
"quote",
@ -1768,13 +1763,13 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.17.1"
version = "3.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230"
checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704"
dependencies = [
"cfg-if",
"fastrand",
"getrandom 0.3.1",
"getrandom 0.2.15",
"once_cell",
"rustix",
"windows-sys 0.59.0",
@ -1897,9 +1892,9 @@ dependencies = [
[[package]]
name = "toml"
version = "0.8.20"
version = "0.8.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148"
checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
dependencies = [
"serde",
"serde_spanned",
@ -1918,9 +1913,9 @@ dependencies = [
[[package]]
name = "toml_edit"
version = "0.22.24"
version = "0.22.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
dependencies = [
"indexmap",
"serde",
@ -1949,15 +1944,15 @@ dependencies = [
[[package]]
name = "typenum"
version = "1.18.0"
version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
[[package]]
name = "unicode-ident"
version = "1.0.17"
version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
[[package]]
name = "untrusted"
@ -2018,15 +2013,6 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasi"
version = "0.13.3+wasi-0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
dependencies = [
"wit-bindgen-rt",
]
[[package]]
name = "which"
version = "4.4.2"
@ -2145,22 +2131,13 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
version = "0.7.3"
version = "0.6.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1"
checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a"
dependencies = [
"memchr",
]
[[package]]
name = "wit-bindgen-rt"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
dependencies = [
"bitflags",
]
[[package]]
name = "write16"
version = "1.0.0"

View File

@ -2,7 +2,7 @@
data_directory = "./sample"
ip_address = "127.0.0.1"
port = 8081
port = 8080
hostname = "localhost"
chorus_is_behind_a_proxy = false
use_tls = false

View File

@ -1,5 +1,4 @@
use chorus::error::{ChorusError, Error};
use pocket_db::ScreenResult;
use pocket_types::{Filter, Id, Pubkey, Tags};
use std::env;
@ -51,8 +50,7 @@ fn main() -> Result<(), Error> {
let mut filter_buffer: [u8; 128] = [0; 128];
let filter =
Filter::from_parts(&[], &[pk], &[], tags, None, None, None, &mut filter_buffer)?;
let (events, _redacted) =
store.find_events(filter, true, 0, 0, |_| ScreenResult::Match)?;
let events = store.find_events(filter, true, 0, 0, |_| true)?;
for event in events.iter() {
store.remove_event(event.id())?;
}

View File

@ -1,5 +1,4 @@
use chorus::error::Error;
use pocket_db::ScreenResult;
use pocket_types::{Event, Filter};
use std::env;
@ -24,9 +23,9 @@ fn main() -> Result<(), Error> {
let mut buffer: [u8; 128] = [0; 128];
let (_incount, _outcount, filter) = Filter::from_json(b"{}", &mut buffer)?;
let screen = |_: &Event| -> ScreenResult { ScreenResult::Match };
let screen = |_: &Event| -> bool { true };
let (mut events, _redacted) = store.find_events(
let mut events = store.find_events(
filter,
config.allow_scraping,
config.allow_scrape_if_limited_to,

View File

@ -1,5 +1,4 @@
use chorus::error::Error;
use pocket_db::ScreenResult;
use pocket_types::{Event, Filter, Kind};
use std::env;
use std::io::Write;
@ -34,9 +33,9 @@ fn main() -> Result<(), Error> {
let mut buffer: [u8; 128] = [0; 128];
let (_incount, _outcount, filter) = Filter::from_json(b"{}", &mut buffer)?;
let screen = |_: &Event| -> ScreenResult { ScreenResult::Match };
let screen = |_: &Event| -> bool { true };
let (mut events, _redacted) = store.find_events(
let mut events = store.find_events(
filter,
config.allow_scraping,
config.allow_scrape_if_limited_to,

View File

@ -40,7 +40,6 @@ lazy_static! {
let (shutting_down, _) = tokio::sync::watch::channel(false);
let mut http1builder = http1::Builder::new();
http1builder.ignore_invalid_headers(true);
http1builder.keep_alive(true);
http1builder.timer(TokioTimer::new());
http1builder.header_read_timeout(Duration::from_secs(5));

View File

@ -27,7 +27,7 @@ use hyper_tungstenite::tungstenite;
use hyper_tungstenite::{HyperWebsocket, WebSocketStream};
use hyper_util::rt::TokioIo;
use neg_storage::NegentropyStorageVector;
use pocket_db::{ScreenResult, Store};
use pocket_db::Store;
use pocket_types::{Id, OwnedFilter, Pubkey};
use speedy::{Readable, Writable};
use std::borrow::Cow;
@ -482,21 +482,15 @@ impl WebSocketService {
'subs: for (subid, filters) in self.subscriptions.iter() {
for filter in filters.iter() {
if filter.event_matches(event)? {
let screen_result =
nostr::screen_outgoing_event(event, &event_flags, authorized_user);
if screen_result == ScreenResult::Redacted {
// TBD: Update subscription so the final close can
// let them know there were redactions from
// the post-EOSE data
} else if screen_result == ScreenResult::Match {
let message = NostrReply::Event(subid, event);
// note, this is not currently counted in throttling
self.websocket
.send(Message::text(message.as_json()))
.await?;
continue 'subs;
}
if filter.event_matches(event)?
&& nostr::screen_outgoing_event(event, &event_flags, authorized_user)
{
let message = NostrReply::Event(subid, event);
// note, this is not currently counted in throttling
self.websocket
.send(Message::text(message.as_json()))
.await?;
continue 'subs;
}
}
}

View File

@ -5,7 +5,6 @@ use crate::reply::{NostrReply, NostrReplyPrefix};
use crate::WebSocketService;
use hyper_tungstenite::tungstenite::Message;
use negentropy::{Bytes, Negentropy};
use pocket_db::ScreenResult;
use pocket_types::json::{eat_whitespace, json_unescape, verify_char};
use pocket_types::{read_hex, Event, Filter, Hll8, Kind, OwnedFilter, Pubkey, Time};
use url::Url;
@ -147,10 +146,6 @@ impl WebSocketService {
}
}
let completes = filters.iter().all(|f| f.completes());
let mut redacted: bool = false;
// NOTE on private events (DMs, GiftWraps)
// As seen above, we will send CLOSED auth-required if they ask for DMs and are not
// AUTHed yet.
@ -162,11 +157,11 @@ impl WebSocketService {
let mut events: Vec<&Event> = Vec::new();
for filter in filters.iter() {
let screen = |event: &Event| -> ScreenResult {
let screen = |event: &Event| {
let event_flags = event_flags(event, &user);
screen_outgoing_event(event, &event_flags, authorized_user)
};
let (filter_events, was_redacted) = {
let filter_events = {
let config = &*GLOBALS.config.read();
GLOBALS.store.get().unwrap().find_events(
filter,
@ -177,7 +172,6 @@ impl WebSocketService {
)?
};
events.extend(filter_events);
redacted = redacted || was_redacted;
}
// sort
@ -206,27 +200,13 @@ impl WebSocketService {
self.send(Message::text(reply.as_json())).await?;
}
if completes {
// Closed
let reply = if redacted {
NostrReply::Closed(subid, NostrReplyPrefix::None, "".to_owned())
} else {
NostrReply::Closed(
subid,
NostrReplyPrefix::Redacted,
"Some matching events could not be served to you.".to_owned(),
)
};
self.send(Message::text(reply.as_json())).await?;
} else {
// EOSE
let reply = NostrReply::Eose(subid);
self.send(Message::text(reply.as_json())).await?;
}
// eose
let reply = NostrReply::Eose(subid);
self.send(Message::text(reply.as_json())).await?;
}
}
if !count && !completes {
if !count {
// Store subscription
self.subscriptions.insert(subid.to_owned(), filters);
@ -543,11 +523,11 @@ impl WebSocketService {
// Find all matching events
let mut events: Vec<&Event> = Vec::new();
let screen = |event: &Event| -> ScreenResult {
let screen = |event: &Event| {
let event_flags = event_flags(event, &user);
screen_outgoing_event(event, &event_flags, authorized_user)
};
let (filter_events, _redacted) = {
let filter_events = {
let config = &*GLOBALS.config.read();
GLOBALS.store.get().unwrap().find_events(
&filter,
@ -787,63 +767,59 @@ pub fn screen_outgoing_event(
event: &Event,
event_flags: &EventFlags,
authorized_user: bool,
) -> ScreenResult {
) -> bool {
// Forbid if it is a private event (DM or GiftWrap) and theey are neither the recipient
// nor the author
if event.kind() == Kind::from(4) || event.kind() == Kind::from(1059) {
if event_flags.tags_current_user || event_flags.author_is_current_user {
return ScreenResult::Match;
} else {
return ScreenResult::Redacted;
}
return event_flags.tags_current_user || event_flags.author_is_current_user;
}
// Forbid (and delete) if it has an expired expiration tag
if matches!(event.is_expired(), Ok(true)) {
let _ = GLOBALS.store.get().unwrap().remove_event(event.id());
return ScreenResult::Mismatch;
return false;
}
// Allow if an open relay
if GLOBALS.config.read().open_relay {
return ScreenResult::Match;
return true;
}
// Allow Relay Lists
if GLOBALS.config.read().serve_relay_lists
&& (event.kind() == Kind::from(10002) || event.kind() == Kind::from(10050))
{
return ScreenResult::Match;
return true;
}
// Allow if event kind ephemeral
if event.kind().is_ephemeral() && GLOBALS.config.read().serve_ephemeral {
return ScreenResult::Match;
return true;
}
// Allow if an authorized_user is asking
if authorized_user {
return ScreenResult::Match;
return true;
}
// Everybody can see events from our authorized users
if event_flags.author_is_an_authorized_user {
return ScreenResult::Match;
return true;
}
// Allow if event is explicitly approved
if let Ok(Some(true)) = crate::get_event_approval(GLOBALS.store.get().unwrap(), event.id()) {
return ScreenResult::Match;
return true;
}
// Allow if author is explicitly approved
if let Ok(Some(true)) = crate::get_pubkey_approval(GLOBALS.store.get().unwrap(), event.pubkey())
{
return ScreenResult::Match;
return true;
}
// Do not allow the rest
ScreenResult::Redacted
false
}
pub struct EventFlags {

View File

@ -9,7 +9,6 @@ pub enum NostrReplyPrefix {
Duplicate,
Blocked,
RateLimited,
Redacted,
Restricted,
Invalid,
Error,
@ -24,7 +23,6 @@ impl fmt::Display for NostrReplyPrefix {
NostrReplyPrefix::Duplicate => write!(f, "duplicate: "),
NostrReplyPrefix::Blocked => write!(f, "blocked: "),
NostrReplyPrefix::RateLimited => write!(f, "rate-limited: "),
NostrReplyPrefix::Redacted => write!(f, "redacted: "),
NostrReplyPrefix::Restricted => write!(f, "restricted: "),
NostrReplyPrefix::Invalid => write!(f, "invalid: "),
NostrReplyPrefix::Error => write!(f, "error: "),

View File

@ -5,7 +5,6 @@ use http_body_util::combinators::BoxBody;
use http_body_util::{BodyExt, Full};
use hyper::body::{Bytes, Incoming};
use hyper::{Request, Response, StatusCode};
use pocket_db::ScreenResult;
use pocket_types::{Event, Filter, Id, Kind, Pubkey};
use serde::Serialize;
use serde_json::{json, Map, Value};
@ -341,21 +340,15 @@ pub fn handle_inner(pubkey: Pubkey, command: Value) -> Result<Option<Value>, Err
let (_incount, _outcount, filter) = Filter::from_json(b"{}", &mut buffer)?;
filter
};
let screen = |e: &Event| -> ScreenResult {
if allowed_kinds.contains(&e.kind()) {
ScreenResult::Mismatch
} else if e.kind().is_ephemeral() {
ScreenResult::Mismatch
} else if crate::is_authorized_user(e.pubkey()) {
ScreenResult::Mismatch
} else {
ScreenResult::Match
}
let screen = |e: &Event| -> bool {
!allowed_kinds.contains(&e.kind())
&& !e.kind().is_ephemeral()
&& !crate::is_authorized_user(e.pubkey())
};
let mut need_moderation: Vec<EventNeedingModeration> = Vec::new();
let (mut events, _redacted) = GLOBALS
let mut events = GLOBALS
.store
.get()
.unwrap()