From c4417ba5399a06402e4bff3c7237176919186772 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 12 Jul 2021 07:40:40 +0000 Subject: [PATCH 1/2] Update installer_base.lib.php --- install/lib/installer_base.lib.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 7fa747eecd..da50c79808 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 -- GitLab From 6ed08cf68cc09368f805629f8367e69fda3d6d6f Mon Sep 17 00:00:00 2001 From: Jesse Norell Date: Mon, 15 Mar 2021 11:14:01 -0600 Subject: [PATCH 2/2] allow 1-char domain names --- interface/lib/classes/remote.d/dns.inc.php | 2 +- interface/web/admin/form/server_config.tform.php | 2 +- interface/web/client/form/domain.tform.php | 2 +- interface/web/dns/dns_wizard.php | 10 ++++++---- interface/web/dns/form/dns_slave.tform.php | 2 +- interface/web/dns/form/dns_soa.tform.php | 2 +- interface/web/mail/ajax_get_json.php | 2 +- interface/web/mail/form/mail_aliasdomain.tform.php | 2 +- interface/web/mail/form/mail_domain_catchall.tform.php | 2 +- interface/web/mail/form/mail_mailinglist.tform.php | 2 +- interface/web/mail/form/xmpp_domain.tform.php | 2 +- 11 files changed, 16 insertions(+), 14 deletions(-) diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 463b474cd1..15f47db874 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 d5133f2a01..47a48a3c27 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 a3dc1aaac0..f521a55b2d 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 bef4422ef3..90e2fef1c4 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 55e085861a..bf684f9868 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 fe71757788..b9e402f441 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 dfc9dc220c..c40c3bf401 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 a0d1024989..c94e1a9311 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 95e10354cc..ac4631bedb 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 ba877f410c..295bd8d571 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 c703b0bea3..28262923b9 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' => '', -- GitLab