From 231d099a9fea2b4ef15f9b9cd9dbd4c266d159c7 Mon Sep 17 00:00:00 2001 From: Stefano Ortolani Date: Wed, 30 Nov 2022 09:51:57 +0000 Subject: [PATCH] Fix how cron are launched and managed (#8) Changes: - cron is now launched with the -l option - pipe cron/tail is now a fifo so sigterm is handled properly Co-authored-by: Stefano Ortolani --- server/files/entrypoint_cron.sh | 42 +++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/server/files/entrypoint_cron.sh b/server/files/entrypoint_cron.sh index 8842734..8adb633 100755 --- a/server/files/entrypoint_cron.sh +++ b/server/files/entrypoint_cron.sh @@ -1,25 +1,43 @@ #!/bin/bash +term_pipe_procs() { + echo "Cron entrypoint caught SIGTERM signal!" + kill -TERM "$p1_pid" 2>/dev/null + kill -TERM "$p2_pid" 2>/dev/null +} + +trap term_pipe_procs SIGTERM + # Create the misp cron tab cat << EOF > /etc/cron.d/misp -20 2 * * * www-data /var/www/MISP/app/Console/cake Server cacheFeed "$CRON_USER_ID" all >/tmp/cronlog 2>/tmp/cronlog -30 2 * * * www-data /var/www/MISP/app/Console/cake Server fetchFeed "$CRON_USER_ID" all >/tmp/cronlog 2>/tmp/cronlog +20 2 * * * www-data /var/www/MISP/app/Console/cake Server cacheFeed "$CRON_USER_ID" all > /tmp/cronlog 2>&1 +30 2 * * * www-data /var/www/MISP/app/Console/cake Server fetchFeed "$CRON_USER_ID" all > /tmp/cronlog 2>&1 -0 0 * * * www-data /var/www/MISP/app/Console/cake Server pullAll "$CRON_USER_ID" >/tmp/cronlog 2>/tmp/cronlog -0 1 * * * www-data /var/www/MISP/app/Console/cake Server pushAll "$CRON_USER_ID" >/tmp/cronlog 2>/tmp/cronlog +0 0 * * * www-data /var/www/MISP/app/Console/cake Server pullAll "$CRON_USER_ID" > /tmp/cronlog 2>&1 +0 1 * * * www-data /var/www/MISP/app/Console/cake Server pushAll "$CRON_USER_ID" > /tmp/cronlog 2>&1 -00 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateGalaxies >/tmp/cronlog 2>/tmp/cronlog -10 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateTaxonomies >/tmp/cronlog 2>/tmp/cronlog -20 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateWarningLists >/tmp/cronlog 2>/tmp/cronlog -30 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateNoticeLists >/tmp/cronlog 2>/tmp/cronlog -45 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateObjectTemplates "$CRON_USER_ID" >/tmp/cronlog 2>/tmp/cronlog +00 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateGalaxies > /tmp/cronlog 2>&1 +10 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateTaxonomies > /tmp/cronlog 2>&1 +20 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateWarningLists > /tmp/cronlog 2>&1 +30 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateNoticeLists > /tmp/cronlog 2>&1 +45 3 * * * www-data /var/www/MISP/app/Console/cake Admin updateObjectTemplates "$CRON_USER_ID" > /tmp/cronlog 2>&1 EOF # Build a fifo buffer for the cron logs, 777 so anyone can write to it if [[ ! -p /tmp/cronlog ]]; then - mkfifo /tmp/cronlog + mkfifo -m 777 /tmp/cronlog fi -chmod 777 /tmp/cronlog -cron -f | tail -f /tmp/cronlog +# Build another fifo for the cron pipe +if [[ ! -p /tmp/cronpipe ]]; then + mkfifo /tmp/cronpipe +fi + +# Execute the cron pipe +cron -l -f > /tmp/cronpipe & p1_pid=$! +tail -f /tmp/cronlog < /tmp/cronpipe & p2_pid=$! + +# Wait for both processes of the cron pipe +wait "$p2_pid" +wait "$p1_pid"