Initialize client forms
This commit is contained in:
@@ -3,25 +3,18 @@ import type {
|
||||
BUN_SQLITE_WGUI_HOSTS,
|
||||
BUN_SQLITE_WGUI_VARIABLES,
|
||||
} from "@/db/types/db";
|
||||
import { AppData } from "@/src/data/app-data";
|
||||
import grabDirNames from "@/src/utils/grab-dir-names";
|
||||
import deriveWireguardInterfaceName from "@/src/utils/derive-wireguard-interface-name";
|
||||
import { execSync } from "node:child_process";
|
||||
import path from "node:path";
|
||||
import grabHostNetworkInterface from "./grab-host-network-interface";
|
||||
import type { APIResponseObject } from "@moduletrace/bunext/types";
|
||||
import BunSQLite from "@moduletrace/bun-sqlite";
|
||||
import type { TableType, User } from "@/src/types";
|
||||
import checkPrivateIPAvailability from "./check-private-ip-availability";
|
||||
import manageWireguardHost from "./manage-wireguard-host";
|
||||
import grabHostDirnames from "./grab-host-dir-names";
|
||||
|
||||
const {
|
||||
WGUI_LIB_HOSTS_CONFIGS_DIR,
|
||||
WIREGUARD_PRIVATE_KEY_FILE_NAME,
|
||||
WIREGUARD_PUBLIC_KEY_FILE_NAME,
|
||||
WGUI_LIB_HOST_CLIENTS_DIR_NAME,
|
||||
WGUI_LIB_HOST_IPTABLES_DIR_NAME,
|
||||
} = grabDirNames();
|
||||
const { WIREGUARD_PRIVATE_KEY_FILE_NAME, WIREGUARD_PUBLIC_KEY_FILE_NAME } =
|
||||
grabDirNames();
|
||||
|
||||
type Params = {
|
||||
host?: BUN_SQLITE_WGUI_HOSTS;
|
||||
@@ -34,29 +27,18 @@ export default async function setupWireguardHost({
|
||||
wg_subnet_ip,
|
||||
user,
|
||||
}: Params): Promise<APIResponseObject> {
|
||||
const host_id = host?.id || AppData["WireguardHostID"];
|
||||
|
||||
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(
|
||||
WGUI_LIB_HOSTS_CONFIGS_DIR,
|
||||
WGUI_LIB_HOST_CLIENTS_DIR_NAME,
|
||||
);
|
||||
|
||||
const HOST_IPTABLES_DIR = path.join(
|
||||
WGUI_LIB_HOSTS_CONFIGS_DIR,
|
||||
WGUI_LIB_HOST_IPTABLES_DIR_NAME,
|
||||
);
|
||||
|
||||
const HOST_CONFIG_FILE = path.join(
|
||||
const {
|
||||
HOST_CLIENTS_DIR,
|
||||
HOST_CONFIG_DIR,
|
||||
`${INTERFACE_NAME}.conf`,
|
||||
);
|
||||
HOST_CONFIG_FILE,
|
||||
HOST_ID,
|
||||
HOST_IPTABLES_DIR,
|
||||
HOST_PRIVATE_KEY_FILE,
|
||||
HOST_PUBLIC_KEY_FILE,
|
||||
INTERFACE_NAME,
|
||||
POST_DOWN_PATH,
|
||||
POST_UP_PATH,
|
||||
} = grabHostDirnames({ host });
|
||||
|
||||
const variables_res = await BunSQLite.select<
|
||||
BUN_SQLITE_WGUI_VARIABLES,
|
||||
@@ -75,7 +57,7 @@ export default async function setupWireguardHost({
|
||||
query: {
|
||||
query: {
|
||||
host_id: {
|
||||
value: host_id,
|
||||
value: HOST_ID,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -111,6 +93,8 @@ export default async function setupWireguardHost({
|
||||
|
||||
pre_sh += `set -e\n`;
|
||||
pre_sh += `mkdir -p ${HOST_CONFIG_DIR}\n`;
|
||||
pre_sh += `mkdir -p ${HOST_CLIENTS_DIR}\n`;
|
||||
pre_sh += `mkdir -p ${HOST_IPTABLES_DIR}\n`;
|
||||
pre_sh += `cd ${HOST_CONFIG_DIR}\n`;
|
||||
pre_sh += `if [ ! -f ${WIREGUARD_PRIVATE_KEY_FILE_NAME} ]; then\n`;
|
||||
pre_sh += ` wg genkey | tee ${WIREGUARD_PRIVATE_KEY_FILE_NAME} | wg pubkey > ${WIREGUARD_PUBLIC_KEY_FILE_NAME}\n`;
|
||||
@@ -126,17 +110,15 @@ export default async function setupWireguardHost({
|
||||
}
|
||||
|
||||
try {
|
||||
const HOST_PUBLIC_KEY = execSync(
|
||||
`cat ${path.join(HOST_CONFIG_DIR, WIREGUARD_PUBLIC_KEY_FILE_NAME)}`,
|
||||
{ encoding: "utf-8" },
|
||||
).trim();
|
||||
const HOST_PUBLIC_KEY = execSync(`cat ${HOST_PUBLIC_KEY_FILE}`, {
|
||||
encoding: "utf-8",
|
||||
}).trim();
|
||||
|
||||
const HOST_PRIVATE_KEY = execSync(
|
||||
`cat ${path.join(HOST_CONFIG_DIR, WIREGUARD_PRIVATE_KEY_FILE_NAME)}`,
|
||||
{ encoding: "utf-8" },
|
||||
).trim();
|
||||
const HOST_PRIVATE_KEY = execSync(`cat ${HOST_PRIVATE_KEY_FILE}`, {
|
||||
encoding: "utf-8",
|
||||
}).trim();
|
||||
|
||||
if (host_id == 0) {
|
||||
if (HOST_ID == 0) {
|
||||
const update_variables = await BunSQLite.insert<
|
||||
BUN_SQLITE_WGUI_VARIABLES,
|
||||
TableType
|
||||
@@ -155,12 +137,10 @@ export default async function setupWireguardHost({
|
||||
update_on_duplicate: true,
|
||||
});
|
||||
|
||||
console.log("update_variables", update_variables);
|
||||
|
||||
if (!update_variables.success) {
|
||||
throw new Error(`Couldn't update host variables`);
|
||||
}
|
||||
} else if (host_id) {
|
||||
} else if (HOST_ID) {
|
||||
const update_host = await BunSQLite.insert<
|
||||
BUN_SQLITE_WGUI_HOSTS,
|
||||
TableType
|
||||
@@ -168,7 +148,7 @@ export default async function setupWireguardHost({
|
||||
table: "hosts",
|
||||
data: [
|
||||
{
|
||||
id: host_id,
|
||||
id: HOST_ID,
|
||||
user_id: user.id,
|
||||
wg_ip_address: HOST_WG_IP,
|
||||
public_key: HOST_PUBLIC_KEY,
|
||||
@@ -182,9 +162,6 @@ export default async function setupWireguardHost({
|
||||
|
||||
sh += `set -e\n`;
|
||||
|
||||
const POST_UP_PATH = path.join(HOST_IPTABLES_DIR, `up.sh`);
|
||||
const POST_DOWN_PATH = path.join(HOST_IPTABLES_DIR, `down.sh`);
|
||||
|
||||
sh += `cd ${HOST_CONFIG_DIR}\n`;
|
||||
|
||||
sh += `cat > ${POST_UP_PATH} << EOF\n`;
|
||||
@@ -247,7 +224,7 @@ export default async function setupWireguardHost({
|
||||
const exec = execSync(sh, { encoding: "utf-8" });
|
||||
|
||||
const manage_res = manageWireguardHost({
|
||||
host_id,
|
||||
host_id: HOST_ID,
|
||||
action: "restart",
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user