From f6a32f202d3e0150e598d8b64474910c0758cb06 Mon Sep 17 00:00:00 2001 From: Bernd Storath <999999bst@gmail.com> Date: Fri, 7 Mar 2025 08:10:45 +0100 Subject: [PATCH] minor fixes --- src/app/components/Form/ArrayField.vue | 2 +- src/i18n/locales/en.json | 4 ++-- .../database/repositories/client/types.ts | 24 ++++--------------- .../database/repositories/hooks/types.ts | 10 ++++---- src/server/utils/types.ts | 4 ++++ src/server/utils/wgHelper.ts | 14 ++++++----- 6 files changed, 23 insertions(+), 35 deletions(-) diff --git a/src/app/components/Form/ArrayField.vue b/src/app/components/Form/ArrayField.vue index f3ad0785..d3676900 100644 --- a/src/app/components/Form/ArrayField.vue +++ b/src/app/components/Form/ArrayField.vue @@ -3,7 +3,7 @@
{{ emptyText || $t('form.noItems') }}
-
+
()( expiresAt: expiresAt, ipv4Address: address4, ipv6Address: address6, - preUp: preUp, - postUp: postUp, - preDown: preDown, - postDown: postDown, + preUp: HookSchema, + postUp: HookSchema, + preDown: HookSchema, + postDown: HookSchema, allowedIps: AllowedIpsSchema, serverAllowedIps: serverAllowedIps, mtu: MtuSchema, diff --git a/src/server/database/repositories/hooks/types.ts b/src/server/database/repositories/hooks/types.ts index c42a05bf..f9bba9a4 100644 --- a/src/server/database/repositories/hooks/types.ts +++ b/src/server/database/repositories/hooks/types.ts @@ -6,13 +6,11 @@ export type HooksType = InferSelectModel; export type HooksUpdateType = Omit; -const hook = z.string({ message: t('zod.hook') }).pipe(safeStringRefine); - export const HooksUpdateSchema = schemaForType()( z.object({ - preUp: hook, - postUp: hook, - preDown: hook, - postDown: hook, + preUp: HookSchema, + postUp: HookSchema, + preDown: HookSchema, + postDown: HookSchema, }) ); diff --git a/src/server/utils/types.ts b/src/server/utils/types.ts index 14157549..898cf957 100644 --- a/src/server/utils/types.ts +++ b/src/server/utils/types.ts @@ -52,6 +52,10 @@ export const FileSchema = z.object({ file: z.string({ message: t('zod.file') }), }); +export const HookSchema = z + .string({ message: t('zod.hook') }) + .pipe(safeStringRefine); + export const schemaForType = () => // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/src/server/utils/wgHelper.ts b/src/server/utils/wgHelper.ts index c2154863..5fdb8604 100644 --- a/src/server/utils/wgHelper.ts +++ b/src/server/utils/wgHelper.ts @@ -49,17 +49,19 @@ PostDown = ${iptablesTemplate(hooks.postDown, wgInterface)}`; const cidr4Block = parseCidr(wgInterface.ipv4Cidr).prefix; const cidr6Block = parseCidr(wgInterface.ipv6Cidr).prefix; + const hookLines = [ + client.preUp ? `PreUp = ${client.preUp}` : null, + client.postUp ? `PostUp = ${client.postUp}` : null, + client.preDown ? `PreDown = ${client.preDown}` : null, + client.postDown ? `PostDown = ${client.postDown}` : null, + ].filter((v) => v !== null); + return `[Interface] PrivateKey = ${client.privateKey} Address = ${client.ipv4Address}/${cidr4Block}, ${client.ipv6Address}/${cidr6Block} DNS = ${client.dns.join(', ')} MTU = ${client.mtu} -${client.preUp ? `PreUp = ${client.preUp}\n` : ''}${ - client.postUp ? `PostUp = ${client.postUp}\n` : '' - }${client.preDown ? `PreDown = ${client.preDown}\n` : ''}${ - client.postDown ? `PostDown = ${client.postDown}\n` : '' - } - +${hookLines.length ? `${hookLines.join('\n')}\n` : ''} [Peer] PublicKey = ${wgInterface.publicKey} PresharedKey = ${client.preSharedKey}