From 4dbc75b975990a72ac6f1892d7a5962905235b4c Mon Sep 17 00:00:00 2001 From: Scott Ullrich Date: Sun, 31 Jul 2005 01:49:48 +0000 Subject: Add reverse captive portal feature. --- etc/inc/captiveportal.inc | 12 +++++++----- etc/inc/filter.inc | 6 ++++-- usr/local/www/services_captiveportal.php | 15 ++++++--------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc index 786250b..a4d7186 100644 --- a/etc/inc/captiveportal.inc +++ b/etc/inc/captiveportal.inc @@ -46,9 +46,7 @@ require_once("radius_accounting.inc") ; function captiveportal_configure() { global $config, $g; - if (isset($config['captiveportal']['enable']) && - (($config['captiveportal']['interface'] == "lan") || - isset($config['interfaces'][$config['captiveportal']['interface']]['enable']))) { + if (isset($config['captiveportal']['enable'])) { if($g['booting']) echo "Starting captive portal... "; @@ -154,6 +152,10 @@ EOD; mwexec("/usr/local/sbin/mini_httpd -a -M 0 -u root -maxproc 16" . " -p 8000 -i {$g['varrun_path']}/mini_httpd.cp.pid"); + $fd = fopen("/tmp/captiveportal.txt", "w"); + fwrite($fd, "/usr/local/sbin/mini_httpd -a -M 0 -u root -maxproc 16 -p 8000 -i {$g['varrun_path']}/mini_httpd.cp.pid"); + fclose($fd); + /* fire up another one for HTTPS if requested */ if (isset($config['captiveportal']['httpslogin']) && $config['captiveportal']['certificate'] && $config['captiveportal']['private-key']) { @@ -178,8 +180,8 @@ EOD; } /* start pruning process (interval = 60 seconds) */ - mwexec("/usr/local/bin/minicron 60 {$g['varrun_path']}/minicron.pid " . - "/etc/rc.prunecaptiveportal"); + //mwexec("/usr/local/bin/minicron 60 {$g['varrun_path']}/minicron.pid " . + // "/etc/rc.prunecaptiveportal"); /* generate passthru mac database */ captiveportal_passthrumac_configure() ; diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc index 3bdfd50..c318dc1 100644 --- a/etc/inc/filter.inc +++ b/etc/inc/filter.inc @@ -1091,9 +1091,11 @@ EOD; if(isset($config['captiveportal']['enable'])) { $natrules .= "# Captive Portal\n"; $cp_interface = filter_translate_type_to_real_interface($config['captiveportal']['interface']); - $lan_ip = $config['interfaces']['lan']['ipaddr']; + $cp_ip = $config['interfaces'][$config['captiveportal']['interface']]['ipaddr']; + if($cp_ip == "dhcp") + $cp_ip = find_interface_ip($cp_interface); $natrules .= "no rdr on {$cp_interface} proto tcp from to any \n"; - $natrules .= "rdr on " . $cp_interface . " proto tcp from any to any port { 80 443 } -> {$lan_ip} port 8000\n\n"; + $natrules .= "rdr on {$cp_interface} proto tcp from any to any port { 80 443 } -> {$cp_ip} port 8000\n\n"; } return $natrules; diff --git a/usr/local/www/services_captiveportal.php b/usr/local/www/services_captiveportal.php index e15b2a4..992aeb4 100755 --- a/usr/local/www/services_captiveportal.php +++ b/usr/local/www/services_captiveportal.php @@ -307,16 +307,13 @@ function enable_change(enable_change) {