Add YAML-configured ACLs with Basic and IP authorization

This commit is contained in:
2026-10-28 13:37:03 +00:00
parent d34b3e10f7
commit ad168aae63
10 changed files with 1366 additions and 76 deletions
+16
View File
@@ -15,6 +15,7 @@ pub(crate) struct Metrics {
active_tunnels: UpDownCounter<i64>,
tunnel_duration: Histogram<f64>,
tunnel_bytes: Counter<u64>,
acl_decisions: Counter<u64>,
}
impl Metrics {
@@ -60,6 +61,11 @@ impl Metrics {
.with_description("Bytes relayed through completed CONNECT tunnels")
.with_unit("By")
.build(),
acl_decisions: meter
.u64_counter("hermes.proxy.acl.decisions")
.with_description("Number of ACL decisions by outcome and reason")
.with_unit("{decision}")
.build(),
}
}
@@ -122,6 +128,16 @@ impl Metrics {
);
}
pub fn acl_decision(&self, decision: &str, reason: &str) {
self.acl_decisions.add(
1,
&[
KeyValue::new("acl.decision", decision.to_owned()),
KeyValue::new("acl.reason", reason.to_owned()),
],
);
}
pub fn tunnel_started(&self) -> ActiveTunnel {
self.active_tunnels.add(1, &[]);
ActiveTunnel {