Setting to disable IP blocking

This commit is contained in:
Mike Dilger 2024-04-12 14:00:37 +12:00
parent cc065ec5b2
commit 27a63495e5
3 changed files with 24 additions and 9 deletions

View File

@ -130,13 +130,16 @@ async fn main() -> Result<(), Error> {
(tcp_stream, hashed_peer) (tcp_stream, hashed_peer)
}; };
let ip_data = GLOBALS.store.get().unwrap().get_ip_data(hashed_peer.ip())?; // Possibly IP block
if ip_data.is_banned() { if ! GLOBALS.config.read().dont_ip_block {
log::debug!(target: "Client", let ip_data = GLOBALS.store.get().unwrap().get_ip_data(hashed_peer.ip())?;
"{}: Blocking reconnection until {}", if ip_data.is_banned() {
hashed_peer.ip(), log::debug!(target: "Client",
ip_data.ban_until); "{}: Blocking reconnection until {}",
continue; hashed_peer.ip(),
ip_data.ban_until);
continue;
}
} }
if let Some(tls_acceptor) = &maybe_tls_acceptor { if let Some(tls_acceptor) = &maybe_tls_acceptor {
@ -546,9 +549,9 @@ impl WebSocketService {
log::error!(target: "Client", "{}: {e}", self.peer); log::error!(target: "Client", "{}: {e}", self.peer);
if !matches!(e.inner, ChorusError::AuthRequired) { if !matches!(e.inner, ChorusError::AuthRequired) {
if msg.len() < 2048 { if msg.len() < 2048 {
log::error!(target: "Client", "{}: msg was {}", self.peer, msg); log::warn!(target: "Client", "{}: msg was {}", self.peer, msg);
} else { } else {
log::error!(target: "Client", "{}: truncated msg was {} ...", self.peer, &msg[..2048]); log::warn!(target: "Client", "{}: truncated msg was {} ...", self.peer, &msg[..2048]);
} }
} }
if !self.replied { if !self.replied {

View File

@ -30,6 +30,7 @@ pub struct FriendlyConfig {
pub server_log_level: String, pub server_log_level: String,
pub library_log_level: String, pub library_log_level: String,
pub client_log_level: String, pub client_log_level: String,
pub dont_ip_block: bool,
} }
impl Default for FriendlyConfig { impl Default for FriendlyConfig {
@ -58,6 +59,7 @@ impl Default for FriendlyConfig {
server_log_level: "Info".to_string(), server_log_level: "Info".to_string(),
library_log_level: "Info".to_string(), library_log_level: "Info".to_string(),
client_log_level: "Info".to_string(), client_log_level: "Info".to_string(),
dont_ip_block: false,
} }
} }
} }
@ -88,6 +90,7 @@ impl FriendlyConfig {
server_log_level, server_log_level,
library_log_level, library_log_level,
client_log_level, client_log_level,
dont_ip_block,
} = self; } = self;
let mut public_key: Option<Pubkey> = None; let mut public_key: Option<Pubkey> = None;
@ -134,6 +137,7 @@ impl FriendlyConfig {
server_log_level, server_log_level,
library_log_level, library_log_level,
client_log_level, client_log_level,
dont_ip_block,
}) })
} }
} }
@ -164,6 +168,7 @@ pub struct Config {
pub server_log_level: log::LevelFilter, pub server_log_level: log::LevelFilter,
pub library_log_level: log::LevelFilter, pub library_log_level: log::LevelFilter,
pub client_log_level: log::LevelFilter, pub client_log_level: log::LevelFilter,
pub dont_ip_block: bool,
} }
impl Default for Config { impl Default for Config {

View File

@ -189,3 +189,10 @@ Possible values are: Trace, Debug, Info, Warn, Error
Default is Info Default is Info
### dont_ip_block
Chorus normally blocks IP addresses for a short period preventing quick reconnections, and for a longer period if the previous connection ended in some error condition.
By setting this variable to true, it will allow all connections.
Default is false.