diff options
author | Francois Blanchette <fblanchette@datavalet.com> | 2014-02-07 15:11:58 -0500 |
---|---|---|
committer | Francois Blanchette <fblanchette@datavalet.com> | 2014-02-07 15:11:58 -0500 |
commit | d460371416d4e2cfef976d5a7616f63f6faa203f (patch) | |
tree | cdd99689b5f1352c316ff33bdb9c7eb2de835a6b /etc/inc/captiveportal.inc | |
parent | 59c6e2181f4c95eb68c9ef909b2675bea1d4ec8f (diff) | |
download | pfsense-d460371416d4e2cfef976d5a7616f63f6faa203f.zip pfsense-d460371416d4e2cfef976d5a7616f63f6faa203f.tar.gz |
Replaced gethostbyname() with gethostbynamel() to get a list of all IPs associated with the dns name and add them to the allowed list
Diffstat (limited to 'etc/inc/captiveportal.inc')
-rw-r--r-- | etc/inc/captiveportal.inc | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc index aaa0198..1322f20 100644 --- a/etc/inc/captiveportal.inc +++ b/etc/inc/captiveportal.inc @@ -1025,13 +1025,13 @@ function captiveportal_allowedip_configure_entry($ipent, $ishostname = false) { */ if ($ishostname === true) { if (!$g['booting']) { - $ipaddress = gethostbyname($ipent['hostname']); - if (!is_ipaddr($ipaddress)) + $ipaddress = gethostbynamel($ipent['hostname']); + if(!is_array($ipaddress) || empty($ipaddress)) return; - } else - $ipaddress = ""; - } else - $ipaddress = $ipent['ip']; + } else + $ipaddress = array(); + } else + $ipaddress = array($ipent['ip']); $rules = ""; $cp_filterdns_conf = ""; @@ -1045,15 +1045,17 @@ function captiveportal_allowedip_configure_entry($ipent, $ishostname = false) { if ($ishostname === true) { $cp_filterdns_conf .= "ipfw {$ipent['hostname']} 3 pipe {$pipeno}\n"; $cp_filterdns_conf .= "ipfw {$ipent['hostname']} 4 pipe {$pipedown}\n"; - if (!is_ipaddr($ipaddress)) + if (empty($ipaddress)) return array("", $cp_filterdns_conf); } $subnet = ""; if (!empty($ipent['sn'])) $subnet = "/{$ipent['sn']}"; - $rules .= "table 3 add {$ipaddress}{$subnet} {$pipeno}\n"; - $rules .= "table 4 add {$ipaddress}{$subnet} {$pipedown}\n"; - + foreach($ipaddress AS $one_address) { + $rules .= "table 3 add {$one_address}{$subnet} {$pipeno}\n"; + $rules .= "table 4 add {$one_address}{$subnet} {$pipedown}\n"; + } + if ($ishostname === true) return array($rules, $cp_filterdns_conf); else |