import { AppData } from "@/src/data/app-data"; import deriveWireguardInterfaceName from "@/src/utils/derive-wireguard-interface-name"; import type { BUN_SQLITE_WGUI_HOSTS_JOIN, BUN_SQLITE_WGUI_CLIENTS_JOIN } from "@/src/types/sql-joins"; type Params = { host?: BUN_SQLITE_WGUI_HOSTS_JOIN; clients?: BUN_SQLITE_WGUI_CLIENTS_JOIN[]; }; export default function deriveHostConfig({ host, clients }: Params) { const host_id = host?.id || AppData["WireguardMainHostID"]; const wg_ip_address = host?.wg_ip_address; const public_key = host?.public_key; const interface_name = deriveWireguardInterfaceName({ host_id }); // const HOST_CONFIG_DIR = path.join( // WGUI_LIB_HOSTS_CONFIGS_DIR, // String(host_id), // ); // const HOST_CLIENTS_DIR = path.join( // HOST_CONFIG_DIR, // WGUI_LIB_HOST_CLIENTS_DIR_NAME, // ); // const HOST_IPTABLES_DIR = path.join( // HOST_CONFIG_DIR, // WGUI_LIB_HOST_IPTABLES_DIR_NAME, // ); // const HOST_CONFIG_FILE = path.join( // HOST_CONFIG_DIR, // `${interface_name}.conf`, // ); return { host_id, interface_name, config_path: host?.dir_names?.HOST_CONFIG_FILE, address: wg_ip_address ? `${wg_ip_address}/24` : undefined, listen_port: host?.listen_port || AppData["DefaultWGListenPort"], post_up: host?.dir_names?.POST_UP_PATH, post_down: host?.dir_names?.POST_DOWN_PATH, public_key: public_key, client_count: clients?.filter((client) => (client.host_id || 0) == host_id) .length || 0, }; }