diff options
-rw-r--r-- | etc/inc/captiveportal.inc | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc index a4e5d55..1b2d361 100644 --- a/etc/inc/captiveportal.inc +++ b/etc/inc/captiveportal.inc @@ -73,11 +73,8 @@ function captiveportal_configure() { /* kill any running minicron */ killbypid("{$g['varrun_path']}/minicron.pid"); - /* init dummynet/ipfw rules number database */ - captiveportal_init_ipfw_ruleno(); - /* init ipfw rules */ - captiveportal_init_rules(); + captiveportal_init_rules(true); /* stop accounting on all clients */ captiveportal_radius_stop_all(true); @@ -341,7 +338,7 @@ function captiveportal_init_webgui() { $res = mwexec("/usr/local/sbin/lighttpd -f {$g['varetc_path']}/lighty-CaptivePortal-SSL.conf"); } -function captiveportal_init_rules() { +function captiveportal_init_rules($reinit = false) { global $config, $g; if (!isset($config['captiveportal']['enable'])) @@ -387,6 +384,9 @@ function captiveportal_init_rules() { } else return false; + /* init dummynet/ipfw rules number database */ + captiveportal_init_ipfw_ruleno(); + /* make sure ipfw is loaded */ if (!is_module_loaded("ipfw.ko")) filter_load_ipfw(); @@ -512,7 +512,20 @@ EOD; $cprules .= captiveportal_allowedip_configure(); /* load rules */ - $cprules = "table all flush\nflush\n{$cprules}"; + if ($reinit == true) + $cprules = "table all flush\nflush\n{$cprules}"; + else { + $tmprules = "table 3 flush\n"; + $tmprules .= "table 4 flush\n"; + $tmprules .= "table 5 flush\n"; + $tmprules .= "table 6 flush\n"; + $tmprules .= "table 7 flush\n"; + $tmprules .= "table 8 flush\n"; + $tmprules .= "table 9 flush\n"; + $tmprules .= "table 10 flush\n"; + $tmprules .= "flush\n"; + $cprules = "{$tmprules}\n{$cprules}"; + } if (file_put_contents("{$g['tmp_path']}/ipfw.cp.rules", $cprules)) { mwexec("/sbin/ipfw -q {$g['tmp_path']}/ipfw.cp.rules", true); //@unlink("{$g['tmp_path']}/ipfw.cp.rules"); |