software captore
authorRalph Ronnquist <ralph.ronnquist@gmail.com>
Sun, 8 Aug 2021 13:12:12 +0000 (23:12 +1000)
committerRalph Ronnquist <ralph.ronnquist@gmail.com>
Sun, 8 Aug 2021 13:12:12 +0000 (23:12 +1000)
control-extra.dat [new file with mode: 0644]
control-logic.lsp
control.dat [new file with mode: 0644]
manager/controls.lsp
run-manager.sh [new file with mode: 0755]
setup.sh

diff --git a/control-extra.dat b/control-extra.dat
new file mode 100644 (file)
index 0000000..87a85d6
--- /dev/null
@@ -0,0 +1 @@
+0 10
index 79732c2ca821723807ffa098e566011f600ce051..cd9a8306d9143558c7e464aeaa2e3f14782f1628 100644 (file)
   (flat (map log-lines (directory "activity" (log-name-fmt t)))))
 
 # Translate timestamp into its local time (hour minute), if it's
-# within the applicable open time, null otherwise.
+# within the applicable day, null otherwise.
 (define (period-minute x)
   (when x
     (letn ((d (date-list (+ (int x 0 10) (* 60 (now 0 -2)))))
            (tm (3 2 d))
            (on (if (regex "^[0-9]+ ([0-9]+)$" x 0) (> (int $1 0 10) CLIP) 1))
            )
-      (and on (= (0 3 d) DAY) (>= tm START) (< tm END) tm))))
+      (and on (= (0 3 d) DAY) tm)))) ; (>= tm START) (< tm END) tm))))
 
 # Collect all mentioned minutes from the activity logs
 (setf TOTAL
diff --git a/control.dat b/control.dat
new file mode 100644 (file)
index 0000000..c872c0c
--- /dev/null
@@ -0,0 +1,12 @@
+; Updated at Sun Aug  8 22:53:01 2021
+((control "ipset-control.lsp")
+ (gap 10)
+ (clip 1000)
+ (1 timed (5 30) (2 0) (20 0))
+ (2 timed (7 30) (1 0) (20 0))
+ (3 timed (7 30) (1 0) (20 0))
+ (4 timed (7 30) (1 0) (20 0))
+ (5 timed (7 30) (3 0) (22 0))
+ (6 timed (7 30) (1 0) (20 0))
+ (7 timed (7 30) (1 0) (20 0))
+ )
index c7172006f7955a475f11e9f11d41f6618ca4ea45..b4779aee24a9e5684483b8c387e04702c1c4803c 100644 (file)
@@ -28,9 +28,9 @@
  end-options '()
  limit-options '()
  )
-(dotimes (h 23) (dolist (m '(0 30))
+(dotimes (h 24) (dolist (m '(0 30))
                   (push (format "%02d:%02d" h m) start-options -1)))
-(dotimes (h 23) (dolist (m '(0 30))
+(dotimes (h 24) (dolist (m '(0 30))
                   (push (format "%02d:%02d" h m) end-options -1)))
 (for (h 1 8) (dolist (m '(0 30))
                (push (format "%02d:%02d" h m) limit-options -1)))
diff --git a/run-manager.sh b/run-manager.sh
new file mode 100755 (executable)
index 0000000..f474356
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+( nohup newlisp -http -d 1070 -w manager/www & )
index e4bcc646bbbd9836ca991e2fca5ccfdb4bff595a..96463bc17b5cad747420e26d05116aa724189464 100755 (executable)
--- a/setup.sh
+++ b/setup.sh
@@ -3,12 +3,27 @@
 CMD=${1-start}
 NET=192.168.249
 TAP=tap0
+SET=TIMO
 
 cd $(dirname $0)
 
 RULE=( ! -o $TAP -j TEE --gateway $NET.2 --oif $TAP )
 case "$CMD" in
     start)
+       # start the blocking rule
+       if iptables-save | grep -qs "match-set $SET" ; then
+           : # all fine
+       else
+           if ipset list $SET >& /dev/null ; then
+               : # The set exists
+           else
+               ipset create $SET hash:net
+           fi
+           iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
+           iptables -A FORWARD -p udp --dport 53 -j ACCEPT
+           iptables -A FORWARD -m set --match-set $SET src -j DROP
+       fi
+       # Start the traffic listener
        if ifconfig $TAP >& /dev/null ; then
            echo "Already started"
        else
@@ -19,6 +34,8 @@ case "$CMD" in
                echo $TAP not up yet
            done
            ifconfig $TAP $NET.1 up
+           iptables -t mangle -A FORWARD -p tcp --dport 53 -j RETURN
+           iptables -t mangle -A FORWARD -p udp --dport 53 -j RETURN
            iptables -t mangle -A FORWARD ${RULE[@]}
        fi
        ;;
@@ -29,6 +46,7 @@ case "$CMD" in
        else
            echo "Already stopped"
        fi
+       ipset flush $SET
        ;;
     *)
        echo "Unknown: $CMD"