diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index c437ea32bfcae8108fba5306aa7e675d6bde9356..fb587770bd31ef9a3df4c1100ebd19c8bb390a7e 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -812,7 +812,7 @@ class installer_base { public function get_postfix_service($service, $type) { global $conf; - exec("postconf -M", $out, $ret); + exec("postconf -M 2> /dev/null", $out, $ret); if ($ret === 0) { //* with postfix >= 2.9 we can detect configured services with postconf unset($out); @@ -822,9 +822,9 @@ class installer_base { } $postfix_service = @($out[0]=='')?false:true; } else { //* fallback - Postfix < 2.9 - rf($conf['postfix']['config_dir'].'/master.cf'); - $regex = '/[^#]'.$service.'.*.'.$type.'.*/'; - $postfix_service = @(!preg_match($regex, $content))?true:false; + $content = rf($conf['postfix']['config_dir'].'/master.cf'); + $regex = "/^((?!#)".$service.".*".$type.".*)$/m"; + $postfix_service = @(preg_match($regex, $content))?true:false; } return $postfix_service; @@ -1366,21 +1366,25 @@ class installer_base { // Add the clamav user to the amavis group exec('adduser clamav amavis'); - - // Create the director for DKIM-Keys - if(!is_dir('/var/lib/amavis/dkim')) mkdir('/var/lib/amavis/dkim', 0750, true); - // get shell-user for amavis - $amavis_user=exec('grep -o "^amavis:\|^vscan:" /etc/passwd'); - if(!empty($amavis_user)) { - $amavis_user=rtrim($amavis_user, ":"); - exec('chown '.$amavis_user.' /var/lib/amavis/dkim'); - } // get shell-group for amavis $amavis_group=exec('grep -o "^amavis:\|^vscan:" /etc/group'); if(!empty($amavis_group)) { $amavis_group=rtrim($amavis_group, ":"); - exec('chgrp '.$amavis_group.' /var/lib/amavis/dkim'); } + // get shell-user for amavis + $amavis_user=exec('grep -o "^amavis:\|^vscan:" /etc/passwd'); + if(!empty($amavis_user)) { + $amavis_user=rtrim($amavis_user, ":"); + } + + // Create the director for DKIM-Keys + if(!is_dir('/var/lib/amavis')) mkdir('/var/lib/amavis', 0750, true); + if(!empty($amavis_user)) exec('chown '.$amavis_user.' /var/lib/amavis'); + if(!empty($amavis_group)) exec('chgrp '.$amavis_group.' /var/lib/amavis'); + if(!is_dir('/var/lib/amavis/dkim')) mkdir('/var/lib/amavis/dkim', 0750); + if(!empty($amavis_user)) exec('chown -R '.$amavis_user.' /var/lib/amavis/dkim'); + if(!empty($amavis_group)) exec('chgrp -R '.$amavis_group.' /var/lib/amavis/dkim'); + } public function configure_spamassassin() { @@ -1693,7 +1697,7 @@ Email Address []: if(is_file('/etc/suphp/suphp.conf')) { replaceLine('/etc/suphp/suphp.conf', 'php="php:/usr/bin', 'x-httpd-suphp="php:/usr/bin/php-cgi"', 0); //replaceLine('/etc/suphp/suphp.conf','docroot=','docroot=/var/clients',0); - replaceLine('/etc/suphp/suphp.conf', 'umask=0077', 'umask=0022', 0); + replaceLine('/etc/suphp/suphp.conf', 'umask=00', 'umask=0022', 0); } if(is_file('/etc/apache2/sites-enabled/000-default')) { diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index e56b1d68274c84368ac7f5fa6ae313b56ba710bd..4930e253f98fddd7ebf6b1d34cc6cad147c7b008 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -15,6 +15,10 @@ SetHandler None </FilesMatch> + <IfModule mod_headers.c> + RequestHeader unset Proxy early + </IfModule> + <IfModule mod_php5.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index 6b71378c84781abb8aef0706079a365b0591cad1..8aa41fafb18824a210faf3d9d15a0690db0e6b92 100644 --- a/install/tpl/apache_ispconfig.vhost.master +++ b/install/tpl/apache_ispconfig.vhost.master @@ -82,6 +82,7 @@ NameVirtualHost *:<tmpl_var name="vhost_port"> <IfModule mod_headers.c> Header always add Strict-Transport-Security "max-age=15768000" + RequestHeader unset Proxy early </IfModule> <tmpl_if name='apache_version' op='>=' value='2.3.3' format='version'> diff --git a/install/tpl/nginx_apps.vhost.master b/install/tpl/nginx_apps.vhost.master index d2dc07ba10de47fe263b51f38998f2964f8f7af7..e1bb6d1849d40e2eb3681ac807c98860f07f6c1c 100644 --- a/install/tpl/nginx_apps.vhost.master +++ b/install/tpl/nginx_apps.vhost.master @@ -40,6 +40,7 @@ server { fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + fastcgi_param HTTP_PROXY ""; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; diff --git a/install/tpl/nginx_ispconfig.vhost.master b/install/tpl/nginx_ispconfig.vhost.master index 849877020dfde0c7ff2bf15f1cdea5366d077f9e..c426e9d0faf4065153d763da703b638f3e7eba70 100644 --- a/install/tpl/nginx_ispconfig.vhost.master +++ b/install/tpl/nginx_ispconfig.vhost.master @@ -36,6 +36,7 @@ server { fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_read_timeout 1200; + fastcgi_param HTTP_PROXY ""; } location ~ /\. { diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index f9ef167fa1146fdea9897c232b208e35debda633..edbba27c7c2ea6cfaafd82333e74dbf5bc94848d 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -305,6 +305,7 @@ class app { //print_r($_SESSION); if(isset($_SESSION['s']['module']['name'])) { $this->tpl->setVar('app_module', $_SESSION['s']['module']['name']); + $this->tpl->setVar('session_module', $_SESSION['s']['module']['name']); } if(isset($_SESSION['s']['user']) && $_SESSION['s']['user']['typ'] == 'admin') { $this->tpl->setVar('is_admin', 1); diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php index f31cf81ce4b28b0588205f525d1662139b22f3ff..008fc954725078afafa8d51c14e00d5b19d7e23b 100644 --- a/interface/lib/classes/aps_guicontroller.inc.php +++ b/interface/lib/classes/aps_guicontroller.inc.php @@ -574,9 +574,13 @@ class ApsGUIController extends ApsBase // Find out document_root and make sure no apps are installed twice to one location if(in_array($postinput['main_domain'], $domains)) { - $docroot = $app->db->queryOneRecord("SELECT document_root FROM web_domain + $docroot = $app->db->queryOneRecord("SELECT document_root, web_folder FROM web_domain WHERE domain = ?", $this->getMainDomain($postinput['main_domain'])); - $new_path = $docroot['document_root']; + if(trim($docroot['web_folder']) == '') { + $new_path = $docroot['document_root']; + } else { + $new_path = $docroot['document_root'] . '/' . $docroot['web_folder']; + } if(substr($new_path, -1) != '/') $new_path .= '/'; $new_path .= $main_location; diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php index 4c977572267277c6add039dd5f0b282446ad26ea..9c52f5097ce569cc7807798a11c09589d9ecf932 100644 --- a/interface/lib/classes/auth.inc.php +++ b/interface/lib/classes/auth.inc.php @@ -213,7 +213,10 @@ class auth { return str_shuffle($password); } - public function crypt_password($cleartext_password) { + public function crypt_password($cleartext_password, $charset = 'UTF-8') { + if($charset != 'UTF-8') { + $cleartext_password = mb_convert_encoding($cleartext_password, $charset, 'UTF-8'); + } $salt="$1$"; $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; for ($n=0;$n<8;$n++) { diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php index 22c1657d49d69e92c98cddf4e437622a9aa467d9..2147e550a047c153a3abd28553958fd553daabed 100644 --- a/interface/lib/classes/remote.d/sites.inc.php +++ b/interface/lib/classes/remote.d/sites.inc.php @@ -434,7 +434,7 @@ class remoting_sites extends remoting { if($params['pm_min_spare_servers'] == '') $params['pm_min_spare_servers'] = 1; if($params['pm_max_spare_servers'] == '') $params['pm_max_spare_servers'] = 1; - $domain_id = $this->insertQuery('../sites/form/web_vhost_domain.tform.php', $client_id, $params, 'sites:web_domain:on_after_insert'); + $domain_id = $this->insertQuery('../sites/form/web_vhost_domain.tform.php', $client_id, $params, 'sites:web_vhost_domain:on_after_insert'); if ($readonly === true) $app->db->query("UPDATE web_domain SET `sys_userid` = '1' WHERE domain_id = ?", $domain_id); return $domain_id; diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php index e697810ce5a7d892fc25ebaf0b3dbd4d60b6a0d0..8547ff36902f81f6b7f7c9dc4a30cdfa7e407b98 100644 --- a/interface/lib/classes/remoting_lib.inc.php +++ b/interface/lib/classes/remoting_lib.inc.php @@ -284,7 +284,7 @@ class remoting_lib extends tform_base { $startmodule=$_modules[0]; } } - $usertheme = $params["usertheme"]; + $usertheme = (isset($params["usertheme"]) && $params["usertheme"] != '')?$params["usertheme"]:'default'; $type = 'user'; $active = 1; $insert_id = $app->functions->intval($insert_id); diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index 0c9cda5f5135eeca0300f8327b8e24a41177694f..f5e17932947d00c1e928b23fcce92bd5c73fb533 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -901,6 +901,9 @@ class tform_base { case 'IDNTOUTF8': $returnval = $app->functions->idn_decode($returnval); break; + case 'TOLATIN1': + $returnval = mb_convert_encoding($returnval, 'ISO-8859-1', 'UTF-8'); + break; case 'TRIM': $returnval = trim($returnval); break; @@ -992,6 +995,26 @@ class tform_base { } } break; + case 'ISDOMAIN': + $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('check@'.$field_value, FILTER_VALIDATE_EMAIL) === false) { + $errmsg = $validator['errmsg']; + if(isset($this->wordbook[$errmsg])) { + $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n"; + } else { + $this->errorMessage .= $errmsg."<br />\r\n"; + } + } + + } else $this->errorMessage .= "function filter_var missing <br />\r\n"; + } + unset($error); + break; case 'ISEMAIL': $error = false; if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n'; @@ -1243,6 +1266,10 @@ class tform_base { } elseif(isset($field['encryption']) && $field['encryption'] == 'CRYPT') { $record[$key] = $app->auth->crypt_password(stripslashes($record[$key])); $sql_insert_val .= "'".$app->db->quote($record[$key])."', "; + } elseif(isset($field['encryption']) && $field['encryption'] == 'CRYPTMAIL') { + // The password for the mail system needs to be converted to latin1 before it is hashed. + $record[$key] = $app->auth->crypt_password(stripslashes($record[$key]),'ISO-8859-1'); + $sql_insert_val .= "'".$app->db->quote($record[$key])."', "; } elseif (isset($field['encryption']) && $field['encryption'] == 'MYSQL') { $tmp = $app->db->queryOneRecord("SELECT PASSWORD(?) as `crypted`", stripslashes($record[$key])); $record[$key] = $tmp['crypted']; @@ -1271,6 +1298,10 @@ class tform_base { } elseif(isset($field['encryption']) && $field['encryption'] == 'CRYPT') { $record[$key] = $app->auth->crypt_password(stripslashes($record[$key])); $sql_update .= "`$key` = '".$app->db->quote($record[$key])."', "; + } elseif(isset($field['encryption']) && $field['encryption'] == 'CRYPTMAIL') { + // The password for the mail system needs to be converted to latin1 before it is hashed. + $record[$key] = $app->auth->crypt_password(stripslashes($record[$key]),'ISO-8859-1'); + $sql_update .= "`$key` = '".$app->db->quote($record[$key])."', "; } elseif (isset($field['encryption']) && $field['encryption'] == 'MYSQL') { $tmp = $app->db->queryOneRecord("SELECT PASSWORD(?) as `crypted`", stripslashes($record[$key])); $record[$key] = $tmp['crypted']; diff --git a/interface/lib/classes/tools_sites.inc.php b/interface/lib/classes/tools_sites.inc.php index b2881f57cc7e28a96554b8f585d17873100035fe..94c6d787875c28bec6d2b011c07454912f0eb036 100644 --- a/interface/lib/classes/tools_sites.inc.php +++ b/interface/lib/classes/tools_sites.inc.php @@ -157,7 +157,7 @@ class tools_sites { $field = "domain"; $select = $field; } - $sql .= " domain NOT IN (SELECT $select FROM ?? WHERE $field != ?) AND"; + $sql .= " domain NOT IN (SELECT $select FROM ?? WHERE $field = ?) AND"; } if ($_SESSION["s"]["user"]["typ"] == 'admin') { $sql .= " 1"; diff --git a/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php b/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php index aeb5623996009f08e3650628c4e0c871b5b50007..b6f0777511e36704594842fee37dc037e7b482e5 100644 --- a/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php +++ b/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php @@ -80,8 +80,8 @@ class sites_web_vhost_domain_plugin { $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ?", $app->functions->intval(@$page_form->dataRecord["client_group_id"])); $client_id = $app->functions->intval($client["client_id"]); } else { - $client_group_id = $page_form->dataRecord["client_group_id"]; - $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ?", $app->functions->intval($page_form->dataRecord["client_group_id"])); + $tmp = $app->db->queryOneRecord('SELECT sys_groupid FROM web_domain WHERE domain_id = ?',$page_form->id); + $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ?", $app->functions->intval($tmp['sys_groupid'])); $client_id = $app->functions->intval($client["client_id"]); } diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php index 155a894ff2399850b01a8016a8a3e0dcae823261..46abebaac3cad2881d3aa19d38837ad271e48345 100644 --- a/interface/web/admin/system_config_edit.php +++ b/interface/web/admin/system_config_edit.php @@ -183,7 +183,7 @@ class page_action extends tform_actions { * (only the first time!) */ if (($section == 'domains') && - ($_SESSION['use_domain_module_old_value'] == '') && + ($_SESSION['use_domain_module_old_value'] == '' || $_SESSION['use_domain_module_old_value'] == 'n') && ($server_config_array['domains']['use_domain_module'] == 'y')){ $sql = "REPLACE INTO domain (sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain ) " . "SELECT sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain " . diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php index c3cc7f170dbc56afbf769b82522959e1485820d6..ac7f4c6fce708bc69ca256ddb63682e8adba8902 100644 --- a/interface/web/client/client_edit.php +++ b/interface/web/client/client_edit.php @@ -149,7 +149,7 @@ class page_action extends tform_actions { if (trim($item['client_template_id']) != ''){ if ($text != '') $text .= ''; $text .= '<li rel="' . $item['assigned_template_id'] . '">' . $tpl[$item['client_template_id']]; - $text .= '<a href="#" class="button icons16 icoDelete"></a>'; + $text .= ' <a href="#" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></a>'; $tmp = new stdClass(); $tmp->id = $item['assigned_template_id']; $tmp->data = ''; @@ -173,7 +173,7 @@ class page_action extends tform_actions { foreach($tplAdd as $item){ if (trim($item) != ''){ if ($text != '') $text .= ''; - $text .= '<li>' . $tpl[$item]. '<a href="#" class="button icons16 icoDelete"></a></li>'; + $text .= '<li>' . $tpl[$item]. ' <a href="#" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></a></li>'; } } } diff --git a/interface/web/client/form/client_template.tform.php b/interface/web/client/form/client_template.tform.php index 0fccee96014f21a993ad3dfda193fe0dc97a3041..a3718fab527f8b8bafab4bcf2ca6572663fdb4dc 100644 --- a/interface/web/client/form/client_template.tform.php +++ b/interface/web/client/form/client_template.tform.php @@ -635,6 +635,23 @@ $form["tabs"]['limits'] = array ( 'value' => array(''), 'name' => 'default_dnsserver' ),*/ + 'dns_servers' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'MULTIPLE', + 'separator' => ',', + 'default' => '1', + 'datasource' => array ( 'type' => 'CUSTOM', + 'class'=> 'custom_datasource', + 'function'=> 'client_servers' + ), + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', + 'class' => 'validate_client', + 'function' => 'check_used_servers', + 'errmsg'=> 'dns_servers_used'), + ), + 'value' => '', + 'name' => 'dns_servers' + ), 'limit_dns_zone' => array ( 'datatype' => 'INTEGER', 'formtype' => 'TEXT', @@ -845,6 +862,20 @@ $form["tabs"]['limits'] = array ( 'rows' => '', 'cols' => '' ), + 'limit_domainmodule' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'ISINT', + 'errmsg'=> 'limit_domainmodule_error_notint'), + ), + 'default' => '0', + 'value' => '', + 'separator' => '', + 'width' => '10', + 'maxlength' => '10', + 'rows' => '', + 'cols' => '' + ), //################################# // END Datatable fields //################################# diff --git a/interface/web/client/lib/lang/de_client_message_template.lng b/interface/web/client/lib/lang/de_client_message_template.lng index 65e5fbfba31c76eb65c5a40bd920dd33e08de032..3c6ba86f3637ab0bdaa1692766ac22a2059809a4 100644 --- a/interface/web/client/lib/lang/de_client_message_template.lng +++ b/interface/web/client/lib/lang/de_client_message_template.lng @@ -1,11 +1,11 @@ <?php -$wb['template_type_txt'] = 'Email type'; -$wb['template_name_txt'] = 'Template name'; -$wb['subject_txt'] = 'Subject'; -$wb['message_txt'] = 'Message'; -$wb['Email template'] = 'Email template'; -$wb['Settings'] = 'Setting'; -$wb['variables_txt'] = 'Variables'; -$wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)'; -$wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +$wb['template_type_txt'] = 'Email-Typ'; +$wb['template_name_txt'] = 'Name der Vorlage'; +$wb['subject_txt'] = 'Betreff'; +$wb['message_txt'] = 'Nachricht'; +$wb['Email template'] = 'Email-Vorlage'; +$wb['Settings'] = 'Einstellung'; +$wb['variables_txt'] = 'Variable'; +$wb['variables_description_txt'] = '(Die Benutzername und Passwort Variable können nur in Willkommensnachrichten verwendet werden.)'; +$wb['duplicate_welcome_error'] = 'Es kann nur eine Standard Willkommensnachrichten Vorlage geben. Bitte bearbeiten Sie die bestehende Vorlage anstatt eine neue hinzuzufügen.'; ?> diff --git a/interface/web/client/lib/lang/de_client_message_template_list.lng b/interface/web/client/lib/lang/de_client_message_template_list.lng index d9c307ed5220b04a7657896edae66cf689411c0b..2eaadab3b64aa8110df93cf93f225ac7ef8b10b1 100644 --- a/interface/web/client/lib/lang/de_client_message_template_list.lng +++ b/interface/web/client/lib/lang/de_client_message_template_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Email templates'; -$wb['template_type_txt'] = 'Message for'; -$wb['template_name_txt'] = 'Template name'; +$wb['list_head_txt'] = 'Email Vorlagen'; +$wb['template_type_txt'] = 'Vorlage für'; +$wb['template_name_txt'] = 'Name der Vorlage'; ?> diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng index 05cf0f472933810c3a8dd035d87839828d4325a3..94a57cf500ba057a0447f41c206100e1d8b4b217 100644 --- a/interface/web/client/lib/lang/en_client.lng +++ b/interface/web/client/lib/lang/en_client.lng @@ -19,6 +19,7 @@ $wb["contact_firstname_txt"] = 'Contact firstname'; $wb["contact_name_txt"] = 'Contact name'; $wb["username_txt"] = 'Username'; $wb["password_txt"] = 'Password'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb["password_strength_txt"] = 'Password strength'; $wb["language_txt"] = 'Language'; $wb["usertheme_txt"] = 'Theme'; diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng index b40219f2b2ee00e65a435ab17e59013a29770bb2..a9d8ad0337fffd85bf6d33c8c69b7c2260bd1af6 100644 --- a/interface/web/client/lib/lang/en_reseller.lng +++ b/interface/web/client/lib/lang/en_reseller.lng @@ -19,6 +19,7 @@ $wb["contact_firstname_txt"] = 'Contact firstname'; $wb["contact_name_txt"] = 'Contact name'; $wb["username_txt"] = 'Username'; $wb["password_txt"] = 'Password'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb["password_strength_txt"] = 'Password strength'; $wb["language_txt"] = 'Language'; $wb["usertheme_txt"] = 'Theme'; diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng index 72065264ec85d9d623cc6dd24a7830edcc197113..b1bec1916f781a71341ddf055b8ce500fecf5185 100644 --- a/interface/web/client/lib/lang/nl_client.lng +++ b/interface/web/client/lib/lang/nl_client.lng @@ -18,6 +18,7 @@ $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['contact_name_txt'] = 'Contactpersoon'; $wb['username_txt'] = 'Gebruikersnaam'; $wb['password_txt'] = 'Wachtwoord'; +$wb['password_click_to_set_txt'] = 'Klik om in te stellen'; $wb['password_strength_txt'] = 'Wachtwoord sterkte'; $wb['language_txt'] = 'Taal'; $wb['usertheme_txt'] = 'Thema'; diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng index 63d76bfb150b8071e551158b0a37a407be416d9b..c53d3eca25286023b962682be2327bda7085e87f 100644 --- a/interface/web/client/lib/lang/nl_reseller.lng +++ b/interface/web/client/lib/lang/nl_reseller.lng @@ -17,6 +17,7 @@ $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['contact_name_txt'] = 'Contactpersoon'; $wb['username_txt'] = 'Gebruikersnaam'; $wb['password_txt'] = 'Wachtwoord'; +$wb['password_click_to_set_txt'] = 'Klik om in te stellen'; $wb['password_strength_txt'] = 'Wachtwoord sterkte'; $wb['language_txt'] = 'Taal'; $wb['usertheme_txt'] = 'Thema'; diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php index fff4202064b27d4246ede0649bebaaf1ef378678..8ab091ef4d03517e9bec09940a07c3aeb18575ee 100644 --- a/interface/web/client/reseller_edit.php +++ b/interface/web/client/reseller_edit.php @@ -143,7 +143,7 @@ class page_action extends tform_actions { if (trim($item['client_template_id']) != ''){ if ($text != '') $text .= ''; $text .= '<li rel="' . $item['assigned_template_id'] . '">' . $tpl[$item['client_template_id']]; - $text .= '<a href="#" class="button icons16 icoDelete"></a>'; + $text .= ' <a href="#" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></a>'; $tmp = new stdClass(); $tmp->id = $item['assigned_template_id']; $tmp->data = ''; @@ -167,7 +167,7 @@ class page_action extends tform_actions { foreach($tplAdd as $item){ if (trim($item) != ''){ if ($text != '') $text .= ''; - $text .= '<li>' . $tpl[$item]. '<a href="#" class="button icons16 icoDelete"></a></li>'; + $text .= '<li>' . $tpl[$item]. ' <a href="#" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></a></li>'; } } } diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm index e119e594e4b68655387b0a6c8a87f1c8cf52ae68..86393c8e9d3a92fd5123629142d6746989dce6c8 100644 --- a/interface/web/client/templates/client_edit_address.htm +++ b/interface/web/client/templates/client_edit_address.htm @@ -31,7 +31,7 @@ <label for="password" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> <div class="col-sm-9"> <div class="input-group"> - <input type="password" name="password" id="password" value="{tmpl_var name='password'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" /> + <input type="password" name="password" id="password" value="{tmpl_var name='password'}" title="{tmpl_var name='password_click_to_set_txt'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" /> <span class="input-group-btn"> <button class="btn btn-default" type="button" onclick="generatePassword('password','repeat_password');">{tmpl_var name='generate_password_txt'}</button> </span> @@ -47,7 +47,7 @@ </div> <div class="form-group"> <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label> - <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div> + <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" title="{tmpl_var name='password_click_to_set_txt'}" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div> <div class="form-group"> <div class="col-sm-offset-3 col-sm-9"> <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div> @@ -158,5 +158,5 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="client/client_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="client/client_list.php">{tmpl_var name='btn_cancel_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="{tmpl_var name='session_module'}/client_list.php">{tmpl_var name='btn_cancel_txt'}</button> </div></div> diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm index 139694697c45eb2e629360e8962e27cb23aa69ff..7a29df907d9f6233e82c3d9c0533d92564ed4b5e 100644 --- a/interface/web/client/templates/client_edit_limits.htm +++ b/interface/web/client/templates/client_edit_limits.htm @@ -450,7 +450,7 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="client/client_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="client/client_list.php">{tmpl_var name='btn_cancel_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="{tmpl_var name='session_module'}/client_list.php">{tmpl_var name='btn_cancel_txt'}</button> </div></div> </div> diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm index 7b3adf4cc9732ba7ba0dfe969cd388b83673d838..69b6552938673ecff837ca53c1c99c3776a15646 100644 --- a/interface/web/client/templates/reseller_edit_address.htm +++ b/interface/web/client/templates/reseller_edit_address.htm @@ -31,7 +31,7 @@ <label for="password" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> <div class="col-sm-9"> <div class="input-group"> - <input type="password" name="password" id="password" value="{tmpl_var name='password'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" /> + <input type="password" name="password" id="password" value="{tmpl_var name='password'}" title="{tmpl_var name='password_click_to_set_txt'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" /> <span class="input-group-btn"> <button class="btn btn-default" type="button" onclick="generatePassword('password','repeat_password');">{tmpl_var name='generate_password_txt'}</button> </span> @@ -47,7 +47,7 @@ </div> <div class="form-group"> <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label> - <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div> + <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" title="{tmpl_var name='password_click_to_set_txt'}" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div> <div class="form-group"> <div class="col-sm-offset-3 col-sm-9"> <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div> diff --git a/interface/web/dns/lib/lang/en_dns_soa.lng b/interface/web/dns/lib/lang/en_dns_soa.lng index 9018a6f38f75fca1f37a77c1d2a26f9ca58d2e71..9dae1780026fa67b274955a7d4c941026aba7517 100644 --- a/interface/web/dns/lib/lang/en_dns_soa.lng +++ b/interface/web/dns/lib/lang/en_dns_soa.lng @@ -39,5 +39,5 @@ $wb['expire_range_error'] = 'Min. Expire time is 60 seconds.'; $wb['minimum_range_error'] = 'Min. Minimum time is 60 seconds.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; -$wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; +$wb['soa_cannot_be_changed_txt'] = 'The Zone (SOA) can not be changed. Please contact your administrator to change the zone.'; ?> diff --git a/interface/web/login/index.php b/interface/web/login/index.php index 2ecf4ac93defac20d7da0c268bd7d770c0cd2616..75a013b81123881a40d34f9a8a5a152896c0a446 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -159,6 +159,9 @@ if(count($_POST) > 0) { $saved_password = stripslashes($mailuser['password']); //* Check if mailuser password is correct if(crypt(stripslashes($password), $saved_password) == $saved_password) { + //* Get the sys_user language of the client of the mailuser + $sys_user_lang = $app->db->queryOneRecord("SELECT language FROM sys_user WHERE default_group = ?", $mailuser['sys_groupid'] ); + //* we build a fake user here which has access to the mailuser module only and userid 0 $user = array(); $user['userid'] = 0; @@ -168,7 +171,11 @@ if(count($_POST) > 0) { $user['typ'] = 'user'; $user['email'] = $mailuser['email']; $user['username'] = $username; - $user['language'] = $conf['language']; + if(is_array($sys_user_lang) && $sys_user_lang['language'] != '') { + $user['language'] = $sys_user_lang['language']; + } else { + $user['language'] = $conf['language']; + } $user['theme'] = $conf['theme']; $user['app_theme'] = $conf['theme']; $user['mailuser_id'] = $mailuser['mailuser_id']; @@ -209,8 +216,15 @@ if(count($_POST) > 0) { $user = $app->db->toLower($user); if ($loginAs) $oldSession = $_SESSION['s']; - // Session regenerate causes login problems on some systems, have to find a better way. see Issue #3827 - //if (!$loginAs) session_regenerate_id(true); + + // Session regenerate causes login problems on some systems, see Issue #3827 + // Set session_regenerate_id to no in security settings, it you encounter + // this problem. + $app->uses('getconf'); + $security_config = $app->getconf->get_security_config('permissions'); + if(isset($security_config['session_regenerate_id']) && $security_config['session_regenerate_id'] == 'yes') { + if (!$loginAs) session_regenerate_id(true); + } $_SESSION = array(); if ($loginAs) $_SESSION['s_old'] = $oldSession; // keep the way back! $_SESSION['s']['user'] = $user; diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php index 5a63d8423b0c4b6a00d30073d1f76424818fb7cc..06fb0906c34e693f994c088274c03b265b61abb7 100644 --- a/interface/web/mail/form/mail_domain.tform.php +++ b/interface/web/mail/form/mail_domain.tform.php @@ -88,8 +88,7 @@ $form["tabs"]['domain'] = array ( 'errmsg'=> 'domain_error_empty'), 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), - 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/', + 2 => array ( 'type' => 'ISDOMAIN', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 9b4ff8fefdb6d0bc572c9d1fd410e63cc5421971..8a19e66750d87347b225606e5c5a3f8325f2c5be 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -128,7 +128,7 @@ $form["tabs"]['mailuser'] = array( 'errmsg' => 'weak_password_txt' ) ), - 'encryption'=> 'CRYPT', + 'encryption'=> 'CRYPTMAIL', 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index ba4fdd42a0c14b575dbf875828cf5cd7af89c086..7768662229f282e28b908b5ebab3884b89ce5d64 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -21,6 +21,7 @@ $wb["quota_error_isint"] = 'Mailbox size must be a number.'; $wb["quota_txt"] = 'Quota (0 for unlimited)'; $wb["server_id_txt"] = 'Aerver_id'; $wb["password_txt"] = 'Password'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb["maildir_txt"] = 'Maildir'; $wb["postfix_txt"] = 'Enable receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index 775b425cf529e742e5520afd02ae30b11d7dc213..001282ccd9c5898c9e0ec9a9a7898dc9c6f64432 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -61,4 +61,5 @@ $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['password_click_to_set_txt'] = 'Click to set'; ?> diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index b8d541faa4efd3e6c8435d60473a3fea02658ccd..50ebef717b8e1d5fd2caa99d67504cdef57f5f1a 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -17,6 +17,7 @@ $wb['quota_error_isint'] = 'Mailbox size must be a number.'; $wb['quota_txt'] = 'Kvota'; $wb['server_id_txt'] = 'Aerver_id'; $wb['password_txt'] = 'Å ifra'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 97b07798d12298bf7d81c3ae220c15bbec81d6bb..a11f7d206631c82a8d2efb960ea67d2f4916395c 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -13,6 +13,7 @@ $wb['quota_error_isint'] = 'Mailbox méret mezÅ‘ csak szákot tartalmazhat'; $wb['quota_txt'] = 'Korlát MB-ban kifejezve'; $wb['server_id_txt'] = 'szerver_azonosÃtó'; $wb['password_txt'] = 'Jelszó'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'levelezÅ‘láda'; $wb['postfix_txt'] = 'BejövÅ‘ engedélyezés'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index 22b3b8140deff71b2d3a63914e3d756c1da89320..9ae9474ec8a7403ee65cb8b156a7ddd64eb70c31 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -18,6 +18,7 @@ $wb['quota_error_isint'] = 'Ukuran Mailbox harus berupa angka.'; $wb['quota_txt'] = 'Kuota'; $wb['server_id_txt'] = 'id_server'; $wb['password_txt'] = 'Kata Sandi'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Dapat Menerima'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index 76f30181238853db42315776b28edc19c0982bc5..e548a6b4f0845b90fe7aed8f04948f5c47f3f4cc 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -14,6 +14,7 @@ $wb['quota_error_isint'] = 'Il valore per la dimensione della casella di posta d $wb['quota_txt'] = 'quota in MB'; $wb['server_id_txt'] = 'server_id'; $wb['password_txt'] = 'password'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Abilita ricezione'; $wb['access_txt'] = 'Abilita indirizzo'; diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index 7e044b9a9484e1bf929b0ecc898ff44726141d40..6b3d2ea3ab556d5731910e18db87331e9535e451 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -14,6 +14,7 @@ $wb['quota_error_isint'] = 'メールボックスã®æœ€å¤§æ•°ã¯æ•°å—ã§æŒ‡å®š $wb['quota_txt'] = 'メールボックスã®å®¹é‡'; $wb['server_id_txt'] = 'Aerver_id'; $wb['password_txt'] = 'パスワード'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'メールディレクトリ'; $wb['postfix_txt'] = 'メールをå—ä¿¡ã™ã‚‹'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index f577efd4d3c9c7a082ae8b7ccade5b20768ea249..acc2da94e1b7108e93021201634a1d2cb19d6967 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -18,6 +18,7 @@ $wb['quota_error_isint'] = 'Mailbox grootte moet een numerieke waarde zijn.'; $wb['quota_txt'] = 'Quota'; $wb['server_id_txt'] = 'Server_id'; $wb['password_txt'] = 'Wachtwoord'; +$wb['password_click_to_set_txt'] = 'Klik om in te stellen'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Ontvangen inschakelen'; $wb['greylisting_txt'] = 'Greylisting inschakelen'; @@ -35,7 +36,7 @@ $wb['name_txt'] = 'Echte naam'; $wb['name_optional_txt'] = '(Optioneel)'; $wb['autoresponder_active'] = 'Inschakelen autoresponder'; $wb['cc_txt'] = 'Stuur kopie naar'; -$wb['cc_error_isemail'] = 'Het "Stuur kopie naar" veld bevat geen geldig e-mail adres'; +$wb['cc_error_isemail'] = 'Het \"Stuur kopie naar\" veld bevat geen geldig e-mail adres'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; @@ -59,6 +60,6 @@ $wb['cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; -$wb['sender_cc_error_isemail'] = 'Het "Stuur uitgaande kopie aan" veld bevat geen geldig e-mail adres'; +$wb['sender_cc_error_isemail'] = 'Het \"Stuur uitgaande kopie aan\" veld bevat geen geldig e-mail adres'; $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; ?> diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index 58e5aba9d698d5e431f1c160998c366455d18b94..69974866dcbde53ff917a100ac526968b07f91f2 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -14,6 +14,7 @@ $wb['quota_error_isint'] = 'Wielkość skrzynki pocztowej musi być liczbÄ….'; $wb['quota_txt'] = 'Limit'; $wb['server_id_txt'] = 'Serwer_id'; $wb['password_txt'] = 'HasÅ‚o'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Zezwól na odbiór poczty'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index 4e7934af9c182826c6c45ce3bb5920bb1710d0da..f638554dc9f201a202d971c3a40fc53ae3e58705 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -14,6 +14,7 @@ $wb['quota_error_isint'] = 'O tamanho da caixa de correio deve ser um número.'; $wb['quota_txt'] = 'Cota'; $wb['server_id_txt'] = 'Aerver_id'; $wb['password_txt'] = 'Senha'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Permitir Recepção'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index 46938cd80e58a8e08a69f98b973e137f11906c74..af61d06b351c781594af837a85a21271aefb3e19 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -14,6 +14,7 @@ $wb['quota_error_isint'] = 'Marimea Mailbox trebuie s afie un numar'; $wb['quota_txt'] = 'Quota'; $wb['server_id_txt'] = 'Server_id'; $wb['password_txt'] = 'Password'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index 5ed8b07f5de3ecd1add5283f99b3d4d3b13876eb..9214dc8ba7cb2e098b234be1899054c84d8bba16 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -13,6 +13,7 @@ $wb['quota_error_isint'] = 'Размер должен быть цифрой.'; $wb['quota_txt'] = 'квота in MB'; $wb['server_id_txt'] = 'server_id'; $wb['password_txt'] = 'пароль'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Разрешить получение'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index 7dcdca3e68b1164adf643dc8580cdd59c0d94a83..9ded10e95510820c8d1cc1293c5bab7765d13860 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -14,6 +14,7 @@ $wb['quota_error_isint'] = 'Epostkontots kvot mÃ¥ste vara en siffra.'; $wb['quota_txt'] = 'kvot i MB'; $wb['server_id_txt'] = 'server-id'; $wb['password_txt'] = 'lösenord'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Aktivera mottagning'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index 115cab9aa96ee5780a2756009a2a32df44d636d5..b8d6114d82f550bcb4a683fbb79fa8e911bf03ad 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -14,6 +14,7 @@ $wb['quota_error_isint'] = 'VeľkosÅ¥ schránky, musà byÅ¥ ÄÃslo.'; $wb['quota_txt'] = 'Kvóta'; $wb['server_id_txt'] = 'Server_id'; $wb['password_txt'] = 'Heslo'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Mailová záložka'; $wb['postfix_txt'] = 'PovoliÅ¥ prÃjem'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index ebdcce2a92cc42d1e337ea685b5208755b8c285b..71241ec9f703393fbe42b07f6630ab1342a1c335 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -15,6 +15,7 @@ $wb['quota_error_isint'] = 'Posta kutusunun boyutu bir sayı olmalıdır.'; $wb['quota_txt'] = 'Kota (sınırsız için 0 yazın)'; $wb['server_id_txt'] = 'Sunucu kodu'; $wb['password_txt'] = 'Parola'; +$wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Posta Klasörü'; $wb['postfix_txt'] = 'Alım Etkin'; $wb['greylisting_txt'] = 'Enable greylisting'; diff --git a/interface/web/mail/mail_domain_del.php b/interface/web/mail/mail_domain_del.php index 6941cd60821cf95d0235ba2eed93d7d5d43ed348..bce89695dc53ee1e016aec966a2d5030014b2db9 100644 --- a/interface/web/mail/mail_domain_del.php +++ b/interface/web/mail/mail_domain_del.php @@ -78,7 +78,7 @@ class page_action extends tform_actions { } // Delete all spamfilters that belong to this domain - $records = $app->db->queryAllRecords("SELECT id FROM spamfilter_users WHERE email = ?", '%@' . $domain); + $records = $app->db->queryAllRecords("SELECT id FROM spamfilter_users WHERE email like ?", '%@' . $domain); foreach($records as $rec) { $app->db->datalogDelete('spamfilter_users', 'id', $rec['id']); } diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index aedcd2249b9e8da4a1a6a365d98c4dc634935fbf..a79d8f8ff95e0ee9cd8082e8dfc91d45b035abe8 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -143,7 +143,6 @@ class page_action extends tform_actions { if($domain["domain"] != $app->functions->idn_encode($_POST["email_domain"])) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); } - //* if its an insert, check that the password is not empty if($this->id == 0 && $_POST["password"] == '') { $app->tform->errorMessage .= $app->tform->lng("error_no_pwd")."<br>"; diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm index 4cb4b51c849a52aaada14fa32befb5b12bb15c0d..bcab744de3b54ca7b45efa541061d90c459ef64a 100644 --- a/interface/web/mail/templates/mail_user_mailbox_edit.htm +++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm @@ -29,7 +29,7 @@ <label for="password" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> <div class="col-sm-9"> <div class="input-group"> - <input type="password" name="password" id="password" value="{tmpl_var name='password'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" /> + <input type="password" name="password" id="password" value="{tmpl_var name='password'}" title="{tmpl_var name='password_click_to_set_txt'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" /> <span class="input-group-btn"> <button class="btn btn-default" type="button" onclick="generatePassword('password','repeat_password');">{tmpl_var name='generate_password_txt'}</button> </span> @@ -45,7 +45,8 @@ </div> <div class="form-group"> <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label> - <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div> + <div class="col-sm-9"> + <input type="password" name="repeat_password" id="repeat_password" value="" title="{tmpl_var name='password_click_to_set_txt'}" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div> <div class="form-group"> <div class="col-sm-offset-3 col-sm-9"> <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div> diff --git a/interface/web/mailuser/lib/lang/en_mail_user_password.lng b/interface/web/mailuser/lib/lang/en_mail_user_password.lng index 43c114a81cb0e99f2280f9ca42f4d29544534fe8..1fae586e68d97435bbdd9aaf94bfbf06354e8a8e 100644 --- a/interface/web/mailuser/lib/lang/en_mail_user_password.lng +++ b/interface/web/mailuser/lib/lang/en_mail_user_password.lng @@ -7,4 +7,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_click_to_set_txt'] = 'Click to set'; ?> \ No newline at end of file diff --git a/interface/web/mailuser/lib/lang/nl_mail_user_password.lng b/interface/web/mailuser/lib/lang/nl_mail_user_password.lng index cdf9674e702c16e13a9c7ab9760eea34097e2fce..254608275e3c34bf91021525cadb588027bc2829 100644 --- a/interface/web/mailuser/lib/lang/nl_mail_user_password.lng +++ b/interface/web/mailuser/lib/lang/nl_mail_user_password.lng @@ -7,4 +7,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['password_click_to_set_txt'] = 'Klik om in te stellen'; ?> diff --git a/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm b/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm index c5fc584c09f961d8c899500845f5511746ae348c..98b28cebf8da1c80a59b07966403fadfe158a033 100644 --- a/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm +++ b/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm @@ -28,6 +28,6 @@ <input type="hidden" name="id" value="{tmpl_var name='id'}"> <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" - value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> + value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mailuser/mail_user_autoresponder_edit.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mailuser/index.php">{tmpl_var name='btn_cancel_txt'}</button> </div></div> \ No newline at end of file diff --git a/interface/web/mailuser/templates/mail_user_password_edit.htm b/interface/web/mailuser/templates/mail_user_password_edit.htm index 1afd11052cc1dbc69840e348086957771a14600a..b487a1e9b2877c6f041b3a71776950c9ebb9c8ae 100644 --- a/interface/web/mailuser/templates/mail_user_password_edit.htm +++ b/interface/web/mailuser/templates/mail_user_password_edit.htm @@ -15,7 +15,7 @@ <label for="password" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> <div class="col-sm-9"> <div class="input-group"> - <input type="password" name="password" id="password" value="{tmpl_var name='password'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" /> + <input type="password" name="password" id="password" value="{tmpl_var name='password'}" title="{tmpl_var name='password_click_to_set_txt'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" /> <span class="input-group-btn"> <button class="btn btn-default" type="button" onclick="generatePassword('password','repeat_password');">{tmpl_var name='generate_password_txt'}</button> </span> @@ -31,7 +31,7 @@ </div> <div class="form-group"> <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label> - <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div> + <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" title="{tmpl_var name='password_click_to_set_txt'}" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div> <div class="form-group"> <div class="col-sm-offset-3 col-sm-9"> <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div> diff --git a/interface/web/sites/database_quota_stats.php b/interface/web/sites/database_quota_stats.php index a87a33dc5f05b357b9f48765e5742325492863a4..0ddea5d27eaf5208d10d81b7c604bf80e8a50572 100644 --- a/interface/web/sites/database_quota_stats.php +++ b/interface/web/sites/database_quota_stats.php @@ -29,7 +29,15 @@ if(is_array($tmp_rec)) { foreach($tmp_array as $database_name => $data) { $db_name = $data['database_name']; - $temp = $app->db->queryOneRecord("SELECT client.username, web_database.database_quota FROM web_database, sys_group, client WHERE sys_group.groupid = web_database.sys_groupid AND sys_group.client_id = client.client_id AND web_database.database_name = ?", $db_name); + //$temp = $app->db->queryOneRecord("SELECT client.username, web_database.database_quota FROM web_database, sys_group, client WHERE sys_group.groupid = web_database.sys_groupid AND sys_group.client_id = client.client_id AND web_database.database_name = ?", $db_name); + $temp = $app->db->queryOneRecord("SELECT sys_groupid, database_quota FROM web_database WHERE web_database.database_name = ?", $db_name); + if($tmp['sys_groupid'] > 0) { + $client = $app->db->queryOneRecord("SELECT client.username FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.groupid = ?", $tmp['sys_groupid']); + $temp['username'] = $client['username']; + } else { + $temp['username'] = 'admin'; + } + if(is_array($temp) && !empty($temp)) { $monitor_data[$server_id.'.'.$db_name]['database_name'] = $data['database_name']; $monitor_data[$server_id.'.'.$db_name]['client'] = isset($temp['username']) ? $temp['username'] : ''; diff --git a/interface/web/sites/lib/lang/nl_web_domain.lng b/interface/web/sites/lib/lang/nl_web_domain.lng index 6aaa1aae5fcac2e22a6a5deed5264aae2822836b..60a06c266a4cbbf04b98e8b54c4278ae8e5cb378 100644 --- a/interface/web/sites/lib/lang/nl_web_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_domain.lng @@ -21,7 +21,7 @@ $wb['active_txt'] = 'Actief'; $wb['document_root_txt'] = 'Documentroot'; $wb['system_user_txt'] = 'Linux gebruiker'; $wb['system_group_txt'] = 'Linux Groep'; -$wb['ip_address_txt'] = 'IP-Adres'; +$wb['ip_address_txt'] = 'IPv4 adres'; $wb['vhost_type_txt'] = 'VHost type'; $wb['hd_quota_txt'] = 'Harddisk quota'; $wb['traffic_quota_txt'] = 'Traffic quota'; @@ -72,7 +72,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['save_certificate_txt'] = 'Save certificate'; $wb['create_certificate_txt'] = 'Create certificate'; $wb['delete_certificate_txt'] = 'Delete certificate'; -$wb['ipv6_address_txt'] = 'IPv6-Adres'; +$wb['ipv6_address_txt'] = 'IPv6 adres'; $wb['nginx_directives_txt'] = 'nginx Directives'; $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; diff --git a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng index 23ca63306e965acd1f047aeb19bda9931e6aeb48..6940d62c9e80b57ba9a25d207464e3619a421b2c 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -21,7 +21,7 @@ $wb['active_txt'] = 'Actief'; $wb['document_root_txt'] = 'Document Root'; $wb['system_user_txt'] = 'Linux gebruiker'; $wb['system_group_txt'] = 'Linux Groep'; -$wb['ip_address_txt'] = 'IP-Adres'; +$wb['ip_address_txt'] = 'IPv4 adres'; $wb['vhost_type_txt'] = 'VHost type'; $wb['hd_quota_txt'] = 'Harddisk quota'; $wb['traffic_quota_txt'] = 'Traffic quota'; @@ -49,7 +49,7 @@ $wb['error_ssl_organisation_empty'] = 'SSL Organisatie is niet ingvuld.'; $wb['error_ssl_organisation_unit_empty'] = 'SSL Organisatie afdeling is niet ingvuld.'; $wb['error_ssl_country_empty'] = 'SSL land is niet ingvuld.'; $wb['client_group_id_txt'] = 'Klant'; -$wb['stats_password_txt'] = 'Webstatististieken wachtwoord'; +$wb['stats_password_txt'] = 'Webstatistieken wachtwoord'; $wb['allow_override_txt'] = 'Apache AllowOverride'; $wb['limit_web_quota_free_txt'] = 'Max. beschikbare harddisk quota'; $wb['ssl_state_error_regex'] = 'Ongeldige SSL Provincie/staat. Geldige karakters zijn: a-z, 0-9 and .,-_'; @@ -62,8 +62,8 @@ $wb['redirect_error_regex'] = 'Ongeldig redirect pad. Heldige redirects zijn bij $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['traffic_quota_exceeded_txt'] = 'Traffic quota overschreden'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Webstatististieken gebruikersnaam'; -$wb['stats_type_txt'] = 'Webstatististieken programma'; +$wb['stats_user_txt'] = 'Webstatistieken gebruikersnaam'; +$wb['stats_type_txt'] = 'Webstatistieken programma'; $wb['custom_php_ini_txt'] = 'Custom php.ini instellingen'; $wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty'; $wb['none_txt'] = 'None'; @@ -73,7 +73,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['save_certificate_txt'] = 'Certificaat opslaan'; $wb['create_certificate_txt'] = 'Create certificate'; $wb['delete_certificate_txt'] = 'Certificaat verwijderen'; -$wb['ipv6_address_txt'] = 'IPv6-Adres'; +$wb['ipv6_address_txt'] = 'IPv6 adres'; $wb['nginx_directives_txt'] = 'nginx Directives'; $wb['seo_redirect_txt'] = 'SEO Redirect'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; @@ -101,10 +101,10 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.'; $wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!'; -$wb['generate_password_txt'] = 'Generate Password'; -$wb['repeat_password_txt'] = 'Repeat Password'; -$wb['password_mismatch_txt'] = 'The passwords do not match.'; -$wb['password_match_txt'] = 'The passwords do match.'; +$wb['generate_password_txt'] = 'Genereer wachtwoord'; +$wb['repeat_password_txt'] = 'Herhaal wachtwoord'; +$wb['password_mismatch_txt'] = 'De wachtwoorden zijn ongelijk.'; +$wb['password_match_txt'] = 'De wachtwoorden zijn gelijk.'; $wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.'; $wb['domain_error_autosub'] = 'There is already a subdomain with these settings.'; $wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:'; diff --git a/interface/web/sites/templates/web_backup_list.htm b/interface/web/sites/templates/web_backup_list.htm index c040b38ea6352d0b1e1c19c86bc0f149f525064f..d741b348a88e5cacb6999a7fcb651a9c9ca1a337 100644 --- a/interface/web/sites/templates/web_backup_list.htm +++ b/interface/web/sites/templates/web_backup_list.htm @@ -32,7 +32,7 @@ <tmpl_if name="download_available"> <button class="btn btn-default formbutton-default" type="button" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&backup_action=download&backup_id={tmpl_var name='backup_id'}">{tmpl_var name="download_backup_txt"}</button> </tmpl_if> - <button class="button iconstxt icoDelete" type="button" onclick="confirm_action('sites/web_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&backup_action=delete&backup_id={tmpl_var name='backup_id'}','{tmpl_var name='delete_confirm_txt'}');"><span>{tmpl_var name="delete_backup_txt"}</span></button> + <button class="btn btn-default formbutton-default" type="button" onclick="ISPConfig.confirm_action('sites/web_vhost_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&backup_action=delete&backup_id={tmpl_var name='backup_id'}','{tmpl_var name='delete_confirm_txt'}');"><span>{tmpl_var name="delete_backup_txt"}</span></button> </div> </td> </tr> diff --git a/interface/web/sites/templates/web_vhost_domain_redirect.htm b/interface/web/sites/templates/web_vhost_domain_redirect.htm index 06cc8a136e6402903b675f90d42174020bc24c48..1cd3ce87c5a7f5929ebd8810eeec2647cd1620a9 100644 --- a/interface/web/sites/templates/web_vhost_domain_redirect.htm +++ b/interface/web/sites/templates/web_vhost_domain_redirect.htm @@ -31,7 +31,8 @@ </div> <div class="form-group nginx"> <label for="rewrite_rules" class="col-sm-3 control-label">{tmpl_var name='rewrite_rules_txt'}</label> - <div class="col-sm-9"><textarea class="form-control" name="rewrite_rules" id="rewrite_rules" rows='10' cols='50'>{tmpl_var name='rewrite_rules'}</textarea></div> <b>{tmpl_var name="allowed_rewrite_rule_directives_txt"}</b><br><br> break<br> if<br> return<br> rewrite<br> set<br><br> <a href="http://wiki.nginx.org/HttpRewriteModule" target="_blank">http://wiki.nginx.org/HttpRewriteModule</a> + <div class="col-sm-9"><textarea class="form-control" name="rewrite_rules" id="rewrite_rules" rows='10' cols='50'>{tmpl_var name='rewrite_rules'}</textarea> + <b>{tmpl_var name="allowed_rewrite_rule_directives_txt"}</b> break if return rewrite set<br /> <a href="http://wiki.nginx.org/HttpRewriteModule" target="_blank">http://wiki.nginx.org/HttpRewriteModule</a></div> </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='rewrite_to_https_txt'}</label> diff --git a/interface/web/sites/web_childdomain_edit.php b/interface/web/sites/web_childdomain_edit.php index 33c2422f45735fbe6bb35e60d71dbd808380fb35..2377ad288acf3e353e2bc7e5c288ed43c826fe12 100644 --- a/interface/web/sites/web_childdomain_edit.php +++ b/interface/web/sites/web_childdomain_edit.php @@ -131,8 +131,10 @@ class page_action extends tform_actions { } $app->tpl->setVar("domain_option", $domain_select); if($this->_childdomain_type == 'subdomain') { - $this->dataRecord['domain'] = substr($this->dataRecord["domain"], 0, strlen($this->dataRecord['domain']) - strlen($selected_domain) - 1); + //$this->dataRecord['domain'] = substr($this->dataRecord["domain"], 0, strlen($this->dataRecord['domain']) - strlen($selected_domain) - 1); + $this->dataRecord["domain"] = str_replace('.'.$selected_domain, '', $this->dataRecord["domain"]); } + } else { if($this->_childdomain_type == 'subdomain') { // Get the record of the parent domain diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 6f843571a3b7d15653ae0515ee8e4b74899a45fa..10dde97a49e2d6e4f6398170f3e9d88a628f2fae 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -802,11 +802,16 @@ class page_action extends tform_actions { $domain_select .= "<option value=''></option>\r\n"; } $app->tpl->setVar("domain_option", $domain_select); - } else { + + // remove the parent domain part of the domain name before we show it in the text field. + if($this->dataRecord["type"] == 'vhostsubdomain') $this->dataRecord["domain"] = str_replace('.'.$selected_domain, '', $this->dataRecord["domain"]); + + } else { // remove the parent domain part of the domain name before we show it in the text field. if($this->dataRecord["type"] == 'vhostsubdomain') $this->dataRecord["domain"] = str_replace('.'.$parent_domain["domain"], '', $this->dataRecord["domain"]); } + if($this->_vhostdomain_type != 'domain') $app->tpl->setVar("domain", $this->dataRecord["domain"]); // check for configuration errors in sys_datalog diff --git a/interface/web/themes/default/assets/images/ajax-loader.gif b/interface/web/themes/default/assets/images/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c4804ebcaec27b830873a1ff4d157f1bde00ef1 Binary files /dev/null and b/interface/web/themes/default/assets/images/ajax-loader.gif differ diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js index d791b19cba5ae3957e729e42977115fea72abc3e..e4722ba8c5862760d0293c8487fa8c392470fa2f 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.js @@ -136,6 +136,15 @@ var ISPConfig = { }); $('[data-toggle="tooltip"]').tooltip({ }); + // grab all password fields and set the readonly prop to prevent password managers to fill in new password + $('input[type="password"]').each(function() { + $(this).prop('readonly', true) + .tooltip({title: "Click to set", placement: "left"}); + }); + $('input[type="password"]').on('click focus', function() { + $(this).prop('readonly', false); + $(this).tooltip('destroy'); + }); ISPConfig.callHook('onAfterContentLoad', {'url': url, 'data': data }); }, @@ -493,12 +502,12 @@ var ISPConfig = { if(addTplId > 0) { var newVal = tpl_add.split('/'); ISPConfig.new_tpl_add_id += 1; - var delbtn = $('<a href="#"></a>').attr('class', 'button icons16 icoDelete').click(function(e) { + var delbtn = $(' <a href="#"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></span></a>').attr('class', 'btn btn-danger btn-xs').click(function(e) { e.preventDefault(); ISPConfig.delAdditionalTemplate($(this).parent().attr('rel')); }); newVal[newVal.length] = 'n' + ISPConfig.new_tpl_add_id + ':' + addTplId; - $('<li>' + addTplText + '</li>').attr('rel', 'n' + new_tpl_add_id).append(delbtn).appendTo('#template_additional_list ul'); + $('<li>' + addTplText + '</li>').attr('rel', 'n' + ISPConfig.new_tpl_add_id).append(delbtn).appendTo('#template_additional_list ul'); $('#template_additional').val(newVal.join('/')); alert('additional template ' + addTplText + ' added to customer'); } else { @@ -550,7 +559,6 @@ var ISPConfig = { } }; - $(document).on("change", function(event) { var elName = event.target.localName; if ($("#pageForm .table #Filter").length > 0 && elName == 'select') { diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.min.js b/interface/web/themes/default/assets/javascripts/ispconfig.min.js index a54f3cb89ab7d58e15c3364dce41f20a1801a824..0dd4a563be185f3fc2684b375d47a0453b94c13f 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.min.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.min.js @@ -1 +1 @@ -var ISPConfig={pageFormChanged:false,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:false,tabChangeDiscard:false,requestsRunning:0,indicatorCompleted:false,registeredHooks:new Array(),new_tpl_add_id:0,options:{useLoadIndicator:false,useComboBox:false},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(a){},registerHook:function(a,c){if(!ISPConfig.registeredHooks[a]){ISPConfig.registeredHooks[a]=new Array()}var b=ISPConfig.registeredHooks[a].length;ISPConfig.registeredHooks[a][b]=c},callHook:function(a,c){if(!ISPConfig.registeredHooks[a]){return}for(var b=0;b<ISPConfig.registeredHooks[a].length;b++){var d=ISPConfig.registeredHooks[a][b];d(a,c)}},resetFormChanged:function(){ISPConfig.pageFormChanged=false},showLoadIndicator:function(){document.body.style.cursor="wait";if(ISPConfig.options.useLoadIndicator==true){ISPConfig.requestsRunning+=1;if(ISPConfig.requestsRunning<2){var a=$("#ajaxloader");if(a.length<1){a=$('<div id="ajaxloader" style="display: none;"></div>');a.appendTo("body")}var b=$("#content");if(b.length<1){return}ISPConfig.indicatorCompleted=false;var d=b.offset().left+150;var c=b.offset().top+150;a.css({left:d,top:c}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=true;if(ISPConfig.requestsRunning<1){$(this).fadeOut("fast",function(){$(this).hide()})}})}}},hideLoadIndicator:function(){document.body.style.cursor="";ISPConfig.requestsRunning-=1;if(ISPConfig.requestsRunning<1){ISPConfig.requestsRunning=0;if(ISPConfig.indicatorCompleted==true){$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()})}}},onAfterSideNavLoaded:function(){if(ISPConfig.options.useComboBox==true){$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:true,allowClear:true})}},onAfterContentLoad:function(a,b){if(!b){b=""}else{b="&"+b}if(ISPConfig.options.useComboBox==true){$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:true,allowClear:true,formatResult:function(c){if(c.id&&$(c.element).parent().hasClass("flags")){return'<span class="flags flag-'+c.id.toLowerCase()+'">'+c.text+"</span>"}else{return c.text}},formatSelection:function(c){if(c.id&&$(c.element).parent().hasClass("flags")){return'<span class="flags flag-'+c.id.toLowerCase()+'">'+c.text+"</span>"}else{return c.text}}}).on("change",function(c){if($("#pageForm .table #Filter").length>0){$("#pageForm .table #Filter").trigger("click")}})}$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:true,todayBtn:"linked",bootcssVer:3,fontAwesome:true,autoclose:true,minView:"month"});$('input[data-input-element="datetime"]').datetimepicker({language:"en",todayHighlight:true,todayBtn:"linked",bootcssVer:3,fontAwesome:true,autoclose:true});ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitForm:function(d,e,c){var b=arguments[3];if(!c){c=false}if(!c||window.confirm(c)){var a=$.ajax({type:"POST",url:e,data:$("#"+d).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(g,i,f){if(b){alert(b)}if(f.responseText.indexOf("HEADER_REDIRECT:")>-1){var h=f.responseText.split(":");ISPConfig.loadContent(h[1])}else{if(f.responseText.indexOf("LOGIN_REDIRECT:")>-1){document.location.href="/index.php"}else{$("#pageContent").html(f.responseText);ISPConfig.onAfterContentLoad(e,$("#"+d).serialize());ISPConfig.pageFormChanged=false}}ISPConfig.hideLoadIndicator()},error:function(f,i,h){ISPConfig.hideLoadIndicator();var g=f.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})}},submitUploadForm:function(c,d){var b=function(n){var h,j=n.contentWindow.document.body.innerHTML;try{h=JSON.parse(j)}catch(k){h=j}var o=$("<div></div>").html(h);var f="";var l=o.find("#OKMsg").html();if(l){f='<div id="OKMsg">'+l+"</div>"}var i=o.find("#errorMsg").html();if(i){f=f+'<div id="errorMsg">'+i+"</div>"}var m=o.find('input[name="_csrf_key"]').val();var g=o.find('input[name="_csrf_id"]').val();f=f+'<input type="hidden" name="_csrf_id" value="'+g+'" /><input type="hidden" name="_csrf_key" value="'+m+'" />';return f};var a="ajaxUploader-iframe-"+Math.round(new Date().getTime()/1000);$("body").append('<iframe width="0" height="0" style="display:none;" name="'+a+'" id="'+a+'"/>');$("#"+a).load(function(){var e=b(this);$("#errorMsg").remove();$("#OKMsg").remove();$('input[name="_csrf_key"]').remove();$('input[name="_csrf_id"]').remove();$('input[name="id"]').before(e);$(this).remove()});$('input[type="file"]').closest("form").attr({target:a,action:d}).submit()},capp:function(b,c){var a=$.ajax({type:"GET",url:"capp.php",data:"mod="+b+((c!=undefined)?"&redirect="+c:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(e,h,d){if(d.responseText!=""){if(d.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=d.responseText.split(":");ISPConfig.loadContent(g[1])}else{if(d.responseText.indexOf("URL_REDIRECT:")>-1){var f=d.responseText.substr(d.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=f}else{}}}ISPConfig.loadMenus();ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful."+b)}})},loadContent:function(b){var c=arguments[1];var a=$.ajax({type:"GET",url:b,data:(c?c:null),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(e,h,d){if(d.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=d.responseText.split(":");ISPConfig.loadContent(g[1])}else{if(d.responseText.indexOf("URL_REDIRECT:")>-1){var f=d.responseText.substr(d.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=f}else{$("#pageContent").html(d.responseText);ISPConfig.onAfterContentLoad(b,(c?c:null));ISPConfig.pageFormChanged=false}}ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 113")}})},loadContentRefresh:function(b){if($("#refreshinterval").val()>0){var a=$.ajax({type:"GET",url:b,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(d,e,c){ISPConfig.hideLoadIndicator();$("#pageContent").html(c.responseText);ISPConfig.onAfterContentLoad(b,"refresh="+document.getElementById("refreshinterval").value);ISPConfig.pageFormChanged=false},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful."+b)}});setTimeout("ISPConfig.loadContentRefresh('"+b+"&refresh="+document.getElementById("refreshinterval").value+"')",document.getElementById("refreshinterval").value*1000*60)}},loadInitContent:function(){var b=$("#pageContent").attr("data-startpage");if(!b){b="dashboard/dashboard.php"}var a=$.ajax({type:"GET",url:b,data:"",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(d,f,c){if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var e=c.responseText.split(":");ISPConfig.loadContent(e[1])}else{$("#pageContent").html(c.responseText);ISPConfig.onAfterContentLoad("dashboard/dashboard.php","");ISPConfig.pageFormChanged=false}ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus();ISPConfig.keepalive();setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(c){}},1000)},loadMenus:function(){var b=$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(d,e,c){ISPConfig.hideLoadIndicator();$("#sidebar").html(c.responseText);ISPConfig.onAfterSideNavLoaded();ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 115")}});var a=$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(d,e,c){ISPConfig.hideLoadIndicator();$("#topnav-container").html(c.responseText);ISPConfig.loadPushyMenu()},error:function(c){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(c,e,d){if(ISPConfig.requestsRunning>0){return false}document.pageForm.next_tab.value=c;var b=$("form#pageForm").find('[name="id"]');var f=null;if(b.length>0){f=b.val()}if(ISPConfig.tabChangeDiscard=="y"&&!d){if((b.length<1||f)&&(ISPConfig.pageFormChanged==false||window.confirm(ISPConfig.tabChangeDiscardTxt))){var a=c;if(f){ISPConfig.loadContent(e,{next_tab:a,id:f})}else{ISPConfig.loadContent(e,{next_tab:a})}}else{return false}}else{if(f&&ISPConfig.tabChangeWarning=="y"&&ISPConfig.pageFormChanged==true){if(window.confirm(ISPConfig.tabChangeWarningTxt)){ISPConfig.submitForm("pageForm",e)}else{var a=c;if(f){ISPConfig.loadContent(e,{next_tab:a,id:f})}else{ISPConfig.loadContent(e,{next_tab:a})}}}else{ISPConfig.submitForm("pageForm",e)}}},confirm_action:function(b,a){if(window.confirm(a)){ISPConfig.loadContent(b)}},loadContentInto:function(b,c){var a=$.ajax({type:"GET",url:c,dataType:"html",beforeSend:function(){},success:function(e,f,d){$("#"+b).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(b,c,d){var a=$.ajax({type:"GET",url:c,dataType:"html",beforeSend:function(){},success:function(h,l,g){var j=g.responseText;var k=j.split("#");el=document.getElementById(b);el.innerHTML="";for(var f=0;f<k.length;++f){var e=document.createElement("option");e.appendChild(document.createTextNode(k[f]));e.value=k[f];el.appendChild(e)}if(typeof(d)!="undefined"){d(b,c)}},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){var a=$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(c,d,b){setTimeout(function(){ISPConfig.keepalive()},1000000)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},addAdditionalTemplate:function(){var e=$("#template_additional").val();var a=$("#tpl_add_select").val().split("|",2);var d=a[0];var f=a[1];if(d>0){var c=e.split("/");ISPConfig.new_tpl_add_id+=1;var b=$('<a href="#"></a>').attr("class","button icons16 icoDelete").click(function(g){g.preventDefault();ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});c[c.length]="n"+ISPConfig.new_tpl_add_id+":"+d;$("<li>"+f+"</li>").attr("rel","n"+new_tpl_add_id).append(b).appendTo("#template_additional_list ul");$("#template_additional").val(c.join("/"));alert("additional template "+f+" added to customer")}else{alert("no additional template selcted")}},delAdditionalTemplate:function(d){var a=$("#template_additional").val();if(d){var l=$("#template_additional_list ul").find('li[rel="'+d+'"]').eq(0);var k=l.text();l.remove();var j=a.split("/");var b=new Array();for(var e=0;e<j.length;e++){var f=j[e].split(":",2);if(f.length==2&&f[0]==d){continue}b[b.length]=j[e]}$("#template_additional").val(b.join("/"));alert("additional template "+k+" deleted from customer")}else{if(a!=""){var c=document.getElementById("tpl_add_select").value.split("|",2);var h=c[0];var k=c[1];$("#template_additional_list ul").find("li:not([rel])").each(function(){var i=$(this).text();if(i==k){$(this).remove();return false}return this});var b=a;var g=new RegExp("(^|/)"+h+"(/|$)");b=b.replace(g,"");b=b.replace("//","/");$("#template_additional").val(b);alert("additional template "+k+" deleted from customer")}else{alert("no additional template selcted")}}}};$(document).on("change",function(a){var b=a.target.localName;if($("#pageForm .table #Filter").length>0&&b=="select"){a.preventDefault();$("#pageForm .table #Filter").trigger("click")}if(b=="select"||b=="input"||b=="textarea"){if($(a.target).hasClass("no-page-form-change")==false){ISPConfig.pageFormChanged=true}}});$(document).on("click","a[data-load-content],button[data-load-content]",function(b){b.preventDefault();$("html, body").animate({scrollTop:0},1000);var a=$(this).attr("data-load-content");if(!a){return this}ISPConfig.loadContent(a)});$(document).on("click","a[data-capp],button[data-capp]",function(b){b.preventDefault();$("html, body").animate({scrollTop:0},1000);var a=$(this).attr("data-capp");if(!a){return this}ISPConfig.capp(a)});$(document).on("click","a[data-submit-form],button[data-submit-form]",function(d){d.preventDefault();$("html, body").animate({scrollTop:0},1000);var b=$(this);var a=b.attr("data-form-action");var c=b.attr("data-submit-form");if(b.attr("data-form-upload")=="true"){ISPConfig.submitUploadForm(c,a)}else{ISPConfig.submitForm(c,a)}});$(document).bind("keypress",function(a){if(a.which=="13"&&$("#pageForm .table #Filter").length>0&&$(a.target).hasClass("ui-autocomplete-input")==false){a.preventDefault();$("#pageForm .table #Filter").trigger("click")}if(a.which=="13"&&$(".tab-content button.formbutton-success").length>0&&a.target.localName!="textarea"&&$(a.target).is(":input")){a.preventDefault();$(".tab-content button.formbutton-success").not("[disabled='disabled']").trigger("click")}});$(document).on("click","th[data-column]",function(h){var i=$(this);var d=i.attr("data-column");if(!d){return this}if($("#pageForm .table #Filter").length>0&&i.attr("data-sortable")!="false"){var c=$("#Filter");var a=c.attr("data-form-action");var f=c.attr("data-submit-form");var b=i.attr("data-ordered");var g="?";if(a.indexOf("?")>=0){g="&"}a=a+g+"orderby="+d;ISPConfig.submitForm(f,a);$(document).ajaxComplete(function(){var e=$('#pageForm .table th[data-column="'+d+'"]');e.parent().children("th[data-column]").removeAttr("data-ordered");if(b&&b=="asc"){e.attr("data-ordered","desc")}else{e.attr("data-ordered","asc")}})}});$(document).on("click",".addPlaceholder",function(){var a=$(this).text();var b=$(this).siblings(":input");b.insertAtCaret(a)});$(document).on("click",".addPlaceholderContent",function(){var b=$(this).find(".addPlaceholderContent").text();var a=$(this).siblings(":input");a.insertAtCaret(b)});$(document).on("click","[data-check-fields] > input[type='checkbox']",function(){if($(this).is(":checked")){var c=$(this).parent().attr("data-check-fields");var b=c.split(/,/);for(var a=0;a<b.length;a++){var d=b[a];$('input[type="checkbox"][name="'+d+'"]').prop("checked",true)}}});$(document).on("click","[data-uncheck-fields] > input[type='checkbox']",function(){if($(this).is(":checked")==false){var c=$(this).parent().attr("data-uncheck-fields");var b=c.split(/,/);for(var a=0;a<b.length;a++){var d=b[a];$('input[type="checkbox"][name="'+d+'"]').prop("checked",false)}}});$(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(d){if(document.selection){this.focus();sel=document.selection.createRange();sel.text=a;this.focus()}else{if(this.selectionStart||this.selectionStart=="0"){var c=this.selectionStart;var b=this.selectionEnd;var e=this.scrollTop;this.value=this.value.substring(0,c)+a+this.value.substring(b,this.value.length);this.focus();this.selectionStart=c+a.length;this.selectionEnd=c+a.length;this.scrollTop=e}else{this.value+=a;this.focus()}}})}});$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"});ISPConfig.loadInitContent();$("#searchform").submit(function(a){a.preventDefault()});$("#pageForm").submit(function(a){if($("#pageForm .table #Filter").length>0){a.preventDefault()}});$.fn.setCursorPosition=function(c){var b=$(this).get(0);if(b.setSelectionRange){b.setSelectionRange(c,c)}else{if(b.createTextRange){var a=b.createTextRange();a.collapse(true);if(c<0){c=$(this).val().length+c}a.moveEnd("character",c);a.moveStart("character",c);a.select()}}};$.fn.getCursorPosition=function(){var c=0;var b=$(this).get(0);if(typeof b.selectionStart==="number"){c=b.selectionDirection=="backward"?b.selectionStart:b.selectionEnd}else{if(document.selection){this.focus();var a=document.selection.createRange();a.moveStart("character",-b.value.length);c=a.text.length}}return c}}); \ No newline at end of file +var ISPConfig={pageFormChanged:!1,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:!1,tabChangeDiscard:!1,requestsRunning:0,indicatorCompleted:!1,registeredHooks:new Array,new_tpl_add_id:0,options:{useLoadIndicator:!1,useComboBox:!1},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(){},registerHook:function(a,b){ISPConfig.registeredHooks[a]||(ISPConfig.registeredHooks[a]=new Array);var c=ISPConfig.registeredHooks[a].length;ISPConfig.registeredHooks[a][c]=b},callHook:function(a,b){if(ISPConfig.registeredHooks[a])for(var c=0;c<ISPConfig.registeredHooks[a].length;c++){var d=ISPConfig.registeredHooks[a][c];d(a,b)}},resetFormChanged:function(){ISPConfig.pageFormChanged=!1},showLoadIndicator:function(){if(document.body.style.cursor="wait",1==ISPConfig.options.useLoadIndicator&&(ISPConfig.requestsRunning+=1,ISPConfig.requestsRunning<2)){var a=$("#ajaxloader");a.length<1&&(a=$('<div id="ajaxloader" style="display: none;"></div>'),a.appendTo("body"));var b=$("#content");if(b.length<1)return;ISPConfig.indicatorCompleted=!1;var c=b.offset().left+150,d=b.offset().top+150;a.css({left:c,top:d}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=!0,ISPConfig.requestsRunning<1&&$(this).fadeOut("fast",function(){$(this).hide()})})}},hideLoadIndicator:function(){document.body.style.cursor="",ISPConfig.requestsRunning-=1,ISPConfig.requestsRunning<1&&(ISPConfig.requestsRunning=0,1==ISPConfig.indicatorCompleted&&$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()}))},onAfterSideNavLoaded:function(){1==ISPConfig.options.useComboBox&&$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0})},onAfterContentLoad:function(a,b){b=b?"&"+b:"",1==ISPConfig.options.useComboBox&&$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0,formatResult:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text},formatSelection:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text}}).on("change",function(){$("#pageForm .table #Filter").length>0&&$("#pageForm .table #Filter").trigger("click")}),$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0,minView:"month"}),$('input[data-input-element="datetime"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0}),$('[data-toggle="tooltip"]').tooltip({}),$('input[type="password"]').each(function(){$(this).prop("readonly",!0).tooltip({title:"Click to set",placement:"left"})}),$('input[type="password"]').on("click focus",function(){$(this).prop("readonly",!1),$(this).tooltip("destroy")}),ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitForm:function(a,b,c){var d=arguments[3];if(c||(c=!1),!c||window.confirm(c)){$.ajax({type:"POST",url:b,data:$("#"+a).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,e,f){if(d&&alert(d),f.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=f.responseText.split(":");ISPConfig.loadContent(g[1])}else f.responseText.indexOf("LOGIN_REDIRECT:")>-1?document.location.href="/index.php":($("#pageContent").html(f.responseText),ISPConfig.onAfterContentLoad(b,$("#"+a).serialize()),ISPConfig.pageFormChanged=!1);ISPConfig.hideLoadIndicator()},error:function(a){ISPConfig.hideLoadIndicator();a.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})}},submitUploadForm:function(a,b){var c=function(a){var b,c=a.contentWindow.document.body.innerHTML;try{b=JSON.parse(c)}catch(d){b=c}var e=$("<div></div>").html(b),f="",g=e.find("#OKMsg").html();g&&(f='<div id="OKMsg">'+g+"</div>");var h=e.find("#errorMsg").html();h&&(f=f+'<div id="errorMsg">'+h+"</div>");var i=e.find('input[name="_csrf_key"]').val(),j=e.find('input[name="_csrf_id"]').val();return f=f+'<input type="hidden" name="_csrf_id" value="'+j+'" /><input type="hidden" name="_csrf_key" value="'+i+'" />'},d="ajaxUploader-iframe-"+Math.round((new Date).getTime()/1e3);$("body").append('<iframe width="0" height="0" style="display:none;" name="'+d+'" id="'+d+'"/>'),$("#"+d).load(function(){var a=c(this);$("#errorMsg").remove(),$("#OKMsg").remove(),$('input[name="_csrf_key"]').remove(),$('input[name="_csrf_id"]').remove(),$('input[name="id"]').before(a),$(this).remove()}),$('input[type="file"]').closest("form").attr({target:d,action:b}).submit()},capp:function(a,b){$.ajax({type:"GET",url:"capp.php",data:"mod="+a+(void 0!=b?"&redirect="+b:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(""!=c.responseText)if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else if(c.responseText.indexOf("URL_REDIRECT:")>-1){var e=c.responseText.substr(c.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=e}ISPConfig.loadMenus(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})},loadContent:function(a){{var b=arguments[1];$.ajax({type:"GET",url:a,data:b?b:null,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,d,e){if(e.responseText.indexOf("HEADER_REDIRECT:")>-1){var f=e.responseText.split(":");ISPConfig.loadContent(f[1])}else if(e.responseText.indexOf("URL_REDIRECT:")>-1){var g=e.responseText.substr(e.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=g}else $("#pageContent").html(e.responseText),ISPConfig.onAfterContentLoad(a,b?b:null),ISPConfig.pageFormChanged=!1;ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 113")}})}},loadContentRefresh:function(a){if($("#refreshinterval").val()>0){{$.ajax({type:"GET",url:a,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(b,c,d){ISPConfig.hideLoadIndicator(),$("#pageContent").html(d.responseText),ISPConfig.onAfterContentLoad(a,"refresh="+document.getElementById("refreshinterval").value),ISPConfig.pageFormChanged=!1},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})}setTimeout("ISPConfig.loadContentRefresh('"+a+"&refresh="+document.getElementById("refreshinterval").value+"')",1e3*document.getElementById("refreshinterval").value*60)}},loadInitContent:function(){var a=$("#pageContent").attr("data-startpage");a||(a="dashboard/dashboard.php");$.ajax({type:"GET",url:a,data:"",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else $("#pageContent").html(c.responseText),ISPConfig.onAfterContentLoad("dashboard/dashboard.php",""),ISPConfig.pageFormChanged=!1;ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus(),ISPConfig.keepalive(),setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(a){}},1e3)},loadMenus:function(){$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#sidebar").html(c.responseText),ISPConfig.onAfterSideNavLoaded(),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 115")}}),$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#topnav-container").html(c.responseText),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(a,b,c){if(ISPConfig.requestsRunning>0)return console.log("tab change interrupted, request still running."),!1;document.pageForm.next_tab.value=a;var d=$("form#pageForm").find('[name="id"]'),e=null;if(d.length>0&&(e=d.val()),"y"!=ISPConfig.tabChangeDiscard||c)if(e&&"y"==ISPConfig.tabChangeWarning&&1==ISPConfig.pageFormChanged)if(window.confirm(ISPConfig.tabChangeWarningTxt))ISPConfig.submitForm("pageForm",b);else{var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}else ISPConfig.submitForm("pageForm",b);else{if(!(d.length<1||e)||0!=ISPConfig.pageFormChanged&&!window.confirm(ISPConfig.tabChangeDiscardTxt))return!1;var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}},confirm_action:function(a,b){window.confirm(b)&&ISPConfig.loadContent(a)},loadContentInto:function(a,b){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(b,c,d){$("#"+a).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(a,b,c){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(d,e,f){var g=f.responseText,h=g.split("#");el=document.getElementById(a),el.innerHTML="";for(var i=0;i<h.length;++i){var j=document.createElement("option");j.appendChild(document.createTextNode(h[i])),j.value=h[i],el.appendChild(j)}"undefined"!=typeof c&&c(a,b)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(){setTimeout(function(){ISPConfig.keepalive()},1e6)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},addAdditionalTemplate:function(){var a=$("#template_additional").val(),b=$("#tpl_add_select").val().split("|",2),c=b[0],d=b[1];if(c>0){var e=a.split("/");ISPConfig.new_tpl_add_id+=1;var f=$('<a href="#"></a>').attr("class","button icons16 icoDelete").click(function(a){a.preventDefault(),ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});e[e.length]="n"+ISPConfig.new_tpl_add_id+":"+c,$("<li>"+d+"</li>").attr("rel","n"+new_tpl_add_id).append(f).appendTo("#template_additional_list ul"),$("#template_additional").val(e.join("/")),alert("additional template "+d+" added to customer")}else alert("no additional template selcted")},delAdditionalTemplate:function(a){var b=$("#template_additional").val();if(a){var c=$("#template_additional_list ul").find('li[rel="'+a+'"]').eq(0),d=c.text();c.remove();for(var e=b.split("/"),f=new Array,g=0;g<e.length;g++){var h=e[g].split(":",2);(2!=h.length||h[0]!=a)&&(f[f.length]=e[g])}$("#template_additional").val(f.join("/")),alert("additional template "+d+" deleted from customer")}else if(""!=b){var i=document.getElementById("tpl_add_select").value.split("|",2),j=i[0],d=i[1];$("#template_additional_list ul").find("li:not([rel])").each(function(){var a=$(this).text();return a==d?($(this).remove(),!1):this});var f=b,k=new RegExp("(^|/)"+j+"(/|$)");f=f.replace(k,""),f=f.replace("//","/"),$("#template_additional").val(f),alert("additional template "+d+" deleted from customer")}else alert("no additional template selcted")}};$(document).on("change",function(a){var b=a.target.localName;$("#pageForm .table #Filter").length>0&&"select"==b&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),("select"==b||"input"==b||"textarea"==b)&&0==$(a.target).hasClass("no-page-form-change")&&(ISPConfig.pageFormChanged=!0)});var $page=$("html, body");$(document).on("click","a[data-load-content],button[data-load-content]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-load-content");return b?void ISPConfig.loadContent(b):this}),$(document).on("click","a[data-capp],button[data-capp]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-capp");return b?void ISPConfig.capp(b):this}),$(document).on("click","a[data-submit-form],button[data-submit-form]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this),c=b.attr("data-form-action"),d=b.attr("data-submit-form");"true"==b.attr("data-form-upload")?ISPConfig.submitUploadForm(d,c):ISPConfig.submitForm(d,c)}),$(document).bind("keypress",function(a){"13"==a.which&&$("#pageForm .table #Filter").length>0&&0==$(a.target).hasClass("ui-autocomplete-input")&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),"13"==a.which&&$(".tab-content button.formbutton-success").length>0&&"textarea"!=a.target.localName&&$(a.target).is(":input")&&(a.preventDefault(),$(".tab-content button.formbutton-success").not("[disabled='disabled']").trigger("click"))}),$(document).on("click","th[data-column]",function(){var b=$(this),c=b.attr("data-column");if(!c)return this;if($("#pageForm .table #Filter").length>0&&"false"!=b.attr("data-sortable")){var d=$("#Filter"),e=d.attr("data-form-action"),f=d.attr("data-submit-form"),g=b.attr("data-ordered"),h="?";e.indexOf("?")>=0&&(h="&"),e=e+h+"orderby="+c,ISPConfig.submitForm(f,e),$(document).ajaxComplete(function(){var a=$('#pageForm .table th[data-column="'+c+'"]');a.parent().children("th[data-column]").removeAttr("data-ordered"),g&&"asc"==g?a.attr("data-ordered","desc"):a.attr("data-ordered","asc")})}}),$(document).on("click",".addPlaceholder",function(){var a=$(this).text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click",".addPlaceholderContent",function(){var a=$(this).find(".addPlaceholderContent").text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click","[data-check-fields] > input[type='checkbox']",function(){if($(this).is(":checked"))for(var a=$(this).parent().attr("data-check-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!0)}}),$(document).on("click","[data-uncheck-fields] > input[type='checkbox']",function(){if(0==$(this).is(":checked"))for(var a=$(this).parent().attr("data-uncheck-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!1)}}),$(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(){if(document.selection)this.focus(),sel=document.selection.createRange(),sel.text=a,this.focus();else if(this.selectionStart||"0"==this.selectionStart){var c=this.selectionStart,d=this.selectionEnd,e=this.scrollTop;this.value=this.value.substring(0,c)+a+this.value.substring(d,this.value.length),this.focus(),this.selectionStart=c+a.length,this.selectionEnd=c+a.length,this.scrollTop=e}else this.value+=a,this.focus()})}}),$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"}),ISPConfig.loadInitContent(),$("#searchform").submit(function(a){a.preventDefault()}),$("#pageForm").submit(function(a){$("#pageForm .table #Filter").length>0&&a.preventDefault()}),$.fn.setCursorPosition=function(a){var b=$(this).get(0);if(b.setSelectionRange)b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();c.collapse(!0),a<0&&(a=$(this).val().length+a),c.moveEnd("character",a),c.moveStart("character",a),c.select()}},$.fn.getCursorPosition=function(){var a=0,b=$(this).get(0);if("number"===typeof b.selectionStart)a="backward"==b.selectionDirection?b.selectionStart:b.selectionEnd;else if(document.selection){this.focus();var c=document.selection.createRange();c.moveStart("character",-b.value.length),a=c.text.length}return a}}); \ No newline at end of file diff --git a/interface/web/themes/default/assets/stylesheets/ispconfig.css b/interface/web/themes/default/assets/stylesheets/ispconfig.css index fedee6f0f2620eccf690a9693f9c843e570afa60..aa383ab6e7edf7791dedf87613422ab1e6063f1d 100644 --- a/interface/web/themes/default/assets/stylesheets/ispconfig.css +++ b/interface/web/themes/default/assets/stylesheets/ispconfig.css @@ -31,7 +31,7 @@ body { content: ":"; } .formbutton-default { - padding: 6px 30px; + padding: 6px 10px; border-bottom-style: solid; border-bottom-width: 2px; font-size: 12px; @@ -694,4 +694,17 @@ span.flag-zw {background-position:0 -5435px} .input-group-field:last-child { border-top-left-radius:0; border-bottom-left-radius:0; +} + +#ajaxloader { + position: absolute; + width: 325px; + height: 150px; + background: #ffffff url('../images/ajax-loader.gif') no-repeat center center; + border: solid 2px #e1e1e1; + border-radius: 10px; + /*background: rgba(255, 255, 255, 0.85);*/ + padding: 20px; + text-align:center; + z-index: 100; } \ No newline at end of file diff --git a/interface/web/themes/default/assets/stylesheets/ispconfig.min.css b/interface/web/themes/default/assets/stylesheets/ispconfig.min.css index 4477ceae49cd43eae60b0ce7db2a929cdffd2f1a..5f41897f0ecb45a95722d477ca37379473845873 100644 --- a/interface/web/themes/default/assets/stylesheets/ispconfig.min.css +++ b/interface/web/themes/default/assets/stylesheets/ispconfig.min.css @@ -1 +1 @@ -body{overflow-y:scroll}.left{float:left}.right{float:right}.clear:after{content:"";display:table;clear:both}.marginTop15{margin-top:15px}.paddingX5{padding-left:5px!important;padding-right:5px!important}.width65{width:65px}.form-group input[type='checkbox']{margin-top:10px}.control-label{font-weight:normal}.control-label:after{content:":"}.formbutton-default{padding:6px 30px;border-bottom-style:solid;border-bottom-width:2px;font-size:12px;font-weight:bold;transition:all ease 500ms}.formbutton-success,.formbutton-danger{padding:6px 30px;border-style:solid;border-width:1px;border-bottom-width:solid;font-size:12px;font-weight:bold;transition:all ease 500ms}.formbutton-narrow{padding:6px 8px;margin-left:2px;margin-right:2px}.formbutton-narrower{padding:4px 6px}#main-wrapper{margin:0 auto;width:95%;max-width:1260px}#logo{float:left;width:200px;height:65px;margin-top:10px}#logo a{display:block;width:100%;height:100%}#headerbar{float:right}#searchform{float:right;margin-top:16px}#searchform>div{position:relative;display:table}#searchform>div>div{display:table-cell;padding-right:8px;vertical-align:top}#searchform .icon{padding:0 2px;font-size:16px}#logout-button{float:right;margin-top:16px;margin-left:25px;border-bottom-style:solid;border-bottom-width:2px;transition:all ease 500ms}#main-navigation{margin-top:24px}#main-navigation a{padding:0 12px;height:70px;border-bottom-style:solid;botder-bottom-width:2px;transition:all ease 500ms}#main-navigation .icon{font-size:32px}#main-navigation .title{margin-top:2px;font-weight:bold}.btn-group-justified .btn{border-right-width:0}.btn-group-justified .btn:last-of-type{border-right-width:1px}#content{width:78%}#passBar,#passText{display:inline-block;vertical-align:middle}#passBar{height:11px;padding:0}#passBar>div{height:100%;padding:0}#sidebar{margin-top:27px;width:18%;border-style:solid;border-width:1px;border-radius:4px}#sidebar header{margin:1px;padding:0 10px;height:40px;line-height:40px;font-weight:bold;border-top-left-radius:2px;border-top-right-radius:2px}#sidebar ul{margin:0;padding:0;list-style:none}#sidebar li{padding:10px;border-top-style:solid;border-top-width:1px;font-size:12px}#sidebar a{text-decoration:none;transition:color ease 500ms}.page-header{margin:20px 0;padding:0}.alert-notification a{font-weight:bold;text-decoration:none;transition:color ease 500ms}.alert-label,.alert-content{display:inline-block;vertical-align:top}.alert-label{width:60px}.modules{margin:0;padding:0;list-style:none}.modules li{float:left;margin-right:15px;margin-bottom:15px;padding:8px;width:200px;border-radius:4px;border-style:solid;border-width:1px}.modules .icon{float:left;margin-right:15px;font-size:50px}.modules .left{margin-top:5px}.modules .title{margin-top:6px;margin-left:20px;font-size:16px;font-weight:bold}.modules .button{margin-top:10px;width:100%;border-bottom-style:solid;border-bottom-width:2px;font-size:12px;font-weight:bold;transition:all ease 500ms}.modules a{text-decoration:none}.table-wrapper{margin-bottom:20px;border-radius:4px;border-style:solid;border-width:1px}.table{table-layout:fixed;margin-bottom:1px}.table caption{padding:5px 10px;text-align:left;font-weight:bold;font-size:18px;border-bottom-style:solid;border-bottom-width:1px}.table tbody tr{border-top-style:solid;border-top-width:1px;transition:background ease 500ms}.table tbody tr:last-child{border-radius:4px}.table tbody tr td{text-overflow:ellipsis;overflow-x:hidden}.tfooter{margin-top:-1px;height:40px;border-top-style:solid;border-top-width:1px}.pagination{margin:10px 0}.progress{display:inline-block;margin-bottom:0;width:150px;height:10px}p.fieldset-legend{display:none}.content-tab-wrapper{border-style:solid;border-width:1px;border-radius:4px}.content-tab-wrapper .nav-tabs>li>a{border-radius:0;border:none!important;border-right-style:solid!important;border-right-width:1px!important;outline:0;font-weight:bold;transition:background ease 500ms}.content-tab-wrapper .nav-tabs li:not(:first-child) a{margin-left:-2px}.tab-content{padding:25px 10px}.input-group-btn .icon-calendar{font-size:18px}thead.dark th{height:40px;line-height:40px;font-weight:normal}thead.dark th.small-col{width:14%}thead.dark th.tiny-col{width:8%;overflow:hidden;text-overflow:ellipsis}thead.dark th[data-column]{cursor:pointer}thead.dark th[data-column][data-ordered]{font-weight:bold;position:relative}thead.dark th[data-column][data-ordered]:before{content:"";display:block;position:absolute;right:5px;top:16px;width:0;height:0;vertical-align:middle;border-bottom:5px solid #fff;border-top:5px solid transparent;border-right:5px solid transparent;border-left:6px solid transparent;line-height:inherit}thead.dark th[data-column][data-ordered="desc"]:before{top:21px;border-bottom:5px solid transparent;border-top:5px solid #fff}thead.dark td input,thead.dark td select{width:100%}#footer{margin:20px 0;padding-top:20px;border-top-style:solid;border-top-width:1px;text-align:center;font-size:10px}.menu-btn{display:none;cursor:pointer}.df-container,.gs-container{position:relative}.gs-container:after{content:"";display:table;clear:both}ul.df-resultbox,ul.gs-resultbox{display:block;position:absolute;left:0;top:100%;margin:0;padding:0 0 10px;min-width:250px;max-width:500px;z-index:999999;background:#fff;list-style:none;box-shadow:2px 2px 5px #c5c5c5;border-radius:5px}ul.df-resultbox li,ul.gs-resultbox li{float:none;display:block;cursor:pointer;padding:0 10px}ul.gs-resultbox li{padding:3px 10px;line-height:1.1;font-size:.9em}ul.df-resultbox li:nth-child(even),ul.gs-resultbox li:nth-child(even){background:#f2f5f7}ul.df-resultbox li.df-cheader,ul.gs-resultbox li.gs-cheader{background:#fff;padding-top:10px;margin-bottom:10px}ul.df-resultbox li p,ul.gs-resultbox li p{margin-bottom:0;color:inherit}ul.df-resultbox li.df-cheader p.df-cheader-title,ul.gs-resultbox li.gs-cheader p.gs-cheader-title{font-weight:bold;margin-bottom:0}ul.df-resultbox li.df-cheader p.df-cheader-limit,ul.gs-resultbox li.gs-cheader p.gs-cheader-limit{font-weight:normal}ul.df-resultbox li.df-cdata img,ul.gs-resultbox li.gs-cdata img{margin-right:12px}ul.df-resultbox li.df-cdata p span.df-cdata-title,ul.gs-resultbox li.gs-cdata p span.gs-cdata-title{font-weight:bold}ul.gs-resultbox li.gs-cdata p span.gs-cdata-title{display:block}ul.df-resultbox li:first-child,ul.gs-resultbox li:first-child{border-top-left-radius:5px;border-top-right-radius:5px}ul.df-resultbox li:last-child,ul.gs-resultbox li:last-child{border-bottom-left-radius:5px;border-bottom-right-radius:5px}span.flags{background-image:url("../images/flags_sprite.png");background-repeat:no-repeat;min-height:20px;padding-left:27px;vertical-align:middle}span.flag-el{background-position:0 -1475px}span.flag-ad{background-position:0 -1px}span.flag-ae{background-position:0 -23px}span.flag-af{background-position:0 -45px}span.flag-ag{background-position:0 -67px}span.flag-ai{background-position:0 -89px}span.flag-al{background-position:0 -111px}span.flag-am{background-position:0 -133px}span.flag-an{background-position:0 -155px}span.flag-ao{background-position:0 -177px}span.flag-aq{background-position:0 -199px}span.flag-ar{background-position:0 -221px}span.flag-as{background-position:0 -243px}span.flag-at{background-position:0 -265px}span.flag-au{background-position:0 -287px}span.flag-aw{background-position:0 -309px}span.flag-ax{background-position:0 -331px}span.flag-az{background-position:0 -353px}span.flag-ba{background-position:0 -375px}span.flag-bb{background-position:0 -397px}span.flag-bd{background-position:0 -419px}span.flag-be{background-position:0 -441px}span.flag-bf{background-position:0 -463px}span.flag-bg{background-position:0 -485px}span.flag-bh{background-position:0 -507px}span.flag-bi{background-position:0 -529px}span.flag-bj{background-position:0 -551px}span.flag-bm{background-position:0 -573px}span.flag-bn{background-position:0 -595px}span.flag-bo{background-position:0 -617px}span.flag-br{background-position:0 -639px}span.flag-bs{background-position:0 -661px}span.flag-bt{background-position:0 -683px}span.flag-bv{background-position:0 -705px}span.flag-bw{background-position:0 -727px}span.flag-by{background-position:0 -749px}span.flag-bz{background-position:0 -771px}span.flag-ca{background-position:0 -793px}span.flag-cc{background-position:0 -837px}span.flag-cd{background-position:0 -859px}span.flag-cf{background-position:0 -881px}span.flag-cg{background-position:0 -903px}span.flag-ch{background-position:0 -925px}span.flag-ci{background-position:0 -947px}span.flag-ck{background-position:0 -969px}span.flag-cl{background-position:0 -991px}span.flag-cm{background-position:0 -1013px}span.flag-cn{background-position:0 -1035px}span.flag-co{background-position:0 -1057px}span.flag-cr{background-position:0 -1079px}span.flag-cs{background-position:0 -1101px}span.flag-cu{background-position:0 -1123px}span.flag-cv{background-position:0 -1145px}span.flag-cx{background-position:0 -1167px}span.flag-cy{background-position:0 -1189px}span.flag-cz{background-position:0 -1211px}span.flag-de{background-position:0 -1233px}span.flag-dj{background-position:0 -1255px}span.flag-dk{background-position:0 -1277px}span.flag-dm{background-position:0 -1299px}span.flag-do{background-position:0 -1321px}span.flag-dz{background-position:0 -1343px}span.flag-ec{background-position:0 -1365px}span.flag-ee{background-position:0 -1387px}span.flag-eg{background-position:0 -1409px}span.flag-eh{background-position:0 -1431px}span.flag-er{background-position:0 -1475px}span.flag-es{background-position:0 -1497px}span.flag-et{background-position:0 -1519px}span.flag-fi{background-position:0 -1585px}span.flag-fj{background-position:0 -1607px}span.flag-fk{background-position:0 -1629px}span.flag-fm{background-position:0 -1651px}span.flag-fo{background-position:0 -1673px}span.flag-fr{background-position:0 -1695px}span.flag-ga{background-position:0 -1717px}span.flag-gb,span.flag-en{background-position:0 -1739px}span.flag-gd{background-position:0 -1761px}span.flag-ge{background-position:0 -1783px}span.flag-gf{background-position:0 -1805px}span.flag-gh{background-position:0 -1827px}span.flag-gi{background-position:0 -1849px}span.flag-gl{background-position:0 -1871px}span.flag-gm{background-position:0 -1893px}span.flag-gn{background-position:0 -1915px}span.flag-gp{background-position:0 -1937px}span.flag-gq{background-position:0 -1959px}span.flag-gr{background-position:0 -1981px}span.flag-gs{background-position:0 -2003px}span.flag-gt{background-position:0 -2025px}span.flag-gu{background-position:0 -2047px}span.flag-gw{background-position:0 -2069px}span.flag-gy{background-position:0 -2091px}span.flag-hk{background-position:0 -2113px}span.flag-hm{background-position:0 -2135px}span.flag-hn{background-position:0 -2157px}span.flag-hr{background-position:0 -2179px}span.flag-ht{background-position:0 -2201px}span.flag-hu{background-position:0 -2223px}span.flag-id{background-position:0 -2245px}span.flag-ie{background-position:0 -2267px}span.flag-il{background-position:0 -2289px}span.flag-in{background-position:0 -2311px}span.flag-io{background-position:0 -2333px}span.flag-iq{background-position:0 -2355px}span.flag-ir{background-position:0 -2377px}span.flag-is{background-position:0 -2399px}span.flag-it{background-position:0 -2421px}span.flag-jm{background-position:0 -2443px}span.flag-jo{background-position:0 -2465px}span.flag-jp{background-position:0 -2487px}span.flag-ke{background-position:0 -2509px}span.flag-kg{background-position:0 -2531px}span.flag-kh{background-position:0 -2553px}span.flag-ki{background-position:0 -2575px}span.flag-km{background-position:0 -2597px}span.flag-kn{background-position:0 -2619px}span.flag-kp{background-position:0 -2641px}span.flag-kr{background-position:0 -2663px}span.flag-kw{background-position:0 -2685px}span.flag-ky{background-position:0 -2707px}span.flag-kz{background-position:0 -2729px}span.flag-la{background-position:0 -2751px}span.flag-lb{background-position:0 -2773px}span.flag-lc{background-position:0 -2795px}span.flag-li{background-position:0 -2817px}span.flag-lk{background-position:0 -2839px}span.flag-lr{background-position:0 -2861px}span.flag-ls{background-position:0 -2883px}span.flag-lt{background-position:0 -2905px}span.flag-lu{background-position:0 -2927px}span.flag-lv{background-position:0 -2949px}span.flag-ly{background-position:0 -2971px}span.flag-ma{background-position:0 -2993px}span.flag-mc{background-position:0 -3015px}span.flag-md{background-position:0 -3037px}span.flag-me{background-position:0 -3059px}span.flag-mg{background-position:0 -3081px}span.flag-mh{background-position:0 -3103px}span.flag-mk{background-position:0 -3125px}span.flag-ml{background-position:0 -3147px}span.flag-mm{background-position:0 -3169px}span.flag-mn{background-position:0 -3191px}span.flag-mo{background-position:0 -3213px}span.flag-mp{background-position:0 -3235px}span.flag-mq{background-position:0 -3257px}span.flag-mr{background-position:0 -3279px}span.flag-ms{background-position:0 -3301px}span.flag-mt{background-position:0 -3323px}span.flag-mu{background-position:0 -3345px}span.flag-mv{background-position:0 -3367px}span.flag-mw{background-position:0 -3389px}span.flag-mx{background-position:0 -3411px}span.flag-my{background-position:0 -3433px}span.flag-mz{background-position:0 -3455px}span.flag-na{background-position:0 -3477px}span.flag-nc{background-position:0 -3499px}span.flag-ne{background-position:0 -3521px}span.flag-nf{background-position:0 -3543px}span.flag-ng{background-position:0 -3565px}span.flag-ni{background-position:0 -3587px}span.flag-nl{background-position:0 -3609px}span.flag-no{background-position:0 -3631px}span.flag-np{background-position:0 -3653px}span.flag-nr{background-position:0 -3675px}span.flag-nu{background-position:0 -3697px}span.flag-nz{background-position:0 -3719px}span.flag-om{background-position:0 -3741px}span.flag-pa{background-position:0 -3763px}span.flag-pe{background-position:0 -3785px}span.flag-pf{background-position:0 -3807px}span.flag-pg{background-position:0 -3829px}span.flag-ph{background-position:0 -3851px}span.flag-pk{background-position:0 -3873px}span.flag-pl{background-position:0 -3895px}span.flag-pm{background-position:0 -3917px}span.flag-pn{background-position:0 -3939px}span.flag-pr{background-position:0 -3961px}span.flag-ps{background-position:0 -3983px}span.flag-pt{background-position:0 -4005px}span.flag-pw{background-position:0 -4027px}span.flag-py{background-position:0 -4049px}span.flag-qa{background-position:0 -4071px}span.flag-re{background-position:0 -4093px}span.flag-ro{background-position:0 -4115px}span.flag-rs{background-position:0 -4137px}span.flag-ru{background-position:0 -4159px}span.flag-rw{background-position:0 -4181px}span.flag-sa{background-position:0 -4203px}span.flag-sb{background-position:0 -4225px}span.flag-sc{background-position:0 -4247px}span.flag-sd{background-position:0 -4291px}span.flag-se{background-position:0 -4313px}span.flag-sg{background-position:0 -4335px}span.flag-sh{background-position:0 -4357px}span.flag-si{background-position:0 -4379px}span.flag-sj{background-position:0 -4401px}span.flag-sk{background-position:0 -4423px}span.flag-sl{background-position:0 -4445px}span.flag-sm{background-position:0 -4467px}span.flag-sn{background-position:0 -4489px}span.flag-so{background-position:0 -4511px}span.flag-sr{background-position:0 -4533px}span.flag-st{background-position:0 -4555px}span.flag-sv{background-position:0 -4577px}span.flag-sy{background-position:0 -4599px}span.flag-sz{background-position:0 -4621px}span.flag-tc{background-position:0 -4643px}span.flag-td{background-position:0 -4665px}span.flag-tf{background-position:0 -4687px}span.flag-tg{background-position:0 -4709px}span.flag-th{background-position:0 -4731px}span.flag-tj{background-position:0 -4753px}span.flag-tk{background-position:0 -4775px}span.flag-tl{background-position:0 -4797px}span.flag-tm{background-position:0 -4819px}span.flag-tn{background-position:0 -4841px}span.flag-to{background-position:0 -4863px}span.flag-tr{background-position:0 -4885px}span.flag-tt{background-position:0 -4907px}span.flag-tv{background-position:0 -4929px}span.flag-tw{background-position:0 -4951px}span.flag-tz{background-position:0 -4973px}span.flag-ua{background-position:0 -4995px}span.flag-ug{background-position:0 -5017px}span.flag-um{background-position:0 -5039px}span.flag-us{background-position:0 -5061px}span.flag-uy{background-position:0 -5083px}span.flag-uz{background-position:0 -5105px}span.flag-va{background-position:0 -5127px}span.flag-vc{background-position:0 -5149px}span.flag-ve{background-position:0 -5171px}span.flag-vg{background-position:0 -5193px}span.flag-vi{background-position:0 -5215px}span.flag-vn{background-position:0 -5237px}span.flag-vu{background-position:0 -5259px}span.flag-wf{background-position:0 -5303px}span.flag-ws{background-position:0 -5325px}span.flag-ye{background-position:0 -5347px}span.flag-yt{background-position:0 -5369px}span.flag-za{background-position:0 -5391px}span.flag-zm{background-position:0 -5413px}span.flag-zw{background-position:0 -5435px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){#logo{background-image:url("../images/logo@2x.png");background-size:200px 65px}}.input-group-field{display:table-cell;vertical-align:middle;border-radius:4px;min-width:1%;white-space:nowrap}.input-group-field .form-control{border-radius:inherit!important}.input-group-field:not(:first-child):not(:last-child){border-radius:0}.input-group-field:not(:first-child):not(:last-child) .form-control{border-left-width:0;border-right-width:0}.input-group-field:last-child{border-top-left-radius:0;border-bottom-left-radius:0} \ No newline at end of file +body{overflow-y:scroll}.left{float:left}.right{float:right}.clear:after{content:"";display:table;clear:both}.marginTop15{margin-top:15px}.paddingX5{padding-left:5px!important;padding-right:5px!important}.width65{width:65px}.form-group input[type='checkbox']{margin-top:10px}.control-label{font-weight:normal}.control-label:after{content:":"}.formbutton-default{padding:6px 30px;border-bottom-style:solid;border-bottom-width:2px;font-size:12px;font-weight:bold;transition:all ease 500ms}.formbutton-success,.formbutton-danger{padding:6px 30px;border-style:solid;border-width:1px;border-bottom-width:solid;font-size:12px;font-weight:bold;transition:all ease 500ms}.formbutton-narrow{padding:6px 8px;margin-left:2px;margin-right:2px}.formbutton-narrower{padding:4px 6px}#main-wrapper{margin:0 auto;width:95%;max-width:1260px}#logo{float:left;width:200px;height:65px;margin-top:10px}#logo a{display:block;width:100%;height:100%}#headerbar{float:right}#searchform{float:right;margin-top:16px}#searchform>div{position:relative;display:table}#searchform>div>div{display:table-cell;padding-right:8px;vertical-align:top}#searchform .icon{padding:0 2px;font-size:16px}#logout-button{float:right;margin-top:16px;margin-left:25px;border-bottom-style:solid;border-bottom-width:2px;transition:all ease 500ms}#main-navigation{margin-top:24px}#main-navigation a{padding:0 12px;height:70px;border-bottom-style:solid;botder-bottom-width:2px;transition:all ease 500ms}#main-navigation .icon{font-size:32px}#main-navigation .title{margin-top:2px;font-weight:bold}.btn-group-justified .btn{border-right-width:0}.btn-group-justified .btn:last-of-type{border-right-width:1px}#content{width:78%}#passBar,#passText{display:inline-block;vertical-align:middle}#passBar{height:11px;padding:0}#passBar>div{height:100%;padding:0}#sidebar{margin-top:27px;width:18%;border-style:solid;border-width:1px;border-radius:4px}#sidebar header{margin:1px;padding:0 10px;height:40px;line-height:40px;font-weight:bold;border-top-left-radius:2px;border-top-right-radius:2px}#sidebar ul{margin:0;padding:0;list-style:none}#sidebar li{padding:10px;border-top-style:solid;border-top-width:1px;font-size:12px}#sidebar a{text-decoration:none;transition:color ease 500ms}.page-header{margin:20px 0;padding:0}.alert-notification a{font-weight:bold;text-decoration:none;transition:color ease 500ms}.alert-label,.alert-content{display:inline-block;vertical-align:top}.alert-label{width:60px}.modules{margin:0;padding:0;list-style:none}.modules li{float:left;margin-right:15px;margin-bottom:15px;padding:8px;width:200px;border-radius:4px;border-style:solid;border-width:1px}.modules .icon{float:left;margin-right:15px;font-size:50px}.modules .left{margin-top:5px}.modules .title{margin-top:6px;margin-left:20px;font-size:16px;font-weight:bold}.modules .button{margin-top:10px;width:100%;border-bottom-style:solid;border-bottom-width:2px;font-size:12px;font-weight:bold;transition:all ease 500ms}.modules a{text-decoration:none}.table-wrapper{margin-bottom:20px;border-radius:4px;border-style:solid;border-width:1px}.table{table-layout:fixed;margin-bottom:1px}.table caption{padding:5px 10px;text-align:left;font-weight:bold;font-size:18px;border-bottom-style:solid;border-bottom-width:1px}.table tbody tr{border-top-style:solid;border-top-width:1px;transition:background ease 500ms}.table tbody tr:last-child{border-radius:4px}.table tbody tr td{text-overflow:ellipsis;overflow-x:hidden}.tfooter{margin-top:-1px;height:40px;border-top-style:solid;border-top-width:1px}.pagination{margin:10px 0}.progress{display:inline-block;margin-bottom:0;width:150px;height:10px}p.fieldset-legend{display:none}.content-tab-wrapper{border-style:solid;border-width:1px;border-radius:4px}.content-tab-wrapper .nav-tabs>li>a{border-radius:0;border:none!important;border-right-style:solid!important;border-right-width:1px!important;outline:0;font-weight:bold;transition:background ease 500ms}.content-tab-wrapper .nav-tabs li:not(:first-child) a{margin-left:-2px}.tab-content{padding:25px 10px}.input-group-btn .icon-calendar{font-size:18px}thead.dark th{height:40px;line-height:40px;font-weight:normal}thead.dark th.small-col{width:14%}thead.dark th.tiny-col{width:8%;overflow:hidden;text-overflow:ellipsis}thead.dark th[data-column]{cursor:pointer}thead.dark th[data-column][data-ordered]{font-weight:bold;position:relative}thead.dark th[data-column][data-ordered]:before{content:"";display:block;position:absolute;right:5px;top:16px;width:0;height:0;vertical-align:middle;border-bottom:5px solid #fff;border-top:5px solid transparent;border-right:5px solid transparent;border-left:6px solid transparent;line-height:inherit}thead.dark th[data-column][data-ordered="desc"]:before{top:21px;border-bottom:5px solid transparent;border-top:5px solid #fff}thead.dark td input,thead.dark td select{width:100%}#footer{margin:20px 0;padding-top:20px;border-top-style:solid;border-top-width:1px;text-align:center;font-size:10px}.menu-btn{display:none;cursor:pointer}.df-container,.gs-container{position:relative}.gs-container:after{content:"";display:table;clear:both}ul.df-resultbox,ul.gs-resultbox{display:block;position:absolute;left:0;top:100%;margin:0;padding:0 0 10px;min-width:250px;max-width:500px;z-index:999999;background:#fff;list-style:none;box-shadow:2px 2px 5px #c5c5c5;border-radius:5px}ul.df-resultbox li,ul.gs-resultbox li{float:none;display:block;cursor:pointer;padding:0 10px}ul.gs-resultbox li{padding:3px 10px;line-height:1.1;font-size:.9em}ul.df-resultbox li:nth-child(even),ul.gs-resultbox li:nth-child(even){background:#f2f5f7}ul.df-resultbox li.df-cheader,ul.gs-resultbox li.gs-cheader{background:#fff;padding-top:10px;margin-bottom:10px}ul.df-resultbox li p,ul.gs-resultbox li p{margin-bottom:0;color:inherit}ul.df-resultbox li.df-cheader p.df-cheader-title,ul.gs-resultbox li.gs-cheader p.gs-cheader-title{font-weight:bold;margin-bottom:0}ul.df-resultbox li.df-cheader p.df-cheader-limit,ul.gs-resultbox li.gs-cheader p.gs-cheader-limit{font-weight:normal}ul.df-resultbox li.df-cdata img,ul.gs-resultbox li.gs-cdata img{margin-right:12px}ul.df-resultbox li.df-cdata p span.df-cdata-title,ul.gs-resultbox li.gs-cdata p span.gs-cdata-title{font-weight:bold}ul.gs-resultbox li.gs-cdata p span.gs-cdata-title{display:block}ul.df-resultbox li:first-child,ul.gs-resultbox li:first-child{border-top-left-radius:5px;border-top-right-radius:5px}ul.df-resultbox li:last-child,ul.gs-resultbox li:last-child{border-bottom-left-radius:5px;border-bottom-right-radius:5px}span.flags{background-image:url("../images/flags_sprite.png");background-repeat:no-repeat;min-height:20px;padding-left:27px;vertical-align:middle}span.flag-el{background-position:0 -1475px}span.flag-ad{background-position:0 -1px}span.flag-ae{background-position:0 -23px}span.flag-af{background-position:0 -45px}span.flag-ag{background-position:0 -67px}span.flag-ai{background-position:0 -89px}span.flag-al{background-position:0 -111px}span.flag-am{background-position:0 -133px}span.flag-an{background-position:0 -155px}span.flag-ao{background-position:0 -177px}span.flag-aq{background-position:0 -199px}span.flag-ar{background-position:0 -221px}span.flag-as{background-position:0 -243px}span.flag-at{background-position:0 -265px}span.flag-au{background-position:0 -287px}span.flag-aw{background-position:0 -309px}span.flag-ax{background-position:0 -331px}span.flag-az{background-position:0 -353px}span.flag-ba{background-position:0 -375px}span.flag-bb{background-position:0 -397px}span.flag-bd{background-position:0 -419px}span.flag-be{background-position:0 -441px}span.flag-bf{background-position:0 -463px}span.flag-bg{background-position:0 -485px}span.flag-bh{background-position:0 -507px}span.flag-bi{background-position:0 -529px}span.flag-bj{background-position:0 -551px}span.flag-bm{background-position:0 -573px}span.flag-bn{background-position:0 -595px}span.flag-bo{background-position:0 -617px}span.flag-br{background-position:0 -639px}span.flag-bs{background-position:0 -661px}span.flag-bt{background-position:0 -683px}span.flag-bv{background-position:0 -705px}span.flag-bw{background-position:0 -727px}span.flag-by{background-position:0 -749px}span.flag-bz{background-position:0 -771px}span.flag-ca{background-position:0 -793px}span.flag-cc{background-position:0 -837px}span.flag-cd{background-position:0 -859px}span.flag-cf{background-position:0 -881px}span.flag-cg{background-position:0 -903px}span.flag-ch{background-position:0 -925px}span.flag-ci{background-position:0 -947px}span.flag-ck{background-position:0 -969px}span.flag-cl{background-position:0 -991px}span.flag-cm{background-position:0 -1013px}span.flag-cn{background-position:0 -1035px}span.flag-co{background-position:0 -1057px}span.flag-cr{background-position:0 -1079px}span.flag-cs{background-position:0 -1101px}span.flag-cu{background-position:0 -1123px}span.flag-cv{background-position:0 -1145px}span.flag-cx{background-position:0 -1167px}span.flag-cy{background-position:0 -1189px}span.flag-cz{background-position:0 -1211px}span.flag-de{background-position:0 -1233px}span.flag-dj{background-position:0 -1255px}span.flag-dk{background-position:0 -1277px}span.flag-dm{background-position:0 -1299px}span.flag-do{background-position:0 -1321px}span.flag-dz{background-position:0 -1343px}span.flag-ec{background-position:0 -1365px}span.flag-ee{background-position:0 -1387px}span.flag-eg{background-position:0 -1409px}span.flag-eh{background-position:0 -1431px}span.flag-er{background-position:0 -1475px}span.flag-es{background-position:0 -1497px}span.flag-et{background-position:0 -1519px}span.flag-fi{background-position:0 -1585px}span.flag-fj{background-position:0 -1607px}span.flag-fk{background-position:0 -1629px}span.flag-fm{background-position:0 -1651px}span.flag-fo{background-position:0 -1673px}span.flag-fr{background-position:0 -1695px}span.flag-ga{background-position:0 -1717px}span.flag-gb,span.flag-en{background-position:0 -1739px}span.flag-gd{background-position:0 -1761px}span.flag-ge{background-position:0 -1783px}span.flag-gf{background-position:0 -1805px}span.flag-gh{background-position:0 -1827px}span.flag-gi{background-position:0 -1849px}span.flag-gl{background-position:0 -1871px}span.flag-gm{background-position:0 -1893px}span.flag-gn{background-position:0 -1915px}span.flag-gp{background-position:0 -1937px}span.flag-gq{background-position:0 -1959px}span.flag-gr{background-position:0 -1981px}span.flag-gs{background-position:0 -2003px}span.flag-gt{background-position:0 -2025px}span.flag-gu{background-position:0 -2047px}span.flag-gw{background-position:0 -2069px}span.flag-gy{background-position:0 -2091px}span.flag-hk{background-position:0 -2113px}span.flag-hm{background-position:0 -2135px}span.flag-hn{background-position:0 -2157px}span.flag-hr{background-position:0 -2179px}span.flag-ht{background-position:0 -2201px}span.flag-hu{background-position:0 -2223px}span.flag-id{background-position:0 -2245px}span.flag-ie{background-position:0 -2267px}span.flag-il{background-position:0 -2289px}span.flag-in{background-position:0 -2311px}span.flag-io{background-position:0 -2333px}span.flag-iq{background-position:0 -2355px}span.flag-ir{background-position:0 -2377px}span.flag-is{background-position:0 -2399px}span.flag-it{background-position:0 -2421px}span.flag-jm{background-position:0 -2443px}span.flag-jo{background-position:0 -2465px}span.flag-jp{background-position:0 -2487px}span.flag-ke{background-position:0 -2509px}span.flag-kg{background-position:0 -2531px}span.flag-kh{background-position:0 -2553px}span.flag-ki{background-position:0 -2575px}span.flag-km{background-position:0 -2597px}span.flag-kn{background-position:0 -2619px}span.flag-kp{background-position:0 -2641px}span.flag-kr{background-position:0 -2663px}span.flag-kw{background-position:0 -2685px}span.flag-ky{background-position:0 -2707px}span.flag-kz{background-position:0 -2729px}span.flag-la{background-position:0 -2751px}span.flag-lb{background-position:0 -2773px}span.flag-lc{background-position:0 -2795px}span.flag-li{background-position:0 -2817px}span.flag-lk{background-position:0 -2839px}span.flag-lr{background-position:0 -2861px}span.flag-ls{background-position:0 -2883px}span.flag-lt{background-position:0 -2905px}span.flag-lu{background-position:0 -2927px}span.flag-lv{background-position:0 -2949px}span.flag-ly{background-position:0 -2971px}span.flag-ma{background-position:0 -2993px}span.flag-mc{background-position:0 -3015px}span.flag-md{background-position:0 -3037px}span.flag-me{background-position:0 -3059px}span.flag-mg{background-position:0 -3081px}span.flag-mh{background-position:0 -3103px}span.flag-mk{background-position:0 -3125px}span.flag-ml{background-position:0 -3147px}span.flag-mm{background-position:0 -3169px}span.flag-mn{background-position:0 -3191px}span.flag-mo{background-position:0 -3213px}span.flag-mp{background-position:0 -3235px}span.flag-mq{background-position:0 -3257px}span.flag-mr{background-position:0 -3279px}span.flag-ms{background-position:0 -3301px}span.flag-mt{background-position:0 -3323px}span.flag-mu{background-position:0 -3345px}span.flag-mv{background-position:0 -3367px}span.flag-mw{background-position:0 -3389px}span.flag-mx{background-position:0 -3411px}span.flag-my{background-position:0 -3433px}span.flag-mz{background-position:0 -3455px}span.flag-na{background-position:0 -3477px}span.flag-nc{background-position:0 -3499px}span.flag-ne{background-position:0 -3521px}span.flag-nf{background-position:0 -3543px}span.flag-ng{background-position:0 -3565px}span.flag-ni{background-position:0 -3587px}span.flag-nl{background-position:0 -3609px}span.flag-no{background-position:0 -3631px}span.flag-np{background-position:0 -3653px}span.flag-nr{background-position:0 -3675px}span.flag-nu{background-position:0 -3697px}span.flag-nz{background-position:0 -3719px}span.flag-om{background-position:0 -3741px}span.flag-pa{background-position:0 -3763px}span.flag-pe{background-position:0 -3785px}span.flag-pf{background-position:0 -3807px}span.flag-pg{background-position:0 -3829px}span.flag-ph{background-position:0 -3851px}span.flag-pk{background-position:0 -3873px}span.flag-pl{background-position:0 -3895px}span.flag-pm{background-position:0 -3917px}span.flag-pn{background-position:0 -3939px}span.flag-pr{background-position:0 -3961px}span.flag-ps{background-position:0 -3983px}span.flag-pt{background-position:0 -4005px}span.flag-pw{background-position:0 -4027px}span.flag-py{background-position:0 -4049px}span.flag-qa{background-position:0 -4071px}span.flag-re{background-position:0 -4093px}span.flag-ro{background-position:0 -4115px}span.flag-rs{background-position:0 -4137px}span.flag-ru{background-position:0 -4159px}span.flag-rw{background-position:0 -4181px}span.flag-sa{background-position:0 -4203px}span.flag-sb{background-position:0 -4225px}span.flag-sc{background-position:0 -4247px}span.flag-sd{background-position:0 -4291px}span.flag-se{background-position:0 -4313px}span.flag-sg{background-position:0 -4335px}span.flag-sh{background-position:0 -4357px}span.flag-si{background-position:0 -4379px}span.flag-sj{background-position:0 -4401px}span.flag-sk{background-position:0 -4423px}span.flag-sl{background-position:0 -4445px}span.flag-sm{background-position:0 -4467px}span.flag-sn{background-position:0 -4489px}span.flag-so{background-position:0 -4511px}span.flag-sr{background-position:0 -4533px}span.flag-st{background-position:0 -4555px}span.flag-sv{background-position:0 -4577px}span.flag-sy{background-position:0 -4599px}span.flag-sz{background-position:0 -4621px}span.flag-tc{background-position:0 -4643px}span.flag-td{background-position:0 -4665px}span.flag-tf{background-position:0 -4687px}span.flag-tg{background-position:0 -4709px}span.flag-th{background-position:0 -4731px}span.flag-tj{background-position:0 -4753px}span.flag-tk{background-position:0 -4775px}span.flag-tl{background-position:0 -4797px}span.flag-tm{background-position:0 -4819px}span.flag-tn{background-position:0 -4841px}span.flag-to{background-position:0 -4863px}span.flag-tr{background-position:0 -4885px}span.flag-tt{background-position:0 -4907px}span.flag-tv{background-position:0 -4929px}span.flag-tw{background-position:0 -4951px}span.flag-tz{background-position:0 -4973px}span.flag-ua{background-position:0 -4995px}span.flag-ug{background-position:0 -5017px}span.flag-um{background-position:0 -5039px}span.flag-us{background-position:0 -5061px}span.flag-uy{background-position:0 -5083px}span.flag-uz{background-position:0 -5105px}span.flag-va{background-position:0 -5127px}span.flag-vc{background-position:0 -5149px}span.flag-ve{background-position:0 -5171px}span.flag-vg{background-position:0 -5193px}span.flag-vi{background-position:0 -5215px}span.flag-vn{background-position:0 -5237px}span.flag-vu{background-position:0 -5259px}span.flag-wf{background-position:0 -5303px}span.flag-ws{background-position:0 -5325px}span.flag-ye{background-position:0 -5347px}span.flag-yt{background-position:0 -5369px}span.flag-za{background-position:0 -5391px}span.flag-zm{background-position:0 -5413px}span.flag-zw{background-position:0 -5435px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){#logo{background-image:url("../images/logo@2x.png");background-size:200px 65px}}.input-group-field{display:table-cell;vertical-align:middle;border-radius:4px;min-width:1%;white-space:nowrap}.input-group-field .form-control{border-radius:inherit!important}.input-group-field:not(:first-child):not(:last-child){border-radius:0}.input-group-field:not(:first-child):not(:last-child) .form-control{border-left-width:0;border-right-width:0}.input-group-field:last-child{border-top-left-radius:0;border-bottom-left-radius:0}#ajaxloader{position:absolute;width:325px;height:150px;background:#fff url('../images/ajax-loader.gif') no-repeat center center;border:solid 2px #e1e1e1;border-radius:10px;padding:20px;text-align:center;z-index:100} \ No newline at end of file diff --git a/security/security_settings.ini b/security/security_settings.ini index d3b8d9c743393e01e831780fc66cae887372189d..5cc381e3cde02bd8da1c69e14af5d9cad9a7c8b2 100644 --- a/security/security_settings.ini +++ b/security/security_settings.ini @@ -16,6 +16,7 @@ admin_allow_software_packages=superadmin admin_allow_software_repo=superadmin remote_api_allowed=yes password_reset_allowed=yes +session_regenerate_id=yes [ids] ids_enabled=no diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master index 7d6d66590aa1c593525bb0faeafc34ee88d56526..47d35304f609f4e4e3405d06ad33c46e146dce3a 100644 --- a/server/conf/apache_apps.vhost.master +++ b/server/conf/apache_apps.vhost.master @@ -14,6 +14,10 @@ <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> + + <IfModule mod_headers.c> + RequestHeader unset Proxy early + </IfModule> {tmpl_if name="enable_spdy" op="==" value="y"} <IfModule spdy_module> diff --git a/server/conf/nginx_apps.vhost.master b/server/conf/nginx_apps.vhost.master index 1101d193058a1f5f438f257668da6b38d4d84cc7..ed5e3a49ae5160842cfbc25bbd25e7e22f6c4822 100644 --- a/server/conf/nginx_apps.vhost.master +++ b/server/conf/nginx_apps.vhost.master @@ -32,6 +32,7 @@ server { fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + fastcgi_param HTTP_PROXY ""; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index f057088ac64a4adf580db10f18bf3b2187a68c8f..e2fd17bf06c0695c56825ab40cee808de2f74351 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -7,6 +7,7 @@ server { <tmpl_if name='ssl_enabled'> listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_ciphers EECDH+AESGCM:EDH+AESGCM:EECDH:EDH:!MD5:!RC4:!LOW:!MEDIUM:!CAMELLIA:!ECDSA:!DES:!DSS:!3DES:!NULL; <tmpl_if name='ipv6_enabled'> listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; </tmpl_if> diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index bb2d71d7d51976e4bb61306fd53ac1e6b428b4c9..442d630b4ee8652b9f7bef9ab439f4ca48664333 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -430,7 +430,8 @@ <tmpl_else> <tmpl_if name='rewrite_to_https' op='==' value='y'> RewriteCond %{HTTPS} off - <tmpl_if name='apache_version' op='<' value='2.4' format='version'>RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/</tmpl_if> + <tmpl_if name='apache_version' op='<' value='2.4' format='version'>RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/ +</tmpl_if> RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </tmpl_if> </tmpl_if> diff --git a/server/cron_debug.php b/server/cron_debug.php new file mode 100644 index 0000000000000000000000000000000000000000..615a56d7434b64912d6b114874d20164db0a7117 --- /dev/null +++ b/server/cron_debug.php @@ -0,0 +1,72 @@ +<?php + +/* +Copyright (c) 2007-2016, Till Brehm, projektfarm Gmbh +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of ISPConfig nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +define('SCRIPT_PATH', dirname($_SERVER["SCRIPT_FILENAME"])); +require SCRIPT_PATH."/lib/config.inc.php"; +require SCRIPT_PATH."/lib/app.inc.php"; + +set_time_limit(0); +ini_set('error_reporting', E_ALL & ~E_NOTICE); + +// make sure server_id is always an int +$conf['server_id'] = intval($conf['server_id']); + +// Load required base-classes +$app->uses('ini_parser,file,services,getconf,system,cron,functions'); +$app->load('libdatetime,cronjob'); + +// Path settings +$path = SCRIPT_PATH . '/lib/classes/cron.d'; + +//** Get commandline options +$cmd_opt = getopt('', array('cronjob::')); + +if(isset($cmd_opt['cronjob']) && is_file($path.'/'.$cmd_opt['cronjob'])) { + // Cronjob that shell be run + $cronjob_file = $cmd_opt['cronjob']; +} else { + die('Usage example: php cron_debug.php --cronjob=100-mailbox_stats.inc.php'); +} + +// Load and run the cronjob +$name = substr($cronjob_file, 0, strpos($cronjob_file, '.')); +if(preg_match('/^\d+\-(.*)$/', $name, $match)) $name = $match[1]; // strip numerical prefix from file name +include $path . '/' . $cronjob_file; +$class_name = 'cronjob_' . $name; +$cronjob = new $class_name(); + +$cronjob->onPrepare(); +$cronjob->onBeforeRun(); +$cronjob->onRunJob(); +$cronjob->onAfterRun(); + +die("finished.\n"); + +?> diff --git a/server/lib/classes/cron.d/100-mailbox_stats.inc.php b/server/lib/classes/cron.d/100-mailbox_stats.inc.php index 9778b2fc579f35bc5a9b79c8300fb961ab45b9f7..e347330c4c43f14bbb8922a551f70902ebdbf4bc 100644 --- a/server/lib/classes/cron.d/100-mailbox_stats.inc.php +++ b/server/lib/classes/cron.d/100-mailbox_stats.inc.php @@ -126,11 +126,10 @@ class cronjob_mailbox_stats extends cronjob { return array('line' => $line, 'timestamp' => $timestamp, 'size' => $matches[6], 'from' => $matches[2], 'to' => $to, 'message-id' => $matches[5]); } - function add_mailbox_traffic(&$traffic_array, $address, $traffic) { - global $mail_boxes, $mail_rewrites; - + function add_mailbox_traffic(&$traffic_array, $address, $traffic,$mail_boxes, $mail_rewrites) { + //global $mail_boxes, $mail_rewrites; + //echo '##'.print_r($mail_boxes).'##'; $address = strtolower($address); - if(in_array($address, $mail_boxes) == true) { if(!isset($traffic_array[$address])) $traffic_array[$address] = 0; $traffic_array[$address] += $traffic; @@ -193,12 +192,11 @@ class cronjob_mailbox_stats extends cronjob { continue; } } - - $this->add_mailbox_traffic($cur_line['from'], $cur_line['size']); + $this->add_mailbox_traffic($cur_line['from'], $cur_line['size'],$mail_boxes, $mail_rewrites); //echo "1\n"; //print_r($this->mailbox_traffic); foreach($cur_line['to'] as $to) { - $this->add_mailbox_traffic($to, $cur_line['size']); + $this->add_mailbox_traffic($to, $cur_line['size'],$mail_boxes, $mail_rewrites); //echo "2\n"; //print_r($this->mailbox_traffic); } @@ -227,9 +225,9 @@ class cronjob_mailbox_stats extends cronjob { } } - add_mailbox_traffic($mailbox_traffic, $cur_line['from'], $cur_line['size']); + add_mailbox_traffic($mailbox_traffic, $cur_line['from'], $cur_line['size'],$mail_boxes, $mail_rewrites); foreach($cur_line['to'] as $to) { - add_mailbox_traffic($mailbox_traffic, $to, $cur_line['size']); + add_mailbox_traffic($mailbox_traffic, $to, $cur_line['size'],$mail_boxes, $mail_rewrites); } } fclose($fp); diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index f4b6ab7bca3e35bb5fc471132931fbb78045047c..1f3f0bea4e48473527e83b13df01831135263ab0 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -888,7 +888,7 @@ class apache2_plugin { $file_system = $df_output[0]; $primitive_root = $df_output[1]; - if ( in_array($file_system , array('ext2','ext3','ext4'), true) ) { + if ( in_array($file_system , array('ext2','ext3','ext4','simfs','reiserfs'), true) ) { exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null'); exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null'); } elseif ($file_system == 'xfs') { @@ -1189,7 +1189,7 @@ class apache2_plugin { $sub_prefixes = array(); //* be sure to have good domain - if($data['new']['subdomain'] == "www" OR $data['new']['subdomain'] == "*") { + if(substr($domain,0,4) != 'www.' && ($data['new']['subdomain'] == "www" OR $data['new']['subdomain'] == "*")) { $temp_domains[] = "www." . $domain; } @@ -1207,7 +1207,7 @@ class apache2_plugin { if(is_array($aliasdomains)) { foreach($aliasdomains as $aliasdomain) { $temp_domains[] = $aliasdomain['domain']; - if(isset($aliasdomain['subdomain']) && ($aliasdomain['subdomain'] != "none")) { + if(isset($aliasdomain['subdomain']) && substr($aliasdomain['domain'],0,4) != 'www.' && ($aliasdomain['subdomain'] == "www" OR $aliasdomain['subdomain'] == "*")) { $temp_domains[] = "www." . $aliasdomain['domain']; } } @@ -1234,6 +1234,7 @@ class apache2_plugin { //if(!file_exists($crt_tmp_file) && !file_exists($key_tmp_file)) { // we must not skip if cert exists, otherwise changed domains (alias or sub) won't make it to the cert $app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG); + $app->log("Let's Encrypt SSL Cert domains: $lddomain", LOGLEVEL_DEBUG); $success = false; $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt')); diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index 7ae4660abb416170c3120231d8549b9b04784004..9c7a835e2f4ecd052e1c81e5308f8c17545481a0 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -167,7 +167,7 @@ class backup_plugin { if(file_exists($backup_dir.'/'.$backup['filename']) && !stristr($backup_dir.'/'.$backup['filename'], '..') && !stristr($backup_dir.'/'.$backup['filename'], 'etc')) { unlink($backup_dir.'/'.$backup['filename']); - $sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; + $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; $app->db->query($sql, $conf['server_id'], $backup['parent_domain_id'], $backup['filename']); if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql); $app->log('unlink '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG); diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index c7109a562e9d949af1cc408a0d7efc8bbab42254..1a13a57fcdddf3aa2fe20a9ec9c1165656d4452d 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -237,7 +237,7 @@ class cron_plugin { $command .= "\t{$this->parent_domain['system_user']}"; //* running as user if($job['type'] == 'url') { - $command .= "\t{$cron_config['wget']} -q -t 1 -T 7200 -O " . $log_wget_target . " " . escapeshellarg($job['command']) . " " . $log_target; + $command .= "\t{$cron_config['wget']} --user-agent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0' -q -t 1 -T 7200 -O " . $log_wget_target . " " . escapeshellarg($job['command']) . " " . $log_target; } else { $web_root = ''; if($job['type'] == 'chrooted') { diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 9933aae6181db339e24f79dc2a4187f8a2f0e437..7f73d08be025fc56aa5c6ee769e2d75073af33ab 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -747,7 +747,7 @@ class nginx_plugin { $file_system = $df_output[0]; $primitive_root = $df_output[1]; - if ( in_array($file_system , array('ext2','ext3','ext4'), true) ) { + if ( in_array($file_system , array('ext2','ext3','ext4','simfs','reiserfs'), true) ) { exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null'); exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null'); } elseif ($file_system == 'xfs') { @@ -1263,7 +1263,7 @@ class nginx_plugin { $sub_prefixes = array(); //* be sure to have good domain - if($data['new']['subdomain'] == "www" OR $data['new']['subdomain'] == "*") { + if(substr($domain,0,4) != 'www.' && ($data['new']['subdomain'] == "www" OR $data['new']['subdomain'] == "*")) { $temp_domains[] = "www." . $domain; } @@ -1281,7 +1281,7 @@ class nginx_plugin { if(is_array($aliasdomains)) { foreach($aliasdomains as $aliasdomain) { $temp_domains[] = $aliasdomain['domain']; - if(isset($aliasdomain['subdomain']) && ($aliasdomain['subdomain'] != "none")) { + if(isset($aliasdomain['subdomain']) && substr($aliasdomain['domain'],0,4) != 'www.' && ($aliasdomain['subdomain'] == "www" OR $aliasdomain['subdomain'] == "*")) { $temp_domains[] = "www." . $aliasdomain['domain']; } @@ -1313,6 +1313,7 @@ class nginx_plugin { //if(!file_exists($crt_tmp_file) && !file_exists($key_tmp_file)) { // we must not skip if cert exists, otherwise changed domains (alias or sub) won't make it to the cert $app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG); + $app->log("Let's Encrypt SSL Cert domains: $lddomain", LOGLEVEL_DEBUG); $success = false; $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt'));