Heray-Was-Here
Server : Apache/2.4.52 (Ubuntu)
System : Linux webserver9 5.15.0-170-generic #180-Ubuntu SMP Fri Jan 9 16:10:31 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.1.2-1ubuntu2.24
Disable Function : NONE
Directory :  /opt/synosnap/hooks/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/synosnap/hooks/dpkg-post-hook.sh
#!/bin/bash

trigger_dkms_for_distro_upgrade()
{
    local prehook_env="$1"
    local posthook_env="$2"

    # check for distro upgrade and trigger dkms reinstall
    source "${prehook_env}"
    local prehook_distro_version=${DISTRO_VERSION}
    source "${posthook_env}"
    local posthook_distro_version=${DISTRO_VERSION}

    if [ ${prehook_distro_version} != ${posthook_distro_version} ]
    then
        touch "${FILE_TRIGGER_DKMS_REINSTALL}"
    fi
}

compare_distro_info()
{
    print_message "compare distro info"

    local prehook_env="$1"
    local posthook_env="$2"

    if [ ! -f "${prehook_env}" ] || [ ! -f "${posthook_env}" ]
    then
        print_message "prehook env or posthook env missing, skip compare"
        return 0
    fi

    trigger_dkms_for_distro_upgrade "${prehook_env}" "${posthook_env}"
}

do_dkms_reinstall()
{
    local synosnap_version="$(dpkg -s synosnap | grep '^Version: ' | sed 's|Version: ||g')"

    dkms remove -m synosnap -v "${synosnap_version}" --all

    for kernel_version in $(ls /lib/modules)
    do
        dkms install -m synosnap -v "${synosnap_version}" -k "${kernel_version}"
    done
}

check_for_file_trigger()
{
    print_message "check for file trigger"

    if [ -f "${FILE_TRIGGER_DKMS_REINSTALL}" ]
    then
        rm -f "${FILE_TRIGGER_DKMS_REINSTALL}"

        print_message "dksm reinstall trigger found, do dkms reinstall"
        do_dkms_reinstall
    fi
}

main()
{
    print_message "* synosnap dpkg post hook check"

    dump_distro_info "${DPKG_POSTHOOK_DISTRO_INFO}"

    compare_distro_info "${DPKG_PREHOOK_DISTRO_INFO}" "${DPKG_POSTHOOK_DISTRO_INFO}"

    check_for_file_trigger

    rm -f "${DPKG_PREHOOK_DISTRO_INFO}" "${DPKG_POSTHOOK_DISTRO_INFO}"
}

source /opt/synosnap/hooks/env.sh

main "${@}"

# suppress error in script
exit 0


Hry