From 5249f2e8e4206e3d2d5cdc822c380f554bf94821 Mon Sep 17 00:00:00 2001 From: Bernd Storath <999999bst@gmail.com> Date: Sun, 25 Aug 2024 18:21:03 +0200 Subject: [PATCH] Fix various issues fix router param fix max age unit is seconds not ms fix regressions fix missing expire date in client create dialog fix wrong type rules fix wrong api endpoint properly catch error running cron job fix type issues --- src/components/Clients/CreateDialog.vue | 18 ++++++++++++++++++ ...sOnteTimeLink.ts => [clientOneTimeLink].ts} | 0 src/server/utils/WireGuard.ts | 15 +++++++-------- src/server/utils/config.ts | 2 +- src/server/utils/types.ts | 7 +++---- src/stores/modal.ts | 4 ++-- src/utils/api.ts | 2 +- 7 files changed, 32 insertions(+), 16 deletions(-) rename src/server/api/cnf/{:clientsOnteTimeLink.ts => [clientOneTimeLink].ts} (100%) diff --git a/src/components/Clients/CreateDialog.vue b/src/components/Clients/CreateDialog.vue index 5488ee05..81affb69 100644 --- a/src/components/Clients/CreateDialog.vue +++ b/src/components/Clients/CreateDialog.vue @@ -71,6 +71,23 @@ />

+
+

+ + +

+
@@ -110,4 +127,5 @@ diff --git a/src/server/api/cnf/:clientsOnteTimeLink.ts b/src/server/api/cnf/[clientOneTimeLink].ts similarity index 100% rename from src/server/api/cnf/:clientsOnteTimeLink.ts rename to src/server/api/cnf/[clientOneTimeLink].ts diff --git a/src/server/utils/WireGuard.ts b/src/server/utils/WireGuard.ts index 82041773..144f5a1e 100644 --- a/src/server/utils/WireGuard.ts +++ b/src/server/utils/WireGuard.ts @@ -43,7 +43,6 @@ class WireGuard { } debug('Loading configuration...'); - // TODO: Better way to invalidate cache this.#configCache = null; try { const config = await fs.readFile(path.join(WG_PATH, 'wg0.json'), 'utf8'); @@ -261,7 +260,7 @@ Endpoint = ${WG_HOST}:${WG_CONFIG_PORT}`; expireDate, }: { name: string; - expireDate: string; + expireDate: string | null; }) { if (!name) { throw new Error('Missing: Name'); @@ -418,7 +417,7 @@ Endpoint = ${WG_HOST}:${WG_CONFIG_PORT}`; expireDate, }: { clientId: string; - expireDate: string; + expireDate: string | null; }) { const client = await this.getClient({ clientId }); @@ -577,13 +576,13 @@ Endpoint = ${WG_HOST}:${WG_CONFIG_PORT}`; } const inst = new WireGuard(); -inst.getConfig().catch((err) => { - console.error(err); - process.exit(1); -}); +// This also has to also start the WireGuard Server async function cronJobEveryMinute() { - await inst.cronJobEveryMinute(); + await inst.cronJobEveryMinute().catch((err) => { + debug('Running Cron Job failed.'); + console.error(err); + }); setTimeout(cronJobEveryMinute, 60 * 1000); } cronJobEveryMinute(); diff --git a/src/server/utils/config.ts b/src/server/utils/config.ts index f7b6cf2e..675af12a 100644 --- a/src/server/utils/config.ts +++ b/src/server/utils/config.ts @@ -9,7 +9,7 @@ export const PORT = process.env.PORT || '51821'; export const WEBUI_HOST = process.env.WEBUI_HOST || '0.0.0.0'; export const PASSWORD_HASH = process.env.PASSWORD_HASH; export const MAX_AGE = process.env.MAX_AGE - ? parseInt(process.env.MAX_AGE, 10) * 1000 * 60 + ? parseInt(process.env.MAX_AGE, 10) * 60 : 0; export const WG_PATH = process.env.WG_PATH || '/etc/wireguard/'; export const WG_DEVICE = process.env.WG_DEVICE || 'eth0'; diff --git a/src/server/utils/types.ts b/src/server/utils/types.ts index bb97abcc..3b19c4a2 100644 --- a/src/server/utils/types.ts +++ b/src/server/utils/types.ts @@ -30,14 +30,13 @@ const password = z .string({ message: 'Password must be a valid string' }) .pipe(safeStringRefine); -const remember = z - .boolean({ message: 'Remember must be a valid boolean' }) - .optional(); +const remember = z.boolean({ message: 'Remember must be a valid boolean' }); const expireDate = z .string({ message: 'expiredDate must be a valid string' }) .min(1, 'expiredDate must be at least 1 Character') - .pipe(safeStringRefine); + .pipe(safeStringRefine) + .nullable(); export const clientIdType = z.object( { diff --git a/src/stores/modal.ts b/src/stores/modal.ts index 99e5c3ca..c44fa7ab 100644 --- a/src/stores/modal.ts +++ b/src/stores/modal.ts @@ -5,12 +5,12 @@ export const useModalStore = defineStore('Modal', () => { const clientDelete = ref(null); const clientCreate = ref(null); const clientCreateName = ref(''); - const clientExpireDate = ref(null); + const clientExpireDate = ref(''); const qrcode = ref(null); function createClient() { const name = clientCreateName.value; - const expireDate = clientExpireDate.value; + const expireDate = clientExpireDate.value || null; if (!name) return; api diff --git a/src/utils/api.ts b/src/utils/api.ts index a3a0f133..15553875 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -93,7 +93,7 @@ class API { } async showOneTimeLink({ clientId }: { clientId: string }) { - return $fetch(`/api/wireguard/${clientId}/:clientId/generateOneTimeLink`, { + return $fetch(`/api/wireguard/client/${clientId}/generateOneTimeLink`, { method: 'post', }); }