Skip to content

Commit 1612c8e

Browse files
committed
cleanup implementation
1 parent a1dbc46 commit 1612c8e

2 files changed

Lines changed: 44 additions & 50 deletions

File tree

src/gui/pages/settings_general_page.rs

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::gui::pages::types::settings_page::SettingsPage;
1010
use crate::gui::styles::button::ButtonType;
1111
use crate::gui::styles::container::ContainerType;
1212
use crate::gui::styles::rule::RuleType;
13-
use crate::gui::styles::style_constants::{FONT_SIZE_SUBTITLE, TOOLTIP_DELAY};
13+
use crate::gui::styles::style_constants::{FONT_SIZE_FOOTER, FONT_SIZE_SUBTITLE, TOOLTIP_DELAY};
1414
use crate::gui::styles::text::TextType;
1515
use crate::gui::types::message::Message;
1616
use crate::gui::types::settings::Settings;
@@ -331,9 +331,7 @@ fn blacklist_selection<'a>(
331331
};
332332

333333
let message = Message::LoadIpBlacklist;
334-
let loaded_counts = blacklist_loaded_counts(custom_path, ip_blacklist);
335-
336-
let mut column = Column::new()
334+
Column::new()
337335
.width(Length::Fill)
338336
.spacing(5)
339337
.align_x(Alignment::Center)
@@ -363,26 +361,12 @@ fn blacklist_selection<'a>(
363361
} else {
364362
button_clear_mmdb(message, is_editable)
365363
}),
366-
);
367-
368-
if let Some(loaded_counts) = loaded_counts {
369-
column = column.push(Text::new(loaded_counts).class(TextType::Standard).size(12));
370-
}
371-
372-
column
373-
}
374-
375-
fn blacklist_loaded_counts(custom_path: &str, ip_blacklist: &IpBlacklist) -> Option<String> {
376-
if custom_path.is_empty() || ip_blacklist.is_loading() {
377-
return None;
378-
}
379-
380-
match (ip_blacklist.ip_count(), ip_blacklist.network_count()) {
381-
(0, 0) => None,
382-
(ip_count, 0) => Some(format!("(IPs: {ip_count})")),
383-
(0, network_count) => Some(format!("(CIDRs: {network_count})")),
384-
(ip_count, network_count) => Some(format!("(IPs: {ip_count}, CIDRs: {network_count})")),
385-
}
364+
)
365+
.push(
366+
ip_blacklist
367+
.imported_items_info()
368+
.map(|info| Text::new(info).size(FONT_SIZE_FOOTER)),
369+
)
386370
}
387371

388372
fn button_clear_mmdb<'a>(

src/networking/types/ip_blacklist.rs

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use prefix_trie::joint::set::JointPrefixSet;
88
#[derive(Clone, Default, Debug)]
99
pub struct IpBlacklist {
1010
ips: Arc<HashSet<IpAddr>>,
11-
networks: Arc<JointPrefixSet<IpNet>>,
11+
cidrs: Arc<JointPrefixSet<IpNet>>,
1212
is_loading: bool,
1313
}
1414

@@ -18,43 +18,44 @@ impl IpBlacklist {
1818
return IpBlacklist::default();
1919
};
2020
let mut ips = HashSet::new();
21-
let mut networks = JointPrefixSet::new();
21+
let mut cidrs = JointPrefixSet::new();
2222
for line in buf.lines() {
2323
let Some(first) = line.split_whitespace().next() else {
2424
continue;
2525
};
2626

2727
if let Ok(ip) = first.parse::<IpAddr>() {
2828
ips.insert(ip);
29-
} else if let Ok(network) = first.parse::<IpNet>() {
30-
networks.insert(network);
29+
} else if let Ok(cidr) = first.parse::<IpNet>() {
30+
cidrs.insert(cidr);
3131
}
3232
}
3333
IpBlacklist {
3434
ips: Arc::new(ips),
35-
networks: Arc::new(networks),
35+
cidrs: Arc::new(cidrs),
3636
is_loading: false,
3737
}
3838
}
3939

4040
pub fn contains(&self, ip: &IpAddr) -> bool {
41-
self.ips.contains(ip) || self.networks.get_lpm(&IpNet::from(*ip)).is_some()
41+
self.ips.contains(ip) || self.cidrs.get_lpm(&IpNet::from(*ip)).is_some()
4242
}
4343

4444
pub fn is_invalid(&self) -> bool {
45-
self.ips.is_empty() && self.networks.is_empty() && !self.is_loading
45+
self.ips.is_empty() && self.cidrs.is_empty() && !self.is_loading
4646
}
4747

4848
pub fn is_loading(&self) -> bool {
4949
self.is_loading
5050
}
5151

52-
pub fn ip_count(&self) -> usize {
53-
self.ips.len()
54-
}
55-
56-
pub fn network_count(&self) -> usize {
57-
self.networks.len()
52+
pub fn imported_items_info(&self) -> Option<String> {
53+
match (self.ips.len(), self.cidrs.len()) {
54+
(0, 0) => None,
55+
(ips, 0) => Some(format!("(IPs: {ips})")),
56+
(0, cidrs) => Some(format!("(CIDRs: {cidrs})")),
57+
(ips, cidrs) => Some(format!("(IPs: {ips}, CIDRs: {cidrs})")),
58+
}
5859
}
5960

6061
pub fn start_loading(&mut self) {
@@ -75,9 +76,11 @@ mod tests {
7576
assert!(!blacklist.is_invalid());
7677
assert!(!blacklist.is_loading());
7778
assert_eq!(blacklist.ips.len(), 4);
78-
assert_eq!(blacklist.networks.len(), 0);
79-
assert_eq!(blacklist.ip_count(), 4);
80-
assert_eq!(blacklist.network_count(), 0);
79+
assert_eq!(blacklist.cidrs.len(), 0);
80+
assert_eq!(
81+
blacklist.imported_items_info(),
82+
Some("(IPs: 4)".to_string())
83+
);
8184

8285
assert!(blacklist.contains(&IpAddr::V4(Ipv4Addr::new(8, 8, 8, 8))));
8386
assert!(blacklist.contains(&IpAddr::V4(Ipv4Addr::new(1, 2, 3, 255))));
@@ -98,9 +101,8 @@ mod tests {
98101
assert!(blacklist.is_invalid());
99102
assert!(!blacklist.is_loading());
100103
assert_eq!(blacklist.ips.len(), 0);
101-
assert_eq!(blacklist.networks.len(), 0);
102-
assert_eq!(blacklist.ip_count(), 0);
103-
assert_eq!(blacklist.network_count(), 0);
104+
assert_eq!(blacklist.cidrs.len(), 0);
105+
assert_eq!(blacklist.imported_items_info(), None);
104106

105107
assert!(!blacklist.contains(&IpAddr::V4(Ipv4Addr::new(8, 8, 8, 8))));
106108
assert!(!blacklist.contains(&IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0))));
@@ -117,9 +119,11 @@ mod tests {
117119
assert!(!blacklist.is_invalid());
118120
assert!(!blacklist.is_loading());
119121
assert_eq!(blacklist.ips.len(), 2);
120-
assert_eq!(blacklist.networks.len(), 4);
121-
assert_eq!(blacklist.ip_count(), 2);
122-
assert_eq!(blacklist.network_count(), 4);
122+
assert_eq!(blacklist.cidrs.len(), 4);
123+
assert_eq!(
124+
blacklist.imported_items_info(),
125+
Some("(IPs: 2, CIDRs: 4)".to_string())
126+
);
123127

124128
assert!(blacklist.contains(&IpAddr::V4(Ipv4Addr::new(8, 8, 8, 8))));
125129
assert!(blacklist.contains(&"2001:db8::1".parse::<IpAddr>().unwrap()));
@@ -150,9 +154,11 @@ mod tests {
150154
assert!(!blacklist.is_invalid());
151155
assert!(!blacklist.is_loading());
152156
assert_eq!(blacklist.ips.len(), 0);
153-
assert_eq!(blacklist.networks.len(), 1);
154-
assert_eq!(blacklist.ip_count(), 0);
155-
assert_eq!(blacklist.network_count(), 1);
157+
assert_eq!(blacklist.cidrs.len(), 1);
158+
assert_eq!(
159+
blacklist.imported_items_info(),
160+
Some("(CIDRs: 1)".to_string())
161+
);
156162

157163
assert!(blacklist.contains(&IpAddr::V4(Ipv4Addr::new(1, 2, 3, 1))));
158164
assert!(!blacklist.contains(&IpAddr::V4(Ipv4Addr::new(1, 2, 4, 1))));
@@ -166,7 +172,11 @@ mod tests {
166172

167173
assert!(!blacklist.is_invalid());
168174
assert_eq!(blacklist.ips.len(), 0);
169-
assert_eq!(blacklist.networks.len(), 6);
175+
assert_eq!(blacklist.cidrs.len(), 6);
176+
assert_eq!(
177+
blacklist.imported_items_info(),
178+
Some("(CIDRs: 6)".to_string())
179+
);
170180

171181
assert!(blacklist.contains(&IpAddr::V4(Ipv4Addr::new(209, 186, 20, 0))));
172182
assert!(blacklist.contains(&IpAddr::V4(Ipv4Addr::new(209, 186, 23, 255))));

0 commit comments

Comments
 (0)