format code
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="flex flex-col gap-2">
|
<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" />
|
<IconsWarning class="size-4" />
|
||||||
<span>This field is overridden by an environment variable</span>
|
<span>This field is overridden by an environment variable</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,8 +6,11 @@
|
|||||||
<BaseTooltip v-if="description" :text="description">
|
<BaseTooltip v-if="description" :text="description">
|
||||||
<IconsInfo class="size-4" />
|
<IconsInfo class="size-4" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
<BaseTooltip
|
||||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
v-if="overridden"
|
||||||
|
text="This field is overridden by an environment variable"
|
||||||
|
>
|
||||||
|
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex gap-1">
|
<div class="flex gap-1">
|
||||||
|
|||||||
@@ -6,8 +6,11 @@
|
|||||||
<BaseTooltip v-if="description" :text="description">
|
<BaseTooltip v-if="description" :text="description">
|
||||||
<IconsInfo class="size-4" />
|
<IconsInfo class="size-4" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
<BaseTooltip
|
||||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
v-if="overridden"
|
||||||
|
text="This field is overridden by an environment variable"
|
||||||
|
>
|
||||||
|
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
</div>
|
</div>
|
||||||
<BaseInput
|
<BaseInput
|
||||||
|
|||||||
@@ -6,8 +6,11 @@
|
|||||||
<BaseTooltip v-if="description" :text="description">
|
<BaseTooltip v-if="description" :text="description">
|
||||||
<IconsInfo class="size-4" />
|
<IconsInfo class="size-4" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
<BaseTooltip
|
||||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
v-if="overridden"
|
||||||
|
text="This field is overridden by an environment variable"
|
||||||
|
>
|
||||||
|
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
</div>
|
</div>
|
||||||
<BaseInput :id="id" v-model.number="data" :name="id" type="number" />
|
<BaseInput :id="id" v-model.number="data" :name="id" type="number" />
|
||||||
|
|||||||
@@ -6,8 +6,11 @@
|
|||||||
<BaseTooltip v-if="description" :text="description">
|
<BaseTooltip v-if="description" :text="description">
|
||||||
<IconsInfo class="size-4" />
|
<IconsInfo class="size-4" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
<BaseTooltip
|
||||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
v-if="overridden"
|
||||||
|
text="This field is overridden by an environment variable"
|
||||||
|
>
|
||||||
|
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
</div>
|
</div>
|
||||||
<BaseSwitch :id="id" v-model="data" />
|
<BaseSwitch :id="id" v-model="data" />
|
||||||
|
|||||||
@@ -6,8 +6,11 @@
|
|||||||
<BaseTooltip v-if="description" :text="description">
|
<BaseTooltip v-if="description" :text="description">
|
||||||
<IconsInfo class="size-4" />
|
<IconsInfo class="size-4" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
<BaseTooltip v-if="overridden" text="This field is overridden by an environment variable">
|
<BaseTooltip
|
||||||
<IconsWarning class="size-4 ml-1 text-amber-500" />
|
v-if="overridden"
|
||||||
|
text="This field is overridden by an environment variable"
|
||||||
|
>
|
||||||
|
<IconsWarning class="ml-1 size-4 text-amber-500" />
|
||||||
</BaseTooltip>
|
</BaseTooltip>
|
||||||
</div>
|
</div>
|
||||||
<BaseInput
|
<BaseInput
|
||||||
|
|||||||
@@ -11,14 +11,17 @@ export default definePermissionEventHandler('admin', 'any', async () => {
|
|||||||
host: WG_CLIENT_OVERRIDE_ENV.HOST !== undefined,
|
host: WG_CLIENT_OVERRIDE_ENV.HOST !== undefined,
|
||||||
port: WG_CLIENT_OVERRIDE_ENV.CLIENT_PORT !== undefined,
|
port: WG_CLIENT_OVERRIDE_ENV.CLIENT_PORT !== undefined,
|
||||||
defaultDns: WG_CLIENT_OVERRIDE_ENV.DEFAULT_DNS !== 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,
|
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: {
|
general: {
|
||||||
sessionTimeout: WG_GENERAL_OVERRIDE_ENV.SESSION_TIMEOUT !== undefined,
|
sessionTimeout: WG_GENERAL_OVERRIDE_ENV.SESSION_TIMEOUT !== undefined,
|
||||||
metricsPassword: WG_GENERAL_OVERRIDE_ENV.METRICS_PASSWORD !== 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,
|
metricsJson: WG_GENERAL_OVERRIDE_ENV.METRICS_JSON !== undefined,
|
||||||
},
|
},
|
||||||
hooks: {
|
hooks: {
|
||||||
|
|||||||
@@ -228,14 +228,18 @@ class WireGuard {
|
|||||||
|
|
||||||
const wgInterfaceWithOverrides = applyInterfaceOverrides(wgInterface);
|
const wgInterfaceWithOverrides = applyInterfaceOverrides(wgInterface);
|
||||||
|
|
||||||
WG_DEBUG(`Starting Wireguard Interface ${wgInterfaceWithOverrides.name}...`);
|
WG_DEBUG(
|
||||||
|
`Starting Wireguard Interface ${wgInterfaceWithOverrides.name}...`
|
||||||
|
);
|
||||||
await this.#saveWireguardConfig(wgInterfaceWithOverrides);
|
await this.#saveWireguardConfig(wgInterfaceWithOverrides);
|
||||||
await wg.down(wgInterfaceWithOverrides.name).catch(() => {});
|
await wg.down(wgInterfaceWithOverrides.name).catch(() => {});
|
||||||
await wg.up(wgInterfaceWithOverrides.name).catch((err) => {
|
await wg.up(wgInterfaceWithOverrides.name).catch((err) => {
|
||||||
if (
|
if (
|
||||||
err &&
|
err &&
|
||||||
err.message &&
|
err.message &&
|
||||||
err.message.includes(`Cannot find device "${wgInterfaceWithOverrides.name}"`)
|
err.message.includes(
|
||||||
|
`Cannot find device "${wgInterfaceWithOverrides.name}"`
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
throw new Error(
|
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!`,
|
`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;
|
throw err;
|
||||||
});
|
});
|
||||||
await this.#syncWireguardConfig(wgInterfaceWithOverrides);
|
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...');
|
WG_DEBUG('Starting Cron Job...');
|
||||||
await this.startCronJob();
|
await this.startCronJob();
|
||||||
|
|||||||
+58
-20
@@ -62,9 +62,7 @@ export const WG_OVERRIDE_ENV = {
|
|||||||
/** Override the network device/interface */
|
/** Override the network device/interface */
|
||||||
DEVICE: process.env.WG_DEVICE,
|
DEVICE: process.env.WG_DEVICE,
|
||||||
/** Override the MTU setting */
|
/** Override the MTU setting */
|
||||||
MTU: process.env.WG_MTU
|
MTU: process.env.WG_MTU ? Number.parseInt(process.env.WG_MTU, 10) : undefined,
|
||||||
? Number.parseInt(process.env.WG_MTU, 10)
|
|
||||||
: undefined,
|
|
||||||
/** Override the IPv4 CIDR */
|
/** Override the IPv4 CIDR */
|
||||||
IPV4_CIDR: process.env.WG_IPV4_CIDR,
|
IPV4_CIDR: process.env.WG_IPV4_CIDR,
|
||||||
/** Override the IPv6 CIDR */
|
/** Override the IPv6 CIDR */
|
||||||
@@ -81,7 +79,9 @@ export const WG_CLIENT_OVERRIDE_ENV = {
|
|||||||
/** Override default client DNS servers */
|
/** Override default client DNS servers */
|
||||||
DEFAULT_DNS: process.env.WG_DEFAULT_DNS?.split(',').map((x) => x.trim()),
|
DEFAULT_DNS: process.env.WG_DEFAULT_DNS?.split(',').map((x) => x.trim()),
|
||||||
/** Override default client allowed IPs */
|
/** 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 */
|
/** Override default client MTU */
|
||||||
DEFAULT_MTU: process.env.WG_DEFAULT_MTU
|
DEFAULT_MTU: process.env.WG_DEFAULT_MTU
|
||||||
? Number.parseInt(process.env.WG_DEFAULT_MTU, 10)
|
? Number.parseInt(process.env.WG_DEFAULT_MTU, 10)
|
||||||
@@ -100,13 +100,19 @@ export const WG_GENERAL_OVERRIDE_ENV = {
|
|||||||
/** Override metrics password */
|
/** Override metrics password */
|
||||||
METRICS_PASSWORD: process.env.WG_METRICS_PASSWORD,
|
METRICS_PASSWORD: process.env.WG_METRICS_PASSWORD,
|
||||||
/** Override metrics Prometheus enabled status */
|
/** Override metrics Prometheus enabled status */
|
||||||
METRICS_PROMETHEUS: process.env.WG_METRICS_PROMETHEUS === 'true' ? true :
|
METRICS_PROMETHEUS:
|
||||||
process.env.WG_METRICS_PROMETHEUS === 'false' ? false :
|
process.env.WG_METRICS_PROMETHEUS === 'true'
|
||||||
undefined,
|
? true
|
||||||
|
: process.env.WG_METRICS_PROMETHEUS === 'false'
|
||||||
|
? false
|
||||||
|
: undefined,
|
||||||
/** Override metrics JSON enabled status */
|
/** Override metrics JSON enabled status */
|
||||||
METRICS_JSON: process.env.WG_METRICS_JSON === 'true' ? true :
|
METRICS_JSON:
|
||||||
process.env.WG_METRICS_JSON === 'false' ? false :
|
process.env.WG_METRICS_JSON === 'true'
|
||||||
undefined,
|
? true
|
||||||
|
: process.env.WG_METRICS_JSON === 'false'
|
||||||
|
? false
|
||||||
|
: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const WG_HOOKS_OVERRIDE_ENV = {
|
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
|
* Apply environment variable overrides to an interface object
|
||||||
*/
|
*/
|
||||||
export function applyInterfaceOverrides<
|
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 {
|
>(wgInterface: T): T {
|
||||||
return {
|
return {
|
||||||
...wgInterface,
|
...wgInterface,
|
||||||
@@ -150,16 +162,27 @@ export function applyInterfaceOverrides<
|
|||||||
* Apply environment variable overrides to a user config object
|
* Apply environment variable overrides to a user config object
|
||||||
*/
|
*/
|
||||||
export function applyUserConfigOverrides<
|
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 {
|
>(userConfig: T): T {
|
||||||
return {
|
return {
|
||||||
...userConfig,
|
...userConfig,
|
||||||
host: WG_CLIENT_OVERRIDE_ENV.HOST ?? userConfig.host,
|
host: WG_CLIENT_OVERRIDE_ENV.HOST ?? userConfig.host,
|
||||||
port: WG_CLIENT_OVERRIDE_ENV.CLIENT_PORT ?? userConfig.port,
|
port: WG_CLIENT_OVERRIDE_ENV.CLIENT_PORT ?? userConfig.port,
|
||||||
defaultDns: WG_CLIENT_OVERRIDE_ENV.DEFAULT_DNS ?? userConfig.defaultDns,
|
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,
|
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
|
* Apply environment variable overrides to a general config object
|
||||||
*/
|
*/
|
||||||
export function applyGeneralOverrides<
|
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 {
|
>(generalConfig: T): T {
|
||||||
return {
|
return {
|
||||||
...generalConfig,
|
...generalConfig,
|
||||||
sessionTimeout: WG_GENERAL_OVERRIDE_ENV.SESSION_TIMEOUT ?? generalConfig.sessionTimeout,
|
sessionTimeout:
|
||||||
metricsPassword: WG_GENERAL_OVERRIDE_ENV.METRICS_PASSWORD ?? generalConfig.metricsPassword,
|
WG_GENERAL_OVERRIDE_ENV.SESSION_TIMEOUT ?? generalConfig.sessionTimeout,
|
||||||
metricsPrometheus: WG_GENERAL_OVERRIDE_ENV.METRICS_PROMETHEUS ?? generalConfig.metricsPrometheus,
|
metricsPassword:
|
||||||
metricsJson: WG_GENERAL_OVERRIDE_ENV.METRICS_JSON ?? generalConfig.metricsJson,
|
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
|
* Apply environment variable overrides to a hooks object
|
||||||
*/
|
*/
|
||||||
export function applyHooksOverrides<
|
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 {
|
>(hooks: T): T {
|
||||||
return {
|
return {
|
||||||
...hooks,
|
...hooks,
|
||||||
|
|||||||
Reference in New Issue
Block a user