From 47bc8ba96684354ff808056bdf97ebd55be7bdd5 Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 12 Mar 2026 08:37:53 +0100 Subject: [PATCH] fix : securite middle et execfile --- components/BackupList.vue | 10 +++++++--- components/BackupRun.vue | 9 +++++++-- components/MessageDiscord.vue | 6 +++++- components/Speedtest.vue | 8 ++++++-- components/StatusSite.vue | 6 +++++- nuxt.config.ts | 2 ++ pages/backup.vue | 30 +++++++++++++----------------- pages/index.vue | 6 +++++- server/api/backup-script.post.ts | 9 +++++---- server/api/disk.get.ts | 9 +++++---- server/config/backup-script.json | 20 ++++++++++++++++---- server/config/disk-commands.json | 13 ++++++++++--- server/middleware/auth.ts | 30 ++++++++++++++++++++++++++++++ 13 files changed, 116 insertions(+), 42 deletions(-) create mode 100644 server/middleware/auth.ts diff --git a/components/BackupList.vue b/components/BackupList.vue index 9dcad3b..1aa8a38 100644 --- a/components/BackupList.vue +++ b/components/BackupList.vue @@ -55,6 +55,7 @@ import {Icon as IconifyIcon} from "@iconify/vue" import CircleSkeleton from "~/components/skeleton/CircleSkeleton.vue" import TextSkeleton from "~/components/skeleton/TextSkeleton.vue" +import { downloadApiFile, useApiAuthHeader } from "~/composables/useApiAuth" const props = defineProps<{ folder: string | null @@ -62,15 +63,16 @@ const props = defineProps<{ const backups = ref([]) const loading = ref(false) +const apiAuthHeader = useApiAuthHeader() const title = computed(() => { if (!props.folder) return "Fichiers" return `Backup — ${props.folder.toUpperCase()}` }) -const downloadBackup = (file: string) => { +const downloadBackup = async (file: string) => { if (!props.folder) return const url = `/api/download?folder=${encodeURIComponent(props.folder)}&file=${encodeURIComponent(file)}` - window.location.href = url + await downloadApiFile(url, file) } watch(() => props.folder, async (folder) => { @@ -82,7 +84,9 @@ watch(() => props.folder, async (folder) => { loading.value = true try { - const data = await $fetch(`/api/backups?folder=${encodeURIComponent(folder)}`) + const data = await $fetch(`/api/backups?folder=${encodeURIComponent(folder)}`, { + headers: apiAuthHeader + }) backups.value = data } catch (error) { console.error("Erreur récupération backups:", error) diff --git a/components/BackupRun.vue b/components/BackupRun.vue index cae972c..36b9db2 100644 --- a/components/BackupRun.vue +++ b/components/BackupRun.vue @@ -79,6 +79,7 @@