53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
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,
|
|
};
|
|
}
|