From c3189ce6c7301c3ec17878fd3918f31d0d3cb18a Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 04 May 2016 07:27:53 -0400 Subject: [PATCH] Merge branch 'stable-3.1' --- interface/web/sites/templates/web_sites_stats_list.htm | 16 +- server/conf/nginx_vhost.conf.master | 8 interface/web/dashboard/lib/lang/ja_dashlet_modules.lng | 1 interface/web/dns/form/dns_soa.tform.php | 2 interface/web/dashboard/lib/lang/el_dashlet_modules.lng | 1 install/tpl/apache_ispconfig.vhost.master | 86 +++++++++------- interface/web/dashboard/lib/lang/ro_dashlet_modules.lng | 1 interface/lib/classes/json_handler.inc.php | 2 interface/web/dashboard/lib/lang/se_dashlet_modules.lng | 1 install/update.php | 2 interface/web/dashboard/dashlets/templates/modules.htm | 4 interface/web/dashboard/lib/lang/en_dashlet_modules.lng | 1 interface/web/client/templates/domain_list.htm | 4 interface/web/dashboard/lib/lang/hu_dashlet_modules.lng | 1 interface/web/admin/lib/lang/de_server_config.lng | 1 interface/web/dashboard/lib/lang/ca_dashlet_modules.lng | 1 server/plugins-available/apache2_plugin.inc.php | 31 ++++- interface/web/dashboard/lib/lang/cz_dashlet_modules.lng | 1 interface/web/dashboard/lib/lang/sk_dashlet_modules.lng | 1 server/plugins-available/nginx_plugin.inc.php | 31 ++++- install/sql/incremental/upd_0082.sql | 1 interface/web/dashboard/lib/lang/pt_dashlet_modules.lng | 1 interface/web/client/templates/client_template_edit_limits.htm | 2 interface/web/dashboard/lib/lang/de_dashlet_modules.lng | 1 interface/web/dashboard/lib/lang/nl_dashlet_modules.lng | 1 interface/web/sites/web_vhost_domain_edit.php | 1 interface/web/dashboard/lib/lang/id_dashlet_modules.lng | 1 interface/web/dashboard/lib/lang/it_dashlet_modules.lng | 1 server/conf/apache_ispconfig.conf.master | 13 +- interface/web/client/form/client.tform.php | 16 -- interface/web/admin/templates/system_config_domains_edit.htm | 12 +- interface/web/dashboard/lib/lang/br_dashlet_modules.lng | 1 interface/web/dashboard/lib/lang/bg_dashlet_modules.lng | 1 interface/web/admin/lib/lang/en_server_config.lng | 1 interface/web/dashboard/lib/lang/es_dashlet_modules.lng | 1 interface/web/dashboard/lib/lang/fi_dashlet_modules.lng | 1 interface/web/dashboard/lib/lang/pl_dashlet_modules.lng | 1 install/install.php | 5 interface/web/dns/form/dns_alias.tform.php | 2 interface/web/dashboard/lib/lang/hr_dashlet_modules.lng | 1 interface/lib/classes/tform_base.inc.php | 19 +++ interface/web/dashboard/lib/lang/tr_dashlet_modules.lng | 1 interface/web/dashboard/lib/lang/fr_dashlet_modules.lng | 1 interface/web/client/form/reseller.tform.php | 16 -- interface/web/dashboard/lib/lang/ar_dashlet_modules.lng | 1 interface/web/dashboard/lib/lang/ru_dashlet_modules.lng | 1 46 files changed, 181 insertions(+), 118 deletions(-) diff --git a/install/install.php b/install/install.php index 1d0e515..cff2265 100644 --- a/install/install.php +++ b/install/install.php @@ -344,12 +344,13 @@ $conf['services']['dns'] = true; } */ + //* Configure Bind if($conf['bind']['installed']) { swriteln('Configuring BIND'); $inst->configure_bind(); $conf['services']['dns'] = true; - if(!$inst->find_installed_apps('haveged')) { + if(!is_installed('haveged')) { swriteln("[INFO] haveged not detected - DNSSEC can fail"); } } @@ -732,7 +733,7 @@ swriteln('Configuring BIND'); $inst->configure_bind(); $conf['services']['dns'] = true; - if(!$inst->find_installed_apps('haveged')) { + if(!is_installed('haveged')) { swriteln("[INFO] haveged not detected - DNSSEC can fail"); } } diff --git a/install/sql/incremental/upd_0082.sql b/install/sql/incremental/upd_0082.sql new file mode 100644 index 0000000..f21e06d --- /dev/null +++ b/install/sql/incremental/upd_0082.sql @@ -0,0 +1 @@ +ALTER TABLE `directive_snippets` ADD `master_directive_snippets_id` int(11) unsigned NOT NULL DEFAULT '0' AFTER `active`; \ No newline at end of file diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index 4503811..6b71378 100644 --- a/install/tpl/apache_ispconfig.vhost.master +++ b/install/tpl/apache_ispconfig.vhost.master @@ -8,101 +8,111 @@ <VirtualHost _default_:<tmpl_var name="vhost_port">> ServerAdmin webmaster@localhost - + <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> - + <IfModule mod_fcgid.c> DocumentRoot /var/www/ispconfig/ SuexecUserGroup ispconfig ispconfig <Directory /var/www/ispconfig/> Options -Indexes +FollowSymLinks +MultiViews +ExecCGI AllowOverride AuthConfig Indexes Limit Options FileInfo - <FilesMatch "\.php$"> - SetHandler fcgid-script - </FilesMatch> + <FilesMatch "\.php$"> + SetHandler fcgid-script + </FilesMatch> FCGIWrapper /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter .php <tmpl_if name='apache_version' op='>' value='2.2' format='version'> - Require all granted - <tmpl_else> + Require all granted + <tmpl_else> Order allow,deny Allow from all - </tmpl_if> + </tmpl_if> </Directory> IPCCommTimeout 7200 - MaxRequestLen 15728640 + MaxRequestLen 15728640 </IfModule> - + <IfModule mpm_itk_module> DocumentRoot /usr/local/ispconfig/interface/web/ - AssignUserId ispconfig ispconfig + AssignUserId ispconfig ispconfig AddType application/x-httpd-php .php <Directory /usr/local/ispconfig/interface/web> # php_admin_value open_basedir "/usr/local/ispconfig/interface:/usr/share:/tmp" Options +FollowSymLinks AllowOverride None <tmpl_if name='apache_version' op='>' value='2.2' format='version'> - Require all granted - <tmpl_else> + Require all granted + <tmpl_else> Order allow,deny Allow from all - </tmpl_if> - php_value magic_quotes_gpc 0 + </tmpl_if> + php_value magic_quotes_gpc 0 </Directory> </IfModule> - + # ErrorLog /var/log/apache2/error.log # CustomLog /var/log/apache2/access.log combined ServerSignature Off - + <IfModule mod_security2.c> SecRuleEngine Off </IfModule> # SSL Configuration <tmpl_var name="ssl_comment">SSLEngine On + <tmpl_if name='apache_version' op='>=' value='2.3.16' format='version'> + <tmpl_var name="ssl_comment">SSLProtocol All -SSLv3 + <tmpl_else> <tmpl_var name="ssl_comment">SSLProtocol All -SSLv2 -SSLv3 + </tmpl_if> <tmpl_var name="ssl_comment">SSLCertificateFile /usr/local/ispconfig/interface/ssl/ispserver.crt <tmpl_var name="ssl_comment">SSLCertificateKeyFile /usr/local/ispconfig/interface/ssl/ispserver.key <tmpl_var name="ssl_bundle_comment">SSLCACertificateFile /usr/local/ispconfig/interface/ssl/ispserver.bundle - <tmpl_var name="ssl_comment">SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4 + <tmpl_var name="ssl_comment">SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS <tmpl_var name="ssl_comment">SSLHonorCipherOrder On + <tmpl_if name='apache_version' op='>=' value='2.4.3' format='version'> + <tmpl_var name="ssl_comment">SSLCompression Off + </tmpl_if> + <tmpl_if name='apache_version' op='>=' value='2.4.11' format='version'> + <tmpl_var name="ssl_comment">SSLSessionTickets Off + </tmpl_if> <IfModule mod_headers.c> Header always add Strict-Transport-Security "max-age=15768000" </IfModule> -<tmpl_if name='apache_version' op='>=' value='2.4' format='version'> - <tmpl_var name="ssl_comment">SSLUseStapling on + <tmpl_if name='apache_version' op='>=' value='2.3.3' format='version'> + <tmpl_var name="ssl_comment">SSLUseStapling On <tmpl_var name="ssl_comment">SSLStaplingResponderTimeout 5 - <tmpl_var name="ssl_comment">SSLStaplingReturnResponderErrors off -</tmpl_if> + <tmpl_var name="ssl_comment">SSLStaplingReturnResponderErrors Off + </tmpl_if> </VirtualHost> -<tmpl_if name='apache_version' op='>=' value='2.4' format='version'> +<tmpl_if name='apache_version' op='>=' value='2.3.3' format='version'> <IfModule mod_ssl.c> <tmpl_var name="ssl_comment">SSLStaplingCache shmcb:/var/run/ocsp(128000) </IfModule> </tmpl_if> <Directory /var/www/php-cgi-scripts> - AllowOverride None - <tmpl_if name='apache_version' op='>' value='2.2' format='version'> - Require all denied - <tmpl_else> - Order Deny,Allow - Deny from all - </tmpl_if> + AllowOverride None + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all denied + <tmpl_else> + Order Deny,Allow + Deny from all + </tmpl_if> </Directory> <Directory /var/www/php-fcgi-scripts> - AllowOverride None - <tmpl_if name='apache_version' op='>' value='2.2' format='version'> - Require all denied - <tmpl_else> - Order Deny,Allow - Deny from all - </tmpl_if> -</Directory> \ No newline at end of file + AllowOverride None + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all denied + <tmpl_else> + Order Deny,Allow + Deny from all + </tmpl_if> +</Directory> diff --git a/install/update.php b/install/update.php index 2dcb53d..94de945 100644 --- a/install/update.php +++ b/install/update.php @@ -378,7 +378,7 @@ } elseif($conf['bind']['installed'] == true) { swriteln('Configuring BIND'); $inst->configure_bind(); - if(!$inst->find_installed_apps('haveged')) { + if(!is_installed('haveged')) { swriteln("[INFO] haveged not detected - DNSSEC can fail"); } } else { diff --git a/interface/lib/classes/json_handler.inc.php b/interface/lib/classes/json_handler.inc.php index 1df5898..d6d58c3 100644 --- a/interface/lib/classes/json_handler.inc.php +++ b/interface/lib/classes/json_handler.inc.php @@ -91,7 +91,7 @@ if(is_array($_POST)) { foreach($_POST as $key => $val) { - $tmp = json_decode($val); + $tmp = json_decode($val, true); if(!$tmp) $params[] = $val; else $params[] = (array)$tmp; } diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index 1739c1f..599cce4 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -831,7 +831,7 @@ } //* Add slashes to all records, when we encode data which shall be inserted into mysql. - if($dbencode == true) $new_record[$key] = $app->db->quote($new_record[$key]); + if($dbencode == true && !is_null($new_record[$key])) $new_record[$key] = $app->db->quote($new_record[$key]); } } return $new_record; @@ -973,13 +973,22 @@ $this->errorMessage .= $errmsg."<br />\r\n"; } } + break; case 'ISEMAIL': + $error = false; if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n'; if($validator['allowempty'] == 'y' && $field_value == '') { //* Do nothing } else { if(function_exists('filter_var')) { if(filter_var($field_value, FILTER_VALIDATE_EMAIL) === false) { + $error = true; + } else { + if (!preg_match("/^[^\\+]+$/", $field_value)) { // * disallow + in local-part + $error = true; + } + } + if ($error) { $errmsg = $validator['errmsg']; if(isset($this->wordbook[$errmsg])) { $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n"; @@ -987,8 +996,10 @@ $this->errorMessage .= $errmsg."<br />\r\n"; } } + } else $this->errorMessage .= "function filter_var missing <br />\r\n"; } + unset($error); break; case 'ISINT': if(function_exists('filter_var') && $field_value < 2147483647) { @@ -1028,7 +1039,7 @@ break; case 'V6PREFIXLENGTH': // find shortes ipv6 subnet can`t be longer - $sql_v6 = $app->db->queryOneRecord("SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND virtualhost = 'y' ORDER BY CHAR_LENGTH(ip_address) ASC LIMIT 0,1;"); + $sql_v6 = $app->db->queryOneRecord("SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND virtualhost = 'y' ORDER BY CHAR_LENGTH(ip_address) ASC LIMIT 0,1"); $sql_v6_explode=explode(':',$sql_v6['ip_address']); $explode_field_value = explode(':',$field_value); if (count($sql_v6_explode) < count($explode_field_value) && isset($sql_v6['ip_address'])) { @@ -1233,7 +1244,7 @@ } } else { $sql_insert_key .= "`$key`, "; - $sql_insert_val .= "'".$record[$key]."', "; + $sql_insert_val .= (is_null($record[$key]) ? 'NULL' : "'".$record[$key]."'") . ", "; } } else { if($field['formtype'] == 'PASSWORD') { @@ -1260,7 +1271,7 @@ $sql_update .= "`$key` = '".$record[$key]."', "; } } else { - $sql_update .= "`$key` = '".$record[$key]."', "; + $sql_update .= "`$key` = " . (is_null($record[$key]) ? 'NULL' : "'".$record[$key]."'") . ", "; } } } else { diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 6d3342c..c9fc989 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -173,6 +173,7 @@ $wb['backup_mode_txt'] = 'Backupmodus'; $wb['backup_mode_userzip'] = 'Backup Dateien gehören dem Web Benutzer (.zip Datei)'; $wb['backup_mode_rootgz'] = 'Backup aller Dateien des Webverzeichnisses als Root Benutzer'; +$wb['backup_time_txt'] = 'Backupzeit'; $wb['firewall_txt'] = 'Firewall'; $wb['mailbox_quota_stats_txt'] = 'E-Mailkonto Beschränkung Statistiken'; $wb['enable_ip_wildcard_txt'] = 'IP Adressen Wildcard (*) aktivieren'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 19b08f1..c464ff9 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -101,6 +101,7 @@ $wb["backup_mode_txt"] = 'Backup mode'; $wb["backup_mode_userzip"] = 'Backup web files owned by web user as zip'; $wb["backup_mode_rootgz"] = 'Backup all files in web directory as root user'; +$wb["backup_time_txt"] = 'Backup time'; $wb["server_type_txt"] = 'Server Type'; $wb["nginx_vhost_conf_dir_txt"] = 'Nginx Vhost config dir'; $wb["nginx_vhost_conf_enabled_dir_txt"] = 'Nginx Vhost config enabled dir'; diff --git a/interface/web/admin/templates/system_config_domains_edit.htm b/interface/web/admin/templates/system_config_domains_edit.htm index c651e42..95cc33b 100644 --- a/interface/web/admin/templates/system_config_domains_edit.htm +++ b/interface/web/admin/templates/system_config_domains_edit.htm @@ -6,13 +6,13 @@ <tmpl_if name="list_desc_txt"><p><tmpl_var name="list_desc_txt"></p></tmpl_if> <div class="form-group"> - <div style="float:left;width:100%"> - <p class="label" style="width:270px">{tmpl_var name='use_domain_module_txt'}</p> - <div class="col-sm-9"> - {tmpl_var name='use_domain_module'} - </div> + <div class="col-sm-3 text-right"> + {tmpl_var name='use_domain_module'} </div> - <div style="float:left;width:500px;margin-top:20px">{tmpl_var name='use_domain_module_hint'}</div> + <div class="col-sm-9"> + <p><strong>{tmpl_var name='use_domain_module_txt'}</strong></p> + <p>{tmpl_var name='use_domain_module_hint'}</p> + </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='new_domain_txt'}</label> diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php index 34cdd2e..3a8d4f2 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -594,9 +594,7 @@ 'class'=> 'custom_datasource', 'function'=> 'client_servers' ), - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'no_mail_server_error'), - 1 => array ( 'type' => 'CUSTOM', + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_client', 'function' => 'check_used_servers', 'errmsg'=> 'mail_servers_used'), @@ -919,9 +917,7 @@ 'class'=> 'custom_datasource', 'function'=> 'client_servers' ), - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'no_web_server_error'), - 1 => array ( 'type' => 'CUSTOM', + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_client', 'function' => 'check_used_servers', 'errmsg'=> 'web_servers_used'), @@ -1141,9 +1137,7 @@ 'class'=> 'custom_datasource', 'function'=> 'client_servers' ), - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'no_dns_server_error'), - 1 => array ( 'type' => 'CUSTOM', + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_client', 'function' => 'check_used_servers', 'errmsg'=> 'dns_servers_used'), @@ -1238,9 +1232,7 @@ 'class'=> 'custom_datasource', 'function'=> 'client_servers' ), - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'no_db_server_error'), - 1 => array ( 'type' => 'CUSTOM', + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_client', 'function' => 'check_used_servers', 'errmsg'=> 'db_servers_used'), diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php index b41cd53..1c60597 100644 --- a/interface/web/client/form/reseller.tform.php +++ b/interface/web/client/form/reseller.tform.php @@ -593,9 +593,7 @@ 'keyfield'=> 'server_id', 'valuefield'=> 'server_name' ), - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'no_mail_server_error'), - 1 => array ( 'type' => 'CUSTOM', + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_client', 'function' => 'check_used_servers', 'errmsg'=> 'mail_servers_used'), @@ -918,9 +916,7 @@ 'keyfield'=> 'server_id', 'valuefield'=> 'server_name' ), - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'no_web_server_error'), - 1 => array ( 'type' => 'CUSTOM', + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_client', 'function' => 'check_used_servers', 'errmsg'=> 'web_servers_used'), @@ -1138,9 +1134,7 @@ 'keyfield'=> 'server_id', 'valuefield'=> 'server_name' ), - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'no_dns_server_error'), - 1 => array ( 'type' => 'CUSTOM', + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_client', 'function' => 'check_used_servers', 'errmsg'=> 'dns_servers_used'), @@ -1238,9 +1232,7 @@ 'keyfield'=> 'server_id', 'valuefield'=> 'server_name' ), - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'no_db_server_error'), - 1 => array ( 'type' => 'CUSTOM', + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_client', 'function' => 'check_used_servers', 'errmsg'=> 'db_servers_used'), diff --git a/interface/web/client/templates/client_template_edit_limits.htm b/interface/web/client/templates/client_template_edit_limits.htm index 5e0abb9..6a09bb6 100644 --- a/interface/web/client/templates/client_template_edit_limits.htm +++ b/interface/web/client/templates/client_template_edit_limits.htm @@ -138,7 +138,7 @@ </a> </h4> </div> - <div id="collapseMail" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingMail> + <div id="collapseMail" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingMail"> <div class="panel-body"> <div class="form-group"> <label for="limit_maildomain" class="col-sm-3 control-label">{tmpl_var name='limit_maildomain_txt'}</label> diff --git a/interface/web/client/templates/domain_list.htm b/interface/web/client/templates/domain_list.htm index 825b298..8dda689 100644 --- a/interface/web/client/templates/domain_list.htm +++ b/interface/web/client/templates/domain_list.htm @@ -45,10 +45,10 @@ <tfoot> <tr> - <td colspan="4"><tmpl_var name="paging"></td> + <td colspan="3"><tmpl_var name="paging"></td> </tr> </tfoot> </table> </div> - \ No newline at end of file + diff --git a/interface/web/dashboard/dashlets/templates/modules.htm b/interface/web/dashboard/dashlets/templates/modules.htm index d42bf2e..0c7322b 100644 --- a/interface/web/dashboard/dashlets/templates/modules.htm +++ b/interface/web/dashboard/dashlets/templates/modules.htm @@ -9,8 +9,8 @@ <div class='title'>{tmpl_var name='modules_title'}</div> </div> </div> - <a href='#' class='btn btn-default button' data-capp='{tmpl_var name="modules_name"}'>Go to {tmpl_var name='modules_title'}</a> + <a href='#' class='btn btn-default button' data-capp='{tmpl_var name="modules_name"}'>{tmpl_var name='go_to_txt'} {tmpl_var name='modules_title'}</a> </li> </tmpl_loop> </ul> - </div> \ No newline at end of file + </div> diff --git a/interface/web/dashboard/lib/lang/ar_dashlet_modules.lng b/interface/web/dashboard/lib/lang/ar_dashlet_modules.lng index 6a02127..af9fb02 100644 --- a/interface/web/dashboard/lib/lang/ar_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/ar_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Available Modules'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/bg_dashlet_modules.lng b/interface/web/dashboard/lib/lang/bg_dashlet_modules.lng index 2b0f0e2..6e6cd61 100644 --- a/interface/web/dashboard/lib/lang/bg_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/bg_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Налични Модули'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/br_dashlet_modules.lng b/interface/web/dashboard/lib/lang/br_dashlet_modules.lng index 11268f7..fab0506 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Módulos Disponíveis'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/ca_dashlet_modules.lng b/interface/web/dashboard/lib/lang/ca_dashlet_modules.lng index 4d6a5d8..f8f0818 100644 --- a/interface/web/dashboard/lib/lang/ca_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/ca_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Modules disponibles'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_modules.lng b/interface/web/dashboard/lib/lang/cz_dashlet_modules.lng index 66275f1..25198e1 100644 --- a/interface/web/dashboard/lib/lang/cz_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/cz_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Dostupné moduly'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/de_dashlet_modules.lng b/interface/web/dashboard/lib/lang/de_dashlet_modules.lng index 3d2c6c6..0ac708c 100644 --- a/interface/web/dashboard/lib/lang/de_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/de_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Verfügbare Module'; +$wb['go_to_txt'] = 'Gehe zu'; ?> diff --git a/interface/web/dashboard/lib/lang/el_dashlet_modules.lng b/interface/web/dashboard/lib/lang/el_dashlet_modules.lng index 95f750a..6f2064f 100644 --- a/interface/web/dashboard/lib/lang/el_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/el_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Διαθέσιμα αρθρώματα'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/en_dashlet_modules.lng b/interface/web/dashboard/lib/lang/en_dashlet_modules.lng index 4bc94f7..ef088a3 100644 --- a/interface/web/dashboard/lib/lang/en_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/en_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = "Available Modules"; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/es_dashlet_modules.lng b/interface/web/dashboard/lib/lang/es_dashlet_modules.lng index 66987b2..d567f09 100755 --- a/interface/web/dashboard/lib/lang/es_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/es_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Módulos disponibles'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/fi_dashlet_modules.lng b/interface/web/dashboard/lib/lang/fi_dashlet_modules.lng index 6a02127..af9fb02 100644 --- a/interface/web/dashboard/lib/lang/fi_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/fi_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Available Modules'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/fr_dashlet_modules.lng b/interface/web/dashboard/lib/lang/fr_dashlet_modules.lng index 4d6a5d8..f8f0818 100644 --- a/interface/web/dashboard/lib/lang/fr_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/fr_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Modules disponibles'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_modules.lng b/interface/web/dashboard/lib/lang/hr_dashlet_modules.lng index 76f2a1f..3798185 100644 --- a/interface/web/dashboard/lib/lang/hr_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/hr_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Dostupni moduli'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/hu_dashlet_modules.lng b/interface/web/dashboard/lib/lang/hu_dashlet_modules.lng index 8d6a994..f5d38b5 100644 --- a/interface/web/dashboard/lib/lang/hu_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/hu_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Elérhető Modulok'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/id_dashlet_modules.lng b/interface/web/dashboard/lib/lang/id_dashlet_modules.lng index 6a3a48c..7ce7159 100644 --- a/interface/web/dashboard/lib/lang/id_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/id_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Modul yang tersedia'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/it_dashlet_modules.lng b/interface/web/dashboard/lib/lang/it_dashlet_modules.lng index d9e5cd8..69d5c07 100644 --- a/interface/web/dashboard/lib/lang/it_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/it_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Moduli disponibili'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/ja_dashlet_modules.lng b/interface/web/dashboard/lib/lang/ja_dashlet_modules.lng index 6a02127..af9fb02 100644 --- a/interface/web/dashboard/lib/lang/ja_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/ja_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Available Modules'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/nl_dashlet_modules.lng b/interface/web/dashboard/lib/lang/nl_dashlet_modules.lng index 5b8067f..4788b7d 100644 --- a/interface/web/dashboard/lib/lang/nl_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/nl_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Beschikbare modules'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/pl_dashlet_modules.lng b/interface/web/dashboard/lib/lang/pl_dashlet_modules.lng index fafcc61..6f9b955 100644 --- a/interface/web/dashboard/lib/lang/pl_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/pl_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Dostępne moduły'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/pt_dashlet_modules.lng b/interface/web/dashboard/lib/lang/pt_dashlet_modules.lng index 6a02127..af9fb02 100644 --- a/interface/web/dashboard/lib/lang/pt_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/pt_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Available Modules'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/ro_dashlet_modules.lng b/interface/web/dashboard/lib/lang/ro_dashlet_modules.lng index 6a02127..af9fb02 100644 --- a/interface/web/dashboard/lib/lang/ro_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/ro_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Available Modules'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/ru_dashlet_modules.lng b/interface/web/dashboard/lib/lang/ru_dashlet_modules.lng index f33ae57..e4ff421 100644 --- a/interface/web/dashboard/lib/lang/ru_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/ru_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Доступные модули'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/se_dashlet_modules.lng b/interface/web/dashboard/lib/lang/se_dashlet_modules.lng index a6f9728..4c77392 100644 --- a/interface/web/dashboard/lib/lang/se_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/se_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Tillgängliga moduler'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/sk_dashlet_modules.lng b/interface/web/dashboard/lib/lang/sk_dashlet_modules.lng index 6a02127..af9fb02 100644 --- a/interface/web/dashboard/lib/lang/sk_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/sk_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Available Modules'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng b/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng index 90de86f..c551510 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng @@ -1,3 +1,4 @@ <?php $wb['available_modules_txt'] = 'Kullanılabilecek Modüller'; +$wb['go_to_txt'] = 'Go to'; ?> diff --git a/interface/web/dns/form/dns_alias.tform.php b/interface/web/dns/form/dns_alias.tform.php index defcda0..55833b7 100644 --- a/interface/web/dns/form/dns_alias.tform.php +++ b/interface/web/dns/form/dns_alias.tform.php @@ -88,7 +88,7 @@ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'name_error_empty'), 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-]{1,255}$/', + 'regex' => '/^[a-zA-Z0-9\.\-\_]{1,255}$/', 'errmsg'=> 'name_error_regex'), ), 'default' => '', diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index 05e9157..d76c403 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -137,7 +137,7 @@ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'mbox_error_empty'), 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_]{0,255}\.$/', + 'regex' => '/^[a-zA-Z0-9\.\-\_\+]{0,255}\.$/', 'errmsg'=> 'mbox_error_regex'), ), 'default' => '', diff --git a/interface/web/sites/templates/web_sites_stats_list.htm b/interface/web/sites/templates/web_sites_stats_list.htm index 7736ac3..3aa1775 100644 --- a/interface/web/sites/templates/web_sites_stats_list.htm +++ b/interface/web/sites/templates/web_sites_stats_list.htm @@ -31,10 +31,10 @@ <tmpl_loop name="records"> <tr> <td><a target="_blank" href="http://{tmpl_var name="domain"}/stats">{tmpl_var name="domain"}</a></td> - <td><a href="#" data-load-content="sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="this_month"} MB</a></td> - <td><a href="#" data-load-content="sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="last_month"} MB</a></td> - <td><a href="#" data-load-content="sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="this_year"} MB</a></td> - <td><a href="#" data-load-content="sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="last_year"} MB</a></td> + <td><a href="#" data-load-content="sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="this_month"}</a></td> + <td><a href="#" data-load-content="sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="last_month"}</a></td> + <td><a href="#" data-load-content="sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="this_year"}</a></td> + <td><a href="#" data-load-content="sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="last_year"}</a></td> <td class="text-right"></td> </tr> </tmpl_loop> @@ -45,10 +45,10 @@ </tmpl_unless> <tr> <td><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_txt"}</a></td> - <td><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_this_month"} MB</a></td> - <td><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_last_month"} MB</a></td> - <td><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_this_year"} MB</a></td> - <td><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_last_year"} MB</a></td> + <td><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_this_month"}</a></td> + <td><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_last_month"}</a></td> + <td><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_this_year"}</a></td> + <td><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_last_year"}</a></td> <td class="text-right"></td> </tr> </tbody> diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 7d6f17a..3da4823 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -757,6 +757,7 @@ * Now we have to check, if we should use the domain-module to select the domain * or not */ + $settings = $app->getconf->get_global_config('domains'); if ($settings['use_domain_module'] == 'y') { /* * The domain-module is in use. diff --git a/server/conf/apache_ispconfig.conf.master b/server/conf/apache_ispconfig.conf.master index c965e3f..79acb9c 100644 --- a/server/conf/apache_ispconfig.conf.master +++ b/server/conf/apache_ispconfig.conf.master @@ -6,6 +6,12 @@ LogFormat "%v %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_ispconfig CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m%d-access.log\" /var/log/ispconfig/httpd" combined_ispconfig +<IfModule mod_headers.c> + <LocationMatch "/.well-known/acme-challenge/*"> + Header set Content-Type "text/plain" + </LocationMatch> +</IfModule> + <Directory /var/www/clients> AllowOverride None <tmpl_if name='apache_version' op='>' value='2.2' format='version'> @@ -14,13 +20,6 @@ Order Deny,Allow Deny from all </tmpl_if> - - <IfModule mod_headers.c> - <LocationMatch "/.well-known/acme-challenge/*"> - Header set Content-Type "text/plain" - </LocationMatch> - </IfModule> - </Directory> # Do not allow access to the root file system of the server for security reasons diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 67f1ee0..f057088 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -263,8 +263,8 @@ } </tmpl_if> -location /\.well-known/acme-challenge { - root /usr/local/ispconfig/interface/acme/.well-known/acme-challenge; +location ~ /\.well-known/acme-challenge/ { + root /usr/local/ispconfig/interface/acme/; index index.html index.htm; try_files $uri =404; } @@ -301,8 +301,8 @@ server_name <tmpl_var name='rewrite_domain'>; -location /\.well-known/acme-challenge { - root /usr/local/ispconfig/interface/acme-challenge; +location ~ /\.well-known/acme-challenge/ { + root /usr/local/ispconfig/interface/acme/; index index.html index.htm; try_files $uri =404; } diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index f7dd300..34623c6 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1232,11 +1232,22 @@ //* check if we have already a Let's Encrypt cert if(!file_exists($crt_tmp_file) && !file_exists($key_tmp_file)) { $app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG); - + + $success = false; if(file_exists("/root/.local/share/letsencrypt/bin/letsencrypt")) { - $this->_exec("/root/.local/share/letsencrypt/bin/letsencrypt auth --text --agree-tos --authenticator webroot --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --email postmaster@$domain --domains $lddomain --webroot-path /usr/local/ispconfig/interface/acme"); + $success = $this->_exec("/root/.local/share/letsencrypt/bin/letsencrypt auth --text --agree-tos --authenticator webroot --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --email postmaster@$domain --domains $lddomain --webroot-path /usr/local/ispconfig/interface/acme"); } - }; + if(!$success) { + // error issuing cert + $app->log('Let\'s Encrypt SSL Cert for: ' . $domain . ' could not be issued.', LOGLEVEL_WARN); + $data['new']['ssl_letsencrypt'] = 'n'; + if($data['old']['ssl'] == 'n') $data['new']['ssl'] = 'n'; + /* Update the DB of the (local) Server */ + $app->db->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']); + /* Update also the master-DB of the Server-Farm */ + $app->dbmaster->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']); + } + } //* check is been correctly created if(file_exists($crt_tmp_file) OR file_exists($key_tmp_file)) { @@ -1279,11 +1290,11 @@ /* we don't need to store it. /* Update the DB of the (local) Server */ - $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '$ssl_cert', ssl_key = '$ssl_key' WHERE domain = '".$data['new']['domain']."'"); - $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'"); + $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '', ssl_key = '' WHERE domain = ?", $data['new']['domain']); + $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); /* Update also the master-DB of the Server-Farm */ - $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '$ssl_cert', ssl_key = '$ssl_key' WHERE domain = '".$data['new']['domain']."'"); - $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'"); + $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '', ssl_key = '' WHERE domain = ?", $data['new']['domain']); + $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); } } @@ -3363,8 +3374,12 @@ //* Wrapper for exec function for easier debugging private function _exec($command) { global $app; + $out = array(); + $ret = 0; $app->log('exec: '.$command, LOGLEVEL_DEBUG); - exec($command); + exec($command, $out, $ret); + if($ret != 0) return false; + else return true; } private function _checkTcp ($host, $port) { diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 2a49504..1c5247d 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1310,11 +1310,22 @@ //* check if we have already a Let's Encrypt cert if(!file_exists($crt_tmp_file) && !file_exists($key_tmp_file)) { $app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG); - + + $success = false; if(file_exists("/root/.local/share/letsencrypt/bin/letsencrypt")) { - $this->_exec("/root/.local/share/letsencrypt/bin/letsencrypt auth --text --agree-tos --authenticator webroot --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --email postmaster@$domain --domains $lddomain --webroot-path /usr/local/ispconfig/interface/acme"); + $success = $this->_exec("/root/.local/share/letsencrypt/bin/letsencrypt auth --text --agree-tos --authenticator webroot --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --email postmaster@$domain --domains $lddomain --webroot-path /usr/local/ispconfig/interface/acme"); } - }; + if(!$success) { + // error issuing cert + $app->log('Let\'s Encrypt SSL Cert for: ' . $domain . ' could not be issued.', LOGLEVEL_WARN); + $data['new']['ssl_letsencrypt'] = 'n'; + if($data['old']['ssl'] == 'n') $data['new']['ssl'] = 'n'; + /* Update the DB of the (local) Server */ + $app->db->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']); + /* Update also the master-DB of the Server-Farm */ + $app->dbmaster->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']); + } + } //* check is been correctly created if(file_exists($crt_tmp_file) OR file_exists($key_tmp_file)) { @@ -1346,11 +1357,11 @@ /* we don't need to store it. /* Update the DB of the (local) Server */ - $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '', ssl_key = '' WHERE domain = '".$data['new']['domain']."'"); - $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'"); + $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '', ssl_key = '' WHERE domain = ?", $data['new']['domain']); + $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); /* Update also the master-DB of the Server-Farm */ - $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '', ssl_key = '' WHERE domain = '".$data['new']['domain']."'"); - $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'"); + $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '', ssl_key = '' WHERE domain = ?", $data['new']['domain']); + $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); } }; @@ -3103,8 +3114,12 @@ //* Wrapper for exec function for easier debugging private function _exec($command) { global $app; + $out = array(); + $ret = 0; $app->log('exec: '.$command, LOGLEVEL_DEBUG); - exec($command); + exec($command, $out, $ret); + if($ret != 0) return false; + else return true; } private function _checkTcp ($host, $port) { -- Gitblit v1.9.1