diff --git a/plist b/plist index b2ab2eef4..4a75f1087 100644 --- a/plist +++ b/plist @@ -72,11 +72,6 @@ /usr/local/etc/pkg/fingerprints/OPNsense/trusted/opnsense-update.deciso.com.20170721 /usr/local/etc/pkg/fingerprints/OPNsense/trusted/pkg.opnsense.org.20171219 /usr/local/etc/rc -/usr/local/etc/rc.backup_captiveportal -/usr/local/etc/rc.backup_dhcpleases -/usr/local/etc/rc.backup_duid -/usr/local/etc/rc.backup_netflow -/usr/local/etc/rc.backup_rrd /usr/local/etc/rc.bootup /usr/local/etc/rc.carp /usr/local/etc/rc.configure_firmware @@ -135,6 +130,11 @@ /usr/local/etc/rc.syshook.d/90-carp.start /usr/local/etc/rc.syshook.d/90-cron.start /usr/local/etc/rc.syshook.d/95-beep.start +/usr/local/etc/rc.syshook.d/backup/20-captiveportal +/usr/local/etc/rc.syshook.d/backup/20-dhcpleases +/usr/local/etc/rc.syshook.d/backup/20-duid +/usr/local/etc/rc.syshook.d/backup/20-netflow +/usr/local/etc/rc.syshook.d/backup/20-rrd /usr/local/etc/rc.update_bogons /usr/local/etc/ssl/opnsense.cnf /usr/local/opnsense/contrib/IXR/IXR_Library.php diff --git a/src/etc/rc.syshook b/src/etc/rc.syshook index c2bcaa617..7ead538a4 100755 --- a/src/etc/rc.syshook +++ b/src/etc/rc.syshook @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright (c) 2015-2017 Franco Fichtner +# Copyright (c) 2015-2018 Franco Fichtner # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -33,32 +33,49 @@ # It could be useful for the user to order scripts # or set a higher/lower priority in case some # use case requires a slightly different setup. +# +# Arguments beyond the syshook level are passed on to +# the to be executed scripts. +# +# The syshook level can be given as a suffix or is implied +# via the subdirectory used. For backwards compat the +# subdirectory given is used, otherwise the old format +# is used. SYSDIR="/usr/local/etc/rc.syshook.d" SYSLEVEL="${1}" +shift + if [ -z "${SYSLEVEL}" ]; then # we don't know of a default - exit 1; + exit 1 fi if [ ! -d ${SYSDIR} ]; then # no dir no fun - exit 0; + exit 0 fi -# collect all matching scripts -SYSHOOKS=$(find -s ${SYSDIR} -type f -name "*.${SYSLEVEL}") -for SYSHOOK in ${SYSHOOKS}; do +if [ -d ${SYSDIR}/${SYSLEVEL} ]; then + # in the subdir all files match + SYSHOOKS="$(find -s ${SYSDIR}/${SYSLEVEL} -type f})" +fi + +# XXX pre-18.7 compat: collect all matching root scripts +SYSHOOKS="${SYSHOOKS} $(find -s ${SYSDIR} -type f -depth 1 -name "*.${SYSLEVEL}")" + +for _SYSHOOK in ${SYSHOOKS}; do # extract syshook origin - SYSHOOK=${SYSHOOK##"${SYSDIR}/"} + SYSHOOK=${_SYSHOOK##"${SYSDIR}/"} + SYSHOOK=${SYSHOOK##"${SYSLEVEL}/"} SYSHOOK=${SYSHOOK%%".${SYSLEVEL}"} SYSNAME=${SYSHOOK#??-} echo ">>> Invoking ${SYSLEVEL} script '${SYSNAME}'" - if ! ${SYSDIR}/${SYSHOOK}.${SYSLEVEL}; then + if ! ${_SYSHOOK} "${@}"; then echo ">>> Error in ${SYSLEVEL} script '${SYSNAME}'" fi done diff --git a/src/etc/rc.syshook.d/20-backup.early b/src/etc/rc.syshook.d/20-backup.early index fb40bcd30..8b3286766 100755 --- a/src/etc/rc.syshook.d/20-backup.early +++ b/src/etc/rc.syshook.d/20-backup.early @@ -1,6 +1,4 @@ #!/bin/sh # Restore backups from previous shutdown -for BACKUP in captiveportal dhcpleases duid netflow rrd; do - /usr/local/etc/rc.backup_${BACKUP} restore -done +/usr/local/etc/rc.syshook backup restore diff --git a/src/etc/rc.syshook.d/90-backup.stop b/src/etc/rc.syshook.d/90-backup.stop index 92d8e9843..f7c9b10f5 100755 --- a/src/etc/rc.syshook.d/90-backup.stop +++ b/src/etc/rc.syshook.d/90-backup.stop @@ -1,6 +1,4 @@ #!/bin/sh # Backup volatile internals -for BACKUP in captiveportal dhcpleases duid netflow rrd; do - /usr/local/etc/rc.backup_${BACKUP} -done +/usr/local/etc/rc.syshook backup diff --git a/src/etc/rc.backup_captiveportal b/src/etc/rc.syshook.d/backup/20-captiveportal similarity index 100% rename from src/etc/rc.backup_captiveportal rename to src/etc/rc.syshook.d/backup/20-captiveportal diff --git a/src/etc/rc.backup_dhcpleases b/src/etc/rc.syshook.d/backup/20-dhcpleases similarity index 100% rename from src/etc/rc.backup_dhcpleases rename to src/etc/rc.syshook.d/backup/20-dhcpleases diff --git a/src/etc/rc.backup_duid b/src/etc/rc.syshook.d/backup/20-duid similarity index 100% rename from src/etc/rc.backup_duid rename to src/etc/rc.syshook.d/backup/20-duid diff --git a/src/etc/rc.backup_netflow b/src/etc/rc.syshook.d/backup/20-netflow similarity index 100% rename from src/etc/rc.backup_netflow rename to src/etc/rc.syshook.d/backup/20-netflow diff --git a/src/etc/rc.backup_rrd b/src/etc/rc.syshook.d/backup/20-rrd similarity index 100% rename from src/etc/rc.backup_rrd rename to src/etc/rc.syshook.d/backup/20-rrd