(signal 2 (fn (x) (exit 0)))
# The following is for Devuan GNU+Linux
-(constant 'LIBC (exists file? '("/lib/x86_64-linux-gnu/libc.so.6"
- "/lib/i386-linux-gnu/libc.so.6"
- )))
+(constant 'LIBC SITE:libc)
(import LIBC "ioctl" "int" "int" "long" "void*" )
(import LIBC "perror" "void" "char*" )
(import LIBC "ntohl" "int" "int" )
(if (null? a) v (nil? v) true (null? (1 a)) v (a 1))))
# Set logging mode.
-(constant 'listener-log-ip (mainarg "-l" nil))
-
# Open the tap named by "-t tapX" on the command line, or "tap0" byt
# default. Then make a TUNSETIFF call to initialize it (as
# IFF_TAP|IFF_NO_PI).
-(constant 'IFNAME (mainarg "-t" "tap0") 'IFD (open "/dev/net/tun" "u") )
+(constant
+ 'listener-log-ip SITE:listener.ip
+ 'IFNAME SITE:listener.tap
+ 'PORTS SITE:listener.ports
+ 'IFD (open SITE:listener.tundev "u")
+ 'ACTNAMEFMT "%d%02d%02d-network.dat"
+ 'ACTDIR SITE:listener.activity.dir
+ 'ACTFILEFMT (format "%s/%s" ACTDIR ACTNAMEFMT )
+)
(unless (number? IFD) (die "open"))
(unless (zero? (ioctl IFD 0x400454ca (pack "s16 u s22" IFNAME 0x1002 "")))
(die (string "set " IFNAME)))
# The TCP ports of interest
-(constant 'PORTS '(80 443))
# Set up for optional tracking of IP addresses
(define counter:counter nil)
# This funcion collates all given ips, and it extends the log line
# with the list of ips used during the minute.
(setf next-mark 0 packet-count 0)
+
(define (mark-active t) ; buffer
(when listener-log-ip (track-data))
(inc packet-count)
;(write-line 2 (string (list t packet-count ports (counter))))
(when (>= t next-mark)
- (let ((d (format "activity/%d%02d%02d-network.dat" (0 3 (date-list t))))
+ (let ((d (format ACTFILEFMT (0 3 (date-list t))))
(c (map string (counter))))
(append-file d (string t " " packet-count " " (join c " ") "\n"))
(setf next-mark (+ t 60) packet-count 0)