diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-09 19:58:41 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-09 19:58:41 +0000 |
| commit | b28a356cb41077ccee12a9c52f4ef2054e76cac6 (patch) | |
| tree | 2a0867f1ab0216e86efa062aef90b2b8077e6fb9 /src/config.rs | |
| parent | 6dd9fcd5392891b0ddb7894e2c5cb40450eae00e (diff) | |
chore: cargo fmt
Diffstat (limited to 'src/config.rs')
| -rw-r--r-- | src/config.rs | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/src/config.rs b/src/config.rs index 2343c88..44001d8 100644 --- a/src/config.rs +++ b/src/config.rs | |||
| @@ -141,12 +141,20 @@ pub struct Config { | |||
| 141 | /// Stores full event objects for immediate re-processing when dependencies resolve. | 141 | /// Stores full event objects for immediate re-processing when dependencies resolve. |
| 142 | /// Too short (<30s): Miss events from slow relays | 142 | /// Too short (<30s): Miss events from slow relays |
| 143 | /// Too long (>5min): Waste memory | 143 | /// Too long (>5min): Waste memory |
| 144 | #[arg(long, env = "NGIT_REJECTED_HOT_CACHE_DURATION_SECS", default_value_t = 120)] | 144 | #[arg( |
| 145 | long, | ||
| 146 | env = "NGIT_REJECTED_HOT_CACHE_DURATION_SECS", | ||
| 147 | default_value_t = 120 | ||
| 148 | )] | ||
| 145 | pub rejected_hot_cache_duration_secs: u64, | 149 | pub rejected_hot_cache_duration_secs: u64, |
| 146 | 150 | ||
| 147 | /// Cold index expiry in seconds for rejected announcements (default: 604800 = 7 days) | 151 | /// Cold index expiry in seconds for rejected announcements (default: 604800 = 7 days) |
| 148 | /// Stores metadata only to prevent repeated downloads of rejected events. | 152 | /// Stores metadata only to prevent repeated downloads of rejected events. |
| 149 | #[arg(long, env = "NGIT_REJECTED_COLD_INDEX_EXPIRY_SECS", default_value_t = 604800)] | 153 | #[arg( |
| 154 | long, | ||
| 155 | env = "NGIT_REJECTED_COLD_INDEX_EXPIRY_SECS", | ||
| 156 | default_value_t = 604800 | ||
| 157 | )] | ||
| 150 | pub rejected_cold_index_expiry_secs: u64, | 158 | pub rejected_cold_index_expiry_secs: u64, |
| 151 | } | 159 | } |
| 152 | 160 | ||
| @@ -190,10 +198,7 @@ impl Config { | |||
| 190 | // Validate it's a valid nsec | 198 | // Validate it's a valid nsec |
| 191 | Keys::parse(&nsec).context("Invalid nsec in relay owner key file")?; | 199 | Keys::parse(&nsec).context("Invalid nsec in relay owner key file")?; |
| 192 | 200 | ||
| 193 | tracing::info!( | 201 | tracing::info!("Loaded relay owner key from {}", key_path.display()); |
| 194 | "Loaded relay owner key from {}", | ||
| 195 | key_path.display() | ||
| 196 | ); | ||
| 197 | return Ok(nsec); | 202 | return Ok(nsec); |
| 198 | } | 203 | } |
| 199 | 204 | ||
| @@ -202,8 +207,7 @@ impl Config { | |||
| 202 | let nsec = keys.secret_key().to_bech32()?; | 207 | let nsec = keys.secret_key().to_bech32()?; |
| 203 | 208 | ||
| 204 | // Save to file | 209 | // Save to file |
| 205 | fs::write(&key_path, &nsec) | 210 | fs::write(&key_path, &nsec).context("Failed to write relay owner key file")?; |
| 206 | .context("Failed to write relay owner key file")?; | ||
| 207 | 211 | ||
| 208 | tracing::info!( | 212 | tracing::info!( |
| 209 | "Generated new relay owner key and saved to {}", | 213 | "Generated new relay owner key and saved to {}", |
| @@ -215,7 +219,9 @@ impl Config { | |||
| 215 | 219 | ||
| 216 | /// Get the relay owner's Keys object | 220 | /// Get the relay owner's Keys object |
| 217 | pub fn relay_owner_keys(&self) -> Result<Keys> { | 221 | pub fn relay_owner_keys(&self) -> Result<Keys> { |
| 218 | let nsec = self.relay_owner_nsec.as_ref() | 222 | let nsec = self |
| 223 | .relay_owner_nsec | ||
| 224 | .as_ref() | ||
| 219 | .context("relay_owner_nsec not set (should be set by Config::load())")?; | 225 | .context("relay_owner_nsec not set (should be set by Config::load())")?; |
| 220 | Keys::parse(nsec).context("Invalid relay_owner_nsec") | 226 | Keys::parse(nsec).context("Invalid relay_owner_nsec") |
| 221 | } | 227 | } |
| @@ -251,8 +257,11 @@ impl Config { | |||
| 251 | pub fn for_testing() -> Self { | 257 | pub fn for_testing() -> Self { |
| 252 | // Generate a test key deterministically for consistent tests | 258 | // Generate a test key deterministically for consistent tests |
| 253 | let keys = Keys::generate(); | 259 | let keys = Keys::generate(); |
| 254 | let nsec = keys.secret_key().to_bech32().expect("Failed to generate test nsec"); | 260 | let nsec = keys |
| 255 | 261 | .secret_key() | |
| 262 | .to_bech32() | ||
| 263 | .expect("Failed to generate test nsec"); | ||
| 264 | |||
| 256 | Self { | 265 | Self { |
| 257 | domain: "localhost:8080".to_string(), | 266 | domain: "localhost:8080".to_string(), |
| 258 | relay_owner_nsec: Some(nsec), | 267 | relay_owner_nsec: Some(nsec), |
| @@ -348,7 +357,7 @@ mod tests { | |||
| 348 | let config = Config::for_testing(); | 357 | let config = Config::for_testing(); |
| 349 | let keys = config.relay_owner_keys().expect("Should have valid keys"); | 358 | let keys = config.relay_owner_keys().expect("Should have valid keys"); |
| 350 | let npub = config.relay_owner_npub().expect("Should derive npub"); | 359 | let npub = config.relay_owner_npub().expect("Should derive npub"); |
| 351 | 360 | ||
| 352 | // Verify the npub matches the keys | 361 | // Verify the npub matches the keys |
| 353 | assert_eq!(npub, keys.public_key().to_bech32().unwrap()); | 362 | assert_eq!(npub, keys.public_key().to_bech32().unwrap()); |
| 354 | assert!(npub.starts_with("npub1")); | 363 | assert!(npub.starts_with("npub1")); |