50 lines
1.2 KiB
Plaintext
50 lines
1.2 KiB
Plaintext
![]() |
import { cursor } from "uci";
|
||
|
|
||
|
const x = ubus.call("wireguard", "status");
|
||
|
if (!x)
|
||
|
return false;
|
||
|
|
||
|
const uci = cursor();
|
||
|
uci.load("network");
|
||
|
|
||
|
let m_wg_iface_info = gauge("wireguard_interface_info");
|
||
|
let m_wg_peer_info = gauge("wireguard_peer_info");
|
||
|
let m_wg_handshake = gauge ("wireguard_latest_handshake_seconds");
|
||
|
let m_wg_rx = gauge ("wireguard_received_bytes_total");
|
||
|
let m_wg_tx = gauge ("wireguard_sent_bytes_total");
|
||
|
|
||
|
for (let iface in x) {
|
||
|
const wc = x[iface];
|
||
|
|
||
|
m_wg_iface_info({
|
||
|
name: iface,
|
||
|
public_key: wc["public_key"],
|
||
|
listen_port: wc["listen_port"],
|
||
|
fwmark: wc["fwmark"] || NaN,
|
||
|
}, 1);
|
||
|
|
||
|
for (let peer in wc["peers"]) {
|
||
|
let description;
|
||
|
uci.foreach('network', `wireguard_${iface}`, (s) => {
|
||
|
if (s.public_key == peer)
|
||
|
description = s.description;
|
||
|
});
|
||
|
|
||
|
const pc = wc["peers"][peer];
|
||
|
|
||
|
m_wg_peer_info({
|
||
|
interface: iface,
|
||
|
public_key: peer,
|
||
|
description,
|
||
|
endpoint: pc["endpoint"],
|
||
|
persistent_keepalive_interval: pc["persistent_keepalive_interval"] || NaN,
|
||
|
}, 1);
|
||
|
|
||
|
const labels = { public_key: peer };
|
||
|
|
||
|
m_wg_handshake(labels, pc["last_handshake"]);
|
||
|
m_wg_rx(labels, pc["rx_bytes"]);
|
||
|
m_wg_tx(labels, pc["tx_bytes"]);
|
||
|
}
|
||
|
}
|