summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2005-07-31 01:49:48 +0000
committerScott Ullrich <sullrich@pfsense.org>2005-07-31 01:49:48 +0000
commit4dbc75b975990a72ac6f1892d7a5962905235b4c (patch)
tree807360c45ad17f7489f2b40a3bba012015a4e489
parente4662fc5aa1522410abb690f791cffdaeb6f29a5 (diff)
downloadpfsense-4dbc75b975990a72ac6f1892d7a5962905235b4c.zip
pfsense-4dbc75b975990a72ac6f1892d7a5962905235b4c.tar.gz
Add reverse captive portal feature.
-rw-r--r--etc/inc/captiveportal.inc12
-rw-r--r--etc/inc/filter.inc6
-rwxr-xr-xusr/local/www/services_captiveportal.php15
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 <captiveportal> 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) {
<td width="78%" class="vtable">
<select name="cinterface" class="formfld" id="cinterface">
<?php
-
- if(isset($config['system']['developer']))
$interfaces = array('lan' => 'LAN', 'wan' => 'WAN');
- else
- $interfaces = array('lan' => 'LAN');
- for ($i = 1; isset($config['interfaces']['opt' . $i]); $i++) {
- if (isset($config['interfaces']['opt' . $i]['enable']))
- $interfaces['opt' . $i] = $config['interfaces']['opt' . $i]['descr'];
- }
- foreach ($interfaces as $iface => $ifacename): ?>
+ for ($i = 1; isset($config['interfaces']['opt' . $i]); $i++) {
+ if (isset($config['interfaces']['opt' . $i]['enable']))
+ $interfaces['opt' . $i] = $config['interfaces']['opt' . $i]['descr'];
+ }
+ foreach ($interfaces as $iface => $ifacename):
+ ?>
<option value="<?=$iface;?>" <?php if ($iface == $pconfig['cinterface']) echo "selected"; ?>>
<?=htmlspecialchars($ifacename);?>
</option>
OpenPOWER on IntegriCloud