@glassmkr/crucible 0.13.14 → 0.13.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/alerts/__tests__/rules.test.js +34 -0
- package/dist/alerts/__tests__/rules.test.js.map +1 -1
- package/dist/alerts/rules.js +19 -2
- package/dist/alerts/rules.js.map +1 -1
- package/dist/collect/__tests__/smart.test.js +44 -0
- package/dist/collect/__tests__/smart.test.js.map +1 -1
- package/dist/collect/ethtool.js +2 -1
- package/dist/collect/ethtool.js.map +1 -1
- package/dist/collect/hardware-raid.js +6 -5
- package/dist/collect/hardware-raid.js.map +1 -1
- package/dist/collect/io-errors.js +2 -2
- package/dist/collect/io-errors.js.map +1 -1
- package/dist/collect/ipmi.js +6 -6
- package/dist/collect/ipmi.js.map +1 -1
- package/dist/collect/lvm.js +2 -7
- package/dist/collect/lvm.js.map +1 -1
- package/dist/collect/os-alerts.js +2 -1
- package/dist/collect/os-alerts.js.map +1 -1
- package/dist/collect/reboot-evidence.js +2 -2
- package/dist/collect/reboot-evidence.js.map +1 -1
- package/dist/collect/security.d.ts +3 -0
- package/dist/collect/security.js +87 -10
- package/dist/collect/security.js.map +1 -1
- package/dist/collect/smart.d.ts +1 -0
- package/dist/collect/smart.js +31 -2
- package/dist/collect/smart.js.map +1 -1
- package/dist/collect/zfs.js +3 -2
- package/dist/collect/zfs.js.map +1 -1
- package/dist/init.d.ts +16 -1
- package/dist/init.js +91 -3
- package/dist/init.js.map +1 -1
- package/dist/lib/__tests__/capability.test.js +46 -34
- package/dist/lib/__tests__/capability.test.js.map +1 -1
- package/dist/lib/__tests__/privileged.test.d.ts +1 -0
- package/dist/lib/__tests__/privileged.test.js +110 -0
- package/dist/lib/__tests__/privileged.test.js.map +1 -0
- package/dist/lib/capability.d.ts +19 -4
- package/dist/lib/capability.js +48 -46
- package/dist/lib/capability.js.map +1 -1
- package/dist/lib/privileged.d.ts +22 -0
- package/dist/lib/privileged.js +117 -0
- package/dist/lib/privileged.js.map +1 -0
- package/dist/lib/types.d.ts +4 -1
- package/dist/metrics-server.js +1 -0
- package/dist/metrics-server.js.map +1 -1
- package/dist/notify/telegram.js +1 -1
- package/dist/notify/telegram.js.map +1 -1
- package/package.json +1 -1
- package/rule-ids.json +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../../src/lib/capability.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,sEAAsE;AACtE,yEAAyE;AACzE,2EAA2E;AAC3E,wEAAwE;AACxE,wEAAwE;AACxE,EAAE;AACF,0EAA0E;AAC1E,mEAAmE;AAEnE,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../../src/lib/capability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const SERVICE_USER = "glassmkr";
|
|
2
|
+
export declare const WRAPPER_PATH = "/usr/local/sbin/crucible-collect";
|
|
3
|
+
export declare const SUDOERS_PATH = "/etc/sudoers.d/glassmkr-crucible";
|
|
4
|
+
export type PrivilegedAction = "ipmi-sensor" | "ipmi-sel-info" | "ipmi-sel-elist" | "ipmi-fan" | "smart" | "zpool" | "raid-perccli" | "raid-storcli" | "raid-ssacli" | "raid-arcconf" | "dmesg-errcrit" | "dmesg-io" | "iptables" | "nft" | "ufw" | "firewall-cmd" | "pve-firewall" | "sshd" | "lvs" | "ethtool" | "last";
|
|
5
|
+
/** SMART device paths the wrapper accepts. Mirrors the sh `valid_device`
|
|
6
|
+
* case in WRAPPER_SCRIPT; kept in TS so it is unit-testable. Blocks path
|
|
7
|
+
* traversal / arbitrary-file reads via `smartctl -a <path>`. */
|
|
8
|
+
export declare function isAllowedSmartDevice(dev: string): boolean;
|
|
9
|
+
/** ethtool interface names the wrapper accepts. Linux ifnames are <=15
|
|
10
|
+
* chars from a restricted set; no slashes/spaces so no arg injection. */
|
|
11
|
+
export declare function isAllowedIface(name: string): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Invoke a privileged collection action through the sudo wrapper. Returns
|
|
14
|
+
* the command stdout, or null on any failure (wrapper/sudoers not installed,
|
|
15
|
+
* tool absent, non-zero exit) - callers already treat null as "capability
|
|
16
|
+
* unavailable", so a missing wrapper degrades gracefully rather than
|
|
17
|
+
* crashing. When the agent still runs as root (pre-migration or old installs)
|
|
18
|
+
* `sudo -n` simply runs the wrapper without a password prompt.
|
|
19
|
+
*/
|
|
20
|
+
export declare function runPrivileged(action: PrivilegedAction, args?: string[], timeoutMs?: number): Promise<string | null>;
|
|
21
|
+
export declare const WRAPPER_SCRIPT = "#!/bin/sh\n# Glassmkr Crucible privileged-collection facade (audit \u00A72.1).\n# Installed root:root 0755. The sole sudo grant for the unprivileged\n# 'glassmkr' service user. Fixed action -> fixed argv; no passthrough.\n# Managed by glassmkr-crucible init; do not edit by hand.\nset -eu\n\naction=\"${1:-}\"\n[ -n \"$action\" ] || { echo \"crucible-collect: missing action\" >&2; exit 64; }\nshift 2>/dev/null || true\n\nvalid_device() {\n case \"$1\" in\n /dev/sd[a-z]|/dev/sd[a-z][a-z]|/dev/hd[a-z]|/dev/hd[a-z][a-z]) return 0 ;;\n /dev/nvme[0-9]*n[0-9]*|/dev/nvme[0-9]*) return 0 ;;\n /dev/bus/[0-9]*) return 0 ;;\n *) return 1 ;;\n esac\n}\nvalid_iface() {\n case \"$1\" in\n \"\" | *[!A-Za-z0-9._:-]*) return 1 ;;\n *) [ \"${#1}\" -le 15 ] ;;\n esac\n}\n\ncase \"$action\" in\n ipmi-sensor) exec ipmitool sensor ;;\n ipmi-sel-info) exec ipmitool sel info ;;\n ipmi-sel-elist) exec ipmitool sel elist ;;\n ipmi-fan) exec ipmitool sdr type Fan ;;\n smart)\n dev=\"${1:-}\"\n valid_device \"$dev\" || { echo \"crucible-collect: rejected device: $dev\" >&2; exit 65; }\n exec smartctl --json --all \"$dev\" ;;\n zpool) exec zpool status ;;\n raid-perccli) exec perccli /c0 show all J ;;\n raid-storcli) exec storcli /call show all J ;;\n raid-ssacli) exec ssacli ctrl all show status ;;\n raid-arcconf) exec arcconf list ;;\n dmesg-errcrit) exec dmesg --level=err,crit --since \"5 min ago\" ;;\n dmesg-io) exec sh -c 'dmesg -T --since \"10 minutes ago\" 2>/dev/null | grep -i \"I/O error\\\\|Buffer I/O error\\\\|blk_update_request.*error\"' ;;\n iptables) exec iptables -L -n ;;\n nft) exec nft list ruleset ;;\n ufw) exec ufw status ;;\n firewall-cmd) exec firewall-cmd --state ;;\n pve-firewall) exec pve-firewall status ;;\n sshd) exec sshd -T ;;\n lvs) exec lvs --reportformat=json --options=lv_name,vg_name,lv_attr,data_percent,metadata_percent --units=b --noheadings ;;\n ethtool)\n ifc=\"${1:-}\"\n valid_iface \"$ifc\" || { echo \"crucible-collect: rejected iface: $ifc\" >&2; exit 65; }\n exec ethtool \"$ifc\" ;;\n last) exec last -x -F ;;\n *) echo \"crucible-collect: unknown action: $action\" >&2; exit 64 ;;\nesac\n";
|
|
22
|
+
export declare const SUDOERS_CONTENT = "# Glassmkr Crucible (audit \u00A72.1). Managed by glassmkr-crucible init.\n# The service user may run ONLY the fixed-argv collection facade as root.\nDefaults!/usr/local/sbin/crucible-collect env_reset\nDefaults!/usr/local/sbin/crucible-collect secure_path=\"/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin\"\nglassmkr ALL=(root) NOPASSWD: /usr/local/sbin/crucible-collect\n";
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// Privileged-collection facade (security audit §2.1).
|
|
2
|
+
//
|
|
3
|
+
// Crucible historically ran as root so every collector could invoke
|
|
4
|
+
// ipmitool / smartctl / zpool / dmesg / etc. directly. That makes the whole
|
|
5
|
+
// collection runtime a root-blast-radius surface (catalog T-201/T-202/T-208).
|
|
6
|
+
//
|
|
7
|
+
// This module is the boundary that lets the agent run as an unprivileged
|
|
8
|
+
// `glassmkr` service user instead: it gains hardware/kernel read access ONLY
|
|
9
|
+
// by invoking a single root-owned wrapper via `sudo -n`. The wrapper
|
|
10
|
+
// (`/usr/local/sbin/crucible-collect`) dispatches a FIXED action name to a
|
|
11
|
+
// hard-coded argv - there is no argument passthrough, so it is not the
|
|
12
|
+
// "sudo <binary> $@" anti-pattern. The only variable inputs (a SMART device
|
|
13
|
+
// path and an ethtool interface name) are validated against strict allowlists
|
|
14
|
+
// in the wrapper before exec.
|
|
15
|
+
//
|
|
16
|
+
// A single dispatcher (rather than one script per binary) is deliberate: it
|
|
17
|
+
// is one small file to audit and one sudoers line, and every privileged
|
|
18
|
+
// command is visible in one `case` statement. The wrapper is installed
|
|
19
|
+
// root:root 0755 (not writable by `glassmkr`) so the sudo grant cannot be
|
|
20
|
+
// hijacked by tampering with the script.
|
|
21
|
+
import { run } from "./exec.js";
|
|
22
|
+
export const SERVICE_USER = "glassmkr";
|
|
23
|
+
export const WRAPPER_PATH = "/usr/local/sbin/crucible-collect";
|
|
24
|
+
export const SUDOERS_PATH = "/etc/sudoers.d/glassmkr-crucible";
|
|
25
|
+
/** SMART device paths the wrapper accepts. Mirrors the sh `valid_device`
|
|
26
|
+
* case in WRAPPER_SCRIPT; kept in TS so it is unit-testable. Blocks path
|
|
27
|
+
* traversal / arbitrary-file reads via `smartctl -a <path>`. */
|
|
28
|
+
export function isAllowedSmartDevice(dev) {
|
|
29
|
+
return /^\/dev\/(sd[a-z]+|hd[a-z]+|nvme\d+(n\d+)?|bus\/\d+)$/.test(dev);
|
|
30
|
+
}
|
|
31
|
+
/** ethtool interface names the wrapper accepts. Linux ifnames are <=15
|
|
32
|
+
* chars from a restricted set; no slashes/spaces so no arg injection. */
|
|
33
|
+
export function isAllowedIface(name) {
|
|
34
|
+
return name.length > 0 && name.length <= 15 && /^[A-Za-z0-9._:-]+$/.test(name);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Invoke a privileged collection action through the sudo wrapper. Returns
|
|
38
|
+
* the command stdout, or null on any failure (wrapper/sudoers not installed,
|
|
39
|
+
* tool absent, non-zero exit) - callers already treat null as "capability
|
|
40
|
+
* unavailable", so a missing wrapper degrades gracefully rather than
|
|
41
|
+
* crashing. When the agent still runs as root (pre-migration or old installs)
|
|
42
|
+
* `sudo -n` simply runs the wrapper without a password prompt.
|
|
43
|
+
*/
|
|
44
|
+
export function runPrivileged(action, args = [], timeoutMs = 10000) {
|
|
45
|
+
return run("sudo", ["-n", WRAPPER_PATH, action, ...args], timeoutMs);
|
|
46
|
+
}
|
|
47
|
+
// The wrapper script, written verbatim to WRAPPER_PATH by init. POSIX sh.
|
|
48
|
+
// Every case `exec`s a fixed command; the two parameterised cases validate
|
|
49
|
+
// their single argument first. Keep the `valid_device` / `valid_iface` cases
|
|
50
|
+
// in sync with the TS validators above.
|
|
51
|
+
export const WRAPPER_SCRIPT = `#!/bin/sh
|
|
52
|
+
# Glassmkr Crucible privileged-collection facade (audit §2.1).
|
|
53
|
+
# Installed root:root 0755. The sole sudo grant for the unprivileged
|
|
54
|
+
# 'glassmkr' service user. Fixed action -> fixed argv; no passthrough.
|
|
55
|
+
# Managed by glassmkr-crucible init; do not edit by hand.
|
|
56
|
+
set -eu
|
|
57
|
+
|
|
58
|
+
action="\${1:-}"
|
|
59
|
+
[ -n "$action" ] || { echo "crucible-collect: missing action" >&2; exit 64; }
|
|
60
|
+
shift 2>/dev/null || true
|
|
61
|
+
|
|
62
|
+
valid_device() {
|
|
63
|
+
case "$1" in
|
|
64
|
+
/dev/sd[a-z]|/dev/sd[a-z][a-z]|/dev/hd[a-z]|/dev/hd[a-z][a-z]) return 0 ;;
|
|
65
|
+
/dev/nvme[0-9]*n[0-9]*|/dev/nvme[0-9]*) return 0 ;;
|
|
66
|
+
/dev/bus/[0-9]*) return 0 ;;
|
|
67
|
+
*) return 1 ;;
|
|
68
|
+
esac
|
|
69
|
+
}
|
|
70
|
+
valid_iface() {
|
|
71
|
+
case "$1" in
|
|
72
|
+
"" | *[!A-Za-z0-9._:-]*) return 1 ;;
|
|
73
|
+
*) [ "\${#1}" -le 15 ] ;;
|
|
74
|
+
esac
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
case "$action" in
|
|
78
|
+
ipmi-sensor) exec ipmitool sensor ;;
|
|
79
|
+
ipmi-sel-info) exec ipmitool sel info ;;
|
|
80
|
+
ipmi-sel-elist) exec ipmitool sel elist ;;
|
|
81
|
+
ipmi-fan) exec ipmitool sdr type Fan ;;
|
|
82
|
+
smart)
|
|
83
|
+
dev="\${1:-}"
|
|
84
|
+
valid_device "$dev" || { echo "crucible-collect: rejected device: $dev" >&2; exit 65; }
|
|
85
|
+
exec smartctl --json --all "$dev" ;;
|
|
86
|
+
zpool) exec zpool status ;;
|
|
87
|
+
raid-perccli) exec perccli /c0 show all J ;;
|
|
88
|
+
raid-storcli) exec storcli /call show all J ;;
|
|
89
|
+
raid-ssacli) exec ssacli ctrl all show status ;;
|
|
90
|
+
raid-arcconf) exec arcconf list ;;
|
|
91
|
+
dmesg-errcrit) exec dmesg --level=err,crit --since "5 min ago" ;;
|
|
92
|
+
dmesg-io) exec sh -c 'dmesg -T --since "10 minutes ago" 2>/dev/null | grep -i "I/O error\\\\|Buffer I/O error\\\\|blk_update_request.*error"' ;;
|
|
93
|
+
iptables) exec iptables -L -n ;;
|
|
94
|
+
nft) exec nft list ruleset ;;
|
|
95
|
+
ufw) exec ufw status ;;
|
|
96
|
+
firewall-cmd) exec firewall-cmd --state ;;
|
|
97
|
+
pve-firewall) exec pve-firewall status ;;
|
|
98
|
+
sshd) exec sshd -T ;;
|
|
99
|
+
lvs) exec lvs --reportformat=json --options=lv_name,vg_name,lv_attr,data_percent,metadata_percent --units=b --noheadings ;;
|
|
100
|
+
ethtool)
|
|
101
|
+
ifc="\${1:-}"
|
|
102
|
+
valid_iface "$ifc" || { echo "crucible-collect: rejected iface: $ifc" >&2; exit 65; }
|
|
103
|
+
exec ethtool "$ifc" ;;
|
|
104
|
+
last) exec last -x -F ;;
|
|
105
|
+
*) echo "crucible-collect: unknown action: $action" >&2; exit 64 ;;
|
|
106
|
+
esac
|
|
107
|
+
`;
|
|
108
|
+
// The sudoers drop-in. Grants the service user NOPASSWD on the single
|
|
109
|
+
// wrapper only, with env_reset + a fixed secure_path. No wildcards. Written
|
|
110
|
+
// 0440 root:root and validated with `visudo -cf` before install.
|
|
111
|
+
export const SUDOERS_CONTENT = `# Glassmkr Crucible (audit §2.1). Managed by glassmkr-crucible init.
|
|
112
|
+
# The service user may run ONLY the fixed-argv collection facade as root.
|
|
113
|
+
Defaults!${WRAPPER_PATH} env_reset
|
|
114
|
+
Defaults!${WRAPPER_PATH} secure_path="/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
115
|
+
${SERVICE_USER} ALL=(root) NOPASSWD: ${WRAPPER_PATH}
|
|
116
|
+
`;
|
|
117
|
+
//# sourceMappingURL=privileged.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privileged.js","sourceRoot":"","sources":["../../src/lib/privileged.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,oEAAoE;AACpE,4EAA4E;AAC5E,8EAA8E;AAC9E,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,qEAAqE;AACrE,2EAA2E;AAC3E,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAC9E,8BAA8B;AAC9B,EAAE;AACF,4EAA4E;AAC5E,wEAAwE;AACxE,uEAAuE;AACvE,0EAA0E;AAC1E,yCAAyC;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,kCAAkC,CAAC;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAG,kCAAkC,CAAC;AAa/D;;iEAEiE;AACjE,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,sDAAsD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED;0EAC0E;AAC1E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAwB,EACxB,OAAiB,EAAE,EACnB,SAAS,GAAG,KAAK;IAEjB,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AACvE,CAAC;AAED,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwD7B,CAAC;AAEF,sEAAsE;AACtE,4EAA4E;AAC5E,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG;;WAEpB,YAAY;WACZ,YAAY;EACrB,YAAY,yBAAyB,YAAY;CAClD,CAAC"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -512,6 +512,9 @@ export interface SecurityData {
|
|
|
512
512
|
permitRootLogin: string;
|
|
513
513
|
passwordAuthentication: string;
|
|
514
514
|
rootPasswordExposed: boolean;
|
|
515
|
+
configApplied: boolean;
|
|
516
|
+
configMtime?: number | null;
|
|
517
|
+
configLoadedAt?: number | null;
|
|
515
518
|
} | null;
|
|
516
519
|
firewall: {
|
|
517
520
|
active: boolean;
|
|
@@ -700,7 +703,7 @@ export type IpmiCapability = {
|
|
|
700
703
|
ipmitool_version: string | null;
|
|
701
704
|
} | {
|
|
702
705
|
available: false;
|
|
703
|
-
reason: "no_ipmitool_binary" | "no_bmc_device" | "execution_failed" | "permission_denied";
|
|
706
|
+
reason: "no_ipmitool_binary" | "no_bmc_device" | "execution_failed" | "permission_denied" | "ipmitool_cve_2020_5208";
|
|
704
707
|
detail?: string;
|
|
705
708
|
};
|
|
706
709
|
export interface IpmiInfo {
|
package/dist/metrics-server.js
CHANGED
|
@@ -103,6 +103,7 @@ function formatPrometheus(snap) {
|
|
|
103
103
|
// Security
|
|
104
104
|
if (snap.security) {
|
|
105
105
|
lines.push(`glassmkr_ssh_root_password_exposed ${snap.security.ssh?.rootPasswordExposed ? 1 : 0}`);
|
|
106
|
+
lines.push(`glassmkr_ssh_config_unapplied ${snap.security.ssh?.configApplied === false ? 1 : 0}`);
|
|
106
107
|
lines.push(`glassmkr_firewall_active ${snap.security.firewall.active ? 1 : 0}`);
|
|
107
108
|
if (snap.security.pending_updates?.available) {
|
|
108
109
|
lines.push(`glassmkr_pending_security_updates ${snap.security.pending_updates.pendingCount}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-server.js","sourceRoot":"","sources":["../src/metrics-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGpC,IAAI,cAAc,GAAoB,IAAI,CAAC;AAE3C,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,cAAc,GAAG,QAAQ,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACvC,IAAI,GAAG,CAAC,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACnD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,2BAA2B,EAAE,CAAC,CAAC;YACpE,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACjC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,+CAA+C,IAAI,UAAU,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM;IACN,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAErD,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhE,QAAQ;IACR,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,UAAU,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,MAAM,GAAG,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,8BAA8B,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,yBAAyB,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,UAAU;IACV,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAChF,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,cAAc,KAAK,CAAC,SAAS,GAAG,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,6BAA6B,MAAM,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,6BAA6B,MAAM,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,2BAA2B,MAAM,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,QAAQ;IACR,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,WAAW,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,KAAK,GAAG,CAAC;QACjE,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,gCAAgC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9G,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,kCAAkC,MAAM,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;QACpH,IAAI,KAAK,CAAC,mBAAmB,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,sCAAsC,MAAM,KAAK,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAClI,CAAC;IAED,OAAO;IACP,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,iEAAiE;QACjE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,OAAO;QACP,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE3E,WAAW;IACX,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnG,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,qCAAqC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/F,KAAK,CAAC,IAAI,CAAC,oCAAoC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"metrics-server.js","sourceRoot":"","sources":["../src/metrics-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGpC,IAAI,cAAc,GAAoB,IAAI,CAAC;AAE3C,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,cAAc,GAAG,QAAQ,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACvC,IAAI,GAAG,CAAC,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACnD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,2BAA2B,EAAE,CAAC,CAAC;YACpE,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACjC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,+CAA+C,IAAI,UAAU,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM;IACN,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAErD,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhE,QAAQ;IACR,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,UAAU,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,MAAM,GAAG,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,8BAA8B,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,yBAAyB,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,UAAU;IACV,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAChF,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,cAAc,KAAK,CAAC,SAAS,GAAG,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,6BAA6B,MAAM,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,6BAA6B,MAAM,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,2BAA2B,MAAM,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,QAAQ;IACR,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,WAAW,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,KAAK,GAAG,CAAC;QACjE,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,gCAAgC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9G,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,kCAAkC,MAAM,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;QACpH,IAAI,KAAK,CAAC,mBAAmB,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,sCAAsC,MAAM,KAAK,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAClI,CAAC;IAED,OAAO;IACP,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QACD,6DAA6D;QAC7D,oEAAoE;QACpE,iEAAiE;QACjE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,OAAO;QACP,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE3E,WAAW;IACX,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnG,KAAK,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClG,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,qCAAqC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/F,KAAK,CAAC,IAAI,CAAC,oCAAoC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC"}
|
package/dist/notify/telegram.js
CHANGED
|
@@ -2,7 +2,7 @@ const PRIORITY_MAP = {
|
|
|
2
2
|
raid_degraded: "P1", smart_failing: "P1", ecc_errors: "P1", psu_redundancy_loss: "P1", ipmi_fan_failure: "P1",
|
|
3
3
|
oom_kills: "P2", ram_high: "P2", disk_space_high: "P2", ipmi_sel_critical: "P2", disk_io_errors: "P2", zfs_pool_unhealthy: "P2",
|
|
4
4
|
cpu_iowait_high: "P3", nvme_wear_high: "P3", disk_latency_high: "P3", cpu_temperature_high: "P3",
|
|
5
|
-
ssh_root_password: "P3", pending_security_updates: "P3", kernel_vulnerabilities: "P3", zfs_scrub_errors: "P3",
|
|
5
|
+
ssh_root_password: "P3", ssh_config_unapplied: "P3", pending_security_updates: "P3", kernel_vulnerabilities: "P3", zfs_scrub_errors: "P3",
|
|
6
6
|
swap_high: "P4", no_firewall: "P4", kernel_needs_reboot: "P4", unattended_upgrades_disabled: "P4",
|
|
7
7
|
interface_errors: "P4", link_speed_mismatch: "P4", interface_saturation: "P4",
|
|
8
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/notify/telegram.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAA2B;IAC3C,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI;IAC7G,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI;IAC/H,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI;IAChG,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/notify/telegram.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED