summaryrefslogtreecommitdiffstats
path: root/src/etc/inc
diff options
context:
space:
mode:
authorChris Buechler <cmb@pfsense.org>2016-01-04 22:28:55 -0600
committerRenato Botelho <renato@netgate.com>2016-01-05 09:08:10 -0200
commit1d0c3a109692a918f36aa52693c9264e98d0269c (patch)
treea9bab5722de8349b6d3a6f9b6c308e3716b4d44a /src/etc/inc
parent481909217ea419943dd7dd15bbde12e9d9895b7f (diff)
downloadpfsense-1d0c3a109692a918f36aa52693c9264e98d0269c.zip
pfsense-1d0c3a109692a918f36aa52693c9264e98d0269c.tar.gz
Add nginx redirection for captive portal
Diffstat (limited to 'src/etc/inc')
-rw-r--r--src/etc/inc/system.inc30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/etc/inc/system.inc b/src/etc/inc/system.inc
index e71a3eb..992e647 100644
--- a/src/etc/inc/system.inc
+++ b/src/etc/inc/system.inc
@@ -1170,8 +1170,25 @@ function system_generate_nginx_config($filename,
}
if ($captive_portal !== false) {
- $captive_portal_rewrite = "url.rewrite-once = ( \"(.*captiveportal.*)\" => \"$1\", \"(.*)\" => \"/index.php?zone={$captive_portal}&redirurl=$1\" )\n";
-
+ $cp_interfaces = explode(",", $config['captiveportal'][$captive_portal]['interface']);
+ $cp_hostcheck = "";
+ foreach ($cp_interfaces as $cpint) {
+ $cpint_ip = get_interface_ip($cpint);
+ if (is_ipaddr($cpint_ip)) {
+ $cp_hostcheck .= "\t\tif (\$http_host = $cpint_ip) {\n";
+ $cp_hostcheck .= "\t\t\tset \$cp_redirect no;\n";
+ $cp_hostcheck .= "\t\t}\n";
+ }
+ }
+ if (isset($config['captiveportal'][$captive_portal]['httpsname'])) {
+ $cp_hostcheck .= "\t\tif (\$http_host = {$config['captiveportal'][$captive_portal]['httpsname']}) {\n";
+ $cp_hostcheck .= "\t\t\tset \$cp_redirect no;\n";
+ $cp_hostcheck .= "\t\t}\n";
+ }
+ $cp_rewrite = "\t\tif (\$cp_redirect = '') {\n";
+ $cp_rewrite .= "\t\t\trewrite ^ /index.php?zone=$captive_portal&redirurl=\$scheme://\$http_host\$request_uri break;\n";
+ $cp_rewrite .= "\t\t}\n";
+
$maxprocperip = $config['captiveportal'][$captive_portal]['maxprocperip'];
if (empty($maxprocperip)) {
$maxprocperip = 10;
@@ -1264,6 +1281,15 @@ EOD;
$nginx_config .= "\n";
}
+ if ($captive_portal !== false) {
+ $nginx_config .= <<<EOD
+$cp_hostcheck
+$cp_rewrite
+
+EOD;
+
+ }
+
$nginx_config .= <<<EOD
root "{$document_root}";
location / {
OpenPOWER on IntegriCloud