|
1 | 1 | //! Event persistence and querying |
2 | | -use crate::config::Settings; |
| 2 | +use crate::config::{Grpc, Settings}; |
3 | 3 | use crate::error::{Error, Result}; |
4 | 4 | use crate::event::Event; |
| 5 | +#[cfg(feature = "grpc")] |
5 | 6 | use crate::nauthz; |
6 | 7 | use crate::notice::Notice; |
7 | 8 | use crate::payment::PaymentMessage; |
@@ -136,11 +137,15 @@ pub async fn db_writer( |
136 | 137 | } |
137 | 138 | // create a client if GRPC is enabled. |
138 | 139 | // Check with externalized event admitter service, if one is defined. |
139 | | - let mut grpc_client = if let Some(svr) = settings.grpc.event_admission_server { |
140 | | - Some(nauthz::EventAuthzService::connect(&svr).await) |
141 | | - } else { |
142 | | - None |
143 | | - }; |
| 140 | + #[allow(unused_variables, unused_mut)] |
| 141 | + let mut grpc_client: Option<Grpc> = None; |
| 142 | + |
| 143 | + #[cfg(feature = "grpc")] |
| 144 | + { |
| 145 | + if let Some(svr) = settings.grpc.event_admission_server { |
| 146 | + grpc_client = Some(nauthz::EventAuthzService::connect(&svr).await) |
| 147 | + }; |
| 148 | + } |
144 | 149 |
|
145 | 150 | //let gprc_client = settings.grpc.event_admission_server.map(|s| { |
146 | 151 | // event_admitter_connect(&s); |
@@ -345,47 +350,50 @@ pub async fn db_writer( |
345 | 350 | } |
346 | 351 | } |
347 | 352 |
|
348 | | - // nip05 address |
349 | | - let nip05_address: Option<crate::nip05::Nip05Name> = |
350 | | - validation.and_then(|x| x.ok().map(|y| y.name)); |
351 | | - |
352 | 353 | // GRPC check |
353 | | - if let Some(ref mut c) = grpc_client { |
354 | | - trace!("checking if grpc permits"); |
355 | | - let grpc_start = Instant::now(); |
356 | | - let decision_res = c |
357 | | - .admit_event( |
358 | | - &event, |
359 | | - &subm_event.source_ip, |
360 | | - subm_event.origin, |
361 | | - subm_event.user_agent, |
362 | | - nip05_address, |
363 | | - subm_event.auth_pubkey, |
364 | | - ) |
365 | | - .await; |
366 | | - match decision_res { |
367 | | - Ok(decision) => { |
368 | | - if !decision.permitted() { |
369 | | - // GPRC returned a decision to reject this event |
370 | | - info!( |
| 354 | + #[cfg(feature = "grpc")] |
| 355 | + { |
| 356 | + // nip05 address |
| 357 | + let nip05_address: Option<crate::nip05::Nip05Name> = |
| 358 | + validation.and_then(|x| x.ok().map(|y| y.name)); |
| 359 | + |
| 360 | + if let Some(ref mut c) = grpc_client { |
| 361 | + trace!("checking if grpc permits"); |
| 362 | + let grpc_start = Instant::now(); |
| 363 | + let decision_res = c |
| 364 | + .admit_event( |
| 365 | + &event, |
| 366 | + &subm_event.source_ip, |
| 367 | + subm_event.origin, |
| 368 | + subm_event.user_agent, |
| 369 | + nip05_address, |
| 370 | + subm_event.auth_pubkey, |
| 371 | + ) |
| 372 | + .await; |
| 373 | + match decision_res { |
| 374 | + Ok(decision) => { |
| 375 | + if !decision.permitted() { |
| 376 | + // GPRC returned a decision to reject this event |
| 377 | + info!( |
371 | 378 | "GRPC rejected event: {:?} (kind: {}) from: {:?} in: {:?} (IP: {:?})", |
372 | 379 | event.get_event_id_prefix(), |
373 | 380 | event.kind, |
374 | 381 | event.get_author_prefix(), |
375 | 382 | grpc_start.elapsed(), |
376 | 383 | subm_event.source_ip |
377 | 384 | ); |
378 | | - notice_tx |
379 | | - .try_send(Notice::blocked( |
380 | | - event.id, |
381 | | - &decision.message().unwrap_or_default(), |
382 | | - )) |
383 | | - .ok(); |
384 | | - continue; |
| 385 | + notice_tx |
| 386 | + .try_send(Notice::blocked( |
| 387 | + event.id, |
| 388 | + &decision.message().unwrap_or_default(), |
| 389 | + )) |
| 390 | + .ok(); |
| 391 | + continue; |
| 392 | + } |
| 393 | + } |
| 394 | + Err(e) => { |
| 395 | + warn!("GRPC server error: {:?}", e); |
385 | 396 | } |
386 | | - } |
387 | | - Err(e) => { |
388 | | - warn!("GRPC server error: {:?}", e); |
389 | 397 | } |
390 | 398 | } |
391 | 399 | } |
|
0 commit comments