bootstrap.sh 1.6 KB

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