home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.lbl.gov / 2014.05.ftp.ee.lbl.gov.tar / ftp.ee.lbl.gov / acld-1.11.tar.gz / acld-1.11.tar / acld-1.11 / aclfw.sh.in < prev    next >
Text File  |  2011-05-18  |  2KB  |  101 lines

  1. #!/bin/sh
  2. # @(#) $Id: aclfw.sh.in 736 2011-05-18 23:00:13Z leres $ (LBL)
  3. #
  4. # PROVIDE: aclfw
  5. # REQUIRE: acld
  6. #
  7.  
  8. test=0
  9. case "$1" in
  10.  
  11. start|faststart)
  12.     ;;
  13.  
  14. 'stop')
  15.     exit
  16.         ;;
  17.  
  18. 'test')
  19.     test=1
  20.     ;;
  21.  
  22. *)
  23.     echo "Usage: $0 { start | stop | test }"
  24.     exit 1
  25.     ;;
  26. esac
  27.  
  28. . /etc/rc.conf
  29.  
  30. # Allow test even if aclfw isn't enbled in rc.conf
  31. if [ ${test} -ne 0 ]; then
  32.     aclfw_enable="YES"
  33. fi
  34.  
  35. if [ -n "${aclfw_enable}" -a "x${aclfw_enable}" != "xNO" ] ; then
  36.     export PATH="@PREFIX@/libexec:${PATH}"
  37.  
  38.     if [ ${test} -eq 0 ]; then
  39.         echo -n " aclfw"
  40.     else
  41.         echo "# TEST MODE"
  42.     fi
  43.  
  44.     prog="`basename $0`"
  45.     watcher="${aclfw_watcher:-root}"
  46.  
  47.     t1="/tmp/${prog}.1.$$"
  48.     t2="/tmp/${prog}.2.$$"
  49.  
  50.     files="/var/log/nets"
  51.     if [ ! -r ${files} ]; then
  52.         files=""
  53.         for f in /var/log/syslog /var/log/messages; do
  54.             files="${files} ${f}"
  55.             f2=${f}.0
  56.             if [ -r ${f2} ]; then
  57.                 files="${files} ${f2}"
  58.             fi
  59.         done
  60.     fi
  61.     if [ ${test} -ne 0 ]; then
  62.         echo "# files: ${files}"
  63.     fi
  64.  
  65.     awk '$6 == "NETS" && $7 == "status=success" {
  66.             ip = "?"
  67.             if (substr($11, 1, 3) == "ip=")
  68.                 ip = substr($11, 4)
  69.             if ($10 == "cmd=drop")
  70.                 block[ip] = 1
  71.             else if ($10 == "cmd=restore")
  72.                 block[ip] = 0
  73.         }
  74.  
  75.         END {
  76.             for (ip in block)
  77.                 if (block[ip])
  78.                     print ip
  79.         }' ${files} > ${t1} 2>&1
  80.  
  81.     if [ -s ${t1} ]; then
  82.         if [ ${test} -ne 0 ]; then
  83.             cat ${t1}
  84.             rm ${t1}
  85.             exit
  86.         fi
  87.         acl.exp drop -f ${t1} > ${t2} 2>&1
  88.         ((echo "Subject: `hostname` acld ipfw startup"
  89.         echo "To: ${watcher}"
  90.         echo ""
  91.         echo "Re-blocking:"
  92.         sed -e 's/^/    /' ${t1}
  93.         echo ""
  94.         cat ${t2}) |
  95.         sendmail -bm -froot@ee.lbl.gov -t ; \
  96.             rm ${t1} ${t2} & ) > /dev/null 2>&1
  97.     else
  98.         rm ${t1}
  99.     fi
  100. fi
  101.