appguard_client_authentication/
cache.rs1use nullnet_libappguard::appguard_commands::{FirewallDefaults, FirewallPolicy};
2use std::collections::{BTreeMap, HashMap};
3
4pub struct Cache {
5 active: bool,
6 entries: HashMap<CacheKey, FirewallPolicy>,
7}
8
9impl Cache {
10 pub(crate) fn new(defaults: FirewallDefaults) -> Cache {
11 Self {
12 active: defaults.cache,
13 entries: HashMap::new(),
14 }
15 }
16
17 pub fn get(&self, key: &CacheKey) -> Option<&FirewallPolicy> {
18 if self.active {
19 self.entries.get(key)
20 } else {
21 None
22 }
23 }
24
25 pub fn insert(&mut self, key: CacheKey, policy: FirewallPolicy) {
26 if self.active {
27 self.entries.insert(key, policy);
28 }
29 }
30}
31
32#[derive(PartialEq, Eq, Hash, Clone)]
34pub struct CacheKey {
35 pub original_url: String,
36 pub method: String,
37 pub query: BTreeMap<String, String>,
38 pub user_agent: String,
39 pub body: String,
40 pub source_ip: String,
41}