Fix for SSL redirect if ssl port != 443

Before it used to forward to https://site:80 as it only checked for
domain[port] to be !=443, wich the redirecting vhost usualy is.
Now we check for destination port !=443.
Customer still has to be carefull when setting ports and IPs,
different ports on different IPs on same domain will always cause
trouble.

tilman19, tilman@3c7.de
This commit is contained in:
Tilman Klaeger
2013-09-30 01:01:10 +02:00
parent 7b918ec982
commit 573ada496a

View File

@@ -663,9 +663,14 @@ class apache
&& $domain['ssl'] == '1'
&& $domain['ssl_redirect'] == '1')
) {
$_sslport = '';
if ($domain['port'] != '443') {
$_sslport = ":".$domain['port'];
$_sslport = ''; // We must not check if our port differs from port 443, but if there is a destination-port != 443
// This returns the lowest port != 443 with ssl enabled, if any
$ssldestport = $this->db->query_first("SELECT `ip`.`port` FROM ".TABLE_PANEL_IPSANDPORTS." `ip`
LEFT JOIN `".TABLE_DOMAINTOIP."` `dip` ON (`ip`.`id` = `dip`.`id_ipandports`)
WHERE `dip`.`id_domain` = '$domain[id]' AND `ip`.`ssl` = '1' AND `ip`.`port` != 443
ORDER BY `ip`.`port` LIMIT 1;");
if ($ssldestport['port'] != '') {
$_sslport = ":".$ssldestport['port'];
}
$domain['documentroot'] = 'https://' . $domain['domain'] . $_sslport . '/';
}