| Server IP : 64.223.137.62 / Your IP : 104.23.197.97 Web 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 MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /opt/synosnap/hooks/ |
Upload File : |
#!/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