From 54258e552eb96c0c62b2de32d61f4ad0d411a158 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 20 Mar 2025 14:00:41 +0100 Subject: [PATCH] =?UTF-8?q?Feat:=20F=C3=BCgt=20den=20check=20auf=20WebDAV?= =?UTF-8?q?=20creds=20wieder=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Mount/HiDrive.sh | 65 ++++++++++++++++++------------------------------ 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/Mount/HiDrive.sh b/Mount/HiDrive.sh index d457ad4..221ac26 100755 --- a/Mount/HiDrive.sh +++ b/Mount/HiDrive.sh @@ -16,6 +16,8 @@ create_lock # === KONSTANTEN === MAX_RESTARTS=10 # Maximale Anzahl an Neustarts RESTART_COUNT_FILE="/tmp/hidrive_restart_count" # Datei zur Speicherung des Neustart-Zählers +WEBDAV_CREDENTIALS="/etc/davfs2/secrets" # WebDAV-Passwortdatei +MOUNT_POINT="/media/HiDrive" # Gemeinsamer Einhängepunkt für NFS/WebDAV # === Neustart-Zähler initialisieren === if [[ ! -f "$RESTART_COUNT_FILE" ]]; then @@ -60,23 +62,27 @@ WEBDAV_URL="$1" DEVICE_MAC="${2:-}" NFS_PATH="${3:-}" -# === KONFIGURATION === -MOUNT_POINT="/media/HiDrive" # Gemeinsamer Einhängepunkt für NFS/WebDAV -WEBDAV_CREDENTIALS="/etc/davfs2/secrets" # WebDAV-Passwortdatei - # === FUNKTIONEN === check_nfs_installed() { - if ! command -v mount.nfs &>/dev/null; then + command -v mount.nfs &>/dev/null || { log "Fehler: NFS-Client nicht installiert! Bitte installiere es mit: sudo apt install nfs-common" return 1 - fi + } return 0 } check_webdav_installed() { - if ! command -v mount.davfs &>/dev/null; then + command -v mount.davfs &>/dev/null || { log "Fehler: WebDAV-Client nicht installiert! Bitte installiere es mit: sudo apt install davfs2" return 1 + } + return 0 +} + +check_webdav_credentials() { + if [[ ! -f "$WEBDAV_CREDENTIALS" ]]; then + log "Fehler: WebDAV-Zugangsdaten fehlen! Bitte erstelle $WEBDAV_CREDENTIALS mit den richtigen Anmeldedaten." + return 1 fi return 0 } @@ -102,36 +108,25 @@ restart_script() { unmount() { local mount_point="$1" log "Unmounting $mount_point..." - if umount "$mount_point"; then - log "Unmount erfolgreich." - else - log "Fehler beim Unmounten von $mount_point." - return 1 - fi + umount "$mount_point" && log "Unmount erfolgreich." || log "Fehler beim Unmounten von $mount_point." } mount_nfs() { log "Versuche, NFS-Dateisystem von $NFS_SERVER einzubinden..." mkdir -p "$MOUNT_POINT" - if mount -t nfs "$NFS_SERVER" "$MOUNT_POINT"; then - log "NFS erfolgreich unter $MOUNT_POINT eingebunden!" - return 0 - else + mount -t nfs "$NFS_SERVER" "$MOUNT_POINT" && log "NFS erfolgreich unter $MOUNT_POINT eingebunden!" || { log "Fehler beim Einbinden von NFS!" return 1 - fi + } } mount_webdav() { log "Versuche, WebDAV-Dateisystem von $WEBDAV_URL einzubinden..." mkdir -p "$MOUNT_POINT" - if mount -t davfs "$WEBDAV_URL" "$MOUNT_POINT"; then - log "WebDAV erfolgreich unter $MOUNT_POINT eingebunden!" - return 0 - else + mount -t davfs "$WEBDAV_URL" "$MOUNT_POINT" && log "WebDAV erfolgreich unter $MOUNT_POINT eingebunden!" || { log "Fehler beim Einbinden von WebDAV!" return 1 - fi + } } # === HAUPTLOGIK === @@ -152,12 +147,8 @@ if [[ -n "$DEVICE_MAC" && -n "$NFS_PATH" ]]; then NFS_SERVER="$DEVICE_IP:$NFS_PATH" if ! is_nfs_mounted "$MOUNT_POINT"; then log "NFS ist nicht gemountet. Wechsel zu NFS..." - if is_mounted "$MOUNT_POINT"; then - unmount "$MOUNT_POINT" - fi - if check_nfs_installed; then - mount_nfs || restart_script "$@" - fi + is_mounted "$MOUNT_POINT" && unmount "$MOUNT_POINT" + check_nfs_installed && mount_nfs || restart_script "$@" else log "NFS ist bereits gemountet." fi @@ -165,12 +156,8 @@ if [[ -n "$DEVICE_MAC" && -n "$NFS_PATH" ]]; then log "Gerät ist nicht erreichbar. Prüfe WebDAV-Mount..." if ! is_webdav_mounted "$MOUNT_POINT"; then log "WebDAV ist nicht gemountet. Wechsel zu WebDAV..." - if is_mounted "$MOUNT_POINT"; then - unmount "$MOUNT_POINT" - fi - if check_webdav_installed; then - mount_webdav || restart_script "$@" - fi + is_mounted "$MOUNT_POINT" && unmount "$MOUNT_POINT" + check_webdav_installed && check_webdav_credentials && mount_webdav || restart_script "$@" else log "WebDAV ist bereits gemountet." fi @@ -179,12 +166,8 @@ else log "Kein Gerät angegeben. Direktes Einbinden von WebDAV..." if ! is_webdav_mounted "$MOUNT_POINT"; then log "WebDAV ist nicht gemountet. Einbinden..." - if is_mounted "$MOUNT_POINT"; then - unmount "$MOUNT_POINT" - fi - if check_webdav_installed; then - mount_webdav || restart_script "$@" - fi + is_mounted "$MOUNT_POINT" && unmount "$MOUNT_POINT" + check_webdav_installed && check_webdav_credentials && mount_webdav || restart_script "$@" else log "WebDAV ist bereits gemountet." fi