bootstrap.sh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 whitelist
  8. if [[ -s /etc/clamav/whitelist.ign2 ]]; then
  9. cp /etc/clamav/whitelist.ign2 /var/lib/clamav/whitelist.ign2
  10. fi
  11. if [[ ! -f /var/lib/clamav/whitelist.ign2 ]]; then
  12. echo "Example-Signature.Ignore-1" > /var/lib/clamav/whitelist.ign2
  13. fi
  14. chown clamav:clamav /var/lib/clamav/whitelist.ign2
  15. dos2unix /var/lib/clamav/whitelist.ign2
  16. sed -i '/^\s*$/d' /var/lib/clamav/whitelist.ign2
  17. BACKGROUND_TASKS=()
  18. (
  19. while true; do
  20. sleep 1m
  21. freshclam
  22. sleep 1h
  23. done
  24. ) &
  25. BACKGROUND_TASKS+=($!)
  26. (
  27. while true; do
  28. sleep 2m
  29. SANE_MIRRORS="$(dig +ignore +short rsync.sanesecurity.net)"
  30. for sane_mirror in ${SANE_MIRRORS}; do
  31. rsync -avp --chown=clamav:clamav --timeout=5 rsync://${sane_mirror}/sanesecurity/ \
  32. --include 'blurl.ndb' \
  33. --include 'junk.ndb' \
  34. --include 'jurlbl.ndb' \
  35. --include 'phish.ndb' \
  36. --exclude='*' /var/lib/clamav/
  37. if [ $? -eq 0 ]; then
  38. echo RELOAD | nc localhost 3310
  39. break
  40. fi
  41. done
  42. sleep 30h
  43. done
  44. ) &
  45. BACKGROUND_TASKS+=($!)
  46. nice -n10 clamd &
  47. BACKGROUND_TASKS+=($!)
  48. while true; do
  49. for bg_task in ${BACKGROUND_TASKS[*]}; do
  50. if ! kill -0 ${bg_task} 1>&2; then
  51. echo "Worker ${bg_task} died, stopping container waiting for respawn..."
  52. kill -TERM 1
  53. fi
  54. sleep 10
  55. done
  56. done