diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 7fa747eecdfa714aae124880eaffb83977aa0390..da50c7980869d9cd01c96f3edc7f609a6b649f96 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -3003,13 +3003,13 @@ class installer_base { // Backup existing ispserver ssl files if(file_exists($ssl_crt_file) || is_link($ssl_crt_file)) { - rename($ssl_crt_file, $ssl_crt_file . '-temporary.bak'); + copy($ssl_crt_file, $ssl_crt_file . '-temporary.bak'); } if(file_exists($ssl_key_file) || is_link($ssl_key_file)) { - rename($ssl_key_file, $ssl_key_file . '-temporary.bak'); + copy($ssl_key_file, $ssl_key_file . '-temporary.bak'); } if(file_exists($ssl_pem_file) || is_link($ssl_pem_file)) { - rename($ssl_pem_file, $ssl_pem_file . '-temporary.bak'); + copy($ssl_pem_file, $ssl_pem_file . '-temporary.bak'); } // Attempt to use Neilpang acme.sh first, as it is now the preferred LE client diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 463b474cd15ebb18b9d86885294a25b658932b2c..15f47db8744985ff60445bc1fc29702089c83db6 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -248,7 +248,7 @@ class remoting_dns extends remoting { return false; } - if(!preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,63}$/', $origin)){ + if(!preg_match('/^[\w\.\-]{1,64}\.[a-zA-Z0-9\-]{2,63}$/', $origin)){ throw new SoapFault('no_domain_found', 'Invalid domain name.'); return false; } diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index d5133f2a0139247d8fe4db67141a85f96fe09b13..47a48a3c279e2bf438a3efeb796debed358b1293 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -131,7 +131,7 @@ $form["tabs"]['server'] = array( 'validators' => array( 0 => array('type' => 'NOTEMPTY', 'errmsg' => 'hostname_error_empty'), 1 => array ('type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/', + 'regex' => '/^[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'hostname_error_regex'), ), 'value' => '', diff --git a/interface/web/client/form/domain.tform.php b/interface/web/client/form/domain.tform.php index a3dc1aaac030bab9328c8beb677d32033c86dea1..f521a55b2dac3b5b8f8c18628f4ffbd2b63aa047 100644 --- a/interface/web/client/form/domain.tform.php +++ b/interface/web/client/form/domain.tform.php @@ -100,7 +100,7 @@ $form["tabs"]['domain'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/', + 'regex' => '/^[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php index bef4422ef3bff11351637a3e5d0f57545ee87fd8..90e2fef1c46935ae47968f376d659b0a27cc90d5 100644 --- a/interface/web/dns/dns_wizard.php +++ b/interface/web/dns/dns_wizard.php @@ -276,18 +276,20 @@ if($_POST['create'] == 1) { } + # fixme: this regex is pretty poor for domain validation if(isset($_POST['domain']) && $_POST['domain'] == '') $error .= $app->lng('error_domain_empty').'
'; - elseif(isset($_POST['domain']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,63}$/', $_POST['domain'])) $error .= $app->lng('error_domain_regex').'
'; + elseif(isset($_POST['domain']) && !preg_match('/^[\w\.\-]{1,64}\.[a-zA-Z0-9\-]{2,63}$/', $_POST['domain'])) $error .= $app->lng('error_domain_regex').'
'; if(isset($_POST['ip']) && $_POST['ip'] == '') $error .= $app->lng('error_ip_empty').'
'; if(isset($_POST['ipv6']) && $_POST['ipv6'] == '') $error .= $app->lng('error_ipv6_empty').'
'; + # fixme: this regex is pretty poor for hostname validation if(isset($_POST['ns1']) && $_POST['ns1'] == '') $error .= $app->lng('error_ns1_empty').'
'; - elseif(isset($_POST['ns1']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns1'])) $error .= $app->lng('error_ns1_regex').'
'; + elseif(isset($_POST['ns1']) && !preg_match('/^[\w\.\-]{1,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns1'])) $error .= $app->lng('error_ns1_regex').'
'; if(isset($_POST['ns2']) && $_POST['ns2'] == '') $error .= $app->lng('error_ns2_empty').'
'; - elseif(isset($_POST['ns2']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns2'])) $error .= $app->lng('error_ns2_regex').'
'; + elseif(isset($_POST['ns2']) && !preg_match('/^[\w\.\-]{1,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns2'])) $error .= $app->lng('error_ns2_regex').'
'; if(isset($_POST['email']) && $_POST['email'] == '') $error .= $app->lng('error_email_empty').'
'; elseif(isset($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) $error .= $app->lng('error_email_regex').'
'; @@ -326,7 +328,7 @@ if($_POST['create'] == 1) { // $enable_dnssec = (($_POST['dnssec'] == 'Y') ? 'Y' : 'N'); // if(isset($_POST['dnssec'])) $vars['dnssec_wanted'] = 'Y'; if(isset($_POST['dnssec'])) $tpl_content = str_replace('[ZONE]', '[ZONE]'."\n".'dnssec_wanted=Y', $tpl_content); - if(isset($_POST['dkim']) && preg_match('/^[\w\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', $_POST['domain'])) { + if(isset($_POST['dkim']) && preg_match('/^[\w\.\-\/]{1,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', $_POST['domain'])) { $sql = $app->db->queryOneRecord("SELECT dkim_public, dkim_selector FROM mail_domain WHERE domain = ? AND dkim = 'y' AND ".$app->tform->getAuthSQL('r'), $_POST['domain']); $public_key = $sql['dkim_public']; if ($public_key!='') { diff --git a/interface/web/dns/form/dns_slave.tform.php b/interface/web/dns/form/dns_slave.tform.php index 55e085861a128c37e24c87a3dc94a75a476e70a2..bf684f98683d72d8d49f02be75925713765c877a 100644 --- a/interface/web/dns/form/dns_slave.tform.php +++ b/interface/web/dns/form/dns_slave.tform.php @@ -96,7 +96,7 @@ $form["tabs"]['dns_slave'] = array ( 'errmsg'=> 'origin_error_unique'), */ 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', + 'regex' => '/^[a-zA-Z0-9\.\-\/]{1,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', 'errmsg'=> 'origin_error_regex'), ), 'default' => '', diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index fe717577881d2253983309d654ca381b65e6edcd..b9e402f4412e94ca36d863c4aed79c8ca1b0b055 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -120,7 +120,7 @@ $form["tabs"]['dns_soa'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'origin_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', + 'regex' => '/^[a-zA-Z0-9\.\-\/]{1,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', 'errmsg'=> 'origin_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/ajax_get_json.php b/interface/web/mail/ajax_get_json.php index dfc9dc220c0b9ea5ff7d5c4c0c5ed90f666449fe..c40c3bf401bdb0a06af0487a0f9104467bca3317 100644 --- a/interface/web/mail/ajax_get_json.php +++ b/interface/web/mail/ajax_get_json.php @@ -113,7 +113,7 @@ header('Content-type: application/json'); echo $json; function validate_domain($domain) { - $regex = '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/'; + $regex = '/^[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/'; if ( preg_match($regex, $domain) === 1 ) return true; else return false; } diff --git a/interface/web/mail/form/mail_aliasdomain.tform.php b/interface/web/mail/form/mail_aliasdomain.tform.php index a0d10249898695f4d3b8dd124684f167adb4045f..c94e1a931113c21275c0fe5c6ea5cf74deafdfc5 100644 --- a/interface/web/mail/form/mail_aliasdomain.tform.php +++ b/interface/web/mail/form/mail_aliasdomain.tform.php @@ -86,7 +86,7 @@ $form["tabs"]['alias'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'source_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^\@[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,20}$/', + 'regex' => '/^\@[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'source_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php index 95e10354cc78cbd10b8da1371cebb2e60bc260c8..ac4631bedbe962cd08c19fefd5b3821fd74d43a2 100644 --- a/interface/web/mail/form/mail_domain_catchall.tform.php +++ b/interface/web/mail/form/mail_domain_catchall.tform.php @@ -86,7 +86,7 @@ $form["tabs"]['catchall'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^\@[\w\.\-]{2,255}\.[a-zA-Z\-]{2,63}$/', + 'regex' => '/^\@[\w\.\-]{1,255}\.[a-zA-Z\-]{2,63}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/form/mail_mailinglist.tform.php b/interface/web/mail/form/mail_mailinglist.tform.php index ba877f410cec3f6c57b4dbe571d2691c9f905d46..295bd8d5710fc33c1736656500ef322eeee6186f 100644 --- a/interface/web/mail/form/mail_mailinglist.tform.php +++ b/interface/web/mail/form/mail_mailinglist.tform.php @@ -87,7 +87,7 @@ $form["tabs"]['mailinglist'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'domain_error_empty'), 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z\-]{2,10}$/', + 'regex' => '/^[\w\.\-]{1,255}\.[a-zA-Z\-]{2,10}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/form/xmpp_domain.tform.php b/interface/web/mail/form/xmpp_domain.tform.php index c703b0bea39b43c60df6234488dc994262a1b5d6..28262923b95f06125faf8c29c88ac4f567c144cd 100644 --- a/interface/web/mail/form/xmpp_domain.tform.php +++ b/interface/web/mail/form/xmpp_domain.tform.php @@ -103,7 +103,7 @@ $form["tabs"]['domain'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/', + 'regex' => '/^[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '',