Files
wireguard-ui/src/utils/grab-dir-names.ts
T

69 lines
2.4 KiB
TypeScript

import path from "path";
import type { User } from "../types";
import type { BUN_SQLITE_WGUI_USERS } from "@/db/types/db";
type Params = {
user?: BUN_SQLITE_WGUI_USERS | User;
};
export default function grabDirNames(params?: Params) {
const DIRNAME = __dirname;
const ROOT_DIR = DIRNAME.includes(`/.bunext`)
? process.cwd()
: path.resolve(__dirname, "../..");
const DATA_DIR = process.env.DATA_DIR || path.join(ROOT_DIR, ".data");
const MEDIA_RELATIVE_DIR = "media";
const MEDIA_DIR = path.join(DATA_DIR, MEDIA_RELATIVE_DIR);
const USER_MEDIA_PUBLIC_DIR = params?.user?.id
? path.join(MEDIA_DIR, String(params.user.id), "public")
: undefined;
const USER_MEDIA_PUBLIC_RELATIVE_DIR = params?.user?.id
? path.join(MEDIA_RELATIVE_DIR, String(params.user.id), "public")
: undefined;
const USER_MEDIA_PRIVATE_DIR = params?.user?.id
? path.join(MEDIA_DIR, String(params.user.id), "private")
: undefined;
const USER_MEDIA_PRIVATE_RELATIVE_DIR = params?.user?.id
? path.join(MEDIA_RELATIVE_DIR, String(params.user.id), "private")
: undefined;
const WGUI_LIB_DIR = `/var/lib/wgui`;
const WGUI_LIB_IP_TABLES_DIR = path.join(WGUI_LIB_DIR, `iptables`);
const WGUI_LIB_KEYS_DIR = path.join(WGUI_LIB_DIR, `keys`);
const WGUI_LIB_CLIENTS_CONFIGS_DIR = path.join(WGUI_LIB_DIR, `clients`);
const WGUI_LIB_HOSTS_CONFIGS_DIR = path.join(WGUI_LIB_DIR, `hosts`);
const WGUI_LIB_SCRIPTS_DIR = path.join(WGUI_LIB_DIR, `scripts`);
const WGUI_WG_QUICK_SYSTEMD_SCRIPT = path.join(
WGUI_LIB_SCRIPTS_DIR,
`wg-quick-systemd.sh`,
);
const WIREGUARD_PRIVATE_KEY_FILE_NAME = `private.key`;
const WIREGUARD_PUBLIC_KEY_FILE_NAME = `public.key`;
const WIREGUARD_CLIENT_CONFIG_FILE_NAME = `wg.conf`;
return {
ROOT_DIR,
MEDIA_DIR,
USER_MEDIA_PUBLIC_DIR,
USER_MEDIA_PRIVATE_DIR,
DATA_DIR,
USER_MEDIA_PUBLIC_RELATIVE_DIR,
USER_MEDIA_PRIVATE_RELATIVE_DIR,
WGUI_LIB_DIR,
WGUI_LIB_IP_TABLES_DIR,
WGUI_LIB_KEYS_DIR,
WGUI_LIB_CLIENTS_CONFIGS_DIR,
WGUI_LIB_HOSTS_CONFIGS_DIR,
WGUI_LIB_SCRIPTS_DIR,
WGUI_WG_QUICK_SYSTEMD_SCRIPT,
WIREGUARD_PRIVATE_KEY_FILE_NAME,
WIREGUARD_PUBLIC_KEY_FILE_NAME,
WIREGUARD_CLIENT_CONFIG_FILE_NAME,
};
}