system: information panel and event log; about: download this build's source
ci / check (push) Successful in 1m20s
ci / images (push) Successful in 20s

System page laid out after 3CX's admin dashboard: a System information panel (version,
host name, company, public IP, LAN IPs, ports, telephony, restart needed, copy buttons,
how to restart) and an Event log panel (system_events, 90 days: trunk down/up, Asterisk
down/up, restart needed, config failed, 911, public IP changed, backups, disk) with Load
more and a CSV download.

About (/about, no sign-in, linked from the login page, My phone and System): AGPL-3.0
notice, credits, the repository link, and "Code v<version>", which downloads
selfphone.tar.gz: the api image now tars its own build context (no .env, data,
node_modules, build output or .git) before installing anything.

Task: M11-T7
This commit is contained in:
iamdoubz committed 2026-10-20 11:26:34 -05:00
1 parent a6ba61756c
commit 0ff0f9292b
29 files changed
+5035 -79

No files matched your search

+32
View File
@@ -110,3 +110,35 @@ export type BackupDto = { name: string; size: number; createdAt: string };
/** GET /api/system/tls: the SIP TLS certificate in data/tls (M11-T2). */
export type TlsCert =
{ ok: true; subject: string; names: string[]; notAfter: string } | { ok: false; error: string };
/** GET /api/system/status: the System page's "System information" (05 §2). */
export type SystemStatus = {
version: string;
hostname: string;
companyName: string;
publicIp: string | null;
/** Re-checked every 5 minutes (network.publicIpWatch). */
publicIpDynamic: boolean;
lanIps: string[];
ports: { sip: number; sipTcp: boolean; sips: number | null; rtp: string; https: number };
ami: { connected: boolean };
restartRequired: boolean;
};
/** GET /api/system/events: the System page's event log, newest first. */
export type SystemEventDto = {
id: number;
createdAt: string;
severity: 'info' | 'warning' | 'error';
code: string;
source: string;
message: string;
};
/** GET /api/about (no sign-in): what runs here and where its source is (AGPL, 08 §4). */
export type AboutDto = {
version: string;
repoUrl: string;
/** The source this build was made from (selfphone.tar.gz); null outside a Docker build. */
source: { bytes: number; builtAt: string } | null;
};