format code
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="flex flex-col gap-2">
|
||||
<div v-if="overridden" class="flex items-center gap-2 p-2 bg-amber-50 dark:bg-amber-900/20 rounded-lg text-amber-700 dark:text-amber-400 text-sm">
|
||||
<div
|
||||
v-if="overridden"
|
||||
class="flex items-center gap-2 rounded-lg bg-amber-50 p-2 text-sm text-amber-700 dark:bg-amber-900/20 dark:text-amber-400"
|
||||
>
|
||||
<IconsWarning class="size-4" />
|
||||
<span>This field is overridden by an environment variable</span>
|
||||
</div>
|
||||
|
||||
@@ -6,8 +6,11 @@
|
||||
<BaseTooltip v-if="description" :text="description">
|
||||
<IconsInfo class="size-4" />
|
||||
</BaseTooltip>
|
||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
||||
<BaseTooltip
|
||||
v-if="overridden"
|
||||
text="This field is overridden by an environment variable"
|
||||
>
|
||||
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||
</BaseTooltip>
|
||||
</div>
|
||||
<div class="flex gap-1">
|
||||
|
||||
@@ -6,8 +6,11 @@
|
||||
<BaseTooltip v-if="description" :text="description">
|
||||
<IconsInfo class="size-4" />
|
||||
</BaseTooltip>
|
||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
||||
<BaseTooltip
|
||||
v-if="overridden"
|
||||
text="This field is overridden by an environment variable"
|
||||
>
|
||||
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||
</BaseTooltip>
|
||||
</div>
|
||||
<BaseInput
|
||||
|
||||
@@ -6,8 +6,11 @@
|
||||
<BaseTooltip v-if="description" :text="description">
|
||||
<IconsInfo class="size-4" />
|
||||
</BaseTooltip>
|
||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
||||
<BaseTooltip
|
||||
v-if="overridden"
|
||||
text="This field is overridden by an environment variable"
|
||||
>
|
||||
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||
</BaseTooltip>
|
||||
</div>
|
||||
<BaseInput :id="id" v-model.number="data" :name="id" type="number" />
|
||||
|
||||
@@ -6,8 +6,11 @@
|
||||
<BaseTooltip v-if="description" :text="description">
|
||||
<IconsInfo class="size-4" />
|
||||
</BaseTooltip>
|
||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
||||
<BaseTooltip
|
||||
v-if="overridden"
|
||||
text="This field is overridden by an environment variable"
|
||||
>
|
||||
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||
</BaseTooltip>
|
||||
</div>
|
||||
<BaseSwitch :id="id" v-model="data" />
|
||||
|
||||
@@ -6,8 +6,11 @@
|
||||
<BaseTooltip v-if="description" :text="description">
|
||||
<IconsInfo class="size-4" />
|
||||
</BaseTooltip>
|
||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
||||
<BaseTooltip
|
||||
v-if="overridden"
|
||||
text="This field is overridden by an environment variable"
|
||||
>
|
||||
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||
</BaseTooltip>
|
||||
</div>
|
||||
<BaseInput
|
||||
|
||||
@@ -11,14 +11,17 @@ export default definePermissionEventHandler('admin', 'any', async () => {
|
||||
host: WG_CLIENT_OVERRIDE_ENV.HOST !== undefined,
|
||||
port: WG_CLIENT_OVERRIDE_ENV.CLIENT_PORT !== undefined,
|
||||
defaultDns: WG_CLIENT_OVERRIDE_ENV.DEFAULT_DNS !== undefined,
|
||||
defaultAllowedIps: WG_CLIENT_OVERRIDE_ENV.DEFAULT_ALLOWED_IPS !== undefined,
|
||||
defaultAllowedIps:
|
||||
WG_CLIENT_OVERRIDE_ENV.DEFAULT_ALLOWED_IPS !== undefined,
|
||||
defaultMtu: WG_CLIENT_OVERRIDE_ENV.DEFAULT_MTU !== undefined,
|
||||
defaultPersistentKeepalive: WG_CLIENT_OVERRIDE_ENV.DEFAULT_PERSISTENT_KEEPALIVE !== undefined,
|
||||
defaultPersistentKeepalive:
|
||||
WG_CLIENT_OVERRIDE_ENV.DEFAULT_PERSISTENT_KEEPALIVE !== undefined,
|
||||
},
|
||||
general: {
|
||||
sessionTimeout: WG_GENERAL_OVERRIDE_ENV.SESSION_TIMEOUT !== undefined,
|
||||
metricsPassword: WG_GENERAL_OVERRIDE_ENV.METRICS_PASSWORD !== undefined,
|
||||
metricsPrometheus: WG_GENERAL_OVERRIDE_ENV.METRICS_PROMETHEUS !== undefined,
|
||||
metricsPrometheus:
|
||||
WG_GENERAL_OVERRIDE_ENV.METRICS_PROMETHEUS !== undefined,
|
||||
metricsJson: WG_GENERAL_OVERRIDE_ENV.METRICS_JSON !== undefined,
|
||||
},
|
||||
hooks: {
|
||||
|
||||
@@ -228,14 +228,18 @@ class WireGuard {
|
||||
|
||||
const wgInterfaceWithOverrides = applyInterfaceOverrides(wgInterface);
|
||||
|
||||
WG_DEBUG(`Starting Wireguard Interface ${wgInterfaceWithOverrides.name}...`);
|
||||
WG_DEBUG(
|
||||
`Starting Wireguard Interface ${wgInterfaceWithOverrides.name}...`
|
||||
);
|
||||
await this.#saveWireguardConfig(wgInterfaceWithOverrides);
|
||||
await wg.down(wgInterfaceWithOverrides.name).catch(() => {});
|
||||
await wg.up(wgInterfaceWithOverrides.name).catch((err) => {
|
||||
if (
|
||||
err &&
|
||||
err.message &&
|
||||
err.message.includes(`Cannot find device "${wgInterfaceWithOverrides.name}"`)
|
||||
err.message.includes(
|
||||
`Cannot find device "${wgInterfaceWithOverrides.name}"`
|
||||
)
|
||||
) {
|
||||
throw new Error(
|
||||
`WireGuard exited with the error: Cannot find device "${wgInterfaceWithOverrides.name}"\nThis usually means that your host's kernel does not support WireGuard!`,
|
||||
@@ -246,7 +250,9 @@ class WireGuard {
|
||||
throw err;
|
||||
});
|
||||
await this.#syncWireguardConfig(wgInterfaceWithOverrides);
|
||||
WG_DEBUG(`Wireguard Interface ${wgInterfaceWithOverrides.name} started successfully.`);
|
||||
WG_DEBUG(
|
||||
`Wireguard Interface ${wgInterfaceWithOverrides.name} started successfully.`
|
||||
);
|
||||
|
||||
WG_DEBUG('Starting Cron Job...');
|
||||
await this.startCronJob();
|
||||
|
||||
+58
-20
@@ -62,9 +62,7 @@ export const WG_OVERRIDE_ENV = {
|
||||
/** Override the network device/interface */
|
||||
DEVICE: process.env.WG_DEVICE,
|
||||
/** Override the MTU setting */
|
||||
MTU: process.env.WG_MTU
|
||||
? Number.parseInt(process.env.WG_MTU, 10)
|
||||
: undefined,
|
||||
MTU: process.env.WG_MTU ? Number.parseInt(process.env.WG_MTU, 10) : undefined,
|
||||
/** Override the IPv4 CIDR */
|
||||
IPV4_CIDR: process.env.WG_IPV4_CIDR,
|
||||
/** Override the IPv6 CIDR */
|
||||
@@ -81,7 +79,9 @@ export const WG_CLIENT_OVERRIDE_ENV = {
|
||||
/** Override default client DNS servers */
|
||||
DEFAULT_DNS: process.env.WG_DEFAULT_DNS?.split(',').map((x) => x.trim()),
|
||||
/** Override default client allowed IPs */
|
||||
DEFAULT_ALLOWED_IPS: process.env.WG_DEFAULT_ALLOWED_IPS?.split(',').map((x) => x.trim()),
|
||||
DEFAULT_ALLOWED_IPS: process.env.WG_DEFAULT_ALLOWED_IPS?.split(',').map((x) =>
|
||||
x.trim()
|
||||
),
|
||||
/** Override default client MTU */
|
||||
DEFAULT_MTU: process.env.WG_DEFAULT_MTU
|
||||
? Number.parseInt(process.env.WG_DEFAULT_MTU, 10)
|
||||
@@ -100,13 +100,19 @@ export const WG_GENERAL_OVERRIDE_ENV = {
|
||||
/** Override metrics password */
|
||||
METRICS_PASSWORD: process.env.WG_METRICS_PASSWORD,
|
||||
/** Override metrics Prometheus enabled status */
|
||||
METRICS_PROMETHEUS: process.env.WG_METRICS_PROMETHEUS === 'true' ? true :
|
||||
process.env.WG_METRICS_PROMETHEUS === 'false' ? false :
|
||||
undefined,
|
||||
METRICS_PROMETHEUS:
|
||||
process.env.WG_METRICS_PROMETHEUS === 'true'
|
||||
? true
|
||||
: process.env.WG_METRICS_PROMETHEUS === 'false'
|
||||
? false
|
||||
: undefined,
|
||||
/** Override metrics JSON enabled status */
|
||||
METRICS_JSON: process.env.WG_METRICS_JSON === 'true' ? true :
|
||||
process.env.WG_METRICS_JSON === 'false' ? false :
|
||||
undefined,
|
||||
METRICS_JSON:
|
||||
process.env.WG_METRICS_JSON === 'true'
|
||||
? true
|
||||
: process.env.WG_METRICS_JSON === 'false'
|
||||
? false
|
||||
: undefined,
|
||||
};
|
||||
|
||||
export const WG_HOOKS_OVERRIDE_ENV = {
|
||||
@@ -134,7 +140,13 @@ function assertEnv<T extends string>(env: T) {
|
||||
* Apply environment variable overrides to an interface object
|
||||
*/
|
||||
export function applyInterfaceOverrides<
|
||||
T extends { port: number; device: string; mtu: number; ipv4Cidr: string; ipv6Cidr: string },
|
||||
T extends {
|
||||
port: number;
|
||||
device: string;
|
||||
mtu: number;
|
||||
ipv4Cidr: string;
|
||||
ipv6Cidr: string;
|
||||
},
|
||||
>(wgInterface: T): T {
|
||||
return {
|
||||
...wgInterface,
|
||||
@@ -150,16 +162,27 @@ export function applyInterfaceOverrides<
|
||||
* Apply environment variable overrides to a user config object
|
||||
*/
|
||||
export function applyUserConfigOverrides<
|
||||
T extends { host: string; port: number; defaultDns: string[]; defaultAllowedIps: string[]; defaultMtu: number; defaultPersistentKeepalive: number },
|
||||
T extends {
|
||||
host: string;
|
||||
port: number;
|
||||
defaultDns: string[];
|
||||
defaultAllowedIps: string[];
|
||||
defaultMtu: number;
|
||||
defaultPersistentKeepalive: number;
|
||||
},
|
||||
>(userConfig: T): T {
|
||||
return {
|
||||
...userConfig,
|
||||
host: WG_CLIENT_OVERRIDE_ENV.HOST ?? userConfig.host,
|
||||
port: WG_CLIENT_OVERRIDE_ENV.CLIENT_PORT ?? userConfig.port,
|
||||
defaultDns: WG_CLIENT_OVERRIDE_ENV.DEFAULT_DNS ?? userConfig.defaultDns,
|
||||
defaultAllowedIps: WG_CLIENT_OVERRIDE_ENV.DEFAULT_ALLOWED_IPS ?? userConfig.defaultAllowedIps,
|
||||
defaultAllowedIps:
|
||||
WG_CLIENT_OVERRIDE_ENV.DEFAULT_ALLOWED_IPS ??
|
||||
userConfig.defaultAllowedIps,
|
||||
defaultMtu: WG_CLIENT_OVERRIDE_ENV.DEFAULT_MTU ?? userConfig.defaultMtu,
|
||||
defaultPersistentKeepalive: WG_CLIENT_OVERRIDE_ENV.DEFAULT_PERSISTENT_KEEPALIVE ?? userConfig.defaultPersistentKeepalive,
|
||||
defaultPersistentKeepalive:
|
||||
WG_CLIENT_OVERRIDE_ENV.DEFAULT_PERSISTENT_KEEPALIVE ??
|
||||
userConfig.defaultPersistentKeepalive,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -167,14 +190,24 @@ export function applyUserConfigOverrides<
|
||||
* Apply environment variable overrides to a general config object
|
||||
*/
|
||||
export function applyGeneralOverrides<
|
||||
T extends { sessionTimeout: number; metricsPassword: string | null; metricsPrometheus: boolean; metricsJson: boolean },
|
||||
T extends {
|
||||
sessionTimeout: number;
|
||||
metricsPassword: string | null;
|
||||
metricsPrometheus: boolean;
|
||||
metricsJson: boolean;
|
||||
},
|
||||
>(generalConfig: T): T {
|
||||
return {
|
||||
...generalConfig,
|
||||
sessionTimeout: WG_GENERAL_OVERRIDE_ENV.SESSION_TIMEOUT ?? generalConfig.sessionTimeout,
|
||||
metricsPassword: WG_GENERAL_OVERRIDE_ENV.METRICS_PASSWORD ?? generalConfig.metricsPassword,
|
||||
metricsPrometheus: WG_GENERAL_OVERRIDE_ENV.METRICS_PROMETHEUS ?? generalConfig.metricsPrometheus,
|
||||
metricsJson: WG_GENERAL_OVERRIDE_ENV.METRICS_JSON ?? generalConfig.metricsJson,
|
||||
sessionTimeout:
|
||||
WG_GENERAL_OVERRIDE_ENV.SESSION_TIMEOUT ?? generalConfig.sessionTimeout,
|
||||
metricsPassword:
|
||||
WG_GENERAL_OVERRIDE_ENV.METRICS_PASSWORD ?? generalConfig.metricsPassword,
|
||||
metricsPrometheus:
|
||||
WG_GENERAL_OVERRIDE_ENV.METRICS_PROMETHEUS ??
|
||||
generalConfig.metricsPrometheus,
|
||||
metricsJson:
|
||||
WG_GENERAL_OVERRIDE_ENV.METRICS_JSON ?? generalConfig.metricsJson,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -182,7 +215,12 @@ export function applyGeneralOverrides<
|
||||
* Apply environment variable overrides to a hooks object
|
||||
*/
|
||||
export function applyHooksOverrides<
|
||||
T extends { preUp: string; postUp: string; preDown: string; postDown: string },
|
||||
T extends {
|
||||
preUp: string;
|
||||
postUp: string;
|
||||
preDown: string;
|
||||
postDown: string;
|
||||
},
|
||||
>(hooks: T): T {
|
||||
return {
|
||||
...hooks,
|
||||
|
||||
Reference in New Issue
Block a user