From 235301443cb9735b152257e8b21fa73f46cbfe80 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Sat, 12 Nov 2016 07:53:19 +0100 Subject: [PATCH] rc: last minor tweaks for big effect o > 16 hours of randomisation is too much, let cron jobs run within 15 minutes. o Move to `jot' utility for better visibility/portability. o switch the default bogons invoke to right now, only defer the run if `cron' argument was given. --- src/etc/inc/services.inc | 6 ++-- src/etc/rc.update_bogons | 31 +++++++++---------- .../conf/actions.d/actions_filter.conf | 2 +- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/etc/inc/services.inc b/src/etc/inc/services.inc index 55b96582d..1d0ce036c 100644 --- a/src/etc/inc/services.inc +++ b/src/etc/inc/services.inc @@ -2307,14 +2307,14 @@ function configure_cron() /* bogons fetch always set in default config.xml */ switch ($config['system']['bogons']['interval']) { case 'daily': - $autocron[] = generate_cron_job('/usr/local/etc/rc.update_bogons', '1', '3', '*', '*', '*'); + $autocron[] = generate_cron_job('/usr/local/etc/rc.update_bogons cron', '1', '3', '*', '*', '*'); break; case 'weekly': - $autocron[] = generate_cron_job('/usr/local/etc/rc.update_bogons', '1', '3', '*', '*', '0'); + $autocron[] = generate_cron_job('/usr/local/etc/rc.update_bogons cron', '1', '3', '*', '*', '0'); break; case 'monthly': default: - $autocron[] = generate_cron_job('/usr/local/etc/rc.update_bogons', '1', '3', '1', '*', '*'); + $autocron[] = generate_cron_job('/usr/local/etc/rc.update_bogons cron', '1', '3', '1', '*', '*'); break; } diff --git a/src/etc/rc.update_bogons b/src/etc/rc.update_bogons index 073ed6bfb..08148649f 100755 --- a/src/etc/rc.update_bogons +++ b/src/etc/rc.update_bogons @@ -1,5 +1,12 @@ #!/bin/sh +DESTDIR="/usr/local/etc" +WORKDIR="/tmp/bogons" +FETCH="fetch -aqT 30" +PROC_ERROR= + +COMMAND=${1} + CORE_ABI=$(cat /usr/local/opnsense/version/opnsense.abi 2> /dev/null) SYS_ABI=$(opnsense-verify -a 2> /dev/null) @@ -10,20 +17,12 @@ if [ -n "${CORE_ABI}" -a -n "${SYS_ABI}" ]; then fi URL="${URL}/sets/bogons.txz" -DESTDIR="/usr/local/etc" -WORKDIR="/tmp/bogons" -FETCH="fetch -aqT 30" - -proc_error= - echo "rc.update_bogons is starting up." | logger -# Sleep for some time, unless an argument is specified. -if [ -z "$1" ]; then - # Grab a random value - value=`od -A n -d -N2 /dev/random | awk '{ print $1 }'` - echo "rc.update_bogons is sleeping for $value" | logger - sleep $value +if [ "${COMMAND}" = "cron" ]; then + VALUE=$(jot -r 1 1 900) + echo "rc.update_bogons is sleeping for ${VALUE} seconds" | logger + sleep ${VALUE} fi echo "rc.update_bogons is beginning the update cycle." | logger @@ -36,16 +35,16 @@ ${FETCH} -o ${WORKDIR}/bogons.txz "${URL}" if [ ! -f ${WORKDIR}/bogons.txz ]; then echo "Could not download ${URL}" | logger - proc_error="true" + PROC_ERROR=1 elif ! opnsense-verify -q ${WORKDIR}/bogons.txz; then echo "Could not verify ${URL}" | logger - proc_error="true" + PROC_ERROR=1 elif ! tar -C ${WORKDIR} -xJf ${WORKDIR}/bogons.txz; then echo "Could not extract ${URL}" | logger - proc_error="true" + PROC_ERROR=1 fi -if [ -n "${proc_error}" ]; then +if [ -n "${PROC_ERROR}" ]; then # Relaunch and sleep sh /usr/local/etc/rc.update_bogons & exit diff --git a/src/opnsense/service/conf/actions.d/actions_filter.conf b/src/opnsense/service/conf/actions.d/actions_filter.conf index 5ce085097..b32199cf5 100644 --- a/src/opnsense/service/conf/actions.d/actions_filter.conf +++ b/src/opnsense/service/conf/actions.d/actions_filter.conf @@ -54,7 +54,7 @@ type:script message:delete entry from pf table ( %s / %s ) [update.bogons] -command:/usr/local/etc/rc.update_bogons now +command:/usr/local/etc/rc.update_bogons parameters: type:script message:update bogons database