Fix conntrack cut bugs and ignore firewall warnings
authorNeutron Soutmun <neo.neutron@gmail.com>
Mon, 27 Aug 2012 04:04:38 +0000 (11:04 +0700)
committerNeutron Soutmun <neo.neutron@gmail.com>
Mon, 27 Aug 2012 04:04:38 +0000 (11:04 +0700)
* tools/rahunas-conntrack.in:
  - Parsing the client's ip to function.
  - Fix the calling of conntrack tool by wrapping with su command that
    it forks properly now.
  - Reduce the DELAY time to 1.
* tools/rahunas-firewall.in:
  - Ignore warning of non-existent service class rules in table raw
    and rawnat.
* weblogin/login.php:
  - Add the success login redirection time delay to 2 seconds as it
    is needed for the conntrack tool to finish their work.

tools/rahunas-conntrack.in
tools/rahunas-firewall.in
weblogin/login.php

index 9ae9380..8f147b6 100755 (executable)
@@ -1,13 +1,13 @@
 #!/bin/sh
-# File: bandwidth.sh
-# Description: The bandwidth shaper wrapper script for RahuNAS
+# File: rahunas-conntrack
+# Description: The conntrack tool wrapper script for RahuNAS
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin:@prefix@/sbin:@prefix@/bin
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 
 CONNTRACK=/usr/sbin/conntrack
-DELAY=5
+DELAY=1
 
 MESSAGE=""
 MSG_NOT_COMPLETED="NOT COMPLETED"
@@ -17,16 +17,15 @@ usage() {
 }
 
 conncut() {
-  sleep ${DELAY}
-  $CONNTRACK -D -s $2 > /dev/null 2>&1
-  $CONNTRACK -D -d $2 > /dev/null 2>&1
+  CLIENT_IP=$1
+  su -c "sleep ${DELAY}; $CONNTRACK -D -s $CLIENT_IP > /dev/null 2>&1; $CONNTRACK -D -d $CLIENT_IP > /dev/null 2>&1" &
 }
 
 N=$prefix/sbin/rahunas-conntrack
 
 case "$1" in
   cut)
-    conncut &
+    conncut $2
     MESSAGE="$2 flushed"
 
     echo $MESSAGE
index 199b70b..72214f7 100755 (executable)
@@ -293,6 +293,18 @@ navigation_rules () {
   else #stop
     for dev in $DEV_EXTERNAL_LIST; do
       sed -i "/$dev/d" $MAIN_EXT_IFACE_LIST
+
+      $IPTABLES $action INPUT $DEV_IN_PARAM $dev -j ${NAME}_ext_fw
+
+      # RAW - Service class
+      $IPTABLES -t raw $action ${CHAIN_RH_RAW_PREROUTING} -i $dev \
+        -m set --set rahunas_serviceclass dst \
+        -j RAHURAWDNAT --bind-set rahunas_serviceclass >/dev/null 2>&1 || true
+
+      $IPTABLES -t rawpost $action ${CHAIN_RH_RAWPOST_POSTROUTING} -o $dev\
+        -m set --set rahunas_serviceclass src \
+        -j RAHURAWSNAT --bind-set rahunas_serviceclass >/dev/null 2>&1 || true
+
     done
   fi
 
@@ -533,10 +545,10 @@ cleanup_policy () {
   $IPTABLES -F ${NAME}_ext_fw
   $IPTABLES -X ${NAME}_ext_fw
 
-  $IPTABLES -t raw -F ${CHAIN_RH_RAW_PREROUTING} || true
-  $IPTABLES -t raw -X ${CHAIN_RH_RAW_PREROUTING} || true
-  $IPTABLES -t rawpost -F ${CHAIN_RH_RAWPOST_POSTROUTING} || true
-  $IPTABLES -t rawpost -X ${CHAIN_RH_RAWPOST_POSTROUTING} || true
+  $IPTABLES -t raw -F ${CHAIN_RH_RAW_PREROUTING} >/dev/null 2>&1 || true
+  $IPTABLES -t raw -X ${CHAIN_RH_RAW_PREROUTING} >/dev/null 2>&1 || true
+  $IPTABLES -t rawpost -F ${CHAIN_RH_RAWPOST_POSTROUTING} >/dev/null 2>&1 || true
+  $IPTABLES -t rawpost -X ${CHAIN_RH_RAWPOST_POSTROUTING} >/dev/null 2>&1 || true
 }
 
 rules () {
index 4b98d0a..a987b58 100644 (file)
@@ -187,6 +187,9 @@ if (!$forward) {
   $waiting_show    = "visible_hide(wt, 'show');";
   $force_forward   = $hide_wait == "" ? "self.location.replace('$LogoutURL');"
                                       : "";
+  $force_forward   = $hide_wait == "" ?
+                       "setTimeout(function () {" .
+                       "self.location.replace('$LogoutURL');}, 2000);" : "";
 }
 
 $message_show = !empty($message) ? "visible_hide(msg, 'show');"