fix redirect to non-standard-ssl port and also implement it for lighttpd

Signed-off-by: Michael Kaufmann (d00p) <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann (d00p)
2013-09-30 08:20:03 +02:00
parent 5e4cb880f7
commit f9459e92e7
3 changed files with 50 additions and 9 deletions

View File

@@ -398,10 +398,24 @@ class nginx
&& $domain['ssl'] == '1'
&& $domain['ssl_redirect'] == '1')
{
// We must not check if our port differs from port 443,
// but if there is a destination-port != 443
$_sslport = '';
if ($domain['port'] != '443') {
$_sslport = ":".$domain['port'];
// This returns the first port that is != 443 with ssl enabled, if any
// ordered by ssl-certificate (if any) so that the ip/port combo
// with certificate is used
$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` = '".(int)$domain['id']."'
AND `ip`.`ssl` = '1' AND `ip`.`port` != 443
ORDER BY `ip`.`ssl_cert_file` DESC, `ip`.`port` LIMIT 1;"
);
if ($ssldestport['port'] != '') {
$_sslport = ":".$ssldestport['port'];
}
$domain['documentroot'] = 'https://' . $domain['domain'] . $_sslport . '/';
}