Hanno Böck commited on 2018-08-07 20:24:06
Zeige 2 geänderte Dateien mit 36 Einfügungen und 9 Löschungen.
| ... | ... |
@@ -105,6 +105,19 @@ function verify_input_hostname($input, $wildcard=false) |
| 105 | 105 |
} |
| 106 | 106 |
|
| 107 | 107 |
|
| 108 |
+function verify_input_hostname_utf8($input) |
|
| 109 |
+{
|
|
| 110 |
+ $puny = idn_to_ascii($input, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46); |
|
| 111 |
+ if ($puny === false) {
|
|
| 112 |
+ system_failure("Ungültiger Hostname! idn ".$input);
|
|
| 113 |
+ } |
|
| 114 |
+ $filter = filter_var($puny, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME); |
|
| 115 |
+ if ($filter === false) {
|
|
| 116 |
+ system_failure("Ungültiger Hostname! filter ".$input);
|
|
| 117 |
+ } |
|
| 118 |
+} |
|
| 119 |
+ |
|
| 120 |
+ |
|
| 108 | 121 |
function verify_input_ipv4($input) |
| 109 | 122 |
{
|
| 110 | 123 |
if (! preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $input)) {
|
| ... | ... |
@@ -37,7 +37,7 @@ if ($_GET['action'] == 'edit') {
|
| 37 | 37 |
} |
| 38 | 38 |
DEBUG($vhost); |
| 39 | 39 |
|
| 40 |
- $hostname = filter_input_hostname($_POST['hostname'], true); |
|
| 40 |
+ $hostname = strtolower(trim($_POST['hostname'])); |
|
| 41 | 41 |
|
| 42 | 42 |
$domainname = null; |
| 43 | 43 |
$domain_id = (int) $_POST['domain']; |
| ... | ... |
@@ -69,6 +69,12 @@ if ($_GET['action'] == 'edit') {
|
| 69 | 69 |
} |
| 70 | 70 |
} |
| 71 | 71 |
|
| 72 |
+ $fqdn = ($hostname!==""?$hostname.".":"").$domainname; |
|
| 73 |
+ verify_input_hostname_utf8($fqdn); |
|
| 74 |
+ if ($aliaswww) {
|
|
| 75 |
+ verify_input_hostname_utf8("www.".$fqdn);
|
|
| 76 |
+ } |
|
| 77 |
+ |
|
| 72 | 78 |
$docroot = ''; |
| 73 | 79 |
if ($_POST['vhost_type'] == 'regular' || $_POST['vhost_type'] == 'dav') {
|
| 74 | 80 |
$defaultdocroot = $vhost['homedir'].'/websites/'.((strlen($hostname) > 0) ? $hostname.'.' : '').($domainname).'/htdocs'; |
| ... | ... |
@@ -282,18 +288,20 @@ if ($_GET['action'] == 'edit') {
|
| 282 | 288 |
$alias['vhost'] = $vhost['id']; |
| 283 | 289 |
|
| 284 | 290 |
|
| 285 |
- $hostname = filter_input_hostname($_POST['hostname'], true); |
|
| 286 |
- $domainid = (int) $_POST['domain']; |
|
| 287 |
- if ($domainid >= 0) {
|
|
| 291 |
+ $hostname = strtolower(trim($_POST['hostname'])); |
|
| 292 |
+ |
|
| 293 |
+ $domain_id = (int) $_POST['domain']; |
|
| 294 |
+ if ($domain_id >= 0) {
|
|
| 288 | 295 |
$domain = new Domain((int) $_POST['domain']); |
| 289 | 296 |
$domain->ensure_userdomain(); |
| 290 |
- $domainid = $domain->id; |
|
| 291 |
- } |
|
| 292 |
- if ($domainid == -1) {
|
|
| 297 |
+ $domain_id = $domain->id; |
|
| 298 |
+ $domainname = $domain->fqdn; |
|
| 299 |
+ } elseif ($domain_id == -1) {
|
|
| 293 | 300 |
# use configured user_vhosts_domain |
| 294 | 301 |
$userdomain = userdomain(); |
| 295 | 302 |
$domain = new Domain((int) $userdomain['id']); |
| 296 |
- $domainid = $domain->id; |
|
| 303 |
+ $domain_id = $domain->id; |
|
| 304 |
+ $domainname = $domain->fqdn; |
|
| 297 | 305 |
$hostname = $hostname.'.'.$_SESSION['userinfo']['username']; |
| 298 | 306 |
$hostname = trim($hostname, " .-"); |
| 299 | 307 |
} |
| ... | ... |
@@ -304,6 +312,12 @@ if ($_GET['action'] == 'edit') {
|
| 304 | 312 |
$aliaswww = in_array('aliaswww', $_POST['options']);
|
| 305 | 313 |
$forward = in_array('forward', $_POST['options']);
|
| 306 | 314 |
|
| 315 |
+ $fqdn = ($hostname!==""?$hostname.".":"").$domainname; |
|
| 316 |
+ verify_input_hostname_utf8($fqdn); |
|
| 317 |
+ if ($aliaswww) {
|
|
| 318 |
+ verify_input_hostname_utf8("www.".$fqdn);
|
|
| 319 |
+ } |
|
| 320 |
+ |
|
| 307 | 321 |
$new_options = array(); |
| 308 | 322 |
if ($aliaswww) {
|
| 309 | 323 |
array_push($new_options, 'aliaswww'); |
| ... | ... |
@@ -316,7 +330,7 @@ if ($_GET['action'] == 'edit') {
|
| 316 | 330 |
DEBUG('New options: '.$options);
|
| 317 | 331 |
|
| 318 | 332 |
$alias['hostname'] = $hostname; |
| 319 |
- $alias['domain_id'] = $domainid; |
|
| 333 |
+ $alias['domain_id'] = $domain_id; |
|
| 320 | 334 |
|
| 321 | 335 |
$alias ['options'] = $options; |
| 322 | 336 |
|
| 323 | 337 |