format code

This commit is contained in:
Bernd Storath
2025-11-14 15:41:48 +01:00
parent fbf24410db
commit 993c130f65
9 changed files with 102 additions and 37 deletions
+4 -1
View File
@@ -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>
+5 -2
View File
@@ -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">
+5 -2
View File
@@ -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
+5 -2
View File
@@ -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" />
+5 -2
View File
@@ -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" />
+5 -2
View File
@@ -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 -3
View File
@@ -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: {
+9 -3
View File
@@ -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
View File
@@ -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,