idna convert the whole URI for uri's in docroot as redirect, fixes #1654
Signed-off-by: Michael Kaufmann (d00p) <d00p@froxlor.org>
This commit is contained in:
@@ -67,6 +67,16 @@ class idna_convert_wrapper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function encode_uri($to_encode)
|
||||||
|
{
|
||||||
|
if (version_compare("5.6.0", PHP_VERSION, ">=")) {
|
||||||
|
return $this->_do_action('encode', $to_encode);
|
||||||
|
} else {
|
||||||
|
$to_encode = $this->is_utf8($to_encode) ? $to_encode : utf8_encode($to_encode);
|
||||||
|
return $this->idna_converter->encodeUri($to_encode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decode a domain name, a email address or a list of one of both.
|
* Decode a domain name, a email address or a list of one of both.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -860,7 +860,7 @@ class apache extends HttpConfigBase
|
|||||||
$domain['documentroot'] = trim($domain['documentroot']);
|
$domain['documentroot'] = trim($domain['documentroot']);
|
||||||
|
|
||||||
if (preg_match('/^https?\:\/\//', $domain['documentroot'])) {
|
if (preg_match('/^https?\:\/\//', $domain['documentroot'])) {
|
||||||
$corrected_docroot = $this->idnaConvert->encode($domain['documentroot']);
|
$corrected_docroot = $this->idnaConvert->encode_uri($domain['documentroot']);
|
||||||
|
|
||||||
// Get domain's redirect code
|
// Get domain's redirect code
|
||||||
$code = getDomainRedirectCode($domain['id']);
|
$code = getDomainRedirectCode($domain['id']);
|
||||||
@@ -881,7 +881,7 @@ class apache extends HttpConfigBase
|
|||||||
$vhost_content .= ' RewriteRule ^/(.*) ' . $corrected_docroot . '$1' . $modrew_red . "\n";
|
$vhost_content .= ' RewriteRule ^/(.*) ' . $corrected_docroot . '$1' . $modrew_red . "\n";
|
||||||
$vhost_content .= ' </IfModule>' . "\n";
|
$vhost_content .= ' </IfModule>' . "\n";
|
||||||
$vhost_content .= ' <IfModule !mod_rewrite.c>' . "\n";
|
$vhost_content .= ' <IfModule !mod_rewrite.c>' . "\n";
|
||||||
$vhost_content .= ' Redirect ' . $code . ' / ' . $this->idnaConvert->encode($domain['documentroot']) . "\n";
|
$vhost_content .= ' Redirect ' . $code . ' / ' . $corrected_docroot . "\n";
|
||||||
$vhost_content .= ' </IfModule>' . "\n";
|
$vhost_content .= ' </IfModule>' . "\n";
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
|||||||
@@ -430,7 +430,7 @@ class lighttpd extends HttpConfigBase
|
|||||||
|
|
||||||
if (preg_match('/^https?\:\/\//', $domain['documentroot'])) {
|
if (preg_match('/^https?\:\/\//', $domain['documentroot'])) {
|
||||||
$vhost_content .= ' url.redirect = (' . "\n";
|
$vhost_content .= ' url.redirect = (' . "\n";
|
||||||
$vhost_content .= ' "^/(.*)$" => "' . $this->idnaConvert->encode($domain['documentroot']) . '$1"' . "\n";
|
$vhost_content .= ' "^/(.*)$" => "' . $this->idnaConvert->encode_uri($domain['documentroot']) . '$1"' . "\n";
|
||||||
$vhost_content .= ' )' . "\n";
|
$vhost_content .= ' )' . "\n";
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ class nginx extends HttpConfigBase {
|
|||||||
|
|
||||||
// if the documentroot is an URL we just redirect
|
// if the documentroot is an URL we just redirect
|
||||||
if (preg_match('/^https?\:\/\//', $domain['documentroot'])) {
|
if (preg_match('/^https?\:\/\//', $domain['documentroot'])) {
|
||||||
$uri = $this->idnaConvert->encode($domain['documentroot']);
|
$uri = $this->idnaConvert->encode_uri($domain['documentroot']);
|
||||||
if (substr($uri, -1) == '/') {
|
if (substr($uri, -1) == '/') {
|
||||||
$uri = substr($uri, 0, -1);
|
$uri = substr($uri, 0, -1);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user