diff --git a/site/dashboard.html b/site/dashboard.html
index f600a0a..a0434a1 100644
--- a/site/dashboard.html
+++ b/site/dashboard.html
@@ -873,6 +873,7 @@ async function refresh() {
document.getElementById('totalQueries').textContent = formatNumber(q.total);
document.getElementById('uptime').textContent = formatUptime(stats.uptime_secs);
document.getElementById('uptimeSub').textContent = formatUptimeSub(stats.uptime_secs);
+ document.getElementById('footerUpstream').textContent = stats.upstream || '';
document.getElementById('overrideCount').textContent = stats.overrides.active;
document.getElementById('blockedCount').textContent = formatNumber(q.blocked);
const bl = stats.blocking;
@@ -1150,7 +1151,8 @@ setInterval(refresh, 2000);
- Logs:
macOS: /usr/local/var/log/numa.log · Linux: journalctl -u numa -f
+ Upstream:
+ · Logs:
macOS: /usr/local/var/log/numa.log · Linux: journalctl -u numa -f
·
GitHub
diff --git a/src/api.rs b/src/api.rs
index 0c6bc54..b3ae490 100644
--- a/src/api.rs
+++ b/src/api.rs
@@ -126,6 +126,7 @@ struct QueryLogResponse {
#[derive(Serialize)]
struct StatsResponse {
uptime_secs: u64,
+ upstream: String,
queries: QueriesStats,
cache: CacheStats,
overrides: OverrideStats,
@@ -435,8 +436,11 @@ async fn stats(State(ctx): State>) -> Json {
let override_count = ctx.overrides.lock().unwrap().active_count();
let bl_stats = ctx.blocklist.lock().unwrap().stats();
+ let upstream = ctx.upstream.lock().unwrap().to_string();
+
Json(StatsResponse {
uptime_secs: snap.uptime_secs,
+ upstream,
queries: QueriesStats {
total: snap.total,
forwarded: snap.forwarded,