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 |