From 6ca6b18db136921380f470db9ef8bfabe1089dce Mon Sep 17 00:00:00 2001 From: Bernd Storath <999999bst@gmail.com> Date: Mon, 5 Aug 2024 19:18:06 +0200 Subject: [PATCH] split files into correct methods --- package.json | 4 +- src/package.json | 4 +- src/server/api/{lang.ts => lang.get.ts} | 1 - src/server/api/{release.ts => release.get.ts} | 1 - src/server/api/session.delete.ts | 9 ++++ src/server/api/session.get.ts | 11 +++++ src/server/api/session.post.ts | 28 +++++++++++ src/server/api/session.ts | 48 ------------------- ...{ui-chart-type.ts => ui-chart-type.get.ts} | 1 - ...affic-stats.ts => ui-traffic-stats.get.ts} | 1 - .../wireguard/{backup.ts => backup.get.ts} | 1 - .../[clientId]/{address.ts => address.put.ts} | 1 - ...{configuration.ts => configuration.get.ts} | 1 - .../{disable.ts => disable.post.ts} | 1 - .../[clientId]/{enable.ts => enable.post.ts} | 1 - .../[clientId]/{index.ts => index.delete.ts} | 1 - .../[clientId]/{name.ts => name.put.ts} | 1 - .../{qrcode.svg.ts => qrcode.svg.get.ts} | 1 - src/server/api/wireguard/client/index.get.ts | 3 ++ src/server/api/wireguard/client/index.post.ts | 5 ++ src/server/api/wireguard/client/index.ts | 9 ---- .../wireguard/{restore.ts => restore.put.ts} | 1 - 22 files changed, 60 insertions(+), 74 deletions(-) rename src/server/api/{lang.ts => lang.get.ts} (81%) rename src/server/api/{release.ts => release.get.ts} (80%) create mode 100644 src/server/api/session.delete.ts create mode 100644 src/server/api/session.get.ts create mode 100644 src/server/api/session.post.ts delete mode 100644 src/server/api/session.ts rename src/server/api/{ui-chart-type.ts => ui-chart-type.get.ts} (82%) rename src/server/api/{ui-traffic-stats.ts => ui-traffic-stats.get.ts} (82%) rename src/server/api/wireguard/{backup.ts => backup.get.ts} (89%) rename src/server/api/wireguard/client/[clientId]/{address.ts => address.put.ts} (92%) rename src/server/api/wireguard/client/[clientId]/{configuration.ts => configuration.get.ts} (95%) rename src/server/api/wireguard/client/[clientId]/{disable.ts => disable.post.ts} (91%) rename src/server/api/wireguard/client/[clientId]/{enable.ts => enable.post.ts} (91%) rename src/server/api/wireguard/client/[clientId]/{index.ts => index.delete.ts} (84%) rename src/server/api/wireguard/client/[clientId]/{name.ts => name.put.ts} (92%) rename src/server/api/wireguard/client/[clientId]/{qrcode.svg.ts => qrcode.svg.get.ts} (88%) create mode 100644 src/server/api/wireguard/client/index.get.ts create mode 100644 src/server/api/wireguard/client/index.post.ts delete mode 100644 src/server/api/wireguard/client/index.ts rename src/server/api/wireguard/{restore.ts => restore.put.ts} (85%) diff --git a/package.json b/package.json index 3668e0c3..610df079 100644 --- a/package.json +++ b/package.json @@ -7,5 +7,5 @@ "sudostart": "sudo docker run --env WG_HOST=0.0.0.0 --name wg-easy --cap-add=NET_ADMIN --cap-add=SYS_MODULE --sysctl=\"net.ipv4.conf.all.src_valid_mark=1\" --mount type=bind,source=\"$(pwd)\"/config,target=/etc/wireguard -p 51820:51820/udp -p 51821:51821/tcp wg-easy", "start": "docker run --env WG_HOST=0.0.0.0 --name wg-easy --cap-add=NET_ADMIN --cap-add=SYS_MODULE --sysctl=\"net.ipv4.conf.all.src_valid_mark=1\" --mount type=bind,source=\"$(pwd)\"/config,target=/etc/wireguard -p 51820:51820/udp -p 51821:51821/tcp wg-easy" }, - "packageManager": "pnpm@8.6.0" -} + "packageManager": "pnpm@9.6.0" +} \ No newline at end of file diff --git a/src/package.json b/src/package.json index dc4baf6a..5ff51bc3 100644 --- a/src/package.json +++ b/src/package.json @@ -41,5 +41,5 @@ "typescript": "^5.5.4", "vue-tsc": "^2.0.29" }, - "packageManager": "pnpm@8.6.0" -} + "packageManager": "pnpm@9.6.0" +} \ No newline at end of file diff --git a/src/server/api/lang.ts b/src/server/api/lang.get.ts similarity index 81% rename from src/server/api/lang.ts rename to src/server/api/lang.get.ts index 19cca6ae..154d05c5 100644 --- a/src/server/api/lang.ts +++ b/src/server/api/lang.get.ts @@ -1,5 +1,4 @@ export default defineEventHandler((event) => { - assertMethod(event, 'GET'); setHeader(event, 'Content-Type', 'application/json'); return `"${LANG}"`; }); diff --git a/src/server/api/release.ts b/src/server/api/release.get.ts similarity index 80% rename from src/server/api/release.ts rename to src/server/api/release.get.ts index 82d19389..a3418ba7 100644 --- a/src/server/api/release.ts +++ b/src/server/api/release.get.ts @@ -1,5 +1,4 @@ export default defineEventHandler((event) => { - assertMethod(event, 'GET'); setHeader(event, 'Content-Type', 'application/json'); return RELEASE; }); diff --git a/src/server/api/session.delete.ts b/src/server/api/session.delete.ts new file mode 100644 index 00000000..d94c2b39 --- /dev/null +++ b/src/server/api/session.delete.ts @@ -0,0 +1,9 @@ +export default defineEventHandler(async (event) => { + const session = await useSession(event, SESSION_CONFIG); + const sessionId = session.id; + + await session.clear(); + + SERVER_DEBUG(`Deleted Session: ${sessionId}`); + return { success: true }; +}); diff --git a/src/server/api/session.get.ts b/src/server/api/session.get.ts new file mode 100644 index 00000000..56a95152 --- /dev/null +++ b/src/server/api/session.get.ts @@ -0,0 +1,11 @@ +export default defineEventHandler(async (event) => { + const session = await useSession(event, SESSION_CONFIG); + const authenticated = REQUIRES_PASSWORD + ? !!(session.data && session.data.authenticated) + : true; + + return { + requiresPassword: REQUIRES_PASSWORD, + authenticated, + }; +}); diff --git a/src/server/api/session.post.ts b/src/server/api/session.post.ts new file mode 100644 index 00000000..09886294 --- /dev/null +++ b/src/server/api/session.post.ts @@ -0,0 +1,28 @@ +export default defineEventHandler(async (event) => { + const session = await useSession(event, SESSION_CONFIG); + const { password } = await readBody(event); + + if (!REQUIRES_PASSWORD) { + // if no password is required, the API should never be called. + // Do not automatically authenticate the user. + throw createError({ + status: 401, + message: 'Invalid state', + }); + } + + if (!isPasswordValid(password)) { + throw createError({ + status: 401, + message: 'Incorrect Password', + }); + } + + const data = await session.update({ + authenticated: true, + }); + + SERVER_DEBUG(`New Session: ${data.id}`); + + return { success: true }; +}); diff --git a/src/server/api/session.ts b/src/server/api/session.ts deleted file mode 100644 index c9ab2585..00000000 --- a/src/server/api/session.ts +++ /dev/null @@ -1,48 +0,0 @@ -export default defineEventHandler(async (event) => { - if (isMethod(event, 'GET')) { - const session = await useSession(event, SESSION_CONFIG); - const authenticated = REQUIRES_PASSWORD - ? !!(session.data && session.data.authenticated) - : true; - - return { - requiresPassword: REQUIRES_PASSWORD, - authenticated, - }; - } else if (isMethod(event, 'POST')) { - const session = await useSession(event, SESSION_CONFIG); - const { password } = await readBody(event); - - if (!REQUIRES_PASSWORD) { - // if no password is required, the API should never be called. - // Do not automatically authenticate the user. - throw createError({ - status: 401, - message: 'Invalid state', - }); - } - - if (!isPasswordValid(password)) { - throw createError({ - status: 401, - message: 'Incorrect Password', - }); - } - - const data = await session.update({ - authenticated: true, - }); - - SERVER_DEBUG(`New Session: ${data.id}`); - - return { success: true }; - } else if (isMethod(event, 'DELETE')) { - const session = await useSession(event, SESSION_CONFIG); - const sessionId = session.id; - - await session.clear(); - - SERVER_DEBUG(`Deleted Session: ${sessionId}`); - return { success: true }; - } -}); diff --git a/src/server/api/ui-chart-type.ts b/src/server/api/ui-chart-type.get.ts similarity index 82% rename from src/server/api/ui-chart-type.ts rename to src/server/api/ui-chart-type.get.ts index 98c61a14..aa831c9f 100644 --- a/src/server/api/ui-chart-type.ts +++ b/src/server/api/ui-chart-type.get.ts @@ -1,5 +1,4 @@ export default defineEventHandler((event) => { - assertMethod(event, 'GET'); setHeader(event, 'Content-Type', 'application/json'); return `"${UI_CHART_TYPE}"`; }); diff --git a/src/server/api/ui-traffic-stats.ts b/src/server/api/ui-traffic-stats.get.ts similarity index 82% rename from src/server/api/ui-traffic-stats.ts rename to src/server/api/ui-traffic-stats.get.ts index 33ddbd19..00faee3b 100644 --- a/src/server/api/ui-traffic-stats.ts +++ b/src/server/api/ui-traffic-stats.get.ts @@ -1,5 +1,4 @@ export default defineEventHandler((event) => { - assertMethod(event, 'GET'); setHeader(event, 'Content-Type', 'application/json'); return `"${UI_TRAFFIC_STATS}"`; }); diff --git a/src/server/api/wireguard/backup.ts b/src/server/api/wireguard/backup.get.ts similarity index 89% rename from src/server/api/wireguard/backup.ts rename to src/server/api/wireguard/backup.get.ts index c0faa955..97d21ae8 100644 --- a/src/server/api/wireguard/backup.ts +++ b/src/server/api/wireguard/backup.get.ts @@ -1,5 +1,4 @@ export default defineEventHandler(async (event) => { - assertMethod(event, 'GET'); const config = await WireGuard.backupConfiguration(); setHeader(event, 'Content-Disposition', 'attachment; filename="wg0.json"'); setHeader(event, 'Content-Type', 'text/json'); diff --git a/src/server/api/wireguard/client/[clientId]/address.ts b/src/server/api/wireguard/client/[clientId]/address.put.ts similarity index 92% rename from src/server/api/wireguard/client/[clientId]/address.ts rename to src/server/api/wireguard/client/[clientId]/address.put.ts index d7916f23..6633a83f 100644 --- a/src/server/api/wireguard/client/[clientId]/address.ts +++ b/src/server/api/wireguard/client/[clientId]/address.put.ts @@ -1,5 +1,4 @@ export default defineEventHandler(async (event) => { - assertMethod(event, 'PUT'); const clientId = getRouterParam(event, 'clientId'); if ( clientId === '__proto__' || diff --git a/src/server/api/wireguard/client/[clientId]/configuration.ts b/src/server/api/wireguard/client/[clientId]/configuration.get.ts similarity index 95% rename from src/server/api/wireguard/client/[clientId]/configuration.ts rename to src/server/api/wireguard/client/[clientId]/configuration.get.ts index 9d397741..78fd04db 100644 --- a/src/server/api/wireguard/client/[clientId]/configuration.ts +++ b/src/server/api/wireguard/client/[clientId]/configuration.get.ts @@ -1,5 +1,4 @@ export default defineEventHandler(async (event) => { - assertMethod(event, 'GET'); const clientId = getRouterParam(event, 'clientId'); const client = await WireGuard.getClient({ clientId }); const config = await WireGuard.getClientConfiguration({ clientId }); diff --git a/src/server/api/wireguard/client/[clientId]/disable.ts b/src/server/api/wireguard/client/[clientId]/disable.post.ts similarity index 91% rename from src/server/api/wireguard/client/[clientId]/disable.ts rename to src/server/api/wireguard/client/[clientId]/disable.post.ts index 2ae74b02..3f22d2c9 100644 --- a/src/server/api/wireguard/client/[clientId]/disable.ts +++ b/src/server/api/wireguard/client/[clientId]/disable.post.ts @@ -1,5 +1,4 @@ export default defineEventHandler(async (event) => { - assertMethod(event, 'POST'); const clientId = getRouterParam(event, 'clientId'); if ( clientId === '__proto__' || diff --git a/src/server/api/wireguard/client/[clientId]/enable.ts b/src/server/api/wireguard/client/[clientId]/enable.post.ts similarity index 91% rename from src/server/api/wireguard/client/[clientId]/enable.ts rename to src/server/api/wireguard/client/[clientId]/enable.post.ts index 475b2f40..4f030fe3 100644 --- a/src/server/api/wireguard/client/[clientId]/enable.ts +++ b/src/server/api/wireguard/client/[clientId]/enable.post.ts @@ -1,5 +1,4 @@ export default defineEventHandler(async (event) => { - assertMethod(event, 'POST'); const clientId = getRouterParam(event, 'clientId'); if ( clientId === '__proto__' || diff --git a/src/server/api/wireguard/client/[clientId]/index.ts b/src/server/api/wireguard/client/[clientId]/index.delete.ts similarity index 84% rename from src/server/api/wireguard/client/[clientId]/index.ts rename to src/server/api/wireguard/client/[clientId]/index.delete.ts index 2a48b5c9..60f45785 100644 --- a/src/server/api/wireguard/client/[clientId]/index.ts +++ b/src/server/api/wireguard/client/[clientId]/index.delete.ts @@ -1,5 +1,4 @@ export default defineEventHandler(async (event) => { - assertMethod(event, 'DELETE'); const clientId = getRouterParam(event, 'clientId'); await WireGuard.deleteClient({ clientId }); return { success: true }; diff --git a/src/server/api/wireguard/client/[clientId]/name.ts b/src/server/api/wireguard/client/[clientId]/name.put.ts similarity index 92% rename from src/server/api/wireguard/client/[clientId]/name.ts rename to src/server/api/wireguard/client/[clientId]/name.put.ts index 0ac0e7e0..0e5e6e59 100644 --- a/src/server/api/wireguard/client/[clientId]/name.ts +++ b/src/server/api/wireguard/client/[clientId]/name.put.ts @@ -1,5 +1,4 @@ export default defineEventHandler(async (event) => { - assertMethod(event, 'PUT'); const clientId = getRouterParam(event, 'clientId'); if ( clientId === '__proto__' || diff --git a/src/server/api/wireguard/client/[clientId]/qrcode.svg.ts b/src/server/api/wireguard/client/[clientId]/qrcode.svg.get.ts similarity index 88% rename from src/server/api/wireguard/client/[clientId]/qrcode.svg.ts rename to src/server/api/wireguard/client/[clientId]/qrcode.svg.get.ts index 33c119b8..ca1b2601 100644 --- a/src/server/api/wireguard/client/[clientId]/qrcode.svg.ts +++ b/src/server/api/wireguard/client/[clientId]/qrcode.svg.get.ts @@ -1,5 +1,4 @@ export default defineEventHandler(async (event) => { - assertMethod(event, 'GET'); const clientId = getRouterParam(event, 'clientId'); const svg = await WireGuard.getClientQRCodeSVG({ clientId }); setHeader(event, 'Content-Type', 'image/svg+xml'); diff --git a/src/server/api/wireguard/client/index.get.ts b/src/server/api/wireguard/client/index.get.ts new file mode 100644 index 00000000..adffc9b3 --- /dev/null +++ b/src/server/api/wireguard/client/index.get.ts @@ -0,0 +1,3 @@ +export default defineEventHandler(() => { + return WireGuard.getClients(); +}); diff --git a/src/server/api/wireguard/client/index.post.ts b/src/server/api/wireguard/client/index.post.ts new file mode 100644 index 00000000..83d5439c --- /dev/null +++ b/src/server/api/wireguard/client/index.post.ts @@ -0,0 +1,5 @@ +export default defineEventHandler(async (event) => { + const { name } = await readBody(event); + await WireGuard.createClient({ name }); + return { success: true }; +}); diff --git a/src/server/api/wireguard/client/index.ts b/src/server/api/wireguard/client/index.ts deleted file mode 100644 index d2b819ce..00000000 --- a/src/server/api/wireguard/client/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export default defineEventHandler(async (event) => { - if (isMethod(event, 'GET')) { - return WireGuard.getClients(); - } else if (isMethod(event, 'POST')) { - const { name } = await readBody(event); - await WireGuard.createClient({ name }); - return { success: true }; - } -}); diff --git a/src/server/api/wireguard/restore.ts b/src/server/api/wireguard/restore.put.ts similarity index 85% rename from src/server/api/wireguard/restore.ts rename to src/server/api/wireguard/restore.put.ts index 5a13515b..709c1ece 100644 --- a/src/server/api/wireguard/restore.ts +++ b/src/server/api/wireguard/restore.put.ts @@ -1,5 +1,4 @@ export default defineEventHandler(async (event) => { - assertMethod(event, 'PUT'); const { file } = await readBody(event); await WireGuard.restoreConfiguration(file); return { success: true };