bootstrap.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. if [[ "${SKIP_CLAMD}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
  3. echo "SKIP_CLAMD=y, skipping ClamAV..."
  4. sleep 365d
  5. exit 0
  6. fi
  7. # Prepare log pipes
  8. mkdir -p /var/log/clamav
  9. touch /var/log/clamav/clamd.log /var/log/clamav/freshclam.log
  10. chown -R clamav:clamav /var/log/clamav/
  11. adduser clamav tty
  12. chmod g+rw /dev/console
  13. # Prepare whitelist
  14. if [[ -s /etc/clamav/whitelist.ign2 ]]; then
  15. cp /etc/clamav/whitelist.ign2 /var/lib/clamav/whitelist.ign2
  16. chown clamav:clamav /var/lib/clamav/whitelist.ign2
  17. fi
  18. if [[ ! -f /var/lib/clamav/whitelist.ign2 ]]; then
  19. echo "Example-Signature.Ignore-1" > /var/lib/clamav/whitelist.ign2
  20. fi
  21. chown clamav:clamav /var/lib/clamav/whitelist.ign2
  22. dos2unix /var/lib/clamav/whitelist.ign2
  23. sed -i '/^\s*$/d' /var/lib/clamav/whitelist.ign2
  24. BACKGROUND_TASKS=()
  25. (
  26. while true; do
  27. sleep 1m
  28. freshclam
  29. sleep 1h
  30. done
  31. ) &
  32. BACKGROUND_TASKS+=($!)
  33. (
  34. while true; do
  35. sleep 2m
  36. SANE_MIRRORS="$(dig +ignore +short rsync.sanesecurity.net)"
  37. for sane_mirror in ${SANE_MIRRORS}; do
  38. rsync -avp --chown=clamav:clamav --timeout=5 rsync://${sane_mirror}/sanesecurity/ \
  39. --include 'blurl.ndb' \
  40. --include 'junk.ndb' \
  41. --include 'jurlbl.ndb' \
  42. --include 'phish.ndb' \
  43. --exclude='*' /var/lib/clamav/
  44. if [ $? -eq 0 ]; then
  45. echo RELOAD | nc localhost 3310
  46. break
  47. fi
  48. done
  49. sleep 30h
  50. done
  51. ) &
  52. BACKGROUND_TASKS+=($!)
  53. clamd &
  54. BACKGROUND_TASKS+=($!)
  55. while true; do
  56. for bg_task in ${BACKGROUND_TASKS[*]}; do
  57. if ! kill -0 ${bg_task} 1>&2; then
  58. echo "Worker ${bg_task} died, stopping container waiting for respawn..."
  59. kill -TERM 1
  60. fi
  61. sleep 10
  62. done
  63. done