From bdedca78e75e91c6cd37114eee09059a84d0556f Mon Sep 17 00:00:00 2001 From: Paul Lecuq Date: Sun, 15 Jan 2023 23:54:15 +0100 Subject: [PATCH] fixed updates & gc --- src/config.rs | 14 +++++++------- src/ipblc.rs | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/config.rs b/src/config.rs index 794ed8b..0fe6034 100644 --- a/src/config.rs +++ b/src/config.rs @@ -169,7 +169,7 @@ impl Context { res } - pub async fn update_blocklist(&mut self, ipevent: &IpEvent) -> Option { + pub async fn update_blocklist(&mut self, ipevent: &IpEvent) -> Option { match self.cfg.sets.get(&ipevent.ipdata.src) { Some(set) => { if self.blocklist.contains_key(&ipevent.ipdata.ip) @@ -178,21 +178,21 @@ impl Context { { let mut block = self.blocklist.get_mut(&ipevent.ipdata.ip).unwrap(); block.tryfail += 1; - block.blocktime = set.blocktime; if block.tryfail >= set.tryfail { - return Some(ipevent.ipdata.clone()); + return Some(ipevent.clone()); } } else { let starttime = DateTime::parse_from_rfc3339(ipevent.ipdata.date.as_str()) .unwrap() .with_timezone(&chrono::Local); + let blocktime = set.blocktime; self.blocklist .entry(ipevent.ipdata.ip.to_string()) .or_insert(BlockIpData { ipdata: ipevent.ipdata.clone(), - tryfail: set.tryfail, + tryfail: 0, starttime, - blocktime: set.blocktime, + blocktime, }); } } @@ -207,13 +207,13 @@ impl Context { // nightly, future use // let drained: HashMap = ctx.blocklist.drain_filter(|k,v| v.parse_date() < mindate) for (ip, blocked) in self.blocklist.clone().iter() { - match self.cfg.sets.get(&blocked.ipdata.src) { + /*match self.cfg.sets.get(&blocked.ipdata.src) { Some(set) => { let mut block = self.blocklist.get_mut(ip).unwrap(); block.blocktime = set.blocktime.clone(); } None => {} - } + }*/ let mindate = now - Duration::minutes(blocked.blocktime); if blocked.starttime < mindate { self.blocklist.remove(&ip.clone()).unwrap(); diff --git a/src/ipblc.rs b/src/ipblc.rs index 1d98576..1b6ecc4 100644 --- a/src/ipblc.rs +++ b/src/ipblc.rs @@ -96,18 +96,18 @@ pub async fn run() { } // refresh context blocklist - let filtered_ip = ctx.update_blocklist(&received_ip).await; + let filtered_ipevent = ctx.update_blocklist(&received_ip).await; // send ip list to ws and zmq sockets - if let Some(ip) = filtered_ip { - println!("{}",ip); + if let Some(ipevent) = filtered_ipevent { + println!("{}",ipevent.ipdata); if received_ip.msgtype != "init" { - println!("sending {} to ws and zmq", ip.ip); + println!("sending {} to ws and zmq", ipevent.ipdata.ip); let event = IpEvent{ msgtype: String::from("add"), mode: String::from("zmq"), hostname: fqdn.clone(), - ipdata: ip, + ipdata: ipevent.ipdata, }; send_to_ipbl_ws(&ctx, &event, &mut ret).await; send_to_ipbl_zmq(&zmqreqsocket, &event, &mut ret).await;