Simplify a few json discovery serializations

This commit is contained in:
Ely Deckers 2022-02-18 17:51:59 +01:00
parent 4d23d9320f
commit 114d511005

View File

@ -329,7 +329,7 @@ class PfzDiscoveries
self::print_json(array_map(fn($server) => [ self::print_json(array_map(fn($server) => [
"{#SERVER}" => $server['vpnid'], "{#SERVER}" => $server['vpnid'],
"{#NAME}" => self::sanitize_server_name($server["name"])], "{#NAME}" => self::sanitize_name($server["name"])],
$servers)); $servers));
} }
@ -353,48 +353,27 @@ class PfzDiscoveries
{ {
$clients = PfEnv::openvpn_get_active_clients(); $clients = PfEnv::openvpn_get_active_clients();
$json_string = '{"data":['; self::print_json(array_map(fn($client) => [
"{#CLIENT}" => $client['vpnid'],
foreach ($clients as $client) { "{#NAME}", self::sanitize_name($client["name"]),
$name = trim(preg_replace('/\w{3}(\d)?\:\d{4,5}/i', '', $client['name'])); ], $clients));
$json_string .= '{"{#CLIENT}":"' . $client['vpnid'] . '"';
$json_string .= ',"{#NAME}":"' . $name . '"';
$json_string .= '},';
}
$json_string = rtrim($json_string, ",");
$json_string .= "]}";
echo $json_string;
} }
public static function services() public static function services()
{ {
$services = PfEnv::get_services(); $services = PfEnv::get_services();
$json_string = '{"data":['; $named_services = array_filter($services, fn($service) => !empty($service['name']));
foreach ($services as $service) { self::print_json(array_map(function ($service) {
if (!empty($service['name'])) { $maybe_id = Util::array_first(array_keys($service), fn($key) => in_array($key, ["id", "zone"]));
$id = is_null($maybe_id) ? "" : $service[$maybe_id];
$status = PfEnv::get_service_status($service); return [
if ($status = "") $status = 0; "{#SERVICE}" => str_replace(" ", "__", $service['name']) . $id,
"{#DESCRIPTION}" => $service['description'],
$id = ""; ];
//id for OpenVPN }, $named_services));
if (!empty($service['id'])) $id = "." . $service["id"];
//zone for Captive Portal
if (!empty($service['zone'])) $id = "." . $service["zone"];
$json_string .= '{"{#SERVICE}":"' . str_replace(" ", "__", $service['name']) . $id . '"';
$json_string .= ',"{#DESCRIPTION}":"' . $service['description'] . '"';
$json_string .= '},';
}
}
$json_string = rtrim($json_string, ",");
$json_string .= "]}";
echo $json_string;
} }
public static function interfaces() public static function interfaces()
@ -402,28 +381,17 @@ class PfzDiscoveries
self::discover_interface(); self::discover_interface();
} }
// IPSEC Discovery
public static function ipsec_ph1() public static function ipsec_ph1()
{ {
require_once("ipsec.inc"); require_once("ipsec.inc");
$config = PfEnv::cfg(); $config = PfEnv::cfg();
PfEnv::init_config_arr(array('ipsec', 'phase1')); PfEnv::init_config_arr(array('ipsec', 'phase1'));
$a_phase1 = &$config['ipsec']['phase1']; $a_phase1 = &$config['ipsec']['phase1'];
$json_string = '{"data":['; self::print_json(array_map(fn($data) => [
"{#IKEID}" => $data['ikeid'],
foreach ($a_phase1 as $data) { "{#NAME}" => $data['descr'],
$json_string .= '{"{#IKEID}":"' . $data['ikeid'] . '"'; ], $a_phase1));
$json_string .= ',"{#NAME}":"' . $data['descr'] . '"';
$json_string .= '},';
}
$json_string = rtrim($json_string, ",");
$json_string .= "]}";
echo $json_string;
} }
public static function ipsec_ph2() public static function ipsec_ph2()
@ -434,22 +402,13 @@ class PfzDiscoveries
PfEnv::init_config_arr(array('ipsec', 'phase2')); PfEnv::init_config_arr(array('ipsec', 'phase2'));
$a_phase2 = &$config['ipsec']['phase2']; $a_phase2 = &$config['ipsec']['phase2'];
$json_string = '{"data":['; self::print_json(array_map(fn($data) => [
"{#IKEID}" => $data['ikeid'],
foreach ($a_phase2 as $data) { "{#NAME}" => $data['descr'],
$json_string .= '{"{#IKEID}":"' . $data['ikeid'] . '"'; "{#UNIQID}" => $data['uniqid'],
$json_string .= ',"{#NAME}":"' . $data['descr'] . '"'; "{#REQID}" => $data['reqid'],
$json_string .= ',"{#UNIQID}":"' . $data['uniqid'] . '"'; "{#EXTID}" => $data['ikeid'] . '.' . $data['reqid'],
$json_string .= ',"{#REQID}":"' . $data['reqid'] . '"'; ], $a_phase2));
$json_string .= ',"{#EXTID}":"' . $data['ikeid'] . '.' . $data['reqid'] . '"';
$json_string .= '},';
}
$json_string = rtrim($json_string, ",");
$json_string .= "]}";
echo $json_string;
} }
public static function dhcpfailover() public static function dhcpfailover()
@ -479,7 +438,7 @@ class PfzDiscoveries
]); ]);
} }
private static function sanitize_server_name(string $raw_name): string private static function sanitize_name(string $raw_name): string
{ {
return trim(preg_replace('/\w{3}(\d)?\:\d{4,5}/i', '', $raw_name)); return trim(preg_replace('/\w{3}(\d)?\:\d{4,5}/i', '', $raw_name));
} }
@ -505,7 +464,7 @@ class PfzDiscoveries
private static function map_server(array $server): array private static function map_server(array $server): array
{ {
return self::map_conns( return self::map_conns(
self::sanitize_server_name($server["name"]), self::sanitize_name($server["name"]),
$server["vpnid"], $server["vpnid"],
$server["conns"]); $server["conns"]);
} }