Neutralize box/host names in comments (hub box / bridge box instead of internal hostnames)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-27 00:51:19 +02:00
co-authored by Claude Fable 5.1
parent 4e43e69583
commit 91766f2264
20 changed files with 26 additions and 26 deletions
+1 -1
View File
@@ -82,7 +82,7 @@ async function refresh(){
applyFederationExtra(j);
}
// On the AlabamaLink box (aldmr) fold the AlabamaLink line INTO the existing
// On the AlabamaLink box fold the AlabamaLink line INTO the existing
// federation marquee so both scroll together in the one bar — same style, no
// second banner. Every other box keeps just the federation line. Gated on the
// local reflector identity from the status (KT4ROY / alabama.reflector-network.com),
+1 -1
View File
@@ -19,7 +19,7 @@ function cfg(): array {
}
// redis() / redis_connect() / redis_scan_mget() come from auth/lib/redis.php
// (copy of callmgr2/www-mumien/auth/lib/redis.php).
// (copy of <dmr-portal>/auth/lib/redis.php).
require __DIR__ . '/lib/redis.php';
// json_in/json_out, CSRF and rate limiting come from auth/lib/http.php (copy of
// callmgr2's); the rate-limit keys keep this site's namespace.
+1 -1
View File
@@ -11,7 +11,7 @@
*/
declare(strict_types=1);
// acl.php — shared PHP helper for every web (dmr-web, svx-web).
// Canonical copy: callmgr2/www-mumien/auth/lib/acl.php; other repos carry a COPY.
// Canonical copy: <dmr-portal>/auth/lib/acl.php; other repos carry a COPY.
// Admin-on-admin checks. Needs acct_admin_level() and json_out() from the site.
// An admin may change another account only when their own level is strictly
+1 -1
View File
@@ -11,7 +11,7 @@
*/
declare(strict_types=1);
// html.php — shared PHP helper for every web (dmr-web, svx-web, svxlink-web).
// Canonical copy: callmgr2/www-mumien/auth/lib/html.php; other repos carry a COPY.
// Canonical copy: <dmr-portal>/auth/lib/html.php; other repos carry a COPY.
// HTML escaping for server-rendered pages.
// Escape for HTML text and attribute context (quotes included, invalid UTF-8 replaced).
+1 -1
View File
@@ -11,7 +11,7 @@
*/
declare(strict_types=1);
// http.php — shared PHP helper for every web (dmr-web, svx-web).
// Canonical copy: callmgr2/www-mumien/auth/lib/http.php; other repos carry a COPY.
// Canonical copy: <dmr-portal>/auth/lib/http.php; other repos carry a COPY.
// JSON request/response, CSRF check, Redis-backed rate limiting.
// Loaded by auth/lib.php; needs cfg() from the page's own lib.php.
+1 -1
View File
@@ -11,7 +11,7 @@
*/
declare(strict_types=1);
// redis.php — shared PHP helper for every web (dmr-web, svx-web).
// Canonical copy: callmgr2/www-mumien/auth/lib/redis.php; other repos carry a COPY.
// Canonical copy: <dmr-portal>/auth/lib/redis.php; other repos carry a COPY.
// Redis connections (main + aux) and the batched SCAN+MGET read — the only way to read many keys.
// Loaded by auth/lib.php; needs cfg() from the page's own lib.php.
+1 -1
View File
@@ -11,7 +11,7 @@
*/
declare(strict_types=1);
// shell.php — shared PHP helper for every web (dmr-web, svx-web, svxlink-web).
// Canonical copy: callmgr2/www-mumien/auth/lib/shell.php; other repos carry a COPY.
// Canonical copy: <dmr-portal>/auth/lib/shell.php; other repos carry a COPY.
// Shell-argument quoting for the few pages that run local helpers.
function sh_arg($v): string { return escapeshellarg((string)$v); }
+3 -3
View File
@@ -48,8 +48,8 @@ function renderLastheard(payload){
}
// Network bridge directory (crawled from every reflector): so a bridge that
// arrives bare over a trunk (speed: node/system empty) renders IDENTICALLY to
// where it is a local client (aldmr: astmeta filled node/system). Same code,
// arrives bare over a trunk (hub reflector: node/system empty) renders IDENTICALLY to
// where it is a local client (bridge box: astmeta filled node/system). Same code,
// same result on both boxes.
const bn = (window.__svxportal_lastStatus && window.__svxportal_lastStatus.bridge_nodes) || {};
const now = Math.floor(Date.now()/1000);
@@ -72,7 +72,7 @@ function renderLastheard(payload){
// Callsign column = the callsign field as-is (e.g. the trunk callsign
// KT4ROY-ASL). The gateway/reflector descriptor ("East Coast Reflector via
// 45225 / W2ECR") lives in the Location column. Uniform on every box: an
// AllStar row (aldmr) and the same talker arriving over the trunk (speed)
// AllStar row (bridge box) and the same talker arriving over the trunk (hub)
// render identically — the backend already fills callsign + location, the
// web just shows them, it never re-derives the name.
const csCell = `<b>${escHtml(e.callsign || eSystem || '')}</b>`;
+1 -1
View File
@@ -8,7 +8,7 @@
// later version. See the LICENSE file for details.
// api.js — shared HTTP helpers for every web (dmr-web, svx-web, svxlink-web).
// Canonical copy: callmgr2/www-mumien/lib/api.js; other repos carry a COPY.
// Canonical copy: <dmr-portal>/lib/api.js; other repos carry a COPY.
//
// apiFetch(url, {method, body, form, csrf, headers, quiet}) → {ok, status, json}
// apiGet(url, opts) → json | null GET, cache: no-store
+1 -1
View File
@@ -8,7 +8,7 @@
// later version. See the LICENSE file for details.
// auth_ui.js — shared sign-in / register / sign-out transport (dmr-web, svx-web).
// Canonical copy: callmgr2/www-mumien/lib/auth_ui.js; other repos carry a COPY.
// Canonical copy: <dmr-portal>/lib/auth_ui.js; other repos carry a COPY.
// Needs lib/api.js. Pages keep their own field validation and messages; this
// owns the request/response contract so both webs behave the same.
//
+1 -1
View File
@@ -8,7 +8,7 @@
// later version. See the LICENSE file for details.
// changelog.js — shared "recent updates" viewer (dmr-web, svx-web).
// Canonical copy: callmgr2/www-mumien/lib/changelog.js; other repos carry a COPY.
// Canonical copy: <dmr-portal>/lib/changelog.js; other repos carry a COPY.
// Reads changelog.json (newest first, {date, repo, hash, type, summary}) and
// renders a client-side paginated list. Needs lib/fmt.js (escHtml).
//
+1 -1
View File
@@ -8,7 +8,7 @@
// later version. See the LICENSE file for details.
// fmt.js — shared formatting helpers for every web (dmr-web, svx-web, svxlink-web).
// Canonical copy: callmgr2/www-mumien/lib/fmt.js; other repos carry a COPY.
// Canonical copy: <dmr-portal>/lib/fmt.js; other repos carry a COPY.
// Every function here replaced an identical local copy; outputs are unchanged.
(function () {
'use strict';
+1 -1
View File
@@ -8,7 +8,7 @@
// later version. See the LICENSE file for details.
// pager.js — shared pagination (dmr-web, svx-web).
// Canonical copy: callmgr2/www-mumien/lib/pager.js; other repos carry a COPY.
// Canonical copy: <dmr-portal>/lib/pager.js; other repos carry a COPY.
//
// pageSizeFor('monitorBody', 32, 160) rows that fit below the element (min 5)
// pagerHtml({page, pages, total, noun, cls}) footer « ‹ 1..n › » as HTML;
+1 -1
View File
@@ -8,7 +8,7 @@
// later version. See the LICENSE file for details.
/* Theme engine — Dark / Light / Color, with a Color editor. Shared by every web
* (canonical copy: callmgr2/www-mumien/lib/theme.js; other repos carry a COPY).
* (canonical copy: <dmr-portal>/lib/theme.js; other repos carry a COPY).
* Page settings: window.THEME_AUTH_BASE (default '/auth/'); window.THEME_SERVER_SYNC = false
* disables the per-account sync (svxlink-web has no account backend).
*
+1 -1
View File
@@ -8,7 +8,7 @@
// later version. See the LICENSE file for details.
// ui_field.js — shared form-field builders (dmr-web, svx-web, svxlink-web).
// Canonical copy: callmgr2/www-mumien/lib/ui_field.js; other repos carry a COPY.
// Canonical copy: <dmr-portal>/lib/ui_field.js; other repos carry a COPY.
//
// makeToggleBtn(isOn, onFlip(next, btn), extraCls) Enable/Disable button; .value 'true'/'false', .setOn()
// makeBoolSelect(cls, val, disabled) same button, fires 'change' — drop-in for a true/false <select>
+1 -1
View File
@@ -9,7 +9,7 @@
// ui_list.js — shared list editor for every web (dmr-web, svx-web, svxlink-web).
//
// Canonical copy: callmgr2/www-mumien/lib/ui_list.js. Other repos carry a
// Canonical copy: <dmr-portal>/lib/ui_list.js. Other repos carry a
// plain COPY (never a symlink); deploy copies it in. Plain script, no deps
// beyond the shared CSS classes (btn, form-control, data-table, mono).
//
+1 -1
View File
@@ -8,7 +8,7 @@
// later version. See the LICENSE file for details.
// ui_msg.js — shared status/error message helpers (dmr-web, svx-web, svxlink-web).
// Canonical copy: callmgr2/www-mumien/lib/ui_msg.js; other repos carry a COPY.
// Canonical copy: <dmr-portal>/lib/ui_msg.js; other repos carry a COPY.
//
// setMsg(elOrId, text, isErr) inline text line: hidden when empty, green/red
// showErr(elOrId, text) show/hide an error line, keeps its own colour
+1 -1
View File
@@ -13,7 +13,7 @@
// One file, sectioned per subsystem plus shared sections (redis, nodes, trunk,
// lastheard). Read at start and on reload (SIGHUP / file-watch) and held in
// memory. `modules` toggles which subsystems run on this box, so the same
// binary runs all of them on speed/aldmr and only astmeta on the allstar box.
// binary runs all of them on a reflector box and only astmeta on an AllStar bridge box.
//
// Secrets carry an @@PLACEHOLDER@@ that deploy-remote.sh --conf fills from the
// live file per box, so the structure is one file but secrets differ per host.
+2 -2
View File
@@ -10,8 +10,8 @@
// svxdr — the merged svx daemon: astmeta + nodelist + proxy + xlink in ONE
// process, each a subsystem goroutine, toggled per box by /etc/svxlink/svxdr.json.
//
// One binary, one config. Runs all subsystems on speed/aldmr; only astmeta on
// the allstar box. Co-located subsystems share memory (no localhost HTTP hop);
// One binary, one config. A reflector box runs all subsystems; a pure AllStar
// bridge box runs only astmeta. Co-located subsystems share memory (no localhost HTTP hop);
// the HTTP talker-meta ingest stays for a REMOTE astmeta feeding this box.
//
// Phase 1 scaffold: config + module toggles + lifecycle (start / SIGHUP reload /
+4 -4
View File
@@ -15,8 +15,8 @@ package nodelist
//
// Which URL is read is per-box config MONITOR_STATUS_URL (falls back to
// REFLECTOR_STATUS_URL):
// speed → https://reflector.sm2ampr.net/geu/status/ (the master's full view)
// aldmr → http://127.0.0.1:8080/status (its own reflector)
// hub box → https://<master-reflector>/geu/status/ (the master's full view)
// bridge box → http://127.0.0.1:8080/status (its own reflector)
import (
"encoding/json"
@@ -309,8 +309,8 @@ func buildMonitor(client *http.Client, generated string) (monStatus, bool) {
return monStatus{}, false
}
// Normalize at ingest: sat-login node callsigns -> per-TG name. Covers the
// case where monitorStatusURL is a foreign master (e.g. speed reads the SE hub
// where aldmr's sat nodes federate in). A local read via the proxy is already
// case where monitorStatusURL is a foreign master (e.g. a hub box reads a foreign master
// where its satellite nodes federate in). A local read via the proxy is already
// normalized; re-normalizing is a harmless no-op.
body = statusnorm.Normalize(body, renameSatNode)
var raw struct {