feat : new ui et message discord
This commit is contained in:
@@ -1,17 +1,12 @@
|
||||
import { execFile } from "node:child_process"
|
||||
import folderMap from "../config/backup-folders.json"
|
||||
|
||||
const REMOTE_HOST = process.env.BACKUPS_REMOTE_HOST || "malio-b@192.168.0.179"
|
||||
const REMOTE_ROOT = process.env.BACKUPS_REMOTE_ROOT || "/home/malio-b/backups"
|
||||
const MAX_FILES_PER_FOLDER = Number(process.env.BACKUPS_MAX_FILES || "200")
|
||||
const isSafeFolder = (value: string) => /^[a-zA-Z0-9._-]+$/.test(value)
|
||||
const shellQuote = (value: string) => `'${value.replace(/'/g, `'\\''`)}'`
|
||||
const FOLDER_MAP: Record<string, string> = {
|
||||
ferme: "bdd_recette/ferme",
|
||||
inventory: "bdd_recette/inventory",
|
||||
sirh: "bdd_recette/sirh",
|
||||
user: "bdd_recette/user",
|
||||
bitwarden: "bitwarden"
|
||||
}
|
||||
const FOLDER_MAP = folderMap as Record<string, string>
|
||||
|
||||
function runSsh(command: string): Promise<string> {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
import { exec } from "child_process"
|
||||
import diskSources from "../config/disk-commands.json"
|
||||
|
||||
const remoteCommand =
|
||||
process.env.DISK_REMOTE_COMMAND ||
|
||||
"ssh malio-b@192.168.0.179 'cd /home/malio-b/Scripts-Serveur && bash check_storage.sh && exit'"
|
||||
type DiskSource = {
|
||||
key: string
|
||||
label: string
|
||||
command: string
|
||||
}
|
||||
|
||||
const localCommand =
|
||||
process.env.DISK_LOCAL_COMMAND ||
|
||||
"bash /home/kevin/check_storage.sh"
|
||||
function getCommand(source: DiskSource) {
|
||||
const envKey = `DISK_COMMAND_${source.key.toUpperCase()}`
|
||||
const legacyEnvKey =
|
||||
source.key === "remote" ? "DISK_REMOTE_COMMAND" : source.key === "local" ? "DISK_LOCAL_COMMAND" : ""
|
||||
|
||||
return process.env[envKey] || (legacyEnvKey ? process.env[legacyEnvKey] : undefined) || source.command
|
||||
}
|
||||
|
||||
function runCommand(command: string): Promise<string> {
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -21,25 +28,26 @@ function runCommand(command: string): Promise<string> {
|
||||
}
|
||||
|
||||
export default defineEventHandler(async () => {
|
||||
const [remoteResult, localResult] = await Promise.allSettled([
|
||||
runCommand(remoteCommand),
|
||||
runCommand(localCommand)
|
||||
])
|
||||
const results = await Promise.all(
|
||||
(diskSources as DiskSource[]).map(async (source) => {
|
||||
try {
|
||||
const output = await runCommand(getCommand(source))
|
||||
return {
|
||||
key: source.key,
|
||||
label: source.label,
|
||||
ok: true,
|
||||
output
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
key: source.key,
|
||||
label: source.label,
|
||||
ok: false,
|
||||
output: `Erreur: ${String(error)}`
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
return {
|
||||
remote: {
|
||||
ok: remoteResult.status === "fulfilled",
|
||||
output:
|
||||
remoteResult.status === "fulfilled"
|
||||
? remoteResult.value
|
||||
: `Erreur: ${String(remoteResult.reason)}`
|
||||
},
|
||||
local: {
|
||||
ok: localResult.status === "fulfilled",
|
||||
output:
|
||||
localResult.status === "fulfilled"
|
||||
? localResult.value
|
||||
: `Erreur: ${String(localResult.reason)}`
|
||||
}
|
||||
}
|
||||
return { results }
|
||||
})
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
import { execFile, spawn } from "node:child_process"
|
||||
import { Readable } from "node:stream"
|
||||
import folderMap from "../config/backup-folders.json"
|
||||
|
||||
const REMOTE_HOST = process.env.BACKUPS_REMOTE_HOST || "malio-b@192.168.0.179"
|
||||
const REMOTE_ROOT = process.env.BACKUPS_REMOTE_ROOT || "/home/malio-b/backups"
|
||||
const FOLDER_MAP: Record<string, string> = {
|
||||
ferme: "bdd_recette/ferme",
|
||||
inventory: "bdd_recette/inventory",
|
||||
sirh: "bdd_recette/sirh",
|
||||
user: "bdd_recette/user",
|
||||
bitwarden: "bitwarden"
|
||||
}
|
||||
const FOLDER_MAP = folderMap as Record<string, string>
|
||||
|
||||
const isSafeFolder = (value: string) => /^[a-zA-Z0-9._-]+$/.test(value)
|
||||
const isSafeFile = (value: string) => /^[^/\\]+$/.test(value)
|
||||
@@ -20,7 +15,7 @@ function runSsh(command: string): Promise<string> {
|
||||
execFile(
|
||||
"ssh",
|
||||
["-o", "BatchMode=yes", "-o", "ConnectTimeout=5", REMOTE_HOST, command],
|
||||
{ maxBuffer: 5 * 1024 * 1024 },
|
||||
{ maxBuffer: 10 * 1024 * 1024 },
|
||||
(error, stdout, stderr) => {
|
||||
if (error) {
|
||||
reject(stderr || error.message)
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
export default defineEventHandler(async () => {
|
||||
const targets = [
|
||||
{ label: "Ferme", url: "http://ferme.malio-dev.fr/api/version" },
|
||||
{ label: "SIRH", url: "http://sirh.malio-dev.fr/api/version" },
|
||||
{ label: "Inventory", url: "http://inventory.malio-dev.fr/api/health" },
|
||||
]
|
||||
import targets from "../config/version-status-targets.json"
|
||||
|
||||
export default defineEventHandler(async () => {
|
||||
const results = await Promise.all(
|
||||
targets.map(async (target) => {
|
||||
try {
|
||||
|
||||
7
server/config/backup-folders.json
Normal file
7
server/config/backup-folders.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ferme": "bdd_recette/ferme",
|
||||
"inventory": "bdd_recette/inventory",
|
||||
"sirh": "bdd_recette/sirh",
|
||||
"user": "bdd_recette/user",
|
||||
"bitwarden": "bitwarden"
|
||||
}
|
||||
7
server/config/backup-options.json
Normal file
7
server/config/backup-options.json
Normal file
@@ -0,0 +1,7 @@
|
||||
[
|
||||
{ "name": "bitwarden", "icon": "mdi:shield-key" },
|
||||
{ "name": "inventory", "icon": "mdi:package-variant-closed" },
|
||||
{ "name": "sirh", "icon": "mdi:account-group" },
|
||||
{ "name": "ferme", "icon": "mdi:barn" },
|
||||
{ "name": "user", "icon": "mdi:account" }
|
||||
]
|
||||
12
server/config/disk-commands.json
Normal file
12
server/config/disk-commands.json
Normal file
@@ -0,0 +1,12 @@
|
||||
[
|
||||
{
|
||||
"key": "remote",
|
||||
"label": "Serveur distant",
|
||||
"command": "ssh malio-b@192.168.0.179 'cd /home/malio-b/Scripts-Serveur && bash check_storage.sh && exit'"
|
||||
},
|
||||
{
|
||||
"key": "local",
|
||||
"label": "Machine locale",
|
||||
"command": "bash /home/kevin/check_storage.sh"
|
||||
}
|
||||
]
|
||||
5
server/config/version-status-targets.json
Normal file
5
server/config/version-status-targets.json
Normal file
@@ -0,0 +1,5 @@
|
||||
[
|
||||
{ "label": "Ferme", "url": "http://ferme.malio-dev.fr/api/version" },
|
||||
{ "label": "SIRH", "url": "http://sirh.malio-dev.fr/api/version" },
|
||||
{ "label": "Inventory", "url": "http://inventory.malio-dev.fr/api/health" }
|
||||
]
|
||||
Reference in New Issue
Block a user