From eebe766fc6f2444a690b8bfd2b0de41c91547e95 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 15 May 2014 14:16:36 +0200 Subject: [PATCH 001/158] - fixed default selected value in DATETIME form element --- interface/lib/classes/tform.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index 5fc06279b..05740b176 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -1509,7 +1509,7 @@ class tform { */ function _getDateTimeHTML($form_element, $default_value, $display_seconds=false) { - $_datetime = strtotime($default_value); + $_datetime = ($default_value && $default_value != '0000-00-00 00:00:00' ? strtotime($default_value) : false); $_showdate = ($_datetime === false) ? false : true; $dselect = array('day', 'month', 'year', 'hour', 'minute'); -- GitLab From 8385934b059c4ea11d527ea580e9af31153b360d Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Tue, 20 May 2014 10:40:35 +0200 Subject: [PATCH 002/158] - backups: plugin checks mount point of wrong backup directory (e.g. /var/backup/web10 instead of /var/backup). --- server/plugins-available/backup_plugin.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index 46be0a600..c3ed1aee4 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -75,10 +75,10 @@ class backup_plugin { $backup_dir_is_ready = true; $server_config['backup_dir_mount_cmd'] = trim($server_config['backup_dir_mount_cmd']); if($server_config['backup_dir_is_mount'] == 'y' && $server_config['backup_dir_mount_cmd'] != ''){ - if(!$app->system->is_mounted($backup_dir)){ + if(!$app->system->is_mounted($server_config['backup_dir'])){ exec(escapeshellcmd($server_config['backup_dir_mount_cmd'])); sleep(1); - if(!$app->system->is_mounted($backup_dir)) $backup_dir_is_ready = false; + if(!$app->system->is_mounted($server_config['backup_dir'])) $backup_dir_is_ready = false; } } -- GitLab From f93b6f4590d459f3aa7951ebdbcd4faa191fd366 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 21 May 2014 14:16:59 +0200 Subject: [PATCH 003/158] Fixed a syntax error in mail_user_password_edit.php --- interface/web/mailuser/mail_user_password_edit.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/web/mailuser/mail_user_password_edit.php b/interface/web/mailuser/mail_user_password_edit.php index f6d6d7823..07a19259e 100644 --- a/interface/web/mailuser/mail_user_password_edit.php +++ b/interface/web/mailuser/mail_user_password_edit.php @@ -51,7 +51,8 @@ $app->load('tform_actions'); class page_action extends tform_actions { function onSubmit() { - + global $app, $conf; + $this->id = $app->functions->intval($_SESSION['s']['user']['mailuser_id']); parent::onSubmit(); -- GitLab From f1eacebbfa9aebc255b1b4c56c682b96da405b6c Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Thu, 22 May 2014 09:37:23 +0200 Subject: [PATCH 004/158] - Added client field to DNS and DNS slave list views. --- .../dns/lib/lang/de_dns_slave_admin_list.lng | 10 +++ .../dns/lib/lang/de_dns_soa_admin_list.lng | 11 +++ .../dns/lib/lang/en_dns_slave_admin_list.lng | 10 +++ .../dns/lib/lang/en_dns_soa_admin_list.lng | 11 +++ interface/web/dns/list/dns_slave.list.php | 22 ++++- interface/web/dns/list/dns_soa.list.php | 22 ++++- .../dns/templates/dns_slave_admin_list.htm | 83 ++++++++++++++++++ .../web/dns/templates/dns_soa_admin_list.htm | 86 +++++++++++++++++++ 8 files changed, 253 insertions(+), 2 deletions(-) create mode 100644 interface/web/dns/lib/lang/de_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/de_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/en_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/en_dns_soa_admin_list.lng create mode 100644 interface/web/dns/templates/dns_slave_admin_list.htm create mode 100644 interface/web/dns/templates/dns_soa_admin_list.htm diff --git a/interface/web/dns/lib/lang/de_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/de_dns_slave_admin_list.lng new file mode 100644 index 000000000..974e214f6 --- /dev/null +++ b/interface/web/dns/lib/lang/de_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng new file mode 100644 index 000000000..363369c65 --- /dev/null +++ b/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/en_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/en_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/en_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/list/dns_slave.list.php b/interface/web/dns/list/dns_slave.list.php index 5a242de14..5c0be05fb 100644 --- a/interface/web/dns/list/dns_slave.list.php +++ b/interface/web/dns/list/dns_slave.list.php @@ -13,7 +13,11 @@ // Name of the list -$liste["name"] = "dns_slave"; +if($_SESSION['s']['user']['typ'] == 'admin') { + $liste["name"] = "dns_slave_admin"; +} else { + $liste["name"] = "dns_slave"; +} // Database table $liste["table"] = "dns_slave"; @@ -70,6 +74,22 @@ $liste["item"][] = array( 'field' => "server_id", ), 'width' => "", 'value' => ""); + +if($_SESSION['s']['user']['typ'] == 'admin') { + $liste["item"][] = array( 'field' => "sys_groupid", + 'datatype' => "INTEGER", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT groupid, name FROM sys_group WHERE groupid != 1 ORDER BY name', + 'keyfield'=> 'groupid', + 'valuefield'=> 'name' + ), + 'width' => "", + 'value' => ""); +} $liste["item"][] = array( 'field' => "origin", 'datatype' => "VARCHAR", diff --git a/interface/web/dns/list/dns_soa.list.php b/interface/web/dns/list/dns_soa.list.php index e3b240a7c..d6f56414e 100644 --- a/interface/web/dns/list/dns_soa.list.php +++ b/interface/web/dns/list/dns_soa.list.php @@ -13,7 +13,11 @@ // Name of the list -$liste["name"] = "dns_soa"; +if($_SESSION['s']['user']['typ'] == 'admin') { + $liste["name"] = "dns_soa_admin"; +} else { + $liste["name"] = "dns_soa"; +} // Database table $liste["table"] = "dns_soa"; @@ -70,6 +74,22 @@ $liste["item"][] = array( 'field' => "server_id", ), 'width' => "", 'value' => ""); + +if($_SESSION['s']['user']['typ'] == 'admin') { + $liste["item"][] = array( 'field' => "sys_groupid", + 'datatype' => "INTEGER", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT groupid, name FROM sys_group WHERE groupid != 1 ORDER BY name', + 'keyfield'=> 'groupid', + 'valuefield'=> 'name' + ), + 'width' => "", + 'value' => ""); +} $liste["item"][] = array( 'field' => "origin", 'datatype' => "VARCHAR", diff --git a/interface/web/dns/templates/dns_slave_admin_list.htm b/interface/web/dns/templates/dns_slave_admin_list.htm new file mode 100644 index 000000000..d4f13ce8c --- /dev/null +++ b/interface/web/dns/templates/dns_slave_admin_list.htm @@ -0,0 +1,83 @@ +

+

+ +
+ +
+ +
+
+
+
+ {tmpl_var name="datalog_changes_txt"} +
    + +
  • {tmpl_var name="text"}: {tmpl_var name="count"}
  • +
    +
+ {tmpl_var name="datalog_changes_end_txt"} +
+

+
+
+
{tmpl_var name="toolsarea_head_txt"} +
+ +
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{tmpl_var name='search_limit'}
+ +
{tmpl_var name="active"}{tmpl_var name="sys_groupid"}{tmpl_var name="server_id"}{tmpl_var name="origin"}{tmpl_var name="ns"} + {tmpl_var name='delete_txt'} +
{tmpl_var name='globalsearch_noresults_text_txt'}
+
+
+ +
diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm new file mode 100644 index 000000000..b77f88449 --- /dev/null +++ b/interface/web/dns/templates/dns_soa_admin_list.htm @@ -0,0 +1,86 @@ +

+

+ +
+ +
+ +
+
+
+
+ {tmpl_var name="datalog_changes_txt"} +
    + +
  • {tmpl_var name="text"}: {tmpl_var name="count"}
  • +
    +
+ {tmpl_var name="datalog_changes_end_txt"} +
+

+
+
+
{tmpl_var name="toolsarea_head_txt"} +
+ + + +
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{tmpl_var name='search_limit'}
+ +
{tmpl_var name="active"}{tmpl_var name="sys_groupid"}{tmpl_var name="server_id"}{tmpl_var name="origin"}{tmpl_var name="ns"}{tmpl_var name="mbox"} + {tmpl_var name='delete_txt'} +
{tmpl_var name='globalsearch_noresults_text_txt'}
+
+
+ +
\ No newline at end of file -- GitLab From 896a5820ec4bd985d1772d7e9b72602fbc6ebf91 Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Fri, 23 May 2014 01:36:48 +0200 Subject: [PATCH 005/158] - Fixed "no_domain_perm" error when trying to add proxy directives for subdomains or alias domains (nginx). --- interface/web/sites/web_aliasdomain_edit.php | 10 +++++++++- interface/web/sites/web_subdomain_edit.php | 9 ++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/interface/web/sites/web_aliasdomain_edit.php b/interface/web/sites/web_aliasdomain_edit.php index 413110982..008e7078a 100644 --- a/interface/web/sites/web_aliasdomain_edit.php +++ b/interface/web/sites/web_aliasdomain_edit.php @@ -123,9 +123,17 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; + + // Get the record of the parent domain + if(!@$this->dataRecord["parent_domain_id"] && $this->id) { + $tmp = $app->db->queryOneRecord("SELECT parent_domain_id FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id)); + if($tmp) $this->dataRecord["parent_domain_id"] = $tmp['parent_domain_id']; + unset($tmp); + } // Get the record of the parent domain $parent_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); /* check if the domain module is used - and check if the selected domain can be used! */ $app->uses('ini_parser,getconf'); @@ -153,7 +161,7 @@ class page_action extends tform_actions { //* make sure that the domain is lowercase if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); - + parent::onSubmit(); } diff --git a/interface/web/sites/web_subdomain_edit.php b/interface/web/sites/web_subdomain_edit.php index 0d485c439..4d079ff7e 100644 --- a/interface/web/sites/web_subdomain_edit.php +++ b/interface/web/sites/web_subdomain_edit.php @@ -130,6 +130,13 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; + + // Get the record of the parent domain + if(!@$this->dataRecord["parent_domain_id"] && $this->id) { + $tmp = $app->db->queryOneRecord("SELECT parent_domain_id FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id)); + if($tmp) $this->dataRecord["parent_domain_id"] = $tmp['parent_domain_id']; + unset($tmp); + } // Get the record of the parent domain $parent_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); @@ -162,7 +169,7 @@ class page_action extends tform_actions { //* make sure that the domain is lowercase if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); - + parent::onSubmit(); } -- GitLab From bcd725da57d20004a30e6934d5bc9669241461e4 Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Tue, 27 May 2014 19:08:59 +0200 Subject: [PATCH 006/158] - Implemented non-interactive install/update mode. --- install/autoinstall.conf_sample.php | 44 +++++++ install/install.php | 172 +++++++++++++++++++++++----- install/lib/installer_base.lib.php | 15 ++- install/update.php | 60 ++++++++-- 4 files changed, 245 insertions(+), 46 deletions(-) create mode 100644 install/autoinstall.conf_sample.php diff --git a/install/autoinstall.conf_sample.php b/install/autoinstall.conf_sample.php new file mode 100644 index 000000000..92ec00896 --- /dev/null +++ b/install/autoinstall.conf_sample.php @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/install/install.php b/install/install.php index 796b0273f..838209ec1 100644 --- a/install/install.php +++ b/install/install.php @@ -78,6 +78,10 @@ $dist = get_distname(); if($dist['id'] == '') die('Linux distribution or version not recognized.'); +//** Include the autoinstaller configuration (for non-interactive setups) +error_reporting(E_ALL ^ E_NOTICE); +if(is_file('autoinstall.conf.php')) include_once 'autoinstall.conf.php'; + //** Include the distribution-specific installer class library and configuration if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once 'dist/lib/'.$dist['baseid'].'.lib.php'; include_once 'dist/lib/'.$dist['id'].'.lib.php'; @@ -109,7 +113,12 @@ if(is_dir('/usr/local/ispconfig')) { $inst->find_installed_apps(); //** Select the language and set default timezone -$conf['language'] = $inst->simple_query('Select language', array('en', 'de'), 'en'); +if($autoinstall['language'] == 'default') $autoinstall['language'] = 'en'; +if($autoinstall['language'] == 'en' || $autoinstall['language'] == 'de'){ + $conf['language'] = $autoinstall['language']; +} else { + $conf['language'] = $inst->simple_query('Select language', array('en', 'de'), 'en'); +} $conf['timezone'] = get_system_timezone(); //* Set default theme @@ -117,13 +126,19 @@ $conf['theme'] = 'default'; $conf['language_file_import_enabled'] = true; //** Select installation mode -$install_mode = $inst->simple_query('Installation mode', array('standard', 'expert'), 'standard'); +if($autoinstall['install_mode'] == 'default') $autoinstall['install_mode'] = 'standard'; +if($autoinstall['install_mode'] == 'standard' || $autoinstall['install_mode'] == 'expert'){ + $install_mode = $autoinstall['install_mode']; +} else { + $install_mode = $inst->simple_query('Installation mode', array('standard', 'expert'), 'standard'); +} //** Get the hostname $tmp_out = array(); exec('hostname -f', $tmp_out); -$conf['hostname'] = $inst->free_query('Full qualified hostname (FQDN) of the server, eg server1.domain.tld ', @$tmp_out[0]); +if($autoinstall['hostname'] == 'default') $autoinstall['hostname'] = @$tmp_out[0]; +$conf['hostname'] = ($autoinstall['hostname'] != '' ? $autoinstall['hostname'] : $inst->free_query('Full qualified hostname (FQDN) of the server, eg server1.domain.tld ', @$tmp_out[0])); unset($tmp_out); // Check if the mysql functions are loaded in PHP @@ -132,16 +147,24 @@ if(!function_exists('mysql_connect')) die('No PHP MySQL functions available. Ple //** Get MySQL root credentials $finished = false; do { - $tmp_mysql_server_host = $inst->free_query('MySQL server hostname', $conf['mysql']['host']); - $tmp_mysql_server_admin_user = $inst->free_query('MySQL root username', $conf['mysql']['admin_user']); - $tmp_mysql_server_admin_password = $inst->free_query('MySQL root password', $conf['mysql']['admin_password']); - $tmp_mysql_server_database = $inst->free_query('MySQL database to create', $conf['mysql']['database']); - $tmp_mysql_server_charset = $inst->free_query('MySQL charset', $conf['mysql']['charset']); + if($autoinstall['mysql_hostname'] == 'default') $autoinstall['mysql_hostname'] = $conf['mysql']['host']; + if($autoinstall['mysql_root_user'] == 'default') $autoinstall['mysql_root_user'] = $conf['mysql']['admin_user']; + if($autoinstall['mysql_database'] == 'default') $autoinstall['mysql_database'] = $conf['mysql']['database']; + if($autoinstall['mysql_charset'] == 'default') $autoinstall['mysql_charset'] = $conf['mysql']['charset']; + + $tmp_mysql_server_host = ($autoinstall['mysql_hostname'] != ''? $autoinstall['mysql_hostname'] : $inst->free_query('MySQL server hostname', $conf['mysql']['host'])); + $tmp_mysql_server_admin_user = ($autoinstall['mysql_root_user'] != ''? $autoinstall['mysql_root_user'] : $inst->free_query('MySQL root username', $conf['mysql']['admin_user'])); + $tmp_mysql_server_admin_password = (isset($autoinstall['mysql_root_password'])? $autoinstall['mysql_root_password'] : $inst->free_query('MySQL root password', $conf['mysql']['admin_password'])); + $tmp_mysql_server_database = ($autoinstall['mysql_database'] != ''? $autoinstall['mysql_database'] : $inst->free_query('MySQL database to create', $conf['mysql']['database'])); + $tmp_mysql_server_charset = ($autoinstall['mysql_charset'] != ''? $autoinstall['mysql_charset'] : $inst->free_query('MySQL charset', $conf['mysql']['charset'])); if($install_mode == 'expert') { swriteln("The next two questions are about the internal ISPConfig database user and password.\nIt is recommended to accept the defaults which are 'ispconfig' as username and a random password.\nIf you use a different password, use only numbers and chars for the password.\n"); - $conf['mysql']['ispconfig_user'] = $inst->free_query('ISPConfig mysql database username', $conf['mysql']['ispconfig_user']); - $conf['mysql']['ispconfig_password'] = $inst->free_query('ISPConfig mysql database password', $conf['mysql']['ispconfig_password']); + + if($autoinstall['mysql_ispconfig_user'] == 'default') $autoinstall['mysql_ispconfig_user'] = $conf['mysql']['ispconfig_user']; + + $conf['mysql']['ispconfig_user'] = ($autoinstall['mysql_ispconfig_user'] != ''? $autoinstall['mysql_ispconfig_user'] : $inst->free_query('ISPConfig mysql database username', $conf['mysql']['ispconfig_user'])); + $conf['mysql']['ispconfig_password'] = (isset($autoinstall['mysql_ispconfig_password'])? $autoinstall['mysql_ispconfig_password'] : $inst->free_query('ISPConfig mysql database password', $conf['mysql']['ispconfig_password'])); } //* Initialize the MySQL server connection @@ -176,7 +199,12 @@ if($install_mode == 'standard') { //* Configure Webserver - Apache or nginx if($conf['apache']['installed'] == true && $conf['nginx']['installed'] == true) { - $http_server_to_use = $inst->simple_query('Apache and nginx detected. Select server to use for ISPConfig:', array('apache', 'nginx'), 'apache'); + if($autoinstall['http_server'] == 'default') $autoinstall['http_server'] = 'apache'; + if($autoinstall['http_server'] == 'apache' || $autoinstall['http_server'] == 'nginx'){ + $http_server_to_use = $autoinstall['http_server']; + } else { + $http_server_to_use = $inst->simple_query('Apache and nginx detected. Select server to use for ISPConfig:', array('apache', 'nginx'), 'apache'); + } if($http_server_to_use == 'apache'){ $conf['nginx']['installed'] = false; } else { @@ -293,13 +321,19 @@ if($install_mode == 'standard') { swriteln('Installing ISPConfig'); //** Customize the port ISPConfig runs on - $ispconfig_vhost_port = $inst->free_query('ISPConfig Port', '8080'); + if($autoinstall['isspconfig_port'] == 'default') $autoinstall['ispconfig_port'] = '8080'; + $ispconfig_vhost_port = (intval($autoinstall['ispconfig_port']) > 0 ? intval($autoinstall['ispconfig_port']) : $inst->free_query('ISPConfig Port', '8080')); if($conf['apache']['installed'] == true) $conf['apache']['vhost_port'] = $ispconfig_vhost_port; if($conf['nginx']['installed'] == true) $conf['nginx']['vhost_port'] = $ispconfig_vhost_port; unset($ispconfig_vhost_port); - if(strtolower($inst->simple_query('Do you want a secure (SSL) connection to the ISPConfig web interface', array('y', 'n'), 'y')) == 'y') { - $inst->make_ispconfig_ssl_cert(); + if($autoinstall['ispconfig_use_ssl'] == 'default') $autoinstall['ispconfig_use_ssl'] = 'y'; + if($autoinstall['ispconfig_use_ssl'] == 'y' || $autoinstall['ispconfig_use_ssl'] == 'n'){ + if($autoinstall['ispconfig_use_ssl'] == 'y') $inst->make_ispconfig_ssl_cert(); + } else { + if(strtolower($inst->simple_query('Do you want a secure (SSL) connection to the ISPConfig web interface', array('y', 'n'), 'y')) == 'y') { + $inst->make_ispconfig_ssl_cert(); + } } $inst->install_ispconfig(); @@ -354,17 +388,26 @@ if($install_mode == 'standard') { //** Get Server ID // $conf['server_id'] = $inst->free_query('Unique Numeric ID of the server','1'); // Server ID is an autoInc value of the mysql database now + $tmp_join_multiserver_setup = 'n'; + if($autoinstall['join_multiserver_setup'] == 'default') $autoinstall['join_multiserver_setup'] = 'n'; + if($autoinstall['join_multiserver_setup'] == 'y' || $autoinstall['join_multiserver_setup'] == 'n'){ + $tmp_join_multiserver_setup = $autoinstall['join_multiserver_setup']; + } else { + $tmp_join_multiserver_setup = strtolower($inst->simple_query('Shall this server join an existing ISPConfig multiserver setup', array('y', 'n'), 'n')); + } - if(strtolower($inst->simple_query('Shall this server join an existing ISPConfig multiserver setup', array('y', 'n'), 'n')) == 'y') { + if($tmp_join_multiserver_setup == 'y') { $conf['mysql']['master_slave_setup'] = 'y'; //** Get MySQL root credentials $finished = false; do { - $tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host']); - $tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user']); - $tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password']); - $tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database']); + if($autoinstall['mysql_master_database'] == 'default') $autoinstall['mysql_master_database'] = $conf['mysql']['master_database']; + + $tmp_mysql_server_host = ($autoinstall['mysql_master_hostname'] != ''? $autoinstall['mysql_master_hostname'] : $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host'])); + $tmp_mysql_server_admin_user = ($autoinstall['mysql_master_root_user'] != ''? $autoinstall['mysql_master_root_user'] : $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user'])); + $tmp_mysql_server_admin_password = (isset($autoinstall['mysql_master_root_password'])? $autoinstall['mysql_master_root_password'] : $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password'])); + $tmp_mysql_server_database = ($autoinstall['mysql_master_database'] != ''? $autoinstall['mysql_master_database'] : $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'])); //* Initialize the MySQL server connection if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) { @@ -397,7 +440,12 @@ if($install_mode == 'standard') { //* Configure Webserver - Apache or nginx if($conf['apache']['installed'] == true && $conf['nginx']['installed'] == true) { - $http_server_to_use = $inst->simple_query('Apache and nginx detected. Select server to use for ISPConfig:', array('apache', 'nginx'), 'apache'); + if($autoinstall['http_server'] == 'default') $autoinstall['http_server'] = 'apache'; + if($autoinstall['http_server'] == 'apache' || $autoinstall['http_server'] == 'nginx'){ + $http_server_to_use = $autoinstall['http_server']; + } else { + $http_server_to_use = $inst->simple_query('Apache and nginx detected. Select server to use for ISPConfig:', array('apache', 'nginx'), 'apache'); + } if($http_server_to_use == 'apache'){ $conf['nginx']['installed'] = false; } else { @@ -410,8 +458,15 @@ if($install_mode == 'standard') { swriteln(''); $inst->add_database_server_record(); + $tmp_configure_mail = 'y'; + if($autoinstall['configure_mail'] == 'default') $autoinstall['configure_mail'] = 'y'; + if($autoinstall['configure_mail'] == 'y' || $autoinstall['configure_mail'] == 'n'){ + $tmp_configure_mail = $autoinstall['configure_mail']; + } else { + $tmp_configure_mail = strtolower($inst->simple_query('Configure Mail', array('y', 'n') , 'y')); + } - if(strtolower($inst->simple_query('Configure Mail', array('y', 'n') , 'y') ) == 'y') { + if($tmp_configure_mail == 'y') { $conf['services']['mail'] = true; @@ -470,20 +525,41 @@ if($install_mode == 'standard') { } //** Configure Jailkit - if(strtolower($inst->simple_query('Configure Jailkit', array('y', 'n'), 'y') ) == 'y') { + $tmp_configure_jailkit = 'y'; + if($autoinstall['configure_jailkit'] == 'default') $autoinstall['configure_jailkit'] = 'y'; + if($autoinstall['configure_jailkit'] == 'y' || $autoinstall['configure_jailkit'] == 'n'){ + $tmp_configure_jailkit = $autoinstall['configure_jailkit']; + } else { + $tmp_configure_jailkit = strtolower($inst->simple_query('Configure Jailkit', array('y', 'n'), 'y')); + } + if($tmp_configure_jailkit == 'y') { swriteln('Configuring Jailkit'); $inst->configure_jailkit(); } //** Configure Pureftpd - if(strtolower($inst->simple_query('Configure FTP Server', array('y', 'n'), 'y') ) == 'y') { + $tmp_configure_ftp = 'y'; + if($autoinstall['configure_ftp'] == 'default') $autoinstall['configure_ftp'] = 'y'; + if($autoinstall['configure_ftp'] == 'y' || $autoinstall['configure_ftp'] == 'n'){ + $tmp_configure_ftp = $autoinstall['configure_ftp']; + } else { + $tmp_configure_ftp = strtolower($inst->simple_query('Configure FTP Server', array('y', 'n'), 'y')); + } + if($tmp_configure_ftp == 'y') { swriteln('Configuring Pureftpd'); $inst->configure_pureftpd(); if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart')); } //** Configure DNS - if(strtolower($inst->simple_query('Configure DNS Server', array('y', 'n'), 'y')) == 'y') { + $tmp_configure_dns = 'y'; + if($autoinstall['configure_dns'] == 'default') $autoinstall['configure_dns'] = 'y'; + if($autoinstall['configure_dns'] == 'y' || $autoinstall['configure_dns'] == 'n'){ + $tmp_configure_dns = $autoinstall['configure_dns']; + } else { + $tmp_configure_dns = strtolower($inst->simple_query('Configure DNS Server', array('y', 'n'), 'y')); + } + if($tmp_configure_dns == 'y') { $conf['services']['dns'] = true; //* Configure DNS if($conf['powerdns']['installed'] == true) { @@ -522,7 +598,14 @@ if($install_mode == 'standard') { //** Configure Apache if($conf['apache']['installed'] == true){ swriteln("\nHint: If this server shall run the ISPConfig interface, select 'y' in the 'Configure Apache Server' option.\n"); - if(strtolower($inst->simple_query('Configure Apache Server', array('y', 'n'), 'y')) == 'y') { + $tmp_configure_apache = 'y'; + if($autoinstall['configure_apache'] == 'default') $autoinstall['configure_apache'] = 'y'; + if($autoinstall['configure_apache'] == 'y' || $autoinstall['configure_apache'] == 'n'){ + $tmp_configure_apache = $autoinstall['configure_apache']; + } else { + $tmp_configure_apache = strtolower($inst->simple_query('Configure Apache Server', array('y', 'n'), 'y')); + } + if($tmp_configure_apache == 'y') { $conf['services']['web'] = true; swriteln('Configuring Apache'); $inst->configure_apache(); @@ -540,7 +623,14 @@ if($install_mode == 'standard') { //** Configure nginx if($conf['nginx']['installed'] == true){ swriteln("\nHint: If this server shall run the ISPConfig interface, select 'y' in the 'Configure nginx Server' option.\n"); - if(strtolower($inst->simple_query('Configure nginx Server', array('y', 'n'), 'y')) == 'y') { + $tmp_configure_nginx = 'y'; + if($autoinstall['configure_nginx'] == 'default') $autoinstall['configure_nginx'] = 'y'; + if($autoinstall['configure_nginx'] == 'y' || $autoinstall['configure_nginx'] == 'n'){ + $tmp_configure_nginx = $autoinstall['configure_nginx']; + } else { + $tmp_configure_nginx = strtolower($inst->simple_query('Configure nginx Server', array('y', 'n'), 'y')); + } + if($tmp_configure_nginx == 'y') { $conf['services']['web'] = true; swriteln('Configuring nginx'); $inst->configure_nginx(); @@ -556,7 +646,14 @@ if($install_mode == 'standard') { } //** Configure Firewall - if(strtolower($inst->simple_query('Configure Firewall Server', array('y', 'n'), 'y')) == 'y') { + $tmp_configure_firewall = 'y'; + if($autoinstall['configure_firewall'] == 'default') $autoinstall['configure_firewall'] = 'y'; + if($autoinstall['configure_firewall'] == 'y' || $autoinstall['configure_firewall'] == 'n'){ + $tmp_configure_firewall = $autoinstall['configure_firewall']; + } else { + $tmp_configure_firewall = strtolower($inst->simple_query('Configure Firewall Server', array('y', 'n'), 'y')); + } + if($tmp_configure_firewall == 'y') { //if($conf['bastille']['installed'] == true) { //* Configure Bastille Firewall $conf['services']['firewall'] = true; @@ -579,7 +676,14 @@ if($install_mode == 'standard') { //** Configure ISPConfig :-) $install_ispconfig_interface_default = ($conf['mysql']['master_slave_setup'] == 'y')?'n':'y'; - if(strtolower($inst->simple_query('Install ISPConfig Web Interface', array('y', 'n'), $install_ispconfig_interface_default)) == 'y') { + $tmp_install_ispconfig_web_interface = $install_ispconfig_interface_default; + if($autoinstall['install_ispconfig_web_interface'] == 'default') $autoinstall['install_ispconfig_web_interface'] = $install_ispconfig_interface_default; + if($autoinstall['install_ispconfig_web_interface'] == 'y' || $autoinstall['install_ispconfig_web_interface'] == 'n'){ + $tmp_install_ispconfig_web_interface = $autoinstall['install_ispconfig_web_interface']; + } else { + $tmp_install_ispconfig_web_interface = strtolower($inst->simple_query('Install ISPConfig Web Interface', array('y', 'n'), $install_ispconfig_interface_default)); + } + if($tmp_install_ispconfig_web_interface == 'y') { swriteln('Installing ISPConfig'); //** We want to check if the server is a module or cgi based php enabled server @@ -597,13 +701,19 @@ if($install_mode == 'standard') { */ //** Customise the port ISPConfig runs on - $ispconfig_vhost_port = $inst->free_query('ISPConfig Port', '8080'); + if($autoinstall['ispconfig_port'] == 'default') $autoinstall['ispconfig_port'] = '8080'; + $ispconfig_vhost_port = (intval($autoinstall['ispconfig_port']) > 0 ? intval($autoinstall['ispconfig_port']) : $inst->free_query('ISPConfig Port', '8080')); if($conf['apache']['installed'] == true) $conf['apache']['vhost_port'] = $ispconfig_vhost_port; if($conf['nginx']['installed'] == true) $conf['nginx']['vhost_port'] = $ispconfig_vhost_port; unset($ispconfig_vhost_port); - if(strtolower($inst->simple_query('Enable SSL for the ISPConfig web interface', array('y', 'n'), 'y')) == 'y') { - $inst->make_ispconfig_ssl_cert(); + if($autoinstall['ispconfig_use_ssl'] == 'default') $autoinstall['ispconfig_use_ssl'] = 'y'; + if($autoinstall['ispconfig_use_ssl'] == 'y' || $autoinstall['ispconfig_use_ssl'] == 'n'){ + if($autoinstall['ispconfig_use_ssl'] == 'y') $inst->make_ispconfig_ssl_cert(); + } else { + if(strtolower($inst->simple_query('Enable SSL for the ISPConfig web interface', array('y', 'n'), 'y')) == 'y') { + $inst->make_ispconfig_ssl_cert(); + } } $inst->install_ispconfig_interface = true; diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 7d6348bf3..2fc9e0b87 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -750,8 +750,13 @@ class installer_base { if(!stristr($options, 'dont-create-certs')) { //* Create the SSL certificate - $command = 'cd '.$config_dir.'; ' - .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; + if(is_file('autoinstall.conf.php')){ + $command = 'cd '.$config_dir.'; ' + .'openssl req -new -subj \'/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd\' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; + } else { + $command = 'cd '.$config_dir.'; ' + .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; + } exec($command); $command = 'chmod o= '.$config_dir.'/smtpd.key'; @@ -1683,7 +1688,11 @@ class installer_base { $ssl_pw = substr(md5(mt_rand()), 0, 6); exec("openssl genrsa -des3 -passout pass:$ssl_pw -out $ssl_key_file 4096"); - exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -out $ssl_csr_file"); + if(is_file('autoinstall.conf.php')){ + exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -subj '/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd' -key $ssl_key_file -out $ssl_csr_file"); + } else { + exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -out $ssl_csr_file"); + } exec("openssl req -x509 -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -in $ssl_csr_file -out $ssl_crt_file -days 3650"); exec("openssl rsa -passin pass:$ssl_pw -in $ssl_key_file -out $ssl_key_file.insecure"); rename($ssl_key_file, $ssl_key_file.'.secure'); diff --git a/install/update.php b/install/update.php index 6a1b9d13e..1862ef218 100644 --- a/install/update.php +++ b/install/update.php @@ -83,6 +83,10 @@ unset($conf); if($dist['id'] == '') die('Linux distribution or version not recognized.'); +//** Include the autoinstaller configuration (for non-interactive setups) +error_reporting(E_ALL ^ E_NOTICE); +if(is_file('autoinstall.conf.php')) include_once 'autoinstall.conf.php'; + //** Include the distribution-specific installer class library and configuration if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once 'dist/lib/'.$dist['baseid'].'.lib.php'; include_once 'dist/lib/'.$dist['id'].'.lib.php'; @@ -131,7 +135,13 @@ $inst->find_installed_apps(); echo "This application will update ISPConfig 3 on your server.\n\n"; //* Make a backup before we start the update -$do_backup = $inst->simple_query('Shall the script create a ISPConfig backup in /var/backup/ now?', array('yes', 'no'), 'yes'); +if($autoupdate['do_backup'] == 'default') $autoupdate['do_backup'] = 'yes'; +if($autoupdate['do_backup'] == 'yes' || $autoupdate['do_backup'] == 'no'){ + $do_backup = $autoupdate['do_backup']; +} else { + $do_backup = $inst->simple_query('Shall the script create a ISPConfig backup in /var/backup/ now?', array('yes', 'no'), 'yes'); +} + if($do_backup == 'yes') { //* Create the backup directory @@ -180,7 +190,7 @@ do { $finished = true; } else { swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error()); - $conf["mysql"]["admin_password"] = $inst->free_query('MySQL root password', $conf['mysql']['admin_password']); + $conf["mysql"]["admin_password"] = (isset($autoupdate['mysql_root_password'])? $autoupdate['mysql_root_password'] : $inst->free_query('MySQL root password', $conf['mysql']['admin_password'])); } } while ($finished == false); unset($finished); @@ -198,10 +208,12 @@ if($conf['mysql']['master_slave_setup'] == 'y') { //** Get MySQL root credentials $finished = false; do { - $tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host']); - $tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user']); - $tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password']); - $tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database']); + if($autoupdate['mysql_master_database'] == 'default') $autoupdate['mysql_master_database'] = $conf['mysql']['master_database']; + + $tmp_mysql_server_host = ($autoupdate['mysql_master_hostname'] != ''? $autoupdate['mysql_master_hostname'] : $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host'])); + $tmp_mysql_server_admin_user = ($autoupdate['mysql_master_root_user'] != ''? $autoupdate['mysql_master_root_user'] : $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user'])); + $tmp_mysql_server_admin_password = (isset($autoupdate['mysql_master_root_password'])? $autoupdate['mysql_master_root_password'] : $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password'])); + $tmp_mysql_server_database = ($autoupdate['mysql_master_database'] != ''? $autoupdate['mysql_master_database'] : $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'])); //* Initialize the MySQL server connection if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) { @@ -244,7 +256,12 @@ updateDbAndIni(); */ //if($conf_old['dbmaster_user'] != '' or $conf_old['dbmaster_host'] != '') { //** Update master database rights -$reconfigure_master_database_rights_answer = $inst->simple_query('Reconfigure Permissions in master database?', array('yes', 'no'), 'no'); +if($autoupdate['reconfigure_permissions_in_master_database'] == 'default') $autoupdate['reconfigure_permissions_in_master_database'] = 'no'; +if($autoupdate['reconfigure_permissions_in_master_database'] == 'no' || $autoupdate['reconfigure_permissions_in_master_database'] == 'yes'){ + $reconfigure_master_database_rights_answer = $autoupdate['reconfigure_permissions_in_master_database']; +} else { + $reconfigure_master_database_rights_answer = $inst->simple_query('Reconfigure Permissions in master database?', array('yes', 'no'), 'no'); +} if($reconfigure_master_database_rights_answer == 'yes') { $inst->grant_master_database_rights(); @@ -252,7 +269,12 @@ if($reconfigure_master_database_rights_answer == 'yes') { //} //** Shall the services be reconfigured during update -$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no'), 'yes'); +if($autoupdate['reconfigure_services'] == 'default') $autoupdate['reconfigure_services'] = 'yes'; +if($autoupdate['reconfigure_services'] == 'yes' || $autoupdate['reconfigure_services'] == 'no'){ + $reconfigure_services_answer = $autoupdate['reconfigure_services']; +} else { + $reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no'), 'yes'); +} if($reconfigure_services_answer == 'yes') { @@ -379,15 +401,23 @@ if($conf['nginx']['installed'] == true){ if ($conf['services']['web'] && $inst->install_ispconfig_interface) { //** Customise the port ISPConfig runs on $ispconfig_port_number = get_ispconfig_port_number(); + if($autoupdate['ispconfig_port'] == 'default') $autoupdate['ispconfig_port'] = $ispconfig_port_number; if($conf['webserver']['server_type'] == 'nginx'){ - $conf['nginx']['vhost_port'] = $inst->free_query('ISPConfig Port', $ispconfig_port_number); + $conf['nginx']['vhost_port'] = (intval($autoupdate['ispconfig_port']) > 0 ? intval($autoupdate['ispconfig_port']) : $inst->free_query('ISPConfig Port', $ispconfig_port_number)); } else { - $conf['apache']['vhost_port'] = $inst->free_query('ISPConfig Port', $ispconfig_port_number); + $conf['apache']['vhost_port'] = (intval($autoupdate['ispconfig_port']) > 0 ? intval($autoupdate['ispconfig_port']) : $inst->free_query('ISPConfig Port', $ispconfig_port_number)); } // $ispconfig_ssl_default = (is_ispconfig_ssl_enabled() == true)?'y':'n'; - if(strtolower($inst->simple_query('Create new ISPConfig SSL certificate', array('yes', 'no'), 'no')) == 'yes') { + $tmp_create_new_ispconfig_ssl_cert = 'no'; + if($autoupdate['create_new_ispconfig_ssl_cert'] == 'default') $autoupdate['create_new_ispconfig_ssl_cert'] = 'no'; + if($autoupdate['create_new_ispconfig_ssl_cert'] == 'no' || $autoupdate['create_new_ispconfig_ssl_cert'] == 'yes'){ + $tmp_create_new_ispconfig_ssl_cert = $autoupdate['create_new_ispconfig_ssl_cert']; + } else { + $tmp_create_new_ispconfig_ssl_cert = strtolower($inst->simple_query('Create new ISPConfig SSL certificate', array('yes', 'no'), 'no')); + } + if($tmp_create_new_ispconfig_ssl_cert == 'yes') { $inst->make_ispconfig_ssl_cert(); } } @@ -395,7 +425,13 @@ if ($conf['services']['web'] && $inst->install_ispconfig_interface) { $inst->install_ispconfig(); //** Configure Crontab -$update_crontab_answer = $inst->simple_query('Reconfigure Crontab?', array('yes', 'no'), 'yes'); +if($autoupdate['reconfigure_crontab'] == 'default') $autoupdate['reconfigure_crontab'] = 'yes'; +if($autoupdate['reconfigure_crontab'] == 'no' || $autoupdate['reconfigure_crontab'] == 'yes'){ + $update_crontab_answer = $autoupdate['reconfigure_crontab']; +} else { + $update_crontab_answer = $inst->simple_query('Reconfigure Crontab?', array('yes', 'no'), 'yes'); +} + if($update_crontab_answer == 'yes') { swriteln('Updating Crontab'); $inst->install_crontab(); -- GitLab From b491adf094bbf9bc9c5b8a386511ddafd8c97855 Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Sun, 1 Jun 2014 19:41:17 +0200 Subject: [PATCH 007/158] - FPM socket permissions need to be 660 also under Apache, otherwise you get the following error: [Sun Jun 01 18:52:24 2014] [error] [client 146.52.61.243] (13)Permission denied: FastCGI: failed to connect to server "/var/www/clients/client1/web2/cgi-bin/php5-fcgi-1.2.3.4-80-example.de": connect() failed [Sun Jun 01 18:52:24 2014] [error] [client 146.52.61.243] FastCGI: incomplete headers (0 bytes) received from server "/var/www/clients/client1/web2/cgi-bin/php5-fcgi-1.2.3.4-80-example.de" --- server/plugins-available/apache2_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 5f81fa671..e3833b03a 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -2654,7 +2654,7 @@ class apache2_plugin { $fpm_socket = $socket_dir.$pool_name.'.sock'; $tpl->setVar('fpm_socket', $fpm_socket); - $tpl->setVar('fpm_listen_mode', '0600'); + $tpl->setVar('fpm_listen_mode', '0660'); $tpl->setVar('fpm_pool', $pool_name); $tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] - 1); -- GitLab From 8fef1d91e66f478e4ede672508ac7f3063157937 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Mon, 2 Jun 2014 10:48:56 +0200 Subject: [PATCH 008/158] - set -Indexes option globally --- install/tpl/apache_ispconfig.conf.master | 1 + 1 file changed, 1 insertion(+) diff --git a/install/tpl/apache_ispconfig.conf.master b/install/tpl/apache_ispconfig.conf.master index be6f637b7..908603310 100644 --- a/install/tpl/apache_ispconfig.conf.master +++ b/install/tpl/apache_ispconfig.conf.master @@ -18,6 +18,7 @@ CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m # Do not allow access to the root file system of the server for security reasons + Options -Indexes AllowOverride None Require all denied -- GitLab From e6fd3515639cbfbb54a8263c3eec26a961bd6a89 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 5 Jun 2014 16:23:47 +0200 Subject: [PATCH 009/158] - removed [PT] flags as it is causing problems with some php applications due to information in SCRIPT_NAME and PHP_SELF --- server/conf/vhost.conf.master | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 5a110cc11..f67b280f9 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -336,7 +336,7 @@ RewriteCond %{REQUEST_URI} !^ - RewriteRule ^/(.*)$ $1 [PT] + RewriteRule ^/(.*)$ $1 -- GitLab From 5a6670bd3c1083f3c6f6652202e7c776745b5eff Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 6 Jun 2014 16:28:46 +0200 Subject: [PATCH 010/158] - fixed vhost template. website settings were overriding handlers of apache config files, e. g. roundcube --- server/conf/vhost.conf.master | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index f67b280f9..0dd805af8 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -57,6 +57,10 @@ + # Clear PHP settings of this website + + SetHandler None + Options +FollowSymLinks AllowOverride @@ -85,6 +89,10 @@ + # Clear PHP settings of this website + + SetHandler None + Options +FollowSymLinks AllowOverride @@ -186,10 +194,6 @@ SuexecUserGroup - # Clear PHP settings of this website - - SetHandler None - # mod_php enabled AddType application/x-httpd-php .php .php3 .php4 .php5 -- GitLab From c71d48f6593a35abf71e9dae97dd7a56499f20d9 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 6 Jun 2014 16:41:17 +0200 Subject: [PATCH 011/158] Fixed mailman problem when catchall email addresses are used on the same domain name. --- install/dist/lib/opensuse.lib.php | 1 + install/tpl/debian_postfix.conf.master | 2 +- install/tpl/fedora_postfix.conf.master | 2 +- install/tpl/opensuse_postfix.conf.master | 4 +++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 6e6a61867..7ff56de89 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -125,6 +125,7 @@ class installer_dist extends installer_base { //* Create aliasaes exec('/usr/lib/mailman/bin/genaliases 2>/dev/null'); + if(is_file('/var/lib/mailman/data/virtual-mailman')) exec('postmap /var/lib/mailman/data/virtual-mailman'); } function configure_postfix($options = '') diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index e17880e95..bab660e10 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -1,7 +1,7 @@ alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases virtual_alias_domains = -virtual_alias_maps = proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf, hash:/var/lib/mailman/data/virtual-mailman +virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 0911f2a7e..e2c68c0e1 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -1,5 +1,5 @@ virtual_alias_domains = -virtual_alias_maps = proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf, hash:/etc/mailman/virtual-mailman +virtual_alias_maps = hash:/etc/mailman/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 90ed2859f..149e2bdfd 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -1,5 +1,7 @@ +alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases +alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases virtual_alias_domains = -virtual_alias_maps = proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf +virtual_alias_maps = hash:/etc/mailman/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} -- GitLab From f43ef975d75a57973886e7f8eabb068d2ac15cc0 Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Mon, 16 Jun 2014 18:06:06 +0200 Subject: [PATCH 012/158] - Make sure ISPConfig shows the correct error message (instad of an SQL error) when a website is renamed after an alias domain that still exists. - It should be possible to create two websites with the same domain on the same server as long as the IP differs. I therefore changed the serverdomain index of the web_domain table to include the IP address. --- install/sql/incremental/upd_0078.sql | 1 + install/sql/ispconfig3.sql | 2 +- interface/lib/classes/validate_domain.inc.php | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 install/sql/incremental/upd_0078.sql diff --git a/install/sql/incremental/upd_0078.sql b/install/sql/incremental/upd_0078.sql new file mode 100644 index 000000000..39b8c1ce9 --- /dev/null +++ b/install/sql/incremental/upd_0078.sql @@ -0,0 +1 @@ +ALTER TABLE `web_domain` DROP INDEX `serverdomain`, ADD UNIQUE `serverdomain` ( `server_id` , `ip_address`, `domain` ); \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 21c064471..bf68e5d7c 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1879,7 +1879,7 @@ CREATE TABLE `web_domain` ( `added_date` date NOT NULL DEFAULT '0000-00-00', `added_by` varchar(255) DEFAULT NULL, PRIMARY KEY (`domain_id`), - UNIQUE KEY `serverdomain` ( `server_id` , `domain` ) + UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` ) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- diff --git a/interface/lib/classes/validate_domain.inc.php b/interface/lib/classes/validate_domain.inc.php index 988945df4..788b34bd6 100644 --- a/interface/lib/classes/validate_domain.inc.php +++ b/interface/lib/classes/validate_domain.inc.php @@ -137,7 +137,8 @@ class validate_domain { //if($check['cnt'] > 0) return false; // we can have the same domain on different servers or different IPs, so we have to check for identical domains on the same IP (or wildcard IPs) - $checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (`domain` = '" . $app->db->quote($domain_name) . "'".$additional_sql1.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql1 != '' ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : "")); + $checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (`domain` = '" . $app->db->quote($domain_name) . "'".$additional_sql1.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql1 != '' && $domain['parent_domain_id'] > 0 ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : "")); + if(is_array($checks) && !empty($checks)){ foreach($checks as $check){ @@ -207,7 +208,7 @@ class validate_domain { //$check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_domain` WHERE CONCAT(`subdomain`, '.', `domain`) = '" . $app->db->quote($domain_name) . "' AND `domain_id` != " . $app->functions->intval($primary_id)); //if($check['cnt'] > 0) return false; // we can have the same domain on different servers or different IPs, so we have to check for identical domains on the same IP (or wildcard IPs) - $checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (CONCAT(`subdomain`, '.', `domain`) = '" . $app->db->quote($domain_name) . "'".$additional_sql2.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql2 != '' ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : "")); + $checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (CONCAT(`subdomain`, '.', `domain`) = '" . $app->db->quote($domain_name) . "'".$additional_sql2.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql2 != '' && $domain['parent_domain_id'] > 0 ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : "")); if(is_array($checks) && !empty($checks)){ foreach($checks as $check){ if($domain['ip_address'] == '*') return false; -- GitLab From 9d57538ce8181a02f1652647aa940471fbee2cf3 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 17 Jun 2014 10:26:03 +0200 Subject: [PATCH 013/158] Allow + and @ in FTP user names for compatibility with cpanel. --- interface/web/sites/form/ftp_user.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php index 20e4565ff..2b97832be 100644 --- a/interface/web/sites/form/ftp_user.tform.php +++ b/interface/web/sites/form/ftp_user.tform.php @@ -91,7 +91,7 @@ $form["tabs"]['ftp'] = array ( 'validators' => array ( 0 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'username_error_unique'), 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{0,64}$/', + 'regex' => '/^[\w\.\-@\+]{0,64}$/', 'errmsg'=> 'username_error_regex'), ), 'default' => '', -- GitLab From b509d0056fda3793f81d3332c8f601559ae268aa Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 18 Jun 2014 09:20:20 +0200 Subject: [PATCH 014/158] Changed a function in tform.inc.php to make it compatible with php 5.1 (used in Centos 5.10). --- interface/lib/classes/tform.inc.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index 05740b176..452230414 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -252,7 +252,9 @@ class tform { unset($tmp_recordid); $querystring = str_replace("{AUTHSQL}", $this->getAuthSQL('r'), $querystring); - $querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', "self::table_auth_sql", $querystring); + //$querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', "self::table_auth_sql", $querystring); + //*Used the ld form to be compatible with php < 5.3 + $querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', create_function('$matches','global $app; $tmp = $app->tform->getAuthSQL("r", $matches[1]); return $tmp;'), $querystring); // Getting the records $tmp_records = $app->db->queryAllRecords($querystring); @@ -293,10 +295,12 @@ class tform { return $values; } - + + /* function table_auth_sql($matches){ return $this->getAuthSQL('r', $matches[1]); } + */ //* If the parameter 'valuelimit' is set function applyValueLimit($limit, $values) { -- GitLab From 117ecd60c809bbc19a3c1f795f6db9e53465cdec Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Thu, 19 Jun 2014 13:00:44 +0200 Subject: [PATCH 015/158] - autoselect password if you use "Generate Password" function (saves a click if you want to copy the password). --- interface/web/js/scrigo.js.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php index 4e51cd56a..85a321c55 100644 --- a/interface/web/js/scrigo.js.php +++ b/interface/web/js/scrigo.js.php @@ -809,7 +809,7 @@ function generatePassword(passwordFieldID, repeatPasswordFieldID){ oldPWField.remove(); var pword = password(, false, 1); jQuery('#'+repeatPasswordFieldID).val(pword); - newPWField.attr('id', passwordFieldID).val(pword).trigger('keyup'); + newPWField.attr('id', passwordFieldID).val(pword).trigger('keyup').select(); } var funcDisableClick = function(e) { e.preventDefault(); return false; }; -- GitLab From 1b8648682c8b403b8947afb8db711734a330b29e Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Thu, 19 Jun 2014 13:27:07 +0200 Subject: [PATCH 016/158] - force Google Chrome to NOT autocomplete user/password fields. --- interface/web/themes/blue/templates/main.tpl.htm | 1 + interface/web/themes/default-304/templates/main.tpl.htm | 1 + interface/web/themes/default/templates/main.tpl.htm | 1 + interface/web/themes/default_64_navimg/templates/main.tpl.htm | 1 + interface/web/themes/default_combobox/templates/main.tpl.htm | 1 + interface/web/themes/default_no_navimg/templates/main.tpl.htm | 1 + 6 files changed, 6 insertions(+) diff --git a/interface/web/themes/blue/templates/main.tpl.htm b/interface/web/themes/blue/templates/main.tpl.htm index 70c4f26cd..0007256e0 100644 --- a/interface/web/themes/blue/templates/main.tpl.htm +++ b/interface/web/themes/blue/templates/main.tpl.htm @@ -161,6 +161,7 @@
+
 
diff --git a/interface/web/themes/default-304/templates/main.tpl.htm b/interface/web/themes/default-304/templates/main.tpl.htm index 862693bad..7f227e18a 100644 --- a/interface/web/themes/default-304/templates/main.tpl.htm +++ b/interface/web/themes/default-304/templates/main.tpl.htm @@ -168,6 +168,7 @@
+
diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm index 9146291bb..3339d9f3b 100644 --- a/interface/web/themes/default/templates/main.tpl.htm +++ b/interface/web/themes/default/templates/main.tpl.htm @@ -164,6 +164,7 @@
+
 
diff --git a/interface/web/themes/default_64_navimg/templates/main.tpl.htm b/interface/web/themes/default_64_navimg/templates/main.tpl.htm index c0180e1e9..6d0395ba1 100644 --- a/interface/web/themes/default_64_navimg/templates/main.tpl.htm +++ b/interface/web/themes/default_64_navimg/templates/main.tpl.htm @@ -168,6 +168,7 @@
+
diff --git a/interface/web/themes/default_combobox/templates/main.tpl.htm b/interface/web/themes/default_combobox/templates/main.tpl.htm index 142794e07..1df185fda 100644 --- a/interface/web/themes/default_combobox/templates/main.tpl.htm +++ b/interface/web/themes/default_combobox/templates/main.tpl.htm @@ -323,6 +323,7 @@
+
diff --git a/interface/web/themes/default_no_navimg/templates/main.tpl.htm b/interface/web/themes/default_no_navimg/templates/main.tpl.htm index 5f45a0af9..adfc656e0 100644 --- a/interface/web/themes/default_no_navimg/templates/main.tpl.htm +++ b/interface/web/themes/default_no_navimg/templates/main.tpl.htm @@ -169,6 +169,7 @@
+
-- GitLab From d5b5d443196f85cd540bb6af0a4d2350579788ca Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 20 Jun 2014 18:51:17 +0200 Subject: [PATCH 017/158] Changed warning message for git version update. --- server/scripts/ispconfig_update.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/scripts/ispconfig_update.php b/server/scripts/ispconfig_update.php index 3512de9e9..2a5deedbc 100644 --- a/server/scripts/ispconfig_update.php +++ b/server/scripts/ispconfig_update.php @@ -86,9 +86,9 @@ echo " _____ ___________ _____ __ _ |___/ "; echo "\n".str_repeat('-', 80)."\n"; echo "\n\n>> Update \n\n"; -echo "Please choose the update method. For production systems select 'stable'. \nThe update from svn is only for development systems and may break your current setup.\nNote: Update all slave server, before you update master server.\n\n"; +echo "Please choose the update method. For production systems select 'stable'. \nWARNING: The update from GIT is only for development systems and may break your current setup. Do not use the GIT version on servers that host any live websites!\nNote: Update all slave server, before you update master server.\n\n"; -$method = simple_query('Select update method', array('stable', 'svn'), 'stable'); +$method = simple_query('Select update method', array('stable', 'git'), 'stable'); if($method == 'stable') { $new_version = @file_get_contents('http://www.ispconfig.org/downloads/ispconfig3_version.txt') or die('Unable to retrieve version file.'); -- GitLab From 71c5c2929078372d68b2d2dee65261a2bbbd3b25 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 1 Jul 2014 18:42:46 +0200 Subject: [PATCH 018/158] Fixed: reseller has_clients if limit_client is != 0, e.g. -1 or > 0. Thanks to Sergio for pointing out this issue. --- interface/lib/classes/auth.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php index 706dd0409..070662fda 100644 --- a/interface/lib/classes/auth.inc.php +++ b/interface/lib/classes/auth.inc.php @@ -50,7 +50,7 @@ class auth { $userid = $app->functions->intval($userid); $client = $app->db->queryOneRecord("SELECT client.limit_client FROM sys_user, client WHERE sys_user.userid = $userid AND sys_user.client_id = client.client_id"); - if($client['limit_client'] > 0) { + if($client['limit_client'] != 0) { return true; } else { return false; -- GitLab From 883f1fcb49818c49dcfbaaf9e7e18a5b74ab7965 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Tue, 8 Jul 2014 14:48:01 +0200 Subject: [PATCH 019/158] - Change from merge request #73 in master - keeping sql files in sync --- install/sql/ispconfig3.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index bf68e5d7c..e1bfa900d 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -897,8 +897,8 @@ CREATE TABLE `mail_user` ( `login` varchar(255) NOT NULL default '', `password` varchar(255) NOT NULL default '', `name` varchar(255) NOT NULL default '', - `uid` int(11) unsigned NOT NULL default '5000', - `gid` int(11) unsigned NOT NULL default '5000', + `uid` int(11) NOT NULL default '5000', + `gid` int(11) NOT NULL default '5000', `maildir` varchar(255) NOT NULL default '', `quota` bigint(20) NOT NULL default '-1', `cc` varchar(255) NOT NULL default '', -- GitLab From b04e827ae6c3c41de9ca7c16373e143f06797ce1 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 9 Jul 2014 12:50:10 +0200 Subject: [PATCH 020/158] - Cleaned up autoinstall code - Added autoinstall for centos, opensuse and gentoo - Added ini style config autoinstall option - Autoinstall sample configuration files are now in docs folder - Removed old autoupdate file --- .../autoinstall.conf_sample.php | 8 + .../autoinstall.ini.sample | 50 +++ install/autoupdate.php | 338 ------------------ install/dist/lib/fedora.lib.php | 9 +- install/dist/lib/gentoo.lib.php | 10 +- install/dist/lib/opensuse.lib.php | 10 +- install/install.php | 215 ++++------- install/lib/installer_base.lib.php | 44 ++- install/update.php | 99 ++--- 9 files changed, 242 insertions(+), 541 deletions(-) rename {install => docs/autoinstall samples}/autoinstall.conf_sample.php (85%) create mode 100644 docs/autoinstall samples/autoinstall.ini.sample delete mode 100644 install/autoupdate.php diff --git a/install/autoinstall.conf_sample.php b/docs/autoinstall samples/autoinstall.conf_sample.php similarity index 85% rename from install/autoinstall.conf_sample.php rename to docs/autoinstall samples/autoinstall.conf_sample.php index 92ec00896..ccd36aae6 100644 --- a/install/autoinstall.conf_sample.php +++ b/docs/autoinstall samples/autoinstall.conf_sample.php @@ -12,6 +12,14 @@ $autoinstall['http_server'] = 'nginx'; // apache (default), nginx $autoinstall['ispconfig_port'] = '8080'; // default: 8080 $autoinstall['ispconfig_use_ssl'] = 'y'; // y (default), n +/* SSL Settings */ +$autoinstall['ssl_cert_country'] = 'AU'; +$autoinstall['ssl_cert_state'] = 'Some-State'; +$autoinstall['ssl_cert_locality'] = 'Chicago'; +$autoinstall['ssl_cert_organisation'] = 'Internet Widgits Pty Ltd'; +$autoinstall['ssl_cert_organisation_unit'] = 'IT department'; +$autoinstall['ssl_cert_common_name'] = $autoinstall['hostname']; + /* optional expert mode settings, needed only for expert mode */ $autoinstall['mysql_ispconfig_user'] = 'ispconfig'; // default: ispconfig $autoinstall['mysql_ispconfig_password'] = md5(uniqid(rand())); diff --git a/docs/autoinstall samples/autoinstall.ini.sample b/docs/autoinstall samples/autoinstall.ini.sample new file mode 100644 index 000000000..1f4d9d7da --- /dev/null +++ b/docs/autoinstall samples/autoinstall.ini.sample @@ -0,0 +1,50 @@ +[install] +language=en +install_mode=standard +hostname=server1.example.com +mysql_hostname=localhost +mysql_root_user=root +mysql_root_password=ispconfig +mysql_database=dbispconfig +mysql_charset=utf8 +http_server=apache +ispconfig_port=8080 +ispconfig_use_ssl=y + +[ssl_cert] +ssl_cert_country=AU +ssl_cert_state=Some-State +ssl_cert_locality=Chicago +ssl_cert_organisation=Internet Widgits Pty Ltd +ssl_cert_organisation_unit=IT department +ssl_cert_common_name=server1.example.com + +[expert] +mysql_ispconfig_user=ispconfig +mysql_ispconfig_password=afStEratXBsgatRtsa42CadwhQ +join_multiserver_setup=n +mysql_master_hostname=master.example.com +mysql_master_root_user=root +mysql_master_root_password=ispconfig +mysql_master_database=dbispconfig +configure_mail=y +configure_jailkit=y +configure_ftp=y +configure_dns=y +configure_apache=y +configure_nginx=y +configure_firewall=y +install_ispconfig_web_interface=y + +[update] +do_backup=yes +mysql_root_password=ispconfig +mysql_master_hostname=master.example.com +mysql_master_root_user=root +mysql_master_root_password=ispconfig +mysql_master_database=dbispconfig +reconfigure_permissions_in_master_database=no +reconfigure_services=yes +ispconfig_port=8080 +create_new_ispconfig_ssl_cert=no +reconfigure_crontab=yes \ No newline at end of file diff --git a/install/autoupdate.php b/install/autoupdate.php deleted file mode 100644 index 8960e1358..000000000 --- a/install/autoupdate.php +++ /dev/null @@ -1,338 +0,0 @@ ->This script is for internal use only! Please use update.php! \n\n"; - exit; -} - -//** Include the library with the basic installer functions -require_once 'lib/install.lib.php'; - -//** Include the library with the basic updater functions -require_once 'lib/update.lib.php'; - -//** Include the base class of the installer class -require_once 'lib/installer_base.lib.php'; - -//** Ensure that current working directory is install directory -$cur_dir = getcwd(); -if(realpath(dirname(__FILE__)) != $cur_dir) die("Please run installation/update from _inside_ the install directory!\n"); - -//** Install logfile -define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log'); -define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../')); - -//** Get distribution identifier -$dist = get_distname(); - -include_once "/usr/local/ispconfig/server/lib/config.inc.php"; -$conf_old = $conf; -unset($conf); - -if($dist['id'] == '') die('Linux distribution or version not recognized.'); - -//** Include the distribution-specific installer class library and configuration -if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once 'dist/lib/'.$dist['baseid'].'.lib.php'; -include_once 'dist/lib/'.$dist['id'].'.lib.php'; -include_once 'dist/conf/'.$dist['id'].'.conf.php'; - -//** Get hostname -exec('hostname -f', $tmp_out); -$conf['hostname'] = $tmp_out[0]; -unset($tmp_out); - -//** Set the mysql login information -$conf["mysql"]["host"] = $conf_old["db_host"]; -$conf["mysql"]["database"] = $conf_old["db_database"]; -$conf['mysql']['charset'] = 'utf8'; -$conf["mysql"]["ispconfig_user"] = $conf_old["db_user"]; -$conf["mysql"]["ispconfig_password"] = $conf_old["db_password"]; -$conf['language'] = $conf_old['language']; -if($conf['language'] == '{language}') $conf['language'] = 'en'; - -if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"]; -if(isset($conf_old["dbmaster_database"])) $conf["mysql"]["master_database"] = $conf_old["dbmaster_database"]; -if(isset($conf_old["dbmaster_user"])) $conf["mysql"]["master_ispconfig_user"] = $conf_old["dbmaster_user"]; -if(isset($conf_old["dbmaster_password"])) $conf["mysql"]["master_ispconfig_password"] = $conf_old["dbmaster_password"]; - -//* Check if this is a master / slave setup -$conf['mysql']['master_slave_setup'] = 'n'; -if($conf["mysql"]["master_host"] != '' && $conf["mysql"]["host"] != $conf["mysql"]["master_host"]) { - $conf['mysql']['master_slave_setup'] = 'y'; -} - -// Resolve the IP address of the mysql hostname. -if(!$conf['mysql']['ip'] = gethostbyname($conf['mysql']['host'])) die('Unable to resolve hostname'.$conf['mysql']['host']); - -$conf['server_id'] = intval($conf_old["server_id"]); -$conf['ispconfig_log_priority'] = $conf_old["log_priority"]; - -$inst = new installer(); -$inst->is_update = true; - -//** Detect the installed applications -$inst->find_installed_apps(); - -//** Initialize the MySQL server connection -include_once 'lib/mysql.lib.php'; - -//** Database update is a bit brute force and should be rebuild later ;) - -/* - * Try to read the DB-admin settings - */ -$clientdb_host = ''; -$clientdb_user = ''; -$clientdb_password = ''; -include_once "/usr/local/ispconfig/server/lib/mysql_clientdb.conf"; -$conf["mysql"]["admin_user"] = $clientdb_user; -$conf["mysql"]["admin_password"] = $clientdb_password; -$clientdb_host = ''; -$clientdb_user = ''; -$clientdb_password = ''; - -//** There is a error if user for mysql admin_password if empty -if( empty($conf["mysql"]["admin_password"]) ) { - die("internal error - MYSQL-Root passord not known"); -} - -//** Test mysql root connection -if(!@mysql_connect($conf["mysql"]["host"], $conf["mysql"]["admin_user"], $conf["mysql"]["admin_password"])) { - die("internal error - MYSQL-Root passord wrong"); -} - -/* - * Check all tables -*/ -checkDbHealth(); - -/* - * Prepare the dump of the database -*/ -prepareDBDump(); - -//* initialize the database -$inst->db = new db(); - -/* - * The next line is a bit tricky! - * At the automated update we have no connection to the master-db (we don't need it, because - * there are only TWO points, where this is needed) - * 1) update the rights --> the autoupdater sets the rights of all clients when the server is - * autoupdated) - * 2) update the server-settings (is web installed, is mail installed) --> the autoupdates - * doesn't change any of this settings, so there ist no need to update this. - * This means, the autoupdater did not need any connection to the master-db (only to the local bd - * of the master-server). To avoid any problems, we set the master-db to the local one. - */ -$inst->dbmaster = $inst->db; - -/* - * If it is NOT a master-slave - Setup then we are at the Master-DB. So set all rights -*/ -if($conf['mysql']['master_slave_setup'] != 'y') { - $inst->grant_master_database_rights(true); -} - -/* - * dump the new Database and reconfigure the server.ini - */ -updateDbAndIni(); - -/* - * Reconfigure all Services - */ -if($conf['services']['mail'] == true) { - //** Configure postfix - swriteln('Configuring Postfix'); - $inst->configure_postfix('dont-create-certs'); - - //** Configure mailman - if($conf['mailman']['installed'] == true) { - swriteln('Configuring Mailman'); - $inst->configure_mailman('update'); - } - - //* Configure Jailkit - swriteln('Configuring Jailkit'); - $inst->configure_jailkit(); - - if($conf['dovecot']['installed'] == true) { - //* Configure dovecot - swriteln('Configuring Dovecot'); - $inst->configure_dovecot(); - } else { - //** Configure saslauthd - swriteln('Configuring SASL'); - $inst->configure_saslauthd(); - - //** Configure PAM - swriteln('Configuring PAM'); - $inst->configure_pam(); - - //* Configure courier - swriteln('Configuring Courier'); - $inst->configure_courier(); - } - - //** Configure Spamasassin - swriteln('Configuring Spamassassin'); - $inst->configure_spamassassin(); - - //** Configure Amavis - swriteln('Configuring Amavisd'); - $inst->configure_amavis(); - - //** Configure Getmail - swriteln('Configuring Getmail'); - $inst->configure_getmail(); -} - -if($conf['services']['web'] == true) { - //** Configure Pureftpd - swriteln('Configuring Pureftpd'); - $inst->configure_pureftpd(); -} - -if($conf['services']['dns'] == true) { - //* Configure DNS - if($conf['powerdns']['installed'] == true) { - swriteln('Configuring PowerDNS'); - $inst->configure_powerdns(); - } elseif($conf['bind']['installed'] == true) { - swriteln('Configuring BIND'); - $inst->configure_bind(); - } else { - swriteln('Configuring MyDNS'); - $inst->configure_mydns(); - } -} - -if($conf['services']['web']) { - if($conf['webserver']['server_type'] == 'apache'){ - //** Configure Apache - swriteln('Configuring Apache'); - $inst->configure_apache(); - - //** Configure vlogger - swriteln('Configuring vlogger'); - $inst->configure_vlogger(); - } else { - //** Configure nginx - swriteln('Configuring nginx'); - $inst->configure_nginx(); - } - - //** Configure apps vhost - swriteln('Configuring Apps vhost'); - $inst->configure_apps_vhost(); -} - - -//* Configure DBServer -swriteln('Configuring Database'); -$inst->configure_dbserver(); - - -//if(@is_dir('/etc/Bastille')) { -//* Configure Firewall -swriteln('Configuring Firewall'); -$inst->configure_firewall(); -//} - -//** Configure ISPConfig -swriteln('Updating ISPConfig'); - - -//** Customise the port ISPConfig runs on -$conf['apache']['vhost_port'] = get_ispconfig_port_number(); - -$inst->install_ispconfig(); - -//** Configure Crontab -swriteln('Updating Crontab'); -$inst->install_crontab(); - -//** Restart services: -swriteln('Restarting services ...'); -if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'reload')); -if($conf['services']['mail']) { - if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart')); - if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart')); - if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart')); - if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart')); - if($conf['courier']['installed'] == true){ - if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart')); - if($conf['courier']['courier-imap'] != '') system($inst->getinitcommand($conf['courier']['courier-imap'], 'restart')); - if($conf['courier']['courier-imap-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-imap-ssl'], 'restart')); - if($conf['courier']['courier-pop'] != '') system($inst->getinitcommand($conf['courier']['courier-pop'], 'restart')); - if($conf['courier']['courier-pop-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-pop-ssl'], 'restart')); - } - if($conf['dovecot']['installed'] == true && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart')); - if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system($inst->getinitcommand($conf['mailman']['init_script'], 'restart')); -} -if($conf['services']['web']) { - if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart')); - //* Reload is enough for nginx - if($conf['webserver']['server_type'] == 'nginx' && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload')); - if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart')); -} -if($conf['services']['dns']) { - if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null'); - if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null'); - if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null'); -} - -echo "Update finished.\n"; - -?> diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 87fadb028..d3efe6022 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -229,8 +229,13 @@ class installer_dist extends installer_base { if(!stristr($options, 'dont-create-certs')) { //* Create the SSL certificate - $command = 'cd '.$config_dir.'; ' - .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509'; + if(AUTOINSTALL){ + $command = 'cd '.$config_dir.'; ' + ."openssl req -new -subj '/C=".$autoinstall['ssl_cert_country']."/ST=".$autoinstall['ssl_cert_state']."/L=".$autoinstall['ssl_cert_locality']."/O=".$autoinstall['ssl_cert_organisation']."/OU=".$autoinstall['ssl_cert_organisation_unit']."/CN=".$autoinstall['ssl_cert_common_name']."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + } else { + $command = 'cd '.$config_dir.'; ' + ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + } exec($command); $command = 'chmod o= '.$config_dir.'/smtpd.key'; diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index b14cffe87..9a0d7c94a 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -119,9 +119,13 @@ class installer extends installer_base //* Create the SSL certificate if (!stristr($options, 'dont-create-certs')) { - $command = 'cd '.$config_dir.'; ' - .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509'; - exec($command); + if(AUTOINSTALL){ + $command = 'cd '.$config_dir.'; ' + ."openssl req -new -subj '/C=".$autoinstall['ssl_cert_country']."/ST=".$autoinstall['ssl_cert_state']."/L=".$autoinstall['ssl_cert_locality']."/O=".$autoinstall['ssl_cert_organisation']."/OU=".$autoinstall['ssl_cert_organisation_unit']."/CN=".$autoinstall['ssl_cert_common_name']."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + } else { + $command = 'cd '.$config_dir.'; ' + ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + } $command = 'chmod o= '.$config_dir.'/smtpd.key'; caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 7ff56de89..caef5409a 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -257,9 +257,13 @@ class installer_dist extends installer_base { if(!stristr($options, 'dont-create-certs')) { //* Create the SSL certificate - $command = 'cd '.$config_dir.'; ' - .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509'; - exec($command); + if(AUTOINSTALL){ + $command = 'cd '.$config_dir.'; ' + ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + } else { + $command = 'cd '.$config_dir.'; ' + .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; + } $command = 'chmod o= '.$config_dir.'/smtpd.key'; caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); diff --git a/install/install.php b/install/install.php index 838209ec1..108ed05b2 100644 --- a/install/install.php +++ b/install/install.php @@ -30,6 +30,30 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* ISPConfig 3 installer. + + ------------------------------------------------------------------------------------- + - Interactive install + ------------------------------------------------------------------------------------- + run: + + php install.php + + ------------------------------------------------------------------------------------- + - Noninteractive (autoinstall) mode + ------------------------------------------------------------------------------------- + + The autoinstall mode can read the installer questions from a .ini style file or from + a php config file. Examples for both file types are in the docs folder. + See autoinstall.ini.sample and autoinstall.conf_sample.php. + + run: + + php install.php --autoinstall=autoinstall.ini + + or + + php install.php --autoinstall=autoinstall.conf.php + */ error_reporting(E_ALL|E_STRICT); @@ -80,7 +104,27 @@ if($dist['id'] == '') die('Linux distribution or version not recognized.'); //** Include the autoinstaller configuration (for non-interactive setups) error_reporting(E_ALL ^ E_NOTICE); -if(is_file('autoinstall.conf.php')) include_once 'autoinstall.conf.php'; + +//** Get commandline options +$cmd_opt = getopt('', array('autoinstall::')); + +//** Load autoinstall file +if(isset($cmd_opt['autoinstall']) && is_file($cmd_opt['autoinstall'])) { + $path_parts = pathinfo($cmd_opt['autoinstall']); + if($path_parts['extension'] == 'php') { + include_once $cmd_opt['autoinstall']; + } elseif($path_parts['extension'] == 'ini') { + $tmp = ini_to_array(file_get_contents('autoinstall.ini')); + $autoinstall = $tmp['install'] + $tmp['ssl_cert'] + $tmp['expert'] + $tmp['update']; + unset($tmp); + } + unset($path_parts); + define('AUTOINSTALL', true); +} else { + $autoinstall = array(); + define('AUTOINSTALL', false); +} + //** Include the distribution-specific installer class library and configuration if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once 'dist/lib/'.$dist['baseid'].'.lib.php'; @@ -113,12 +157,7 @@ if(is_dir('/usr/local/ispconfig')) { $inst->find_installed_apps(); //** Select the language and set default timezone -if($autoinstall['language'] == 'default') $autoinstall['language'] = 'en'; -if($autoinstall['language'] == 'en' || $autoinstall['language'] == 'de'){ - $conf['language'] = $autoinstall['language']; -} else { - $conf['language'] = $inst->simple_query('Select language', array('en', 'de'), 'en'); -} +$conf['language'] = $inst->simple_query('Select language', array('en', 'de'), 'en','language'); $conf['timezone'] = get_system_timezone(); //* Set default theme @@ -126,19 +165,13 @@ $conf['theme'] = 'default'; $conf['language_file_import_enabled'] = true; //** Select installation mode -if($autoinstall['install_mode'] == 'default') $autoinstall['install_mode'] = 'standard'; -if($autoinstall['install_mode'] == 'standard' || $autoinstall['install_mode'] == 'expert'){ - $install_mode = $autoinstall['install_mode']; -} else { - $install_mode = $inst->simple_query('Installation mode', array('standard', 'expert'), 'standard'); -} +$install_mode = $inst->simple_query('Installation mode', array('standard', 'expert'), 'standard','install_mode'); //** Get the hostname $tmp_out = array(); exec('hostname -f', $tmp_out); -if($autoinstall['hostname'] == 'default') $autoinstall['hostname'] = @$tmp_out[0]; -$conf['hostname'] = ($autoinstall['hostname'] != '' ? $autoinstall['hostname'] : $inst->free_query('Full qualified hostname (FQDN) of the server, eg server1.domain.tld ', @$tmp_out[0])); +$conf['hostname'] = $inst->free_query('Full qualified hostname (FQDN) of the server, eg server1.domain.tld ', @$tmp_out[0],'hostname'); unset($tmp_out); // Check if the mysql functions are loaded in PHP @@ -147,24 +180,17 @@ if(!function_exists('mysql_connect')) die('No PHP MySQL functions available. Ple //** Get MySQL root credentials $finished = false; do { - if($autoinstall['mysql_hostname'] == 'default') $autoinstall['mysql_hostname'] = $conf['mysql']['host']; - if($autoinstall['mysql_root_user'] == 'default') $autoinstall['mysql_root_user'] = $conf['mysql']['admin_user']; - if($autoinstall['mysql_database'] == 'default') $autoinstall['mysql_database'] = $conf['mysql']['database']; - if($autoinstall['mysql_charset'] == 'default') $autoinstall['mysql_charset'] = $conf['mysql']['charset']; + $tmp_mysql_server_host = $inst->free_query('MySQL server hostname', $conf['mysql']['host'],'mysql_hostname'); + $tmp_mysql_server_admin_user = $inst->free_query('MySQL root username', $conf['mysql']['admin_user'],'mysql_root_user'); + $tmp_mysql_server_admin_password = $inst->free_query('MySQL root password', $conf['mysql']['admin_password'],'mysql_root_password'); + $tmp_mysql_server_database = $inst->free_query('MySQL database to create', $conf['mysql']['database'],'mysql_database'); + $tmp_mysql_server_charset = $inst->free_query('MySQL charset', $conf['mysql']['charset'],'mysql_charset'); - $tmp_mysql_server_host = ($autoinstall['mysql_hostname'] != ''? $autoinstall['mysql_hostname'] : $inst->free_query('MySQL server hostname', $conf['mysql']['host'])); - $tmp_mysql_server_admin_user = ($autoinstall['mysql_root_user'] != ''? $autoinstall['mysql_root_user'] : $inst->free_query('MySQL root username', $conf['mysql']['admin_user'])); - $tmp_mysql_server_admin_password = (isset($autoinstall['mysql_root_password'])? $autoinstall['mysql_root_password'] : $inst->free_query('MySQL root password', $conf['mysql']['admin_password'])); - $tmp_mysql_server_database = ($autoinstall['mysql_database'] != ''? $autoinstall['mysql_database'] : $inst->free_query('MySQL database to create', $conf['mysql']['database'])); - $tmp_mysql_server_charset = ($autoinstall['mysql_charset'] != ''? $autoinstall['mysql_charset'] : $inst->free_query('MySQL charset', $conf['mysql']['charset'])); - if($install_mode == 'expert') { swriteln("The next two questions are about the internal ISPConfig database user and password.\nIt is recommended to accept the defaults which are 'ispconfig' as username and a random password.\nIf you use a different password, use only numbers and chars for the password.\n"); - if($autoinstall['mysql_ispconfig_user'] == 'default') $autoinstall['mysql_ispconfig_user'] = $conf['mysql']['ispconfig_user']; - - $conf['mysql']['ispconfig_user'] = ($autoinstall['mysql_ispconfig_user'] != ''? $autoinstall['mysql_ispconfig_user'] : $inst->free_query('ISPConfig mysql database username', $conf['mysql']['ispconfig_user'])); - $conf['mysql']['ispconfig_password'] = (isset($autoinstall['mysql_ispconfig_password'])? $autoinstall['mysql_ispconfig_password'] : $inst->free_query('ISPConfig mysql database password', $conf['mysql']['ispconfig_password'])); + $conf['mysql']['ispconfig_user'] = $inst->free_query('ISPConfig mysql database username', $conf['mysql']['ispconfig_user'],'mysql_ispconfig_user'); + $conf['mysql']['ispconfig_password'] = $inst->free_query('ISPConfig mysql database password', $conf['mysql']['ispconfig_password'],'mysql_ispconfig_password'); } //* Initialize the MySQL server connection @@ -199,12 +225,7 @@ if($install_mode == 'standard') { //* Configure Webserver - Apache or nginx if($conf['apache']['installed'] == true && $conf['nginx']['installed'] == true) { - if($autoinstall['http_server'] == 'default') $autoinstall['http_server'] = 'apache'; - if($autoinstall['http_server'] == 'apache' || $autoinstall['http_server'] == 'nginx'){ - $http_server_to_use = $autoinstall['http_server']; - } else { - $http_server_to_use = $inst->simple_query('Apache and nginx detected. Select server to use for ISPConfig:', array('apache', 'nginx'), 'apache'); - } + $http_server_to_use = $inst->simple_query('Apache and nginx detected. Select server to use for ISPConfig:', array('apache', 'nginx'), 'apache','http_server'); if($http_server_to_use == 'apache'){ $conf['nginx']['installed'] = false; } else { @@ -321,19 +342,13 @@ if($install_mode == 'standard') { swriteln('Installing ISPConfig'); //** Customize the port ISPConfig runs on - if($autoinstall['isspconfig_port'] == 'default') $autoinstall['ispconfig_port'] = '8080'; - $ispconfig_vhost_port = (intval($autoinstall['ispconfig_port']) > 0 ? intval($autoinstall['ispconfig_port']) : $inst->free_query('ISPConfig Port', '8080')); + $ispconfig_vhost_port = $inst->free_query('ISPConfig Port', '8080','ispconfig_port'); if($conf['apache']['installed'] == true) $conf['apache']['vhost_port'] = $ispconfig_vhost_port; if($conf['nginx']['installed'] == true) $conf['nginx']['vhost_port'] = $ispconfig_vhost_port; unset($ispconfig_vhost_port); - if($autoinstall['ispconfig_use_ssl'] == 'default') $autoinstall['ispconfig_use_ssl'] = 'y'; - if($autoinstall['ispconfig_use_ssl'] == 'y' || $autoinstall['ispconfig_use_ssl'] == 'n'){ - if($autoinstall['ispconfig_use_ssl'] == 'y') $inst->make_ispconfig_ssl_cert(); - } else { - if(strtolower($inst->simple_query('Do you want a secure (SSL) connection to the ISPConfig web interface', array('y', 'n'), 'y')) == 'y') { - $inst->make_ispconfig_ssl_cert(); - } + if(strtolower($inst->simple_query('Do you want a secure (SSL) connection to the ISPConfig web interface', array('y', 'n'), 'y','ispconfig_use_ssl')) == 'y') { + $inst->make_ispconfig_ssl_cert(); } $inst->install_ispconfig(); @@ -388,26 +403,16 @@ if($install_mode == 'standard') { //** Get Server ID // $conf['server_id'] = $inst->free_query('Unique Numeric ID of the server','1'); // Server ID is an autoInc value of the mysql database now - $tmp_join_multiserver_setup = 'n'; - if($autoinstall['join_multiserver_setup'] == 'default') $autoinstall['join_multiserver_setup'] = 'n'; - if($autoinstall['join_multiserver_setup'] == 'y' || $autoinstall['join_multiserver_setup'] == 'n'){ - $tmp_join_multiserver_setup = $autoinstall['join_multiserver_setup']; - } else { - $tmp_join_multiserver_setup = strtolower($inst->simple_query('Shall this server join an existing ISPConfig multiserver setup', array('y', 'n'), 'n')); - } - - if($tmp_join_multiserver_setup == 'y') { + if(strtolower($inst->simple_query('Shall this server join an existing ISPConfig multiserver setup', array('y', 'n'), 'n','join_multiserver_setup')) == 'y') { $conf['mysql']['master_slave_setup'] = 'y'; //** Get MySQL root credentials $finished = false; do { - if($autoinstall['mysql_master_database'] == 'default') $autoinstall['mysql_master_database'] = $conf['mysql']['master_database']; - - $tmp_mysql_server_host = ($autoinstall['mysql_master_hostname'] != ''? $autoinstall['mysql_master_hostname'] : $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host'])); - $tmp_mysql_server_admin_user = ($autoinstall['mysql_master_root_user'] != ''? $autoinstall['mysql_master_root_user'] : $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user'])); - $tmp_mysql_server_admin_password = (isset($autoinstall['mysql_master_root_password'])? $autoinstall['mysql_master_root_password'] : $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password'])); - $tmp_mysql_server_database = ($autoinstall['mysql_master_database'] != ''? $autoinstall['mysql_master_database'] : $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'])); + $tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host'],'mysql_master_hostname'); + $tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user'],'mysql_master_root_user'); + $tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password'],'mysql_master_root_password'); + $tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'],'mysql_master_database'); //* Initialize the MySQL server connection if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) { @@ -440,12 +445,7 @@ if($install_mode == 'standard') { //* Configure Webserver - Apache or nginx if($conf['apache']['installed'] == true && $conf['nginx']['installed'] == true) { - if($autoinstall['http_server'] == 'default') $autoinstall['http_server'] = 'apache'; - if($autoinstall['http_server'] == 'apache' || $autoinstall['http_server'] == 'nginx'){ - $http_server_to_use = $autoinstall['http_server']; - } else { - $http_server_to_use = $inst->simple_query('Apache and nginx detected. Select server to use for ISPConfig:', array('apache', 'nginx'), 'apache'); - } + $http_server_to_use = $inst->simple_query('Apache and nginx detected. Select server to use for ISPConfig:', array('apache', 'nginx'), 'apache','http_server'); if($http_server_to_use == 'apache'){ $conf['nginx']['installed'] = false; } else { @@ -458,15 +458,7 @@ if($install_mode == 'standard') { swriteln(''); $inst->add_database_server_record(); - $tmp_configure_mail = 'y'; - if($autoinstall['configure_mail'] == 'default') $autoinstall['configure_mail'] = 'y'; - if($autoinstall['configure_mail'] == 'y' || $autoinstall['configure_mail'] == 'n'){ - $tmp_configure_mail = $autoinstall['configure_mail']; - } else { - $tmp_configure_mail = strtolower($inst->simple_query('Configure Mail', array('y', 'n') , 'y')); - } - - if($tmp_configure_mail == 'y') { + if(strtolower($inst->simple_query('Configure Mail', array('y', 'n') , 'y','configure_mail') ) == 'y') { $conf['services']['mail'] = true; @@ -525,41 +517,20 @@ if($install_mode == 'standard') { } //** Configure Jailkit - $tmp_configure_jailkit = 'y'; - if($autoinstall['configure_jailkit'] == 'default') $autoinstall['configure_jailkit'] = 'y'; - if($autoinstall['configure_jailkit'] == 'y' || $autoinstall['configure_jailkit'] == 'n'){ - $tmp_configure_jailkit = $autoinstall['configure_jailkit']; - } else { - $tmp_configure_jailkit = strtolower($inst->simple_query('Configure Jailkit', array('y', 'n'), 'y')); - } - if($tmp_configure_jailkit == 'y') { + if(strtolower($inst->simple_query('Configure Jailkit', array('y', 'n'), 'y','configure_jailkit') ) == 'y') { swriteln('Configuring Jailkit'); $inst->configure_jailkit(); } //** Configure Pureftpd - $tmp_configure_ftp = 'y'; - if($autoinstall['configure_ftp'] == 'default') $autoinstall['configure_ftp'] = 'y'; - if($autoinstall['configure_ftp'] == 'y' || $autoinstall['configure_ftp'] == 'n'){ - $tmp_configure_ftp = $autoinstall['configure_ftp']; - } else { - $tmp_configure_ftp = strtolower($inst->simple_query('Configure FTP Server', array('y', 'n'), 'y')); - } - if($tmp_configure_ftp == 'y') { + if(strtolower($inst->simple_query('Configure FTP Server', array('y', 'n'), 'y','configure_ftp') ) == 'y') { swriteln('Configuring Pureftpd'); $inst->configure_pureftpd(); if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart')); } //** Configure DNS - $tmp_configure_dns = 'y'; - if($autoinstall['configure_dns'] == 'default') $autoinstall['configure_dns'] = 'y'; - if($autoinstall['configure_dns'] == 'y' || $autoinstall['configure_dns'] == 'n'){ - $tmp_configure_dns = $autoinstall['configure_dns']; - } else { - $tmp_configure_dns = strtolower($inst->simple_query('Configure DNS Server', array('y', 'n'), 'y')); - } - if($tmp_configure_dns == 'y') { + if(strtolower($inst->simple_query('Configure DNS Server', array('y', 'n'), 'y','configure_dns')) == 'y') { $conf['services']['dns'] = true; //* Configure DNS if($conf['powerdns']['installed'] == true) { @@ -598,14 +569,7 @@ if($install_mode == 'standard') { //** Configure Apache if($conf['apache']['installed'] == true){ swriteln("\nHint: If this server shall run the ISPConfig interface, select 'y' in the 'Configure Apache Server' option.\n"); - $tmp_configure_apache = 'y'; - if($autoinstall['configure_apache'] == 'default') $autoinstall['configure_apache'] = 'y'; - if($autoinstall['configure_apache'] == 'y' || $autoinstall['configure_apache'] == 'n'){ - $tmp_configure_apache = $autoinstall['configure_apache']; - } else { - $tmp_configure_apache = strtolower($inst->simple_query('Configure Apache Server', array('y', 'n'), 'y')); - } - if($tmp_configure_apache == 'y') { + if(strtolower($inst->simple_query('Configure Apache Server', array('y', 'n'), 'y','configure_apache')) == 'y') { $conf['services']['web'] = true; swriteln('Configuring Apache'); $inst->configure_apache(); @@ -623,14 +587,7 @@ if($install_mode == 'standard') { //** Configure nginx if($conf['nginx']['installed'] == true){ swriteln("\nHint: If this server shall run the ISPConfig interface, select 'y' in the 'Configure nginx Server' option.\n"); - $tmp_configure_nginx = 'y'; - if($autoinstall['configure_nginx'] == 'default') $autoinstall['configure_nginx'] = 'y'; - if($autoinstall['configure_nginx'] == 'y' || $autoinstall['configure_nginx'] == 'n'){ - $tmp_configure_nginx = $autoinstall['configure_nginx']; - } else { - $tmp_configure_nginx = strtolower($inst->simple_query('Configure nginx Server', array('y', 'n'), 'y')); - } - if($tmp_configure_nginx == 'y') { + if(strtolower($inst->simple_query('Configure nginx Server', array('y', 'n'), 'y','configure_nginx')) == 'y') { $conf['services']['web'] = true; swriteln('Configuring nginx'); $inst->configure_nginx(); @@ -646,14 +603,7 @@ if($install_mode == 'standard') { } //** Configure Firewall - $tmp_configure_firewall = 'y'; - if($autoinstall['configure_firewall'] == 'default') $autoinstall['configure_firewall'] = 'y'; - if($autoinstall['configure_firewall'] == 'y' || $autoinstall['configure_firewall'] == 'n'){ - $tmp_configure_firewall = $autoinstall['configure_firewall']; - } else { - $tmp_configure_firewall = strtolower($inst->simple_query('Configure Firewall Server', array('y', 'n'), 'y')); - } - if($tmp_configure_firewall == 'y') { + if(strtolower($inst->simple_query('Configure Firewall Server', array('y', 'n'), 'y','configure_firewall')) == 'y') { //if($conf['bastille']['installed'] == true) { //* Configure Bastille Firewall $conf['services']['firewall'] = true; @@ -676,14 +626,7 @@ if($install_mode == 'standard') { //** Configure ISPConfig :-) $install_ispconfig_interface_default = ($conf['mysql']['master_slave_setup'] == 'y')?'n':'y'; - $tmp_install_ispconfig_web_interface = $install_ispconfig_interface_default; - if($autoinstall['install_ispconfig_web_interface'] == 'default') $autoinstall['install_ispconfig_web_interface'] = $install_ispconfig_interface_default; - if($autoinstall['install_ispconfig_web_interface'] == 'y' || $autoinstall['install_ispconfig_web_interface'] == 'n'){ - $tmp_install_ispconfig_web_interface = $autoinstall['install_ispconfig_web_interface']; - } else { - $tmp_install_ispconfig_web_interface = strtolower($inst->simple_query('Install ISPConfig Web Interface', array('y', 'n'), $install_ispconfig_interface_default)); - } - if($tmp_install_ispconfig_web_interface == 'y') { + if(strtolower($inst->simple_query('Install ISPConfig Web Interface', array('y', 'n'), $install_ispconfig_interface_default,'install_ispconfig_web_interface')) == 'y') { swriteln('Installing ISPConfig'); //** We want to check if the server is a module or cgi based php enabled server @@ -701,19 +644,13 @@ if($install_mode == 'standard') { */ //** Customise the port ISPConfig runs on - if($autoinstall['ispconfig_port'] == 'default') $autoinstall['ispconfig_port'] = '8080'; - $ispconfig_vhost_port = (intval($autoinstall['ispconfig_port']) > 0 ? intval($autoinstall['ispconfig_port']) : $inst->free_query('ISPConfig Port', '8080')); + $ispconfig_vhost_port = $inst->free_query('ISPConfig Port', '8080','ispconfig_port'); if($conf['apache']['installed'] == true) $conf['apache']['vhost_port'] = $ispconfig_vhost_port; if($conf['nginx']['installed'] == true) $conf['nginx']['vhost_port'] = $ispconfig_vhost_port; unset($ispconfig_vhost_port); - if($autoinstall['ispconfig_use_ssl'] == 'default') $autoinstall['ispconfig_use_ssl'] = 'y'; - if($autoinstall['ispconfig_use_ssl'] == 'y' || $autoinstall['ispconfig_use_ssl'] == 'n'){ - if($autoinstall['ispconfig_use_ssl'] == 'y') $inst->make_ispconfig_ssl_cert(); - } else { - if(strtolower($inst->simple_query('Enable SSL for the ISPConfig web interface', array('y', 'n'), 'y')) == 'y') { - $inst->make_ispconfig_ssl_cert(); - } + if(strtolower($inst->simple_query('Enable SSL for the ISPConfig web interface', array('y', 'n'), 'y','ispconfig_use_ssl')) == 'y') { + $inst->make_ispconfig_ssl_cert(); } $inst->install_ispconfig_interface = true; diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 2fc9e0b87..2cd48a079 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -56,12 +56,21 @@ class installer_base { echo 'WARNING: '.$msg."\n"; } - public function simple_query($query, $answers, $default) { + public function simple_query($query, $answers, $default, $name = '') { + global $autoinstall; $finished = false; do { - $answers_str = implode(',', $answers); - swrite($this->lng($query).' ('.$answers_str.') ['.$default.']: '); - $input = sread(); + if($name != '' && $autoinstall[$name] != '') { + if($autoinstall[$name] == 'default') { + $input = $default; + } else { + $input = $autoinstall[$name]; + } + } else { + $answers_str = implode(',', $answers); + swrite($this->lng($query).' ('.$answers_str.') ['.$default.']: '); + $input = sread(); + } //* Stop the installation if($input == 'quit') { @@ -86,9 +95,18 @@ class installer_base { return $answer; } - public function free_query($query, $default) { - swrite($this->lng($query).' ['.$default.']: '); - $input = sread(); + public function free_query($query, $default, $name = '') { + global $autoinstall; + if($name != '' && $autoinstall[$name] != '') { + if($autoinstall[$name] == 'default') { + $input = $default; + } else { + $input = $autoinstall[$name]; + } + } else { + swrite($this->lng($query).' ['.$default.']: '); + $input = sread(); + } //* Stop the installation if($input == 'quit') { @@ -638,7 +656,7 @@ class installer_base { } public function configure_postfix($options = '') { - global $conf; + global $conf,$autoinstall; $cf = $conf['postfix']; $config_dir = $cf['config_dir']; @@ -750,9 +768,9 @@ class installer_base { if(!stristr($options, 'dont-create-certs')) { //* Create the SSL certificate - if(is_file('autoinstall.conf.php')){ + if(AUTOINSTALL){ $command = 'cd '.$config_dir.'; ' - .'openssl req -new -subj \'/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd\' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; + ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; } else { $command = 'cd '.$config_dir.'; ' .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; @@ -1676,7 +1694,7 @@ class installer_base { } public function make_ispconfig_ssl_cert() { - global $conf; + global $conf,$autoinstall; $install_dir = $conf['ispconfig_install_dir']; @@ -1688,8 +1706,8 @@ class installer_base { $ssl_pw = substr(md5(mt_rand()), 0, 6); exec("openssl genrsa -des3 -passout pass:$ssl_pw -out $ssl_key_file 4096"); - if(is_file('autoinstall.conf.php')){ - exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -subj '/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd' -key $ssl_key_file -out $ssl_csr_file"); + if(AUTOINSTALL){ + exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -key $ssl_key_file -out $ssl_csr_file"); } else { exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -out $ssl_csr_file"); } diff --git a/install/update.php b/install/update.php index 1862ef218..36eb20181 100644 --- a/install/update.php +++ b/install/update.php @@ -30,6 +30,30 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* ISPConfig 3 updater. + + ------------------------------------------------------------------------------------- + - Interactive update + ------------------------------------------------------------------------------------- + run: + + php update.php + + ------------------------------------------------------------------------------------- + - Noninteractive (autoupdate) mode + ------------------------------------------------------------------------------------- + + The autoupdate mode can read the updater questions from a .ini style file or from + a php config file. Examples for both file types are in the docs folder. + See autoinstall.ini.sample and autoinstall.conf_sample.php. + + run: + + php update.php --autoinstall=autoinstall.ini + + or + + php update.php --autoinstall=autoinstall.conf.php + */ error_reporting(E_ALL|E_STRICT); @@ -85,7 +109,26 @@ if($dist['id'] == '') die('Linux distribution or version not recognized.'); //** Include the autoinstaller configuration (for non-interactive setups) error_reporting(E_ALL ^ E_NOTICE); -if(is_file('autoinstall.conf.php')) include_once 'autoinstall.conf.php'; + +//** Get commandline options +$cmd_opt = getopt('', array('autoinstall::')); + +//** Load autoinstall file +if(isset($cmd_opt['autoinstall']) && is_file($cmd_opt['autoinstall'])) { + $path_parts = pathinfo($cmd_opt['autoinstall']); + if($path_parts['extension'] == 'php') { + include_once $cmd_opt['autoinstall']; + } elseif($path_parts['extension'] == 'ini') { + $tmp = ini_to_array(file_get_contents('autoinstall.ini')); + $autoinstall = $tmp['install'] + $tmp['ssl_cert'] + $tmp['expert'] + $tmp['update']; + unset($tmp); + } + unset($path_parts); + define('AUTOINSTALL', true); +} else { + $autoinstall = array(); + define('AUTOINSTALL', false); +} //** Include the distribution-specific installer class library and configuration if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once 'dist/lib/'.$dist['baseid'].'.lib.php'; @@ -135,12 +178,7 @@ $inst->find_installed_apps(); echo "This application will update ISPConfig 3 on your server.\n\n"; //* Make a backup before we start the update -if($autoupdate['do_backup'] == 'default') $autoupdate['do_backup'] = 'yes'; -if($autoupdate['do_backup'] == 'yes' || $autoupdate['do_backup'] == 'no'){ - $do_backup = $autoupdate['do_backup']; -} else { - $do_backup = $inst->simple_query('Shall the script create a ISPConfig backup in /var/backup/ now?', array('yes', 'no'), 'yes'); -} +$do_backup = $inst->simple_query('Shall the script create a ISPConfig backup in /var/backup/ now?', array('yes', 'no'), 'yes','do_backup'); if($do_backup == 'yes') { @@ -190,7 +228,7 @@ do { $finished = true; } else { swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error()); - $conf["mysql"]["admin_password"] = (isset($autoupdate['mysql_root_password'])? $autoupdate['mysql_root_password'] : $inst->free_query('MySQL root password', $conf['mysql']['admin_password'])); + $conf["mysql"]["admin_password"] = $inst->free_query('MySQL root password', $conf['mysql']['admin_password'],'mysql_root_password'); } } while ($finished == false); unset($finished); @@ -208,12 +246,10 @@ if($conf['mysql']['master_slave_setup'] == 'y') { //** Get MySQL root credentials $finished = false; do { - if($autoupdate['mysql_master_database'] == 'default') $autoupdate['mysql_master_database'] = $conf['mysql']['master_database']; - - $tmp_mysql_server_host = ($autoupdate['mysql_master_hostname'] != ''? $autoupdate['mysql_master_hostname'] : $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host'])); - $tmp_mysql_server_admin_user = ($autoupdate['mysql_master_root_user'] != ''? $autoupdate['mysql_master_root_user'] : $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user'])); - $tmp_mysql_server_admin_password = (isset($autoupdate['mysql_master_root_password'])? $autoupdate['mysql_master_root_password'] : $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password'])); - $tmp_mysql_server_database = ($autoupdate['mysql_master_database'] != ''? $autoupdate['mysql_master_database'] : $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'])); + $tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host'],'mysql_master_hostname'); + $tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user'],'mysql_master_root_user'); + $tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password'],'mysql_master_root_password'); + $tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'],'mysql_master_database'); //* Initialize the MySQL server connection if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) { @@ -256,12 +292,7 @@ updateDbAndIni(); */ //if($conf_old['dbmaster_user'] != '' or $conf_old['dbmaster_host'] != '') { //** Update master database rights -if($autoupdate['reconfigure_permissions_in_master_database'] == 'default') $autoupdate['reconfigure_permissions_in_master_database'] = 'no'; -if($autoupdate['reconfigure_permissions_in_master_database'] == 'no' || $autoupdate['reconfigure_permissions_in_master_database'] == 'yes'){ - $reconfigure_master_database_rights_answer = $autoupdate['reconfigure_permissions_in_master_database']; -} else { - $reconfigure_master_database_rights_answer = $inst->simple_query('Reconfigure Permissions in master database?', array('yes', 'no'), 'no'); -} +$reconfigure_master_database_rights_answer = $inst->simple_query('Reconfigure Permissions in master database?', array('yes', 'no'), 'no','reconfigure_permissions_in_master_database'); if($reconfigure_master_database_rights_answer == 'yes') { $inst->grant_master_database_rights(); @@ -269,12 +300,7 @@ if($reconfigure_master_database_rights_answer == 'yes') { //} //** Shall the services be reconfigured during update -if($autoupdate['reconfigure_services'] == 'default') $autoupdate['reconfigure_services'] = 'yes'; -if($autoupdate['reconfigure_services'] == 'yes' || $autoupdate['reconfigure_services'] == 'no'){ - $reconfigure_services_answer = $autoupdate['reconfigure_services']; -} else { - $reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no'), 'yes'); -} +$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no'), 'yes','reconfigure_services'); if($reconfigure_services_answer == 'yes') { @@ -403,21 +429,14 @@ if ($conf['services']['web'] && $inst->install_ispconfig_interface) { $ispconfig_port_number = get_ispconfig_port_number(); if($autoupdate['ispconfig_port'] == 'default') $autoupdate['ispconfig_port'] = $ispconfig_port_number; if($conf['webserver']['server_type'] == 'nginx'){ - $conf['nginx']['vhost_port'] = (intval($autoupdate['ispconfig_port']) > 0 ? intval($autoupdate['ispconfig_port']) : $inst->free_query('ISPConfig Port', $ispconfig_port_number)); + $conf['nginx']['vhost_port'] = $inst->free_query('ISPConfig Port', $ispconfig_port_number,'ispconfig_port'); } else { - $conf['apache']['vhost_port'] = (intval($autoupdate['ispconfig_port']) > 0 ? intval($autoupdate['ispconfig_port']) : $inst->free_query('ISPConfig Port', $ispconfig_port_number)); + $conf['apache']['vhost_port'] = $inst->free_query('ISPConfig Port', $ispconfig_port_number,'ispconfig_port'); } // $ispconfig_ssl_default = (is_ispconfig_ssl_enabled() == true)?'y':'n'; - $tmp_create_new_ispconfig_ssl_cert = 'no'; - if($autoupdate['create_new_ispconfig_ssl_cert'] == 'default') $autoupdate['create_new_ispconfig_ssl_cert'] = 'no'; - if($autoupdate['create_new_ispconfig_ssl_cert'] == 'no' || $autoupdate['create_new_ispconfig_ssl_cert'] == 'yes'){ - $tmp_create_new_ispconfig_ssl_cert = $autoupdate['create_new_ispconfig_ssl_cert']; - } else { - $tmp_create_new_ispconfig_ssl_cert = strtolower($inst->simple_query('Create new ISPConfig SSL certificate', array('yes', 'no'), 'no')); - } - if($tmp_create_new_ispconfig_ssl_cert == 'yes') { + if(strtolower($inst->simple_query('Create new ISPConfig SSL certificate', array('yes', 'no'), 'no','create_new_ispconfig_ssl_cert')) == 'yes') { $inst->make_ispconfig_ssl_cert(); } } @@ -425,13 +444,7 @@ if ($conf['services']['web'] && $inst->install_ispconfig_interface) { $inst->install_ispconfig(); //** Configure Crontab -if($autoupdate['reconfigure_crontab'] == 'default') $autoupdate['reconfigure_crontab'] = 'yes'; -if($autoupdate['reconfigure_crontab'] == 'no' || $autoupdate['reconfigure_crontab'] == 'yes'){ - $update_crontab_answer = $autoupdate['reconfigure_crontab']; -} else { - $update_crontab_answer = $inst->simple_query('Reconfigure Crontab?', array('yes', 'no'), 'yes'); -} - +$update_crontab_answer = $inst->simple_query('Reconfigure Crontab?', array('yes', 'no'), 'yes','reconfigure_crontab'); if($update_crontab_answer == 'yes') { swriteln('Updating Crontab'); $inst->install_crontab(); -- GitLab From 524b0e69a7d1275022967fedee3022fc100fc600 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 9 Jul 2014 13:05:06 +0200 Subject: [PATCH 021/158] Renamed autoinstall_samples folder. --- .../autoinstall.conf_sample.php | 0 .../autoinstall.ini.sample | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename docs/{autoinstall samples => autoinstall_samples}/autoinstall.conf_sample.php (100%) rename docs/{autoinstall samples => autoinstall_samples}/autoinstall.ini.sample (100%) diff --git a/docs/autoinstall samples/autoinstall.conf_sample.php b/docs/autoinstall_samples/autoinstall.conf_sample.php similarity index 100% rename from docs/autoinstall samples/autoinstall.conf_sample.php rename to docs/autoinstall_samples/autoinstall.conf_sample.php diff --git a/docs/autoinstall samples/autoinstall.ini.sample b/docs/autoinstall_samples/autoinstall.ini.sample similarity index 100% rename from docs/autoinstall samples/autoinstall.ini.sample rename to docs/autoinstall_samples/autoinstall.ini.sample -- GitLab From 35846d387500082d24ae6218df1481856ac464e8 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 9 Jul 2014 13:10:28 +0200 Subject: [PATCH 022/158] Fixed issue in gentoo autoinstall. --- install/dist/lib/gentoo.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 9a0d7c94a..4200a0139 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -121,10 +121,10 @@ class installer extends installer_base { if(AUTOINSTALL){ $command = 'cd '.$config_dir.'; ' - ."openssl req -new -subj '/C=".$autoinstall['ssl_cert_country']."/ST=".$autoinstall['ssl_cert_state']."/L=".$autoinstall['ssl_cert_locality']."/O=".$autoinstall['ssl_cert_organisation']."/OU=".$autoinstall['ssl_cert_organisation_unit']."/CN=".$autoinstall['ssl_cert_common_name']."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; } else { $command = 'cd '.$config_dir.'; ' - ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; } $command = 'chmod o= '.$config_dir.'/smtpd.key'; -- GitLab From 2150f0df966a438410603cacd2e4bdd3bf46909c Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Fri, 11 Jul 2014 14:34:29 +0200 Subject: [PATCH 023/158] - Raised pm.max_children to 500 for apps vhost and ispconfig vhost. --- install/tpl/apps_php_fpm_pool.conf.master | 2 +- install/tpl/php_fpm_pool.conf.master | 2 +- server/conf/apps_php_fpm_pool.conf.master | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/install/tpl/apps_php_fpm_pool.conf.master b/install/tpl/apps_php_fpm_pool.conf.master index ce6a92fcf..7997e9bb6 100644 --- a/install/tpl/apps_php_fpm_pool.conf.master +++ b/install/tpl/apps_php_fpm_pool.conf.master @@ -9,7 +9,7 @@ user = {fpm_user} group = {fpm_group} pm = dynamic -pm.max_children = 50 +pm.max_children = 500 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 5 diff --git a/install/tpl/php_fpm_pool.conf.master b/install/tpl/php_fpm_pool.conf.master index dfa305944..9cde75ab6 100644 --- a/install/tpl/php_fpm_pool.conf.master +++ b/install/tpl/php_fpm_pool.conf.master @@ -9,7 +9,7 @@ user = {fpm_user} group = {fpm_group} pm = dynamic -pm.max_children = 10 +pm.max_children = 500 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 5 diff --git a/server/conf/apps_php_fpm_pool.conf.master b/server/conf/apps_php_fpm_pool.conf.master index ce6a92fcf..7997e9bb6 100644 --- a/server/conf/apps_php_fpm_pool.conf.master +++ b/server/conf/apps_php_fpm_pool.conf.master @@ -9,7 +9,7 @@ user = {fpm_user} group = {fpm_group} pm = dynamic -pm.max_children = 50 +pm.max_children = 500 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 5 -- GitLab From b00e475250e2b6bfbfa0475814869a72b0aa4dde Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Tue, 15 Jul 2014 17:43:09 +0200 Subject: [PATCH 024/158] - adjusted PHP settings regex to allow |, (, and ) (like in "error_reporting = E_ALL & ~(E_NOTICE | E_DEPRECATED | E_STRICT)") --- interface/web/sites/web_domain_edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index 990e8cd3d..8edfffafb 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -749,7 +749,7 @@ class page_action extends tform_actions { // value inside '' if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*\'.*\'\s*;*\s*$@', $custom_php_ini_settings_line)) continue; // everything else - if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue; + if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s|()]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue; $custom_php_ini_settings_are_valid = false; break; } -- GitLab From 51569edba0f9598e08c7975490f9ca8254017425 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 24 Jul 2014 10:23:28 +0200 Subject: [PATCH 025/158] Fixed: db user not created in mysql user table if password is stored in cleartext (ISPConfig < 3.0.3.3) Fixed: db user not created on update if status not changed (e. g. on using resync tool) --- .../plugins-available/mysql_clientdb_plugin.inc.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php index cba977cc0..6145db00c 100644 --- a/server/plugins-available/mysql_clientdb_plugin.inc.php +++ b/server/plugins-available/mysql_clientdb_plugin.inc.php @@ -83,7 +83,14 @@ class mysql_clientdb_plugin { if(!is_array($host_list)) $host_list = explode(',', $host_list); $success = true; - + if(!preg_match('/\*[A-F0-9]{40}$/', $database_password)) { + $result = $link->query("SELECT PASSWORD('" . $link->escape_string($database_password) . "') as `crypted`"); + if($result) { + $row = $result->fetch_assoc(); + $database_password = $row['crypted']; + $result->free(); + } + } // loop through hostlist foreach($host_list as $db_host) { $db_host = trim($db_host); @@ -270,7 +277,7 @@ class mysql_clientdb_plugin { $old_host_list .= 'localhost'; // Create the database user if database was disabled before - if($data['new']['active'] == 'y' && $data['old']['active'] == 'n') { + if($data['new']['active'] == 'y') { if($db_user) { if($db_user['database_user'] == 'root') $app->log('User root not allowed for Client databases', LOGLEVEL_WARNING); else $this->process_host_list('GRANT', $data['new']['database_name'], $db_user['database_user'], $db_user['database_password'], $host_list, $link); -- GitLab From a6a997ee36ac59d0f079ac26da87412f5dfdef2c Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 13:32:23 +0200 Subject: [PATCH 026/158] FS#3574 - Improve corrupt maildir removal function --- server/plugins-available/mail_plugin.inc.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php index 5bf37d14e..6d109c5bd 100644 --- a/server/plugins-available/mail_plugin.inc.php +++ b/server/plugins-available/mail_plugin.inc.php @@ -107,10 +107,11 @@ class mail_plugin { $maildomain_path .= '/Maildir'; } - //* When the mail user dir exists but it is not a valid maildir, remove it + //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { - exec("su -c 'rm -rf ".escapeshellcmd($data['new']['maildir'])."' vmail"); - $app->log('Removed invalid maildir and rebuild it: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN); + if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); + exec("su -c 'mv -f ".escapeshellcmd($data['new']['maildir'])." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']."' vmail"); + $app->log('Moved invalid maildir to corrupted Maildirs folder: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN); } //* Create the maildir, if it doesn not exist, set permissions, set quota. @@ -238,10 +239,11 @@ class mail_plugin { $maildomain_path .= '/Maildir'; } - //* When the mail user dir exists but it is not a valid maildir, remove it + //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { - exec("su -c 'rm -rf ".escapeshellcmd($data['new']['maildir'])."' vmail"); - $app->log('Removed invalid maildir and rebuild it: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN); + if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); + exec("su -c 'mv -f ".escapeshellcmd($data['new']['maildir'])." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']."' vmail"); + $app->log('Moved invalid maildir to corrupted Maildirs folder: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN); } //* Create the maildir, if it doesn not exist, set permissions, set quota. -- GitLab From 51910d3e188c441412010013efb4b3522e35c696 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 14:25:39 +0200 Subject: [PATCH 027/158] FS#3490 - Change permissions of folder protection files for nfs - Changed vhost.conf.master as php-fpm was not working after commit "5a6670bd3c1083f3c6f6652202e7c776745b5eff". --- server/conf/vhost.conf.master | 26 ++++++++++++++----- .../plugins-available/apache2_plugin.inc.php | 12 ++++----- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 0dd805af8..96b344338 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -225,9 +225,16 @@ # php as cgi enabled ScriptAlias /php5-cgi Action php5-cgi /php5-cgi - - SetHandler php5-cgi - + + + SetHandler php5-cgi + + + + + SetHandler php5-cgi + + Require all granted @@ -308,9 +315,16 @@ Allow from all - - SetHandler php5-fcgi - + + + SetHandler php5-fcgi + + + + + SetHandler php5-fcgi + + Action php5-fcgi /php5-fcgi Alias /php5-fcgi {tmpl_var name='document_root'}/cgi-bin/php5-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index e3833b03a..a1d247ca6 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1472,7 +1472,7 @@ class apache2_plugin { if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdir($data['new']['document_root'].'/' . $web_folder . '/stats'); $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user"; $app->system->file_put_contents($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', $ht_file); - $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0755); + $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0751); unset($ht_file); //} @@ -1482,7 +1482,7 @@ class apache2_plugin { $app->system->web_folder_protection($data['new']['document_root'], false); $app->system->file_put_contents($data['new']['document_root'].'/web/stats/.htpasswd_stats', $htp_file); $app->system->web_folder_protection($data['new']['document_root'], true); - $app->system->chmod($data['new']['document_root'].'/web/stats/.htpasswd_stats', 0755); + $app->system->chmod($data['new']['document_root'].'/web/stats/.htpasswd_stats', 0751); unset($htp_file); } } @@ -2009,7 +2009,7 @@ class apache2_plugin { //* Create empty .htpasswd file, if it does not exist if(!is_file($folder_path.'.htpasswd')) { $app->system->touch($folder_path.'.htpasswd'); - $app->system->chmod($folder_path.'.htpasswd', 0750); + $app->system->chmod($folder_path.'.htpasswd', 0751); $app->system->chown($folder_path.'.htpasswd', $website['system_user']); $app->system->chgrp($folder_path.'.htpasswd', $website['system_group']); $app->log('Created file '.$folder_path.'.htpasswd', LOGLEVEL_DEBUG); @@ -2063,7 +2063,7 @@ class apache2_plugin { unset($old_content); $app->system->file_put_contents($folder_path.'.htaccess', $ht_file); - $app->system->chmod($folder_path.'.htaccess', 0750); + $app->system->chmod($folder_path.'.htaccess', 0751); $app->system->chown($folder_path.'.htaccess', $website['system_user']); $app->system->chgrp($folder_path.'.htaccess', $website['system_group']); $app->log('Created/modified file '.$folder_path.'.htaccess', LOGLEVEL_DEBUG); @@ -2225,7 +2225,7 @@ class apache2_plugin { } $app->system->file_put_contents($new_folder_path.'.htaccess', $ht_file); - $app->system->chmod($new_folder_path.'.htaccess', 0750); + $app->system->chmod($new_folder_path.'.htaccess', 0751); $app->system->chown($new_folder_path.'.htaccess', $website['system_user']); $app->system->chgrp($new_folder_path.'.htaccess', $website['system_group']); $app->log('Created/modified file '.$new_folder_path.'.htaccess', LOGLEVEL_DEBUG); @@ -2233,7 +2233,7 @@ class apache2_plugin { //* Create empty .htpasswd file, if it does not exist if(!is_file($folder_path.'.htpasswd')) { $app->system->touch($new_folder_path.'.htpasswd'); - $app->system->chmod($new_folder_path.'.htpasswd', 0750); + $app->system->chmod($new_folder_path.'.htpasswd', 0751); $app->system->chown($new_folder_path.'.htpasswd', $website['system_user']); $app->system->chgrp($new_folder_path.'.htpasswd', $website['system_group']); $app->log('Created file '.$new_folder_path.'.htpasswd', LOGLEVEL_DEBUG); -- GitLab From 5aedfd4b6c0ebd2277f03b49bb21c409ac3595cc Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 14:36:37 +0200 Subject: [PATCH 028/158] FS#3572 - session.save_path directory listing possible for everyone --- server/plugins-available/apache2_plugin.inc.php | 4 ++-- server/plugins-available/nginx_plugin.inc.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index a1d247ca6..bfa435dea 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -710,7 +710,7 @@ class apache2_plugin { $app->system->chmod($data['new']['document_root'].'/ssl', 0755); // make tmp directory writable for Apache and the website users - $app->system->chmod($data['new']['document_root'].'/tmp', 0777); + $app->system->chmod($data['new']['document_root'].'/tmp', 0770); // Set Log directory to 755 to make the logs accessible by the FTP user if(realpath($data['new']['document_root'].'/'.$log_folder . '/error.log') == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') { @@ -770,7 +770,7 @@ class apache2_plugin { $app->system->chmod($data['new']['document_root'].'/cgi-bin', 0755); // make temp directory writable for Apache and the website users - $app->system->chmod($data['new']['document_root'].'/tmp', 0777); + $app->system->chmod($data['new']['document_root'].'/tmp', 0770); // Set Log directory to 755 to make the logs accessible by the FTP user if(realpath($data['new']['document_root'].'/'.$log_folder . '/error.log') == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') { diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index dcfc674b0..1947367c9 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -714,7 +714,7 @@ class nginx_plugin { $app->system->chmod($data['new']['document_root'].'/ssl', 0755); // make tmp directory writable for nginx and the website users - $app->system->chmod($data['new']['document_root'].'/tmp', 0777); + $app->system->chmod($data['new']['document_root'].'/tmp', 0770); // Set Log directory to 755 to make the logs accessible by the FTP user if(realpath($data['new']['document_root'].'/'.$log_folder . '/error.log') == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') { @@ -774,7 +774,7 @@ class nginx_plugin { $app->system->chmod($data['new']['document_root'].'/cgi-bin', 0755); // make temp directory writable for nginx and the website users - $app->system->chmod($data['new']['document_root'].'/tmp', 0777); + $app->system->chmod($data['new']['document_root'].'/tmp', 0770); // Set Log directory to 755 to make the logs accessible by the FTP user if(realpath($data['new']['document_root'].'/'.$log_folder . '/error.log') == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') { -- GitLab From 8496f27bcca1977485984f2b99f75ed2ba69b986 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 14:53:59 +0200 Subject: [PATCH 029/158] Fixed: FS#3565 - Wrong Traffic Calculation - vlogger --- install/tpl/apache_ispconfig.conf.master | 2 +- server/conf/apache_ispconfig.conf.master | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/tpl/apache_ispconfig.conf.master b/install/tpl/apache_ispconfig.conf.master index 908603310..cd9924a37 100644 --- a/install/tpl/apache_ispconfig.conf.master +++ b/install/tpl/apache_ispconfig.conf.master @@ -3,7 +3,7 @@ # ISPConfig Logfile configuration for vlogger ################################################ -LogFormat "%v %h %l %u %t \"%r\" %>s %B \"%{Referer}i\" \"%{User-Agent}i\"" combined_ispconfig +LogFormat "%v %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_ispconfig CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m%d-access.log\" /var/log/ispconfig/httpd" combined_ispconfig diff --git a/server/conf/apache_ispconfig.conf.master b/server/conf/apache_ispconfig.conf.master index be6f637b7..6b2accbc8 100644 --- a/server/conf/apache_ispconfig.conf.master +++ b/server/conf/apache_ispconfig.conf.master @@ -3,7 +3,7 @@ # ISPConfig Logfile configuration for vlogger ################################################ -LogFormat "%v %h %l %u %t \"%r\" %>s %B \"%{Referer}i\" \"%{User-Agent}i\"" combined_ispconfig +LogFormat "%v %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_ispconfig CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m%d-access.log\" /var/log/ispconfig/httpd" combined_ispconfig -- GitLab From 4c842d6572cf623858e5d94cba5615b266466c6f Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 15:09:51 +0200 Subject: [PATCH 030/158] Fixed: FS#3525 - bind dlz plugin --- server/plugins-available/bind_dlz_plugin.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/bind_dlz_plugin.inc.php b/server/plugins-available/bind_dlz_plugin.inc.php index f6d367f27..21c0f86e4 100644 --- a/server/plugins-available/bind_dlz_plugin.inc.php +++ b/server/plugins-available/bind_dlz_plugin.inc.php @@ -188,7 +188,7 @@ class bind_dlz_plugin { //$_db = clone $app->db; //$_db->dbName = 'named'; - $app->db->query("DELETE FROM named.records WHERE ispconfig_id = {$data["old"]["id"]}"); + $app->db->query( "DELETE FROM named.dns_records WHERE zone = '".substr($data['old']['origin'], 0, -1)."'"); //unset($_db); } @@ -345,7 +345,7 @@ class bind_dlz_plugin { //$_db = clone $app->db; //$_db->dbName = 'named'; - $app->db->query("DELETE FROM named.records WHERE ispconfig_id = {$data["old"]["id"]} AND type != 'SOA'"); + $app->db->query( "DELETE FROM named.dns_records WHERE type != 'SOA' AND zone = '".substr($data['old']['origin'], 0, -1)."'"); //unset($_db); } -- GitLab From d678830e418467eeddaff394bac5998fd0cb8468 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 15:32:31 +0200 Subject: [PATCH 031/158] Added mail() function from interface to ispconfig server part. --- server/cron_daily.php | 2 +- server/lib/classes/ispcmail.inc.php | 869 ++++++++++++++++++++++++++++ server/lib/classes/system.inc.php | 31 + 3 files changed, 901 insertions(+), 1 deletion(-) create mode 100644 server/lib/classes/ispcmail.inc.php diff --git a/server/cron_daily.php b/server/cron_daily.php index b9b34324b..75459be20 100644 --- a/server/cron_daily.php +++ b/server/cron_daily.php @@ -647,7 +647,7 @@ if ($app->dbmaster == $app->db) { // function for sending notification emails //######## function send_notification_email($template, $placeholders, $recipients) { - global $conf; + global $conf, $app; if(!is_array($recipients) || count($recipients) < 1) return false; if(!is_array($placeholders)) $placeholders = array(); diff --git a/server/lib/classes/ispcmail.inc.php b/server/lib/classes/ispcmail.inc.php new file mode 100644 index 000000000..930aabbca --- /dev/null +++ b/server/lib/classes/ispcmail.inc.php @@ -0,0 +1,869 @@ +mime_boundary = '==Multipart_Boundary_x' . $rand . 'x'; + + $this->headers = array(); + $this->attachments = array(); + + $this->headers['MIME-Version'] = '1.0'; + $this->headers['User-Agent'] = $this->user_agent; + if(is_array($options) && count($options) > 0) $this->setOptions($options); + } + + public function __destruct() { + $this->finish(); + } + + + + /** + * Set option + * + * @param string $key the option to set + * @param string $value the option value to set + */ + public function setOption($key, $value) { + switch($key) { + case 'smtp_helo': + $this->smtp_helo = $value; + break; + case 'smtp_host': + $this->smtp_host = $value; + break; + case 'smtp_server': + $this->smtp_host = $value; + break; + case 'smtp_port': + $this->smtp_port = $value; + break; + case 'smtp_user': + $this->smtp_user = $value; + break; + case 'smtp_pass': + $this->smtp_pass = $value; + break; + case 'smtp_max_mails': + $this->smtp_max_mails = intval($value); + if($this->smtp_max_mails < 1) $this->smtp_max_mails = 1; + break; + case 'use_smtp': + $this->use_smtp = ($value == true ? true : false); + if($value == true) $this->_crlf = "\r\n"; + break; + case 'smtp_crypt': + if($value != 'ssl' && $value != 'tls') $value = ''; + $this->smtp_crypt = $value; + break; + case 'sign_email': + $this->sign_email = ($value == true ? true : false); + break; + case 'sign_key': + $this->sign_key = $value; + break; + case 'sign_key_pass': + $this->sign_key_pass = $value; + break; + case 'sign_cert': + $this->sign_cert = $value; + break; + case 'sign_bundle': + $this->sign_bundle = $value; + break; + case 'mail_charset': + $this->mail_charset = $value; + break; + case 'notify': + $this->notification = ($value == true ? true : false); + break; + } + } + + + + /** Detect the helo string if none given + * + */ + private function detectHelo() { + if(isset($_SERVER['HTTP_HOST'])) $this->smtp_helo = (strpos($_SERVER['HTTP_HOST'], ':') !== false ? substr($_SERVER['HTTP_HOST'], 0, strpos($_SERVER['HTTP_HOST'], ':')) : $_SERVER['HTTP_HOST']); + elseif(isset($_SERVER['SERVER_NAME'])) $this->smtp_helo = $_SERVER['SERVER_NAME']; + else $this->smtp_helo = php_uname('n'); + if($this->smtp_helo == '') $this->smtp_helo = 'localhost'; + return $this->smtp_helo; + } + + + + /** + * Set options + * + * @param array $options the options to set as an associative array key => value + */ + public function setOptions($options) { + foreach($options as $key => $value) $this->setOption($key, $value); + } + + + + /** + * Read a file's contents + * + * Simply gets the file's content + * + * @access public + * @param string $filename name and path of file to read + * @return string file content (can be binary) + */ + public function read_File($filename) { + $content = ''; + + $fp = fopen($filename, 'r'); + if(!$fp) return false; + + while(!feof($fp)) { + $content .= fread($fp, 1024); + } + fclose($fp); + + return $content; + } + + + + /** + * set smtp connection encryption + * + * @access public + * @param string $mode encryption mode (tls, ssl or empty string) + */ + public function setSMTPEncryption($mode = '') { + if($mode != 'ssl' && $mode != 'tls') $mode = ''; + $this->smtp_crypt = $mode; + } + + /** + * set a mail header + * + * Sets a single mail header to a given value + * + * @access public + * @param string $header header name to set + * @param string $value value to set in header field + */ + public function setHeader($header, $value) { + if(strtolower($header) == 'bcc') $header = 'Bcc'; + elseif(strtolower($header) == 'cc') $header = 'Cc'; + elseif(strtolower($header) == 'from') $header = 'From'; + $this->headers["$header"] = $value; + } + + + + /** + * get a mail header value + * + * Returns a value of a single mail header + * + * @access public + * @param string $header header name to get + * @return string header value + */ + public function getHeader($header) { + if(strtolower($header) == 'bcc') $header = 'Bcc'; + elseif(strtolower($header) == 'cc') $header = 'Cc'; + elseif(strtolower($header) == 'from') $header = 'From'; + return isset($this->headers["$header"]) ? $this->headers["$header"] : ''; + } + + + + /** + * Set email sender + * + * Sets the email sender and optionally the sender's name + * + * @access public + * @param string $email sender email address + * @param string $name sender name + */ + public function setSender($email, $name = '') { + if($name) $header = '"' . $name . '" <' . $email . '>'; + else $header = '<' . $email . '>'; + + $this->_mail_sender = $email; + + $this->setHeader('From', $header); + } + + + + /** + * Set mail subject + * + * @access public + * @param string $subject the mail subject + * @return string where-string for db query + */ + public function setSubject($subject) { + $this->setHeader('Subject', $subject); + } + + + + /** + * Get current mail subject + * + * @access public + * @return string mail subject + */ + public function getSubject() { + return $this->headers['Subject']; + } + + + + /** + * Set mail content + * + * Sets the mail html and plain text content + * + * @access public + * @param string $text plain text mail content (can be empty) + * @param string $html html mail content + */ + public function setMailText($text, $html = '') { + $this->text_part = $text; + $this->html_part = $html; + } + + + + /** + * Read and attach a file + * + * Reads a file and attaches it to the current email + * + * @access public + * @param string $filename the file to read and attach + * @param string $display_name the name that will be displayed in the mail + * @see read_File + */ + public function readAttachFile($filename, $display_name = '') { + if($display_name == '') { + $path_parts = pathinfo($filename); + $display_name = $path_parts["basename"]; + unset($path_parts); + } + $this->attachFile($this->read_File($filename), $display_name); + } + + + + /** + * Attach a file + * + * Attaches a string (can be binary) as a file to the mail + * + * @access public + * @param string $content attachment data string + * @param string $filename name for file attachment + */ + public function attachFile($content, $filename) { + $attachment = array('content' => $content, + 'filename' => $filename, + 'type' => 'application/octet-stream', + 'encoding' => 'base64' + ); + $this->attachments[] = $attachment; + } + + + + /** + * @access private + */ + private function create() { + $attach = false; + $html = false; + $text = false; + + if($this->html_part) $html = true; + if($this->text_part) $text = true; + if(count($this->attachments) > 0) $attach = true; + + $textonly = false; + $htmlonly = false; + if($text == true && $html == false && $attach == false) { + // only text + $content_type = 'text/plain; charset="' . strtolower($this->mail_charset) . '"'; + $textonly = true; + } elseif($text == true && $html == false && $attach == true) { + // text and attachment + $content_type = 'multipart/mixed;'; + $content_type .= "\n" . ' boundary="' . $this->mime_boundary . '"'; + } elseif($html == true && $text == true && $attach == false) { + // html only (or text too) + $content_type = 'multipart/alternative;'; + $content_type .= "\n" . ' boundary="' . $this->mime_boundary . '"'; + } elseif($html == true && $text == false && $attach == false) { + // html only (or text too) + $content_type = 'text/html; charset="' . strtolower($this->mail_charset) . '"'; + $htmlonly = true; + } elseif($html == true && $attach == true) { + // html and attachments + $content_type = 'multipart/mixed;'; + $content_type .= "\n" . ' boundary="' . $this->mime_boundary . '"'; + } + + $this->headers['Content-Type'] = $content_type; + + if($textonly == false && $htmlonly == false) { + $this->body = "This is a multi-part message in MIME format.\n\n"; + + if($text) { + /*$this->body .= "--{$this->mime_boundary}\n" . + "Content-Type:text/plain; charset=\"" . strtolower($this->mail_charset) . "\"\n" . + "Content-Transfer-Encoding: 7bit\n\n" . $this->text_part . "\n\n";*/ + $this->body .= "--{$this->mime_boundary}\n" . + "Content-Type:text/plain; charset=\"UTF-8\"\n" . + "Content-Transfer-Encoding: 8bit\n\n" . $this->text_part . "\n\n"; + } + + if($html) { + /*$this->body .= "--{$this->mime_boundary}\n" . + "Content-Type:text/html; charset=\"" . strtolower($this->mail_charset) . "\"\n" . + "Content-Transfer-Encoding: 7bit\n\n" . $this->html_part . "\n\n";*/ + $this->body .= "--{$this->mime_boundary}\n" . + "Content-Type:text/html; charset=\"UTF-8\"\n" . + "Content-Transfer-Encoding: 8bit\n\n" . $this->html_part . "\n\n"; + } + + if($attach) { + foreach($this->attachments as $att) { + $this->body .= "--{$this->mime_boundary}\n" . + "Content-Type: " . $att['type'] . ";\n" . + " name=\"" . $att['filename'] . "\"\n" . + "Content-Transfer-Encoding: base64\n" . + "Content-Disposition: attachment;\n\n" . + chunk_split(base64_encode($att['content'])) . "\n\n"; + } + } + $this->body .= "--{$this->mime_boundary}--\n"; + } elseif($htmlonly == true) { + $this->body = $this->html_part; + } else { + $this->body = $this->text_part; + } + + if (isset($this->body)) { + // Add message ID header + $message_id = sprintf('<%s.%s@%s>', base_convert(time(), 10, 36), base_convert(rand(), 10, 36), $this->smtp_helo != '' ? $this->smtp_helo : $this->detectHelo()); + $this->headers['Message-ID'] = $message_id; + return true; + } else { + return false; + } + } + + + + /** + * Function to sign an email body + */ + private function sign() { + if($this->sign_email == false || $this->sign_key == '' || $this->sign_cert == '') return false; + if(function_exists('openssl_pkcs7_sign') == false) return false; + + $tmpin = tempnam(sys_get_temp_dir(), 'sign'); + $tmpout = tempnam(sys_get_temp_dir(), 'sign'); + if(!file_exists($tmpin) || !is_writable($tmpin)) return false; + + file_put_contents($tmpin, 'Content-Type: ' . $this->getHeader('Content-Type') . "\n\n" . $this->body); + $tmpf_key = tempnam(sys_get_temp_dir(), 'sign'); + file_put_contents($tmpf_key, $this->sign_key); + $tmpf_cert = tempnam(sys_get_temp_dir(), 'sign'); + file_put_contents($tmpf_cert, $this->sign_cert); + if($this->sign_bundle != '') { + $tmpf_bundle = tempnam(sys_get_temp_dir(), 'sign'); + file_put_contents($tmpf_bundle, $this->sign_bundle); + openssl_pkcs7_sign($tmpin, $tmpout, 'file://' . realpath($tmpf_cert), array('file://' . realpath($tmpf_key), $this->sign_key_pass), array(), PKCS7_DETACHED, realpath($tmpf_bundle)); + } else { + openssl_pkcs7_sign($tmpin, $tmpout, 'file://' . realpath($tmpf_cert), array('file://' . realpath($tmpf_key), $this->sign_key_pass), array()); + } + unlink($tmpin); + unlink($tmpf_cert); + unlink($tmpf_key); + if(file_exists($tmpf_bundle)) unlink($tmpf_bundle); + + if(!file_exists($tmpout) || !is_readable($tmpout)) return false; + $this->body = file_get_contents($tmpout); + unlink($tmpout); + + unset($this->headers['Content-Type']); + unset($this->headers['MIME-Version']); + + $this->_is_signed = true; + } + + private function _char_to_hex($matches) { + return '=' . strtoupper(dechex(ord($matches[1]))); + } + + + + /** + * Function to encode a header if necessary + * according to RFC2047 + * @access private + */ + private function _encodeHeader($input, $charset = 'ISO-8859-1') { + preg_match_all('/(\s?\w*[\x80-\xFF]+\w*\s?)/', $input, $matches); + foreach ($matches[1] as $value) { + $replacement = preg_replace_callback('/([\x20\x80-\xFF])/', array($this, '_char_to_hex'), $value); + $input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input); + } + + return $input; + } + + + + /** + * Function to encode the subject if necessary + * according to RFC2047 + * @access private + */ + private function _encodeSubject($input, $charset = 'ISO-8859-1') { + /* + if($charset == 'UTF-8' && function_exists('imap_8bit')) { + $input = "=?utf-8?Q?" . imap_8bit($input) . "?="; + } else { + preg_match_all('/(\s?\w*[\x80-\xFF]+\w*\s?)/', $input, $matches); + foreach ($matches[1] as $value) { + $replacement = preg_replace('/([\x20\x80-\xFF])/e', '"=" . strtoupper(dechex(ord("\1")))', $value); + $input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input); + } + }*/ + $input='=?UTF-8?B?'.base64_encode($input).'?='; + + return $input; + } + + + + /** + * @access private + */ + private function _smtp_login() { + $this->_smtp_conn = fsockopen(($this->smtp_crypt == 'ssl' ? 'ssl://' : '') . $this->smtp_host, $this->smtp_port, $errno, $errstr, 30); + $response = fgets($this->_smtp_conn, 515); + if(empty($this->_smtp_conn)) return false; + + //Say Hello to SMTP + if($this->smtp_helo == '') $this->detectHelo(); + fputs($this->_smtp_conn, 'HELO ' . $this->smtp_helo . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); + + // ENCRYPTED? + if($this->smtp_crypt == 'tls') { + fputs($this->_smtp_conn, 'STARTTLS' . $this->_crlf); + fgets($this->_smtp_conn, 515); + stream_socket_enable_crypto($this->_smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + } + + //AUTH LOGIN + fputs($this->_smtp_conn, 'AUTH LOGIN' . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); + + //Send username + fputs($this->_smtp_conn, base64_encode($this->smtp_user) . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); + + //Send password + fputs($this->_smtp_conn, base64_encode($this->smtp_pass) . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); + + $this->_logged_in = true; + return true; + } + + + + /** + * @access private + */ + private function _smtp_close() { + $this->_logged_in = false; + + if(empty($this->_smtp_conn)) { + return false; + } + + fputs($this->_smtp_conn, 'QUIT' . $this->_crlf); + $response = @fgets($this->_smtp_conn, 515); + return true; + } + + private function _extract_names($data) { + $senders = array(); + + $data = stripslashes(preg_replace("'(\t|\r|\n)'", '', $data)); + + if(trim($data) == '') return $senders; + + $armail = array(); + $counter = 0; $inthechar = 0; + $chartosplit = ',;'; $protectchar = '"'; $temp = ''; + $closed = 1; + + for($i = 0; $i < strlen($data); $i++) { + $thischar = $data[$i]; + if($thischar == '<' && $closed) $closed = 0; + if($thischar == '>' && !$closed) $closed = 1; + if($thischar == $protectchar) $inthechar = ($inthechar) ? 0 : 1; + if((strpos($chartosplit, $thischar) !== false) && !$inthechar && $closed) { + $armail[] = $temp; + $temp = ''; + } else { + $temp .= $thischar; + } + } + + if(trim($temp) != '') { + $armail[] = trim($temp); + unset($temp); + } + + foreach($armail as $thisPart) { + $thisPart = trim(preg_replace('/^"(.*)"$/i', '$1', trim($thisPart))); + if($thisPart != '') { + $email = ''; + $name = ''; + if(preg_match('/(.*)<(.*)>/i', $thisPart, $matches)) { + $email = trim($matches[2]); + $name = trim($matches[1]); + } else { + if(preg_match('/([-a-z0-9_$+.]+@[-a-z0-9_.]+[-a-z0-9_]+)((.*))/i', $thisPart, $matches)) { + $email = $matches[1]; + $name = $matches[2]; + } else { + $email = $thisPart; + } + } + + $email = preg_replace('/<(.*)\\>/', '$1', $email); + $name = preg_replace('/"(.*)"/', '$1', trim($name)); + $name = preg_replace('/\((.*)\)/', '$1', $name); + + if($name == '') $name = $email; + if($email == '') $email = $name; + $senders[] = array( + 'name' => $name, + 'mail' => $email + ); + unset($name); + unset($email); + } + } + unset($armail); + unset($thisPart); + + return $senders; + } + + /** + * Send the mail to one or more recipients + * + * The recipients can be either a string (1 recipient email without name) or an associative array of recipients with names as keys and email addresses as values. + * + * @access public + * @param mixed $recipients one email address or array of recipients with names as keys and email addresses as values + */ + public function send($recipients) { + if(!is_array($recipients)) $recipients = array($recipients); + + if($this->use_smtp == true) $this->_crlf = "\r\n"; + else $this->_crlf = "\n"; + + $this->create(); + if($this->sign_email == true) $this->sign(); + + $subject = ''; + if (!empty($this->headers['Subject'])) { + //$subject = $this->_encodeHeader($this->headers['Subject'], $this->mail_charset); + $subject = $this->headers['Subject']; + + //$enc_subject = $this->_encodeHeader($subject, $this->mail_charset); + $enc_subject = $this->_encodeSubject($subject, $this->mail_charset); + unset($this->headers['Subject']); + } + + if($this->notification == true) $this->setHeader('Disposition-Notification-To', $this->getHeader('From')); + + unset($this->headers['To']); // always reset the To header to prevent from sending to multiple users at once + $this->headers['Date'] = date('r'); //date('D, d M Y H:i:s O'); + + // Get flat representation of headers + foreach ($this->headers as $name => $value) { + if(strtolower($name) == 'to' || strtolower($name) == 'cc' || strtolower($name) == 'bcc') continue; // never add the To header + $headers[] = $name . ': ' . $this->_encodeHeader($value, $this->mail_charset); + } + + if($this->use_smtp == true) { + if(!$this->_logged_in || !$this->_smtp_conn) { + $result = $this->_smtp_login(); + if(!$result) return false; + } + $bcc_cc_sent = false; + foreach($recipients as $recipname => $recip) { + if($this->_sent_mails >= $this->smtp_max_mails) { + // close connection to smtp and reconnect + $this->_sent_mails = 0; + $this->_smtp_close(); + $result = $this->_smtp_login(); + if(!$result) return false; + } + $this->_sent_mails += 1; + + $recipname = trim(str_replace('"', '', $recipname)); + $recip = $this->_encodeHeader($recip, $this->mail_charset); + $recipname = $this->_encodeHeader($recipname, $this->mail_charset); + + //Email From + fputs($this->_smtp_conn, 'MAIL FROM: <' . $this->_mail_sender . '>' . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); + + //Email To + fputs($this->_smtp_conn, 'RCPT TO: <' . $recip . '>' . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); + + if($bcc_cc_sent == false) { + $add_recips = array(); + if($this->getHeader('Cc') != '') $add_recips = array_merge($add_recips, $this->_extract_names($this->getHeader('Cc'))); + if($this->getHeader('Bcc') != '') $add_recips = array_merge($add_recips, $this->_extract_names($this->getHeader('Bcc'))); + foreach($add_recips as $add_recip) { + if(!$add_recip['mail']) continue; + fputs($this->_smtp_conn, 'RCPT TO: <' . $this->_encodeHeader($add_recip['mail'], $this->mail_charset) . '>' . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); + } + unset($add_recips); + $bcc_cc_sent = true; + } + + //The Email + fputs($this->_smtp_conn, 'DATA' . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); + + //Construct Headers + if($recipname && !is_numeric($recipname)) $this->setHeader('To', $recipname . ' <' . $recip . '>'); + else $this->setHeader('To', $recip); + + $mail_content = 'Subject: ' . $enc_subject . $this->_crlf; + $mail_content .= 'To: ' . $this->getHeader('To') . $this->_crlf; + if($this->getHeader('Cc') != '') $mail_content .= 'Cc: ' . $this->_encodeHeader($this->getHeader('Cc'), $this->mail_charset) . $this->_crlf; + $mail_content .= implode($this->_crlf, $headers) . $this->_crlf . ($this->_is_signed == false ? $this->_crlf : '') . $this->body; + + fputs($this->_smtp_conn, $mail_content . $this->_crlf . '.' . $this->_crlf); + $response = fgets($this->_smtp_conn, 515); + + // hopefully message was correctly sent now + $result = true; + } + } else { + if($this->getHeader('Bcc') != '') $headers[] = 'Bcc: ' . $this->_encodeHeader($this->getHeader('Bcc'), $this->mail_charset); + if($this->getHeader('Cc') != '') $headers[] = 'Cc: ' . $this->_encodeHeader($this->getHeader('Cc'), $this->mail_charset); + $rec_string = ''; + foreach($recipients as $recipname => $recip) { + $recipname = trim(str_replace('"', '', $recipname)); + + if($rec_string != '') $rec_string .= ', '; + if($recipname && !is_numeric($recipname)) $rec_string .= $recipname . '<' . $recip . '>'; + else $rec_string .= $recip; + } + $to = $this->_encodeHeader($rec_string, $this->mail_charset); + //$result = mail($to, $subject, $this->body, implode($this->_crlf, $headers)); + $result = mail($to, $enc_subject, $this->body, implode($this->_crlf, $headers)); + } + + // Reset the subject in case mail is resent + if ($subject !== '') { + $this->headers['Subject'] = $subject; + } + + // Return + return $result; + } + + + + /** + * Close mail connections + * + * This closes an open smtp connection so you should always call this function in your script if you have finished sending all emails + * + * @access public + */ + public function finish() { + if($this->use_smtp == true) $this->_smtp_close(); + + $rand = md5(microtime()); + $this->mime_boundary = '==Multipart_Boundary_x' . $rand . 'x'; + + $this->headers = array(); + $this->attachments = array(); + $this->text_part = ''; + $this->html_part = ''; + + $this->headers['MIME-Version'] = '1.0'; + $this->headers['User-Agent'] = $this->user_agent; + + $this->smtp_helo = ''; + $this->smtp_host = ''; + $this->smtp_port = ''; + $this->smtp_user = ''; + $this->smtp_pass = ''; + $this->use_smtp = false; + $this->smtp_crypt = false; + $this->mail_charset = 'UTF-8'; + $this->_sent_mails = 0; + + return; + } + +} + +?> diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 16e91ae9b..d9d85e5a3 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1785,6 +1785,37 @@ class system{ return $modules; } + + //* ISPConfig mail function + public function mail($to, $subject, $text, $from, $filepath = '', $filetype = 'application/pdf', $filename = '', $cc = '', $bcc = '', $from_name = '') { + global $app, $conf; + + if($conf['demo_mode'] == true) $app->error("Mail sending disabled in demo mode."); + + $app->uses('getconf,ispcmail'); + $mail_config = $app->getconf->get_global_config('mail'); + if($mail_config['smtp_enabled'] == 'y') { + $mail_config['use_smtp'] = true; + $app->ispcmail->setOptions($mail_config); + } + $app->ispcmail->setSender($from, $from_name); + $app->ispcmail->setSubject($subject); + $app->ispcmail->setMailText($text); + + if($filepath != '') { + if(!file_exists($filepath)) $app->error("Mail attachement does not exist ".$filepath); + $app->ispcmail->readAttachFile($filepath); + } + + if($cc != '') $app->ispcmail->setHeader('Cc', $cc); + if($bcc != '') $app->ispcmail->setHeader('Bcc', $bcc); + + $app->ispcmail->send($to); + $app->ispcmail->finish(); + + return true; + } + } ?> -- GitLab From ede489dea61c6a2a261c3bb22fca669faae7dec9 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 15:43:31 +0200 Subject: [PATCH 032/158] Fixed: FS#3534 - Check if mail quota check is working correctly --- interface/web/mail/mail_user_edit.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index 0c9110bb7..8166b5814 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -166,7 +166,7 @@ class page_action extends tform_actions { } // Check the quota and adjust - if(isset($_POST["quota"]) && $client["limit_mailquota"] >= 0 && $app->functions->intval($this->dataRecord["quota"]) * 1024 * 1024 != $this->oldDataRecord['quota']) { + if(isset($_POST["quota"]) && $client["limit_mailquota"] >= 0 && (($app->functions->intval($this->dataRecord["quota"]) * 1024 * 1024 != $this->oldDataRecord['quota']) || ($_POST["quota"] <= 0))) { $tmp = $app->db->queryOneRecord("SELECT sum(quota) as mailquota FROM mail_user WHERE mailuser_id != ".$app->functions->intval($this->id)." AND ".$app->tform->getAuthSQL('u')); $mailquota = $tmp["mailquota"] / 1024 / 1024; $new_mailbox_quota = $app->functions->intval($this->dataRecord["quota"]); @@ -179,6 +179,7 @@ class page_action extends tform_actions { unset($tmp); unset($tmp_quota); } + } // end if user is not admin -- GitLab From 95ae83a3ca7603981842571902cde18088879500 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 16:07:58 +0200 Subject: [PATCH 033/158] Fixed: FS#2811 - Creating a mail filter ends with Soap Error: target_error_regex --- interface/web/mail/form/mail_user_filter.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php index e001f6842..d5f6a0ab5 100644 --- a/interface/web/mail/form/mail_user_filter.tform.php +++ b/interface/web/mail/form/mail_user_filter.tform.php @@ -112,7 +112,7 @@ $form["tabs"]['filter'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[\p{Latin}0-9\.\-\_\ ]{0,100}$/u', + 'regex' => '/^[\p{Latin}0-9\.\-\_\ \&]{0,100}$/u', 'errmsg'=> 'target_error_regex'), ), 'default' => '', -- GitLab From 26f870eb89b6b5b62e2bcf25b161ac63851249d4 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 16:08:10 +0200 Subject: [PATCH 034/158] Fixed: FS#3576 - Login as button in cp user lits of system module not working --- interface/web/admin/templates/users_list.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/templates/users_list.htm b/interface/web/admin/templates/users_list.htm index dece7f8f3..cac25f54e 100644 --- a/interface/web/admin/templates/users_list.htm +++ b/interface/web/admin/templates/users_list.htm @@ -44,7 +44,7 @@ {tmpl_var name="groups"} - {tmpl_var name='login_as_txt'} + {tmpl_var name='login_as_txt'} {tmpl_var name='delete_txt'} -- GitLab From 0df5269cc6432cf5eb1a47e846912e70a2949605 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 16:15:20 +0200 Subject: [PATCH 035/158] Fixed: FS#3499 - fetchmail to address not updated after domainname change --- interface/web/mail/mail_domain_edit.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index 45a1ade3f..02dc55bfa 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -359,7 +359,16 @@ class page_action extends tform_actions { //* Update the mailinglist $app->db->query("UPDATE mail_mailinglist SET sys_userid = $client_user_id, sys_groupid = $sys_groupid WHERE domain = '".$app->db->quote($this->oldDataRecord['domain'])."'"); - + + //* Update fetchmail accounts + $fetchmail = $app->db->queryAllRecords("SELECT * FROM mail_get WHERE destination like '%@".$app->db->quote($this->oldDataRecord['domain'])."'"); + if(is_array($fetchmail)) { + foreach($fetchmail as $rec) { + $destination = $app->db->quote(str_replace($this->oldDataRecord['domain'], $this->dataRecord['domain'], $rec['destination'])); + $app->db->datalogUpdate('mail_get', "destination = '$destination', sys_userid = $client_user_id, sys_groupid = '$sys_groupid'", 'mailget_id', $rec['mailget_id']); + } + } + //* Delete the old spamfilter record $tmp = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".$app->db->quote($this->oldDataRecord["domain"])."'"); $app->db->datalogDelete('spamfilter_users', 'id', $tmp["id"]); -- GitLab From 75cc840cbc3887d2734059c9b96550c7e67f3996 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 16:28:13 +0200 Subject: [PATCH 036/158] Fixed: FS#3546 - bug in srv records in bind_dlz plugin. --- server/plugins-available/bind_dlz_plugin.inc.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/plugins-available/bind_dlz_plugin.inc.php b/server/plugins-available/bind_dlz_plugin.inc.php index 21c0f86e4..63abcc48c 100644 --- a/server/plugins-available/bind_dlz_plugin.inc.php +++ b/server/plugins-available/bind_dlz_plugin.inc.php @@ -252,6 +252,9 @@ class bind_dlz_plugin { if ($type == 'MX') { $app->db->query("INSERT INTO named.records (zone, ttl, type, host, mx_priority, data, ispconfig_id)". " VALUES ('$origin', $ttl, '$type', '$name', {$data["new"]["aux"]}, '$content', $ispconfig_id)"); + } elseif ($type == 'SRV') { + $app->db->query("INSERT INTO named.records (zone, ttl, type, data, ispconfig_id)". + " VALUES ('$origin', $ttl, '$type', '{$data["new"]["aux"]} $content', $ispconfig_id)"); } else { $app->db->query("INSERT INTO named.records (zone, ttl, type, host, data, ispconfig_id)". " VALUES ('$origin', $ttl, '$type', '$name', '$content', $ispconfig_id)"); @@ -327,6 +330,9 @@ class bind_dlz_plugin { if ($type == 'MX') { $app->db->query("UPDATE named.records SET zone = '$origin', ttl = $ttl, type = '$type', host = '$name', mx_priority = $prio, ". "data = '$content' WHERE ispconfig_id = $ispconfig_id AND type != 'SOA'"); + } elseif ($type == 'SRV') { + $app->db->query("UPDATE named.records SET zone = '$origin', ttl = $ttl, type = '$type', ". + "data = '$prio $content' WHERE ispconfig_id = $ispconfig_id AND type != 'SOA'"); } else { $app->db->query("UPDATE named.records SET zone = '$origin', ttl = $ttl, type = '$type', host = '$name', ". "data = '$content' WHERE ispconfig_id = $ispconfig_id AND type != 'SOA'"); -- GitLab From e032124465a66e161e0306f1e910c29db000646e Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 17:10:44 +0200 Subject: [PATCH 037/158] Fixed: FS#3514 - pagination broken when changing search limit --- interface/lib/classes/listform.inc.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php index 14c1a13f7..04f4b375b 100644 --- a/interface/lib/classes/listform.inc.php +++ b/interface/lib/classes/listform.inc.php @@ -248,6 +248,8 @@ class listform { public function getPagingSQL($sql_where = '1') { global $app, $conf; + + $old_search_limit = intval($_SESSION['search']['limit']); //* Add Global Limit from selectbox if(!empty($_POST['search_limit']) and $app->functions->intval($_POST['search_limit']) > 0){ @@ -272,6 +274,9 @@ class listform { //* set PAGE to worth request variable "PAGE" - ? setze page auf wert der request variablen "page" if(isset($_REQUEST["page"])) $_SESSION["search"][$list_name]["page"] = $app->functions->intval($_REQUEST["page"]); + + //* Set search to changed when search limit has been changed. + if(intval($_SESSION['search']['limit']) != $old_search_limit) $this->searchChanged = 1; //* PAGE to 0 set, if look for themselves ? page auf 0 setzen, wenn suche sich ge�ndert hat. if($this->searchChanged == 1) $_SESSION['search'][$list_name]['page'] = 0; -- GitLab From 99d6a59093484965ff4bd2f0a0499818d1bdae25 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 17:37:11 +0200 Subject: [PATCH 038/158] Fixed: FS#3520 - Default values in forms are invalid --- interface/web/sites/form/database.tform.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/sites/form/database.tform.php b/interface/web/sites/form/database.tform.php index a3e8772a4..fb600fd5c 100644 --- a/interface/web/sites/form/database.tform.php +++ b/interface/web/sites/form/database.tform.php @@ -88,7 +88,7 @@ $form["tabs"]['database'] = array ( 'type' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', - 'default' => 'y', + 'default' => 'mysql', 'value' => array('mysql' => 'MySQL') ), 'database_name' => array ( @@ -139,7 +139,7 @@ $form["tabs"]['database'] = array ( 'database_charset' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', - 'default' => 'y', + 'default' => '', 'value' => array('' => 'DB-Default', 'latin1' => 'Latin 1', 'utf8' => 'UTF-8') ), 'remote_access' => array ( -- GitLab From b740e1ef903f8f868b029e8f1064f6cc283c2dfc Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 18:34:37 +0200 Subject: [PATCH 039/158] Fixed: FS#3550 - APS instaleld packages, group permission in DB wrong --- interface/lib/classes/aps_guicontroller.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php index 7c4208fbd..f6a0ff4e3 100644 --- a/interface/lib/classes/aps_guicontroller.inc.php +++ b/interface/lib/classes/aps_guicontroller.inc.php @@ -333,7 +333,7 @@ class ApsGUIController extends ApsBase } //* Insert new package instance - $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `customer_id`, `package_id`, `instance_status`) VALUES (".$app->functions->intval($websrv['sys_userid']).", ".$app->functions->intval($websrv['sys_groupid']).", 'riud', '".$app->functions->intval($websrv['sys_perm_group'])."', '', ".$app->db->quote($webserver_id).",".$app->db->quote($customerid).", ".$app->db->quote($packageid).", ".INSTANCE_PENDING.")"; + $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `customer_id`, `package_id`, `instance_status`) VALUES (".$app->functions->intval($websrv['sys_userid']).", ".$app->functions->intval($websrv['sys_groupid']).", 'riud', '".$app->db->quote($websrv['sys_perm_group'])."', '', ".$app->db->quote($webserver_id).",".$app->db->quote($customerid).", ".$app->db->quote($packageid).", ".INSTANCE_PENDING.")"; $InstanceID = $app->db->datalogInsert('aps_instances', $insert_data, 'id'); //* Insert all package settings -- GitLab From 5332dc4d052b4ff48be343928344eb961dc4f027 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 18:45:19 +0200 Subject: [PATCH 040/158] Fixed: FS#3506 - Firewall rules get mirrored to slave servers --- .../plugins-available/firewall_plugin.inc.php | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/server/plugins-available/firewall_plugin.inc.php b/server/plugins-available/firewall_plugin.inc.php index 186e9b918..2cca769fd 100644 --- a/server/plugins-available/firewall_plugin.inc.php +++ b/server/plugins-available/firewall_plugin.inc.php @@ -76,29 +76,31 @@ class firewall_plugin { global $app, $conf; //* load the server configuration options - $app->uses('getconf'); - $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); - if($server_config['firewall'] == 'ufw') { - $this->ufw_update($event_name, $data); - } else { - $this->bastille_update($event_name, $data); + if(!$data['mirrored']) { + $app->uses('getconf'); + $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); + if($server_config['firewall'] == 'ufw') { + $this->ufw_update($event_name, $data); + } else { + $this->bastille_update($event_name, $data); + } } - } public function delete($event_name, $data) { global $app, $conf; //* load the server configuration options - $app->uses('getconf'); - $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); + if(!$data['mirrored']) { + $app->uses('getconf'); + $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); - if($server_config['firewall'] == 'ufw') { - $this->ufw_delete($event_name, $data); - } else { - $this->bastille_delete($event_name, $data); + if($server_config['firewall'] == 'ufw') { + $this->ufw_delete($event_name, $data); + } else { + $this->bastille_delete($event_name, $data); + } } - } private function ufw_update($event_name, $data) { -- GitLab From e99a709817259f6f0855bb5b4522c042921fd8f9 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 20:29:19 +0200 Subject: [PATCH 041/158] Fixed: FS#3466 - Wrong validator regex for customer number template --- interface/web/admin/form/system_config.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index ce4a0cbfa..c53d02bf3 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -449,7 +449,7 @@ $form["tabs"]['misc'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/', + 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', 'errmsg'=> 'customer_no_template_error_regex'), ), 'default' => '', -- GitLab From 02797b78ce243def0adf008461212a14f7e23d6d Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 20:34:32 +0200 Subject: [PATCH 042/158] Fixed: FS#3478 - Postfix smtpd_recipient_restrictions are ordered incorrectly in default template --- install/tpl/debian_postfix.conf.master | 2 +- install/tpl/fedora_postfix.conf.master | 2 +- install/tpl/gentoo_postfix.conf.master | 2 +- install/tpl/opensuse_postfix.conf.master | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index bab660e10..9ae6c16e6 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -11,7 +11,7 @@ inet_protocols=all smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes -smtpd_recipient_restrictions = check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list} +smtpd_recipient_restrictions = reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated{rbl_list} smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index e2c68c0e1..37248943d 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -8,7 +8,7 @@ virtual_gid_maps = static:{vmail_groupid} smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes -smtpd_recipient_restrictions = check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list} +smtpd_recipient_restrictions = reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated{rbl_list} smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index 90ed2859f..e65f9a689 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -8,7 +8,7 @@ virtual_gid_maps = static:{vmail_groupid} smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes -smtpd_recipient_restrictions = check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list} +smtpd_recipient_restrictions = reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated{rbl_list} smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 149e2bdfd..d4dc87394 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -10,7 +10,7 @@ virtual_gid_maps = static:{vmail_groupid} smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes -smtpd_recipient_restrictions = check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list} +smtpd_recipient_restrictions = reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated{rbl_list} smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert -- GitLab From b5b86263c933557a9869761364b7e4d97f2fe2e5 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 20:59:01 +0200 Subject: [PATCH 043/158] Fixed: FS#3504 - Switching between FastCGI and any other and VHost website issue --- server/plugins-available/apache2_plugin.inc.php | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index bfa435dea..cbda9f67c 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1205,18 +1205,15 @@ class apache2_plugin { } else { //remove the php fastgi starter script if available + $fastcgi_starter_script = $fastcgi_config['fastcgi_starter_script'].($data['old']['type'] == 'vhostsubdomain' ? '_web' . $data['old']['domain_id'] : ''); if ($data['old']['php'] == 'fast-cgi') { $fastcgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $fastcgi_config['fastcgi_starter_path']); $fastcgi_starter_path = str_replace('[client_id]', $client_id, $fastcgi_starter_path); if($data['old']['type'] == 'vhost') { - if (is_dir($fastcgi_starter_path)) { - exec('rm -rf '.$fastcgi_starter_path); - } + if(is_file($fastcgi_starter_script)) @unlink($fastcgi_starter_script); + if (is_dir($fastcgi_starter_path)) @rmdir($fastcgi_starter_path); } else { - $fcgi_starter_script = $fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].'_web' . $data['old']['domain_id']; - if (file_exists($fcgi_starter_script)) { - exec('rm -f '.$fcgi_starter_script); - } + if(is_file($fastcgi_starter_script)) @unlink($fastcgi_starter_script); } } } -- GitLab From 3fb802e577d71b66b9aec5593b687bcd4859581e Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 21:24:15 +0200 Subject: [PATCH 044/158] Fixed: FS#3509 - Apache log directory not unmounted when moving site --- server/plugins-available/apache2_plugin.inc.php | 5 +++++ server/plugins-available/nginx_plugin.inc.php | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index cbda9f67c..addcd138b 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -461,6 +461,9 @@ class apache2_plugin { $app->system->rename($data['new']['document_root'], $data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s')); $app->log('Renaming existing directory in new docroot location. mv '.$data['new']['document_root'].' '.$data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s'), LOGLEVEL_DEBUG); } + + //* Unmount the old log directory bfore we move the log dir + exec('umount '.escapeshellcmd($old_dir.'/log')); //* Create new base directory, if it does not exist yet if(!is_dir($new_dir)) $app->system->mkdirpath($new_dir); @@ -492,6 +495,8 @@ class apache2_plugin { $app->system->removeLine('/etc/fstab', $fstab_line); $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line, $fstab_line, 1, 1); + + exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 1947367c9..d83ecf442 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -465,6 +465,9 @@ class nginx_plugin { $app->system->rename($data['new']['document_root'], $data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s')); $app->log('Renaming existing directory in new docroot location. mv '.$data['new']['document_root'].' '.$data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s'), LOGLEVEL_DEBUG); } + + //* Unmount the old log directory bfore we move the log dir + exec('umount '.escapeshellcmd($old_dir.'/log')); //* Create new base directory, if it does not exist yet if(!is_dir($new_dir)) $app->system->mkdirpath($new_dir); @@ -496,6 +499,8 @@ class nginx_plugin { $app->system->removeLine('/etc/fstab', $fstab_line); $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line, $fstab_line, 1, 1); + + exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); } -- GitLab From ea39b94c5f11f4e2255bce5bde5e6c8d2f1f0a59 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 22:01:11 +0200 Subject: [PATCH 045/158] Fixed: FS#3463 - German: Translation of Proceted Folders user and inconsistency --- interface/web/sites/lib/lang/de_web_folder_list.lng | 1 + interface/web/sites/lib/lang/de_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/en_web_folder_list.lng | 1 + interface/web/sites/lib/lang/en_web_folder_user_list.lng | 1 + 4 files changed, 4 insertions(+) diff --git a/interface/web/sites/lib/lang/de_web_folder_list.lng b/interface/web/sites/lib/lang/de_web_folder_list.lng index 5491202ac..9c85d5182 100644 --- a/interface/web/sites/lib/lang/de_web_folder_list.lng +++ b/interface/web/sites/lib/lang/de_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Aktiv'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Webseite'; $wb['path_txt'] = 'Pfad'; +$wb["add_new_record_txt"] = 'Ordner hinzufügen'; ?> diff --git a/interface/web/sites/lib/lang/de_web_folder_user_list.lng b/interface/web/sites/lib/lang/de_web_folder_user_list.lng index 5357760eb..2db8eb052 100644 --- a/interface/web/sites/lib/lang/de_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/de_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Ordner Benutzer'; $wb['active_txt'] = 'Aktiv'; $wb['web_folder_id_txt'] = 'Ordner'; $wb['username_txt'] = 'Benutzername'; +$wb["add_new_record_txt"] = 'Ordner Benutzer hinzufügen'; ?> diff --git a/interface/web/sites/lib/lang/en_web_folder_list.lng b/interface/web/sites/lib/lang/en_web_folder_list.lng index 32780abda..5966c03e8 100644 --- a/interface/web/sites/lib/lang/en_web_folder_list.lng +++ b/interface/web/sites/lib/lang/en_web_folder_list.lng @@ -4,4 +4,5 @@ $wb["active_txt"] = 'Active'; $wb["server_id_txt"] = 'Server'; $wb["parent_domain_id_txt"] = 'Website'; $wb["path_txt"] = 'Path'; +$wb["add_new_record_txt"] = 'Add new Folder'; ?> \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_web_folder_user_list.lng b/interface/web/sites/lib/lang/en_web_folder_user_list.lng index d0d9e05d1..d0350c9d9 100644 --- a/interface/web/sites/lib/lang/en_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/en_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb["list_head_txt"] = 'Folder User'; $wb["active_txt"] = 'Active'; $wb["web_folder_id_txt"] = 'Folder'; $wb["username_txt"] = 'Username'; +$wb["add_new_record_txt"] = 'Add new Folder User'; ?> \ No newline at end of file -- GitLab From be2cbbed24262e4dcaa9447c8c24fac8e82a7b4f Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sun, 27 Jul 2014 22:24:33 +0200 Subject: [PATCH 046/158] Updated OS version lists. --- install/lib/install.lib.php | 21 +++++++++++++++++++++ server/lib/classes/monitor_tools.inc.php | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 379ae786e..04205ccf4 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -86,6 +86,15 @@ function get_distname() { $mainver = array_filter($mainver); $mainver = current($mainver).'.'.next($mainver); switch ($mainver){ + case "14.04": + $relname = "(Trusty Tahr)"; + break; + case "13.10": + $relname = "(Saucy Salamander)"; + break; + case "13.04": + $relname = "(Raring Ringtail)"; + break; case "12.10": $relname = "(Quantal Quetzal)"; break; @@ -246,6 +255,18 @@ function get_distname() { $distid = 'centos53'; $distbaseid = 'fedora'; swriteln("Operating System: CentOS 5 or compatible\n"); + } elseif(stristr($content, 'CentOS Linux release 6')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distid = 'centos53'; + $distbaseid = 'fedora'; + swriteln("Operating System: CentOS 6 or compatible\n"); + } elseif(stristr($content, 'CentOS Linux release 7')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distid = 'centos53'; + $distbaseid = 'fedora'; + swriteln("Operating System: CentOS 7 or compatible\n"); } else { $distname = 'Redhat'; $distver = 'Unknown'; diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 2170b5ccc..ae1fbd322 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -62,6 +62,15 @@ class monitor_tools { $mainver = array_filter($mainver); $mainver = current($mainver).'.'.next($mainver); switch ($mainver){ + case "14.04": + $relname = "(Trusty Tahr)"; + break; + case "13.10": + $relname = "(Saucy Salamander)"; + break; + case "13.04": + $relname = "(Raring Ringtail)"; + break; case "12.10": $relname = "(Quantal Quetzal)"; break; @@ -201,6 +210,18 @@ class monitor_tools { $distver = '5.3'; $distid = 'centos53'; $distbaseid = 'fedora'; + } elseif(stristr($content, 'CentOS Linux release 6')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distid = 'centos53'; + $distbaseid = 'fedora'; + swriteln("Operating System: CentOS 6 or compatible\n"); + } elseif(stristr($content, 'CentOS Linux release 7')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distid = 'centos53'; + $distbaseid = 'fedora'; + swriteln("Operating System: CentOS 7 or compatible\n"); } else { $distname = 'Redhat'; $distver = 'Unknown'; -- GitLab From efdd1a3ffccc192f08b0fad4112b9eb5789dae01 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Mon, 28 Jul 2014 11:20:02 +0200 Subject: [PATCH 047/158] =?UTF-8?q?Fixed:=20FS#3556=20-=20Der=20in=20Sessi?= =?UTF-8?q?on-Timeout=20eingegebene=20Wert=20wird=20nicht=20durch=20Aktivi?= =?UTF-8?q?t=C3=A4t=20verl=C3=A4ngert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface/lib/app.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index 1d80b8abc..8832f45e1 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -78,16 +78,16 @@ class app { $tmp = $this->ini_parser->parse_ini_string(stripslashes($tmp['config'])); if(!isset($tmp['misc']['session_allow_endless']) || $tmp['misc']['session_allow_endless'] != 'y') { $this->session->set_timeout($sess_timeout); - session_set_cookie_params(($sess_timeout * 60) + 300); // make the cookie live 5 minutes longer + session_set_cookie_params(3600 * 24 * 365); // cookie timeout is never updated, so it must not be short } else { // we are doing login here, so we need to set the session data $this->session->set_permanent(true); $this->session->set_timeout(365 * 24 * 3600); // one year - session_set_cookie_params(365 * 24 * 3600); // make the cookie live 5 minutes longer + session_set_cookie_params(3600 * 24 * 365); // cookie timeout is never updated, so it must not be short } } else { $this->session->set_timeout($sess_timeout); - session_set_cookie_params(($sess_timeout * 60) + 300); // make the cookie live 5 minutes longer + session_set_cookie_params(3600 * 24 * 365); // cookie timeout is never updated, so it must not be short } } else { session_set_cookie_params(0); // until browser is closed -- GitLab From 0b6b84d85eff64352204a178f451bc49a6774b87 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Mon, 28 Jul 2014 19:11:34 +0200 Subject: [PATCH 048/158] Fixed: FS#3580 - Website cannot be modified when subdomain created as website this also fixes a problem with ignored vhost subdomains on validation --- interface/lib/classes/validate_domain.inc.php | 136 ++---------------- 1 file changed, 10 insertions(+), 126 deletions(-) diff --git a/interface/lib/classes/validate_domain.inc.php b/interface/lib/classes/validate_domain.inc.php index 788b34bd6..1280c895c 100644 --- a/interface/lib/classes/validate_domain.inc.php +++ b/interface/lib/classes/validate_domain.inc.php @@ -123,157 +123,41 @@ class validate_domain { } // check if domain has alias/subdomains - if we move a web to another IP, make sure alias/subdomains are checked as well - $aliassubdomains = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE parent_domain_id = ".$app->functions->intval($primary_id)." AND (type = 'alias' OR type = 'subdomain')"); + $aliassubdomains = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE parent_domain_id = ".$app->functions->intval($primary_id)." AND (type = 'alias' OR type = 'subdomain' OR type = 'vhostsubdomain')"); $additional_sql1 = ''; $additional_sql2 = ''; if(is_array($aliassubdomains) && !empty($aliassubdomains)){ foreach($aliassubdomains as $aliassubdomain){ - $additional_sql1 .= " OR `domain` = '".$app->db->quote($aliassubdomain['domain'])."'"; - $additional_sql2 .= " OR CONCAT(`subdomain`, '.', `domain`) = '".$app->db->quote($aliassubdomain['domain'])."'"; + $additional_sql1 .= " OR d.domain = '".$app->db->quote($aliassubdomain['domain'])."'"; + $additional_sql2 .= " OR CONCAT(d.subdomain, '.', d.domain) = '".$app->db->quote($aliassubdomain['domain'])."'"; } } - - //$check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_domain` WHERE `domain` = '" . $app->db->quote($domain_name) . "' AND `domain_id` != " . $app->functions->intval($primary_id)); - //if($check['cnt'] > 0) return false; - - // we can have the same domain on different servers or different IPs, so we have to check for identical domains on the same IP (or wildcard IPs) - $checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (`domain` = '" . $app->db->quote($domain_name) . "'".$additional_sql1.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql1 != '' && $domain['parent_domain_id'] > 0 ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : "")); - + + $qrystr = "SELECT d.domain_id, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ip_address, d.ip_address) as `ip_address`, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ipv6_address, d.ipv6_address) as `ipv6_address` FROM `web_domain` as d LEFT JOIN `web_domain` as p ON (p.domain_id = d.parent_domain_id) WHERE (d.domain = '" . $app->db->quote($domain_name) . "'" . $additional_sql1 . ") AND d.server_id = " . $app->functions->intval($domain['server_id']) . " AND d.domain_id != " . $app->functions->intval($primary_id) . " AND d.parent_domain_id != " . $app->functions->intval($primary_id); + $checks = $app->db->queryAllRecords($qrystr); if(is_array($checks) && !empty($checks)){ foreach($checks as $check){ if($domain['ip_address'] == '*') return false; if($check['ip_address'] == '*') return false; if($domain['ip_address'] != '' && $check['ip_address'] == $domain['ip_address']) return false; if($domain['ipv6_address'] != '' && $check['ipv6_address'] == $domain['ipv6_address']) return false; - // if alias/subdomain: check IP addresses of parent domain - if($check['ip_address'] == '' || $check['ipv6_address'] == ''){ - if($check['parent_domain_id'] > 0){ - $check_parent_domain = $app->db->queryOneRecord("SELECT * FROM `web_domain` WHERE `domain_id` = ".$check['parent_domain_id']); - } - } - - if($domain['ip_address'] == '' && $check['ip_address'] != ''){ - if(is_array($parent_domain) && !empty($parent_domain)){ - if($parent_domain['ip_address'] == '*') return false; - if($parent_domain['ip_address'] != '' && $check['ip_address'] == $parent_domain['ip_address']) return false; - } - } - - if($domain['ip_address'] == '' && $check['ip_address'] == ''){ - if($check['parent_domain_id'] > 0){ - if(is_array($check_parent_domain) && !empty($check_parent_domain)){ - if($check_parent_domain['ip_address'] == '*') return false; - } - } - if(is_array($parent_domain) && !empty($parent_domain)){ - if($parent_domain['ip_address'] == '*') return false; - if($parent_domain['ip_address'] != '' && $check_parent_domain['ip_address'] == $parent_domain['ip_address']) return false; - } - } - - if($check['ip_address'] == '' && $domain['ip_address'] != ''){ - if($check['parent_domain_id'] > 0){ - if(is_array($check_parent_domain) && !empty($check_parent_domain)){ - if($check_parent_domain['ip_address'] == '*') return false; - if($check_parent_domain['ip_address'] != '' && $check_parent_domain['ip_address'] == $domain['ip_address']) return false; - } - } - } - - if($domain['ipv6_address'] == '' && $check['ipv6_address'] != ''){ - if(is_array($parent_domain) && !empty($parent_domain)){ - if($parent_domain['ipv6_address'] != '' && $check['ipv6_address'] == $parent_domain['ipv6_address']) return false; - } - } - - if($domain['ipv6_address'] == '' && $check['ipv6_address'] == ''){ - if(is_array($parent_domain) && !empty($parent_domain)){ - if($parent_domain['ipv6_address'] != '' && $check_parent_domain['ipv6_address'] == $parent_domain['ipv6_address']) return false; - } - } - - if($check['ipv6_address'] == '' && $domain['ipv6_address'] != ''){ - if($check['parent_domain_id'] > 0){ - if(is_array($check_parent_domain) && !empty($check_parent_domain)){ - if($check_parent_domain['ipv6_address'] != '' && $check_parent_domain['ipv6_address'] == $domain['ipv6_address']) return false; - } - } - } } } - - + if($only_domain == false) { - //$check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_domain` WHERE CONCAT(`subdomain`, '.', `domain`) = '" . $app->db->quote($domain_name) . "' AND `domain_id` != " . $app->functions->intval($primary_id)); - //if($check['cnt'] > 0) return false; - // we can have the same domain on different servers or different IPs, so we have to check for identical domains on the same IP (or wildcard IPs) - $checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (CONCAT(`subdomain`, '.', `domain`) = '" . $app->db->quote($domain_name) . "'".$additional_sql2.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql2 != '' && $domain['parent_domain_id'] > 0 ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : "")); + $qrystr = "SELECT d.domain_id, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ip_address, d.ip_address) as `ip_address`, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ipv6_address, d.ipv6_address) as `ipv6_address` FROM `web_domain` as d LEFT JOIN `web_domain` as p ON (p.domain_id = d.parent_domain_id) WHERE (CONCAT(d.subdomain, '.', d.domain)= '" . $app->db->quote($domain_name) . "'" . $additional_sql2 . ") AND d.server_id = " . $app->functions->intval($domain['server_id']) . " AND d.domain_id != " . $app->functions->intval($primary_id) . " AND d.parent_domain_id != " . $app->functions->intval($primary_id); + $checks = $app->db->queryAllRecords($qrystr); if(is_array($checks) && !empty($checks)){ foreach($checks as $check){ if($domain['ip_address'] == '*') return false; if($check['ip_address'] == '*') return false; if($domain['ip_address'] != '' && $check['ip_address'] == $domain['ip_address']) return false; if($domain['ipv6_address'] != '' && $check['ipv6_address'] == $domain['ipv6_address']) return false; - // if alias/subdomain: check IP addresses of parent domain - if($check['ip_address'] == '' || $check['ipv6_address'] == ''){ - if($check['parent_domain_id'] > 0){ - $check_parent_domain = $app->db->queryOneRecord("SELECT * FROM `web_domain` WHERE `domain_id` = ".$app->functions->intval($check['parent_domain_id'])); - } - } - - if($domain['ip_address'] == '' && $check['ip_address'] != ''){ - if(is_array($parent_domain) && !empty($parent_domain)){ - if($parent_domain['ip_address'] == '*') return false; - if($parent_domain['ip_address'] != '' && $check['ip_address'] == $parent_domain['ip_address']) return false; - } - } - - if($domain['ip_address'] == '' && $check['ip_address'] == ''){ - if($check['parent_domain_id'] > 0){ - if(is_array($check_parent_domain) && !empty($check_parent_domain)){ - if($check_parent_domain['ip_address'] == '*') return false; - } - } - if(is_array($parent_domain) && !empty($parent_domain)){ - if($parent_domain['ip_address'] == '*') return false; - if($parent_domain['ip_address'] != '' && $check_parent_domain['ip_address'] == $parent_domain['ip_address']) return false; - } - } - - if($check['ip_address'] == '' && $domain['ip_address'] != ''){ - if($check['parent_domain_id'] > 0){ - if(is_array($check_parent_domain) && !empty($check_parent_domain)){ - if($check_parent_domain['ip_address'] == '*') return false; - if($check_parent_domain['ip_address'] != '' && $check_parent_domain['ip_address'] == $domain['ip_address']) return false; - } - } - } - - if($domain['ipv6_address'] == '' && $check['ipv6_address'] != ''){ - if(is_array($parent_domain) && !empty($parent_domain)){ - if($parent_domain['ipv6_address'] != '' && $check['ipv6_address'] == $parent_domain['ipv6_address']) return false; - } - } - - if($domain['ipv6_address'] == '' && $check['ipv6_address'] == ''){ - if(is_array($parent_domain) && !empty($parent_domain)){ - if($parent_domain['ipv6_address'] != '' && $check_parent_domain['ipv6_address'] == $parent_domain['ipv6_address']) return false; - } - } - - if($check['ipv6_address'] == '' && $domain['ipv6_address'] != ''){ - if($check['parent_domain_id'] > 0){ - if(is_array($check_parent_domain) && !empty($check_parent_domain)){ - if($check_parent_domain['ipv6_address'] != '' && $check_parent_domain['ipv6_address'] == $domain['ipv6_address']) return false; - } - } - } } } - } - + return true; } -- GitLab From 31895e66273668a589655be7f05f2d44e2b5404e Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Mon, 28 Jul 2014 19:29:19 +0200 Subject: [PATCH 049/158] - fixes previous commit --- interface/lib/classes/validate_domain.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/validate_domain.inc.php b/interface/lib/classes/validate_domain.inc.php index 1280c895c..d92de9b94 100644 --- a/interface/lib/classes/validate_domain.inc.php +++ b/interface/lib/classes/validate_domain.inc.php @@ -134,7 +134,7 @@ class validate_domain { } - $qrystr = "SELECT d.domain_id, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ip_address, d.ip_address) as `ip_address`, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ipv6_address, d.ipv6_address) as `ipv6_address` FROM `web_domain` as d LEFT JOIN `web_domain` as p ON (p.domain_id = d.parent_domain_id) WHERE (d.domain = '" . $app->db->quote($domain_name) . "'" . $additional_sql1 . ") AND d.server_id = " . $app->functions->intval($domain['server_id']) . " AND d.domain_id != " . $app->functions->intval($primary_id) . " AND d.parent_domain_id != " . $app->functions->intval($primary_id); + $qrystr = "SELECT d.domain_id, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ip_address, d.ip_address) as `ip_address`, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ipv6_address, d.ipv6_address) as `ipv6_address` FROM `web_domain` as d LEFT JOIN `web_domain` as p ON (p.domain_id = d.parent_domain_id) WHERE (d.domain = '" . $app->db->quote($domain_name) . "'" . $additional_sql1 . ") AND d.server_id = " . $app->functions->intval($domain['server_id']) . " AND d.domain_id != " . $app->functions->intval($primary_id) . ($primary_id ? " AND d.parent_domain_id != " . $app->functions->intval($primary_id) : ""); $checks = $app->db->queryAllRecords($qrystr); if(is_array($checks) && !empty($checks)){ foreach($checks as $check){ @@ -146,7 +146,7 @@ class validate_domain { } if($only_domain == false) { - $qrystr = "SELECT d.domain_id, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ip_address, d.ip_address) as `ip_address`, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ipv6_address, d.ipv6_address) as `ipv6_address` FROM `web_domain` as d LEFT JOIN `web_domain` as p ON (p.domain_id = d.parent_domain_id) WHERE (CONCAT(d.subdomain, '.', d.domain)= '" . $app->db->quote($domain_name) . "'" . $additional_sql2 . ") AND d.server_id = " . $app->functions->intval($domain['server_id']) . " AND d.domain_id != " . $app->functions->intval($primary_id) . " AND d.parent_domain_id != " . $app->functions->intval($primary_id); + $qrystr = "SELECT d.domain_id, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ip_address, d.ip_address) as `ip_address`, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ipv6_address, d.ipv6_address) as `ipv6_address` FROM `web_domain` as d LEFT JOIN `web_domain` as p ON (p.domain_id = d.parent_domain_id) WHERE (CONCAT(d.subdomain, '.', d.domain)= '" . $app->db->quote($domain_name) . "'" . $additional_sql2 . ") AND d.server_id = " . $app->functions->intval($domain['server_id']) . " AND d.domain_id != " . $app->functions->intval($primary_id) . ($primary_id ? " AND d.parent_domain_id != " . $app->functions->intval($primary_id) : ""); $checks = $app->db->queryAllRecords($qrystr); if(is_array($checks) && !empty($checks)){ foreach($checks as $check){ -- GitLab From 5742e4c99f53f9dbbcc962e9f967a4c377c209b9 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Tue, 29 Jul 2014 08:46:41 +0200 Subject: [PATCH 050/158] Fixed: FS#3581 - Website unaccessible under some circumstances when using seo redirection *.domain to www.domain (only for apache2, nginx still to do) --- server/conf/vhost.conf.master | 2 ++ server/plugins-available/apache2_plugin.inc.php | 2 ++ server/plugins-available/nginx_plugin.inc.php | 2 ++ 3 files changed, 6 insertions(+) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 96b344338..c2af3edee 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -339,10 +339,12 @@ RewriteEngine on + RewriteCond %{HTTP_HOST} $ [NC] RewriteCond %{HTTP_HOST} ^$ [NC] RewriteRule ^(.*)$ https://$1 [R=301,L] + RewriteCond %{HTTP_HOST} $ [NC] RewriteCond %{HTTP_HOST} ^$ [NC] RewriteRule ^(.*)$ https://$1 [R=301,L] diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index addcd138b..525592dac 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -2951,6 +2951,8 @@ class apache2_plugin { $seo_redirects[$prefix.'seo_redirect_target_domain'] = $web['domain']; $seo_redirects[$prefix.'seo_redirect_operator'] = '!'; } + + $seo_redirects[$prefix.'seo_base_domain'] = str_replace('.', '\.', $web['domain']); return $seo_redirects; } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index d83ecf442..408a76bca 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2842,6 +2842,8 @@ class nginx_plugin { $seo_redirects[$prefix.'seo_redirect_operator'] = '!='; } } + + $seo_redirects[$prefix.'seo_base_domain'] = str_replace('.', '\.', $web['domain']); return $seo_redirects; } -- GitLab From 0b77531b9479a069753e9e25a5f3e8ec74204607 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Tue, 29 Jul 2014 10:43:38 +0200 Subject: [PATCH 051/158] Revert "Fixed: FS#3581 - Website unaccessible under some circumstances when using seo redirection *.domain to www.domain" This reverts commit 5742e4c99f53f9dbbcc962e9f967a4c377c209b9. --- server/conf/vhost.conf.master | 2 -- server/plugins-available/apache2_plugin.inc.php | 2 -- server/plugins-available/nginx_plugin.inc.php | 2 -- 3 files changed, 6 deletions(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index c2af3edee..96b344338 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -339,12 +339,10 @@ RewriteEngine on - RewriteCond %{HTTP_HOST} $ [NC] RewriteCond %{HTTP_HOST} ^$ [NC] RewriteRule ^(.*)$ https://$1 [R=301,L] - RewriteCond %{HTTP_HOST} $ [NC] RewriteCond %{HTTP_HOST} ^$ [NC] RewriteRule ^(.*)$ https://$1 [R=301,L] diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 525592dac..addcd138b 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -2951,8 +2951,6 @@ class apache2_plugin { $seo_redirects[$prefix.'seo_redirect_target_domain'] = $web['domain']; $seo_redirects[$prefix.'seo_redirect_operator'] = '!'; } - - $seo_redirects[$prefix.'seo_base_domain'] = str_replace('.', '\.', $web['domain']); return $seo_redirects; } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 408a76bca..d83ecf442 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2842,8 +2842,6 @@ class nginx_plugin { $seo_redirects[$prefix.'seo_redirect_operator'] = '!='; } } - - $seo_redirects[$prefix.'seo_base_domain'] = str_replace('.', '\.', $web['domain']); return $seo_redirects; } -- GitLab From 061d7c84c49b9e63c311123f52a142fc66b4228f Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 29 Jul 2014 16:59:19 +0200 Subject: [PATCH 052/158] Removed backup_dir_mount_cmd option from Sysstem > server config. The option has been replaced by a script /usr/local/ispconfig/server/scripts/backup_dir_mount.sh. If this script exists, is exacutable and is owned by the root user, then it will be executed upfront of the backup jobs when the option "Backup directory is a mount?" is enabled in server config settings. --- install/tpl/server.ini.master | 1 - interface/web/admin/form/server_config.tform.php | 8 -------- interface/web/admin/lib/lang/en_server_config.lng | 1 - .../web/admin/templates/server_config_server_edit.htm | 4 ---- server/cron_daily.php | 10 +++++++--- 5 files changed, 7 insertions(+), 17 deletions(-) diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index dcac5808c..8af63c3f2 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -16,7 +16,6 @@ loglevel=2 admin_notify_events=1 backup_dir=/var/backup backup_dir_is_mount=n -backup_dir_mount_cmd= backup_mode=rootgz monit_url= monit_user= diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index e115c8b92..71de54e95 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -177,14 +177,6 @@ $form["tabs"]['server'] = array( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), - 'backup_dir_mount_cmd' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), 'backup_mode' => array( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 3dc1d0afd..63027c733 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -189,6 +189,5 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; ?> diff --git a/interface/web/admin/templates/server_config_server_edit.htm b/interface/web/admin/templates/server_config_server_edit.htm index d9b703ae2..e5034e6aa 100644 --- a/interface/web/admin/templates/server_config_server_edit.htm +++ b/interface/web/admin/templates/server_config_server_edit.htm @@ -64,10 +64,6 @@
{tmpl_var name='backup_dir_is_mount'}
- -
- -
diff --git a/server/cron_daily.php b/server/cron_daily.php index 75459be20..ee54a4620 100644 --- a/server/cron_daily.php +++ b/server/cron_daily.php @@ -1104,10 +1104,14 @@ if($backup_dir != '') { //* mount backup directory, if necessary $run_backups = true; - $server_config['backup_dir_mount_cmd'] = trim($server_config['backup_dir_mount_cmd']); - if($server_config['backup_dir_is_mount'] == 'y' && $server_config['backup_dir_mount_cmd'] != ''){ + $backup_dir_mount_cmd = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh'; + if( $server_config['backup_dir_is_mount'] == 'y' && + is_file($backup_dir_mount_cmd) && + is_executable($backup_dir_mount_cmd) && + fileowner($backup_dir_mount_cmd) === 0 + ){ if(!$app->system->is_mounted($backup_dir)){ - exec(escapeshellcmd($server_config['backup_dir_mount_cmd'])); + exec($backup_dir_mount_cmd); sleep(1); if(!$app->system->is_mounted($backup_dir)) $run_backups = false; } -- GitLab From 64ea56164ad8f0f2cee5676f84d2d8f064e986e1 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Tue, 29 Jul 2014 17:55:13 +0200 Subject: [PATCH 053/158] Improved input validation --- interface/lib/classes/functions.inc.php | 18 +++++++++++++ interface/web/sites/web_domain_edit.php | 4 ++- server/lib/classes/system.inc.php | 26 ++++++++++++++++++- .../plugins-available/apache2_plugin.inc.php | 3 ++- .../cron_jailkit_plugin.inc.php | 14 +++++++--- server/plugins-available/cron_plugin.inc.php | 9 ++++--- server/plugins-available/nginx_plugin.inc.php | 5 +++- .../shelluser_base_plugin.inc.php | 14 ++++++++++ .../shelluser_jailkit_plugin.inc.php | 14 ++++++++++ 9 files changed, 96 insertions(+), 11 deletions(-) diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index 5f62f52ec..ddee8da9f 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -424,6 +424,24 @@ class functions { return implode("\n", $domains); } + public function is_allowed_user($username, $restrict_names = false) { + global $app; + + if($username == 'root') return false; + if($restrict_names == true && preg_match('/^web\d+$/', $username) == false) return false; + + return true; + } + + public function is_allowed_group($groupname, $restrict_names = false) { + global $app; + + if($groupname == 'root') return false; + if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; + + return true; + } + } ?> diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index 8edfffafb..1208e48a1 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -607,9 +607,11 @@ class page_action extends tform_actions { // When the record is updated if($this->id > 0) { // restore the server ID if the user is not admin and record is edited - $tmp = $app->db->queryOneRecord("SELECT server_id, `cgi`, `ssi`, `perl`, `ruby`, `python`, `suexec`, `errordocs`, `subdomain`, `ssl` FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id)); + $tmp = $app->db->queryOneRecord("SELECT server_id, `system_user`, `system_group`, `cgi`, `ssi`, `perl`, `ruby`, `python`, `suexec`, `errordocs`, `subdomain`, `ssl` FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id)); $this->dataRecord["server_id"] = $tmp["server_id"]; + $this->dataRecord['system_user'] = $tmp['system_user']; + $this->dataRecord['system_group'] = $tmp['system_group']; // set the settings to current if not provided (or cleared due to limits) if($this->dataRecord['cgi'] == 'n') $this->dataRecord['cgi'] = $tmp['cgi']; if($this->dataRecord['ssi'] == 'n') $this->dataRecord['ssi'] = $tmp['ssi']; diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index d9d85e5a3..049eb618c 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -34,7 +34,9 @@ class system{ var $server_id; var $server_conf; var $data; - + var $min_uid = 500; + var $min_gid = 500; + /** * Construct for this class * @@ -1816,6 +1818,28 @@ class system{ return true; } + public function is_allowed_user($username, $check_id = true, $restrict_names = false) { + global $app; + + if($username == 'root') return false; + if($check_id && intval($this->getuid($username)) < $this->min_uid) return false; + + if($restrict_names == true && preg_match('/^web\d+$/', $username) == false) return false; + + return true; + } + + public function is_allowed_group($groupname, $restrict_names = false) { + global $app; + + if($groupname == 'root') return false; + if(intval($this->getgid($groupname)) < $this->min_gid) return false; + + if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; + + return true; + } + } ?> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index addcd138b..b1411c9f0 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -344,7 +344,8 @@ class apache2_plugin { if($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain') $app->log('document_root not set', LOGLEVEL_WARN); return 0; } - if($data['new']['system_user'] == 'root' or $data['new']['system_group'] == 'root') { + if(!$app->system->is_allowed_user($data['new']['system_user'], false, true) + || !$app->system->is_allowed_group($data['new']['system_group'], false, true)) { $app->log('Websites cannot be owned by the root user or group.', LOGLEVEL_WARN); return 0; } diff --git a/server/plugins-available/cron_jailkit_plugin.inc.php b/server/plugins-available/cron_jailkit_plugin.inc.php index c3bd5b749..4c95b83c2 100644 --- a/server/plugins-available/cron_jailkit_plugin.inc.php +++ b/server/plugins-available/cron_jailkit_plugin.inc.php @@ -80,11 +80,15 @@ class cron_jailkit_plugin { if(!$parent_domain["domain_id"]) { $app->log("Parent domain not found", LOGLEVEL_WARN); return 0; - } elseif($parent_domain["system_user"] == 'root' or $parent_domain["system_group"] == 'root') { + } + + if(!$app->system->is_allowed_user($parent_domain['system_user'], true, true) + || !$app->system->is_allowed_group($parent_domain['system_group'], true, true)) { $app->log("Websites (and Crons) cannot be owned by the root user or group.", LOGLEVEL_WARN); - return 0; + return false; } + $this->parent_domain = $parent_domain; $app->uses('system'); @@ -155,9 +159,11 @@ class cron_jailkit_plugin { if(!$parent_domain["domain_id"]) { $app->log("Parent domain not found", LOGLEVEL_WARN); return 0; - } elseif($parent_domain["system_user"] == 'root' or $parent_domain["system_group"] == 'root') { + } + if(!$app->system->is_allowed_user($parent_domain['system_user'], true, true) + || !$app->system->is_allowed_group($parent_domain['system_group'], true, true)) { $app->log("Websites (and Crons) cannot be owned by the root user or group.", LOGLEVEL_WARN); - return 0; + return false; } $app->uses('system'); diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index fe00713ec..7f8070d78 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -96,11 +96,14 @@ class cron_plugin { if(!$parent_domain["domain_id"]) { $app->log("Parent domain not found", LOGLEVEL_WARN); return 0; - } elseif($parent_domain["system_user"] == 'root' or $parent_domain["system_group"] == 'root') { - $app->log("Websites (and Crons) cannot be owned by the root user or group.", LOGLEVEL_WARN); - return 0; } + if(!$app->system->is_allowed_user($parent_domain['system_user'], true, true) + || !$app->system->is_allowed_group($parent_domain['system_group'], true, true)) { + $app->log("Websites (and Crons) cannot be owned by the root user or group.", LOGLEVEL_WARN); + return false; + } + // Get the client ID $client = $app->dbmaster->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ".intval($data["new"]["sys_groupid"])); $client_id = intval($client["client_id"]); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index d83ecf442..2837e0eb9 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -351,10 +351,13 @@ class nginx_plugin { if($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain') $app->log('document_root not set', LOGLEVEL_WARN); return 0; } - if($data['new']['system_user'] == 'root' or $data['new']['system_group'] == 'root') { + + if(!$app->system->is_allowed_user($data['new']['system_user'], false, true) + || !$app->system->is_allowed_group($data['new']['system_group'], false, true)) { $app->log('Websites cannot be owned by the root user or group.', LOGLEVEL_WARN); return 0; } + if(trim($data['new']['domain']) == '') { $app->log('domain is empty', LOGLEVEL_WARN); return 0; diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 0ceced99d..e33162413 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -82,6 +82,13 @@ class shelluser_base_plugin { $app->log('Directory of the shell user is not valid.',LOGLEVEL_WARN); return false; } + + if(!$app->system->is_allowed_user($data['new']['username'], false, false) + || !$app->system->is_allowed_user($data['new']['puser'], true, true) + || !$app->system->is_allowed_group($data['new']['pgroup'], true, true)) { + $app->log('Shell user must not be root or in group root.',LOGLEVEL_WARN); + return false; + } if($app->system->is_user($data['new']['puser'])) { @@ -151,6 +158,13 @@ class shelluser_base_plugin { return false; } + if(!$app->system->is_allowed_user($data['new']['username'], false, false) + || !$app->system->is_allowed_user($data['new']['puser'], true, true) + || !$app->system->is_allowed_group($data['new']['pgroup'], true, true)) { + $app->log('Shell user must not be root or in group root.',LOGLEVEL_WARN); + return false; + } + if($app->system->is_user($data['new']['puser'])) { // Get the UID of the parent user $uid = intval($app->system->getuid($data['new']['puser'])); diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index 90ed6777f..9cf6fc89d 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -74,6 +74,13 @@ class shelluser_jailkit_plugin { $app->uses('system'); $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$data['new']['parent_domain_id']); + if(!$app->system->is_allowed_user($data['new']['username'], false, false) + || !$app->system->is_allowed_user($data['new']['puser'], true, true) + || !$app->system->is_allowed_group($data['new']['pgroup'], true, true)) { + $app->log('Shell user must not be root or in group root.',LOGLEVEL_WARN); + return false; + } + if($app->system->is_user($data['new']['puser'])) { // Get the UID of the parent user $uid = intval($app->system->getuid($data['new']['puser'])); @@ -139,6 +146,13 @@ class shelluser_jailkit_plugin { $app->uses('system'); $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$data['new']['parent_domain_id']); + if(!$app->system->is_allowed_user($data['new']['username'], false, false) + || !$app->system->is_allowed_user($data['new']['puser'], true, true) + || !$app->system->is_allowed_group($data['new']['pgroup'], true, true)) { + $app->log('Shell user must not be root or in group root.',LOGLEVEL_WARN); + return false; + } + if($app->system->is_user($data['new']['puser'])) { // Get the UID of the parent user $uid = intval($app->system->getuid($data['new']['puser'])); -- GitLab From a43eb3b0ccaf84a6ab44a1f46f47cc4f8ce54844 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 29 Jul 2014 20:39:09 +0200 Subject: [PATCH 054/158] Implemented: FS#3568 - Configure server hostname trough ISPConfig --- .../web/admin/form/server_config.tform.php | 7 ++- .../web/admin/lib/lang/en_server_config.lng | 1 + .../network_settings_plugin.inc.php | 51 ++++++++++++++++++- 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 71de54e95..4fa71790c 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -126,8 +126,11 @@ $form["tabs"]['server'] = array( 2 => array( 'event' => 'SAVE', 'type' => 'TOLOWER') ), - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'hostname_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'hostname_error_empty'), + 1 => array ('type' => 'REGEX', + 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/', + 'errmsg'=> 'hostname_error_regex'), ), 'value' => '', 'width' => '40', diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 63027c733..5ce704d9e 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -49,6 +49,7 @@ $wb["ip_address_error_wrong"] = 'Invalid IP address format.'; $wb["netmask_error_wrong"] = 'Invalid Netmask format.'; $wb["gateway_error_wrong"] = 'Invalid Gateway format.'; $wb["hostname_error_empty"] = 'Hostname is empty.'; +$wb["hostname_error_regex"] = 'Invalid Hostname.'; $wb["nameservers_error_empty"] = 'Nameserver is empty.'; $wb["config_dir_txt"] = 'Config directory'; $wb["init_script_txt"] = 'Cron init script name'; diff --git a/server/plugins-available/network_settings_plugin.inc.php b/server/plugins-available/network_settings_plugin.inc.php index 56e4980fe..46242d984 100644 --- a/server/plugins-available/network_settings_plugin.inc.php +++ b/server/plugins-available/network_settings_plugin.inc.php @@ -243,12 +243,61 @@ class network_settings_plugin { } else { if($data['mirrored'] == true) { - $app->log('Skipping network config request. IP addresses from amster are not configured on the mirror.', LOGLEVEL_DEBUG); + $app->log('Skipping network config request. IP addresses from master are not configured on the mirror.', LOGLEVEL_DEBUG); } if($server_config['auto_network_configuration'] == 'n') { $app->log('Network configuration disabled in server settings.', LOGLEVEL_DEBUG); } } + + //* Configure hostname + if($event_name == 'server_update' && $data['mirrored'] == false) { + + //* get old server config + $tmp = $app->ini_parser->parse_ini_string(stripslashes($data['old']['config'])); + $old_server_config = $tmp['server']; + unset($tmp); + + $new_hostname = trim($server_config['hostname']); + $old_hostname = trim($old_server_config['hostname']); + + if($new_hostname != '' && $old_hostname != $new_hostname) { + + if(is_file('/etc/hostname')) { + $app->system->file_put_contents('/etc/hostname',$new_hostname); + $app->log('Changed /etc/hostname to '.$new_hostname, LOGLEVEL_DEBUG); + } + + if(is_file('/etc/mailname')) { + $app->system->file_put_contents('/etc/mailname',$new_hostname); + $app->log('Changed /etc/mailname to '.$new_hostname, LOGLEVEL_DEBUG); + } + + $postconf_commands = array( + 'myhostname = '.$new_hostname, + 'mydestination = '.$new_hostname.', localhost, localhost.localdomain' + ); + + //* Executing the postconf commands + foreach($postconf_commands as $cmd) { + $command = "postconf -e '$cmd'"; + exec($command); + } + + $app->log('Changed changed myhostname and mydestination in postfix main.cf to '.$new_hostname, LOGLEVEL_DEBUG); + + //* change /etc/hosts + $hosts = file_get_contents('/etc/hosts'); + $hosts = str_replace($old_hostname,$new_hostname,$hosts); + $app->system->file_put_contents('/etc/hosts',$hosts); + + exec($app->system->getinitcommand('postfix', 'restart').' 2>&1'); + exec($app->system->getinitcommand('networking', 'restart').' 2>&1'); + + } + + } + } -- GitLab From 0b786c8a2efe117ed9357a6d6836f123cb4911c6 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 29 Jul 2014 20:42:01 +0200 Subject: [PATCH 055/158] Fixed: FS#3584 - Misspelling in Postfix Whitelist --- interface/web/mail/form/mail_whitelist.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/mail/form/mail_whitelist.tform.php b/interface/web/mail/form/mail_whitelist.tform.php index 3edb132df..aebcfe6cf 100644 --- a/interface/web/mail/form/mail_whitelist.tform.php +++ b/interface/web/mail/form/mail_whitelist.tform.php @@ -51,7 +51,7 @@ $form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, $form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete $form["tabs"]['whitelist'] = array ( - 'title' => "Witelist", + 'title' => "Whitelist", 'width' => 100, 'template' => "templates/mail_whitelist_edit.htm", 'fields' => array ( -- GitLab From 032b867c6a157f2a3a9be733a320e4a8259dfea2 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Wed, 30 Jul 2014 08:28:04 +0200 Subject: [PATCH 056/158] Fixed: FS#3555 - dovecot-sql.conf: add server_id --- install/dist/lib/debian60.lib.php | 1 + install/dist/lib/fedora.lib.php | 1 + install/dist/lib/opensuse.lib.php | 1 + install/lib/installer_base.lib.php | 1 + install/tpl/debian6_dovecot-sql.conf.master | 4 ++-- install/tpl/debian_dovecot-sql.conf.master | 4 ++-- install/tpl/fedora_dovecot-sql.conf.master | 4 ++-- install/tpl/opensuse_dovecot-sql.conf.master | 4 ++-- 8 files changed, 12 insertions(+), 8 deletions(-) diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index 42da878c3..49327239d 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -111,6 +111,7 @@ class installer extends installer_base { $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content); $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content); $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content); + $content = str_replace('{server_id}', $conf['server_id'], $content); wf($config_dir.'/'.$configfile, $content); chmod($config_dir.'/'.$configfile, 0600); diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index d3efe6022..7a08f93f1 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -450,6 +450,7 @@ class installer_dist extends installer_base { $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content); $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content); $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content); + $content = str_replace('{server_id}', $conf['server_id'], $content); wf("$config_dir/$configfile", $content); exec("chmod 600 $config_dir/$configfile"); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index caef5409a..f990e9196 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -499,6 +499,7 @@ class installer_dist extends installer_base { $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content); $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content); $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content); + $content = str_replace('{server_id}', $conf['server_id'], $content); wf("$config_dir/$configfile", $content); exec("chmod 600 $config_dir/$configfile"); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 2cd48a079..548cf9382 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1015,6 +1015,7 @@ class installer_base { $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content); $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content); $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content); + $content = str_replace('{server_id}', $conf['server_id'], $content); wf($config_dir.'/'.$configfile, $content); chmod($config_dir.'/'.$configfile, 0600); diff --git a/install/tpl/debian6_dovecot-sql.conf.master b/install/tpl/debian6_dovecot-sql.conf.master index 86eb4df6f..61f86c4cf 100644 --- a/install/tpl/debian6_dovecot-sql.conf.master +++ b/install/tpl/debian6_dovecot-sql.conf.master @@ -13,8 +13,8 @@ driver = mysql connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password} default_pass_scheme = CRYPT -password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' -user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' +password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' AND server_id = '{server_id}' +user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' # The iterate_query is required for the doveadm command only and works only on dovecot 2 servers. # Do not enable it on Dovecot 1.x servers diff --git a/install/tpl/debian_dovecot-sql.conf.master b/install/tpl/debian_dovecot-sql.conf.master index 9c55df358..a4d5bbd95 100644 --- a/install/tpl/debian_dovecot-sql.conf.master +++ b/install/tpl/debian_dovecot-sql.conf.master @@ -120,8 +120,8 @@ driver = mysql connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password} default_pass_scheme = CRYPT -password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' -user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' +password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' AND server_id = '{server_id}' +user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' AND server_id = '{server_id}' # The iterate_query is required for the doveadm command only and works only on dovecot 2 servers. # Do not enable it on Dovecot 1.x servers diff --git a/install/tpl/fedora_dovecot-sql.conf.master b/install/tpl/fedora_dovecot-sql.conf.master index faf3be286..769e0a4a0 100644 --- a/install/tpl/fedora_dovecot-sql.conf.master +++ b/install/tpl/fedora_dovecot-sql.conf.master @@ -133,8 +133,8 @@ driver = mysql connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password} default_pass_scheme = CRYPT -password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' -user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' +password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' AND server_id = '{server_id}' +user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' # The iterate_query is required for the doveadm command only and works only on dovecot 2 servers. # Do not enable it on Dovecot 1.x servers diff --git a/install/tpl/opensuse_dovecot-sql.conf.master b/install/tpl/opensuse_dovecot-sql.conf.master index e33603a1c..57515afe8 100644 --- a/install/tpl/opensuse_dovecot-sql.conf.master +++ b/install/tpl/opensuse_dovecot-sql.conf.master @@ -133,8 +133,8 @@ driver = mysql connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password} default_pass_scheme = CRYPT -password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' -user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' +password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' AND server_id = '{server_id}' +user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' # The iterate_query is required for the doveadm command only and works only on dovecot 2 servers. # Do not enable it on Dovecot 1.x servers -- GitLab From 4ef653ec2d9e6b4bff7241effc447cec2a00e074 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 31 Jul 2014 20:00:06 +0200 Subject: [PATCH 057/158] Corrected commit for: FS#3478 - Postfix smtpd_recipient_restrictions are ordered incorrectly in default template --- install/tpl/debian_postfix.conf.master | 2 +- install/tpl/fedora_postfix.conf.master | 2 +- install/tpl/gentoo_postfix.conf.master | 2 +- install/tpl/opensuse_postfix.conf.master | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index 9ae6c16e6..4775002b6 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -11,7 +11,7 @@ inet_protocols=all smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes -smtpd_recipient_restrictions = reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated{rbl_list} +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list} smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 37248943d..330b1f95f 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -8,7 +8,7 @@ virtual_gid_maps = static:{vmail_groupid} smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes -smtpd_recipient_restrictions = reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated{rbl_list} +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list} smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index e65f9a689..a775c4b03 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -8,7 +8,7 @@ virtual_gid_maps = static:{vmail_groupid} smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes -smtpd_recipient_restrictions = reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated{rbl_list} +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list} smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index d4dc87394..7baa703ed 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -10,7 +10,7 @@ virtual_gid_maps = static:{vmail_groupid} smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes -smtpd_recipient_restrictions = reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf, permit_mynetworks, permit_sasl_authenticated{rbl_list} +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list} smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert -- GitLab From f2fc77f29ce81b6493ab629e0f8f9da2b3df857d Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 31 Jul 2014 21:46:18 +0200 Subject: [PATCH 058/158] Improved input validation. --- interface/lib/classes/functions.inc.php | 12 ++++++++++-- interface/web/sites/form/ftp_user.tform.php | 5 ++++- interface/web/sites/form/shell_user.tform.php | 13 +++++++++++-- interface/web/sites/ftp_user_edit.php | 13 +++++++++++++ interface/web/sites/lib/lang/en_ftp_user.lng | 2 ++ interface/web/sites/lib/lang/en_shell_user.lng | 3 +++ interface/web/sites/shell_user_edit.php | 14 ++++++++++++++ server/lib/classes/system.inc.php | 12 ++++++++++-- 8 files changed, 67 insertions(+), 7 deletions(-) diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index ddee8da9f..29feffde7 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -427,7 +427,11 @@ class functions { public function is_allowed_user($username, $restrict_names = false) { global $app; - if($username == 'root') return false; + $name_blacklist = array('root','ispconfig','vmail','getmail'); + if(in_array($username,$name_blacklist)) return false; + + if(preg_match('/^[\w\.\-]{0,32}$/', $username) == false) return false; + if($restrict_names == true && preg_match('/^web\d+$/', $username) == false) return false; return true; @@ -436,7 +440,11 @@ class functions { public function is_allowed_group($groupname, $restrict_names = false) { global $app; - if($groupname == 'root') return false; + $name_blacklist = array('root','ispconfig','vmail','getmail'); + if(in_array($groupname,$name_blacklist)) return false; + + if(preg_match('/^[\w\.\-]{0,32}$/', $groupname) == false) return false; + if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; return true; diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php index 2b97832be..f328f7fdb 100644 --- a/interface/web/sites/form/ftp_user.tform.php +++ b/interface/web/sites/form/ftp_user.tform.php @@ -187,7 +187,10 @@ if($app->auth->is_admin()) { 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'directory_error_empty'), + 'errmsg'=> 'directory_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\ \.\-\_\/]{10,128}$/', + 'errmsg'=> 'directory_error_regex'), ), 'default' => '', 'value' => '', diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php index ab7cef1bf..d8df458aa 100644 --- a/interface/web/sites/form/shell_user.tform.php +++ b/interface/web/sites/form/shell_user.tform.php @@ -197,6 +197,12 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'shell' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'shell_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\/]{5,20}$/', + 'errmsg'=> 'shell_error_regex'), + ), 'default' => '/bin/bash', 'value' => '', 'width' => '30', @@ -205,8 +211,11 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'dir' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'directory_error_empty'), + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'directory_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\ \.\-\_\/]{10,128}$/', + 'errmsg'=> 'directory_error_regex'), ), 'default' => '', 'value' => '', diff --git a/interface/web/sites/ftp_user_edit.php b/interface/web/sites/ftp_user_edit.php index 034620168..edf47a38d 100644 --- a/interface/web/sites/ftp_user_edit.php +++ b/interface/web/sites/ftp_user_edit.php @@ -138,6 +138,11 @@ class page_action extends tform_actions { $dir = $app->db->quote($web["document_root"]); $uid = $app->db->quote($web["system_user"]); $gid = $app->db->quote($web["system_group"]); + + // Check system user and group + if($app->functions->is_allowed_user($uid) == false || $app->functions->is_allowed_group($gid) == false) { + $app->error('Invalid system user or group'); + } // The FTP user shall be owned by the same group then the website $sys_groupid = $app->functions->intval($web['sys_groupid']); @@ -148,7 +153,15 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf, $interfaceConf; + + // Check system user and group + if(isset($this->dataRecord['uid'])) { + if($app->functions->is_allowed_user(strtolower($this->dataRecord['uid']),true) == false || $app->functions->is_allowed_group(strtolower($this->dataRecord['gid']),true) == false) { + $app->tform->errorMessage .= $app->tform->lng('invalid_system_user_or_group_txt'); + } + } + /* * If the names should be restricted -> do it! */ diff --git a/interface/web/sites/lib/lang/en_ftp_user.lng b/interface/web/sites/lib/lang/en_ftp_user.lng index ed5fe0287..2c8e2a986 100644 --- a/interface/web/sites/lib/lang/en_ftp_user.lng +++ b/interface/web/sites/lib/lang/en_ftp_user.lng @@ -32,4 +32,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/en_shell_user.lng b/interface/web/sites/lib/lang/en_shell_user.lng index c15d1b56d..2ae9b4e6a 100644 --- a/interface/web/sites/lib/lang/en_shell_user.lng +++ b/interface/web/sites/lib/lang/en_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php index 3c72a5f84..9731889b7 100644 --- a/interface/web/sites/shell_user_edit.php +++ b/interface/web/sites/shell_user_edit.php @@ -135,6 +135,8 @@ class page_action extends tform_actions { } } unset($blacklist); + + if($app->functions->is_allowed_user(trim(strtolower($this->dataRecord['username']))) == false) $app->tform->errorMessage .= $app->tform->lng('username_not_allowed_txt'); /* * If the names should be restricted -> do it! @@ -163,6 +165,11 @@ class page_action extends tform_actions { $dir = $app->db->quote($web["document_root"]); $uid = $app->db->quote($web["system_user"]); $gid = $app->db->quote($web["system_group"]); + + // Check system user and group + if($app->functions->is_allowed_user($uid) == false || $app->functions->is_allowed_group($gid) == false) { + $app->error($app->tform->lng('invalid_system_user_or_group_txt')); + } // The FTP user shall be owned by the same group then the website $sys_groupid = $app->functions->intval($web['sys_groupid']); @@ -183,6 +190,13 @@ class page_action extends tform_actions { } } unset($blacklist); + + // Check system user and group + if(isset($this->dataRecord['puser'])) { + if($app->functions->is_allowed_user(strtolower($this->dataRecord['puser']),true) == false || $app->functions->is_allowed_group(strtolower($this->dataRecord['pgroup']),true) == false) { + $app->tform->errorMessage .= $app->tform->lng('invalid_system_user_or_group_txt'); + } + } /* * If the names should be restricted -> do it! diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 049eb618c..3001c6459 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1821,7 +1821,11 @@ class system{ public function is_allowed_user($username, $check_id = true, $restrict_names = false) { global $app; - if($username == 'root') return false; + $name_blacklist = array('root','ispconfig','vmail','getmail'); + if(in_array($username,$name_blacklist)) return false; + + if(preg_match('/^[\w\.\-]{0,32}$/', $username) == false) return false; + if($check_id && intval($this->getuid($username)) < $this->min_uid) return false; if($restrict_names == true && preg_match('/^web\d+$/', $username) == false) return false; @@ -1832,7 +1836,11 @@ class system{ public function is_allowed_group($groupname, $restrict_names = false) { global $app; - if($groupname == 'root') return false; + $name_blacklist = array('root','ispconfig','vmail','getmail'); + if(in_array($groupname,$name_blacklist)) return false; + + if(preg_match('/^[\w\.\-]{0,32}$/', $groupname) == false) return false; + if(intval($this->getgid($groupname)) < $this->min_gid) return false; if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; -- GitLab From b1ed926b6759ccd343fc9d43c60f51f6b25db670 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 1 Aug 2014 09:41:24 +0200 Subject: [PATCH 059/158] Improved input validation --- interface/web/admin/language_edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/language_edit.php b/interface/web/admin/language_edit.php index fda70a62a..819924492 100644 --- a/interface/web/admin/language_edit.php +++ b/interface/web/admin/language_edit.php @@ -57,7 +57,7 @@ if(isset($_POST['records']) && is_array($_POST['records'])) { $file_content = " $val) { $val = stripslashes($val); - $val = str_replace('"', '\"', $val); + $val = preg_replace('/(^|[^\\\\])((\\\\\\\\)*)"/', '$1$2\\"', $val); $val = str_replace('$', '', $val); $file_content .= '$wb['."'$key'".'] = "'.$val.'";'."\n"; $msg = 'File saved.'; -- GitLab From e98a15838d8aed330ac7b1bb373b54524ea2a269 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 1 Aug 2014 11:47:00 +0200 Subject: [PATCH 060/158] Improved input validation for settings that are acessible by the admin user. --- .../lib/classes/validate_systemuser.inc.php | 64 ++++ .../web/admin/form/server_config.tform.php | 353 +++++++++++++----- .../web/admin/lib/lang/en_server_config.lng | 50 +++ interface/web/sites/form/ftp_user.tform.php | 14 + interface/web/sites/form/shell_user.tform.php | 14 + interface/web/sites/ftp_user_edit.php | 8 - interface/web/sites/shell_user_edit.php | 7 - .../web/sites/web_vhost_subdomain_edit.php | 2 + 8 files changed, 407 insertions(+), 105 deletions(-) create mode 100644 interface/lib/classes/validate_systemuser.inc.php diff --git a/interface/lib/classes/validate_systemuser.inc.php b/interface/lib/classes/validate_systemuser.inc.php new file mode 100644 index 000000000..f1bbd2bb3 --- /dev/null +++ b/interface/lib/classes/validate_systemuser.inc.php @@ -0,0 +1,64 @@ +functions->is_allowed_user(trim(strtolower($field_value)),$check_names) == false) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } + } + + /* + Validator function to check if a given group is ok. + */ + function check_sysgroup($field_name, $field_value, $validator) { + global $app; + + $errmsg = $validator['errmsg']; + $check_names = (isset($validator['check_names']) && $validator['check_names'] == true)?true:false; + + if($app->functions->is_allowed_group(trim(strtolower($field_value)),$check_names) == false) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } + } + + + + +} diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 4fa71790c..01ac5681d 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -167,8 +167,11 @@ $form["tabs"]['server'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '/var/backup', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'backup_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'backup_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'backup_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -274,8 +277,11 @@ $form["tabs"]['mail'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '/home/vmail/[domain]/[localpart]/', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'maildir_path_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'maildir_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{5,128}$/', + 'errmsg'=> 'maildir_path_error_regex'), ), 'value' => '', 'width' => '40', @@ -285,8 +291,11 @@ $form["tabs"]['mail'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '/home/vmail/', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'homedir_path_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'homedir_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'homedir_path_error_regex'), ), 'value' => '', 'width' => '40', @@ -308,8 +317,11 @@ $form["tabs"]['mail'] = array( 'datatype' => 'INTEGER', 'formtype' => 'TEXT', 'default' => '5000', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'mailuser_uid_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'mailuser_uid_error_empty'), + 1 => array('type' => 'RANGE', + 'range' => '1999:', + 'errmsg' => 'mailuser_uid_error_range'), ), 'value' => '', 'width' => '10', @@ -319,8 +331,11 @@ $form["tabs"]['mail'] = array( 'datatype' => 'INTEGER', 'formtype' => 'TEXT', 'default' => '5000', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'mailuser_gid_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'mailuser_gid_error_empty'), + 1 => array('type' => 'RANGE', + 'range' => '1999:', + 'errmsg' => 'mailuser_gid_error_range'), ), 'value' => '', 'width' => '10', @@ -330,8 +345,11 @@ $form["tabs"]['mail'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => 'vmail', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'mailuser_name_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'mailuser_name_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^(?!ispconfig|root)([a-zA-Z0-9]{1,20})$/', + 'errmsg'=> 'mailuser_name_error_regex'), ), 'value' => '', 'width' => '10', @@ -341,8 +359,11 @@ $form["tabs"]['mail'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => 'vmail', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'mailuser_group_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'mailuser_group_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^(?!ispconfig|root)([a-zA-Z0-9]{1,20})$/', + 'errmsg'=> 'mailuser_group_name_error_regex'), ), 'value' => '', 'width' => '10', @@ -450,8 +471,11 @@ $form["tabs"]['getmail'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'getmail_config_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'getmail_config_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'getmail_config_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -481,8 +505,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'website_basedir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'website_basedir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'website_basedir_error_regex'), ), 'value' => '', 'width' => '40', @@ -492,8 +519,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'website_path_error_empty'), + 'validators' => array( 0 => array( 'type' => 'NOTEMPTY', + 'errmsg' => 'website_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{5,128}$/', + 'errmsg'=> 'website_path_error_regex'), ), 'value' => '', 'width' => '40', @@ -503,8 +533,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'website_symlinks_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'website_symlinks_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]\:]{5,128}$/', + 'errmsg'=> 'website_symlinks_error_regex'), ), 'value' => '', 'width' => '40', @@ -536,8 +569,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'vhost_conf_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'vhost_conf_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'vhost_conf_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -547,8 +583,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'vhost_conf_enabled_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'vhost_conf_enabled_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'vhost_conf_enabled_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -558,8 +597,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_vhost_conf_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_vhost_conf_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'nginx_vhost_conf_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -569,8 +611,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_vhost_conf_enabled_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_vhost_conf_enabled_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'nginx_vhost_conf_enabled_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -579,6 +624,10 @@ $form["tabs"]['web'] = array( 'CA_path' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'validators' => array( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/]{0,128}$/', + 'errmsg'=> 'ca_path_error_regex'), + ), 'default' => '', 'value' => '', 'width' => '40', @@ -678,6 +727,13 @@ $form["tabs"]['web'] = array( 'default' => '', 'validators' => array(0 => array('type' => 'NOTEMPTY', 'errmsg' => 'apache_user_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysuser', + 'check_names' => false, + 'errmsg' => 'invalid_apache_user_txt' + ), ), 'value' => '', 'width' => '40', @@ -689,6 +745,13 @@ $form["tabs"]['web'] = array( 'default' => '', 'validators' => array(0 => array('type' => 'NOTEMPTY', 'errmsg' => 'apache_group_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysgroup', + 'check_names' => false, + 'errmsg' => 'invalid_apache_group_txt' + ), ), 'value' => '', 'width' => '40', @@ -715,8 +778,15 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_user_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_user_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysuser', + 'check_names' => false, + 'errmsg' => 'invalid_nginx_user_txt' + ), ), 'value' => '', 'width' => '40', @@ -726,8 +796,15 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_group_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_group_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysgroup', + 'check_names' => false, + 'errmsg' => 'invalid_nginx_group_txt' + ), ), 'value' => '', 'width' => '40', @@ -737,8 +814,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_ini_path_apache_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_ini_path_apache_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_ini_path_apache_error_regex'), ), 'value' => '', 'width' => '40', @@ -748,8 +828,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_ini_path_cgi_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_ini_path_cgi_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_ini_path_cgi_error_regex'), ), 'value' => '', 'width' => '40', @@ -759,8 +842,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_fpm_init_script_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_fpm_init_script_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_]{1,128}$/', + 'errmsg'=> 'php_fpm_init_script_error_regex'), ), 'value' => '', 'width' => '40', @@ -770,8 +856,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_fpm_ini_path_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_fpm_ini_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_fpm_ini_path_error_regex'), ), 'value' => '', 'width' => '40', @@ -781,8 +870,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_fpm_pool_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_fpm_pool_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_fpm_pool_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -792,7 +884,7 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', + 'validators' => array(0 => array('type' => 'ISPOSITIVE', 'errmsg' => 'php_fpm_start_port_error_empty'), ), 'value' => '', @@ -803,8 +895,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_fpm_socket_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_fpm_socket_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_fpm_socket_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -814,8 +909,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_open_basedir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_open_basedir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/\]\[\:]{1,}$/', + 'errmsg'=> 'php_open_basedir_error_regex'), ), 'value' => '', 'width' => '40', @@ -825,8 +923,11 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_cgi_socket_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_cgi_socket_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'nginx_cgi_socket_error_regex'), ), 'value' => '', 'width' => '40', @@ -836,8 +937,8 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'htaccess_allow_override_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'htaccess_allow_override_error_empty'), ), 'value' => '', 'width' => '40', @@ -884,6 +985,12 @@ $form["tabs"]['web'] = array( 'awstats_data_dir' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'awstats_data_dir_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'awstats_data_dir_error_regex'), + ), 'default' => '', 'value' => '', 'width' => '40', @@ -892,6 +999,12 @@ $form["tabs"]['web'] = array( 'awstats_pl' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'awstats_pl_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'awstats_pl_error_regex'), + ), 'default' => '', 'value' => '', 'width' => '40', @@ -900,6 +1013,12 @@ $form["tabs"]['web'] = array( 'awstats_buildstaticpages_pl' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'awstats_buildstaticpages_pl_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'awstats_buildstaticpages_pl_error_regex'), + ), 'default' => '', 'value' => '', 'width' => '40', @@ -923,8 +1042,11 @@ $form["tabs"]['dns'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'bind_user_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'bind_user_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^(?!ispconfig)([a-zA-Z0-9]{1,20})$/', + 'errmsg'=> 'invalid_bind_user_txt'), ), 'value' => '', 'width' => '40', @@ -934,8 +1056,11 @@ $form["tabs"]['dns'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'bind_group_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'bind_group_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^(?!ispconfig)([a-zA-Z0-9]{1,20})$/', + 'errmsg'=> 'invalid_bind_group_txt'), ), 'value' => '', 'width' => '40', @@ -945,8 +1070,11 @@ $form["tabs"]['dns'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'bind_zonefiles_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'bind_zonefiles_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'bind_zonefiles_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -956,8 +1084,11 @@ $form["tabs"]['dns'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'named_conf_path_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'named_conf_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'named_conf_path_error_regex'), ), 'value' => '', 'width' => '40', @@ -967,8 +1098,11 @@ $form["tabs"]['dns'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'named_conf_local_path_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'named_conf_local_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'named_conf_local_path_error_regex'), ), 'value' => '', 'width' => '40', @@ -992,8 +1126,11 @@ $form["tabs"]['fastcgi'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_starter_path_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_starter_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', + 'errmsg'=> 'fastcgi_starter_path_error_regex'), ), 'value' => '', 'width' => '40', @@ -1003,8 +1140,11 @@ $form["tabs"]['fastcgi'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_starter_script_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_starter_script_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'fastcgi_starter_script_error_regex'), ), 'value' => '', 'width' => '40', @@ -1014,8 +1154,11 @@ $form["tabs"]['fastcgi'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_alias_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_alias_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'fastcgi_alias_error_regex'), ), 'value' => '', 'width' => '40', @@ -1025,8 +1168,11 @@ $form["tabs"]['fastcgi'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_phpini_path_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_phpini_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', + 'errmsg'=> 'fastcgi_phpini_path_error_regex'), ), 'value' => '', 'width' => '40', @@ -1036,7 +1182,7 @@ $form["tabs"]['fastcgi'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', + 'validators' => array(0 => array('type' => 'ISPOSITIVE', 'errmsg' => 'fastcgi_children_error_empty'), ), 'value' => '', @@ -1061,8 +1207,11 @@ $form["tabs"]['fastcgi'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_bin_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_bin_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', + 'errmsg'=> 'fastcgi_bin_error_regex'), ), 'value' => '', 'width' => '40', @@ -1095,8 +1244,11 @@ $form["tabs"]['jailkit'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'jailkit_chroot_home_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'jailkit_chroot_home_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', + 'errmsg'=> 'jailkit_chroot_home_error_regex'), ), 'value' => '', 'width' => '40', @@ -1106,8 +1258,11 @@ $form["tabs"]['jailkit'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'jailkit_chroot_app_sections_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'jailkit_chroot_app_sections_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_\ ]{1,128}$/', + 'errmsg'=> 'jailkit_chroot_app_sections_error_regex'), ), 'value' => '', 'width' => '40', @@ -1117,8 +1272,11 @@ $form["tabs"]['jailkit'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'jailkit_chroot_app_programs_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'jailkit_chroot_app_programs_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/\ ]{1,}$/', + 'errmsg'=> 'jailkit_chroot_app_programs_error_regex'), ), 'value' => '', 'width' => '40', @@ -1128,8 +1286,11 @@ $form["tabs"]['jailkit'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'jailkit_chroot_cron_programs_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'jailkit_chroot_cron_programs_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/\ ]{1,}$/', + 'errmsg'=> 'jailkit_chroot_cron_programs_error_regex'), ), 'value' => '', 'width' => '40', @@ -1217,8 +1378,11 @@ $form["tabs"]['vlogger'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'vlogger_config_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'vlogger_config_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'vlogger_config_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -1244,8 +1408,11 @@ $form["tabs"]['cron'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'cron_init_script_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'cron_init_script_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_]{1,30}$/', + 'errmsg'=> 'cron_init_script_error_regex'), ), 'value' => '', 'width' => '40', @@ -1255,8 +1422,11 @@ $form["tabs"]['cron'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'crontab_dir_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'crontab_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'crontab_dir_error_regex'), ), 'value' => '', 'width' => '40', @@ -1266,8 +1436,11 @@ $form["tabs"]['cron'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'cron_wget_error_empty'), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'cron_wget_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'cron_wget_error_regex'), ), 'value' => '', 'width' => '40', diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 5ce704d9e..cc34e05ac 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -191,4 +191,54 @@ $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php index f328f7fdb..ef11b6058 100644 --- a/interface/web/sites/form/ftp_user.tform.php +++ b/interface/web/sites/form/ftp_user.tform.php @@ -166,6 +166,13 @@ if($app->auth->is_admin()) { 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'uid_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysuser', + 'check_names' => true, + 'errmsg' => 'invalid_system_user_or_group_txt' + ), ), 'default' => '0', 'value' => '', @@ -177,6 +184,13 @@ if($app->auth->is_admin()) { 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'gid_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysgroup', + 'check_names' => true, + 'errmsg' => 'invalid_system_user_or_group_txt' + ), ), 'default' => '0', 'value' => '', diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php index d8df458aa..062ed6e0b 100644 --- a/interface/web/sites/form/shell_user.tform.php +++ b/interface/web/sites/form/shell_user.tform.php @@ -177,6 +177,13 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'uid_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysuser', + 'check_names' => true, + 'errmsg' => 'invalid_system_user_or_group_txt' + ), ), 'default' => '0', 'value' => '', @@ -188,6 +195,13 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'uid_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysgroup', + 'check_names' => true, + 'errmsg' => 'invalid_system_user_or_group_txt' + ), ), 'default' => '0', 'value' => '', diff --git a/interface/web/sites/ftp_user_edit.php b/interface/web/sites/ftp_user_edit.php index edf47a38d..ba695e0ff 100644 --- a/interface/web/sites/ftp_user_edit.php +++ b/interface/web/sites/ftp_user_edit.php @@ -154,14 +154,6 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf, $interfaceConf; - - // Check system user and group - if(isset($this->dataRecord['uid'])) { - if($app->functions->is_allowed_user(strtolower($this->dataRecord['uid']),true) == false || $app->functions->is_allowed_group(strtolower($this->dataRecord['gid']),true) == false) { - $app->tform->errorMessage .= $app->tform->lng('invalid_system_user_or_group_txt'); - } - } - /* * If the names should be restricted -> do it! */ diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php index 9731889b7..f301139d4 100644 --- a/interface/web/sites/shell_user_edit.php +++ b/interface/web/sites/shell_user_edit.php @@ -190,13 +190,6 @@ class page_action extends tform_actions { } } unset($blacklist); - - // Check system user and group - if(isset($this->dataRecord['puser'])) { - if($app->functions->is_allowed_user(strtolower($this->dataRecord['puser']),true) == false || $app->functions->is_allowed_group(strtolower($this->dataRecord['pgroup']),true) == false) { - $app->tform->errorMessage .= $app->tform->lng('invalid_system_user_or_group_txt'); - } - } /* * If the names should be restricted -> do it! diff --git a/interface/web/sites/web_vhost_subdomain_edit.php b/interface/web/sites/web_vhost_subdomain_edit.php index 37359a25d..ef1fc4ca0 100644 --- a/interface/web/sites/web_vhost_subdomain_edit.php +++ b/interface/web/sites/web_vhost_subdomain_edit.php @@ -341,6 +341,8 @@ class page_action extends tform_actions { $this->dataRecord["ipv6_address"] = $parent_domain["ipv6_address"]; $this->dataRecord["client_group_id"] = $parent_domain["client_group_id"]; $this->dataRecord["vhost_type"] = 'name'; + $this->dataRecord["system_user"] = $parent_domain["system_user"]; + $this->dataRecord["system_group"] = $parent_domain["system_group"]; $this->parent_domain_record = $parent_domain; -- GitLab From cda33c161a1145d4652b2a8537d5833f144e11e2 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 1 Aug 2014 11:53:40 +0200 Subject: [PATCH 061/158] Merged language files. --- interface/lib/lang/el.lng | 2 +- interface/lib/lang/fr.lng | 2 +- interface/lib/lang/se.lng | 3 +- .../web/admin/lib/lang/ar_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/bg_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/br_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/cz_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/de_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/el_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/el_system_config.lng | 2 +- .../web/admin/lib/lang/es_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/fi_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/fr_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/fr_system_config.lng | 2 +- .../web/admin/lib/lang/hr_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/hu_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/id_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/it_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/ja_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/nl_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/pl_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/pt_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/ro_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/ru_server_config.lng | 52 +++++++++++++++++- interface/web/admin/lib/lang/se.lng | 1 - .../admin/lib/lang/se_directive_snippets.lng | 1 - .../lib/lang/se_directive_snippets_list.lng | 1 - interface/web/admin/lib/lang/se_firewall.lng | 1 - .../web/admin/lib/lang/se_firewall_list.lng | 1 - interface/web/admin/lib/lang/se_groups.lng | 1 - .../web/admin/lib/lang/se_groups_list.lng | 1 - interface/web/admin/lib/lang/se_iptables.lng | 1 - .../web/admin/lib/lang/se_iptables_list.lng | 1 - .../web/admin/lib/lang/se_language_add.lng | 1 - .../admin/lib/lang/se_language_complete.lng | 1 - .../web/admin/lib/lang/se_language_edit.lng | 1 - .../web/admin/lib/lang/se_language_export.lng | 1 - .../web/admin/lib/lang/se_language_import.lng | 1 - .../web/admin/lib/lang/se_language_list.lng | 1 - interface/web/admin/lib/lang/se_login_as.lng | 12 ----- .../web/admin/lib/lang/se_package_install.lng | 1 - .../web/admin/lib/lang/se_remote_action.lng | 1 - .../web/admin/lib/lang/se_remote_user.lng | 1 - .../admin/lib/lang/se_remote_user_list.lng | 1 - interface/web/admin/lib/lang/se_server.lng | 1 - .../web/admin/lib/lang/se_server_config.lng | 53 ++++++++++++++++++- .../admin/lib/lang/se_server_config_list.lng | 1 - interface/web/admin/lib/lang/se_server_ip.lng | 1 - .../web/admin/lib/lang/se_server_ip_list.lng | 1 - .../web/admin/lib/lang/se_server_list.lng | 1 - .../web/admin/lib/lang/se_server_php.lng | 1 - .../web/admin/lib/lang/se_server_php_list.lng | 1 - .../admin/lib/lang/se_software_package.lng | 1 - .../lib/lang/se_software_package_install.lng | 1 - .../lib/lang/se_software_package_list.lng | 1 - .../web/admin/lib/lang/se_software_repo.lng | 1 - .../admin/lib/lang/se_software_repo_list.lng | 1 - .../lib/lang/se_software_update_list.lng | 1 - .../web/admin/lib/lang/se_system_config.lng | 3 +- .../admin/lib/lang/se_tpl_default_admin.lng | 1 - interface/web/admin/lib/lang/se_users.lng | 1 - .../web/admin/lib/lang/se_users_list.lng | 1 - .../web/admin/lib/lang/sk_server_config.lng | 52 +++++++++++++++++- .../web/admin/lib/lang/tr_server_config.lng | 52 +++++++++++++++++- interface/web/client/lib/lang/el_reseller.lng | 2 +- interface/web/client/lib/lang/fr_client.lng | 2 +- interface/web/client/lib/lang/fr_reseller.lng | 2 +- interface/web/client/lib/lang/se.lng | 1 - interface/web/client/lib/lang/se_client.lng | 3 +- .../web/client/lib/lang/se_client_circle.lng | 1 - .../client/lib/lang/se_client_circle_list.lng | 1 - .../web/client/lib/lang/se_client_del.lng | 1 - .../web/client/lib/lang/se_client_message.lng | 1 - .../lib/lang/se_client_message_template.lng | 1 - .../lang/se_client_message_template_list.lng | 1 - .../client/lib/lang/se_client_template.lng | 1 - .../lib/lang/se_client_template_list.lng | 1 - .../web/client/lib/lang/se_clients_list.lng | 1 - interface/web/client/lib/lang/se_domain.lng | 1 - .../web/client/lib/lang/se_domain_list.lng | 1 - interface/web/client/lib/lang/se_reseller.lng | 1 - .../web/client/lib/lang/se_resellers_list.lng | 1 - interface/web/dashboard/lib/lang/se.lng | 1 - .../dashboard/lib/lang/se_dashlet_limits.lng | 1 - .../lib/lang/se_dashlet_mailquota.lng | 1 - .../dashboard/lib/lang/se_dashlet_modules.lng | 1 - .../dashboard/lib/lang/se_dashlet_quota.lng | 1 - interface/web/designer/lib/lang/se.lng | 1 - .../web/designer/lib/lang/se_form_edit.lng | 1 - .../web/designer/lib/lang/se_form_list.lng | 1 - .../web/designer/lib/lang/se_form_show.lng | 1 - .../web/designer/lib/lang/se_module_edit.lng | 1 - .../web/designer/lib/lang/se_module_list.lng | 1 - .../designer/lib/lang/se_module_nav_edit.lng | 1 - .../lib/lang/se_module_nav_item_edit.lng | 1 - .../web/designer/lib/lang/se_module_show.lng | 1 - .../dns/lib/lang/ar_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/ar_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/bg_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/bg_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/br_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/br_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/cz_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/cz_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/el_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/el_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/es_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/es_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/fi_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/fi_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/fr_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/fr_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/hr_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/hr_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/hu_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/hu_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/id_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/id_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/it_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/it_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/ja_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/ja_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/nl_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/nl_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/pl_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/pl_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/pt_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/pt_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/ro_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/ro_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/ru_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/ru_dns_soa_admin_list.lng | 11 ++++ interface/web/dns/lib/lang/se.lng | 1 - interface/web/dns/lib/lang/se_dns_a.lng | 1 - interface/web/dns/lib/lang/se_dns_a_list.lng | 1 - interface/web/dns/lib/lang/se_dns_aaaa.lng | 1 - interface/web/dns/lib/lang/se_dns_alias.lng | 1 - interface/web/dns/lib/lang/se_dns_cname.lng | 1 - interface/web/dns/lib/lang/se_dns_hinfo.lng | 1 - interface/web/dns/lib/lang/se_dns_import.lng | 1 - interface/web/dns/lib/lang/se_dns_mx.lng | 1 - interface/web/dns/lib/lang/se_dns_ns.lng | 1 - interface/web/dns/lib/lang/se_dns_ptr.lng | 1 - interface/web/dns/lib/lang/se_dns_rp.lng | 1 - interface/web/dns/lib/lang/se_dns_slave.lng | 1 - .../dns/lib/lang/se_dns_slave_admin_list.lng | 10 ++++ .../web/dns/lib/lang/se_dns_slave_list.lng | 1 - interface/web/dns/lib/lang/se_dns_soa.lng | 1 - .../dns/lib/lang/se_dns_soa_admin_list.lng | 11 ++++ .../web/dns/lib/lang/se_dns_soa_list.lng | 1 - interface/web/dns/lib/lang/se_dns_srv.lng | 1 - .../web/dns/lib/lang/se_dns_template.lng | 1 - .../web/dns/lib/lang/se_dns_template_list.lng | 1 - interface/web/dns/lib/lang/se_dns_txt.lng | 1 - interface/web/dns/lib/lang/se_dns_wizard.lng | 1 - .../dns/lib/lang/sk_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/sk_dns_soa_admin_list.lng | 11 ++++ .../dns/lib/lang/tr_dns_slave_admin_list.lng | 10 ++++ .../dns/lib/lang/tr_dns_soa_admin_list.lng | 11 ++++ interface/web/help/lib/lang/se.lng | 1 - interface/web/help/lib/lang/se_faq_form.lng | 1 - .../lib/lang/se_faq_manage_questions_list.lng | 1 - .../help/lib/lang/se_faq_sections_form.lng | 1 - .../web/help/lib/lang/se_help_faq_list.lng | 1 - .../lib/lang/se_help_faq_sections_list.lng | 1 - .../web/help/lib/lang/se_support_message.lng | 1 - .../help/lib/lang/se_support_message_list.lng | 1 - interface/web/login/lib/lang/se.lng | 1 - interface/web/login/lib/lang/se_login_as.lng | 7 ++- interface/web/mail/lib/lang/fr_mail_get.lng | 2 +- interface/web/mail/lib/lang/se.lng | 1 - interface/web/mail/lib/lang/se_mail_alias.lng | 1 - .../web/mail/lib/lang/se_mail_alias_list.lng | 1 - .../web/mail/lib/lang/se_mail_aliasdomain.lng | 1 - .../lib/lang/se_mail_aliasdomain_list.lng | 1 - .../web/mail/lib/lang/se_mail_blacklist.lng | 1 - .../mail/lib/lang/se_mail_blacklist_list.lng | 1 - .../mail/lib/lang/se_mail_content_filter.lng | 1 - .../lib/lang/se_mail_content_filter_list.lng | 1 - .../web/mail/lib/lang/se_mail_domain.lng | 1 - .../lib/lang/se_mail_domain_admin_list.lng | 1 - .../mail/lib/lang/se_mail_domain_catchall.lng | 1 - .../lib/lang/se_mail_domain_catchall_list.lng | 1 - .../web/mail/lib/lang/se_mail_domain_list.lng | 1 - .../web/mail/lib/lang/se_mail_forward.lng | 1 - .../mail/lib/lang/se_mail_forward_list.lng | 1 - interface/web/mail/lib/lang/se_mail_get.lng | 3 +- .../web/mail/lib/lang/se_mail_get_list.lng | 1 - .../web/mail/lib/lang/se_mail_mailinglist.lng | 1 - .../lib/lang/se_mail_mailinglist_list.lng | 1 - .../mail/lib/lang/se_mail_relay_recipient.lng | 1 - .../lib/lang/se_mail_relay_recipient_list.lng | 1 - .../web/mail/lib/lang/se_mail_spamfilter.lng | 1 - .../mail/lib/lang/se_mail_spamfilter_list.lng | 1 - .../web/mail/lib/lang/se_mail_transport.lng | 1 - .../mail/lib/lang/se_mail_transport_list.lng | 1 - interface/web/mail/lib/lang/se_mail_user.lng | 1 - .../web/mail/lib/lang/se_mail_user_filter.lng | 1 - .../lib/lang/se_mail_user_filter_list.lng | 1 - .../web/mail/lib/lang/se_mail_user_list.lng | 1 - .../mail/lib/lang/se_mail_user_stats_list.lng | 1 - .../web/mail/lib/lang/se_mail_whitelist.lng | 1 - .../mail/lib/lang/se_mail_whitelist_list.lng | 1 - .../mail/lib/lang/se_spamfilter_blacklist.lng | 1 - .../lib/lang/se_spamfilter_blacklist_list.lng | 1 - .../mail/lib/lang/se_spamfilter_config.lng | 1 - .../lib/lang/se_spamfilter_config_list.lng | 1 - .../mail/lib/lang/se_spamfilter_policy.lng | 1 - .../lib/lang/se_spamfilter_policy_list.lng | 1 - .../web/mail/lib/lang/se_spamfilter_users.lng | 1 - .../lib/lang/se_spamfilter_users_list.lng | 1 - .../mail/lib/lang/se_spamfilter_whitelist.lng | 1 - .../lib/lang/se_spamfilter_whitelist_list.lng | 1 - .../lib/lang/se_user_quota_stats_list.lng | 1 - interface/web/mailuser/lib/lang/se.lng | 1 - interface/web/mailuser/lib/lang/se_index.lng | 1 - .../lib/lang/se_mail_user_autoresponder.lng | 1 - .../web/mailuser/lib/lang/se_mail_user_cc.lng | 1 - .../mailuser/lib/lang/se_mail_user_filter.lng | 1 - .../lib/lang/se_mail_user_filter_list.lng | 1 - .../lib/lang/se_mail_user_password.lng | 1 - .../lib/lang/se_mail_user_spamfilter.lng | 1 - interface/web/monitor/lib/lang/se.lng | 1 - .../web/monitor/lib/lang/se_datalog_list.lng | 1 - .../web/monitor/lib/lang/se_syslog_list.lng | 1 - interface/web/sites/lib/lang/ar_ftp_user.lng | 2 + .../web/sites/lib/lang/ar_shell_user.lng | 3 ++ .../web/sites/lib/lang/ar_web_folder_list.lng | 1 + .../lib/lang/ar_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/bg_ftp_user.lng | 2 + .../web/sites/lib/lang/bg_shell_user.lng | 3 ++ .../web/sites/lib/lang/bg_web_folder_list.lng | 1 + .../lib/lang/bg_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/br_ftp_user.lng | 2 + .../web/sites/lib/lang/br_shell_user.lng | 3 ++ .../web/sites/lib/lang/br_web_folder_list.lng | 1 + .../lib/lang/br_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/cz_ftp_user.lng | 2 + .../web/sites/lib/lang/cz_shell_user.lng | 3 ++ .../web/sites/lib/lang/cz_web_folder_list.lng | 1 + .../lib/lang/cz_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/de_ftp_user.lng | 2 + .../web/sites/lib/lang/de_shell_user.lng | 3 ++ .../web/sites/lib/lang/de_web_folder_list.lng | 2 +- .../lib/lang/de_web_folder_user_list.lng | 2 +- interface/web/sites/lib/lang/el_ftp_user.lng | 2 + .../web/sites/lib/lang/el_shell_user.lng | 3 ++ .../web/sites/lib/lang/el_web_folder_list.lng | 1 + .../lib/lang/el_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/es_ftp_user.lng | 2 + .../web/sites/lib/lang/es_shell_user.lng | 3 ++ .../web/sites/lib/lang/es_web_folder_list.lng | 1 + .../lib/lang/es_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/fi_ftp_user.lng | 2 + .../web/sites/lib/lang/fi_shell_user.lng | 3 ++ .../web/sites/lib/lang/fi_web_folder_list.lng | 1 + .../lib/lang/fi_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/fr.lng | 2 +- interface/web/sites/lib/lang/fr_aps.lng | 16 +++--- interface/web/sites/lib/lang/fr_ftp_user.lng | 2 + .../web/sites/lib/lang/fr_shell_user.lng | 3 ++ .../web/sites/lib/lang/fr_web_folder_list.lng | 1 + .../lib/lang/fr_web_folder_user_list.lng | 1 + .../web/sites/lib/lang/fr_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/hr_ftp_user.lng | 2 + .../web/sites/lib/lang/hr_shell_user.lng | 3 ++ .../web/sites/lib/lang/hr_web_folder_list.lng | 1 + .../lib/lang/hr_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/hu_ftp_user.lng | 2 + .../web/sites/lib/lang/hu_shell_user.lng | 3 ++ .../web/sites/lib/lang/hu_web_folder_list.lng | 1 + .../lib/lang/hu_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/id_ftp_user.lng | 2 + .../web/sites/lib/lang/id_shell_user.lng | 3 ++ .../web/sites/lib/lang/id_web_folder_list.lng | 1 + .../lib/lang/id_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/it_ftp_user.lng | 2 + .../web/sites/lib/lang/it_shell_user.lng | 3 ++ .../web/sites/lib/lang/it_web_folder_list.lng | 1 + .../lib/lang/it_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/ja_ftp_user.lng | 2 + .../web/sites/lib/lang/ja_shell_user.lng | 3 ++ .../web/sites/lib/lang/ja_web_folder_list.lng | 1 + .../lib/lang/ja_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/nl_ftp_user.lng | 2 + .../web/sites/lib/lang/nl_shell_user.lng | 3 ++ .../web/sites/lib/lang/nl_web_folder_list.lng | 1 + .../lib/lang/nl_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/pl_ftp_user.lng | 2 + .../web/sites/lib/lang/pl_shell_user.lng | 3 ++ .../web/sites/lib/lang/pl_web_folder_list.lng | 1 + .../lib/lang/pl_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/pt_ftp_user.lng | 2 + .../web/sites/lib/lang/pt_shell_user.lng | 3 ++ .../web/sites/lib/lang/pt_web_folder_list.lng | 1 + .../lib/lang/pt_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/ro_ftp_user.lng | 2 + .../web/sites/lib/lang/ro_shell_user.lng | 3 ++ .../web/sites/lib/lang/ro_web_folder_list.lng | 1 + .../lib/lang/ro_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/ru_ftp_user.lng | 2 + .../web/sites/lib/lang/ru_shell_user.lng | 3 ++ .../web/sites/lib/lang/ru_web_folder_list.lng | 1 + .../lib/lang/ru_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/se.lng | 3 +- interface/web/sites/lib/lang/se_aps.lng | 17 +++--- .../sites/lib/lang/se_aps_instances_list.lng | 1 - .../sites/lib/lang/se_aps_packages_list.lng | 1 - .../lib/lang/se_aps_update_packagelist.lng | 1 - interface/web/sites/lib/lang/se_cron.lng | 1 - interface/web/sites/lib/lang/se_cron_list.lng | 1 - interface/web/sites/lib/lang/se_database.lng | 1 - .../sites/lib/lang/se_database_admin_list.lng | 1 - .../web/sites/lib/lang/se_database_list.lng | 1 - .../web/sites/lib/lang/se_database_user.lng | 1 - .../lib/lang/se_database_user_admin_list.lng | 1 - .../sites/lib/lang/se_database_user_list.lng | 1 - interface/web/sites/lib/lang/se_ftp_user.lng | 3 +- .../web/sites/lib/lang/se_ftp_user_list.lng | 1 - .../web/sites/lib/lang/se_shell_user.lng | 4 +- .../web/sites/lib/lang/se_shell_user_list.lng | 1 - .../lib/lang/se_user_quota_stats_list.lng | 1 - .../web/sites/lib/lang/se_web_aliasdomain.lng | 1 - .../lib/lang/se_web_aliasdomain_list.lng | 1 - .../web/sites/lib/lang/se_web_backup_list.lng | 1 - .../web/sites/lib/lang/se_web_domain.lng | 1 - .../lib/lang/se_web_domain_admin_list.lng | 1 - .../web/sites/lib/lang/se_web_domain_list.lng | 1 - .../web/sites/lib/lang/se_web_folder.lng | 1 - .../web/sites/lib/lang/se_web_folder_list.lng | 2 +- .../web/sites/lib/lang/se_web_folder_user.lng | 1 - .../lib/lang/se_web_folder_user_list.lng | 2 +- .../lib/lang/se_web_sites_stats_list.lng | 1 - .../web/sites/lib/lang/se_web_subdomain.lng | 3 +- .../sites/lib/lang/se_web_subdomain_list.lng | 1 - .../sites/lib/lang/se_web_vhost_subdomain.lng | 1 - .../lib/lang/se_web_vhost_subdomain_list.lng | 1 - .../web/sites/lib/lang/se_webdav_user.lng | 1 - .../sites/lib/lang/se_webdav_user_list.lng | 1 - interface/web/sites/lib/lang/sk_ftp_user.lng | 2 + .../web/sites/lib/lang/sk_shell_user.lng | 3 ++ .../web/sites/lib/lang/sk_web_folder_list.lng | 1 + .../lib/lang/sk_web_folder_user_list.lng | 1 + interface/web/sites/lib/lang/tr_ftp_user.lng | 2 + .../web/sites/lib/lang/tr_shell_user.lng | 3 ++ .../web/sites/lib/lang/tr_web_folder_list.lng | 1 + .../lib/lang/tr_web_folder_user_list.lng | 1 + .../lib/lang/se_strengthmeter.lng | 1 - interface/web/tools/lib/lang/se.lng | 1 - .../tools/lib/lang/se_import_ispconfig.lng | 1 - interface/web/tools/lib/lang/se_index.lng | 1 - interface/web/tools/lib/lang/se_interface.lng | 1 - .../web/tools/lib/lang/se_tpl_default.lng | 1 - .../web/tools/lib/lang/se_usersettings.lng | 1 - interface/web/vm/lib/lang/se.lng | 1 - .../web/vm/lib/lang/se_openvz_action.lng | 1 - interface/web/vm/lib/lang/se_openvz_ip.lng | 1 - .../web/vm/lib/lang/se_openvz_ip_list.lng | 1 - .../web/vm/lib/lang/se_openvz_ostemplate.lng | 1 - .../vm/lib/lang/se_openvz_ostemplate_list.lng | 1 - .../web/vm/lib/lang/se_openvz_template.lng | 1 - .../vm/lib/lang/se_openvz_template_list.lng | 1 - interface/web/vm/lib/lang/se_openvz_vm.lng | 1 - .../web/vm/lib/lang/se_openvz_vm_list.lng | 1 - 364 files changed, 1752 insertions(+), 276 deletions(-) delete mode 100644 interface/web/admin/lib/lang/se_login_as.lng create mode 100644 interface/web/dns/lib/lang/ar_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/bg_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/br_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/br_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/cz_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/el_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/el_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/es_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/es_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/fi_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/fr_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/hu_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/id_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/id_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/it_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/it_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/ja_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/nl_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/pl_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/pt_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/ro_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/ru_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/se_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/se_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/sk_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng create mode 100644 interface/web/dns/lib/lang/tr_dns_slave_admin_list.lng create mode 100644 interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng index 5f7cb709e..20f26a448 100644 --- a/interface/lib/lang/el.lng +++ b/interface/lib/lang/el.lng @@ -145,6 +145,6 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".'; +$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; ?> diff --git a/interface/lib/lang/fr.lng b/interface/lib/lang/fr.lng index f344dc3a4..613f2a342 100644 --- a/interface/lib/lang/fr.lng +++ b/interface/lib/lang/fr.lng @@ -145,6 +145,6 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".'; +$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; ?> diff --git a/interface/lib/lang/se.lng b/interface/lib/lang/se.lng index 5f493339e..41a972f5c 100644 --- a/interface/lib/lang/se.lng +++ b/interface/lib/lang/se.lng @@ -145,7 +145,6 @@ $wb['strength_2'] = 'Sådär'; $wb['strength_3'] = 'Bra'; $wb['strength_4'] = 'Starkt'; $wb['strength_5'] = 'Väldigt starkt'; -$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of "{strength}".'; +$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; ?> - diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 2a404c673..7f23b7d2b 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index ef13ef550..b15c3c6d0 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 66bacf251..2b0dd6705 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 41d1bf8c4..c2db3bab0 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin heslo'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Zástupný symbol'; $wb['backup_dir_is_mount_txt'] = 'Připojit adresář pro zálohy ?'; -$wb['backup_dir_mount_cmd_txt'] = 'Příkaz připojení, pokud adresář pro zálohy není připojen . (např. mount ...)'; $wb['monitor_system_updates_txt'] = 'Kontrolovat aktualizace Linuxu'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 3711d4a0d..b040dba08 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin-Passwort'; $wb['munin_url_error_regex'] = 'Ungültige Munin-URL'; $wb['munin_url_note_txt'] = 'Platzhalter:'; $wb['backup_dir_is_mount_txt'] = 'Backupverzeichnis ist ein eigener Mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount-Befehl, falls Backupverzeichnis nicht gemountet'; $wb['monitor_system_updates_txt'] = 'Suche nach Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 38da1e402..6ab52a93c 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 41dff65d0..6c4f9a61d 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 194270400..42aeb0942 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index a1a5c6308..13ef9f333 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index cee143373..d66d977f1 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index 9abcd05a2..3c07c65fc 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 39bbc2a84..1b71f0b74 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 178a323a2..4a1752564 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 4ef64144d..ac67571df 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index d2a6288b9..fac8b35bb 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 06e2bb659..110148ce1 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index d94b5679d..fb97a2ce2 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 6d74f7d43..ada98882b 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index b31598ca2..e9fcd3736 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 06b78eb38..078910fc1 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 9c8e58fc2..9f881ae24 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/se.lng b/interface/web/admin/lib/lang/se.lng index 510119279..0df5d1aa4 100644 --- a/interface/web/admin/lib/lang/se.lng +++ b/interface/web/admin/lib/lang/se.lng @@ -48,4 +48,3 @@ $wb['Do OS-Update'] = 'Utför OS-uppdatering'; $wb['Do ISPConfig-Update'] = 'Utför ISPConfig-uppdatering'; $wb['Directive Snippets'] = 'Directive Snippets'; ?> - diff --git a/interface/web/admin/lib/lang/se_directive_snippets.lng b/interface/web/admin/lib/lang/se_directive_snippets.lng index 5366bf17a..0f09c12ee 100644 --- a/interface/web/admin/lib/lang/se_directive_snippets.lng +++ b/interface/web/admin/lib/lang/se_directive_snippets.lng @@ -8,4 +8,3 @@ $wb['directive_snippets_name_empty'] = 'Please specify a name for the snippet.'; $wb['directive_snippets_name_error_unique'] = 'There is already a directive snippet with this name.'; $wb['variables_txt'] = 'Variables'; ?> - diff --git a/interface/web/admin/lib/lang/se_directive_snippets_list.lng b/interface/web/admin/lib/lang/se_directive_snippets_list.lng index 3eac528a2..4124ea346 100644 --- a/interface/web/admin/lib/lang/se_directive_snippets_list.lng +++ b/interface/web/admin/lib/lang/se_directive_snippets_list.lng @@ -5,4 +5,3 @@ $wb['name_txt'] = 'Name of Snippet'; $wb['type_txt'] = 'Type'; $wb['add_new_record_txt'] = 'Add Directive Snippet'; ?> - diff --git a/interface/web/admin/lib/lang/se_firewall.lng b/interface/web/admin/lib/lang/se_firewall.lng index 4ae1ed673..123a64830 100644 --- a/interface/web/admin/lib/lang/se_firewall.lng +++ b/interface/web/admin/lib/lang/se_firewall.lng @@ -9,4 +9,3 @@ $wb['firewall_error_unique'] = 'Det finns redan ett brandväggsinlägg för den $wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, : and ,.'; $wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, : and ,.'; ?> - diff --git a/interface/web/admin/lib/lang/se_firewall_list.lng b/interface/web/admin/lib/lang/se_firewall_list.lng index eff32d328..6f6f9ce17 100644 --- a/interface/web/admin/lib/lang/se_firewall_list.lng +++ b/interface/web/admin/lib/lang/se_firewall_list.lng @@ -6,4 +6,3 @@ $wb['tcp_port_txt'] = 'Öppna TCP-portar'; $wb['udp_port_txt'] = 'Öppna UDP-portar'; $wb['add_new_record_txt'] = 'Lägg till brandväggsinlägg'; ?> - diff --git a/interface/web/admin/lib/lang/se_groups.lng b/interface/web/admin/lib/lang/se_groups.lng index 175a42255..4bb34b109 100644 --- a/interface/web/admin/lib/lang/se_groups.lng +++ b/interface/web/admin/lib/lang/se_groups.lng @@ -3,4 +3,3 @@ $wb['description_txt'] = 'Beskrivning'; $wb['name_txt'] = 'Grupp'; $wb['name_err'] = 'Gruppnamnet måste ha minst 1 och max 30 tecken.'; ?> - diff --git a/interface/web/admin/lib/lang/se_groups_list.lng b/interface/web/admin/lib/lang/se_groups_list.lng index b5486da5a..fe3f4bec5 100644 --- a/interface/web/admin/lib/lang/se_groups_list.lng +++ b/interface/web/admin/lib/lang/se_groups_list.lng @@ -5,4 +5,3 @@ $wb['name_txt'] = 'Grupp'; $wb['add_new_record_txt'] = 'Lägg till ny grupp'; $wb['warning_txt'] = 'VARNING: Ändra inte några användarinställningar här. Use the Client- and Reseller settings in the Client module instead. Modifying or changing Users or groups here may cause data loss!'; ?> - diff --git a/interface/web/admin/lib/lang/se_iptables.lng b/interface/web/admin/lib/lang/se_iptables.lng index 7c7dbfdb3..b4e6bf8f2 100644 --- a/interface/web/admin/lib/lang/se_iptables.lng +++ b/interface/web/admin/lib/lang/se_iptables.lng @@ -11,4 +11,3 @@ $wb['source_ip_txt'] = 'Källadress'; $wb['active_txt'] = 'Aktiv'; $wb['iptables_error_unique'] = 'Det finns redan brandväggsinlägg för den här servern'; ?> - diff --git a/interface/web/admin/lib/lang/se_iptables_list.lng b/interface/web/admin/lib/lang/se_iptables_list.lng index 3d400b4cd..74a06dfbc 100644 --- a/interface/web/admin/lib/lang/se_iptables_list.lng +++ b/interface/web/admin/lib/lang/se_iptables_list.lng @@ -13,4 +13,3 @@ $wb['source_ip_txt'] = 'Källadress'; $wb['active_txt'] = 'Aktiv'; $wb['iptables_error_unique'] = 'Det finns redan ett brandväggsinlägg för den här servern'; ?> - diff --git a/interface/web/admin/lib/lang/se_language_add.lng b/interface/web/admin/lib/lang/se_language_add.lng index a0607f2c1..59dbeeed3 100644 --- a/interface/web/admin/lib/lang/se_language_add.lng +++ b/interface/web/admin/lib/lang/se_language_add.lng @@ -6,4 +6,3 @@ $wb['btn_save_txt'] = 'Skapa nya språkfiler'; $wb['btn_cancel_txt'] = 'Tillbaka'; $wb['language_new_hint_txt'] = '2 characters ISO 639-1 language-code (See http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)'; ?> - diff --git a/interface/web/admin/lib/lang/se_language_complete.lng b/interface/web/admin/lib/lang/se_language_complete.lng index 9fc84589d..539c95641 100644 --- a/interface/web/admin/lib/lang/se_language_complete.lng +++ b/interface/web/admin/lib/lang/se_language_complete.lng @@ -5,4 +5,3 @@ $wb['btn_save_txt'] = 'Slå ihop filer nu'; $wb['btn_cancel_txt'] = 'Tillbaka'; $wb['list_desc_txt'] = 'Slå ihop språkfilen med den engelska huvudfilen.
Detta lägger till saknade fraser från den engelska språkfilen till den valda språkfilen'; ?> - diff --git a/interface/web/admin/lib/lang/se_language_edit.lng b/interface/web/admin/lib/lang/se_language_edit.lng index e02c9a9e0..076caaa0f 100644 --- a/interface/web/admin/lib/lang/se_language_edit.lng +++ b/interface/web/admin/lib/lang/se_language_edit.lng @@ -6,4 +6,3 @@ $wb['lang_file_txt'] = 'Språkfil'; $wb['btn_save_txt'] = 'Spara'; $wb['btn_cancel_txt'] = 'Tillbaka'; ?> - diff --git a/interface/web/admin/lib/lang/se_language_export.lng b/interface/web/admin/lib/lang/se_language_export.lng index a4d7147fa..21ff51300 100644 --- a/interface/web/admin/lib/lang/se_language_export.lng +++ b/interface/web/admin/lib/lang/se_language_export.lng @@ -4,4 +4,3 @@ $wb['language_select_txt'] = 'Välj språk'; $wb['btn_save_txt'] = 'Exportera de valda språkfilerna'; $wb['btn_cancel_txt'] = 'Tillbaka'; ?> - diff --git a/interface/web/admin/lib/lang/se_language_import.lng b/interface/web/admin/lib/lang/se_language_import.lng index 8ecca37dc..59af5bc6f 100644 --- a/interface/web/admin/lib/lang/se_language_import.lng +++ b/interface/web/admin/lib/lang/se_language_import.lng @@ -7,4 +7,3 @@ $wb['btn_cancel_txt'] = 'Tillbaka'; $wb['ignore_version_txt'] = 'Hoppa över ISPConfig versionskontroll'; $wb['list_desc_txt'] = 'VARNING: Importera inte språkfiler från opålitliga källor!'; ?> - diff --git a/interface/web/admin/lib/lang/se_language_list.lng b/interface/web/admin/lib/lang/se_language_list.lng index b23024d94..9949044ab 100644 --- a/interface/web/admin/lib/lang/se_language_list.lng +++ b/interface/web/admin/lib/lang/se_language_list.lng @@ -5,4 +5,3 @@ $wb['module_txt'] = 'Modul'; $wb['lang_file_txt'] = 'Språkfil'; $wb['lang_file_date_txt'] = 'Senast ändrad'; ?> - diff --git a/interface/web/admin/lib/lang/se_login_as.lng b/interface/web/admin/lib/lang/se_login_as.lng deleted file mode 100644 index 284a75b55..000000000 --- a/interface/web/admin/lib/lang/se_login_as.lng +++ /dev/null @@ -1,12 +0,0 @@ - - diff --git a/interface/web/admin/lib/lang/se_package_install.lng b/interface/web/admin/lib/lang/se_package_install.lng index 438f1d803..2fb833056 100644 --- a/interface/web/admin/lib/lang/se_package_install.lng +++ b/interface/web/admin/lib/lang/se_package_install.lng @@ -5,4 +5,3 @@ $wb['repo_username_txt'] = 'Användare (Frivilligt)'; $wb['repo_password_txt'] = 'Lösenord (Frivilligt)'; $wb['active_txt'] = 'Aktiv'; ?> - diff --git a/interface/web/admin/lib/lang/se_remote_action.lng b/interface/web/admin/lib/lang/se_remote_action.lng index 99d9e2c9a..68d2bbd4c 100644 --- a/interface/web/admin/lib/lang/se_remote_action.lng +++ b/interface/web/admin/lib/lang/se_remote_action.lng @@ -10,4 +10,3 @@ $wb['select_all_server'] = 'Alla servrar'; $wb['ispconfig_update_title'] = 'ISPConfig uppdateringsinstruktioner'; $wb['ispconfig_update_text'] = 'Logga in som root på din server och kör kommandot

ispconfig_update.sh

för att påbörja ISPConfig-uppdateringen.

Klicka här för detaljerade instruktioner'; ?> - diff --git a/interface/web/admin/lib/lang/se_remote_user.lng b/interface/web/admin/lib/lang/se_remote_user.lng index 5fedddc55..1b3b731fc 100644 --- a/interface/web/admin/lib/lang/se_remote_user.lng +++ b/interface/web/admin/lib/lang/se_remote_user.lng @@ -45,4 +45,3 @@ $wb['repeat_password_txt'] = 'Upprepa lösenord'; $wb['password_mismatch_txt'] = 'Lösenorden matchar inte'; $wb['password_match_txt'] = 'Lösenorden matchar'; ?> - diff --git a/interface/web/admin/lib/lang/se_remote_user_list.lng b/interface/web/admin/lib/lang/se_remote_user_list.lng index 9f490230a..152a75fba 100644 --- a/interface/web/admin/lib/lang/se_remote_user_list.lng +++ b/interface/web/admin/lib/lang/se_remote_user_list.lng @@ -5,4 +5,3 @@ $wb['add_new_record_txt'] = 'Add new user'; $wb['parent_remote_userid_txt'] = 'ID'; $wb['username_txt'] = 'Username'; ?> - diff --git a/interface/web/admin/lib/lang/se_server.lng b/interface/web/admin/lib/lang/se_server.lng index 29f32a738..54df6f2ee 100644 --- a/interface/web/admin/lib/lang/se_server.lng +++ b/interface/web/admin/lib/lang/se_server.lng @@ -13,4 +13,3 @@ $wb['- None -'] = '- Ingen'; $wb['proxy_server_txt'] = 'Proxy-server'; $wb['firewall_server_txt'] = 'Brandväggsserver'; ?> - diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 565659e7d..fc5b2017c 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -189,7 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> - diff --git a/interface/web/admin/lib/lang/se_server_config_list.lng b/interface/web/admin/lib/lang/se_server_config_list.lng index 9ff7f9b64..191b2c8d3 100644 --- a/interface/web/admin/lib/lang/se_server_config_list.lng +++ b/interface/web/admin/lib/lang/se_server_config_list.lng @@ -2,4 +2,3 @@ $wb['list_head_txt'] = 'Serverkonfiguration'; $wb['server_name_txt'] = 'Server'; ?> - diff --git a/interface/web/admin/lib/lang/se_server_ip.lng b/interface/web/admin/lib/lang/se_server_ip.lng index ad887bbd6..c6f92d8b6 100644 --- a/interface/web/admin/lib/lang/se_server_ip.lng +++ b/interface/web/admin/lib/lang/se_server_ip.lng @@ -9,4 +9,3 @@ $wb['ip_type_txt'] = 'Typ'; $wb['virtualhost_port_txt'] = 'HTTP-portar'; $wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; ?> - diff --git a/interface/web/admin/lib/lang/se_server_ip_list.lng b/interface/web/admin/lib/lang/se_server_ip_list.lng index 67884b358..8f20a3b02 100644 --- a/interface/web/admin/lib/lang/se_server_ip_list.lng +++ b/interface/web/admin/lib/lang/se_server_ip_list.lng @@ -8,4 +8,3 @@ $wb['virtualhost_txt'] = 'HTTP Vhost'; $wb['virtualhost_port_txt'] = 'HTTP-portar'; $wb['ip_type_txt'] = 'Typ'; ?> - diff --git a/interface/web/admin/lib/lang/se_server_list.lng b/interface/web/admin/lib/lang/se_server_list.lng index 23d6940f7..031ac767f 100644 --- a/interface/web/admin/lib/lang/se_server_list.lng +++ b/interface/web/admin/lib/lang/se_server_list.lng @@ -11,4 +11,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny server'; $wb['proxy_server_txt'] = 'Proxy'; $wb['firewall_server_txt'] = 'Brandvägg'; ?> - diff --git a/interface/web/admin/lib/lang/se_server_php.lng b/interface/web/admin/lib/lang/se_server_php.lng index 3b6096e2b..addbfa493 100644 --- a/interface/web/admin/lib/lang/se_server_php.lng +++ b/interface/web/admin/lib/lang/se_server_php.lng @@ -14,4 +14,3 @@ $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; ?> - diff --git a/interface/web/admin/lib/lang/se_server_php_list.lng b/interface/web/admin/lib/lang/se_server_php_list.lng index 353e156f1..f5762ad3a 100644 --- a/interface/web/admin/lib/lang/se_server_php_list.lng +++ b/interface/web/admin/lib/lang/se_server_php_list.lng @@ -5,4 +5,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny PHP-version'; $wb['client_id_txt'] = 'Kund'; $wb['name_txt'] = 'PHP-namn'; ?> - diff --git a/interface/web/admin/lib/lang/se_software_package.lng b/interface/web/admin/lib/lang/se_software_package.lng index f06ca05fe..086902db0 100644 --- a/interface/web/admin/lib/lang/se_software_package.lng +++ b/interface/web/admin/lib/lang/se_software_package.lng @@ -4,4 +4,3 @@ $wb['package_key_txt'] = 'Packetnyckel'; $wb['Software Package'] = 'Mjukvarupaket'; $wb['Modify software package details'] = 'Redigera mjukvarupaketets uppgifter'; ?> - diff --git a/interface/web/admin/lib/lang/se_software_package_install.lng b/interface/web/admin/lib/lang/se_software_package_install.lng index 7b0b28bc0..434fc4bc9 100644 --- a/interface/web/admin/lib/lang/se_software_package_install.lng +++ b/interface/web/admin/lib/lang/se_software_package_install.lng @@ -4,4 +4,3 @@ $wb['install_key_txt'] = 'Fyll i installationsnyckel'; $wb['btn_save_txt'] = 'Påbörja installation'; $wb['btn_cancel_txt'] = 'Avbryt'; ?> - diff --git a/interface/web/admin/lib/lang/se_software_package_list.lng b/interface/web/admin/lib/lang/se_software_package_list.lng index 7762e62a2..c0222e1ba 100644 --- a/interface/web/admin/lib/lang/se_software_package_list.lng +++ b/interface/web/admin/lib/lang/se_software_package_list.lng @@ -11,4 +11,3 @@ $wb['no_packages_txt'] = 'Inga paket tillgängliga'; $wb['edit_txt'] = 'Redigera'; $wb['delete_txt'] = 'Radera'; ?> - diff --git a/interface/web/admin/lib/lang/se_software_repo.lng b/interface/web/admin/lib/lang/se_software_repo.lng index db59a1b06..a0e0de682 100644 --- a/interface/web/admin/lib/lang/se_software_repo.lng +++ b/interface/web/admin/lib/lang/se_software_repo.lng @@ -6,4 +6,3 @@ $wb['repo_password_txt'] = 'Lösenord (Frivilligt)'; $wb['active_txt'] = 'Aktiv'; $wb['Software Repository which may contain addons or updates'] = 'Pragarmvarubibliotek som kan innehålla uppdateringar eller tillägg'; ?> - diff --git a/interface/web/admin/lib/lang/se_software_repo_list.lng b/interface/web/admin/lib/lang/se_software_repo_list.lng index d99709199..b7a219ffa 100644 --- a/interface/web/admin/lib/lang/se_software_repo_list.lng +++ b/interface/web/admin/lib/lang/se_software_repo_list.lng @@ -4,4 +4,3 @@ $wb['active_txt'] = 'Active'; $wb['repo_name_txt'] = 'Repository'; $wb['repo_url_txt'] = 'URL'; ?> - diff --git a/interface/web/admin/lib/lang/se_software_update_list.lng b/interface/web/admin/lib/lang/se_software_update_list.lng index 41728b256..0cf7c0edd 100644 --- a/interface/web/admin/lib/lang/se_software_update_list.lng +++ b/interface/web/admin/lib/lang/se_software_update_list.lng @@ -7,4 +7,3 @@ $wb['action_txt'] = 'Händelse'; $wb['server_select_txt'] = 'Välj server'; $wb['no_updates_txt'] = 'Inga tillgängliga uppdateringar'; ?> - diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index 25b359358..7e9618102 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -64,9 +64,8 @@ $wb['customer_no_template_error_regex_txt'] = 'Kundnummermallen innehåller otil $wb['customer_no_start_txt'] = 'Kundnummer startvärde'; $wb['customer_no_counter_txt'] = 'Kundnummer räknare'; $wb['session_timeout_txt'] = 'Session timeout (minuter)'; -$wb['session_allow_endless_txt'] = 'Aktivera "håll mig inloggad"'; +$wb['session_allow_endless_txt'] = 'Aktivera \"håll mig inloggad\"'; $wb['No'] = 'Nej'; $wb['min_password_length_txt'] = 'Minsta lösenordslängd'; $wb['min_password_strength_txt'] = 'Minsta lösenordsstyrka'; ?> - diff --git a/interface/web/admin/lib/lang/se_tpl_default_admin.lng b/interface/web/admin/lib/lang/se_tpl_default_admin.lng index d8989edcc..88945588a 100644 --- a/interface/web/admin/lib/lang/se_tpl_default_admin.lng +++ b/interface/web/admin/lib/lang/se_tpl_default_admin.lng @@ -16,4 +16,3 @@ $wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory'; $wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory'; ?> - diff --git a/interface/web/admin/lib/lang/se_users.lng b/interface/web/admin/lib/lang/se_users.lng index 3acec5318..9a819be74 100644 --- a/interface/web/admin/lib/lang/se_users.lng +++ b/interface/web/admin/lib/lang/se_users.lng @@ -32,4 +32,3 @@ $wb['password_match_txt'] = 'Lösenorden matchar'; $wb['username_error_collision'] = 'Användarnamnet får inte vara web eller web och ett nummer'; $wb['client_not_admin_err'] = 'En användare som tillhör en kund kan inte sättas som admin'; ?> - diff --git a/interface/web/admin/lib/lang/se_users_list.lng b/interface/web/admin/lib/lang/se_users_list.lng index f9ea80304..a6580d308 100644 --- a/interface/web/admin/lib/lang/se_users_list.lng +++ b/interface/web/admin/lib/lang/se_users_list.lng @@ -7,4 +7,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny användare'; $wb['warning_txt'] = 'VARNING: Ändra inte några användarinställningar här. Use the Client- and Reseller settings in the Client module instead. Modifying or changing Users or groups here may cause data loss!'; $wb['groups_txt'] = 'Grupper'; ?> - diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index de4573dd9..776357db6 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 5b2d389d7..6d6e05d55 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -189,6 +189,56 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; $wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; ?> diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng index d336b3b7e..0c1ca5977 100644 --- a/interface/web/client/lib/lang/el_reseller.lng +++ b/interface/web/client/lib/lang/el_reseller.lng @@ -157,5 +157,5 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; ?> diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng index f37d32618..2de8e0a5c 100644 --- a/interface/web/client/lib/lang/fr_client.lng +++ b/interface/web/client/lib/lang/fr_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Saisissez une adresse email valide.'; $wb['customer_no_error_unique'] = 'Le numéro client doit être unique (ou vide).'; $wb['paypal_email_error_isemail'] = 'Saisissez un compte Paypal valide.'; $wb['paypal_email_txt'] = 'Compte Paypal'; -$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \"custom\" est sélectionné.'; +$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \\"custom\\" est sélectionné.'; $wb['aps_limits_txt'] = 'Nombre max d\'Installeur APS'; $wb['limit_aps_txt'] = 'Nombre max d\'instances APS'; $wb['limit_aps_error_notint'] = 'La limite d\'instances APS doit être un nombre'; diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng index c71020df3..a4b0d6211 100644 --- a/interface/web/client/lib/lang/fr_reseller.lng +++ b/interface/web/client/lib/lang/fr_reseller.lng @@ -157,5 +157,5 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; ?> diff --git a/interface/web/client/lib/lang/se.lng b/interface/web/client/lib/lang/se.lng index 271f69d05..3f396d646 100644 --- a/interface/web/client/lib/lang/se.lng +++ b/interface/web/client/lib/lang/se.lng @@ -24,4 +24,3 @@ $wb['error_domain_in webuse'] = 'Den här domänen kan inte tas bort då den anv $wb['error_client_can_not_add_domain'] = 'Du kan inte lägga till en ny domän'; $wb['error_client_group_id_empty'] = 'Du måste välja en kund
'; ?> - diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng index c8540a69d..f6336149c 100644 --- a/interface/web/client/lib/lang/se_client.lng +++ b/interface/web/client/lib/lang/se_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Vänligen ange en giltig epostadress'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal epostadress'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than "custom" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; @@ -154,4 +154,3 @@ $wb['added_date_txt'] = 'Tillagd datum'; $wb['parent_client_id_txt'] = 'Kund till återförsäljare'; $wb['none_txt'] = 'ingen'; ?> - diff --git a/interface/web/client/lib/lang/se_client_circle.lng b/interface/web/client/lib/lang/se_client_circle.lng index f30732ea0..df3c99511 100644 --- a/interface/web/client/lib/lang/se_client_circle.lng +++ b/interface/web/client/lib/lang/se_client_circle.lng @@ -7,4 +7,3 @@ $wb['client_ids_txt'] = 'Kunder/Återförsäljare'; $wb['description_txt'] = 'BEskrivning'; $wb['active_txt'] = 'Aktiv'; ?> - diff --git a/interface/web/client/lib/lang/se_client_circle_list.lng b/interface/web/client/lib/lang/se_client_circle_list.lng index 21ae4d602..f98f551c5 100644 --- a/interface/web/client/lib/lang/se_client_circle_list.lng +++ b/interface/web/client/lib/lang/se_client_circle_list.lng @@ -8,4 +8,3 @@ $wb['filter_txt'] = 'Filter'; $wb['delete_txt'] = 'Radera'; $wb['active_txt'] = 'Aktiv'; ?> - diff --git a/interface/web/client/lib/lang/se_client_del.lng b/interface/web/client/lib/lang/se_client_del.lng index 9cf44fcfe..99aa9d8a4 100644 --- a/interface/web/client/lib/lang/se_client_del.lng +++ b/interface/web/client/lib/lang/se_client_del.lng @@ -5,4 +5,3 @@ $wb['btn_save_txt'] = 'Radera kunden'; $wb['btn_cancel_txt'] = 'Avbryt utan att radera kunden'; $wb['confirm_client_delete_txt'] = 'Är du säker på att du vill radera den här kunden?'; ?> - diff --git a/interface/web/client/lib/lang/se_client_message.lng b/interface/web/client/lib/lang/se_client_message.lng index 625b0db7a..e6f9aba91 100644 --- a/interface/web/client/lib/lang/se_client_message.lng +++ b/interface/web/client/lib/lang/se_client_message.lng @@ -18,4 +18,3 @@ $wb['variables_txt'] = 'Variabler:'; $wb['gender_m_txt'] = 'Herr'; $wb['gender_f_txt'] = 'Fru'; ?> - diff --git a/interface/web/client/lib/lang/se_client_message_template.lng b/interface/web/client/lib/lang/se_client_message_template.lng index 3ff948090..e406d37ca 100644 --- a/interface/web/client/lib/lang/se_client_message_template.lng +++ b/interface/web/client/lib/lang/se_client_message_template.lng @@ -9,4 +9,3 @@ $wb['variables_txt'] = 'Variabler'; $wb['variables_description_txt'] = '(Användarnamn- och lösenordsvariablerna är endast tillgängliga i välkomstmail.)'; $wb['duplicate_welcome_error'] = 'Det kan bara finnas en standardmall för välkomstmail. Vänligen redigera den existerande mallen istället för att lägga till en ny.'; ?> - diff --git a/interface/web/client/lib/lang/se_client_message_template_list.lng b/interface/web/client/lib/lang/se_client_message_template_list.lng index f94a10697..088d2698e 100644 --- a/interface/web/client/lib/lang/se_client_message_template_list.lng +++ b/interface/web/client/lib/lang/se_client_message_template_list.lng @@ -3,4 +3,3 @@ $wb['list_head_txt'] = 'Epostmallar'; $wb['template_type_txt'] = 'Meddelande till'; $wb['template_name_txt'] = 'Mallnamn'; ?> - diff --git a/interface/web/client/lib/lang/se_client_template.lng b/interface/web/client/lib/lang/se_client_template.lng index 12e435543..353960c94 100644 --- a/interface/web/client/lib/lang/se_client_template.lng +++ b/interface/web/client/lib/lang/se_client_template.lng @@ -90,4 +90,3 @@ $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; ?> - diff --git a/interface/web/client/lib/lang/se_client_template_list.lng b/interface/web/client/lib/lang/se_client_template_list.lng index cc9d5d5a6..b594337e7 100644 --- a/interface/web/client/lib/lang/se_client_template_list.lng +++ b/interface/web/client/lib/lang/se_client_template_list.lng @@ -4,4 +4,3 @@ $wb['template_type_txt'] = 'Typ'; $wb['template_name_txt'] = 'Mallnamn'; $wb['template_id_txt'] = 'Mall-ID'; ?> - diff --git a/interface/web/client/lib/lang/se_clients_list.lng b/interface/web/client/lib/lang/se_clients_list.lng index 89fe0edee..263912f0d 100644 --- a/interface/web/client/lib/lang/se_clients_list.lng +++ b/interface/web/client/lib/lang/se_clients_list.lng @@ -9,4 +9,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny kund'; $wb['username_txt'] = 'Användarnamn'; $wb['customer_no_txt'] = 'Kundnummer'; ?> - diff --git a/interface/web/client/lib/lang/se_domain.lng b/interface/web/client/lib/lang/se_domain.lng index 7d648de16..df60bbeca 100644 --- a/interface/web/client/lib/lang/se_domain.lng +++ b/interface/web/client/lib/lang/se_domain.lng @@ -4,4 +4,3 @@ $wb['domain_error_unique'] = 'Domänen finns redan'; $wb['domain_error_regex'] = 'Denna domän är ogiltig'; $wb['Domain'] = 'Domän'; ?> - diff --git a/interface/web/client/lib/lang/se_domain_list.lng b/interface/web/client/lib/lang/se_domain_list.lng index da7504fd4..1262367a9 100644 --- a/interface/web/client/lib/lang/se_domain_list.lng +++ b/interface/web/client/lib/lang/se_domain_list.lng @@ -4,4 +4,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny domän'; $wb['domain_txt'] = 'Domän'; $wb['user_txt'] = 'Kund'; ?> - diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng index de8f50456..7fab36dee 100644 --- a/interface/web/client/lib/lang/se_reseller.lng +++ b/interface/web/client/lib/lang/se_reseller.lng @@ -159,4 +159,3 @@ $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; ?> - diff --git a/interface/web/client/lib/lang/se_resellers_list.lng b/interface/web/client/lib/lang/se_resellers_list.lng index 3448e5cd4..5e03807c7 100644 --- a/interface/web/client/lib/lang/se_resellers_list.lng +++ b/interface/web/client/lib/lang/se_resellers_list.lng @@ -9,4 +9,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny återförsäljare'; $wb['customer_no_txt'] = 'Kundnummer'; $wb['username_txt'] = 'Användarnamn'; ?> - diff --git a/interface/web/dashboard/lib/lang/se.lng b/interface/web/dashboard/lib/lang/se.lng index 11700f0ca..307e9e1ca 100644 --- a/interface/web/dashboard/lib/lang/se.lng +++ b/interface/web/dashboard/lib/lang/se.lng @@ -2,4 +2,3 @@ $wb['welcome_user_txt'] = 'Välkommen %s'; $wb['available_modules_txt'] = 'Tillgängliga moduler'; ?> - diff --git a/interface/web/dashboard/lib/lang/se_dashlet_limits.lng b/interface/web/dashboard/lib/lang/se_dashlet_limits.lng index 49473b7a0..9fbfe97cb 100644 --- a/interface/web/dashboard/lib/lang/se_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/se_dashlet_limits.lng @@ -28,4 +28,3 @@ $wb['limit_client_txt'] = 'Antal kunder'; $wb['limit_database_txt'] = 'Antal databaser'; $wb['limit_mailmailinglist_txt'] = 'Antal mailinglistor'; ?> - diff --git a/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng index 883b2a5af..1ed6f3f22 100644 --- a/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng +++ b/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng @@ -6,4 +6,3 @@ $wb['used_txt'] = 'Använt utrymme'; $wb['quota_txt'] = 'Kvot'; $wb['no_email_accounts_txt'] = 'Inga epostkonton hittades'; ?> - diff --git a/interface/web/dashboard/lib/lang/se_dashlet_modules.lng b/interface/web/dashboard/lib/lang/se_dashlet_modules.lng index 4dff679c7..a6f972804 100644 --- a/interface/web/dashboard/lib/lang/se_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/se_dashlet_modules.lng @@ -1,4 +1,3 @@ - diff --git a/interface/web/dashboard/lib/lang/se_dashlet_quota.lng b/interface/web/dashboard/lib/lang/se_dashlet_quota.lng index 325b04dff..7a9603b0f 100644 --- a/interface/web/dashboard/lib/lang/se_dashlet_quota.lng +++ b/interface/web/dashboard/lib/lang/se_dashlet_quota.lng @@ -6,4 +6,3 @@ $wb['hard_txt'] = 'Hård gräns'; $wb['soft_txt'] = 'Mjuk gräns'; $wb['no_sites_txt'] = 'Ingen webbsida hittades.'; ?> - diff --git a/interface/web/designer/lib/lang/se.lng b/interface/web/designer/lib/lang/se.lng index 29f4a51ef..acb6c3546 100644 --- a/interface/web/designer/lib/lang/se.lng +++ b/interface/web/designer/lib/lang/se.lng @@ -1,3 +1,2 @@ - diff --git a/interface/web/designer/lib/lang/se_form_edit.lng b/interface/web/designer/lib/lang/se_form_edit.lng index 72d80e52e..1a3a831ff 100644 --- a/interface/web/designer/lib/lang/se_form_edit.lng +++ b/interface/web/designer/lib/lang/se_form_edit.lng @@ -22,4 +22,3 @@ $wb['auth_preset_perm_user_txt'] = 'Beh. Användare'; $wb['auth_preset_perm_group_txt'] = 'Beh. Grupp'; $wb['auth_preset_perm_other_txt'] = 'Beh. Andra'; ?> - diff --git a/interface/web/designer/lib/lang/se_form_list.lng b/interface/web/designer/lib/lang/se_form_list.lng index 7951bb77b..10f41870b 100644 --- a/interface/web/designer/lib/lang/se_form_list.lng +++ b/interface/web/designer/lib/lang/se_form_list.lng @@ -5,4 +5,3 @@ $wb['module_txt'] = 'Modul'; $wb['title_txt'] = 'Titel'; $wb['description_txt'] = 'Beskrivning'; ?> - diff --git a/interface/web/designer/lib/lang/se_form_show.lng b/interface/web/designer/lib/lang/se_form_show.lng index 1d5de499b..3e21d62ef 100644 --- a/interface/web/designer/lib/lang/se_form_show.lng +++ b/interface/web/designer/lib/lang/se_form_show.lng @@ -16,4 +16,3 @@ $wb['module_del_txt'] = 'Ta bort modulen och alla undermappar?'; $wb['menu_del_txt'] = 'Ta bort meny och allt menyinnehåll?'; $wb['item_del_txt'] = 'Ta bort menyinnehåll?'; ?> - diff --git a/interface/web/designer/lib/lang/se_module_edit.lng b/interface/web/designer/lib/lang/se_module_edit.lng index 992a0747c..ba828ebbf 100644 --- a/interface/web/designer/lib/lang/se_module_edit.lng +++ b/interface/web/designer/lib/lang/se_module_edit.lng @@ -10,4 +10,3 @@ $wb['cancel_txt'] = 'Avbryt'; $wb['header_txt'] = 'Modulinställningar'; $wb['description_txt'] = 'Description

Modulename: Namn på modul mappen. Endast siffror, bokstäver och understreck är tillåtna.
Moduletitle: Kommer att visas i (övre) huvud navigerigsramen.
Template file: Mall fil för modulen. Just nu finns: module.tpl.htm och module_tree.tpl.htm. Standard är module.tpl.htm.
NaviFrame: Om module module_tree.tpl.htm väljs som mall file, skriv här sökvägen till skriptfilen för den vänstra ramen.
Default page: Dessa sidor kommer att visas när modulen öppnas.
Tab width: Bredd på Flikarna i huvud navigerings ramen. Detta fält är tomt som standard. Du kan skriva in ett absolutvärde i pixlar (ex. 20) eller relativt värde (ex. 20%).
Hint: Alla sökvägar är relativa till mappen web.'; ?> - diff --git a/interface/web/designer/lib/lang/se_module_list.lng b/interface/web/designer/lib/lang/se_module_list.lng index d8408e28e..47ff22860 100644 --- a/interface/web/designer/lib/lang/se_module_list.lng +++ b/interface/web/designer/lib/lang/se_module_list.lng @@ -3,4 +3,3 @@ $wb['list_head_txt'] = 'Huvudmodul'; $wb['module_txt'] = 'Modul'; $wb['title_txt'] = 'Titel'; ?> - diff --git a/interface/web/designer/lib/lang/se_module_nav_edit.lng b/interface/web/designer/lib/lang/se_module_nav_edit.lng index 28bf0ac90..468f8d8eb 100644 --- a/interface/web/designer/lib/lang/se_module_nav_edit.lng +++ b/interface/web/designer/lib/lang/se_module_nav_edit.lng @@ -4,4 +4,3 @@ $wb['header_txt'] = 'Nav-egenskaper'; $wb['save_txt'] = 'Spara'; $wb['cancel_txt'] = 'Avbryt'; ?> - diff --git a/interface/web/designer/lib/lang/se_module_nav_item_edit.lng b/interface/web/designer/lib/lang/se_module_nav_item_edit.lng index b9f863983..f5df09057 100644 --- a/interface/web/designer/lib/lang/se_module_nav_item_edit.lng +++ b/interface/web/designer/lib/lang/se_module_nav_item_edit.lng @@ -6,4 +6,3 @@ $wb['header_txt'] = 'Nav. egenskaper'; $wb['save_txt'] = 'Spara'; $wb['cancel_txt'] = 'Avbryt'; ?> - diff --git a/interface/web/designer/lib/lang/se_module_show.lng b/interface/web/designer/lib/lang/se_module_show.lng index 497a62ddf..391947cba 100644 --- a/interface/web/designer/lib/lang/se_module_show.lng +++ b/interface/web/designer/lib/lang/se_module_show.lng @@ -14,4 +14,3 @@ $wb['module_del_txt'] = 'Ta bort modulen och alla undermappar?'; $wb['menu_del_txt'] = 'Ta bort meny och allt menyinnehåll?'; $wb['item_del_txt'] = 'Ta bort menyinnehåll?'; ?> - diff --git a/interface/web/dns/lib/lang/ar_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/ar_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/ar_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/bg_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/bg_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/bg_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/cz_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/cz_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/cz_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/el_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/el_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/el_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/fi_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/fi_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/fi_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/fr_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/fr_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/fr_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/hu_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/hu_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/hu_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/id_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/id_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/id_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/it_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/it_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/it_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/ja_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/ja_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/ja_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/nl_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/nl_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/nl_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/pl_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/pl_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/pl_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/pt_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/pt_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/pt_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/ro_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/ro_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/ro_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/ru_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/ru_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/ru_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/se.lng b/interface/web/dns/lib/lang/se.lng index 80c391890..4f443f079 100644 --- a/interface/web/dns/lib/lang/se.lng +++ b/interface/web/dns/lib/lang/se.lng @@ -20,4 +20,3 @@ $wb['Templates'] = 'Mallar'; $wb['Secondary Zones'] = 'Sekundära zoner'; $wb['Import Zone File'] = 'Importera zonfiler'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_a.lng b/interface/web/dns/lib/lang/se_dns_a.lng index a69314db6..7dcfc37ca 100644 --- a/interface/web/dns/lib/lang/se_dns_a.lng +++ b/interface/web/dns/lib/lang/se_dns_a.lng @@ -15,4 +15,3 @@ $wb['data_error_regex'] = 'IP-Address format invalid'; $wb['data_error_duplicate'] = 'Duplicate A-Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_a_list.lng b/interface/web/dns/lib/lang/se_dns_a_list.lng index b92f4c0f6..3fa1e7f8a 100644 --- a/interface/web/dns/lib/lang/se_dns_a_list.lng +++ b/interface/web/dns/lib/lang/se_dns_a_list.lng @@ -13,4 +13,3 @@ $wb['page_txt'] = 'Page'; $wb['page_of_txt'] = 'of'; $wb['delete_confirmation'] = 'Do you really want to delete this record?'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_aaaa.lng b/interface/web/dns/lib/lang/se_dns_aaaa.lng index a8cfbf1ed..b4c5b279b 100644 --- a/interface/web/dns/lib/lang/se_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/se_dns_aaaa.lng @@ -14,4 +14,3 @@ $wb['data_error_empty'] = 'IP-Address empty'; $wb['data_error_regex'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_alias.lng b/interface/web/dns/lib/lang/se_dns_alias.lng index 05c3f629d..bd4be9f21 100644 --- a/interface/web/dns/lib/lang/se_dns_alias.lng +++ b/interface/web/dns/lib/lang/se_dns_alias.lng @@ -14,4 +14,3 @@ $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_cname.lng b/interface/web/dns/lib/lang/se_dns_cname.lng index b4e8ae1ab..b7ceb5d9c 100644 --- a/interface/web/dns/lib/lang/se_dns_cname.lng +++ b/interface/web/dns/lib/lang/se_dns_cname.lng @@ -15,4 +15,3 @@ $wb['data_error_regex'] = 'Target hostname format invalid'; $wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_hinfo.lng b/interface/web/dns/lib/lang/se_dns_hinfo.lng index df19a8491..937bd9b4a 100644 --- a/interface/web/dns/lib/lang/se_dns_hinfo.lng +++ b/interface/web/dns/lib/lang/se_dns_hinfo.lng @@ -14,4 +14,3 @@ $wb['data_error_empty'] = 'Host information empty'; $wb['data_error_regex'] = 'Host Information format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_import.lng b/interface/web/dns/lib/lang/se_dns_import.lng index aea47ba1e..4d703fa86 100644 --- a/interface/web/dns/lib/lang/se_dns_import.lng +++ b/interface/web/dns/lib/lang/se_dns_import.lng @@ -12,4 +12,3 @@ $wb['title'] = 'Importera zonfiler'; $wb['no_file_uploaded_error'] = 'Ingen zonfil uppladdad'; $wb['zone_file_import_txt'] = 'Zonfilsimport'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_mx.lng b/interface/web/dns/lib/lang/se_dns_mx.lng index 0bfc2348f..58921d35f 100644 --- a/interface/web/dns/lib/lang/se_dns_mx.lng +++ b/interface/web/dns/lib/lang/se_dns_mx.lng @@ -16,4 +16,3 @@ $wb['data_error_regex'] = 'Mailserver hostname format invalid'; $wb['duplicate_mx_record_txt'] = 'Duplicate MX record.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_ns.lng b/interface/web/dns/lib/lang/se_dns_ns.lng index 2ce51da7b..d8d652cc5 100644 --- a/interface/web/dns/lib/lang/se_dns_ns.lng +++ b/interface/web/dns/lib/lang/se_dns_ns.lng @@ -14,4 +14,3 @@ $wb['data_error_empty'] = 'Namnserver tom'; $wb['data_error_regex'] = 'Namnserverformatet är ogiltigt'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_ptr.lng b/interface/web/dns/lib/lang/se_dns_ptr.lng index 6c42a8f94..254b45c07 100644 --- a/interface/web/dns/lib/lang/se_dns_ptr.lng +++ b/interface/web/dns/lib/lang/se_dns_ptr.lng @@ -14,4 +14,3 @@ $wb['data_error_empty'] = 'Canonical hostname empty'; $wb['data_error_regex'] = 'Canonical hostname format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_rp.lng b/interface/web/dns/lib/lang/se_dns_rp.lng index e37bc8f93..91c4f07bd 100644 --- a/interface/web/dns/lib/lang/se_dns_rp.lng +++ b/interface/web/dns/lib/lang/se_dns_rp.lng @@ -14,4 +14,3 @@ $wb['data_error_empty'] = 'Responsible person field empty'; $wb['data_error_regex'] = 'Responsible person field format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_slave.lng b/interface/web/dns/lib/lang/se_dns_slave.lng index 254f360d3..c426df7ed 100644 --- a/interface/web/dns/lib/lang/se_dns_slave.lng +++ b/interface/web/dns/lib/lang/se_dns_slave.lng @@ -15,4 +15,3 @@ $wb['eg_domain_tld'] = 'e.g. domain.tld.'; $wb['ipv4_form_txt'] = 'IPv4 form - e.g. 1.2.3.4'; $wb['secondary_zone_txt'] = 'Secondary DNS Zone'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/se_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/se_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/se_dns_slave_list.lng b/interface/web/dns/lib/lang/se_dns_slave_list.lng index 6e7951de2..4ced2ddb5 100644 --- a/interface/web/dns/lib/lang/se_dns_slave_list.lng +++ b/interface/web/dns/lib/lang/se_dns_slave_list.lng @@ -7,4 +7,3 @@ $wb['ns_txt'] = 'NS'; $wb['add_new_record_txt'] = 'Add new secondary DNS Zone'; $wb['eg_domain_tld'] = 'e.g. domain.tld.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_soa.lng b/interface/web/dns/lib/lang/se_dns_soa.lng index 4f2eefabc..935211a06 100644 --- a/interface/web/dns/lib/lang/se_dns_soa.lng +++ b/interface/web/dns/lib/lang/se_dns_soa.lng @@ -36,4 +36,3 @@ $wb['minimum_range_error'] = 'Min. Minimum time is 60 seconds.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['xfer_error_regex'] = 'Also notify: Please use an IP address.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/se_dns_soa_list.lng b/interface/web/dns/lib/lang/se_dns_soa_list.lng index b534641c1..da7b8e28d 100644 --- a/interface/web/dns/lib/lang/se_dns_soa_list.lng +++ b/interface/web/dns/lib/lang/se_dns_soa_list.lng @@ -8,4 +8,3 @@ $wb['mbox_txt'] = 'Email'; $wb['add_new_record_txt'] = 'Add new DNS Zone (SOA)'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_srv.lng b/interface/web/dns/lib/lang/se_dns_srv.lng index fae1b7018..866f44dab 100644 --- a/interface/web/dns/lib/lang/se_dns_srv.lng +++ b/interface/web/dns/lib/lang/se_dns_srv.lng @@ -18,4 +18,3 @@ $wb['srv_error_regex'] = 'Invalid server record format. The server record must c $wb['aux_txt'] = 'Priority'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_template.lng b/interface/web/dns/lib/lang/se_dns_template.lng index 6fd5b5c49..516d5c275 100644 --- a/interface/web/dns/lib/lang/se_dns_template.lng +++ b/interface/web/dns/lib/lang/se_dns_template.lng @@ -4,4 +4,3 @@ $wb['fields_txt'] = 'Fält'; $wb['template_txt'] = 'Mall'; $wb['visible_txt'] = 'Synlig'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_template_list.lng b/interface/web/dns/lib/lang/se_dns_template_list.lng index 120335f51..8d9d730e5 100644 --- a/interface/web/dns/lib/lang/se_dns_template_list.lng +++ b/interface/web/dns/lib/lang/se_dns_template_list.lng @@ -4,4 +4,3 @@ $wb['visible_txt'] = 'Visible'; $wb['name_txt'] = 'Name'; $wb['add_new_record_txt'] = 'Add new record'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_txt.lng b/interface/web/dns/lib/lang/se_dns_txt.lng index 0fc9b2515..31da6ebf1 100644 --- a/interface/web/dns/lib/lang/se_dns_txt.lng +++ b/interface/web/dns/lib/lang/se_dns_txt.lng @@ -14,4 +14,3 @@ $wb['data_error_empty'] = 'Text empty'; $wb['data_error_regex'] = 'Text format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> - diff --git a/interface/web/dns/lib/lang/se_dns_wizard.lng b/interface/web/dns/lib/lang/se_dns_wizard.lng index 3bb0a63f3..52955fdcc 100644 --- a/interface/web/dns/lib/lang/se_dns_wizard.lng +++ b/interface/web/dns/lib/lang/se_dns_wizard.lng @@ -36,4 +36,3 @@ $wb['globalsearch_suggestions_text_txt'] = 'Suggestions'; $wb['list_head_txt'] = 'DNS Zone Wizard'; $wb['list_desc_txt'] = 'Create a DNS Zone via a wizard'; ?> - diff --git a/interface/web/dns/lib/lang/sk_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/sk_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/sk_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/dns/lib/lang/tr_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/tr_dns_slave_admin_list.lng new file mode 100644 index 000000000..43f67783c --- /dev/null +++ b/interface/web/dns/lib/lang/tr_dns_slave_admin_list.lng @@ -0,0 +1,10 @@ + diff --git a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng new file mode 100644 index 000000000..44cec900b --- /dev/null +++ b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng @@ -0,0 +1,11 @@ + diff --git a/interface/web/help/lib/lang/se.lng b/interface/web/help/lib/lang/se.lng index e09625785..58fe6a006 100644 --- a/interface/web/help/lib/lang/se.lng +++ b/interface/web/help/lib/lang/se.lng @@ -12,4 +12,3 @@ $wb['Manage Sections'] = 'Hantera kategorier'; $wb['Add a Question & Answer Pair'] = 'Lägg till fråga och svar'; $wb['Manage Questions'] = 'Hantera frågor'; ?> - diff --git a/interface/web/help/lib/lang/se_faq_form.lng b/interface/web/help/lib/lang/se_faq_form.lng index 743e02d5e..5a7f38483 100644 --- a/interface/web/help/lib/lang/se_faq_form.lng +++ b/interface/web/help/lib/lang/se_faq_form.lng @@ -4,4 +4,3 @@ $wb['faq_question_txt'] = 'Fråga'; $wb['faq_answer_txt'] = 'Svar'; $wb['faq_section_txt'] = 'Kategori'; ?> - diff --git a/interface/web/help/lib/lang/se_faq_manage_questions_list.lng b/interface/web/help/lib/lang/se_faq_manage_questions_list.lng index c8021763a..d615cdabf 100644 --- a/interface/web/help/lib/lang/se_faq_manage_questions_list.lng +++ b/interface/web/help/lib/lang/se_faq_manage_questions_list.lng @@ -7,4 +7,3 @@ $wb['faq_sections_txt'] = 'Kategori'; $wb['faq_faq_questions_txt'] = 'Vanliga frågor'; $wb['faq_new_question_txt'] = 'Lägg till ny fråga och svar'; ?> - diff --git a/interface/web/help/lib/lang/se_faq_sections_form.lng b/interface/web/help/lib/lang/se_faq_sections_form.lng index 9367eeb9f..5cc812f8e 100644 --- a/interface/web/help/lib/lang/se_faq_sections_form.lng +++ b/interface/web/help/lib/lang/se_faq_sections_form.lng @@ -1,4 +1,3 @@ - diff --git a/interface/web/help/lib/lang/se_help_faq_list.lng b/interface/web/help/lib/lang/se_help_faq_list.lng index c8aebaf36..bc1d42103 100644 --- a/interface/web/help/lib/lang/se_help_faq_list.lng +++ b/interface/web/help/lib/lang/se_help_faq_list.lng @@ -1,4 +1,3 @@ - diff --git a/interface/web/help/lib/lang/se_help_faq_sections_list.lng b/interface/web/help/lib/lang/se_help_faq_sections_list.lng index 021feb36f..5ea1a7163 100644 --- a/interface/web/help/lib/lang/se_help_faq_sections_list.lng +++ b/interface/web/help/lib/lang/se_help_faq_sections_list.lng @@ -6,4 +6,3 @@ $wb['faq_sections_txt'] = 'Kategori'; $wb['faq_faq_sections_txt'] = 'FAQ-kategorier'; $wb['faq_new_section_txt'] = 'Lägg till ny kategori'; ?> - diff --git a/interface/web/help/lib/lang/se_support_message.lng b/interface/web/help/lib/lang/se_support_message.lng index 0de842041..b3cefaa1a 100644 --- a/interface/web/help/lib/lang/se_support_message.lng +++ b/interface/web/help/lib/lang/se_support_message.lng @@ -13,4 +13,3 @@ $wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request h $wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; $wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> - diff --git a/interface/web/help/lib/lang/se_support_message_list.lng b/interface/web/help/lib/lang/se_support_message_list.lng index f68bb5808..af9663f7b 100644 --- a/interface/web/help/lib/lang/se_support_message_list.lng +++ b/interface/web/help/lib/lang/se_support_message_list.lng @@ -5,4 +5,3 @@ $wb['subject_txt'] = 'Ämne'; $wb['add_new_record_txt'] = 'Skapa nyttt supportmeddelande'; $wb['date_txt'] = 'Datum'; ?> - diff --git a/interface/web/login/lib/lang/se.lng b/interface/web/login/lib/lang/se.lng index e3301e086..aeb58b158 100644 --- a/interface/web/login/lib/lang/se.lng +++ b/interface/web/login/lib/lang/se.lng @@ -25,4 +25,3 @@ $wb['back_txt'] = 'Tillbaka'; $wb['email_error'] = 'Epostadressen innehåller otillåtna tecken eller är felformatterad.'; $wb['stay_logged_in_txt'] = 'Håll mig inloggad'; ?> - diff --git a/interface/web/login/lib/lang/se_login_as.lng b/interface/web/login/lib/lang/se_login_as.lng index e83178476..fea3abca0 100644 --- a/interface/web/login/lib/lang/se_login_as.lng +++ b/interface/web/login/lib/lang/se_login_as.lng @@ -1,12 +1,11 @@ - diff --git a/interface/web/mail/lib/lang/fr_mail_get.lng b/interface/web/mail/lib/lang/fr_mail_get.lng index 6779ce3c4..934af5e2e 100644 --- a/interface/web/mail/lib/lang/fr_mail_get.lng +++ b/interface/web/mail/lib/lang/fr_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Le mot de passe est vide.'; $wb['destination_error_isemail'] = 'Pas de destination sélectionnée.'; $wb['source_server_error_regex'] = 'Le serveur POP3 / IMAP n\'est pas un nom de domaine valide.'; $wb['source_read_all_txt'] = 'Récupérer tous les emails (incl. les emails lus)'; -$wb['error_delete_read_all_combination'] = 'Combinaison d\'options non autorisée. Vous ne pouvez pas utiliser \"Supprimer les emails après récupération\" = non avec \"Récupérer tous les emails\" = oui'; +$wb['error_delete_read_all_combination'] = 'Combinaison d\'options non autorisée. Vous ne pouvez pas utiliser \\"Supprimer les emails après récupération\\" = non avec \\"Récupérer tous les emails\\" = oui'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/se.lng b/interface/web/mail/lib/lang/se.lng index 654237805..3edc2034d 100644 --- a/interface/web/mail/lib/lang/se.lng +++ b/interface/web/mail/lib/lang/se.lng @@ -46,4 +46,3 @@ $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_alias.lng b/interface/web/mail/lib/lang/se_mail_alias.lng index 4dc4e255f..e0f6135c0 100644 --- a/interface/web/mail/lib/lang/se_mail_alias.lng +++ b/interface/web/mail/lib/lang/se_mail_alias.lng @@ -12,4 +12,3 @@ $wb['domain_txt'] = 'Domän'; $wb['duplicate_email_alias_txt'] = 'Detta epostalias finns redan'; $wb['source_txt'] = 'Alias'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_alias_list.lng b/interface/web/mail/lib/lang/se_mail_alias_list.lng index e72d91bdd..3b63170e4 100644 --- a/interface/web/mail/lib/lang/se_mail_alias_list.lng +++ b/interface/web/mail/lib/lang/se_mail_alias_list.lng @@ -6,4 +6,3 @@ $wb['active_txt'] = 'Aktiv'; $wb['source_txt'] = 'Källa'; $wb['add_new_record_txt'] = 'Lägg till nytt epostalias'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_aliasdomain.lng b/interface/web/mail/lib/lang/se_mail_aliasdomain.lng index 9a2c5c39a..e2105fb2b 100644 --- a/interface/web/mail/lib/lang/se_mail_aliasdomain.lng +++ b/interface/web/mail/lib/lang/se_mail_aliasdomain.lng @@ -9,4 +9,3 @@ $wb['source_error_empty'] = 'Källdomän är tomt.'; $wb['source_error_unique'] = 'Källdomänen finns redan.'; $wb['source_error_regex'] = 'Ogiltig källdomän..'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/se_mail_aliasdomain_list.lng index d04d8cd78..e8740393d 100644 --- a/interface/web/mail/lib/lang/se_mail_aliasdomain_list.lng +++ b/interface/web/mail/lib/lang/se_mail_aliasdomain_list.lng @@ -5,4 +5,3 @@ $wb['source_txt'] = 'Källa'; $wb['destination_txt'] = 'Destination'; $wb['add_new_record_txt'] = 'Lägg till nytt domänalias'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_blacklist.lng b/interface/web/mail/lib/lang/se_mail_blacklist.lng index 70b1be58d..34b1f76db 100644 --- a/interface/web/mail/lib/lang/se_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/se_mail_blacklist.lng @@ -7,4 +7,3 @@ $wb['source_error_notempty'] = 'Adressfältet är tomt.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Det maximala antalet epostfilter för ditt konto är uppnått.'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_blacklist_list.lng b/interface/web/mail/lib/lang/se_mail_blacklist_list.lng index d3da0de6d..158b989ad 100644 --- a/interface/web/mail/lib/lang/se_mail_blacklist_list.lng +++ b/interface/web/mail/lib/lang/se_mail_blacklist_list.lng @@ -8,4 +8,3 @@ $wb['type_txt'] = 'Typ'; $wb['recipient_txt'] = 'Mottagare'; $wb['access_txt'] = 'åtkomst'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_content_filter.lng b/interface/web/mail/lib/lang/se_mail_content_filter.lng index c7fb5954f..2f82e76e8 100644 --- a/interface/web/mail/lib/lang/se_mail_content_filter.lng +++ b/interface/web/mail/lib/lang/se_mail_content_filter.lng @@ -7,4 +7,3 @@ $wb['action_txt'] = 'Händelse'; $wb['active_txt'] = 'Aktiv'; $wb['pattern_error_empty'] = 'Matchningsfältet är tomt.'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_content_filter_list.lng b/interface/web/mail/lib/lang/se_mail_content_filter_list.lng index c612f9b37..6eac1932c 100644 --- a/interface/web/mail/lib/lang/se_mail_content_filter_list.lng +++ b/interface/web/mail/lib/lang/se_mail_content_filter_list.lng @@ -6,4 +6,3 @@ $wb['pattern_txt'] = 'Mönster'; $wb['action_txt'] = 'Händelse'; $wb['add_new_record_txt'] = 'Lägg till nytt innehållsfilter'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_domain.lng b/interface/web/mail/lib/lang/se_mail_domain.lng index e07dd25f0..295d10a31 100644 --- a/interface/web/mail/lib/lang/se_mail_domain.lng +++ b/interface/web/mail/lib/lang/se_mail_domain.lng @@ -11,4 +11,3 @@ $wb['limit_maildomain_txt'] = 'Det maximala antalet epostdomäner för ditt kont $wb['policy_txt'] = 'Spamfilter'; $wb['no_policy'] = '- ej aktiverat -'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/se_mail_domain_admin_list.lng index bf8cd12ee..a4a203d7b 100644 --- a/interface/web/mail/lib/lang/se_mail_domain_admin_list.lng +++ b/interface/web/mail/lib/lang/se_mail_domain_admin_list.lng @@ -6,4 +6,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny domän'; $wb['active_txt'] = 'Aktiv'; $wb['sys_groupid_txt'] = 'Kund'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng index 9e03e6954..7ef111639 100644 --- a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng @@ -9,4 +9,3 @@ $wb['limit_mailcatchall_txt'] = 'Det maximala antalet catchall-adresser för dit $wb['source_txt'] = 'Källa'; $wb['destination_error_isemail'] = 'Destinationen när inte en giltig epostadress.'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/se_mail_domain_catchall_list.lng index 0e6958eb5..51789ee52 100644 --- a/interface/web/mail/lib/lang/se_mail_domain_catchall_list.lng +++ b/interface/web/mail/lib/lang/se_mail_domain_catchall_list.lng @@ -7,4 +7,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny catchall'; $wb['active_txt'] = 'Aktiv'; $wb['source_txt'] = 'källa'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_domain_list.lng b/interface/web/mail/lib/lang/se_mail_domain_list.lng index 96120f5b7..4f3b5488f 100644 --- a/interface/web/mail/lib/lang/se_mail_domain_list.lng +++ b/interface/web/mail/lib/lang/se_mail_domain_list.lng @@ -5,4 +5,3 @@ $wb['domain_txt'] = 'Domän'; $wb['add_new_record_txt'] = 'Lägg till ny domän'; $wb['active_txt'] = 'Aktiv'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_forward.lng b/interface/web/mail/lib/lang/se_mail_forward.lng index 511e0b69a..af583f047 100644 --- a/interface/web/mail/lib/lang/se_mail_forward.lng +++ b/interface/web/mail/lib/lang/se_mail_forward.lng @@ -7,4 +7,3 @@ $wb['duplicate_mailbox_txt'] = 'Det finns redan ett epostkonto med denna adress' $wb['domain_txt'] = 'Domän'; $wb['source_txt'] = 'Källadress'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_forward_list.lng b/interface/web/mail/lib/lang/se_mail_forward_list.lng index f27130693..e1d7464ba 100644 --- a/interface/web/mail/lib/lang/se_mail_forward_list.lng +++ b/interface/web/mail/lib/lang/se_mail_forward_list.lng @@ -6,4 +6,3 @@ $wb['destination_txt'] = 'Mottagare'; $wb['add_new_record_txt'] = 'Lägg till ny vidarebefordran'; $wb['source_txt'] = 'källa'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_get.lng b/interface/web/mail/lib/lang/se_mail_get.lng index f15208cdc..db4440210 100644 --- a/interface/web/mail/lib/lang/se_mail_get.lng +++ b/interface/web/mail/lib/lang/se_mail_get.lng @@ -14,7 +14,6 @@ $wb['source_password_error_isempty'] = 'Lösenord är tomt.'; $wb['destination_error_isemail'] = 'Ingen destination vald.'; $wb['source_server_error_regex'] = 'POP3-/Imapserver är inte ett giltigt domännamn.'; $wb['source_read_all_txt'] = 'Hämta all epost (även läst epost)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use "Delete emails after retrieval" = no together with "Retrieve all emails" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Vänligen kontrollera först om eposthämtning fungerar innan du aktiverar detta val..'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_get_list.lng b/interface/web/mail/lib/lang/se_mail_get_list.lng index 0d06cadd5..936909510 100644 --- a/interface/web/mail/lib/lang/se_mail_get_list.lng +++ b/interface/web/mail/lib/lang/se_mail_get_list.lng @@ -7,4 +7,3 @@ $wb['source_username_txt'] = 'Användarnamn'; $wb['destination_txt'] = 'Destination'; $wb['add_new_record_txt'] = 'Lägg till nytt konto'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_mailinglist.lng b/interface/web/mail/lib/lang/se_mail_mailinglist.lng index 68a713097..e7f927b4a 100644 --- a/interface/web/mail/lib/lang/se_mail_mailinglist.lng +++ b/interface/web/mail/lib/lang/se_mail_mailinglist.lng @@ -20,4 +20,3 @@ $wb['listname_error_unique'] = 'There is already a mailinlist with name on the s $wb['email_error_isemail'] = 'Epostadressen är ogiltig'; $wb['mailinglist_txt'] = 'Epostlista'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/se_mail_mailinglist_list.lng index 11a82be46..2e9f36441 100644 --- a/interface/web/mail/lib/lang/se_mail_mailinglist_list.lng +++ b/interface/web/mail/lib/lang/se_mail_mailinglist_list.lng @@ -3,4 +3,3 @@ $wb['list_head_txt'] = 'Epostlista'; $wb['domain_txt'] = 'Domän'; $wb['listname_txt'] = 'Listnamn'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_relay_recipient.lng b/interface/web/mail/lib/lang/se_mail_relay_recipient.lng index ffb64adef..75061987e 100644 --- a/interface/web/mail/lib/lang/se_mail_relay_recipient.lng +++ b/interface/web/mail/lib/lang/se_mail_relay_recipient.lng @@ -7,4 +7,3 @@ $wb['source_error_notempty'] = 'Adressfältet är tomt.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Det maximala antalet epostfilter för ditt konto är uppnått.'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/se_mail_relay_recipient_list.lng index 4c34ebfe6..c9176c7db 100644 --- a/interface/web/mail/lib/lang/se_mail_relay_recipient_list.lng +++ b/interface/web/mail/lib/lang/se_mail_relay_recipient_list.lng @@ -7,4 +7,3 @@ $wb['recipient_txt'] = 'Mottagare'; $wb['add_new_record_txt'] = 'Lägg till ny relämottagare'; $wb['access_txt'] = 'åtkomst'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_spamfilter.lng b/interface/web/mail/lib/lang/se_mail_spamfilter.lng index 308042595..c83f09c97 100644 --- a/interface/web/mail/lib/lang/se_mail_spamfilter.lng +++ b/interface/web/mail/lib/lang/se_mail_spamfilter.lng @@ -15,4 +15,3 @@ $wb['email_error_unique'] = 'Det finns redan ett spamfilterinlägg för den här $wb['spam_redirect_maildir_purge_txt'] = 'Töm mappen efter'; $wb['days_txt'] = 'Dagar'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/se_mail_spamfilter_list.lng index 407d5163e..2c361e135 100644 --- a/interface/web/mail/lib/lang/se_mail_spamfilter_list.lng +++ b/interface/web/mail/lib/lang/se_mail_spamfilter_list.lng @@ -6,4 +6,3 @@ $wb['server_name_txt'] = 'servernamn'; $wb['email_txt'] = 'Epost'; $wb['add_new_record_txt'] = 'Lägg till nytt spamfilter'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_transport.lng b/interface/web/mail/lib/lang/se_mail_transport.lng index 198f8075f..70e26b78f 100644 --- a/interface/web/mail/lib/lang/se_mail_transport.lng +++ b/interface/web/mail/lib/lang/se_mail_transport.lng @@ -9,4 +9,3 @@ $wb['active_txt'] = 'Aktiv'; $wb['limit_mailrouting_txt'] = 'Det maximala antalet epostrutter för ditt konto är uppnått.'; $wb['transport_txt'] = 'Transport'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_transport_list.lng b/interface/web/mail/lib/lang/se_mail_transport_list.lng index 63474a881..2ce6dd8cd 100644 --- a/interface/web/mail/lib/lang/se_mail_transport_list.lng +++ b/interface/web/mail/lib/lang/se_mail_transport_list.lng @@ -7,4 +7,3 @@ $wb['transport_txt'] = 'Transport'; $wb['sort_order_txt'] = 'Sortera på'; $wb['add_new_record_txt'] = 'Lägg till ny transport'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index 62be339c0..d6df11307 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -51,4 +51,3 @@ $wb['email_error_isascii'] = 'Please do not use special unicode characters for y $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_user_filter.lng b/interface/web/mail/lib/lang/se_mail_user_filter.lng index ed9574fe7..e6e62decf 100644 --- a/interface/web/mail/lib/lang/se_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/se_mail_user_filter.lng @@ -18,4 +18,3 @@ $wb['ends_with_txt'] = 'Slutar med'; $wb['move_to_txt'] = 'Flytta till'; $wb['delete_txt'] = 'Radera'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_user_filter_list.lng b/interface/web/mail/lib/lang/se_mail_user_filter_list.lng index 7825393ae..7d6e0c500 100644 --- a/interface/web/mail/lib/lang/se_mail_user_filter_list.lng +++ b/interface/web/mail/lib/lang/se_mail_user_filter_list.lng @@ -5,4 +5,3 @@ $wb['page_txt'] = 'Sida'; $wb['page_of_txt'] = 'av'; $wb['delete_confirmation'] = 'Vill du verkligen radera epostfiltret?'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_user_list.lng b/interface/web/mail/lib/lang/se_mail_user_list.lng index f18bc713a..af96af83c 100644 --- a/interface/web/mail/lib/lang/se_mail_user_list.lng +++ b/interface/web/mail/lib/lang/se_mail_user_list.lng @@ -6,4 +6,3 @@ $wb['add_new_record_txt'] = 'Lägg till nytt epostkonto'; $wb['name_txt'] = 'Riktigt namn'; $wb['login_txt'] = 'Logga in'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_user_stats_list.lng b/interface/web/mail/lib/lang/se_mail_user_stats_list.lng index 1bec4d4b0..de6afd7c5 100644 --- a/interface/web/mail/lib/lang/se_mail_user_stats_list.lng +++ b/interface/web/mail/lib/lang/se_mail_user_stats_list.lng @@ -6,4 +6,3 @@ $wb['last_month_txt'] = 'Föregående månad'; $wb['this_year_txt'] = 'I år'; $wb['last_year_txt'] = 'Föregående år'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_whitelist.lng b/interface/web/mail/lib/lang/se_mail_whitelist.lng index 40eaf8693..7ce682ff6 100644 --- a/interface/web/mail/lib/lang/se_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/se_mail_whitelist.lng @@ -7,4 +7,3 @@ $wb['source_error_notempty'] = 'Adressen är tom.'; $wb['type_txt'] = 'Typ'; $wb['limit_mailfilter_txt'] = 'Maximala antalet epostfilter för ditt konto är uppnått.'; ?> - diff --git a/interface/web/mail/lib/lang/se_mail_whitelist_list.lng b/interface/web/mail/lib/lang/se_mail_whitelist_list.lng index a9f52a8da..f72e8e290 100644 --- a/interface/web/mail/lib/lang/se_mail_whitelist_list.lng +++ b/interface/web/mail/lib/lang/se_mail_whitelist_list.lng @@ -8,4 +8,3 @@ $wb['type_txt'] = 'Typ'; $wb['recipient_txt'] = 'Mottagare'; $wb['access_txt'] = 'åtkomst'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/se_spamfilter_blacklist.lng index 2839c6ce2..873e43d07 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_blacklist.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_blacklist.lng @@ -10,4 +10,3 @@ $wb['10 - highest'] = '10 - högsta'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lägsta'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/se_spamfilter_blacklist_list.lng index edf084241..d5cac76f1 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_blacklist_list.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_blacklist_list.lng @@ -7,4 +7,3 @@ $wb['rid_txt'] = 'Användare'; $wb['email_txt'] = 'Vitlistad epostadress'; $wb['add_new_record_txt'] = 'Lägg till svartlistning'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_config.lng b/interface/web/mail/lib/lang/se_spamfilter_config.lng index ebfedb3fd..a67fb5b2d 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_config.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_config.lng @@ -18,4 +18,3 @@ $wb['relayhost_password_txt'] = 'Relayhost Password'; $wb['mailbox_size_limit_txt'] = 'Mailbox Size Limit'; $wb['message_size_limit_txt'] = 'Message Size Limit'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_config_list.lng b/interface/web/mail/lib/lang/se_spamfilter_config_list.lng index 52b398bab..9d2ec141f 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_config_list.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_config_list.lng @@ -3,4 +3,3 @@ $wb['list_head_txt'] = 'Serverkonfiguration'; $wb['server_name_txt'] = 'Server'; $wb['server_id_txt'] = 'server_id'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_policy.lng b/interface/web/mail/lib/lang/se_spamfilter_policy.lng index d5a429b17..e876330a6 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_policy.lng @@ -36,4 +36,3 @@ $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/se_spamfilter_policy_list.lng index da678a48f..04491ae4c 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_policy_list.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_policy_list.lng @@ -7,4 +7,3 @@ $wb['banned_files_lover_txt'] = 'Banned Files lover'; $wb['bad_header_lover_txt'] = 'Bad Header lover'; $wb['add_new_record_txt'] = 'Add Policy record'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_users.lng b/interface/web/mail/lib/lang/se_spamfilter_users.lng index babb3048e..ba3b60e27 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_users.lng @@ -11,4 +11,3 @@ $wb['10 - highest'] = '10 - högsta'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lägsta'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_users_list.lng b/interface/web/mail/lib/lang/se_spamfilter_users_list.lng index 830ac39c3..4ff87848e 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_users_list.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_users_list.lng @@ -8,4 +8,3 @@ $wb['fullname_txt'] = 'Namn'; $wb['email_txt'] = 'Epost'; $wb['add_new_record_txt'] = 'Lägg till spamfilteranvändare'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/se_spamfilter_whitelist.lng index 2839c6ce2..873e43d07 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_whitelist.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_whitelist.lng @@ -10,4 +10,3 @@ $wb['10 - highest'] = '10 - högsta'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lägsta'; ?> - diff --git a/interface/web/mail/lib/lang/se_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/se_spamfilter_whitelist_list.lng index 00185a090..080ec2760 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_whitelist_list.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_whitelist_list.lng @@ -7,4 +7,3 @@ $wb['rid_txt'] = 'Användare'; $wb['email_txt'] = 'Vitlistad epostadress'; $wb['add_new_record_txt'] = 'Lägg till vitlistning'; ?> - diff --git a/interface/web/mail/lib/lang/se_user_quota_stats_list.lng b/interface/web/mail/lib/lang/se_user_quota_stats_list.lng index 380cf5bf5..dc57c61c8 100755 --- a/interface/web/mail/lib/lang/se_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/se_user_quota_stats_list.lng @@ -6,4 +6,3 @@ $wb['email_txt'] = 'Epostadress'; $wb['used_txt'] = 'Använt utrymme'; $wb['percentage_txt'] = 'Använt %'; ?> - diff --git a/interface/web/mailuser/lib/lang/se.lng b/interface/web/mailuser/lib/lang/se.lng index f9e6f5bbd..b0d55d478 100644 --- a/interface/web/mailuser/lib/lang/se.lng +++ b/interface/web/mailuser/lib/lang/se.lng @@ -7,4 +7,3 @@ $wb['Send copy'] = 'Skicka kopia'; $wb['Spamfilter'] = 'Spamfilter'; $wb['Email Filters'] = 'Epostfilter'; ?> - diff --git a/interface/web/mailuser/lib/lang/se_index.lng b/interface/web/mailuser/lib/lang/se_index.lng index a23c6a656..785507b29 100644 --- a/interface/web/mailuser/lib/lang/se_index.lng +++ b/interface/web/mailuser/lib/lang/se_index.lng @@ -10,4 +10,3 @@ $wb['unlimited_txt'] = 'Obegränsat'; $wb['mb_txt'] = 'MB'; $wb['none_txt'] = 'Inget'; ?> - diff --git a/interface/web/mailuser/lib/lang/se_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/se_mail_user_autoresponder.lng index 942997891..4a9215c88 100644 --- a/interface/web/mailuser/lib/lang/se_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/se_mail_user_autoresponder.lng @@ -11,4 +11,3 @@ $wb['autoresponder_active'] = 'Aktivera autosvaret'; $wb['now_txt'] = 'Nu'; $wb['autoresponder_subject_txt'] = 'Ämnesrad'; ?> - diff --git a/interface/web/mailuser/lib/lang/se_mail_user_cc.lng b/interface/web/mailuser/lib/lang/se_mail_user_cc.lng index 203a9284c..b01ae1b1a 100644 --- a/interface/web/mailuser/lib/lang/se_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/se_mail_user_cc.lng @@ -7,4 +7,3 @@ $wb['email_is_cc_error'] = 'Epostadress och -Skicka kopia till- kan inte vara sa $wb['name_optional_txt'] = '(Frivilligt)'; $wb['cc_note_txt'] = '(Separera flera epostadresser med kommatecken)'; ?> - diff --git a/interface/web/mailuser/lib/lang/se_mail_user_filter.lng b/interface/web/mailuser/lib/lang/se_mail_user_filter.lng index 17da57ac7..8cf96ce86 100644 --- a/interface/web/mailuser/lib/lang/se_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/se_mail_user_filter.lng @@ -18,4 +18,3 @@ $wb['ends_with_txt'] = 'Slutar med'; $wb['move_to_txt'] = 'Flytta till'; $wb['delete_txt'] = 'Radera'; ?> - diff --git a/interface/web/mailuser/lib/lang/se_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/se_mail_user_filter_list.lng index f4f757ddc..c21eef055 100644 --- a/interface/web/mailuser/lib/lang/se_mail_user_filter_list.lng +++ b/interface/web/mailuser/lib/lang/se_mail_user_filter_list.lng @@ -6,4 +6,3 @@ $wb['page_txt'] = 'Sida'; $wb['page_of_txt'] = 'av'; $wb['delete_confirmation'] = 'Vill du verkligen radera epostfiltret?'; ?> - diff --git a/interface/web/mailuser/lib/lang/se_mail_user_password.lng b/interface/web/mailuser/lib/lang/se_mail_user_password.lng index 27ebb3705..c78430162 100644 --- a/interface/web/mailuser/lib/lang/se_mail_user_password.lng +++ b/interface/web/mailuser/lib/lang/se_mail_user_password.lng @@ -8,4 +8,3 @@ $wb['repeat_password_txt'] = 'Upprepa lösenord'; $wb['password_mismatch_txt'] = 'Lösenorden matchar inte'; $wb['password_match_txt'] = 'Lösenorden matchar'; ?> - diff --git a/interface/web/mailuser/lib/lang/se_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/se_mail_user_spamfilter.lng index e457b5a01..7ec5f2a7d 100644 --- a/interface/web/mailuser/lib/lang/se_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/se_mail_user_spamfilter.lng @@ -5,4 +5,3 @@ $wb['email_txt'] = 'Epost'; $wb['no_policy'] = '- ej aktiverat -'; $wb['policy_txt'] = 'Policy'; ?> - diff --git a/interface/web/monitor/lib/lang/se.lng b/interface/web/monitor/lib/lang/se.lng index 0df65289b..b550f80a3 100644 --- a/interface/web/monitor/lib/lang/se.lng +++ b/interface/web/monitor/lib/lang/se.lng @@ -153,4 +153,3 @@ $wb['Show Munin'] = 'Visa Munin'; $wb['no_munin_url_defined_txt'] = 'Ingen Munin-URL definierad.'; $wb['no_permissions_to_view_munin_txt'] = 'Du har inte behörighet att visa Munin.'; ?> - diff --git a/interface/web/monitor/lib/lang/se_datalog_list.lng b/interface/web/monitor/lib/lang/se_datalog_list.lng index 527b14993..e3e76ea7d 100644 --- a/interface/web/monitor/lib/lang/se_datalog_list.lng +++ b/interface/web/monitor/lib/lang/se_datalog_list.lng @@ -6,4 +6,3 @@ $wb['dbtable_txt'] = 'Databastabell'; $wb['action_txt'] = 'Händelse'; $wb['status_txt'] = 'Status'; ?> - diff --git a/interface/web/monitor/lib/lang/se_syslog_list.lng b/interface/web/monitor/lib/lang/se_syslog_list.lng index f3194b692..6c7268cb7 100644 --- a/interface/web/monitor/lib/lang/se_syslog_list.lng +++ b/interface/web/monitor/lib/lang/se_syslog_list.lng @@ -5,4 +5,3 @@ $wb['server_id_txt'] = 'Server'; $wb['loglevel_txt'] = 'Loggnivå'; $wb['message_txt'] = 'Meddelande'; ?> - diff --git a/interface/web/sites/lib/lang/ar_ftp_user.lng b/interface/web/sites/lib/lang/ar_ftp_user.lng index 049273184..42b8c4dea 100644 --- a/interface/web/sites/lib/lang/ar_ftp_user.lng +++ b/interface/web/sites/lib/lang/ar_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/ar_shell_user.lng b/interface/web/sites/lib/lang/ar_shell_user.lng index 8460d4e7a..8095f4bec 100644 --- a/interface/web/sites/lib/lang/ar_shell_user.lng +++ b/interface/web/sites/lib/lang/ar_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/ar_web_folder_list.lng b/interface/web/sites/lib/lang/ar_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/ar_web_folder_list.lng +++ b/interface/web/sites/lib/lang/ar_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/ar_web_folder_user_list.lng b/interface/web/sites/lib/lang/ar_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/ar_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/ar_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/bg_ftp_user.lng b/interface/web/sites/lib/lang/bg_ftp_user.lng index fc1587273..4d5cef733 100644 --- a/interface/web/sites/lib/lang/bg_ftp_user.lng +++ b/interface/web/sites/lib/lang/bg_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/bg_shell_user.lng b/interface/web/sites/lib/lang/bg_shell_user.lng index 82a44af34..15709147f 100644 --- a/interface/web/sites/lib/lang/bg_shell_user.lng +++ b/interface/web/sites/lib/lang/bg_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_folder_list.lng b/interface/web/sites/lib/lang/bg_web_folder_list.lng index 36c9cbcf1..4e0f4b8a5 100644 --- a/interface/web/sites/lib/lang/bg_web_folder_list.lng +++ b/interface/web/sites/lib/lang/bg_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Активен'; $wb['server_id_txt'] = 'Сървър'; $wb['parent_domain_id_txt'] = 'Уебсайт'; $wb['path_txt'] = 'Път'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_folder_user_list.lng b/interface/web/sites/lib/lang/bg_web_folder_user_list.lng index ff89ba061..2824380d8 100644 --- a/interface/web/sites/lib/lang/bg_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/bg_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Потребителско име'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/br_ftp_user.lng b/interface/web/sites/lib/lang/br_ftp_user.lng index 4873bfd73..f46b94fe9 100644 --- a/interface/web/sites/lib/lang/br_ftp_user.lng +++ b/interface/web/sites/lib/lang/br_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/br_shell_user.lng b/interface/web/sites/lib/lang/br_shell_user.lng index 8a098cb5a..69e0f6e28 100644 --- a/interface/web/sites/lib/lang/br_shell_user.lng +++ b/interface/web/sites/lib/lang/br_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/br_web_folder_list.lng b/interface/web/sites/lib/lang/br_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/br_web_folder_list.lng +++ b/interface/web/sites/lib/lang/br_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/br_web_folder_user_list.lng b/interface/web/sites/lib/lang/br_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/br_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/br_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/cz_ftp_user.lng b/interface/web/sites/lib/lang/cz_ftp_user.lng index 2ef0f2919..b580e08f5 100644 --- a/interface/web/sites/lib/lang/cz_ftp_user.lng +++ b/interface/web/sites/lib/lang/cz_ftp_user.lng @@ -31,4 +31,6 @@ $wb['generate_password_txt'] = 'Generovat heslo'; $wb['repeat_password_txt'] = 'Opakujte heslo'; $wb['password_mismatch_txt'] = 'Hesla se neshodují.'; $wb['password_match_txt'] = 'Hesla se shodují.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/cz_shell_user.lng b/interface/web/sites/lib/lang/cz_shell_user.lng index 9bc6bdd2a..fc933da05 100644 --- a/interface/web/sites/lib/lang/cz_shell_user.lng +++ b/interface/web/sites/lib/lang/cz_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'Hesla se neshodují.'; $wb['password_match_txt'] = 'Hesla se shodují.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_folder_list.lng b/interface/web/sites/lib/lang/cz_web_folder_list.lng index b75c0e80d..c7fa12cb2 100644 --- a/interface/web/sites/lib/lang/cz_web_folder_list.lng +++ b/interface/web/sites/lib/lang/cz_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Aktivní'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Webové stránky'; $wb['path_txt'] = 'Cesta'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_folder_user_list.lng b/interface/web/sites/lib/lang/cz_web_folder_user_list.lng index 99fe62051..c0059b234 100644 --- a/interface/web/sites/lib/lang/cz_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/cz_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Složka (adresář) uživatele'; $wb['active_txt'] = 'Aktivní'; $wb['web_folder_id_txt'] = 'Složka'; $wb['username_txt'] = 'Uživatelské jméno'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/de_ftp_user.lng b/interface/web/sites/lib/lang/de_ftp_user.lng index 65e84813e..285c6c687 100644 --- a/interface/web/sites/lib/lang/de_ftp_user.lng +++ b/interface/web/sites/lib/lang/de_ftp_user.lng @@ -31,4 +31,6 @@ $wb['generate_password_txt'] = 'Passwort erzeugen'; $wb['repeat_password_txt'] = 'Passwort wiederholen'; $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.'; $wb['password_match_txt'] = 'Die Passwörter stimmen überein.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/de_shell_user.lng b/interface/web/sites/lib/lang/de_shell_user.lng index 9de369f90..3c4cc2d85 100644 --- a/interface/web/sites/lib/lang/de_shell_user.lng +++ b/interface/web/sites/lib/lang/de_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.'; $wb['password_match_txt'] = 'Die Passwörter stimmen überein.'; $wb['username_must_not_exceed_32_chars_txt'] = 'Der Benutzername darf 32 Zeichen nicht überschreiten.'; $wb['username_not_allowed_txt'] = 'Der Benutzername ist nicht erlaubt.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/de_web_folder_list.lng b/interface/web/sites/lib/lang/de_web_folder_list.lng index 9c85d5182..34e8f863e 100644 --- a/interface/web/sites/lib/lang/de_web_folder_list.lng +++ b/interface/web/sites/lib/lang/de_web_folder_list.lng @@ -4,5 +4,5 @@ $wb['active_txt'] = 'Aktiv'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Webseite'; $wb['path_txt'] = 'Pfad'; -$wb["add_new_record_txt"] = 'Ordner hinzufügen'; +$wb['add_new_record_txt'] = 'Ordner hinzufügen'; ?> diff --git a/interface/web/sites/lib/lang/de_web_folder_user_list.lng b/interface/web/sites/lib/lang/de_web_folder_user_list.lng index 2db8eb052..c9bcb9cf5 100644 --- a/interface/web/sites/lib/lang/de_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/de_web_folder_user_list.lng @@ -3,5 +3,5 @@ $wb['list_head_txt'] = 'Ordner Benutzer'; $wb['active_txt'] = 'Aktiv'; $wb['web_folder_id_txt'] = 'Ordner'; $wb['username_txt'] = 'Benutzername'; -$wb["add_new_record_txt"] = 'Ordner Benutzer hinzufügen'; +$wb['add_new_record_txt'] = 'Ordner Benutzer hinzufügen'; ?> diff --git a/interface/web/sites/lib/lang/el_ftp_user.lng b/interface/web/sites/lib/lang/el_ftp_user.lng index 2f89d27bd..a77581db8 100644 --- a/interface/web/sites/lib/lang/el_ftp_user.lng +++ b/interface/web/sites/lib/lang/el_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/el_shell_user.lng b/interface/web/sites/lib/lang/el_shell_user.lng index 3c3ea316c..2ced9c23d 100644 --- a/interface/web/sites/lib/lang/el_shell_user.lng +++ b/interface/web/sites/lib/lang/el_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/el_web_folder_list.lng b/interface/web/sites/lib/lang/el_web_folder_list.lng index 86dc18cf6..f1e9e33f8 100644 --- a/interface/web/sites/lib/lang/el_web_folder_list.lng +++ b/interface/web/sites/lib/lang/el_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Ενεργός'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Διαδρομή'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/el_web_folder_user_list.lng b/interface/web/sites/lib/lang/el_web_folder_user_list.lng index 2103bcbfc..bcbd08c39 100644 --- a/interface/web/sites/lib/lang/el_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/el_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Χρήστης Φακέλου'; $wb['active_txt'] = 'Ενεργός'; $wb['web_folder_id_txt'] = 'Φάκελος'; $wb['username_txt'] = 'Όνομα Χρήστη'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/es_ftp_user.lng b/interface/web/sites/lib/lang/es_ftp_user.lng index c8b86b064..f8a5e6c69 100644 --- a/interface/web/sites/lib/lang/es_ftp_user.lng +++ b/interface/web/sites/lib/lang/es_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/es_shell_user.lng b/interface/web/sites/lib/lang/es_shell_user.lng index 45fd930e2..46c39cc6a 100644 --- a/interface/web/sites/lib/lang/es_shell_user.lng +++ b/interface/web/sites/lib/lang/es_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/es_web_folder_list.lng b/interface/web/sites/lib/lang/es_web_folder_list.lng index 668f62602..e760a67b1 100644 --- a/interface/web/sites/lib/lang/es_web_folder_list.lng +++ b/interface/web/sites/lib/lang/es_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Activar'; $wb['server_id_txt'] = 'Servidor'; $wb['parent_domain_id_txt'] = 'Sitio web'; $wb['path_txt'] = 'Ruta'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/es_web_folder_user_list.lng b/interface/web/sites/lib/lang/es_web_folder_user_list.lng index 77799114e..9bdb1e9b7 100644 --- a/interface/web/sites/lib/lang/es_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/es_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Carpeta del usuario'; $wb['active_txt'] = 'Activar'; $wb['web_folder_id_txt'] = 'Carpeta'; $wb['username_txt'] = 'Nombre de usuario'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/fi_ftp_user.lng b/interface/web/sites/lib/lang/fi_ftp_user.lng index ca3943956..4cf718c28 100755 --- a/interface/web/sites/lib/lang/fi_ftp_user.lng +++ b/interface/web/sites/lib/lang/fi_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/fi_shell_user.lng b/interface/web/sites/lib/lang/fi_shell_user.lng index 06fe1bd7e..116e8c8d8 100755 --- a/interface/web/sites/lib/lang/fi_shell_user.lng +++ b/interface/web/sites/lib/lang/fi_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_folder_list.lng b/interface/web/sites/lib/lang/fi_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/fi_web_folder_list.lng +++ b/interface/web/sites/lib/lang/fi_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_folder_user_list.lng b/interface/web/sites/lib/lang/fi_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/fi_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/fi_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/fr.lng b/interface/web/sites/lib/lang/fr.lng index c914ef002..9acee9d06 100644 --- a/interface/web/sites/lib/lang/fr.lng +++ b/interface/web/sites/lib/lang/fr.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Packages disponibles'; $wb['Installed packages'] = 'Packages installés'; $wb['Update Packagelist'] = 'Mise à jour de la liste des packages'; $wb['Subdomain (Vhost)'] = 'Sous-domaine (Vhost)'; -$wb['error_proxy_requires_url'] = 'Type de redirection \"proxy\" nécessite une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Type de redirection \\"proxy\\" nécessite une URL comme chemin de redirection.'; ?> diff --git a/interface/web/sites/lib/lang/fr_aps.lng b/interface/web/sites/lib/lang/fr_aps.lng index eb268b026..5d43e803d 100644 --- a/interface/web/sites/lib/lang/fr_aps.lng +++ b/interface/web/sites/lib/lang/fr_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Le dossier d\'installation choisi est invalide $wb['error_license_agreement'] = 'Avant de continuer, vous devez accepter les conditions d\'utilisation (licence).'; $wb['error_no_database_pw'] = 'Vous n\'avez pas renseigné de mot de passe BDD valide.'; $wb['error_short_database_pw'] = 'Veuillez saisir un mot de passe BDD plus long.'; -$wb['error_no_value_for'] = 'Le champ \"%s\" ne peut pas être vide.'; -$wb['error_short_value_for'] = 'Le champ \"%s\" nécessite une valeur plus longue.'; -$wb['error_long_value_for'] = 'Le champ \"%s\" nécessite une valeur plus courte.'; -$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \"%s\".'; -$wb['error_inv_email_for'] = 'L\'adresse email saisie pour le champ \"%s\" est invalide.'; -$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \"%s\" est invalide.'; -$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \"%s\" est invalide.'; -$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \"%s\" est invalide.'; +$wb['error_no_value_for'] = 'Le champ \\"%s\\" ne peut pas être vide.'; +$wb['error_short_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus longue.'; +$wb['error_long_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus courte.'; +$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \\"%s\\".'; +$wb['error_inv_email_for'] = 'L\'adresse email saisie pour le champ \\"%s\\" est invalide.'; +$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \\"%s\\" est invalide.'; +$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \\"%s\\" est invalide.'; +$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \\"%s\\" est invalide.'; $wb['error_used_location'] = 'Le chemin de destination contient déjà un package d\'installation.'; $wb['installation_task_txt'] = 'Installation prévue'; $wb['installation_error_txt'] = 'Erreur d\'installation'; diff --git a/interface/web/sites/lib/lang/fr_ftp_user.lng b/interface/web/sites/lib/lang/fr_ftp_user.lng index 5d00f4b78..f73a81b1b 100644 --- a/interface/web/sites/lib/lang/fr_ftp_user.lng +++ b/interface/web/sites/lib/lang/fr_ftp_user.lng @@ -31,4 +31,6 @@ $wb['generate_password_txt'] = 'Générer un mot de passe'; $wb['repeat_password_txt'] = 'Vérification du mot de passe'; $wb['password_mismatch_txt'] = 'Les mots de passe ne correspondent pas.'; $wb['password_match_txt'] = 'Les mots de passe correspondent.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/fr_shell_user.lng b/interface/web/sites/lib/lang/fr_shell_user.lng index 3f967f852..2e518d70b 100644 --- a/interface/web/sites/lib/lang/fr_shell_user.lng +++ b/interface/web/sites/lib/lang/fr_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'Les mots de passe ne correspondent pas.'; $wb['password_match_txt'] = 'Les mots de passe correspondent.'; $wb['username_must_not_exceed_32_chars_txt'] = 'Le nom d\'utilisateur ne doit pas dépasser 32 caractères.'; $wb['username_not_allowed_txt'] = 'Le nom d\'utilisateur est interdit.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_folder_list.lng b/interface/web/sites/lib/lang/fr_web_folder_list.lng index f358f8c88..0eed4fd8d 100644 --- a/interface/web/sites/lib/lang/fr_web_folder_list.lng +++ b/interface/web/sites/lib/lang/fr_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Actif'; $wb['server_id_txt'] = 'Serveur'; $wb['parent_domain_id_txt'] = 'Site web'; $wb['path_txt'] = 'Chemin'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_folder_user_list.lng b/interface/web/sites/lib/lang/fr_web_folder_user_list.lng index e1824e2fe..663c6d2a7 100644 --- a/interface/web/sites/lib/lang/fr_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/fr_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Utilisateur du dossier'; $wb['active_txt'] = 'Actif'; $wb['web_folder_id_txt'] = 'Dossier'; $wb['username_txt'] = 'Nom de l\'utilisateur'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_subdomain.lng b/interface/web/sites/lib/lang/fr_web_subdomain.lng index ebc7250f2..edc7be0c1 100644 --- a/interface/web/sites/lib/lang/fr_web_subdomain.lng +++ b/interface/web/sites/lib/lang/fr_web_subdomain.lng @@ -42,5 +42,5 @@ $wb['no_flag_txt'] = 'Aucun flag'; $wb['domain_error_wildcard'] = 'Les sous-domaines joker ne sont pas autorisés.'; $wb['proxy_directives_txt'] = 'Directives pour les Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Directives pour les Proxy Snippets disponibles :'; -$wb['error_proxy_requires_url'] = 'Les redirections de type \"proxy\" nécessitent une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Les redirections de type \\"proxy\\" nécessitent une URL comme chemin de redirection.'; ?> diff --git a/interface/web/sites/lib/lang/hr_ftp_user.lng b/interface/web/sites/lib/lang/hr_ftp_user.lng index 6290c0e6c..dbefe0bbf 100644 --- a/interface/web/sites/lib/lang/hr_ftp_user.lng +++ b/interface/web/sites/lib/lang/hr_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/hr_shell_user.lng b/interface/web/sites/lib/lang/hr_shell_user.lng index 417378725..d081fd76f 100644 --- a/interface/web/sites/lib/lang/hr_shell_user.lng +++ b/interface/web/sites/lib/lang/hr_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_folder_list.lng b/interface/web/sites/lib/lang/hr_web_folder_list.lng index 56965897a..0a900fb2c 100644 --- a/interface/web/sites/lib/lang/hr_web_folder_list.lng +++ b/interface/web/sites/lib/lang/hr_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Aktivno'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Web stranica'; $wb['path_txt'] = 'Putanja'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_folder_user_list.lng b/interface/web/sites/lib/lang/hr_web_folder_user_list.lng index af7792fb6..3beae9f47 100644 --- a/interface/web/sites/lib/lang/hr_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/hr_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Web direktorij korisnik'; $wb['active_txt'] = 'Aktivno'; $wb['web_folder_id_txt'] = 'Web direkotrij'; $wb['username_txt'] = 'Korisničko ime'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/hu_ftp_user.lng b/interface/web/sites/lib/lang/hu_ftp_user.lng index 132bc4975..bbf61d423 100644 --- a/interface/web/sites/lib/lang/hu_ftp_user.lng +++ b/interface/web/sites/lib/lang/hu_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/hu_shell_user.lng b/interface/web/sites/lib/lang/hu_shell_user.lng index 849f380f8..8eaa537b5 100644 --- a/interface/web/sites/lib/lang/hu_shell_user.lng +++ b/interface/web/sites/lib/lang/hu_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_folder_list.lng b/interface/web/sites/lib/lang/hu_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/hu_web_folder_list.lng +++ b/interface/web/sites/lib/lang/hu_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_folder_user_list.lng b/interface/web/sites/lib/lang/hu_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/hu_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/hu_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/id_ftp_user.lng b/interface/web/sites/lib/lang/id_ftp_user.lng index 5e1dab237..4898de245 100644 --- a/interface/web/sites/lib/lang/id_ftp_user.lng +++ b/interface/web/sites/lib/lang/id_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/id_shell_user.lng b/interface/web/sites/lib/lang/id_shell_user.lng index 0ec09ccf7..83153c14e 100644 --- a/interface/web/sites/lib/lang/id_shell_user.lng +++ b/interface/web/sites/lib/lang/id_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/id_web_folder_list.lng b/interface/web/sites/lib/lang/id_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/id_web_folder_list.lng +++ b/interface/web/sites/lib/lang/id_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/id_web_folder_user_list.lng b/interface/web/sites/lib/lang/id_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/id_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/id_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/it_ftp_user.lng b/interface/web/sites/lib/lang/it_ftp_user.lng index 1964a9fc5..bdd781816 100644 --- a/interface/web/sites/lib/lang/it_ftp_user.lng +++ b/interface/web/sites/lib/lang/it_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/it_shell_user.lng b/interface/web/sites/lib/lang/it_shell_user.lng index 8460d4e7a..8095f4bec 100644 --- a/interface/web/sites/lib/lang/it_shell_user.lng +++ b/interface/web/sites/lib/lang/it_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/it_web_folder_list.lng b/interface/web/sites/lib/lang/it_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/it_web_folder_list.lng +++ b/interface/web/sites/lib/lang/it_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/it_web_folder_user_list.lng b/interface/web/sites/lib/lang/it_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/it_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/it_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/ja_ftp_user.lng b/interface/web/sites/lib/lang/ja_ftp_user.lng index fb80ca35b..8e92b1b05 100644 --- a/interface/web/sites/lib/lang/ja_ftp_user.lng +++ b/interface/web/sites/lib/lang/ja_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/ja_shell_user.lng b/interface/web/sites/lib/lang/ja_shell_user.lng index 19f09a5cb..2ce5ad345 100644 --- a/interface/web/sites/lib/lang/ja_shell_user.lng +++ b/interface/web/sites/lib/lang/ja_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_folder_list.lng b/interface/web/sites/lib/lang/ja_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/ja_web_folder_list.lng +++ b/interface/web/sites/lib/lang/ja_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_folder_user_list.lng b/interface/web/sites/lib/lang/ja_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/ja_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/ja_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/nl_ftp_user.lng b/interface/web/sites/lib/lang/nl_ftp_user.lng index 7f797de32..16e4ae87c 100644 --- a/interface/web/sites/lib/lang/nl_ftp_user.lng +++ b/interface/web/sites/lib/lang/nl_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/nl_shell_user.lng b/interface/web/sites/lib/lang/nl_shell_user.lng index 53fed2070..9a4ae63ed 100644 --- a/interface/web/sites/lib/lang/nl_shell_user.lng +++ b/interface/web/sites/lib/lang/nl_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_folder_list.lng b/interface/web/sites/lib/lang/nl_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/nl_web_folder_list.lng +++ b/interface/web/sites/lib/lang/nl_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_folder_user_list.lng b/interface/web/sites/lib/lang/nl_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/nl_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/nl_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/pl_ftp_user.lng b/interface/web/sites/lib/lang/pl_ftp_user.lng index 5c9140113..37dd36b18 100644 --- a/interface/web/sites/lib/lang/pl_ftp_user.lng +++ b/interface/web/sites/lib/lang/pl_ftp_user.lng @@ -31,4 +31,6 @@ $wb['generate_password_txt'] = 'Generuj hasło'; $wb['repeat_password_txt'] = 'Powtórz hasło'; $wb['password_mismatch_txt'] = 'Hasła nie pasują do siebie'; $wb['password_match_txt'] = 'Hasła pasują'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/pl_shell_user.lng b/interface/web/sites/lib/lang/pl_shell_user.lng index e51ef644a..19674e3bd 100644 --- a/interface/web/sites/lib/lang/pl_shell_user.lng +++ b/interface/web/sites/lib/lang/pl_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'Hasła nie pasują do siebie'; $wb['password_match_txt'] = 'Hasła pasują'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_folder_list.lng b/interface/web/sites/lib/lang/pl_web_folder_list.lng index 87a769008..75a403be3 100644 --- a/interface/web/sites/lib/lang/pl_web_folder_list.lng +++ b/interface/web/sites/lib/lang/pl_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Aktywny'; $wb['server_id_txt'] = 'Serwer'; $wb['parent_domain_id_txt'] = 'Witryna'; $wb['path_txt'] = 'Ścieżka'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_folder_user_list.lng b/interface/web/sites/lib/lang/pl_web_folder_user_list.lng index 81769bd9d..728c1f709 100644 --- a/interface/web/sites/lib/lang/pl_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/pl_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Użytkownik katalogu'; $wb['active_txt'] = 'Aktywny'; $wb['web_folder_id_txt'] = 'Katalog'; $wb['username_txt'] = 'Login'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/pt_ftp_user.lng b/interface/web/sites/lib/lang/pt_ftp_user.lng index 17708727c..9f5ed046c 100644 --- a/interface/web/sites/lib/lang/pt_ftp_user.lng +++ b/interface/web/sites/lib/lang/pt_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/pt_shell_user.lng b/interface/web/sites/lib/lang/pt_shell_user.lng index 5e346483e..4564bbc5a 100644 --- a/interface/web/sites/lib/lang/pt_shell_user.lng +++ b/interface/web/sites/lib/lang/pt_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_folder_list.lng b/interface/web/sites/lib/lang/pt_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/pt_web_folder_list.lng +++ b/interface/web/sites/lib/lang/pt_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_folder_user_list.lng b/interface/web/sites/lib/lang/pt_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/pt_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/pt_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/ro_ftp_user.lng b/interface/web/sites/lib/lang/ro_ftp_user.lng index d7415ec2f..e28b35e6d 100644 --- a/interface/web/sites/lib/lang/ro_ftp_user.lng +++ b/interface/web/sites/lib/lang/ro_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/ro_shell_user.lng b/interface/web/sites/lib/lang/ro_shell_user.lng index d4620af9e..912b6b2b0 100644 --- a/interface/web/sites/lib/lang/ro_shell_user.lng +++ b/interface/web/sites/lib/lang/ro_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_folder_list.lng b/interface/web/sites/lib/lang/ro_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/ro_web_folder_list.lng +++ b/interface/web/sites/lib/lang/ro_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_folder_user_list.lng b/interface/web/sites/lib/lang/ro_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/ro_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/ro_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/ru_ftp_user.lng b/interface/web/sites/lib/lang/ru_ftp_user.lng index 58a2277e5..f9609ce26 100644 --- a/interface/web/sites/lib/lang/ru_ftp_user.lng +++ b/interface/web/sites/lib/lang/ru_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/ru_shell_user.lng b/interface/web/sites/lib/lang/ru_shell_user.lng index d87f544e1..f3b788f14 100644 --- a/interface/web/sites/lib/lang/ru_shell_user.lng +++ b/interface/web/sites/lib/lang/ru_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_folder_list.lng b/interface/web/sites/lib/lang/ru_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/ru_web_folder_list.lng +++ b/interface/web/sites/lib/lang/ru_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_folder_user_list.lng b/interface/web/sites/lib/lang/ru_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/ru_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/ru_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/se.lng b/interface/web/sites/lib/lang/se.lng index 780195fb8..a63670545 100644 --- a/interface/web/sites/lib/lang/se.lng +++ b/interface/web/sites/lib/lang/se.lng @@ -31,6 +31,5 @@ $wb['Available packages'] = 'Tillgängliga paket'; $wb['Installed packages'] = 'Installerade paket'; $wb['Update Packagelist'] = 'Uppdatera paketlista'; $wb['Subdomain (Vhost)'] = 'Underdomän (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type "proxy" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> - diff --git a/interface/web/sites/lib/lang/se_aps.lng b/interface/web/sites/lib/lang/se_aps.lng index 315b03c72..1fe86175d 100644 --- a/interface/web/sites/lib/lang/se_aps.lng +++ b/interface/web/sites/lib/lang/se_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field "%s" must not be empty.'; -$wb['error_short_value_for'] = 'The field "%s" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field "%s" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field "%s".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field "%s".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field "%s".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field "%s".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field "%s".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Installation planerad'; $wb['installation_error_txt'] = 'Installationsfel'; @@ -56,4 +56,3 @@ $wb['btn_install_txt'] = 'Installera'; $wb['btn_cancel_txt'] = 'Avbryt'; $wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.'; ?> - diff --git a/interface/web/sites/lib/lang/se_aps_instances_list.lng b/interface/web/sites/lib/lang/se_aps_instances_list.lng index 81cda2a4c..a9428aa73 100644 --- a/interface/web/sites/lib/lang/se_aps_instances_list.lng +++ b/interface/web/sites/lib/lang/se_aps_instances_list.lng @@ -11,4 +11,3 @@ $wb['filter_txt'] = 'Sök'; $wb['delete_txt'] = 'Radera'; $wb['reinstall_txt'] = 'Ominstallera'; ?> - diff --git a/interface/web/sites/lib/lang/se_aps_packages_list.lng b/interface/web/sites/lib/lang/se_aps_packages_list.lng index 1746bfd4a..8555961a4 100644 --- a/interface/web/sites/lib/lang/se_aps_packages_list.lng +++ b/interface/web/sites/lib/lang/se_aps_packages_list.lng @@ -6,4 +6,3 @@ $wb['category_txt'] = 'Kategori'; $wb['status_txt'] = 'Olåst'; $wb['filter_txt'] = 'Sök'; ?> - diff --git a/interface/web/sites/lib/lang/se_aps_update_packagelist.lng b/interface/web/sites/lib/lang/se_aps_update_packagelist.lng index 8d84c057d..891a95168 100644 --- a/interface/web/sites/lib/lang/se_aps_update_packagelist.lng +++ b/interface/web/sites/lib/lang/se_aps_update_packagelist.lng @@ -5,4 +5,3 @@ $wb['btn_start_txt'] = 'Uppdatera paketlista'; $wb['btn_cancel_txt'] = 'Avbryt'; $wb['legend_txt'] = 'Here you can update the list of available packages. Please note that this can take up to five minutes. You can leave this page if you like; the process will continue in the background.'; ?> - diff --git a/interface/web/sites/lib/lang/se_cron.lng b/interface/web/sites/lib/lang/se_cron.lng index bc89db256..83b7d3b33 100644 --- a/interface/web/sites/lib/lang/se_cron.lng +++ b/interface/web/sites/lib/lang/se_cron.lng @@ -22,4 +22,3 @@ $wb['server_id_error_empty'] = 'Fältet för server-ID är tomt.'; $wb['limit_cron_url_txt'] = 'URL cron only. Please enter a URL starting with http:// as cron command.'; $wb['command_error_empty'] = 'Kommandofältet är tomt.'; ?> - diff --git a/interface/web/sites/lib/lang/se_cron_list.lng b/interface/web/sites/lib/lang/se_cron_list.lng index b17951c8a..045914415 100644 --- a/interface/web/sites/lib/lang/se_cron_list.lng +++ b/interface/web/sites/lib/lang/se_cron_list.lng @@ -11,4 +11,3 @@ $wb['command_txt'] = 'Kommando'; $wb['add_new_cron_txt'] = 'Lägg till nytt cron-jobb'; $wb['parent_domain_id_txt'] = 'Webbsida'; ?> - diff --git a/interface/web/sites/lib/lang/se_database.lng b/interface/web/sites/lib/lang/se_database.lng index 03eac081c..c06c3f0e4 100644 --- a/interface/web/sites/lib/lang/se_database.lng +++ b/interface/web/sites/lib/lang/se_database.lng @@ -44,4 +44,3 @@ $wb['no_dbuser_txt'] = 'Ingen'; $wb['database_client_differs_txt'] = 'The client of the parent web and the database do not match.'; $wb['database_user_missing_txt'] = 'Vänligen välj en databasanvändare för den här databasen.'; ?> - diff --git a/interface/web/sites/lib/lang/se_database_admin_list.lng b/interface/web/sites/lib/lang/se_database_admin_list.lng index fe415d323..640c07cf1 100644 --- a/interface/web/sites/lib/lang/se_database_admin_list.lng +++ b/interface/web/sites/lib/lang/se_database_admin_list.lng @@ -9,4 +9,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny databas'; $wb['sys_groupid_txt'] = 'Kund'; $wb['parent_domain_id_txt'] = 'Webbsida'; ?> - diff --git a/interface/web/sites/lib/lang/se_database_list.lng b/interface/web/sites/lib/lang/se_database_list.lng index 3909b3730..bfcdaf39f 100644 --- a/interface/web/sites/lib/lang/se_database_list.lng +++ b/interface/web/sites/lib/lang/se_database_list.lng @@ -8,4 +8,3 @@ $wb['add_new_record_txt'] = 'Lägg till ny databas'; $wb['database_user_txt'] = 'Databasanvändare'; $wb['parent_domain_id_txt'] = 'Webbsida'; ?> - diff --git a/interface/web/sites/lib/lang/se_database_user.lng b/interface/web/sites/lib/lang/se_database_user.lng index c707175cf..2cf9a1a8c 100644 --- a/interface/web/sites/lib/lang/se_database_user.lng +++ b/interface/web/sites/lib/lang/se_database_user.lng @@ -21,4 +21,3 @@ $wb['globalsearch_noresults_limit_txt'] = '0 resultat'; $wb['globalsearch_searchfield_watermark_txt'] = 'Sök'; $wb['globalsearch_suggestions_text_txt'] = 'Förslag'; ?> - diff --git a/interface/web/sites/lib/lang/se_database_user_admin_list.lng b/interface/web/sites/lib/lang/se_database_user_admin_list.lng index 6eca0b7ac..a9bb594e7 100644 --- a/interface/web/sites/lib/lang/se_database_user_admin_list.lng +++ b/interface/web/sites/lib/lang/se_database_user_admin_list.lng @@ -4,4 +4,3 @@ $wb['database_user_txt'] = 'Databasanvändare'; $wb['add_new_record_txt'] = 'Lägg till ny användare'; $wb['sys_groupid_txt'] = 'Kund'; ?> - diff --git a/interface/web/sites/lib/lang/se_database_user_list.lng b/interface/web/sites/lib/lang/se_database_user_list.lng index cb6244450..c0eef9d5e 100644 --- a/interface/web/sites/lib/lang/se_database_user_list.lng +++ b/interface/web/sites/lib/lang/se_database_user_list.lng @@ -3,4 +3,3 @@ $wb['list_head_txt'] = 'Databasanvändare'; $wb['database_user_txt'] = 'Databasanvändare'; $wb['add_new_record_txt'] = 'Lägg till ny användare'; ?> - diff --git a/interface/web/sites/lib/lang/se_ftp_user.lng b/interface/web/sites/lib/lang/se_ftp_user.lng index 50d9031c4..3ba08a201 100644 --- a/interface/web/sites/lib/lang/se_ftp_user.lng +++ b/interface/web/sites/lib/lang/se_ftp_user.lng @@ -31,5 +31,6 @@ $wb['generate_password_txt'] = 'Generera lösenord'; $wb['repeat_password_txt'] = 'Upprepa lösenord'; $wb['password_mismatch_txt'] = 'Lösenorden matchar inte'; $wb['password_match_txt'] = 'Lösenorden matchar'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> - diff --git a/interface/web/sites/lib/lang/se_ftp_user_list.lng b/interface/web/sites/lib/lang/se_ftp_user_list.lng index c833d1a9b..f0ac76012 100644 --- a/interface/web/sites/lib/lang/se_ftp_user_list.lng +++ b/interface/web/sites/lib/lang/se_ftp_user_list.lng @@ -6,4 +6,3 @@ $wb['parent_domain_id_txt'] = 'Webbsida'; $wb['username_txt'] = 'Användarnamn'; $wb['add_new_record_txt'] = 'Lägg till ny FTP-användare'; ?> - diff --git a/interface/web/sites/lib/lang/se_shell_user.lng b/interface/web/sites/lib/lang/se_shell_user.lng index b2d00838c..8095f4bec 100644 --- a/interface/web/sites/lib/lang/se_shell_user.lng +++ b/interface/web/sites/lib/lang/se_shell_user.lng @@ -28,5 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> - diff --git a/interface/web/sites/lib/lang/se_shell_user_list.lng b/interface/web/sites/lib/lang/se_shell_user_list.lng index 338917343..4a9d7cb9a 100644 --- a/interface/web/sites/lib/lang/se_shell_user_list.lng +++ b/interface/web/sites/lib/lang/se_shell_user_list.lng @@ -6,4 +6,3 @@ $wb['parent_domain_id_txt'] = 'Site'; $wb['username_txt'] = 'Username'; $wb['add_new_record_txt'] = 'Add new Shell-User'; ?> - diff --git a/interface/web/sites/lib/lang/se_user_quota_stats_list.lng b/interface/web/sites/lib/lang/se_user_quota_stats_list.lng index 2084a496c..7fe4791f6 100644 --- a/interface/web/sites/lib/lang/se_user_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/se_user_quota_stats_list.lng @@ -7,4 +7,3 @@ $wb['hard_txt'] = 'Hard limit'; $wb['soft_txt'] = 'Soft limit'; $wb['files_txt'] = 'Single files'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_aliasdomain.lng b/interface/web/sites/lib/lang/se_web_aliasdomain.lng index ecbc150c7..4149c7114 100644 --- a/interface/web/sites/lib/lang/se_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/se_web_aliasdomain.lng @@ -113,4 +113,3 @@ $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['Domain'] = 'Aliasdomain'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/se_web_aliasdomain_list.lng index 4860654d0..8ea34c440 100644 --- a/interface/web/sites/lib/lang/se_web_aliasdomain_list.lng +++ b/interface/web/sites/lib/lang/se_web_aliasdomain_list.lng @@ -12,4 +12,3 @@ $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['none_txt'] = 'None'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_backup_list.lng b/interface/web/sites/lib/lang/se_web_backup_list.lng index 261304d01..e74395302 100644 --- a/interface/web/sites/lib/lang/se_web_backup_list.lng +++ b/interface/web/sites/lib/lang/se_web_backup_list.lng @@ -13,4 +13,3 @@ $wb['restore_pending_txt'] = 'There is already a pending backup restore job.'; $wb['backup_type_mysql'] = 'MySQL-databaser'; $wb['backup_type_web'] = 'Webbsidefiler'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_domain.lng b/interface/web/sites/lib/lang/se_web_domain.lng index e28157993..2b9a05647 100644 --- a/interface/web/sites/lib/lang/se_web_domain.lng +++ b/interface/web/sites/lib/lang/se_web_domain.lng @@ -128,4 +128,3 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Ogiltiga php.ini-inställningar'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_domain_admin_list.lng b/interface/web/sites/lib/lang/se_web_domain_admin_list.lng index 073724589..b460e2710 100644 --- a/interface/web/sites/lib/lang/se_web_domain_admin_list.lng +++ b/interface/web/sites/lib/lang/se_web_domain_admin_list.lng @@ -7,4 +7,3 @@ $wb['server_id_txt'] = 'Server'; $wb['domain_txt'] = 'Domain'; $wb['add_new_record_txt'] = 'Add new website'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_domain_list.lng b/interface/web/sites/lib/lang/se_web_domain_list.lng index eabd54442..88ec412da 100644 --- a/interface/web/sites/lib/lang/se_web_domain_list.lng +++ b/interface/web/sites/lib/lang/se_web_domain_list.lng @@ -6,4 +6,3 @@ $wb['server_id_txt'] = 'Server'; $wb['domain_txt'] = 'Domain'; $wb['add_new_record_txt'] = 'Add new website'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_folder.lng b/interface/web/sites/lib/lang/se_web_folder.lng index 96553c5d8..6dbc15854 100644 --- a/interface/web/sites/lib/lang/se_web_folder.lng +++ b/interface/web/sites/lib/lang/se_web_folder.lng @@ -6,4 +6,3 @@ $wb['active_txt'] = 'Aktiv'; $wb['path_error_regex'] = 'Ogiltig katalogsökväg'; $wb['error_folder_already_protected_txt'] = 'Det finns redan ett inlägg för den här mappen.'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_folder_list.lng b/interface/web/sites/lib/lang/se_web_folder_list.lng index 194e7444e..f3ce8b100 100644 --- a/interface/web/sites/lib/lang/se_web_folder_list.lng +++ b/interface/web/sites/lib/lang/se_web_folder_list.lng @@ -4,5 +4,5 @@ $wb['active_txt'] = 'Aktiv'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Webbsida'; $wb['path_txt'] = 'Sökväg'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_folder_user.lng b/interface/web/sites/lib/lang/se_web_folder_user.lng index 0c52cfa47..6db241570 100644 --- a/interface/web/sites/lib/lang/se_web_folder_user.lng +++ b/interface/web/sites/lib/lang/se_web_folder_user.lng @@ -12,4 +12,3 @@ $wb['password_match_txt'] = 'Lösenorden matchar'; $wb['no_folder_perm'] = 'Du har inga rättigheter för denna katalog'; $wb['error_user_exists_already_txt'] = 'Det finns redan ett inlägg för denna användare'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_folder_user_list.lng b/interface/web/sites/lib/lang/se_web_folder_user_list.lng index 3af6f700f..67612f511 100644 --- a/interface/web/sites/lib/lang/se_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/se_web_folder_user_list.lng @@ -3,5 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_sites_stats_list.lng b/interface/web/sites/lib/lang/se_web_sites_stats_list.lng index 66137dc1e..95a82568e 100644 --- a/interface/web/sites/lib/lang/se_web_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/se_web_sites_stats_list.lng @@ -7,4 +7,3 @@ $wb['this_year_txt'] = 'I år'; $wb['last_year_txt'] = 'Förra året'; $wb['sum_txt'] = 'Total'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_subdomain.lng b/interface/web/sites/lib/lang/se_web_subdomain.lng index 8955209ee..856d3c20a 100644 --- a/interface/web/sites/lib/lang/se_web_subdomain.lng +++ b/interface/web/sites/lib/lang/se_web_subdomain.lng @@ -42,6 +42,5 @@ $wb['no_flag_txt'] = 'Ingan flagga'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type "proxy" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_subdomain_list.lng b/interface/web/sites/lib/lang/se_web_subdomain_list.lng index 58084a63f..1c16bcda2 100644 --- a/interface/web/sites/lib/lang/se_web_subdomain_list.lng +++ b/interface/web/sites/lib/lang/se_web_subdomain_list.lng @@ -6,4 +6,3 @@ $wb['parent_domain_id_txt'] = 'Website'; $wb['domain_txt'] = 'Subdomain'; $wb['add_new_record_txt'] = 'Add new subdomain'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/se_web_vhost_subdomain.lng index 409c83027..c0ca93b57 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_subdomain.lng @@ -125,4 +125,3 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; ?> - diff --git a/interface/web/sites/lib/lang/se_web_vhost_subdomain_list.lng b/interface/web/sites/lib/lang/se_web_vhost_subdomain_list.lng index 9604437b6..100b03bcc 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_subdomain_list.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_subdomain_list.lng @@ -6,4 +6,3 @@ $wb['parent_domain_id_txt'] = 'Webbsida'; $wb['domain_txt'] = 'Underdomän'; $wb['add_new_record_txt'] = 'Lägg till ny underdomän'; ?> - diff --git a/interface/web/sites/lib/lang/se_webdav_user.lng b/interface/web/sites/lib/lang/se_webdav_user.lng index 4c3fe5e5d..07dc28114 100644 --- a/interface/web/sites/lib/lang/se_webdav_user.lng +++ b/interface/web/sites/lib/lang/se_webdav_user.lng @@ -19,4 +19,3 @@ $wb['repeat_password_txt'] = 'Repetera lösenord'; $wb['password_mismatch_txt'] = 'Lösenorden matchar inte'; $wb['password_match_txt'] = 'Lösenorden matchar'; ?> - diff --git a/interface/web/sites/lib/lang/se_webdav_user_list.lng b/interface/web/sites/lib/lang/se_webdav_user_list.lng index 96bd318a7..a6031a1fd 100644 --- a/interface/web/sites/lib/lang/se_webdav_user_list.lng +++ b/interface/web/sites/lib/lang/se_webdav_user_list.lng @@ -6,4 +6,3 @@ $wb['parent_domain_id_txt'] = 'Webbsida'; $wb['username_txt'] = 'Användarnamn'; $wb['add_new_record_txt'] = 'Lägg till ny WebDAV-användare'; ?> - diff --git a/interface/web/sites/lib/lang/sk_ftp_user.lng b/interface/web/sites/lib/lang/sk_ftp_user.lng index 1526d4030..c57cbfdd1 100644 --- a/interface/web/sites/lib/lang/sk_ftp_user.lng +++ b/interface/web/sites/lib/lang/sk_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/sk_shell_user.lng b/interface/web/sites/lib/lang/sk_shell_user.lng index 79f9eac87..8b94d0d01 100644 --- a/interface/web/sites/lib/lang/sk_shell_user.lng +++ b/interface/web/sites/lib/lang/sk_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_folder_list.lng b/interface/web/sites/lib/lang/sk_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/sk_web_folder_list.lng +++ b/interface/web/sites/lib/lang/sk_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_folder_user_list.lng b/interface/web/sites/lib/lang/sk_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/sk_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/sk_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/sites/lib/lang/tr_ftp_user.lng b/interface/web/sites/lib/lang/tr_ftp_user.lng index 4cc2f4d7c..62401dee1 100644 --- a/interface/web/sites/lib/lang/tr_ftp_user.lng +++ b/interface/web/sites/lib/lang/tr_ftp_user.lng @@ -31,4 +31,6 @@ $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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; ?> diff --git a/interface/web/sites/lib/lang/tr_shell_user.lng b/interface/web/sites/lib/lang/tr_shell_user.lng index ac45063f0..0c932c1a4 100644 --- a/interface/web/sites/lib/lang/tr_shell_user.lng +++ b/interface/web/sites/lib/lang/tr_shell_user.lng @@ -28,4 +28,7 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['directory_error_regex'] = 'Invalid directory'; +$wb['shell_error_regex'] = 'Invalid shell'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_folder_list.lng b/interface/web/sites/lib/lang/tr_web_folder_list.lng index 76d97029b..89f8b65ac 100644 --- a/interface/web/sites/lib/lang/tr_web_folder_list.lng +++ b/interface/web/sites/lib/lang/tr_web_folder_list.lng @@ -4,4 +4,5 @@ $wb['active_txt'] = 'Active'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Website'; $wb['path_txt'] = 'Path'; +$wb['add_new_record_txt'] = 'Add new Folder'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_folder_user_list.lng b/interface/web/sites/lib/lang/tr_web_folder_user_list.lng index 9a7286a95..67612f511 100644 --- a/interface/web/sites/lib/lang/tr_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/tr_web_folder_user_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Folder User'; $wb['active_txt'] = 'Active'; $wb['web_folder_id_txt'] = 'Folder'; $wb['username_txt'] = 'Username'; +$wb['add_new_record_txt'] = 'Add new Folder User'; ?> diff --git a/interface/web/strengthmeter/lib/lang/se_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/se_strengthmeter.lng index 16dcfff68..7fb81bfa9 100644 --- a/interface/web/strengthmeter/lib/lang/se_strengthmeter.lng +++ b/interface/web/strengthmeter/lib/lang/se_strengthmeter.lng @@ -6,4 +6,3 @@ $wb['password_strength_3_txt'] = 'Bra'; $wb['password_strength_4_txt'] = 'Starkt'; $wb['password_strength_5_txt'] = 'Mycket starkt'; ?> - diff --git a/interface/web/tools/lib/lang/se.lng b/interface/web/tools/lib/lang/se.lng index 5c93f2b01..e6da7423b 100644 --- a/interface/web/tools/lib/lang/se.lng +++ b/interface/web/tools/lib/lang/se.lng @@ -11,4 +11,3 @@ $wb['ISPConfig 3 mail'] = 'ISPConfig 3 epost'; $wb['PDNS Tupa'] = 'PowerDNS Tupa'; $wb['Interface'] = 'Interface'; ?> - diff --git a/interface/web/tools/lib/lang/se_import_ispconfig.lng b/interface/web/tools/lib/lang/se_import_ispconfig.lng index 0aad8ad9a..17ddae91b 100644 --- a/interface/web/tools/lib/lang/se_import_ispconfig.lng +++ b/interface/web/tools/lib/lang/se_import_ispconfig.lng @@ -21,4 +21,3 @@ $wb['import_forward_txt'] = 'Importera vidarebefordring'; $wb['import_user_filter_txt'] = 'Importera användarfilter'; $wb['import_spamfilter_txt'] = 'Importera spamfilter'; ?> - diff --git a/interface/web/tools/lib/lang/se_index.lng b/interface/web/tools/lib/lang/se_index.lng index cf5012ff1..e39543525 100644 --- a/interface/web/tools/lib/lang/se_index.lng +++ b/interface/web/tools/lib/lang/se_index.lng @@ -2,4 +2,3 @@ $wb['page_head_txt'] = 'ISPConfig verktyg'; $wb['page_desc_txt'] = 'Ändra användarinställningar'; ?> - diff --git a/interface/web/tools/lib/lang/se_interface.lng b/interface/web/tools/lib/lang/se_interface.lng index 833679603..9a66f59e0 100644 --- a/interface/web/tools/lib/lang/se_interface.lng +++ b/interface/web/tools/lib/lang/se_interface.lng @@ -5,4 +5,3 @@ $wb['language_txt'] = 'Språk'; $wb['startmodule_txt'] = 'Startmodul'; $wb['app_theme_txt'] = 'Design'; ?> - diff --git a/interface/web/tools/lib/lang/se_tpl_default.lng b/interface/web/tools/lib/lang/se_tpl_default.lng index 4c0fd7139..013666e63 100644 --- a/interface/web/tools/lib/lang/se_tpl_default.lng +++ b/interface/web/tools/lib/lang/se_tpl_default.lng @@ -5,4 +5,3 @@ $wb['no_settings_txt'] = 'Det finns inga instälningar för det förvalda temat' $wb['btn_start_txt'] = 'Spara'; $wb['btn_cancel_txt'] = 'Tillbaka'; ?> - diff --git a/interface/web/tools/lib/lang/se_usersettings.lng b/interface/web/tools/lib/lang/se_usersettings.lng index 85176ac23..f7e05e913 100644 --- a/interface/web/tools/lib/lang/se_usersettings.lng +++ b/interface/web/tools/lib/lang/se_usersettings.lng @@ -10,4 +10,3 @@ $wb['repeat_password_txt'] = 'Upprepa lösenord'; $wb['password_mismatch_txt'] = 'Lösenorden matchar inte'; $wb['password_match_txt'] = 'Lösenorden matchar'; ?> - diff --git a/interface/web/vm/lib/lang/se.lng b/interface/web/vm/lib/lang/se.lng index 5c1ab5822..4167e14a8 100644 --- a/interface/web/vm/lib/lang/se.lng +++ b/interface/web/vm/lib/lang/se.lng @@ -5,4 +5,3 @@ $wb['VM Templates'] = 'VM Templates'; $wb['IP addresses'] = 'IP addresses'; $wb['OpenVZ'] = 'OpenVZ'; ?> - diff --git a/interface/web/vm/lib/lang/se_openvz_action.lng b/interface/web/vm/lib/lang/se_openvz_action.lng index 71e7263f9..52f732858 100644 --- a/interface/web/vm/lib/lang/se_openvz_action.lng +++ b/interface/web/vm/lib/lang/se_openvz_action.lng @@ -14,4 +14,3 @@ $wb['ostemplate_name_error'] = 'The OSTemplate name conatains unallowed characte $wb['ostemplate_name_unique_error'] = 'There is already a OSTemplate with that name.'; $wb['ostemplate_exec_txt'] = 'The command to create a OSTemplate has been sent to the host server. It will take several minutes until the OSTemplate has been created.'; ?> - diff --git a/interface/web/vm/lib/lang/se_openvz_ip.lng b/interface/web/vm/lib/lang/se_openvz_ip.lng index 67f688576..6016681df 100644 --- a/interface/web/vm/lib/lang/se_openvz_ip.lng +++ b/interface/web/vm/lib/lang/se_openvz_ip.lng @@ -7,4 +7,3 @@ $wb['ip_error_wrong'] = 'Please fill in a valid IPv4 address.'; $wb['ip_error_unique'] = 'This IP address does already exist.'; $wb['IP address'] = 'IP address'; ?> - diff --git a/interface/web/vm/lib/lang/se_openvz_ip_list.lng b/interface/web/vm/lib/lang/se_openvz_ip_list.lng index 37c1d62e7..e6a3a68c2 100644 --- a/interface/web/vm/lib/lang/se_openvz_ip_list.lng +++ b/interface/web/vm/lib/lang/se_openvz_ip_list.lng @@ -5,4 +5,3 @@ $wb['ip_address_txt'] = 'IP address'; $wb['reserved_txt'] = 'Reserved'; $wb['vm_id_txt'] = 'VM'; ?> - diff --git a/interface/web/vm/lib/lang/se_openvz_ostemplate.lng b/interface/web/vm/lib/lang/se_openvz_ostemplate.lng index bfeb29908..256750f19 100644 --- a/interface/web/vm/lib/lang/se_openvz_ostemplate.lng +++ b/interface/web/vm/lib/lang/se_openvz_ostemplate.lng @@ -9,4 +9,3 @@ $wb['template_name_error_empty'] = 'Template name is empty.'; $wb['template_file_error_empty'] = 'Template filename is empty.'; $wb['Template'] = 'Template'; ?> - diff --git a/interface/web/vm/lib/lang/se_openvz_ostemplate_list.lng b/interface/web/vm/lib/lang/se_openvz_ostemplate_list.lng index df01680e1..6471ec0e2 100644 --- a/interface/web/vm/lib/lang/se_openvz_ostemplate_list.lng +++ b/interface/web/vm/lib/lang/se_openvz_ostemplate_list.lng @@ -6,4 +6,3 @@ $wb['server_id_txt'] = 'Server'; $wb['allservers_txt'] = 'Exists on all servers'; $wb['ostemplate_id_txt'] = 'ID'; ?> - diff --git a/interface/web/vm/lib/lang/se_openvz_template.lng b/interface/web/vm/lib/lang/se_openvz_template.lng index 0887164d3..d285512dc 100644 --- a/interface/web/vm/lib/lang/se_openvz_template.lng +++ b/interface/web/vm/lib/lang/se_openvz_template.lng @@ -91,4 +91,3 @@ $wb['swappages_error_empty'] = 'Swappages is empty.'; $wb['Template'] = 'Template'; $wb['Advanced'] = 'Advanced'; ?> - diff --git a/interface/web/vm/lib/lang/se_openvz_template_list.lng b/interface/web/vm/lib/lang/se_openvz_template_list.lng index 6e4d911c6..de4045c36 100644 --- a/interface/web/vm/lib/lang/se_openvz_template_list.lng +++ b/interface/web/vm/lib/lang/se_openvz_template_list.lng @@ -3,4 +3,3 @@ $wb['list_head_txt'] = 'OpenVZ Virtual Machine Template'; $wb['active_txt'] = 'Active'; $wb['template_name_txt'] = 'Template name'; ?> - diff --git a/interface/web/vm/lib/lang/se_openvz_vm.lng b/interface/web/vm/lib/lang/se_openvz_vm.lng index 4698fe681..f2be022dd 100644 --- a/interface/web/vm/lib/lang/se_openvz_vm.lng +++ b/interface/web/vm/lib/lang/se_openvz_vm.lng @@ -38,4 +38,3 @@ $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.'; $wb['Virtual server'] = 'Virtual server'; $wb['Advanced'] = 'Advanced'; ?> - diff --git a/interface/web/vm/lib/lang/se_openvz_vm_list.lng b/interface/web/vm/lib/lang/se_openvz_vm_list.lng index a534a65f2..2238e2b8f 100644 --- a/interface/web/vm/lib/lang/se_openvz_vm_list.lng +++ b/interface/web/vm/lib/lang/se_openvz_vm_list.lng @@ -8,4 +8,3 @@ $wb['hostname_txt'] = 'Hostname'; $wb['ip_address_txt'] = 'IP address'; $wb['veid_txt'] = 'VEID'; ?> - -- GitLab From 7d9346a9a2879053dba283c54f4076b83fbc8484 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 1 Aug 2014 11:57:59 +0200 Subject: [PATCH 062/158] Updated version number to 3.0.5.4p2 --- install/sql/ispconfig3.sql | 2 +- install/tpl/config.inc.php.master | 2 +- interface/lib/config.inc.php | 2 +- interface/web/themes/blue/ispconfig_version | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index e1bfa900d..ab5f795cd 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2292,7 +2292,7 @@ INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`, -- Dumping data for table `sys_config` -- -INSERT INTO sys_config VALUES ('db','db_version','3.0.5.4p1'); +INSERT INTO sys_config VALUES ('db','db_version','3.0.5.4p2'); INSERT INTO sys_config VALUES ('interface','session_timeout','0'); SET FOREIGN_KEY_CHECKS = 1; diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index bae60611a..6f40a1cda 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -56,7 +56,7 @@ $revision = str_replace(array('Revision:','$',' '), '', $svn_revision); //** Application define('ISPC_APP_TITLE', 'ISPConfig'); -define('ISPC_APP_VERSION', '3.0.5.4p1'); +define('ISPC_APP_VERSION', '3.0.5.4p2'); define('DEVSYSTEM', 0); diff --git a/interface/lib/config.inc.php b/interface/lib/config.inc.php index 7fcbfe21f..179acc932 100644 --- a/interface/lib/config.inc.php +++ b/interface/lib/config.inc.php @@ -44,7 +44,7 @@ $revision = str_replace(array('Revision:', '$', ' '), '', $svn_revision); //** Application define('ISPC_APP_TITLE', 'ISPConfig'); -define('ISPC_APP_VERSION', '3.0.5.4p1'); +define('ISPC_APP_VERSION', '3.0.5.4p2'); define('DEVSYSTEM', 0); diff --git a/interface/web/themes/blue/ispconfig_version b/interface/web/themes/blue/ispconfig_version index ec330200a..0b23ab9c7 100644 --- a/interface/web/themes/blue/ispconfig_version +++ b/interface/web/themes/blue/ispconfig_version @@ -1 +1 @@ -3.0.5.4p1 +3.0.5.4p2 -- GitLab From 15687e27652852fa205f9e0d5de245bb9a44a618 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 1 Aug 2014 13:25:56 +0200 Subject: [PATCH 063/158] Fixed some errors in user check of apache and nginx plugin. --- interface/lib/classes/functions.inc.php | 4 ++-- server/lib/classes/system.inc.php | 18 +++++++++--------- .../plugins-available/apache2_plugin.inc.php | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index 29feffde7..e37edda97 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -430,7 +430,7 @@ class functions { $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($username,$name_blacklist)) return false; - if(preg_match('/^[\w\.\-]{0,32}$/', $username) == false) return false; + if(preg_match('/^[a-zA-Z0-9\.\-]{1,32}$/', $username) == false) return false; if($restrict_names == true && preg_match('/^web\d+$/', $username) == false) return false; @@ -443,7 +443,7 @@ class functions { $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($groupname,$name_blacklist)) return false; - if(preg_match('/^[\w\.\-]{0,32}$/', $groupname) == false) return false; + if(preg_match('/^[a-zA-Z0-9\.\-]{1,32}$/', $groupname) == false) return false; if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 3001c6459..9bd3e0080 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1824,7 +1824,7 @@ class system{ $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($username,$name_blacklist)) return false; - if(preg_match('/^[\w\.\-]{0,32}$/', $username) == false) return false; + if(preg_match('/^[a-zA-Z0-9\.\-]{1,32}$/', $username) == false) return false; if($check_id && intval($this->getuid($username)) < $this->min_uid) return false; @@ -1833,18 +1833,18 @@ class system{ return true; } - public function is_allowed_group($groupname, $restrict_names = false) { + public function is_allowed_group($groupname, $check_id = true, $restrict_names = false) { global $app; - + echo 1; $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($groupname,$name_blacklist)) return false; - - if(preg_match('/^[\w\.\-]{0,32}$/', $groupname) == false) return false; - - if(intval($this->getgid($groupname)) < $this->min_gid) return false; - + echo 2; + if(preg_match('/^[a-zA-Z0-9\.\-]{1,32}$/', $groupname) == false) return false; + echo 3; + if($check_id && intval($this->getgid($groupname)) < $this->min_gid) return false; + echo 4; if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; - + echo 5; return true; } diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index b1411c9f0..350c0372c 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -344,9 +344,9 @@ class apache2_plugin { if($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain') $app->log('document_root not set', LOGLEVEL_WARN); return 0; } - if(!$app->system->is_allowed_user($data['new']['system_user'], false, true) - || !$app->system->is_allowed_group($data['new']['system_group'], false, true)) { - $app->log('Websites cannot be owned by the root user or group.', LOGLEVEL_WARN); + if($app->system->is_allowed_user($data['new']['system_user'], $app->system->is_user($data['new']['system_user']), true) == false + || $app->system->is_allowed_group($data['new']['system_group'], $app->system->is_group($data['new']['system_group']), true) == false) { + $app->log('Websites cannot be owned by the root user or group. User: '.$data['new']['system_user'].' Group: '.$data['new']['system_group'], LOGLEVEL_WARN); return 0; } if(trim($data['new']['domain']) == '') { -- GitLab From 0cba4efbba787909adbf569fca50ac5b13337928 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 1 Aug 2014 14:33:07 +0200 Subject: [PATCH 064/158] Removed debug messages. --- server/lib/classes/system.inc.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 9bd3e0080..20d4f93a1 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1835,16 +1835,16 @@ class system{ public function is_allowed_group($groupname, $check_id = true, $restrict_names = false) { global $app; - echo 1; + $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($groupname,$name_blacklist)) return false; - echo 2; + if(preg_match('/^[a-zA-Z0-9\.\-]{1,32}$/', $groupname) == false) return false; - echo 3; + if($check_id && intval($this->getgid($groupname)) < $this->min_gid) return false; - echo 4; + if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; - echo 5; + return true; } -- GitLab From 2c49c56ebcb55e4dec88f22bf2977d0e6db9bcc7 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 1 Aug 2014 15:58:04 +0200 Subject: [PATCH 065/158] Fixed issue in password strength check. --- interface/lib/classes/validate_password.inc.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/validate_password.inc.php b/interface/lib/classes/validate_password.inc.php index 998c37c4e..da044c605 100644 --- a/interface/lib/classes/validate_password.inc.php +++ b/interface/lib/classes/validate_password.inc.php @@ -53,10 +53,11 @@ class validate_password { $different += 1; } - if (preg_match('/[`~!@#$%^&*()_+|\\=-[]}{\';:\/?.>,<" ]/', $password)) { + if (preg_match('/[`~!@#$%^&*()_+|\\=-\[\]}{\';:\/?.>,<" ]/', $password)) { $points += 1; $different += 1; } + if ($points == 0 || $different < 3) { if ($length >= 5 && $length <= 6) { @@ -122,7 +123,7 @@ class validate_password { $lng_text = str_replace('{chars}', $min_password_length, $lng_text); } if(!$lng_text) $lng_text = 'weak_password_txt'; // always return a string, even if language is missing - otherwise validator is NOT MATCHING! - + if(strlen($field_value) < $min_password_length) return $lng_text; if($this->_get_password_strength($field_value) < $min_password_strength) return $lng_text; -- GitLab From 53f0d29ab0b237a12998cadd64df1c8f7dfa3144 Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Wed, 6 Aug 2014 15:48:11 +0200 Subject: [PATCH 066/158] - made it possible to specify database table for AUTHSQL. --- interface/lib/classes/listform.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php index 04f4b375b..1b613a9a8 100644 --- a/interface/lib/classes/listform.inc.php +++ b/interface/lib/classes/listform.inc.php @@ -97,6 +97,7 @@ class listform { $querystring = str_replace("{AUTHSQL}", $app->tform->getAuthSQL('r'), $querystring); $querystring = str_replace("{AUTHSQL-A}", $app->tform->getAuthSQL('r', 'a'), $querystring); $querystring = str_replace("{AUTHSQL-B}", $app->tform->getAuthSQL('r', 'b'), $querystring); + $querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', create_function('$matches','global $app; $tmp = $app->tform->getAuthSQL("r", $matches[1]); return $tmp;'), $querystring); //* Getting the records $tmp_records = $app->db->queryAllRecords($querystring); -- GitLab From 9ae8653c95ca73645365a82415dc0e873ee6afe3 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 7 Aug 2014 07:38:21 +0200 Subject: [PATCH 067/158] Fix proposal: FS#3602 - Setting a session timeout causes mysql error messages on screen --- interface/lib/classes/session.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/session.inc.php b/interface/lib/classes/session.inc.php index dcb187b6c..09b82b65c 100644 --- a/interface/lib/classes/session.inc.php +++ b/interface/lib/classes/session.inc.php @@ -99,7 +99,7 @@ class session { $date_created = date('Y-m-d H:i:s'); $last_updated = date('Y-m-d H:i:s'); $session_data = $this->db->quote($session_data); - $sql = "INSERT INTO sys_session (session_id,date_created,last_updated,session_data,permanent) VALUES ('$session_id','$date_created','$last_updated','$session_data','" . ($this->permanent ? 'y' : 'n') . "')"; + $sql = "REPLACE INTO sys_session (session_id,date_created,last_updated,session_data,permanent) VALUES ('$session_id','$date_created','$last_updated','$session_data','" . ($this->permanent ? 'y' : 'n') . "')"; $this->db->query($sql); } else { -- GitLab From 1e6ea5a91d122ca8d8eee9f04e8c16c80c73d669 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 7 Aug 2014 09:25:50 +0200 Subject: [PATCH 068/158] Improved user check in nginx plugin. --- server/plugins-available/nginx_plugin.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 2837e0eb9..b0e18c79a 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -352,9 +352,9 @@ class nginx_plugin { return 0; } - if(!$app->system->is_allowed_user($data['new']['system_user'], false, true) - || !$app->system->is_allowed_group($data['new']['system_group'], false, true)) { - $app->log('Websites cannot be owned by the root user or group.', LOGLEVEL_WARN); + if($app->system->is_allowed_user($data['new']['system_user'], $app->system->is_user($data['new']['system_user']), true) == false + || $app->system->is_allowed_group($data['new']['system_group'], $app->system->is_group($data['new']['system_group']), true) == false) { + $app->log('Websites cannot be owned by the root user or group. User: '.$data['new']['system_user'].' Group: '.$data['new']['system_group'], LOGLEVEL_WARN); return 0; } -- GitLab From a1be59c6db4f286640d5a3eb0229e43bed641785 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 7 Aug 2014 11:01:45 +0200 Subject: [PATCH 069/158] Fixed: FS#3602 - Setting a session timeout causes mysql error messages on screen --- interface/lib/classes/session.inc.php | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/interface/lib/classes/session.inc.php b/interface/lib/classes/session.inc.php index 09b82b65c..8b3a7cffc 100644 --- a/interface/lib/classes/session.inc.php +++ b/interface/lib/classes/session.inc.php @@ -88,25 +88,21 @@ class session { // Dont write session_data to DB if session data has not been changed after reading it. if(isset($this->session_array['session_data']) && $this->session_array['session_data'] != '' && $this->session_array['session_data'] == $session_data) { $session_id = $this->db->quote($session_id); - $last_updated = date('Y-m-d H:i:s'); - $this->db->query("UPDATE sys_session SET last_updated = '$last_updated' WHERE session_id = '$session_id'"); + $this->db->query("UPDATE sys_session SET last_updated = NOW() WHERE session_id = '$session_id'"); return true; } if (@$this->session_array['session_id'] == '') { $session_id = $this->db->quote($session_id); - $date_created = date('Y-m-d H:i:s'); - $last_updated = date('Y-m-d H:i:s'); $session_data = $this->db->quote($session_data); - $sql = "REPLACE INTO sys_session (session_id,date_created,last_updated,session_data,permanent) VALUES ('$session_id','$date_created','$last_updated','$session_data','" . ($this->permanent ? 'y' : 'n') . "')"; + $sql = "REPLACE INTO sys_session (session_id,date_created,last_updated,session_data,permanent) VALUES ('$session_id',NOW(),NOW(),'$session_data','" . ($this->permanent ? 'y' : 'n') . "')"; $this->db->query($sql); } else { $session_id = $this->db->quote($session_id); - $last_updated = date('Y-m-d H:i:s'); $session_data = $this->db->quote($session_data); - $sql = "UPDATE sys_session SET last_updated = '$last_updated', session_data = '$session_data'" . ($this->permanent ? ", `permanent` = 'y'" : "") . " WHERE session_id = '$session_id'"; + $sql = "UPDATE sys_session SET last_updated = NOW(), session_data = '$session_data'" . ($this->permanent ? ", `permanent` = 'y'" : "") . " WHERE session_id = '$session_id'"; $this->db->query($sql); } @@ -128,18 +124,11 @@ class session { /*if($this->timeout > 0) { $this->db->query("DELETE FROM sys_session WHERE last_updated < DATE_SUB(NOW(), INTERVAL " . intval($this->timeout) . " MINUTE)"); } else {*/ - $real_now = date('Y-m-d H:i:s'); - $dt1 = strtotime("$real_now -$max_lifetime seconds"); - $dt2 = date('Y-m-d H:i:s', $dt1); - - $sql = "DELETE FROM sys_session WHERE last_updated < '$dt2' AND `permanent` != 'y'"; + $sql = "DELETE FROM sys_session WHERE last_updated < DATE_SUB(NOW(), INTERVAL " . intval($max_lifetime) . " SECOND) AND `permanent` != 'y'"; $this->db->query($sql); /* delete very old even if they are permanent */ - $dt1 = strtotime("$real_now -365 days"); - $dt2 = date('Y-m-d H:i:s', $dt1); - - $sql = "DELETE FROM sys_session WHERE last_updated < '$dt2'"; + $sql = "DELETE FROM sys_session WHERE last_updated < DATE_SUB(NOW(), INTERVAL 1 YEAR)"; $this->db->query($sql); //} -- GitLab From 746bf0f5cd4a3a650a0bfa1c1149d4e1331774a0 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 8 Aug 2014 10:53:48 +0200 Subject: [PATCH 070/158] Fixed: FS#3607 - Permissions of .htaccess file in stats folder are wrong --- server/plugins-available/apache2_plugin.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 350c0372c..a5339579f 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1475,7 +1475,7 @@ class apache2_plugin { if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdir($data['new']['document_root'].'/' . $web_folder . '/stats'); $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user"; $app->system->file_put_contents($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', $ht_file); - $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0751); + $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0755); unset($ht_file); //} @@ -1485,7 +1485,7 @@ class apache2_plugin { $app->system->web_folder_protection($data['new']['document_root'], false); $app->system->file_put_contents($data['new']['document_root'].'/web/stats/.htpasswd_stats', $htp_file); $app->system->web_folder_protection($data['new']['document_root'], true); - $app->system->chmod($data['new']['document_root'].'/web/stats/.htpasswd_stats', 0751); + $app->system->chmod($data['new']['document_root'].'/web/stats/.htpasswd_stats', 0755); unset($htp_file); } } -- GitLab From 373e8817f82014fcde11157ed0d5e75eb77a5cb4 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 8 Aug 2014 10:55:34 +0200 Subject: [PATCH 071/158] Fixed: FS#3603 - system.inc.php:1827 is_allowed_user regex typo? --- interface/lib/classes/functions.inc.php | 4 ++-- server/lib/classes/system.inc.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index e37edda97..2d87c6334 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -430,7 +430,7 @@ class functions { $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($username,$name_blacklist)) return false; - if(preg_match('/^[a-zA-Z0-9\.\-]{1,32}$/', $username) == false) return false; + if(preg_match('/^[a-zA-Z0-9\.\-_]{1,32}$/', $username) == false) return false; if($restrict_names == true && preg_match('/^web\d+$/', $username) == false) return false; @@ -443,7 +443,7 @@ class functions { $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($groupname,$name_blacklist)) return false; - if(preg_match('/^[a-zA-Z0-9\.\-]{1,32}$/', $groupname) == false) return false; + if(preg_match('/^[a-zA-Z0-9\.\-_]{1,32}$/', $groupname) == false) return false; if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 20d4f93a1..af42e5ec3 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1824,7 +1824,7 @@ class system{ $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($username,$name_blacklist)) return false; - if(preg_match('/^[a-zA-Z0-9\.\-]{1,32}$/', $username) == false) return false; + if(preg_match('/^[a-zA-Z0-9\.\-_]{1,32}$/', $username) == false) return false; if($check_id && intval($this->getuid($username)) < $this->min_uid) return false; @@ -1839,7 +1839,7 @@ class system{ $name_blacklist = array('root','ispconfig','vmail','getmail'); if(in_array($groupname,$name_blacklist)) return false; - if(preg_match('/^[a-zA-Z0-9\.\-]{1,32}$/', $groupname) == false) return false; + if(preg_match('/^[a-zA-Z0-9\.\-_]{1,32}$/', $groupname) == false) return false; if($check_id && intval($this->getgid($groupname)) < $this->min_gid) return false; -- GitLab From 65ad3435addc6292e378c88ec861dc58a3a8da3d Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Wed, 13 Aug 2014 12:52:18 +0200 Subject: [PATCH 072/158] - improved input validation --- interface/lib/classes/functions.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index 2d87c6334..8fed76708 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -248,7 +248,7 @@ class functions { } $ips = array(); - $results = $app->db->queryAllRecords("SELECT ip_address AS ip, server_id FROM server_ip WHERE ip_type = '".$type."'"); + $results = $app->db->queryAllRecords("SELECT ip_address AS ip, server_id FROM server_ip WHERE ip_type = '".$app->db->quote($type)."'"); if(!empty($results) && is_array($results)){ foreach($results as $result){ if(preg_match($regex, $result['ip'])){ -- GitLab From 3e0fc8674ab8d1106d324eab809b49e420481e54 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 16:07:03 +0200 Subject: [PATCH 073/158] Changed owner of ispconfig server files from ispconfig to root user. --- install/dist/lib/fedora.lib.php | 18 ++++++++++++++---- install/dist/lib/gentoo.lib.php | 18 ++++++++++++++---- install/dist/lib/opensuse.lib.php | 18 ++++++++++++++---- install/lib/installer_base.lib.php | 18 ++++++++++++++---- 4 files changed, 56 insertions(+), 16 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 7a08f93f1..d6d975a15 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -958,12 +958,22 @@ class installer_dist extends installer_base { $this->db->query($sql); } - //* Chmod the files - $command = "chmod -R 750 $install_dir"; + /// chown install dir to root and chmod 755 + $command = 'chown root:root '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chmod 755 '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Chmod the files and directoreies in the install dir + $command = 'chmod -R 750 '.$install_dir.'/*'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - //* chown the files to the ispconfig user and group - $command = "chown -R ispconfig:ispconfig $install_dir"; + //* chown the interface files to the ispconfig user and group + $command = 'chown -R ispconfig:ispconfig '.$install_dir.'/interface'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the server files to the root user and group + $command = 'chown -R root:root '.$install_dir.'/server'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 4200a0139..26474c51f 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -850,12 +850,22 @@ class installer extends installer_base $this->db->query($sql); } - //* Chmod the files - $command = "chmod -R 750 $install_dir"; + // chown install dir to root and chmod 755 + $command = 'chown root:root '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chmod 755 '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Chmod the files and directoreies in the install dir + $command = 'chmod -R 750 '.$install_dir.'/*'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - //* chown the files to the ispconfig user and group - $command = "chown -R ispconfig:ispconfig $install_dir"; + //* chown the interface files to the ispconfig user and group + $command = 'chown -R ispconfig:ispconfig '.$install_dir.'/interface'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the server files to the root user and group + $command = 'chown -R root:root '.$install_dir.'/server'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index f990e9196..dad3a6a3c 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -1028,12 +1028,22 @@ class installer_dist extends installer_base { $this->db->query($sql); } - //* Chmod the files - $command = "chmod -R 750 $install_dir"; + // chown install dir to root and chmod 755 + $command = 'chown root:root '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chmod 755 '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Chmod the files and directoreies in the install dir + $command = 'chmod -R 750 '.$install_dir.'/*'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - //* chown the files to the ispconfig user and group - $command = "chown -R ispconfig:ispconfig $install_dir"; + //* chown the interface files to the ispconfig user and group + $command = 'chown -R ispconfig:ispconfig '.$install_dir.'/interface'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the server files to the root user and group + $command = 'chown -R root:root '.$install_dir.'/server'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 548cf9382..a82ac2e74 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1885,12 +1885,22 @@ class installer_base { } - //* Chmod the files - $command = 'chmod -R 750 '.$install_dir; + // chown install dir to root and chmod 755 + $command = 'chown root:root '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chmod 755 '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Chmod the files and directoreies in the install dir + $command = 'chmod -R 750 '.$install_dir.'/*'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - //* chown the files to the ispconfig user and group - $command = 'chown -R ispconfig:ispconfig '.$install_dir; + //* chown the interface files to the ispconfig user and group + $command = 'chown -R ispconfig:ispconfig '.$install_dir.'/interface'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the server files to the root user and group + $command = 'chown -R root:root '.$install_dir.'/server'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable -- GitLab From 0281b9f75ae39c1654ddb5acb0b5a1feb0a9f406 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 16:10:14 +0200 Subject: [PATCH 074/158] Removed unused files. --- interface/lib/classes/db_firebird.inc.php | 384 ------------------ interface/web/designer/form/empty.dir | 1 - interface/web/designer/form_edit.php | 153 ------- interface/web/designer/form_list.php | 89 ---- interface/web/designer/form_show.php | 119 ------ interface/web/designer/index.php | 1 - interface/web/designer/lib/admin.conf.php | 4 - interface/web/designer/lib/lang/ar.lng | 2 - .../web/designer/lib/lang/ar_form_edit.lng | 24 -- .../web/designer/lib/lang/ar_form_list.lng | 7 - .../web/designer/lib/lang/ar_form_show.lng | 18 - .../web/designer/lib/lang/ar_module_edit.lng | 22 - .../web/designer/lib/lang/ar_module_list.lng | 5 - .../designer/lib/lang/ar_module_nav_edit.lng | 6 - .../lib/lang/ar_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/ar_module_show.lng | 16 - interface/web/designer/lib/lang/bg.lng | 2 - .../web/designer/lib/lang/bg_form_edit.lng | 24 -- .../web/designer/lib/lang/bg_form_list.lng | 7 - .../web/designer/lib/lang/bg_form_show.lng | 18 - .../web/designer/lib/lang/bg_module_edit.lng | 12 - .../web/designer/lib/lang/bg_module_list.lng | 5 - .../designer/lib/lang/bg_module_nav_edit.lng | 6 - .../lib/lang/bg_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/bg_module_show.lng | 16 - interface/web/designer/lib/lang/br.lng | 2 - .../web/designer/lib/lang/br_form_edit.lng | 24 -- .../web/designer/lib/lang/br_form_list.lng | 7 - .../web/designer/lib/lang/br_form_show.lng | 18 - .../web/designer/lib/lang/br_module_edit.lng | 22 - .../web/designer/lib/lang/br_module_list.lng | 5 - .../designer/lib/lang/br_module_nav_edit.lng | 6 - .../lib/lang/br_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/br_module_show.lng | 16 - interface/web/designer/lib/lang/cz.lng | 2 - .../web/designer/lib/lang/cz_form_edit.lng | 24 -- .../web/designer/lib/lang/cz_form_list.lng | 7 - .../web/designer/lib/lang/cz_form_show.lng | 18 - .../web/designer/lib/lang/cz_module_edit.lng | 22 - .../web/designer/lib/lang/cz_module_list.lng | 5 - .../designer/lib/lang/cz_module_nav_edit.lng | 6 - .../lib/lang/cz_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/cz_module_show.lng | 16 - interface/web/designer/lib/lang/de.lng | 2 - .../web/designer/lib/lang/de_form_edit.lng | 24 -- .../web/designer/lib/lang/de_form_list.lng | 7 - .../web/designer/lib/lang/de_form_show.lng | 18 - .../web/designer/lib/lang/de_module_edit.lng | 12 - .../web/designer/lib/lang/de_module_list.lng | 5 - .../designer/lib/lang/de_module_nav_edit.lng | 6 - .../lib/lang/de_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/de_module_show.lng | 16 - interface/web/designer/lib/lang/el.lng | 2 - .../web/designer/lib/lang/el_form_edit.lng | 24 -- .../web/designer/lib/lang/el_form_list.lng | 7 - .../web/designer/lib/lang/el_form_show.lng | 18 - .../web/designer/lib/lang/el_module_edit.lng | 12 - .../web/designer/lib/lang/el_module_list.lng | 5 - .../designer/lib/lang/el_module_nav_edit.lng | 6 - .../lib/lang/el_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/el_module_show.lng | 16 - interface/web/designer/lib/lang/en.lng | 3 - .../web/designer/lib/lang/en_form_edit.lng | 26 -- .../web/designer/lib/lang/en_form_list.lng | 7 - .../web/designer/lib/lang/en_form_show.lng | 18 - .../web/designer/lib/lang/en_module_edit.lng | 23 -- .../web/designer/lib/lang/en_module_list.lng | 5 - .../designer/lib/lang/en_module_nav_edit.lng | 6 - .../lib/lang/en_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/en_module_show.lng | 17 - interface/web/designer/lib/lang/es.lng | 2 - .../web/designer/lib/lang/es_form_edit.lng | 24 -- .../web/designer/lib/lang/es_form_list.lng | 7 - .../web/designer/lib/lang/es_form_show.lng | 18 - .../web/designer/lib/lang/es_module_edit.lng | 12 - .../web/designer/lib/lang/es_module_list.lng | 5 - .../designer/lib/lang/es_module_nav_edit.lng | 6 - .../lib/lang/es_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/es_module_show.lng | 16 - interface/web/designer/lib/lang/fi.lng | 2 - .../web/designer/lib/lang/fi_form_edit.lng | 24 -- .../web/designer/lib/lang/fi_form_list.lng | 7 - .../web/designer/lib/lang/fi_form_show.lng | 18 - .../web/designer/lib/lang/fi_module_edit.lng | 22 - .../web/designer/lib/lang/fi_module_list.lng | 5 - .../designer/lib/lang/fi_module_nav_edit.lng | 6 - .../lib/lang/fi_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/fi_module_show.lng | 16 - interface/web/designer/lib/lang/fr.lng | 2 - .../web/designer/lib/lang/fr_form_edit.lng | 24 -- .../web/designer/lib/lang/fr_form_list.lng | 7 - .../web/designer/lib/lang/fr_form_show.lng | 18 - .../web/designer/lib/lang/fr_module_edit.lng | 12 - .../web/designer/lib/lang/fr_module_list.lng | 5 - .../designer/lib/lang/fr_module_nav_edit.lng | 6 - .../lib/lang/fr_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/fr_module_show.lng | 16 - interface/web/designer/lib/lang/hr.lng | 2 - .../web/designer/lib/lang/hr_form_edit.lng | 24 -- .../web/designer/lib/lang/hr_form_list.lng | 7 - .../web/designer/lib/lang/hr_form_show.lng | 18 - .../web/designer/lib/lang/hr_module_edit.lng | 12 - .../web/designer/lib/lang/hr_module_list.lng | 5 - .../designer/lib/lang/hr_module_nav_edit.lng | 6 - .../lib/lang/hr_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/hr_module_show.lng | 16 - interface/web/designer/lib/lang/hu.lng | 2 - .../web/designer/lib/lang/hu_form_edit.lng | 24 -- .../web/designer/lib/lang/hu_form_list.lng | 7 - .../web/designer/lib/lang/hu_form_show.lng | 18 - .../web/designer/lib/lang/hu_module_edit.lng | 22 - .../web/designer/lib/lang/hu_module_list.lng | 5 - .../designer/lib/lang/hu_module_nav_edit.lng | 6 - .../lib/lang/hu_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/hu_module_show.lng | 16 - interface/web/designer/lib/lang/id.lng | 2 - .../web/designer/lib/lang/id_form_edit.lng | 24 -- .../web/designer/lib/lang/id_form_list.lng | 7 - .../web/designer/lib/lang/id_form_show.lng | 18 - .../web/designer/lib/lang/id_module_edit.lng | 22 - .../web/designer/lib/lang/id_module_list.lng | 5 - .../designer/lib/lang/id_module_nav_edit.lng | 6 - .../lib/lang/id_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/id_module_show.lng | 16 - interface/web/designer/lib/lang/it.lng | 2 - .../web/designer/lib/lang/it_form_edit.lng | 24 -- .../web/designer/lib/lang/it_form_list.lng | 7 - .../web/designer/lib/lang/it_form_show.lng | 18 - .../web/designer/lib/lang/it_module_edit.lng | 22 - .../web/designer/lib/lang/it_module_list.lng | 5 - .../designer/lib/lang/it_module_nav_edit.lng | 6 - .../lib/lang/it_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/it_module_show.lng | 16 - interface/web/designer/lib/lang/ja.lng | 2 - .../web/designer/lib/lang/ja_form_edit.lng | 24 -- .../web/designer/lib/lang/ja_form_list.lng | 7 - .../web/designer/lib/lang/ja_form_show.lng | 18 - .../web/designer/lib/lang/ja_module_edit.lng | 22 - .../web/designer/lib/lang/ja_module_list.lng | 5 - .../designer/lib/lang/ja_module_nav_edit.lng | 6 - .../lib/lang/ja_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/ja_module_show.lng | 16 - interface/web/designer/lib/lang/nl.lng | 2 - .../web/designer/lib/lang/nl_form_edit.lng | 24 -- .../web/designer/lib/lang/nl_form_list.lng | 7 - .../web/designer/lib/lang/nl_form_show.lng | 18 - .../web/designer/lib/lang/nl_module_edit.lng | 22 - .../web/designer/lib/lang/nl_module_list.lng | 5 - .../designer/lib/lang/nl_module_nav_edit.lng | 6 - .../lib/lang/nl_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/nl_module_show.lng | 16 - interface/web/designer/lib/lang/pl.lng | 2 - .../web/designer/lib/lang/pl_form_edit.lng | 24 -- .../web/designer/lib/lang/pl_form_list.lng | 7 - .../web/designer/lib/lang/pl_form_show.lng | 18 - .../web/designer/lib/lang/pl_module_edit.lng | 22 - .../web/designer/lib/lang/pl_module_list.lng | 5 - .../designer/lib/lang/pl_module_nav_edit.lng | 6 - .../lib/lang/pl_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/pl_module_show.lng | 16 - interface/web/designer/lib/lang/pt.lng | 2 - .../web/designer/lib/lang/pt_form_edit.lng | 24 -- .../web/designer/lib/lang/pt_form_list.lng | 7 - .../web/designer/lib/lang/pt_form_show.lng | 18 - .../web/designer/lib/lang/pt_module_edit.lng | 22 - .../web/designer/lib/lang/pt_module_list.lng | 5 - .../designer/lib/lang/pt_module_nav_edit.lng | 6 - .../lib/lang/pt_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/pt_module_show.lng | 16 - interface/web/designer/lib/lang/ro.lng | 2 - .../web/designer/lib/lang/ro_form_edit.lng | 24 -- .../web/designer/lib/lang/ro_form_list.lng | 7 - .../web/designer/lib/lang/ro_form_show.lng | 18 - .../web/designer/lib/lang/ro_module_edit.lng | 12 - .../web/designer/lib/lang/ro_module_list.lng | 5 - .../designer/lib/lang/ro_module_nav_edit.lng | 6 - .../lib/lang/ro_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/ro_module_show.lng | 16 - interface/web/designer/lib/lang/ru.lng | 2 - .../web/designer/lib/lang/ru_form_edit.lng | 24 -- .../web/designer/lib/lang/ru_form_list.lng | 7 - .../web/designer/lib/lang/ru_form_show.lng | 18 - .../web/designer/lib/lang/ru_module_edit.lng | 22 - .../web/designer/lib/lang/ru_module_list.lng | 5 - .../designer/lib/lang/ru_module_nav_edit.lng | 6 - .../lib/lang/ru_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/ru_module_show.lng | 16 - interface/web/designer/lib/lang/se.lng | 2 - .../web/designer/lib/lang/se_form_edit.lng | 24 -- .../web/designer/lib/lang/se_form_list.lng | 7 - .../web/designer/lib/lang/se_form_show.lng | 18 - .../web/designer/lib/lang/se_module_edit.lng | 12 - .../web/designer/lib/lang/se_module_list.lng | 5 - .../designer/lib/lang/se_module_nav_edit.lng | 6 - .../lib/lang/se_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/se_module_show.lng | 16 - interface/web/designer/lib/lang/sk.lng | 2 - .../web/designer/lib/lang/sk_form_edit.lng | 24 -- .../web/designer/lib/lang/sk_form_list.lng | 7 - .../web/designer/lib/lang/sk_form_show.lng | 18 - .../web/designer/lib/lang/sk_module_edit.lng | 12 - .../web/designer/lib/lang/sk_module_list.lng | 5 - .../designer/lib/lang/sk_module_nav_edit.lng | 6 - .../lib/lang/sk_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/sk_module_show.lng | 16 - interface/web/designer/lib/lang/tr.lng | 2 - .../web/designer/lib/lang/tr_form_edit.lng | 24 -- .../web/designer/lib/lang/tr_form_list.lng | 7 - .../web/designer/lib/lang/tr_form_show.lng | 18 - .../web/designer/lib/lang/tr_module_edit.lng | 22 - .../web/designer/lib/lang/tr_module_list.lng | 5 - .../designer/lib/lang/tr_module_nav_edit.lng | 6 - .../lib/lang/tr_module_nav_item_edit.lng | 8 - .../web/designer/lib/lang/tr_module_show.lng | 16 - interface/web/designer/lib/module.conf.php | 95 ----- interface/web/designer/list/empty.dir | 1 - interface/web/designer/module_edit.php | 184 --------- interface/web/designer/module_list.php | 69 ---- interface/web/designer/module_nav_del.php | 81 ---- interface/web/designer/module_nav_edit.php | 147 ------- interface/web/designer/module_nav_flip.php | 92 ----- .../web/designer/module_nav_item_del.php | 83 ---- .../web/designer/module_nav_item_edit.php | 151 ------- .../web/designer/module_nav_item_flip.php | 94 ----- interface/web/designer/module_show.php | 113 ------ .../web/designer/templates/form_edit.htm | 79 ---- .../web/designer/templates/form_list.htm | 29 -- .../web/designer/templates/form_show.htm | 61 --- .../web/designer/templates/module_edit.htm | 43 -- .../web/designer/templates/module_list.htm | 23 -- .../designer/templates/module_nav_edit.htm | 24 -- .../templates/module_nav_item_edit.htm | 33 -- .../web/designer/templates/module_show.htm | 31 -- .../web/designer/templates/paging.tpl.htm | 9 - 234 files changed, 4592 deletions(-) delete mode 100644 interface/lib/classes/db_firebird.inc.php delete mode 100644 interface/web/designer/form/empty.dir delete mode 100644 interface/web/designer/form_edit.php delete mode 100644 interface/web/designer/form_list.php delete mode 100644 interface/web/designer/form_show.php delete mode 100644 interface/web/designer/index.php delete mode 100644 interface/web/designer/lib/admin.conf.php delete mode 100644 interface/web/designer/lib/lang/ar.lng delete mode 100644 interface/web/designer/lib/lang/ar_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/ar_form_list.lng delete mode 100644 interface/web/designer/lib/lang/ar_form_show.lng delete mode 100644 interface/web/designer/lib/lang/ar_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/ar_module_list.lng delete mode 100644 interface/web/designer/lib/lang/ar_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/ar_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/ar_module_show.lng delete mode 100644 interface/web/designer/lib/lang/bg.lng delete mode 100644 interface/web/designer/lib/lang/bg_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/bg_form_list.lng delete mode 100644 interface/web/designer/lib/lang/bg_form_show.lng delete mode 100644 interface/web/designer/lib/lang/bg_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/bg_module_list.lng delete mode 100644 interface/web/designer/lib/lang/bg_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/bg_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/bg_module_show.lng delete mode 100644 interface/web/designer/lib/lang/br.lng delete mode 100644 interface/web/designer/lib/lang/br_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/br_form_list.lng delete mode 100644 interface/web/designer/lib/lang/br_form_show.lng delete mode 100644 interface/web/designer/lib/lang/br_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/br_module_list.lng delete mode 100644 interface/web/designer/lib/lang/br_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/br_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/br_module_show.lng delete mode 100644 interface/web/designer/lib/lang/cz.lng delete mode 100644 interface/web/designer/lib/lang/cz_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/cz_form_list.lng delete mode 100644 interface/web/designer/lib/lang/cz_form_show.lng delete mode 100644 interface/web/designer/lib/lang/cz_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/cz_module_list.lng delete mode 100644 interface/web/designer/lib/lang/cz_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/cz_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/cz_module_show.lng delete mode 100644 interface/web/designer/lib/lang/de.lng delete mode 100644 interface/web/designer/lib/lang/de_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/de_form_list.lng delete mode 100644 interface/web/designer/lib/lang/de_form_show.lng delete mode 100644 interface/web/designer/lib/lang/de_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/de_module_list.lng delete mode 100644 interface/web/designer/lib/lang/de_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/de_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/de_module_show.lng delete mode 100644 interface/web/designer/lib/lang/el.lng delete mode 100644 interface/web/designer/lib/lang/el_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/el_form_list.lng delete mode 100644 interface/web/designer/lib/lang/el_form_show.lng delete mode 100644 interface/web/designer/lib/lang/el_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/el_module_list.lng delete mode 100644 interface/web/designer/lib/lang/el_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/el_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/el_module_show.lng delete mode 100644 interface/web/designer/lib/lang/en.lng delete mode 100644 interface/web/designer/lib/lang/en_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/en_form_list.lng delete mode 100644 interface/web/designer/lib/lang/en_form_show.lng delete mode 100644 interface/web/designer/lib/lang/en_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/en_module_list.lng delete mode 100644 interface/web/designer/lib/lang/en_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/en_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/en_module_show.lng delete mode 100644 interface/web/designer/lib/lang/es.lng delete mode 100644 interface/web/designer/lib/lang/es_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/es_form_list.lng delete mode 100644 interface/web/designer/lib/lang/es_form_show.lng delete mode 100644 interface/web/designer/lib/lang/es_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/es_module_list.lng delete mode 100644 interface/web/designer/lib/lang/es_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/es_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/es_module_show.lng delete mode 100755 interface/web/designer/lib/lang/fi.lng delete mode 100755 interface/web/designer/lib/lang/fi_form_edit.lng delete mode 100755 interface/web/designer/lib/lang/fi_form_list.lng delete mode 100755 interface/web/designer/lib/lang/fi_form_show.lng delete mode 100755 interface/web/designer/lib/lang/fi_module_edit.lng delete mode 100755 interface/web/designer/lib/lang/fi_module_list.lng delete mode 100755 interface/web/designer/lib/lang/fi_module_nav_edit.lng delete mode 100755 interface/web/designer/lib/lang/fi_module_nav_item_edit.lng delete mode 100755 interface/web/designer/lib/lang/fi_module_show.lng delete mode 100644 interface/web/designer/lib/lang/fr.lng delete mode 100644 interface/web/designer/lib/lang/fr_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/fr_form_list.lng delete mode 100644 interface/web/designer/lib/lang/fr_form_show.lng delete mode 100644 interface/web/designer/lib/lang/fr_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/fr_module_list.lng delete mode 100644 interface/web/designer/lib/lang/fr_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/fr_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/fr_module_show.lng delete mode 100644 interface/web/designer/lib/lang/hr.lng delete mode 100644 interface/web/designer/lib/lang/hr_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/hr_form_list.lng delete mode 100644 interface/web/designer/lib/lang/hr_form_show.lng delete mode 100644 interface/web/designer/lib/lang/hr_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/hr_module_list.lng delete mode 100644 interface/web/designer/lib/lang/hr_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/hr_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/hr_module_show.lng delete mode 100644 interface/web/designer/lib/lang/hu.lng delete mode 100644 interface/web/designer/lib/lang/hu_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/hu_form_list.lng delete mode 100644 interface/web/designer/lib/lang/hu_form_show.lng delete mode 100644 interface/web/designer/lib/lang/hu_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/hu_module_list.lng delete mode 100644 interface/web/designer/lib/lang/hu_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/hu_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/hu_module_show.lng delete mode 100644 interface/web/designer/lib/lang/id.lng delete mode 100644 interface/web/designer/lib/lang/id_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/id_form_list.lng delete mode 100644 interface/web/designer/lib/lang/id_form_show.lng delete mode 100644 interface/web/designer/lib/lang/id_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/id_module_list.lng delete mode 100644 interface/web/designer/lib/lang/id_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/id_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/id_module_show.lng delete mode 100644 interface/web/designer/lib/lang/it.lng delete mode 100644 interface/web/designer/lib/lang/it_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/it_form_list.lng delete mode 100644 interface/web/designer/lib/lang/it_form_show.lng delete mode 100644 interface/web/designer/lib/lang/it_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/it_module_list.lng delete mode 100644 interface/web/designer/lib/lang/it_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/it_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/it_module_show.lng delete mode 100644 interface/web/designer/lib/lang/ja.lng delete mode 100644 interface/web/designer/lib/lang/ja_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/ja_form_list.lng delete mode 100644 interface/web/designer/lib/lang/ja_form_show.lng delete mode 100644 interface/web/designer/lib/lang/ja_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/ja_module_list.lng delete mode 100644 interface/web/designer/lib/lang/ja_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/ja_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/ja_module_show.lng delete mode 100644 interface/web/designer/lib/lang/nl.lng delete mode 100644 interface/web/designer/lib/lang/nl_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/nl_form_list.lng delete mode 100644 interface/web/designer/lib/lang/nl_form_show.lng delete mode 100644 interface/web/designer/lib/lang/nl_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/nl_module_list.lng delete mode 100644 interface/web/designer/lib/lang/nl_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/nl_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/nl_module_show.lng delete mode 100644 interface/web/designer/lib/lang/pl.lng delete mode 100644 interface/web/designer/lib/lang/pl_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/pl_form_list.lng delete mode 100644 interface/web/designer/lib/lang/pl_form_show.lng delete mode 100644 interface/web/designer/lib/lang/pl_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/pl_module_list.lng delete mode 100644 interface/web/designer/lib/lang/pl_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/pl_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/pl_module_show.lng delete mode 100644 interface/web/designer/lib/lang/pt.lng delete mode 100644 interface/web/designer/lib/lang/pt_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/pt_form_list.lng delete mode 100644 interface/web/designer/lib/lang/pt_form_show.lng delete mode 100644 interface/web/designer/lib/lang/pt_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/pt_module_list.lng delete mode 100644 interface/web/designer/lib/lang/pt_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/pt_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/pt_module_show.lng delete mode 100644 interface/web/designer/lib/lang/ro.lng delete mode 100644 interface/web/designer/lib/lang/ro_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/ro_form_list.lng delete mode 100644 interface/web/designer/lib/lang/ro_form_show.lng delete mode 100644 interface/web/designer/lib/lang/ro_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/ro_module_list.lng delete mode 100644 interface/web/designer/lib/lang/ro_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/ro_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/ro_module_show.lng delete mode 100644 interface/web/designer/lib/lang/ru.lng delete mode 100644 interface/web/designer/lib/lang/ru_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/ru_form_list.lng delete mode 100644 interface/web/designer/lib/lang/ru_form_show.lng delete mode 100644 interface/web/designer/lib/lang/ru_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/ru_module_list.lng delete mode 100644 interface/web/designer/lib/lang/ru_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/ru_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/ru_module_show.lng delete mode 100644 interface/web/designer/lib/lang/se.lng delete mode 100644 interface/web/designer/lib/lang/se_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/se_form_list.lng delete mode 100644 interface/web/designer/lib/lang/se_form_show.lng delete mode 100644 interface/web/designer/lib/lang/se_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/se_module_list.lng delete mode 100644 interface/web/designer/lib/lang/se_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/se_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/se_module_show.lng delete mode 100644 interface/web/designer/lib/lang/sk.lng delete mode 100644 interface/web/designer/lib/lang/sk_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/sk_form_list.lng delete mode 100644 interface/web/designer/lib/lang/sk_form_show.lng delete mode 100644 interface/web/designer/lib/lang/sk_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/sk_module_list.lng delete mode 100644 interface/web/designer/lib/lang/sk_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/sk_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/sk_module_show.lng delete mode 100644 interface/web/designer/lib/lang/tr.lng delete mode 100644 interface/web/designer/lib/lang/tr_form_edit.lng delete mode 100644 interface/web/designer/lib/lang/tr_form_list.lng delete mode 100644 interface/web/designer/lib/lang/tr_form_show.lng delete mode 100644 interface/web/designer/lib/lang/tr_module_edit.lng delete mode 100644 interface/web/designer/lib/lang/tr_module_list.lng delete mode 100644 interface/web/designer/lib/lang/tr_module_nav_edit.lng delete mode 100644 interface/web/designer/lib/lang/tr_module_nav_item_edit.lng delete mode 100644 interface/web/designer/lib/lang/tr_module_show.lng delete mode 100644 interface/web/designer/lib/module.conf.php delete mode 100644 interface/web/designer/list/empty.dir delete mode 100644 interface/web/designer/module_edit.php delete mode 100644 interface/web/designer/module_list.php delete mode 100644 interface/web/designer/module_nav_del.php delete mode 100644 interface/web/designer/module_nav_edit.php delete mode 100644 interface/web/designer/module_nav_flip.php delete mode 100644 interface/web/designer/module_nav_item_del.php delete mode 100644 interface/web/designer/module_nav_item_edit.php delete mode 100644 interface/web/designer/module_nav_item_flip.php delete mode 100644 interface/web/designer/module_show.php delete mode 100644 interface/web/designer/templates/form_edit.htm delete mode 100644 interface/web/designer/templates/form_list.htm delete mode 100644 interface/web/designer/templates/form_show.htm delete mode 100644 interface/web/designer/templates/module_edit.htm delete mode 100644 interface/web/designer/templates/module_list.htm delete mode 100644 interface/web/designer/templates/module_nav_edit.htm delete mode 100644 interface/web/designer/templates/module_nav_item_edit.htm delete mode 100644 interface/web/designer/templates/module_show.htm delete mode 100644 interface/web/designer/templates/paging.tpl.htm diff --git a/interface/lib/classes/db_firebird.inc.php b/interface/lib/classes/db_firebird.inc.php deleted file mode 100644 index fda4ef8e6..000000000 --- a/interface/lib/classes/db_firebird.inc.php +++ /dev/null @@ -1,384 +0,0 @@ -dbHost = $conf["db_host"]; - $this->dbName = $conf["db_database"]; - $this->dbUser = $conf["db_user"]; - $this->dbPass = $conf["db_password"]; - $this->connect(); - } - - function __destruct() { - $this->closeConn(); - } - - // error handler - function updateError($location) - { - //$this->errorNumber = mysql_errno(); - $this->errorMessage = ibase_errmsg(); - $this->errorLocation = $location; - if($this->errorNumber && $this->show_error_messages) - { - echo '
'.$this->errorLocation.'
'.$this->errorMessage; - flush(); - } - } - - function connect() - { - if($this->linkId == 0) - { - $this->linkId = ibase_connect( $this->dbHost.":".$this->dbName , $this->dbUser, $this->dbPass, 'ISO8859_1', 0, 3 ); - if(!$this->linkId) - { - $this->updateError('DB::connect()
ibase_pconnect'); - return false; - } - } - return true; - } - - function query($queryString) - { - if(!$this->connect()) { - return false; - } - - if($this->autoCommit == 1) { - //$transID = ibase_trans(); - $this->queryId = @ibase_query($this->linkId, $queryString); - //ibase_commit(); - } else { - $this->queryId = @ibase_query($this->linkId, $queryString); - } - - - $this->updateError('DB::query('.$queryString.')
ibase_query'); - if(!$this->queryId) { - return false; - } - $this->currentRow = 0; - return $this->queryId; - } - - // returns all records in an array - function queryAllRecords($queryString) - { - if(!$this->query($queryString)) - { - return false; - } - $ret = array(); - while($line = $this->nextRecord()) - { - $ret[] = $line; - } - //$this->freeResult(); - ibase_free_result($this->queryId); - return $ret; - } - - // returns one record in an array - function queryOneRecord($queryString) - { - if(!$this->query($queryString)) - { - return false; - } - $result = $this->nextRecord(); - ibase_free_result($this->queryId); - return $result; - } - - // returns the next record in an array - function nextRecord() - { - $this->record = ibase_fetch_assoc($this->queryId); - $this->updateError('DB::nextRecord()
ibase_fetch_assoc'); - if(!$this->record || !is_array($this->record)) - { - return false; - } - $this->currentRow++; - return $this->record; - } - - // returns number of rows returned by the last select query - function numRows() - { - return false; - } - - // returns mySQL insert id - function insertID() - { - return false; - } - - // Check der variablen - // deprecated, now use quote - function check($formfield) - { - return $this->quote($formfield); - } - - // Check der variablen - function quote($formfield) - { - return str_replace("'", "''", $formfield); - } - - // Check der variablen - function unquote($formfield) - { - return str_replace("''", "'", $formfield); - } - - function toLower($record) { - if(is_array($record)) { - foreach($record as $key => $val) { - $key = strtolower($key); - $out[$key] = $val; - } - } - return $out; - } - - - function insert($tablename, $form, $debug = 0) - { - if(is_array($form)){ - foreach($form as $key => $value) - { - $sql_key .= "$key, "; - $sql_value .= "'".$this->quote($value)."', "; - } - $sql_key = substr($sql_key, 0, strlen($sql_key) - 2); - $sql_value = substr($sql_value, 0, strlen($sql_value) - 2); - - $sql = "INSERT INTO $tablename (" . $sql_key . ") VALUES (" . $sql_value .")"; - - if($debug == 1) echo "SQL-Statement: ".$sql."

"; - $this->query($sql); - if($debug == 1) echo "mySQL Error Message: ".$this->errorMessage; - } - } - - function update($tablename, $form, $bedingung, $debug = 0) - { - - if(is_array($form)){ - foreach($form as $key => $value) - { - $insql .= "$key = '".$this->quote($value)."', "; - } - $insql = substr($insql, 0, strlen($insql) - 2); - $sql = "UPDATE $tablename SET " . $insql . " WHERE $bedingung"; - if($debug == 1) echo "SQL-Statement: ".$sql."

"; - $this->query($sql); - if($debug == 1) echo "mySQL Error Message: ".$this->errorMessage; - } - } - - function closeConn() { - ibase_close($this->linkId); - } - - function freeResult() { - //ibase_free_result(); - } - - function delete() { - - } - - function trans($action, $transID = null) { - //action = begin, commit oder rollback - - if($action == 'begin') { - $this->transID = ibase_trans($this->linkId); - return $this->transID; - } - - if($action == 'commit' and !empty($this->transID)) { - ibase_commit($this->linkId, $this->transID); - } - - if($action == 'rollback') { - ibase_rollback($this->linkId, $this->transID); - } - - } - - /* - $columns = array(action => add | alter | drop - name => Spaltenname - name_new => neuer Spaltenname, nur bei 'alter' belegt - type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob - typeValue => Wert z.B. bei Varchar - defaultValue => Default Wert - notNull => true | false - autoInc => true | false - option => unique | primary | index) - - - */ - - function createTable($table_name, $columns) { - $index = ""; - $sql = "CREATE TABLE $table_name ("; - foreach($columns as $col){ - $sql .= $col["name"]." ".$this->mapType($col["type"], $col["typeValue"])." "; - - if($col["defaultValue"] != "") $sql .= "DEFAULT '".$col["defaultValue"]."' "; - if($col["notNull"] == true) { - $sql .= "NOT NULL "; - } else { - $sql .= "NULL "; - } - if($col["autoInc"] == true) $sql .= "auto_increment "; - $sql.= ","; - // key Definitionen - if($col["option"] == "primary") $index .= "PRIMARY KEY (".$col["name"]."),"; - if($col["option"] == "index") $index .= "INDEX (".$col["name"]."),"; - if($col["option"] == "unique") $index .= "UNIQUE (".$col["name"]."),"; - } - $sql .= $index; - $sql = substr($sql, 0, -1); - $sql .= ")"; - - $this->query($sql); - return true; - } - - /* - $columns = array(action => add | alter | drop - name => Spaltenname - name_new => neuer Spaltenname, nur bei 'alter' belegt - type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob - typeValue => Wert z.B. bei Varchar - defaultValue => Default Wert - notNull => true | false - autoInc => true | false - option => unique | primary | index) - - - */ - function alterTable($table_name, $columns) { - return false; - } - - function dropTable($table_name) { - $this->check($table_name); - $sql = "DROP TABLE '". $table_name."'"; - return $this->query($sql); - } - - // gibt Array mit Tabellennamen zurück - function getTables($database_name) { - return false; - } - - // gibt Feldinformationen zur Tabelle zurück - /* - $columns = array(action => add | alter | drop - name => Spaltenname - name_new => neuer Spaltenname, nur bei 'alter' belegt - type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob - typeValue => Wert z.B. bei Varchar - defaultValue => Default Wert - notNull => true | false - autoInc => true | false - option => unique | primary | index) - - - */ - - function tableInfo($table_name) { - return false; - } - - function mapType($metaType, $typeValue) { - global $go_api; - $metaType = strtolower($metaType); - switch ($metaType) { - case 'int16': - return 'smallint'; - break; - case 'int32': - return 'int'; - break; - case 'int64': - return 'bigint'; - break; - case 'double': - return 'double'; - break; - case 'char': - return 'char'; - break; - case 'varchar': - if($typeValue < 1) $go_api->errorMessage("Datenbank Fehler: Für diesen Datentyp ist eine Längenangabe notwendig."); - return 'varchar('.$typeValue.')'; - break; - case 'text': - return 'text'; - break; - case 'blob': - return 'blob'; - break; - } - } - -} - -?> diff --git a/interface/web/designer/form/empty.dir b/interface/web/designer/form/empty.dir deleted file mode 100644 index 95ba9ef37..000000000 --- a/interface/web/designer/form/empty.dir +++ /dev/null @@ -1 +0,0 @@ -This empty directory is needed by ISPConfig. diff --git a/interface/web/designer/form_edit.php b/interface/web/designer/form_edit.php deleted file mode 100644 index 2127fea68..000000000 --- a/interface/web/designer/form_edit.php +++ /dev/null @@ -1,153 +0,0 @@ -error('This function is disabled in demo mode.'); - -//* Check permissions for module -$app->auth->check_module_permissions('designer'); - -// Lade Template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/form_edit.htm'); - -// Importing variables -$module_name = $_REQUEST["module_name"]; -$form_name = $_REQUEST["form_name"]; - -// Checking imported variables -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $module_name)) die("module_name contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $form_name)) die("form_name contains invalid chars."); - -$id = $form_name; - -if(count($_POST) > 1) { - // Bestimme aktion - if($id != '') { - $action = 'UPDATE'; - } else { - $action = 'INSERT'; - } - - - if($error == '') { - - $filename = "../".$module_name."/form/".$form_name.".tform.php"; - $form_new = $_POST["form"]; - - if(@is_file($filename)) { - include_once $filename; - $tabs = $form["tabs"]; - unset($form["tabs"]); - $form_new["tabs"] = $tabs; - } - - $file_content = ""; - - die($file_content); - - // writing module.conf - if (!$handle = fopen($filename, 'w')) { - print "Cannot open file ($filename)"; - exit; - } - - if (!fwrite($handle, $file_content)) { - print "Cannot write to file ($filename)"; - exit; - } - - fclose($handle); - - // zu Liste springen - header("Location: form_list.php"); - exit; - - } else { - $app->tpl->setVar("error", "Fehler:
".$error); - $app->tpl->setVar($_POST); - } -} - -if($id != '') { - // Datensatz besteht bereits - // bestehenden Datensatz anzeigen - if($error == '') { - // es liegt ein Fehler vor - include_once "../".$module_name."/form/".$form_name.".tform.php"; - //$tabs = $form["tabs"]; - unset($form["tabs"]); - $record = $form; - $record["form_name"] = $form_name; - $record["module_name"] = $module_name; - $record["auth_preset_userid"] = $form["auth_preset"]["userid"]; - $record["auth_preset_groupid"] = $form["auth_preset"]["groupid"]; - $record["auth_preset_perm_user"] = $form["auth_preset"]["perm_user"]; - $record["auth_preset_perm_group"] = $form["auth_preset"]["perm_group"]; - $record["auth_preset_perm_other"] = $form["auth_preset"]["perm_other"]; - } else { - // ein Fehler - $record = $_POST; - //$navi = $_POST["nav"]; - unset($_POST["tabs"]); - } - $record["readonly"] = 'style="background-color: #EEEEEE;" readonly'; -} else { - // neuer datensatz - if($error == '') { - // es liegt kein Fehler vor - // Pewsets - $record["template"] = "module.tpl.htm"; - } else { - // ein Fehler - $record = $_POST; - unset($_POST["tabs"]); - - } - $record["readonly"] = ''; -} - -$record["id"] = $form_name; - -$app->tpl->setVar($record); - -include_once "lib/lang/".$_SESSION["s"]["language"]."_form_edit.lng"; -$app->tpl->setVar($wb); - -// Defaultwerte setzen -$app->tpl_defaults(); - -// Template parsen -$app->tpl->pparse(); - -?> diff --git a/interface/web/designer/form_list.php b/interface/web/designer/form_list.php deleted file mode 100644 index 009327597..000000000 --- a/interface/web/designer/form_list.php +++ /dev/null @@ -1,89 +0,0 @@ -auth->check_module_permissions('designer'); - -$app->uses('tpl'); - -$app->tpl->newTemplate('form.tpl.htm'); -$app->tpl->setInclude('content_tpl', 'templates/form_list.htm'); - -function getinfo($file, $form_file, $bgcolor) { - $module_name = $file; - include ISPC_WEB_PATH."/$file/form/$form_file"; - return array( 'name' => $form['name'], - 'title' => $form['title'], - 'description' => $form['description'], - 'module_name' => $module_name, - 'bgcolor' => $bgcolor - ); -} - -// lese Module aus -$bgcolor = '#FFFFFF'; -$modules_list = array(); -$handle = @opendir(ISPC_WEB_PATH); -while ($file = @readdir($handle)) { - if ($file != '.' && $file != '..') { - if(@is_dir(ISPC_WEB_PATH."/$file")) { - if(is_file(ISPC_WEB_PATH.'/'.$file.'/lib/module.conf.php') and $file != 'login') { - if(@is_dir(ISPC_WEB_PATH."/$file/form")) { - $handle2 = opendir(ISPC_WEB_PATH."/$file/form"); - while ($form_file = @readdir($handle2)) { - if (substr($form_file, 0, 1) != ".") { - //echo ISPC_ROOT_PATH."/web/".$file."/form/$form_file
"; - //include_once(ISPC_ROOT_PATH."/web/".$file."/form/$form_file"); - // Farbwechsel - $bgcolor = ($bgcolor == '#FFFFFF') ? '#EEEEEE' : '#FFFFFF'; - $modules_list[] = getinfo($file, $form_file, $bgcolor); - - } - } - } - } - } - } -} - -$app->tpl->setLoop('records', $modules_list); - -//* load language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_form_list.lng'; -include $lng_file; -$app->tpl->setVar($wb); - -$app->tpl_defaults(); -$app->tpl->pparse(); - - -?> diff --git a/interface/web/designer/form_show.php b/interface/web/designer/form_show.php deleted file mode 100644 index 74e609bf1..000000000 --- a/interface/web/designer/form_show.php +++ /dev/null @@ -1,119 +0,0 @@ -auth->check_module_permissions('designer'); - -if($_SESSION["s"]["user"]["typ"] != "admin") die("Admin permissions required."); - -$app->uses('tpl'); - -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/form_show.htm'); - - -// TODO: Check ID for malicius chars -$module_name = $_REQUEST["module_name"]; -$form_name = $_REQUEST["form_name"]; - -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $module_name)) die("module_name contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $form_name)) die("form_name contains invalid chars."); - -include_once "../".$module_name."/form/".$form_name.".tform.php"; -$tabs = $form["tabs"]; -unset($form["tabs"]); -$record = $form; -$record["form_name"] = $form_name; -$record["module_name"] = $module_name; - -// loading language file -$lng_file = "lib/lang/".$_SESSION["s"]["language"]."_form_show.lng"; -include $lng_file; -$app->tpl->setVar($wb); - -// baue Tabs navi -$content = ""; -$n1 = 0; -$n2 = 0; -if(is_array($tabs)) { - foreach($tabs as $tab_id => $tab) { - $content .= " - - - - - - "; - //$content .= "\r\n"; - foreach($tab["fields"] as $field_id => $field) { - //$content .= "\r\n"; - //$content .= "\r\n"; - //$content .= "\r\n"; - $content .= " - - - "; - $n2++; - } - $content .= " -
$tab[title] - - - - - -
Bereich:
Titel:
Ziel:       
Link:       
$field_id - - - - -
 
- - "; - $n1++; - } -} - -$record["nav"] = $content; - - -$app->tpl->setVar($record); - - -$app->tpl->setLoop('records', $modules_list); - -$app->tpl_defaults(); -$app->tpl->pparse(); - - - -?> diff --git a/interface/web/designer/index.php b/interface/web/designer/index.php deleted file mode 100644 index 8b1378917..000000000 --- a/interface/web/designer/index.php +++ /dev/null @@ -1 +0,0 @@ - diff --git a/interface/web/designer/lib/admin.conf.php b/interface/web/designer/lib/admin.conf.php deleted file mode 100644 index 6eff33c4e..000000000 --- a/interface/web/designer/lib/admin.conf.php +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ar.lng b/interface/web/designer/lib/lang/ar.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/ar.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ar_form_edit.lng b/interface/web/designer/lib/lang/ar_form_edit.lng deleted file mode 100644 index 54fe173ec..000000000 --- a/interface/web/designer/lib/lang/ar_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ar_form_list.lng b/interface/web/designer/lib/lang/ar_form_list.lng deleted file mode 100644 index 47432257f..000000000 --- a/interface/web/designer/lib/lang/ar_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ar_form_show.lng b/interface/web/designer/lib/lang/ar_form_show.lng deleted file mode 100644 index 37017fa4a..000000000 --- a/interface/web/designer/lib/lang/ar_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ar_module_edit.lng b/interface/web/designer/lib/lang/ar_module_edit.lng deleted file mode 100644 index 592ccd76b..000000000 --- a/interface/web/designer/lib/lang/ar_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Description -

-Modulename: Name of the module directory. Only numbers, chars and underscore allowed.
-Moduletitle: Will be shown in the (upper) main navigation.
-Template file: Template file of the module. Currently available: module.tpl.htm and module_tree.tpl.htm. Default is module.tpl.htm.
-NaviFrame: If module_tree.tpl.htm selected as template file, enter here the path to the script file for the left frame.
-Default page: These page will be shown when the module is opened.
-Tab width: Width of the Tabs in the main navigation. The field is empty by default. You can enter values absolute in pixel (e.g 20) or relative (e.g 20%).
-Hint: All paths are relative to the directory web. -'; -?> diff --git a/interface/web/designer/lib/lang/ar_module_list.lng b/interface/web/designer/lib/lang/ar_module_list.lng deleted file mode 100644 index bc9ebed58..000000000 --- a/interface/web/designer/lib/lang/ar_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ar_module_nav_edit.lng b/interface/web/designer/lib/lang/ar_module_nav_edit.lng deleted file mode 100644 index fa5f15aa9..000000000 --- a/interface/web/designer/lib/lang/ar_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ar_module_nav_item_edit.lng b/interface/web/designer/lib/lang/ar_module_nav_item_edit.lng deleted file mode 100644 index 23f7d1592..000000000 --- a/interface/web/designer/lib/lang/ar_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ar_module_show.lng b/interface/web/designer/lib/lang/ar_module_show.lng deleted file mode 100644 index 2cf9b07a8..000000000 --- a/interface/web/designer/lib/lang/ar_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/bg.lng b/interface/web/designer/lib/lang/bg.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/bg.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/bg_form_edit.lng b/interface/web/designer/lib/lang/bg_form_edit.lng deleted file mode 100644 index 3c13194c4..000000000 --- a/interface/web/designer/lib/lang/bg_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/bg_form_list.lng b/interface/web/designer/lib/lang/bg_form_list.lng deleted file mode 100644 index 4a053a3c5..000000000 --- a/interface/web/designer/lib/lang/bg_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/bg_form_show.lng b/interface/web/designer/lib/lang/bg_form_show.lng deleted file mode 100644 index 78cf0edda..000000000 --- a/interface/web/designer/lib/lang/bg_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/bg_module_edit.lng b/interface/web/designer/lib/lang/bg_module_edit.lng deleted file mode 100644 index bbb53a32f..000000000 --- a/interface/web/designer/lib/lang/bg_module_edit.lng +++ /dev/null @@ -1,12 +0,0 @@ -Описание

Имена модула: Име на директорията за модули. разрешени са числа и букви малки.
Име на модул: Will be shown in the (upper) main navigation.
Template file: Template file of the module. Currently'; -?> diff --git a/interface/web/designer/lib/lang/bg_module_list.lng b/interface/web/designer/lib/lang/bg_module_list.lng deleted file mode 100644 index 31209a075..000000000 --- a/interface/web/designer/lib/lang/bg_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/bg_module_nav_edit.lng b/interface/web/designer/lib/lang/bg_module_nav_edit.lng deleted file mode 100644 index 13d9675b5..000000000 --- a/interface/web/designer/lib/lang/bg_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/bg_module_nav_item_edit.lng b/interface/web/designer/lib/lang/bg_module_nav_item_edit.lng deleted file mode 100644 index 1b2f22f2a..000000000 --- a/interface/web/designer/lib/lang/bg_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/bg_module_show.lng b/interface/web/designer/lib/lang/bg_module_show.lng deleted file mode 100644 index 3cbe96358..000000000 --- a/interface/web/designer/lib/lang/bg_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/br.lng b/interface/web/designer/lib/lang/br.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/br.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/br_form_edit.lng b/interface/web/designer/lib/lang/br_form_edit.lng deleted file mode 100644 index 7d7534a4e..000000000 --- a/interface/web/designer/lib/lang/br_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/br_form_list.lng b/interface/web/designer/lib/lang/br_form_list.lng deleted file mode 100644 index b16ce554b..000000000 --- a/interface/web/designer/lib/lang/br_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/br_form_show.lng b/interface/web/designer/lib/lang/br_form_show.lng deleted file mode 100644 index 5b68a3165..000000000 --- a/interface/web/designer/lib/lang/br_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/br_module_edit.lng b/interface/web/designer/lib/lang/br_module_edit.lng deleted file mode 100644 index 34471acd2..000000000 --- a/interface/web/designer/lib/lang/br_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Descrição -

-Nome do Módulo: Nome do diretório do módulo. Somente números, letras e underscores são permitidos.
-Título do Módulo: Será exibido em caixa alta no menu de navegação.
-Arquivo de Gabarito: Arquivo de Gabarito do Módulo Disponível: modulo.tpl.htm e modulo_tree.tpl.htm. O padrão é modulo.tpl.htm.
-Frame de Navegação: Se modulo_tree.tpl.htm foi selecionado como arquivo de gabarito, insira aqui o caminho do script para o frame a esquerda.
-Página Padrão: Esta página será exibida quando o módulo for aberto.
-Tamanho da Aba: Tamanho das abas na navegação principal. Este campo fica em branco por padrão. Você pode informar valores absolutos em pixels (ex.: 20) ou valores relativos (ex.: 20%).
-Dica: Todos os caminhos são relativos ao diretório web. -'; -?> diff --git a/interface/web/designer/lib/lang/br_module_list.lng b/interface/web/designer/lib/lang/br_module_list.lng deleted file mode 100644 index 822263a4a..000000000 --- a/interface/web/designer/lib/lang/br_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/br_module_nav_edit.lng b/interface/web/designer/lib/lang/br_module_nav_edit.lng deleted file mode 100644 index c5e3266a7..000000000 --- a/interface/web/designer/lib/lang/br_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/br_module_nav_item_edit.lng b/interface/web/designer/lib/lang/br_module_nav_item_edit.lng deleted file mode 100644 index 5eafa775a..000000000 --- a/interface/web/designer/lib/lang/br_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/br_module_show.lng b/interface/web/designer/lib/lang/br_module_show.lng deleted file mode 100644 index 1fb180071..000000000 --- a/interface/web/designer/lib/lang/br_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/cz.lng b/interface/web/designer/lib/lang/cz.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/cz.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/cz_form_edit.lng b/interface/web/designer/lib/lang/cz_form_edit.lng deleted file mode 100644 index 75bf5a560..000000000 --- a/interface/web/designer/lib/lang/cz_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/cz_form_list.lng b/interface/web/designer/lib/lang/cz_form_list.lng deleted file mode 100644 index 1e677f241..000000000 --- a/interface/web/designer/lib/lang/cz_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/cz_form_show.lng b/interface/web/designer/lib/lang/cz_form_show.lng deleted file mode 100644 index 6c3abe444..000000000 --- a/interface/web/designer/lib/lang/cz_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/cz_module_edit.lng b/interface/web/designer/lib/lang/cz_module_edit.lng deleted file mode 100644 index 972bc2ccf..000000000 --- a/interface/web/designer/lib/lang/cz_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Description -

-Modulename: Name of the module directory. Only numbers, chars and underscore allowed.
-Moduletitle: Will be shown in the (upper) main navigation.
-Template file: Template file of the module. Currently available: module.tpl.htm and module_tree.tpl.htm. Default is module.tpl.htm.
-NaviFrame: If module_tree.tpl.htm selected as template file, enter here the path to the script file for the left frame.
-Default page: These page will be shown when the module is opened.
-Tab width: Width of the Tabs in the main navigation. The field is empty by default. You can enter values absolute in pixel (e.g 20) or relative (e.g 20%).
-Hint: All paths are relative to the directory \\"web\\". -'; -?> diff --git a/interface/web/designer/lib/lang/cz_module_list.lng b/interface/web/designer/lib/lang/cz_module_list.lng deleted file mode 100644 index b568f69d6..000000000 --- a/interface/web/designer/lib/lang/cz_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/cz_module_nav_edit.lng b/interface/web/designer/lib/lang/cz_module_nav_edit.lng deleted file mode 100644 index 01f5df68f..000000000 --- a/interface/web/designer/lib/lang/cz_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/cz_module_nav_item_edit.lng b/interface/web/designer/lib/lang/cz_module_nav_item_edit.lng deleted file mode 100644 index 0fdc8c4cc..000000000 --- a/interface/web/designer/lib/lang/cz_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/cz_module_show.lng b/interface/web/designer/lib/lang/cz_module_show.lng deleted file mode 100644 index ce5df415d..000000000 --- a/interface/web/designer/lib/lang/cz_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/de.lng b/interface/web/designer/lib/lang/de.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/de.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/de_form_edit.lng b/interface/web/designer/lib/lang/de_form_edit.lng deleted file mode 100644 index 74bf458d9..000000000 --- a/interface/web/designer/lib/lang/de_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/de_form_list.lng b/interface/web/designer/lib/lang/de_form_list.lng deleted file mode 100644 index 998a64f70..000000000 --- a/interface/web/designer/lib/lang/de_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/de_form_show.lng b/interface/web/designer/lib/lang/de_form_show.lng deleted file mode 100644 index b19fd3445..000000000 --- a/interface/web/designer/lib/lang/de_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/de_module_edit.lng b/interface/web/designer/lib/lang/de_module_edit.lng deleted file mode 100644 index 6eacd64b1..000000000 --- a/interface/web/designer/lib/lang/de_module_edit.lng +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/de_module_list.lng b/interface/web/designer/lib/lang/de_module_list.lng deleted file mode 100644 index 604063020..000000000 --- a/interface/web/designer/lib/lang/de_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/de_module_nav_edit.lng b/interface/web/designer/lib/lang/de_module_nav_edit.lng deleted file mode 100644 index d5142f03c..000000000 --- a/interface/web/designer/lib/lang/de_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/de_module_nav_item_edit.lng b/interface/web/designer/lib/lang/de_module_nav_item_edit.lng deleted file mode 100644 index 8c0c33c1a..000000000 --- a/interface/web/designer/lib/lang/de_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/de_module_show.lng b/interface/web/designer/lib/lang/de_module_show.lng deleted file mode 100644 index f4b2ad11f..000000000 --- a/interface/web/designer/lib/lang/de_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/el.lng b/interface/web/designer/lib/lang/el.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/el.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/el_form_edit.lng b/interface/web/designer/lib/lang/el_form_edit.lng deleted file mode 100644 index 04ebc02db..000000000 --- a/interface/web/designer/lib/lang/el_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/el_form_list.lng b/interface/web/designer/lib/lang/el_form_list.lng deleted file mode 100644 index 4cf043aef..000000000 --- a/interface/web/designer/lib/lang/el_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/el_form_show.lng b/interface/web/designer/lib/lang/el_form_show.lng deleted file mode 100644 index cf51060a2..000000000 --- a/interface/web/designer/lib/lang/el_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/el_module_edit.lng b/interface/web/designer/lib/lang/el_module_edit.lng deleted file mode 100644 index 733e2aec8..000000000 --- a/interface/web/designer/lib/lang/el_module_edit.lng +++ /dev/null @@ -1,12 +0,0 @@ -Περιγραφή

Όνομα αρθρώματος: Όνομα του φακέλου του αρθρώματος. Επιτρέπονται μόνο αριθμοί, χαρακτήρες και η κάτω παύλα.
Τίτλος Αρθώματος: Θα εμφανιστεί στο βασικό μενού (επάνω).
Αρχείο προτύπου: Το αρχείο προτύπου του αρθρώματος. Προς το παρών διαθέσιμα: module.tpl.htm και module_tree.tpl.htm. Το προεπιλεγμένο είναι το module.tpl.htm.
NaviFrame: Αν το module_tree.tpl.htm επιλέχθηκε ώα αρχείο προτύπου, εισάγετε εδώ την διαδρομή για το script που αφορά το αριστερό frame.
Προεπιλεγμένη Σελίδα: Αυτή σελίδα θα εμφανίζεται όταν ανοίξει το άρθρωμα.
Πλάτος Καρτέλας:Το πλάτος της καρτέλας στο βασικό μενού. Το πεδίο είναι άδειο εξ ορισμού. Μπορείτε να εισάγετε απόλυτες τιμές σε pixel (π.χ. 20) ή σχετικές (π.χ. 20%).
Βοήθεια: Όλες οι διαδρομές είναι σχετικές ως προς τον φάκελο '; -?> diff --git a/interface/web/designer/lib/lang/el_module_list.lng b/interface/web/designer/lib/lang/el_module_list.lng deleted file mode 100644 index 1edbed0f7..000000000 --- a/interface/web/designer/lib/lang/el_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/el_module_nav_edit.lng b/interface/web/designer/lib/lang/el_module_nav_edit.lng deleted file mode 100644 index 02104add2..000000000 --- a/interface/web/designer/lib/lang/el_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/el_module_nav_item_edit.lng b/interface/web/designer/lib/lang/el_module_nav_item_edit.lng deleted file mode 100644 index 06d44b93d..000000000 --- a/interface/web/designer/lib/lang/el_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/el_module_show.lng b/interface/web/designer/lib/lang/el_module_show.lng deleted file mode 100644 index 12895ccc6..000000000 --- a/interface/web/designer/lib/lang/el_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/en.lng b/interface/web/designer/lib/lang/en.lng deleted file mode 100644 index 15c5adc7f..000000000 --- a/interface/web/designer/lib/lang/en.lng +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/designer/lib/lang/en_form_edit.lng b/interface/web/designer/lib/lang/en_form_edit.lng deleted file mode 100644 index f55e0f4ca..000000000 --- a/interface/web/designer/lib/lang/en_form_edit.lng +++ /dev/null @@ -1,26 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/designer/lib/lang/en_form_list.lng b/interface/web/designer/lib/lang/en_form_list.lng deleted file mode 100644 index 21a76877d..000000000 --- a/interface/web/designer/lib/lang/en_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/designer/lib/lang/en_form_show.lng b/interface/web/designer/lib/lang/en_form_show.lng deleted file mode 100644 index d2be3c6ae..000000000 --- a/interface/web/designer/lib/lang/en_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/designer/lib/lang/en_module_edit.lng b/interface/web/designer/lib/lang/en_module_edit.lng deleted file mode 100644 index 285a363df..000000000 --- a/interface/web/designer/lib/lang/en_module_edit.lng +++ /dev/null @@ -1,23 +0,0 @@ -Description -

-Modulename: Name of the module directory. Only numbers, chars and underscore allowed.
-Moduletitle: Will be shown in the (upper) main navigation.
-Template file: Template file of the module. Currently available: module.tpl.htm and module_tree.tpl.htm. Default is module.tpl.htm.
-NaviFrame: If module_tree.tpl.htm selected as template file, enter here the path to the script file for the left frame.
-Default page: These page will be shown when the module is opened.
-Tab width: Width of the Tabs in the main navigation. The field is empty by default. You can enter values absolute in pixel (e.g 20) or relative (e.g 20%).
-Hint: All paths are relative to the directory "web". -'; - -?> \ No newline at end of file diff --git a/interface/web/designer/lib/lang/en_module_list.lng b/interface/web/designer/lib/lang/en_module_list.lng deleted file mode 100644 index 45260fd9a..000000000 --- a/interface/web/designer/lib/lang/en_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/designer/lib/lang/en_module_nav_edit.lng b/interface/web/designer/lib/lang/en_module_nav_edit.lng deleted file mode 100644 index 3600238f7..000000000 --- a/interface/web/designer/lib/lang/en_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/designer/lib/lang/en_module_nav_item_edit.lng b/interface/web/designer/lib/lang/en_module_nav_item_edit.lng deleted file mode 100644 index 56eee32de..000000000 --- a/interface/web/designer/lib/lang/en_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/designer/lib/lang/en_module_show.lng b/interface/web/designer/lib/lang/en_module_show.lng deleted file mode 100644 index 41c9893ee..000000000 --- a/interface/web/designer/lib/lang/en_module_show.lng +++ /dev/null @@ -1,17 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/designer/lib/lang/es.lng b/interface/web/designer/lib/lang/es.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/es.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/es_form_edit.lng b/interface/web/designer/lib/lang/es_form_edit.lng deleted file mode 100644 index c5312559b..000000000 --- a/interface/web/designer/lib/lang/es_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/es_form_list.lng b/interface/web/designer/lib/lang/es_form_list.lng deleted file mode 100644 index 3334d0b29..000000000 --- a/interface/web/designer/lib/lang/es_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/es_form_show.lng b/interface/web/designer/lib/lang/es_form_show.lng deleted file mode 100644 index 4cac14529..000000000 --- a/interface/web/designer/lib/lang/es_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/es_module_edit.lng b/interface/web/designer/lib/lang/es_module_edit.lng deleted file mode 100644 index c126365a5..000000000 --- a/interface/web/designer/lib/lang/es_module_edit.lng +++ /dev/null @@ -1,12 +0,0 @@ -Descripción

Nombre del módulo: Nombre del directorio del módulo. Sólo se permiten números, carácteres y subrayados.
Título del módulo: Se mostrará en la barra de navegación principal.
Fichero de plantilla: Fichero de la plantilla del módulo. Disponibles actualmente: module.tpl.htm y module_tree.tpl.htm. Por defecto: module.tpl.htm.
Marco de navegación: Si el fichero de plantilla module_tree.tpl.htm está seleccionado, introduzca aquí la ruta al fichero del script del marco de la izquierda.
Página por defecto: Esta página se mostrará cuando el módulo se abra.
Ancho de pestaña: Ancho de las pestañas en la barra de navegación. El campo está vacío por defecto. Puede introducir valores absolutos en píxeles (p.ej. 20) o relativos (p.ej. 20%).
Pista: Todas las rutas son relativas al directorio.'; -?> diff --git a/interface/web/designer/lib/lang/es_module_list.lng b/interface/web/designer/lib/lang/es_module_list.lng deleted file mode 100644 index 2805a07bc..000000000 --- a/interface/web/designer/lib/lang/es_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/es_module_nav_edit.lng b/interface/web/designer/lib/lang/es_module_nav_edit.lng deleted file mode 100644 index 22688b6e1..000000000 --- a/interface/web/designer/lib/lang/es_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/es_module_nav_item_edit.lng b/interface/web/designer/lib/lang/es_module_nav_item_edit.lng deleted file mode 100644 index ec39e5f89..000000000 --- a/interface/web/designer/lib/lang/es_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/es_module_show.lng b/interface/web/designer/lib/lang/es_module_show.lng deleted file mode 100644 index 1f1199de5..000000000 --- a/interface/web/designer/lib/lang/es_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fi.lng b/interface/web/designer/lib/lang/fi.lng deleted file mode 100755 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/fi.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fi_form_edit.lng b/interface/web/designer/lib/lang/fi_form_edit.lng deleted file mode 100755 index c9a13038a..000000000 --- a/interface/web/designer/lib/lang/fi_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fi_form_list.lng b/interface/web/designer/lib/lang/fi_form_list.lng deleted file mode 100755 index 9052c8f0c..000000000 --- a/interface/web/designer/lib/lang/fi_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fi_form_show.lng b/interface/web/designer/lib/lang/fi_form_show.lng deleted file mode 100755 index 247a95be5..000000000 --- a/interface/web/designer/lib/lang/fi_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fi_module_edit.lng b/interface/web/designer/lib/lang/fi_module_edit.lng deleted file mode 100755 index 8bb4a5c09..000000000 --- a/interface/web/designer/lib/lang/fi_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Kuvaus -

-Modulename: Ohjelmaosion kansion nimi. Vain numerot,kirjaimet ja alaviiva on sallittu.
-Moduletitle: Tulee näkymään ylemmässä päävalikossa.
-Template file: Ohjelmaosion mallitiedosto. Käytettävissä tällä hetkellä: module.tpl.htm ja module_tree.tpl.htm. Oletus on module.tpl.htm.
-NaviFrame: Jos module_tree.tpl.htm valittiin mallitiedostoksi, kirjoita tähän vasemman kehyksen skriptitiedoston polku.
-Default page: Tämä sivu näytetetään kun ohjelmaosio avataan.
-Tab width: Päälikon painikkeiden leveys. Kenttä on oletuksenä tyhjä. Voit antaa arvon pikseleinää tai prosentteina. (esim. 20 tai 20%).
-Vihje: Kaikki polut ovat suhteellisia web-kansioon, eivät absoluuttisia. -'; -?> diff --git a/interface/web/designer/lib/lang/fi_module_list.lng b/interface/web/designer/lib/lang/fi_module_list.lng deleted file mode 100755 index f07c9a377..000000000 --- a/interface/web/designer/lib/lang/fi_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fi_module_nav_edit.lng b/interface/web/designer/lib/lang/fi_module_nav_edit.lng deleted file mode 100755 index b7c03eafb..000000000 --- a/interface/web/designer/lib/lang/fi_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fi_module_nav_item_edit.lng b/interface/web/designer/lib/lang/fi_module_nav_item_edit.lng deleted file mode 100755 index 5f32d5848..000000000 --- a/interface/web/designer/lib/lang/fi_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fi_module_show.lng b/interface/web/designer/lib/lang/fi_module_show.lng deleted file mode 100755 index 066d92f58..000000000 --- a/interface/web/designer/lib/lang/fi_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fr.lng b/interface/web/designer/lib/lang/fr.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/fr.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fr_form_edit.lng b/interface/web/designer/lib/lang/fr_form_edit.lng deleted file mode 100644 index eb3f5a35c..000000000 --- a/interface/web/designer/lib/lang/fr_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fr_form_list.lng b/interface/web/designer/lib/lang/fr_form_list.lng deleted file mode 100644 index 316211598..000000000 --- a/interface/web/designer/lib/lang/fr_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fr_form_show.lng b/interface/web/designer/lib/lang/fr_form_show.lng deleted file mode 100644 index c2cd94be7..000000000 --- a/interface/web/designer/lib/lang/fr_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fr_module_edit.lng b/interface/web/designer/lib/lang/fr_module_edit.lng deleted file mode 100644 index 282c73cdc..000000000 --- a/interface/web/designer/lib/lang/fr_module_edit.lng +++ /dev/null @@ -1,12 +0,0 @@ -Description

Nom du Module: Nom du répertoire du module. Seuls les nombres, lettres et underscores sont autorisés.
Titre du module: Sera affiché dans le menu de navigation (supérieur).
Fichier gabarit: Fichier'; -?> diff --git a/interface/web/designer/lib/lang/fr_module_list.lng b/interface/web/designer/lib/lang/fr_module_list.lng deleted file mode 100644 index d493fdcb3..000000000 --- a/interface/web/designer/lib/lang/fr_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fr_module_nav_edit.lng b/interface/web/designer/lib/lang/fr_module_nav_edit.lng deleted file mode 100644 index 53c5e4128..000000000 --- a/interface/web/designer/lib/lang/fr_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fr_module_nav_item_edit.lng b/interface/web/designer/lib/lang/fr_module_nav_item_edit.lng deleted file mode 100644 index 21852e292..000000000 --- a/interface/web/designer/lib/lang/fr_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/fr_module_show.lng b/interface/web/designer/lib/lang/fr_module_show.lng deleted file mode 100644 index 8c14adb3a..000000000 --- a/interface/web/designer/lib/lang/fr_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hr.lng b/interface/web/designer/lib/lang/hr.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/hr.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hr_form_edit.lng b/interface/web/designer/lib/lang/hr_form_edit.lng deleted file mode 100644 index 6396ece15..000000000 --- a/interface/web/designer/lib/lang/hr_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hr_form_list.lng b/interface/web/designer/lib/lang/hr_form_list.lng deleted file mode 100644 index 9efdf782c..000000000 --- a/interface/web/designer/lib/lang/hr_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hr_form_show.lng b/interface/web/designer/lib/lang/hr_form_show.lng deleted file mode 100644 index e83272a30..000000000 --- a/interface/web/designer/lib/lang/hr_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hr_module_edit.lng b/interface/web/designer/lib/lang/hr_module_edit.lng deleted file mode 100644 index b4aa48af5..000000000 --- a/interface/web/designer/lib/lang/hr_module_edit.lng +++ /dev/null @@ -1,12 +0,0 @@ -Opis

Naziv modula: Naziv direktorija sa modulima. Dozvoljeni samo brojevi, znakovi i podcrta.
Moduletitle: Will be shown in the (upper) main navigation.
Template file: Template file of the module. Currently available: module.tpl.htm and module_tree.tpl.htm. Default is module.tpl.htm.
NaviFrame: If module_tree.tpl.htm selected as template file, enter here the path to the script file for the left frame.
Default page: These page will be shown when the module is opened.
Tab width: Width of the Tabs in the main navigation. The field is empty by default. You can enter values absolute in pixel (e.g 20) or relative (e.g 20%).
Hint: All paths are relative to the directory web.'; -?> diff --git a/interface/web/designer/lib/lang/hr_module_list.lng b/interface/web/designer/lib/lang/hr_module_list.lng deleted file mode 100644 index 3528a6de3..000000000 --- a/interface/web/designer/lib/lang/hr_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hr_module_nav_edit.lng b/interface/web/designer/lib/lang/hr_module_nav_edit.lng deleted file mode 100644 index 42c8e14a8..000000000 --- a/interface/web/designer/lib/lang/hr_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hr_module_nav_item_edit.lng b/interface/web/designer/lib/lang/hr_module_nav_item_edit.lng deleted file mode 100644 index ee9208fcf..000000000 --- a/interface/web/designer/lib/lang/hr_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hr_module_show.lng b/interface/web/designer/lib/lang/hr_module_show.lng deleted file mode 100644 index 98c6144f9..000000000 --- a/interface/web/designer/lib/lang/hr_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hu.lng b/interface/web/designer/lib/lang/hu.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/hu.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hu_form_edit.lng b/interface/web/designer/lib/lang/hu_form_edit.lng deleted file mode 100644 index d7b419cd3..000000000 --- a/interface/web/designer/lib/lang/hu_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hu_form_list.lng b/interface/web/designer/lib/lang/hu_form_list.lng deleted file mode 100644 index 47432257f..000000000 --- a/interface/web/designer/lib/lang/hu_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hu_form_show.lng b/interface/web/designer/lib/lang/hu_form_show.lng deleted file mode 100644 index 12be609a1..000000000 --- a/interface/web/designer/lib/lang/hu_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hu_module_edit.lng b/interface/web/designer/lib/lang/hu_module_edit.lng deleted file mode 100644 index 592ccd76b..000000000 --- a/interface/web/designer/lib/lang/hu_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Description -

-Modulename: Name of the module directory. Only numbers, chars and underscore allowed.
-Moduletitle: Will be shown in the (upper) main navigation.
-Template file: Template file of the module. Currently available: module.tpl.htm and module_tree.tpl.htm. Default is module.tpl.htm.
-NaviFrame: If module_tree.tpl.htm selected as template file, enter here the path to the script file for the left frame.
-Default page: These page will be shown when the module is opened.
-Tab width: Width of the Tabs in the main navigation. The field is empty by default. You can enter values absolute in pixel (e.g 20) or relative (e.g 20%).
-Hint: All paths are relative to the directory web. -'; -?> diff --git a/interface/web/designer/lib/lang/hu_module_list.lng b/interface/web/designer/lib/lang/hu_module_list.lng deleted file mode 100644 index bc9ebed58..000000000 --- a/interface/web/designer/lib/lang/hu_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hu_module_nav_edit.lng b/interface/web/designer/lib/lang/hu_module_nav_edit.lng deleted file mode 100644 index fa5f15aa9..000000000 --- a/interface/web/designer/lib/lang/hu_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hu_module_nav_item_edit.lng b/interface/web/designer/lib/lang/hu_module_nav_item_edit.lng deleted file mode 100644 index 23f7d1592..000000000 --- a/interface/web/designer/lib/lang/hu_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/hu_module_show.lng b/interface/web/designer/lib/lang/hu_module_show.lng deleted file mode 100644 index 357fca149..000000000 --- a/interface/web/designer/lib/lang/hu_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/id.lng b/interface/web/designer/lib/lang/id.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/id.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/id_form_edit.lng b/interface/web/designer/lib/lang/id_form_edit.lng deleted file mode 100644 index 957ccbc06..000000000 --- a/interface/web/designer/lib/lang/id_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/id_form_list.lng b/interface/web/designer/lib/lang/id_form_list.lng deleted file mode 100644 index ea20e633b..000000000 --- a/interface/web/designer/lib/lang/id_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/id_form_show.lng b/interface/web/designer/lib/lang/id_form_show.lng deleted file mode 100644 index 0e05e51ed..000000000 --- a/interface/web/designer/lib/lang/id_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/id_module_edit.lng b/interface/web/designer/lib/lang/id_module_edit.lng deleted file mode 100644 index 31b069237..000000000 --- a/interface/web/designer/lib/lang/id_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Keterangan -

-Nama Modul: Nama direktori modul. Hanya angka, karakter dan garis bawah yang diizinkan.
-Judul Modul: Akan terlihat di navigasi utama (bagian atas).
-Berkas Template: Berkas Template modul. Yang tersedia saat ini: module.tpl.htm dan module_tree.tpl.htm. Defaultnya adalah module.tpl.htm.
-Frame Navigasi: Jika memilih module_tree.tpl.htm sebagai berkas template, masukkan path ke berkas skrip untuk frame sebelah kiri.
-Halaman Default: Halaman ini akan muncul ketika modul dibuka.
-Lebar Tab: Lebar tab di navigasi utama. Kolom ini defaultnya kosong. Anda dapat memasukkan nilai pixel absolut (mis. 20) atau relatif (mis. 20%).
-Petunjuk: Semua path adalah relatif terhadap direktori web. -'; -?> diff --git a/interface/web/designer/lib/lang/id_module_list.lng b/interface/web/designer/lib/lang/id_module_list.lng deleted file mode 100644 index 40114b24d..000000000 --- a/interface/web/designer/lib/lang/id_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/id_module_nav_edit.lng b/interface/web/designer/lib/lang/id_module_nav_edit.lng deleted file mode 100644 index 524784aa5..000000000 --- a/interface/web/designer/lib/lang/id_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/id_module_nav_item_edit.lng b/interface/web/designer/lib/lang/id_module_nav_item_edit.lng deleted file mode 100644 index bb3d780ff..000000000 --- a/interface/web/designer/lib/lang/id_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/id_module_show.lng b/interface/web/designer/lib/lang/id_module_show.lng deleted file mode 100644 index 38ef8a5ce..000000000 --- a/interface/web/designer/lib/lang/id_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/it.lng b/interface/web/designer/lib/lang/it.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/it.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/it_form_edit.lng b/interface/web/designer/lib/lang/it_form_edit.lng deleted file mode 100644 index 1fc63b884..000000000 --- a/interface/web/designer/lib/lang/it_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/it_form_list.lng b/interface/web/designer/lib/lang/it_form_list.lng deleted file mode 100644 index 015cc53ff..000000000 --- a/interface/web/designer/lib/lang/it_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/it_form_show.lng b/interface/web/designer/lib/lang/it_form_show.lng deleted file mode 100644 index 12be609a1..000000000 --- a/interface/web/designer/lib/lang/it_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/it_module_edit.lng b/interface/web/designer/lib/lang/it_module_edit.lng deleted file mode 100644 index a759d40b6..000000000 --- a/interface/web/designer/lib/lang/it_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Description -

-Modulename: Nome del modulo directory. Sono ammessi solo numeri, caratteri e underscore.
-Moduletitle: Will be shown in the (upper) main navigation.
-Template file: Template file of the module. Currently available: module.tpl.htm and module_tree.tpl.htm. Default is module.tpl.htm.
-NaviFrame: If module_tree.tpl.htm selected as template file, enter here the path to the script file for the left frame.
-Default page: These page will be shown when the module is opened.
-Tab width: Width of the Tabs in the main navigation. The field is empty by default. You can enter values absolute in pixel (e.g 20) or relative (e.g 20%).
-Suggerimento: tutti i percorsi sono relativi alla directory web. -'; -?> diff --git a/interface/web/designer/lib/lang/it_module_list.lng b/interface/web/designer/lib/lang/it_module_list.lng deleted file mode 100644 index 8a256cb49..000000000 --- a/interface/web/designer/lib/lang/it_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/it_module_nav_edit.lng b/interface/web/designer/lib/lang/it_module_nav_edit.lng deleted file mode 100644 index 26a426a12..000000000 --- a/interface/web/designer/lib/lang/it_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/it_module_nav_item_edit.lng b/interface/web/designer/lib/lang/it_module_nav_item_edit.lng deleted file mode 100644 index 47aac393b..000000000 --- a/interface/web/designer/lib/lang/it_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/it_module_show.lng b/interface/web/designer/lib/lang/it_module_show.lng deleted file mode 100644 index 2cf9b07a8..000000000 --- a/interface/web/designer/lib/lang/it_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ja.lng b/interface/web/designer/lib/lang/ja.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/ja.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ja_form_edit.lng b/interface/web/designer/lib/lang/ja_form_edit.lng deleted file mode 100644 index 130ca0788..000000000 --- a/interface/web/designer/lib/lang/ja_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ja_form_list.lng b/interface/web/designer/lib/lang/ja_form_list.lng deleted file mode 100644 index 47432257f..000000000 --- a/interface/web/designer/lib/lang/ja_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ja_form_show.lng b/interface/web/designer/lib/lang/ja_form_show.lng deleted file mode 100644 index 37017fa4a..000000000 --- a/interface/web/designer/lib/lang/ja_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ja_module_edit.lng b/interface/web/designer/lib/lang/ja_module_edit.lng deleted file mode 100644 index 592ccd76b..000000000 --- a/interface/web/designer/lib/lang/ja_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Description -

-Modulename: Name of the module directory. Only numbers, chars and underscore allowed.
-Moduletitle: Will be shown in the (upper) main navigation.
-Template file: Template file of the module. Currently available: module.tpl.htm and module_tree.tpl.htm. Default is module.tpl.htm.
-NaviFrame: If module_tree.tpl.htm selected as template file, enter here the path to the script file for the left frame.
-Default page: These page will be shown when the module is opened.
-Tab width: Width of the Tabs in the main navigation. The field is empty by default. You can enter values absolute in pixel (e.g 20) or relative (e.g 20%).
-Hint: All paths are relative to the directory web. -'; -?> diff --git a/interface/web/designer/lib/lang/ja_module_list.lng b/interface/web/designer/lib/lang/ja_module_list.lng deleted file mode 100644 index bc9ebed58..000000000 --- a/interface/web/designer/lib/lang/ja_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ja_module_nav_edit.lng b/interface/web/designer/lib/lang/ja_module_nav_edit.lng deleted file mode 100644 index fa5f15aa9..000000000 --- a/interface/web/designer/lib/lang/ja_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ja_module_nav_item_edit.lng b/interface/web/designer/lib/lang/ja_module_nav_item_edit.lng deleted file mode 100644 index 23f7d1592..000000000 --- a/interface/web/designer/lib/lang/ja_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ja_module_show.lng b/interface/web/designer/lib/lang/ja_module_show.lng deleted file mode 100644 index 6fe8d45be..000000000 --- a/interface/web/designer/lib/lang/ja_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/nl.lng b/interface/web/designer/lib/lang/nl.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/nl.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/nl_form_edit.lng b/interface/web/designer/lib/lang/nl_form_edit.lng deleted file mode 100644 index 130fa5f7d..000000000 --- a/interface/web/designer/lib/lang/nl_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/nl_form_list.lng b/interface/web/designer/lib/lang/nl_form_list.lng deleted file mode 100644 index 2da972504..000000000 --- a/interface/web/designer/lib/lang/nl_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/nl_form_show.lng b/interface/web/designer/lib/lang/nl_form_show.lng deleted file mode 100644 index 90fc71399..000000000 --- a/interface/web/designer/lib/lang/nl_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/nl_module_edit.lng b/interface/web/designer/lib/lang/nl_module_edit.lng deleted file mode 100644 index 289ac62fe..000000000 --- a/interface/web/designer/lib/lang/nl_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Description -

-Modulename: Naam van de module directory. Alleen numerieke waarden, karakters en underscore zijn toegestaan.
-Moduletitle: Worden weergegeven in de (bovenste) hoofd navigatiebalk.
-Template file: Template bestand van de module. Momenteel beschikbaar: module.tpl.htm and module_tree.tpl.htm. Standaard is module.tpl.htm.
-NaviFrame: Als module_tree.tpl.htm is geselecteerd als template bestand, geef hier dan het pad op naar het script bestand voor het linker frame.
-Default page: Deze pagina wordt weergegeven wanneer de module is geopened.
-Tab width: Breedte van de tabs in de hoofdnavigatiebalk. Dit veld is standaard leeg. U kunt hier absulute pixel waarden invoeren (bijv. 20) of relatief (bijv. 20%).
-Hint: Alle paden zijn relatief tot de directory web. -'; -?> diff --git a/interface/web/designer/lib/lang/nl_module_list.lng b/interface/web/designer/lib/lang/nl_module_list.lng deleted file mode 100644 index b07dd1189..000000000 --- a/interface/web/designer/lib/lang/nl_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/nl_module_nav_edit.lng b/interface/web/designer/lib/lang/nl_module_nav_edit.lng deleted file mode 100644 index 504b7f754..000000000 --- a/interface/web/designer/lib/lang/nl_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/nl_module_nav_item_edit.lng b/interface/web/designer/lib/lang/nl_module_nav_item_edit.lng deleted file mode 100644 index b711e490e..000000000 --- a/interface/web/designer/lib/lang/nl_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/nl_module_show.lng b/interface/web/designer/lib/lang/nl_module_show.lng deleted file mode 100644 index fca91bced..000000000 --- a/interface/web/designer/lib/lang/nl_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pl.lng b/interface/web/designer/lib/lang/pl.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/pl.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pl_form_edit.lng b/interface/web/designer/lib/lang/pl_form_edit.lng deleted file mode 100644 index ee4f4c410..000000000 --- a/interface/web/designer/lib/lang/pl_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pl_form_list.lng b/interface/web/designer/lib/lang/pl_form_list.lng deleted file mode 100644 index ac8572277..000000000 --- a/interface/web/designer/lib/lang/pl_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pl_form_show.lng b/interface/web/designer/lib/lang/pl_form_show.lng deleted file mode 100644 index db62af16b..000000000 --- a/interface/web/designer/lib/lang/pl_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pl_module_edit.lng b/interface/web/designer/lib/lang/pl_module_edit.lng deleted file mode 100644 index b87d04b18..000000000 --- a/interface/web/designer/lib/lang/pl_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Opis -

-Nazwa modułu: Nazwa katalogu z modułem. Tylko liczby, litery (bez polskich) i podkreślenie są dozwolone.
-Tytuł modułu: Będzie wyświetlaby w głównym menu nawigacyjnym.
-Plik szablonu: Plik szablonu modułu. Aktualnie dostępne: module.tpl.htm oraz module_tree.tpl.htm. Domyślnie jest module.tpl.htm.
-Ramka nawigacyjna: Jeśli module_tree.tpl.htm wybrano jako plik szablonu, wpisz tutaj ścieżkę do pliku ze skryptem dla lewej ramki.
-Strona domyślna: Ta strona będzie otwierana na początku podczas otwarcia modułu.
-Szerokość zakładki: Szerokość zakładek w głownym menu nawigacyjnym. To pole jest domyślnie puste. Możesz podać wartość w pikselach (np.: 20) lub procentach (np.: 20%).
-Podpowiedź: Wszystkie ścieżki są względne według strony www.. -'; -?> diff --git a/interface/web/designer/lib/lang/pl_module_list.lng b/interface/web/designer/lib/lang/pl_module_list.lng deleted file mode 100644 index 308d1c688..000000000 --- a/interface/web/designer/lib/lang/pl_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pl_module_nav_edit.lng b/interface/web/designer/lib/lang/pl_module_nav_edit.lng deleted file mode 100644 index fe8edabf6..000000000 --- a/interface/web/designer/lib/lang/pl_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pl_module_nav_item_edit.lng b/interface/web/designer/lib/lang/pl_module_nav_item_edit.lng deleted file mode 100644 index 779b3b4b3..000000000 --- a/interface/web/designer/lib/lang/pl_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pl_module_show.lng b/interface/web/designer/lib/lang/pl_module_show.lng deleted file mode 100644 index 9b98c4948..000000000 --- a/interface/web/designer/lib/lang/pl_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pt.lng b/interface/web/designer/lib/lang/pt.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/pt.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pt_form_edit.lng b/interface/web/designer/lib/lang/pt_form_edit.lng deleted file mode 100644 index 75059e565..000000000 --- a/interface/web/designer/lib/lang/pt_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pt_form_list.lng b/interface/web/designer/lib/lang/pt_form_list.lng deleted file mode 100644 index b16ce554b..000000000 --- a/interface/web/designer/lib/lang/pt_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pt_form_show.lng b/interface/web/designer/lib/lang/pt_form_show.lng deleted file mode 100644 index e9b385fbb..000000000 --- a/interface/web/designer/lib/lang/pt_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pt_module_edit.lng b/interface/web/designer/lib/lang/pt_module_edit.lng deleted file mode 100644 index e52cf384e..000000000 --- a/interface/web/designer/lib/lang/pt_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Descrição -

-Nome do Módulo: Nome da pasta do módulo. Apenas números, letras e underscores são permitidos.
-Título do Módulo: Será exibido em caixa alta no menu de navegação.
-Ficheiro de Template: Ficheiros de Template do Módulo Disponível: modulo.tpl.htm e modulo_tree.tpl.htm. O padrão é modulo.tpl.htm.
-Frame de Navegação: Se modulo_tree.tpl.htm foi seleccionado como ficheiro de template, insira aqui a pasta do script para o frame a esquerda.
-Página Padrão: Esta página será exibida quando o módulo for aberto.
-Tamanho da Aba: Tamanho das abas na navegação principal. Este campo fica em branco por padrão. Pode fornecer valores absolutos em pixels (ex.: 20) ou valores relativos (ex.: 20%).
-Dica: Todos as pastas são relativas à pasta web. -'; -?> diff --git a/interface/web/designer/lib/lang/pt_module_list.lng b/interface/web/designer/lib/lang/pt_module_list.lng deleted file mode 100644 index 822263a4a..000000000 --- a/interface/web/designer/lib/lang/pt_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pt_module_nav_edit.lng b/interface/web/designer/lib/lang/pt_module_nav_edit.lng deleted file mode 100644 index 761fe0a63..000000000 --- a/interface/web/designer/lib/lang/pt_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pt_module_nav_item_edit.lng b/interface/web/designer/lib/lang/pt_module_nav_item_edit.lng deleted file mode 100644 index 745a12341..000000000 --- a/interface/web/designer/lib/lang/pt_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/pt_module_show.lng b/interface/web/designer/lib/lang/pt_module_show.lng deleted file mode 100644 index 222fb51e3..000000000 --- a/interface/web/designer/lib/lang/pt_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ro.lng b/interface/web/designer/lib/lang/ro.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/ro.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ro_form_edit.lng b/interface/web/designer/lib/lang/ro_form_edit.lng deleted file mode 100644 index a99b975f0..000000000 --- a/interface/web/designer/lib/lang/ro_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ro_form_list.lng b/interface/web/designer/lib/lang/ro_form_list.lng deleted file mode 100644 index 49b9d5eaf..000000000 --- a/interface/web/designer/lib/lang/ro_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ro_form_show.lng b/interface/web/designer/lib/lang/ro_form_show.lng deleted file mode 100644 index 9cc5e71d9..000000000 --- a/interface/web/designer/lib/lang/ro_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ro_module_edit.lng b/interface/web/designer/lib/lang/ro_module_edit.lng deleted file mode 100644 index 327550f20..000000000 --- a/interface/web/designer/lib/lang/ro_module_edit.lng +++ /dev/null @@ -1,12 +0,0 @@ -Description

Modulename: Name of the module directory. Only numbers, chars and underscore allowed.
Moduletitle: Will be shown in the (upper) main navigation.
Template file: Template file of the module. Currently available: module.tpl.htm and module_tree.tpl.htm. Default is module.tpl.htm.
NaviFrame: If module_tree.tpl.htm selected as template file, enter here the path to the script file for the left frame.
Default page: These page will be shown when the module is opened.
Tab width: Width of the Tabs in the main navigation. The field is empty by default. You can enter values absolute in pixel (e.g 20) or relative (e.g 20%).
Hint: All paths are relative to the directory '; -?> diff --git a/interface/web/designer/lib/lang/ro_module_list.lng b/interface/web/designer/lib/lang/ro_module_list.lng deleted file mode 100644 index c53b556a4..000000000 --- a/interface/web/designer/lib/lang/ro_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ro_module_nav_edit.lng b/interface/web/designer/lib/lang/ro_module_nav_edit.lng deleted file mode 100644 index ee6bf5426..000000000 --- a/interface/web/designer/lib/lang/ro_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ro_module_nav_item_edit.lng b/interface/web/designer/lib/lang/ro_module_nav_item_edit.lng deleted file mode 100644 index 9b7d60df9..000000000 --- a/interface/web/designer/lib/lang/ro_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ro_module_show.lng b/interface/web/designer/lib/lang/ro_module_show.lng deleted file mode 100644 index 2fb748c3d..000000000 --- a/interface/web/designer/lib/lang/ro_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ru.lng b/interface/web/designer/lib/lang/ru.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/ru.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ru_form_edit.lng b/interface/web/designer/lib/lang/ru_form_edit.lng deleted file mode 100644 index 36c0bf46c..000000000 --- a/interface/web/designer/lib/lang/ru_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ru_form_list.lng b/interface/web/designer/lib/lang/ru_form_list.lng deleted file mode 100644 index 3db8db8d2..000000000 --- a/interface/web/designer/lib/lang/ru_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ru_form_show.lng b/interface/web/designer/lib/lang/ru_form_show.lng deleted file mode 100644 index 8b0132bba..000000000 --- a/interface/web/designer/lib/lang/ru_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ru_module_edit.lng b/interface/web/designer/lib/lang/ru_module_edit.lng deleted file mode 100644 index b7c2aaf0f..000000000 --- a/interface/web/designer/lib/lang/ru_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Описание -

-Имя модуля: Имя директории модуля. Допустимо использовать латинские символы, числа и подчеркивание.
-Заголовок модуля: Будет отображаться вверху радом с навигацией.
-Файл шаблона: Файл шаблона для модуля. Сейчас доступны: module.tpl.htm и module_tree.tpl.htm. По-умолчанию стоит module.tpl.htm.
-Навигационный фрейм: Если module_tree.tpl.htm выбран как шаблон, введите здесь путь до скрипта для левого фрейма.
-Страница по-умолчанию: Эта страница будет показана, когда открывается модуль.
-Ширина таба: Ширина таба в главной навигации. По-умолчанию поле пустое. Вы можете ввести значение в пикселях или в процентах.
-Подсказка: Все пути в директории web относительные. -'; -?> diff --git a/interface/web/designer/lib/lang/ru_module_list.lng b/interface/web/designer/lib/lang/ru_module_list.lng deleted file mode 100644 index 2401318dd..000000000 --- a/interface/web/designer/lib/lang/ru_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ru_module_nav_edit.lng b/interface/web/designer/lib/lang/ru_module_nav_edit.lng deleted file mode 100644 index 6fb4cc78f..000000000 --- a/interface/web/designer/lib/lang/ru_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ru_module_nav_item_edit.lng b/interface/web/designer/lib/lang/ru_module_nav_item_edit.lng deleted file mode 100644 index ab458ee5d..000000000 --- a/interface/web/designer/lib/lang/ru_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/ru_module_show.lng b/interface/web/designer/lib/lang/ru_module_show.lng deleted file mode 100644 index 25dc983dc..000000000 --- a/interface/web/designer/lib/lang/ru_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/se.lng b/interface/web/designer/lib/lang/se.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/se.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/se_form_edit.lng b/interface/web/designer/lib/lang/se_form_edit.lng deleted file mode 100644 index 1a3a831ff..000000000 --- a/interface/web/designer/lib/lang/se_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/se_form_list.lng b/interface/web/designer/lib/lang/se_form_list.lng deleted file mode 100644 index 10f41870b..000000000 --- a/interface/web/designer/lib/lang/se_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/se_form_show.lng b/interface/web/designer/lib/lang/se_form_show.lng deleted file mode 100644 index 3e21d62ef..000000000 --- a/interface/web/designer/lib/lang/se_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/se_module_edit.lng b/interface/web/designer/lib/lang/se_module_edit.lng deleted file mode 100644 index ba828ebbf..000000000 --- a/interface/web/designer/lib/lang/se_module_edit.lng +++ /dev/null @@ -1,12 +0,0 @@ -Description

Modulename: Namn på modul mappen. Endast siffror, bokstäver och understreck är tillåtna.
Moduletitle: Kommer att visas i (övre) huvud navigerigsramen.
Template file: Mall fil för modulen. Just nu finns: module.tpl.htm och module_tree.tpl.htm. Standard är module.tpl.htm.
NaviFrame: Om module module_tree.tpl.htm väljs som mall file, skriv här sökvägen till skriptfilen för den vänstra ramen.
Default page: Dessa sidor kommer att visas när modulen öppnas.
Tab width: Bredd på Flikarna i huvud navigerings ramen. Detta fält är tomt som standard. Du kan skriva in ett absolutvärde i pixlar (ex. 20) eller relativt värde (ex. 20%).
Hint: Alla sökvägar är relativa till mappen web.'; -?> diff --git a/interface/web/designer/lib/lang/se_module_list.lng b/interface/web/designer/lib/lang/se_module_list.lng deleted file mode 100644 index 47ff22860..000000000 --- a/interface/web/designer/lib/lang/se_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/se_module_nav_edit.lng b/interface/web/designer/lib/lang/se_module_nav_edit.lng deleted file mode 100644 index 468f8d8eb..000000000 --- a/interface/web/designer/lib/lang/se_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/se_module_nav_item_edit.lng b/interface/web/designer/lib/lang/se_module_nav_item_edit.lng deleted file mode 100644 index f5df09057..000000000 --- a/interface/web/designer/lib/lang/se_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/se_module_show.lng b/interface/web/designer/lib/lang/se_module_show.lng deleted file mode 100644 index 391947cba..000000000 --- a/interface/web/designer/lib/lang/se_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/sk.lng b/interface/web/designer/lib/lang/sk.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/sk.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/sk_form_edit.lng b/interface/web/designer/lib/lang/sk_form_edit.lng deleted file mode 100644 index a659c14f9..000000000 --- a/interface/web/designer/lib/lang/sk_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/sk_form_list.lng b/interface/web/designer/lib/lang/sk_form_list.lng deleted file mode 100644 index 262de0b8c..000000000 --- a/interface/web/designer/lib/lang/sk_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/sk_form_show.lng b/interface/web/designer/lib/lang/sk_form_show.lng deleted file mode 100644 index 4b8645137..000000000 --- a/interface/web/designer/lib/lang/sk_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/sk_module_edit.lng b/interface/web/designer/lib/lang/sk_module_edit.lng deleted file mode 100644 index 5daf4ff51..000000000 --- a/interface/web/designer/lib/lang/sk_module_edit.lng +++ /dev/null @@ -1,12 +0,0 @@ - Popis

Modulename: Názov modulu adresár. Len čísla, znaky a podtržítko povolené.
Moduletitle: sa objaví v (hornej) navigáciu.
Šablóna súboru: Šablóna súboru modulu. V súčasnej dobe sú k dispozícii'; -?> diff --git a/interface/web/designer/lib/lang/sk_module_list.lng b/interface/web/designer/lib/lang/sk_module_list.lng deleted file mode 100644 index 70eb44d0a..000000000 --- a/interface/web/designer/lib/lang/sk_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/sk_module_nav_edit.lng b/interface/web/designer/lib/lang/sk_module_nav_edit.lng deleted file mode 100644 index 7bfa900a5..000000000 --- a/interface/web/designer/lib/lang/sk_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/sk_module_nav_item_edit.lng b/interface/web/designer/lib/lang/sk_module_nav_item_edit.lng deleted file mode 100644 index 8fcfddd8e..000000000 --- a/interface/web/designer/lib/lang/sk_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/sk_module_show.lng b/interface/web/designer/lib/lang/sk_module_show.lng deleted file mode 100644 index e3f19168e..000000000 --- a/interface/web/designer/lib/lang/sk_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/tr.lng b/interface/web/designer/lib/lang/tr.lng deleted file mode 100644 index acb6c3546..000000000 --- a/interface/web/designer/lib/lang/tr.lng +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/tr_form_edit.lng b/interface/web/designer/lib/lang/tr_form_edit.lng deleted file mode 100644 index 8288ce84b..000000000 --- a/interface/web/designer/lib/lang/tr_form_edit.lng +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/tr_form_list.lng b/interface/web/designer/lib/lang/tr_form_list.lng deleted file mode 100644 index 54aa1f453..000000000 --- a/interface/web/designer/lib/lang/tr_form_list.lng +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/tr_form_show.lng b/interface/web/designer/lib/lang/tr_form_show.lng deleted file mode 100644 index 8efa1df5a..000000000 --- a/interface/web/designer/lib/lang/tr_form_show.lng +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/tr_module_edit.lng b/interface/web/designer/lib/lang/tr_module_edit.lng deleted file mode 100644 index 92bf93d2c..000000000 --- a/interface/web/designer/lib/lang/tr_module_edit.lng +++ /dev/null @@ -1,22 +0,0 @@ -Açıklama -

-Modül adı: Modül klasörünün adı. Sadece sayı, rakam ve alttan çizgi kullanabilirsiniz.
-Modül başlığı: Üst ana menüde gösterilecek olan isim.
-Şablon dosyası: Şablon dosyası veya modülü. Şu anda geçerli olan dosyalar: module.tpl.htm ve module_tree.tpl.htm. Varsayılan dosya: module.tpl.htm.
-NaviFrame: Eğer module_tree.tpl.htm dosyası şablon dosyası olarak seçilirse, buraya sol frame için betik dosyası yolu girebilirsiniz.
-Varsayılan sayfa: Modül açıldığı zaman görünecek sayfa.
-Sekme Genişliği: Temel navigasyonun genişliği. Bu alan varsayılan olarak boştur. Siz bir piksel değeri(20 gibi) veya bir oran(20%) değeri girebilirsiniz.
-İşaret: Tüm yollar web klasörüyle ilişkilidir.. -'; -?> diff --git a/interface/web/designer/lib/lang/tr_module_list.lng b/interface/web/designer/lib/lang/tr_module_list.lng deleted file mode 100644 index 08c57875f..000000000 --- a/interface/web/designer/lib/lang/tr_module_list.lng +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/tr_module_nav_edit.lng b/interface/web/designer/lib/lang/tr_module_nav_edit.lng deleted file mode 100644 index fd10993d6..000000000 --- a/interface/web/designer/lib/lang/tr_module_nav_edit.lng +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/tr_module_nav_item_edit.lng b/interface/web/designer/lib/lang/tr_module_nav_item_edit.lng deleted file mode 100644 index 06fe57e84..000000000 --- a/interface/web/designer/lib/lang/tr_module_nav_item_edit.lng +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/interface/web/designer/lib/lang/tr_module_show.lng b/interface/web/designer/lib/lang/tr_module_show.lng deleted file mode 100644 index a40c0743b..000000000 --- a/interface/web/designer/lib/lang/tr_module_show.lng +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/interface/web/designer/lib/module.conf.php b/interface/web/designer/lib/module.conf.php deleted file mode 100644 index 6104f497c..000000000 --- a/interface/web/designer/lib/module.conf.php +++ /dev/null @@ -1,95 +0,0 @@ - 'designer', - 'title' => 'BE Designer', - 'template' => 'module.tpl.htm', - 'navframe_page' => '', - 'startpage' => 'designer/module_list.php', - 'tab_width' => '', - 'nav' => - array ( - 0 => - array ( - 'title' => 'Modules', - 'open' => '1', - 'items' => - array ( - 0 => - array ( - 'title' => 'Add', - 'target' => 'content', - 'link' => 'designer/module_edit.php', - ), - 1 => - array ( - 'title' => 'Edit', - 'target' => 'content', - 'link' => 'designer/module_list.php', - ), - ), - ), - /* - 1 => - array ( - 'title' => 'Formulare', - 'open' => '1', - 'items' => - array ( - 2 => - array ( - 'title' => 'Add', - 'target' => 'content', - 'link' => 'designer/form_edit.php', - ), - 3 => - array ( - 'title' => 'Edit', - 'target' => 'content', - 'link' => 'designer/form_list.php', - ), - ), - ), - 2 => - array ( - 'title' => 'Lists', - 'open' => '1', - 'items' => - array ( - 4 => - array ( - 'title' => 'Add', - 'target' => 'content', - 'link' => 'designer/list_edit.php', - ), - 5 => - array ( - 'title' => 'Edit', - 'target' => 'content', - 'link' => 'designer/list_list.php', - ), - ), - ), - 3 => - array ( - 'title' => 'Languages', - 'open' => '1', - 'items' => - array ( - 6 => - array ( - 'title' => 'Add', - 'target' => 'content', - 'link' => 'designer/lang_edit.php', - ), - 7 => - array ( - 'title' => 'Edit', - 'target' => 'content', - 'link' => 'designer/lang_list.php', - ), - ), - ), - */ - ), -) -?> diff --git a/interface/web/designer/list/empty.dir b/interface/web/designer/list/empty.dir deleted file mode 100644 index 95ba9ef37..000000000 --- a/interface/web/designer/list/empty.dir +++ /dev/null @@ -1 +0,0 @@ -This empty directory is needed by ISPConfig. diff --git a/interface/web/designer/module_edit.php b/interface/web/designer/module_edit.php deleted file mode 100644 index af7dbb027..000000000 --- a/interface/web/designer/module_edit.php +++ /dev/null @@ -1,184 +0,0 @@ -error('This function is disabled in demo mode.'); - -//* Check permissions for module -$app->auth->check_module_permissions('designer'); - -// Lade Template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/module_edit.htm'); - -// ID importieren -$id = $_REQUEST["id"]; -if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $id)) die("id contains invalid chars."); - -if(count($_POST) > 1) { - // Bestimme aktion - if($id != '') { - $action = 'UPDATE'; - } else { - $action = 'INSERT'; - } - - - if($error == '') { - - $id = $_POST["module"]["name"]; - if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $id)) die("id contains invalid chars."); - - $filename = "../".$id."/lib/module.conf.php"; - $module_new = $_POST["module"]; - - if(@is_file($filename)) { - include_once $filename; - $navi = $module["nav"]; - unset($module); - $module_new["nav"] = $navi; - } - - $m = ""; - - // creating the module directories - if(!@is_dir("../".$id)) mkdir("../".$id) or die("Cannot make directory: ../".$id); - if(!@is_dir("../".$id."/lib")) mkdir("../".$id."/lib") or die("Cannot make directory: ../".$id."/lib"); - if(!@is_dir("../".$id."/lib/lang")) mkdir("../".$id."/lib/lang") or die("Cannot make directory: ../".$id."/lib/lang"); - if(!@is_dir("../".$id."/form")) mkdir("../".$id."/form") or die("Cannot make directory: ../".$id."/form"); - if(!@is_dir("../".$id."/list")) mkdir("../".$id."/list") or die("Cannot make directory: ../".$id."/list"); - if(!@is_dir("../".$id."/templates")) mkdir("../".$id."/templates") or die("Cannot make directory: ../".$id."/templates"); - - // writing module.conf - if (!$handle = fopen($filename, 'w')) { - print "Cannot open file ($filename)"; - exit; - } - - if (!fwrite($handle, $m)) { - print "Cannot write to file ($filename)"; - exit; - } - - fclose($handle); - - // writing admin conf - $admin_conf_filename = "../".$id."/lib/admin.conf.php"; - if(!is_file($admin_conf_filename)) { - if (!$handle = fopen($admin_conf_filename, 'w')) { - print "Cannot open file ($admin_conf_filename)"; - exit; - } - - if (!fwrite($handle, "")) { - print "Cannot write to file ($admin_conf_filename)"; - exit; - } - - fclose($handle); - } - - // zu Liste springen - header("Location: module_list.php"); - exit; - - } else { - $app->tpl->setVar("error", "Fehler:
".$error); - $app->tpl->setVar($_POST); - } -} - -if($id != '') { - // Datensatz besteht bereits - // bestehenden Datensatz anzeigen - if($error == '') { - // es liegt ein Fehler vor - include_once "../".$id."/lib/module.conf.php"; - //$navi = $module["nav"]; - unset($module["nav"]); - $record = $module; - } else { - // ein Fehler - $record = $_POST; - //$navi = $_POST["nav"]; - unset($_POST["nav"]); - } - $record["readonly"] = 'style="background-color: #EEEEEE;" readonly'; -} else { - // neuer datensatz - if($error == '') { - // es liegt ein Fehler vor - $record["template"] = "module.tpl.htm"; - } else { - // ein Fehler - $record = $_POST; - //$navi = $_POST["nav"]; - unset($_POST["nav"]); - - } - $record["readonly"] = ''; -} - -$record["id"] = $id; - -/* -// baue Modul navi -$content = ""; -$n1 = 0; -$n2 = 0; -foreach($navi as $section) { - $content .= "Bereich:\r\n"; - foreach($section["items"] as $item) { - $content .= "Titel:\r\n"; - $content .= "Ziel:       \r\n"; - $content .= "Link:       \r\n"; - $n2++; - } - $n1++; -} - -$record["nav"] = $content; -*/ - -$app->tpl->setVar($record); - -include_once "lib/lang/".$_SESSION["s"]["language"]."_module_edit.lng"; -$app->tpl->setVar($wb); - -// Defaultwerte setzen -$app->tpl_defaults(); - -// Template parsen -$app->tpl->pparse(); - -?> diff --git a/interface/web/designer/module_list.php b/interface/web/designer/module_list.php deleted file mode 100644 index b08707e14..000000000 --- a/interface/web/designer/module_list.php +++ /dev/null @@ -1,69 +0,0 @@ -auth->check_module_permissions('designer'); - -$app->uses('tpl'); - -$app->tpl->newTemplate('form.tpl.htm'); -$app->tpl->setInclude('content_tpl', 'templates/module_list.htm'); - -//* Pick out modules -$bgcolor = '#FFFFFF'; -$modules_list = array(); -$handle = @opendir(ISPC_WEB_PATH); -while ($file = @readdir($handle)) { - if ($file != '.' && $file != '..') { - if(@is_dir(ISPC_WEB_PATH."/$file")) { - if(is_file(ISPC_WEB_PATH."/$file/lib/module.conf.php") and $file != 'login') { - include_once ISPC_WEB_PATH."/$file/lib/module.conf.php"; - $modules_list[] = array( 'module' => $module['name'], - 'title' => $module['title'], - 'bgcolor' => ($bgcolor == '#FFFFFF') ? '#EEEEEE' : '#FFFFFF' - ); - } - } - } -} - -$app->tpl->setLoop('records', $modules_list); - -//* loading language file -$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_module_list.lng'; -include $lng_file; -$app->tpl->setVar($wb); - -$app->tpl_defaults(); -$app->tpl->pparse(); - -?> diff --git a/interface/web/designer/module_nav_del.php b/interface/web/designer/module_nav_del.php deleted file mode 100644 index c5781d979..000000000 --- a/interface/web/designer/module_nav_del.php +++ /dev/null @@ -1,81 +0,0 @@ -auth->check_module_permissions('designer'); -if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); - -// Lade Template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/module_nav_edit.htm'); - -// ID importieren -$module_name = $_REQUEST["module_name"]; -$nav_id = $_REQUEST["nav_id"]; - -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $module_name)) die("module_name contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $nav_id)) die("nav_id contains invalid chars."); - -if(empty($module_name)) die("module is empty."); - -if($nav_id != '') { - - $filename = "../".$module_name."/lib/module.conf.php"; - - if(!@is_file($filename)) die("File not found: $filename"); - include_once $filename; - - unset($module["nav"][$nav_id]); - - $m = ""; - - // writing module.conf - if (!$handle = fopen($filename, 'w')) { - print "Cannot open file ($filename)"; - exit; - } - if (!fwrite($handle, $m)) { - print "Cannot write to file ($filename)"; - exit; - } - - fclose($handle); - - - // zu Liste springen - header("Location: module_show.php?id=$module_name"); - exit; -} -?> diff --git a/interface/web/designer/module_nav_edit.php b/interface/web/designer/module_nav_edit.php deleted file mode 100644 index e7e63e149..000000000 --- a/interface/web/designer/module_nav_edit.php +++ /dev/null @@ -1,147 +0,0 @@ -error('This function is disabled in demo mode.'); - -//* Check permissions for module -$app->auth->check_module_permissions('designer'); - -//* Load template -$app->uses('tpl'); -$app->tpl->newTemplate('form.tpl.htm'); -$app->tpl->setInclude('content_tpl', 'templates/module_nav_edit.htm'); - -// TODO: Check module and nav_id for malicius chars, nav_id can be empty or any number, even 0 -$module_name = $_REQUEST['module_name']; -$nav_id = $_REQUEST['nav_id']; - -//** Sanity checks of module -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $module_name)){ - die('module_name contains invalid chars.'); -} -if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $nav_id)){ - die('nav_id contains invalid chars.'); -} -if(empty($module_name)){ - die('module is empty.'); -} - -if(count($_POST) > 0) { - //* Determine Action - $action = ($nav_id != '') ? 'UPDATE' : 'INSERT'; - $error = ''; - - // TODO: Check variables - - if($error == '') { - - $filename = '../'.$module_name.'/lib/module.conf.php'; - - if(!@is_file($filename)){ - die("File not found: $filename"); - } - include_once $filename; - - $items = ($action == 'UPDATE') ? $module['nav'][$nav_id]['items'] : array(); - - $tmp = array('title' => $_POST['nav']['title'], - 'open' => 1, - 'items' => $items); - - if($action == 'UPDATE') { - $module['nav'][$nav_id] = $tmp; - } else { - $module['nav'][] = $tmp; - } - - $m = ""; - - //* writing module.conf - if (!$handle = fopen($filename, 'w')) { - die("Cannot open file ($filename)"); - } - - if (!fwrite($handle, $m)) { - die("Cannot write to file ($filename)"); - } - - fclose($handle); - - - //* Jump to list - header('Location: module_show.php?id='.urlencode($module_name)); - exit; - - } else { - $app->tpl->setVar('error', 'Fehler:
'.$error); - $app->tpl->setVar($_POST); - } -} - -if($nav_id != '') { - //* Data record exists - if($error == '') { - include_once '../'.$module_name.'/lib/module.conf.php'; - $record = $module['nav'][$nav_id]; - } else { - //* error - $record = $_POST; - } - //$record["readonly"] = 'style="background-color: #EEEEEE;" readonly'; -} else { - //* New data record - if($error == '') { - //* es liegt kein Fehler vor - } else { - //* error - $record = $_POST; - - } - //$record["readonly"] = ''; -} - -$record['nav_id'] = $nav_id; -$record['module_name'] = $module_name; - -$app->tpl->setVar($record); - -include_once 'lib/lang/'.$_SESSION['s']['language'].'_module_nav_edit.lng'; -$app->tpl->setVar($wb); - -$app->tpl_defaults(); -$app->tpl->pparse(); - -?> diff --git a/interface/web/designer/module_nav_flip.php b/interface/web/designer/module_nav_flip.php deleted file mode 100644 index 09cdd17bf..000000000 --- a/interface/web/designer/module_nav_flip.php +++ /dev/null @@ -1,92 +0,0 @@ -auth->check_module_permissions('designer'); -if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); - -// Lade Template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/module_nav_edit.htm'); - -// ID importieren -$module_name = $_REQUEST["module_name"]; -$nav_id = $_REQUEST["nav_id"]; -$dir = $_REQUEST["dir"]; - -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $module_name)) die("module_name contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $nav_id)) die("nav_id contains invalid chars."); - -if(empty($module_name)) die("module is empty."); - -if($nav_id != '') { - - $filename = "../".$module_name."/lib/module.conf.php"; - - if(!@is_file($filename)) die("File not found: $filename"); - include_once $filename; - - if($dir == 'up' and $nav_id > 0) { - $tmp = $module["nav"][$nav_id - 1]; - $module["nav"][$nav_id - 1] = $module["nav"][$nav_id]; - $module["nav"][$nav_id] = $tmp; - } - - if($dir == 'down' and $nav_id < count($module["nav"]) -1) { - $tmp = $module["nav"][$nav_id + 1]; - $module["nav"][$nav_id + 1] = $module["nav"][$nav_id]; - $module["nav"][$nav_id] = $tmp; - } - - $m = ""; - - // writing module.conf - if (!$handle = fopen($filename, 'w')) { - print "Cannot open file ($filename)"; - exit; - } - if (!fwrite($handle, $m)) { - print "Cannot write to file ($filename)"; - exit; - } - - fclose($handle); - - - // zu Liste springen - echo "HEADER_REDIRECT:designer/module_show.php?id=$module_name"; - exit; -} -?> diff --git a/interface/web/designer/module_nav_item_del.php b/interface/web/designer/module_nav_item_del.php deleted file mode 100644 index 66a17b589..000000000 --- a/interface/web/designer/module_nav_item_del.php +++ /dev/null @@ -1,83 +0,0 @@ -error('This function is disabled in demo mode.'); - -//* Check permissions for module -$app->auth->check_module_permissions('designer'); - -// Lade Template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/module_nav_edit.htm'); - -// ID importieren -$module_name = $_REQUEST["module_name"]; -$nav_id = $_REQUEST["nav_id"]; -$item_id = $_REQUEST["item_id"]; - -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $module_name)) die("module_name contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $nav_id)) die("nav_id contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $item_id)) die("item_id contains invalid chars."); - -if(empty($module_name)) die("module is empty."); - -if($nav_id != '') { - - $filename = "../".$module_name."/lib/module.conf.php"; - - if(!@is_file($filename)) die("File not found: $filename"); - include_once $filename; - - unset($module["nav"][$nav_id]["items"][$item_id]); - - $m = ""; - - // writing module.conf - if (!$handle = fopen($filename, 'w')) { - print "Cannot open file ($filename)"; - exit; - } - if (!fwrite($handle, $m)) { - print "Cannot write to file ($filename)"; - exit; - } - - fclose($handle); - - - // zu Liste springen - header("Location: module_show.php?id=$module_name"); - exit; -} -?> diff --git a/interface/web/designer/module_nav_item_edit.php b/interface/web/designer/module_nav_item_edit.php deleted file mode 100644 index 2faff74fe..000000000 --- a/interface/web/designer/module_nav_item_edit.php +++ /dev/null @@ -1,151 +0,0 @@ -error('This function is disabled in demo mode.'); - -//* Check permissions for module -$app->auth->check_module_permissions('designer'); - -// Lade Template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/module_nav_item_edit.htm'); - -// ID importieren -$module_name = $_REQUEST["module_name"]; -$nav_id = $_REQUEST["nav_id"]; -$item_id = $_REQUEST["item_id"]; - -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $module_name)) die("module_name contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $nav_id)) die("nav_id contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $item_id)) die("item_id contains invalid chars."); - -if(empty($module_name)) die("module is empty."); - -if(count($_POST) > 0) { - // Bestimme aktion - if($item_id != '') { - $action = 'UPDATE'; - } else { - $action = 'INSERT'; - } - - $error = ''; - - // TODO: Check variables - - - if($error == '') { - - $filename = "../".$module_name."/lib/module.conf.php"; - - if(!@is_file($filename)) die("File not found: $filename"); - include_once $filename; - - $tmp = array('title' =>$_POST["title"], - 'target' => $_POST["target"], - 'link' => $_POST["link"]); - - if($action == 'UPDATE') { - $module["nav"][$nav_id]["items"][$item_id] = $tmp; - } else { - $module["nav"][$nav_id]["items"][] = $tmp; - } - - $m = ""; - - // writing module.conf - if (!$handle = fopen($filename, 'w')) { - print "Cannot open file ($filename)"; - exit; - } - - if (!fwrite($handle, $m)) { - print "Cannot write to file ($filename)"; - exit; - } - - fclose($handle); - - - // zu Liste springen - header("Location: module_show.php?id=$module_name"); - exit; - - } else { - $app->tpl->setVar("error", "Fehler:
".$error); - $app->tpl->setVar($_POST); - } -} - -if($item_id != '') { - // Datensatz besteht bereits - // bestehenden Datensatz anzeigen - if($error == '') { - // es liegt ein Fehler vor - include_once "../".$module_name."/lib/module.conf.php"; - $record = $module["nav"][$nav_id]["items"][$item_id]; - } else { - // ein Fehler - $record = $_POST; - } - //$record["readonly"] = 'style="background-color: #EEEEEE;" readonly'; -} else { - // neuer datensatz - if($error == '') { - // es liegt kein Fehler vor - $record["target"] = "content"; - } else { - // ein Fehler - $record = $_POST; - - } - //$record["readonly"] = ''; -} - -$record["item_id"] = $item_id; -$record["nav_id"] = $nav_id; -$record["module_name"] = $module_name; - -$app->tpl->setVar($record); - -include_once "lib/lang/".$_SESSION["s"]["language"]."_module_nav_item_edit.lng"; -$app->tpl->setVar($wb); - -// Defaultwerte setzen -$app->tpl_defaults(); - -// Template parsen -$app->tpl->pparse(); - -?> diff --git a/interface/web/designer/module_nav_item_flip.php b/interface/web/designer/module_nav_item_flip.php deleted file mode 100644 index 94f210b13..000000000 --- a/interface/web/designer/module_nav_item_flip.php +++ /dev/null @@ -1,94 +0,0 @@ -error('This function is disabled in demo mode.'); - -//* Check permissions for module -$app->auth->check_module_permissions('designer'); - -// Lade Template -$app->uses('tpl'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/module_nav_edit.htm'); - -// ID importieren -$module_name = $_REQUEST["module_name"]; -$nav_id = $_REQUEST["nav_id"]; -$item_id = $_REQUEST["item_id"]; -$dir = $_REQUEST["dir"]; - -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $module_name)) die("module_name contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{1,50}$/', $nav_id)) die("nav_id contains invalid chars."); -if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $item_id)) die("item_id contains invalid chars."); - -if(empty($module_name)) die("module is empty."); - -if($nav_id != '') { - - $filename = "../".$module_name."/lib/module.conf.php"; - - if(!@is_file($filename)) die("File not found: $filename"); - include_once $filename; - - if($dir == 'up' and $item_id > 0) { - $tmp = $module["nav"][$nav_id]["items"][$item_id - 1]; - $module["nav"][$nav_id]["items"][$item_id -1] = $module["nav"][$nav_id]["items"][$item_id]; - $module["nav"][$nav_id]["items"][$item_id] = $tmp; - } - - if($dir == 'down' and $item_id < count($module["nav"][$nav_id]["items"]) -1) { - $tmp = $module["nav"][$nav_id]["items"][$item_id + 1]; - $module["nav"][$nav_id]["items"][$item_id + 1] = $module["nav"][$nav_id]["items"][$item_id]; - $module["nav"][$nav_id]["items"][$item_id] = $tmp; - } - - $m = ""; - - // writing module.conf - if (!$handle = fopen($filename, 'w')) { - print "Cannot open file ($filename)"; - exit; - } - if (!fwrite($handle, $m)) { - print "Cannot write to file ($filename)"; - exit; - } - - fclose($handle); - - - // zu Liste springen - header("Location: module_show.php?id=$module_name"); - exit; -} -?> diff --git a/interface/web/designer/module_show.php b/interface/web/designer/module_show.php deleted file mode 100644 index f3e9812f9..000000000 --- a/interface/web/designer/module_show.php +++ /dev/null @@ -1,113 +0,0 @@ -auth->check_module_permissions('designer'); - -if($_SESSION["s"]["user"]["typ"] != "admin") die("Admin permissions required."); - -$app->uses('tpl'); - -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/module_show.htm'); - - -$module_name = $_REQUEST["id"]; -if(!preg_match('/^[A-Za-z0-9_]{0,50}$/', $module_name)) die("id contains invalid chars."); - -include_once "../".$module_name."/lib/module.conf.php"; -$navi = $module["nav"]; -unset($module["nav"]); -$record = $module; - -// loading language file -$lng_file = "lib/lang/".$_SESSION["s"]["user"]["language"]."_module_show.lng"; -include $lng_file; -$app->tpl->setVar($wb); - -// baue Modul navi -$content = ""; -$n1 = 0; -$n2 = 0; -if(is_array($navi)) { - foreach($navi as $nav_id => $section) { - $content .= " - - - - - - "; - //$content .= "\r\n"; - foreach($section["items"] as $item_id => $item) { - //$content .= "\r\n"; - //$content .= "\r\n"; - //$content .= "\r\n"; - $content .= " - - - "; - $n2++; - } - $content .= " -
$section[title] -
-
-
-
-
-
Bereich:
Titel:
Ziel:       
Link:       
$item[title] -
-
-
-
-
 
- - "; - $n1++; - } -} - -$record["nav"] = $content; - - -$app->tpl->setVar($record); - - -$app->tpl->setLoop('records', $modules_list); - -$app->tpl_defaults(); -$app->tpl->pparse(); - - - -?> diff --git a/interface/web/designer/templates/form_edit.htm b/interface/web/designer/templates/form_edit.htm deleted file mode 100644 index 72cb0a442..000000000 --- a/interface/web/designer/templates/form_edit.htm +++ /dev/null @@ -1,79 +0,0 @@ -
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
: yes / no
:
:
: yes / no
 
:
:
: r = read, i = insert, u = update, d = delete
: r = read, i = insert, u = update, d = delete
: r = read, i = insert, u = update, d = delete
 
  - -
- - -
\ No newline at end of file diff --git a/interface/web/designer/templates/form_list.htm b/interface/web/designer/templates/form_list.htm deleted file mode 100644 index 9e4fc38b9..000000000 --- a/interface/web/designer/templates/form_list.htm +++ /dev/null @@ -1,29 +0,0 @@ -
-

- - - - - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="name"}{tmpl_var name="title"}{tmpl_var name="module_name"}{tmpl_var name="description"}[Delete]
{tmpl_var name='globalsearch_noresults_text_txt'}
-
\ No newline at end of file diff --git a/interface/web/designer/templates/form_show.htm b/interface/web/designer/templates/form_show.htm deleted file mode 100644 index e8db5efd8..000000000 --- a/interface/web/designer/templates/form_show.htm +++ /dev/null @@ -1,61 +0,0 @@ - -
-

-
{tmpl_var name='form_txt'} - - - - - - - - - - - - - - - - - - - - - - - -
:{tmpl_var name='title'}
:{tmpl_var name='form_name'}
:{tmpl_var name='module_name'}
:{tmpl_var name='description'}
 
- - -
-
- - - - - - - - -
 
 
-
\ No newline at end of file diff --git a/interface/web/designer/templates/module_edit.htm b/interface/web/designer/templates/module_edit.htm deleted file mode 100644 index e6e5b113b..000000000 --- a/interface/web/designer/templates/module_edit.htm +++ /dev/null @@ -1,43 +0,0 @@ -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
  -
 
-
-
 
- \ No newline at end of file diff --git a/interface/web/designer/templates/module_list.htm b/interface/web/designer/templates/module_list.htm deleted file mode 100644 index c82ebef93..000000000 --- a/interface/web/designer/templates/module_list.htm +++ /dev/null @@ -1,23 +0,0 @@ -

- - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="module"}{tmpl_var name="title"}[Delete]
{tmpl_var name='globalsearch_noresults_text_txt'}
\ No newline at end of file diff --git a/interface/web/designer/templates/module_nav_edit.htm b/interface/web/designer/templates/module_nav_edit.htm deleted file mode 100644 index fe925ddce..000000000 --- a/interface/web/designer/templates/module_nav_edit.htm +++ /dev/null @@ -1,24 +0,0 @@ -

- - - - - - - - - - - - - - - - - -
:
  -
 
-
-
 
- - \ No newline at end of file diff --git a/interface/web/designer/templates/module_nav_item_edit.htm b/interface/web/designer/templates/module_nav_item_edit.htm deleted file mode 100644 index 3a52daeb2..000000000 --- a/interface/web/designer/templates/module_nav_item_edit.htm +++ /dev/null @@ -1,33 +0,0 @@ -

- - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
  -
 
-
-
 
- - - \ No newline at end of file diff --git a/interface/web/designer/templates/module_show.htm b/interface/web/designer/templates/module_show.htm deleted file mode 100644 index 24694b4b6..000000000 --- a/interface/web/designer/templates/module_show.htm +++ /dev/null @@ -1,31 +0,0 @@ -

-
{tmpl_var name='module_txt'} - - - - - - - - - - - - - - - -
:{tmpl_var name='title'}
:{tmpl_var name='name'}
 
-
-
-
-
- - - - - - - - -
 
 
\ No newline at end of file diff --git a/interface/web/designer/templates/paging.tpl.htm b/interface/web/designer/templates/paging.tpl.htm deleted file mode 100644 index dd38af8a9..000000000 --- a/interface/web/designer/templates/paging.tpl.htm +++ /dev/null @@ -1,9 +0,0 @@ -[ |<< ] - - [<< Zurück] - - Seite {tmpl_var name="next_page"} von {tmpl_var name="max_pages"} - - [Weiter >>] - - [ >>| ] \ No newline at end of file -- GitLab From 5b3f2519464c373529b1fd932bab9aa2ea91ddff Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 16:26:05 +0200 Subject: [PATCH 075/158] - Removed unused file form.inc.php - Added some cleanup code --- install/lib/installer_base.lib.php | 17 +- install/update.php | 3 + interface/lib/classes/form.inc.php | 517 ----------------------------- 3 files changed, 19 insertions(+), 518 deletions(-) delete mode 100644 interface/lib/classes/form.inc.php diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index a82ac2e74..83b6ffba3 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -2152,7 +2152,7 @@ class installer_base { // Add symlink for patch tool if(!is_link('/usr/local/bin/ispconfig_patch')) exec('ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch'); - + } public function configure_dbserver() { @@ -2240,6 +2240,21 @@ class installer_base { touch($conf['ispconfig_log_dir'].'/cron.log'); chmod($conf['ispconfig_log_dir'].'/cron.log', 0660); + } + + // This function is called at the end of the update process and contains code to clean up parts of old ISPCONfig releases + public function cleanup_ispconfig() { + global $app,$conf; + + // Remove directories recursively + if(is_dir('/usr/local/ispconfig/interface/web/designer')) exec('rm -rf /usr/local/ispconfig/interface/web/designer'); + + // Remove files + if(is_file('/usr/local/ispconfig/interface/lib/classes/db_firebird.inc.php')) unlink('/usr/local/ispconfig/interface/lib/classes/db_firebird.inc.php'); + if(is_file('/usr/local/ispconfig/interface/lib/classes/form.inc.php')) unlink('/usr/local/ispconfig/interface/lib/classes/form.inc.php'); + + + } public function getinitcommand($servicename, $action, $init_script_directory = ''){ diff --git a/install/update.php b/install/update.php index 36eb20181..eec69bad3 100644 --- a/install/update.php +++ b/install/update.php @@ -443,6 +443,9 @@ if ($conf['services']['web'] && $inst->install_ispconfig_interface) { $inst->install_ispconfig(); +// Cleanup +$inst->cleanup_ispconfig(); + //** Configure Crontab $update_crontab_answer = $inst->simple_query('Reconfigure Crontab?', array('yes', 'no'), 'yes','reconfigure_crontab'); if($update_crontab_answer == 'yes') { diff --git a/interface/lib/classes/form.inc.php b/interface/lib/classes/form.inc.php deleted file mode 100644 index e6948ddd2..000000000 --- a/interface/lib/classes/form.inc.php +++ /dev/null @@ -1,517 +0,0 @@ -tableDef = $table; - $this->table_name = $table_name; - $this->table_index = $table_index; - return true; - } - - function loadFormDef($file) { - global $app, $conf; - - include_once $file; - $this->formDef = $form; - return true; - } - - - - - - - - - /** - * Konvertiert die Daten des übergebenen assoziativen - * Arrays in "menschenlesbare" Form. - * Datentyp Konvertierung, z.B. für Ausgabe in Listen. - * - * @param record - * @return record - */ - function decode($record) { - global $app; - if(is_array($record)) { - foreach($record as $key => $val) { - switch ($this->tableDef[$key]['datatype']) { - case 'VARCHAR': - $new_record[$key] = stripslashes($val); - break; - - case 'DATE': - if($val > 0) { - $new_record[$key] = date($this->dateformat, $val); - } - break; - - case 'INTEGER': - $new_record[$key] = $app->functions->intval($val); - break; - - case 'DOUBLE': - $new_record[$key] = $val; - break; - - case 'CURRENCY': - $new_record[$key] = number_format($val, 2, ',', ''); - break; - - default: - $new_record[$key] = stripslashes($val); - } - } - - } - return $new_record; - } - - - - - - /** - * Record für Ausgabe in Formularen vorbereiten. - * - * @param record = Datensatz als Array - * @param action = NEW oder EDIT - * @return record - */ - function getHTML($record, $action = 'NEW') { - - global $app; - - if(!is_array($this->tableDef)) $app->error("Keine Tabellendefinition vorhanden."); - - $new_record = array(); - if($action == 'EDIT') { - $record = $this->decode($record); - if(is_array($record)) { - foreach($record as $key => $val) { - switch ($this->tableDef[$key]['formtype']) { - case 'SELECT': - if(is_array($this->tableDef[$key]['value'])) { - $out = ''; - foreach($this->tableDef[$key]['value'] as $k => $v) { - $selected = ($k == $val)?' SELECTED':''; - $out .= "\r\n"; - } - } - $new_record[$key] = $out; - break; - case 'MULTIPLE': - if(is_array($this->tableDef[$key]['value'])) { - - // aufsplitten ergebnisse - $vals = explode($this->tableDef[$key]['separator'], $val); - - // HTML schreiben - $out = ''; - foreach($this->tableDef[$key]['value'] as $k => $v) { - - $selected = ''; - foreach($vals as $tvl) { - if(trim($tvl) == trim($k)) $selected = ' SELECTED'; - } - - $out .= "\r\n"; - } - } - $new_record[$key] = $out; - break; - - case 'PASSWORD': - $new_record[$key] = ''; - break; - - default: - $new_record[$key] = htmlspecialchars($val); - } - } - } - } else { - foreach($this->tableDef as $key => $val) { - switch ($this->tableDef[$key]['formtype']) { - case 'SELECT': - if(is_array($this->tableDef[$key]['value'])) { - $out = ''; - foreach($this->tableDef[$key]['value'] as $k => $v) { - $selected = ($k == $val)?' SELECTED':''; - $out .= "\r\n"; - } - } - $new_record[$key] = $out; - break; - case 'MULTIPLE': - if(is_array($this->tableDef[$key]['value'])) { - - // aufsplitten ergebnisse - $vals = explode($this->tableDef[$key]['separator'], $val); - - // HTML schreiben - $out = ''; - foreach($this->tableDef[$key]['value'] as $k => $v) { - - $out .= "\r\n"; - } - } - $new_record[$key] = $out; - break; - - case 'PASSWORD': - $new_record[$key] = ''; - break; - - default: - $new_record[$key] = htmlspecialchars($this->tableDef[$key]['value']); - } - } - - } - - if($this->debug == 1) $this->dbg($new_record); - - return $new_record; - } - - - - - - /** - * Record in "maschinen lesbares" Format überführen - * und Werte gegen reguläre Ausdrücke prüfen. - * - * @param record = Datensatz als Array - * @return record - */ - function encode($record) { - global $app; - $this->errorMessage = ''; - - if(is_array($record)) { - foreach($record as $key => $val) { - switch ($this->tableDef[$key]['datatype']) { - case 'VARCHAR': - if(!is_array($val)) { - $new_record[$key] = $app->db->quote($val); - } else { - $new_record[$key] = implode($this->tableDef[$key]['separator'], $val); - } - break; - case 'DATE': - if($val > 0) { - list($tag, $monat, $jahr) = explode('.', $val); - $new_record[$key] = mktime(0, 0, 0, $monat, $tag, $jahr); - } - break; - case 'INTEGER': - $new_record[$key] = $app->functions->intval($val); - break; - case 'DOUBLE': - $new_record[$key] = $app->db->quote($val); - break; - case 'CURRENCY': - $new_record[$key] = str_replace(",", ".", $val); - break; - } - - if($this->tableDef[$key]['regex'] != '') { - // Enable that "." matches also newlines - $this->tableDef[$key]['regex'] .= 's'; - if(!preg_match($this->tableDef[$key]['regex'], $val)) { - $this->errorMessage .= $this->tableDef[$key]['errmsg']."
\r\n"; - } - } - } - - } - return $new_record; - } - - - - - - /** - * SQL Statement für Record erzeugen. - * - * @param record = Datensatz als Array - * @param action = INSERT oder UPDATE - * @param primary_id - * @return record - */ - function getSQL($record, $action = 'INSERT', $primary_id = 0, $sql_ext_where = '') { - - global $app; - - $record = $this->encode($record); - $sql_insert_key = ''; - $sql_insert_val = ''; - $sql_update = ''; - - if(!is_array($this->tableDef)) $app->error("Keine Tabellendefinition vorhanden."); - - // gehe durch alle Felder des Records - if(is_array($record)) { - foreach($record as $key => $val) { - // Wenn es kein leeres Passwortfeld ist - if (!($this->tableDef[$key]['formtype'] == 'PASSWORD' and $val == '')) { - // gehe durch alle Felder der TableDef - foreach($this->tableDef as $tk => $tv) { - // Wenn Feld in TableDef enthalten ist - if($tk == $key) { - // Erzeuge Insert oder Update Quelltext - if($action == "INSERT") { - - if($this->tableDef[$key]['formtype'] == 'PASSWORD') { - $sql_insert_key .= "`$key`, "; - $sql_insert_val .= "md5('$val'), "; - //} elseif($this->tableDef[$key]['formtype'] == 'MULTIPLE') { - // $val = implode($this->tableDef[$key]['separator'],$val); - // $sql_insert_key .= "`$key`, "; - // $sql_insert_val .= "'$val', "; - } else { - $sql_insert_key .= "`$key`, "; - $sql_insert_val .= "'$val', "; - } - - } else { - - if($this->tableDef[$key]['formtype'] == 'PASSWORD') { - $sql_update .= "`$key` = md5('$val'), "; - //} elseif($this->tableDef[$key]['formtype'] == 'MULTIPLE') { - // $val = implode($this->tableDef[$key]['separator'],$val); - // $sql_update .= "`$key` = '$val', "; - } else { - $sql_update .= "`$key` = '$val', "; - } - - } - } - } - } - } - } - - // Füge Backticks nur bei unvollständigen Tabellennamen ein - if(stristr($this->table_name, '.')) { - $escape = ''; - } else { - $escape = '`'; - } - - - if($action == "INSERT") { - $sql_insert_key = substr($sql_insert_key, 0, -2); - $sql_insert_val = substr($sql_insert_val, 0, -2); - $sql = "INSERT INTO ".$escape.$this->table_name.$escape." ($sql_insert_key) VALUES ($sql_insert_val)"; - } else { - if($primary_id != 0) { - $sql_update = substr($sql_update, 0, -2); - $sql = "UPDATE ".$escape.$this->table_name.$escape." SET ".$sql_update." WHERE ".$this->table_index ." = ".$primary_id; - if($sql_ext_where != '') $sql .= " and ".$sql_ext_where; - } else { - $app->error("Primary ID fehlt!"); - } - } - - return $sql; - } - - - - - - /** - * Debugging arrays. - * - * @param array_data - */ - function dbg($array_data) { - - echo "
";
-		print_r($array_data);
-		echo "
"; - - } - - - function showForm() { - global $app, $conf; - - if(!is_array($this->formDef)) die("Form Definition wurde nicht geladen."); - - if($this->errorMessage == '') { - // wenn kein Fehler vorliegt - if($_REQUEST["next_tab"] != '') { - // wenn nächster Tab bekannt - $active_tab = $_REQUEST["next_tab"]; - } else { - // ansonsten ersten tab nehmen - $active_tab = $this->formDef["tabs"][0]["name"]; - } - } else { - // bei Fehlern den gleichen Tab nochmal anzeigen - $active_tab = $_SESSION["s"]["form"]["tab"]; - } - - // definiere Tabs - foreach( $this->formDef["tabs"] as $tab) { - - if($tab["name"] == $active_tab) { - $app->tpl->setInclude('content_tpl', $tab["template"]); - $tab["active"] = 1; - $_SESSION["s"]["form"]["tab"] = $tab["name"]; - } else { - $tab["active"] = 0; - } - - $frmTab[] = $tab; - } - - // setze Loop - $app->tpl->setLoop("formTab", $frmTab); - - // Formular action setzen - $app->tpl->setVar('form_action', $this->formDef["action"]); - } - - -} - -?> -- GitLab From 4c3fcd94a5ec8361fe900ff841030ebb014a0029 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 16:34:41 +0200 Subject: [PATCH 076/158] Removed obsolete 3.0.4 theme. This theme does not work with the current version anymore. --- install/lib/installer_base.lib.php | 1 + .../web/themes/default-304/css/central.css | 33 - .../default-304/css/navigation/nav_side.css | 125 -- .../default-304/css/navigation/nav_top.css | 116 -- .../default-304/css/patches/central.css | 37 - .../default-304/css/print/print_100.css | 31 - .../themes/default-304/css/screen/basemod.css | 124 -- .../css/screen/basemod_2col_left_seo.css | 48 - .../themes/default-304/css/screen/content.css | 203 ---- .../default-304/css/screen/content_ispc.css | 1045 ----------------- .../css/screen/jquery-ui-custom.css | 7 - .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 182 -> 0 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 124 -> 0 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 123 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 119 -> 0 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 3457 -> 0 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 104 -> 0 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 88 -> 0 bytes .../images/ui-icons_217bc0_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_469bdd_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 5355 -> 0 bytes .../redmond/jquery-ui-1.8.16.custom.css | 444 ------- .../themes/default-304/css/screen/tipsy.css | 25 - .../css/screen/uni-form-generic.css | 136 --- .../default-304/css/screen/uni-form.css | 131 --- .../default-304/icons/device_sprite.png | Bin 10582 -> 0 bytes .../themes/default-304/icons/flags_sprite.png | Bin 88755 -> 0 bytes .../themes/default-304/icons/x12/accept.png | Bin 231 -> 0 bytes .../default-304/icons/x12/accept_blue.png | Bin 484 -> 0 bytes .../default-304/icons/x12/accept_green.png | Bin 250 -> 0 bytes .../icons/x12/arrow_2_left_round.png | Bin 322 -> 0 bytes .../icons/x12/arrow_2_right_round.png | Bin 425 -> 0 bytes .../icons/x12/arrow_left_blue_round.png | Bin 479 -> 0 bytes .../icons/x12/arrow_right_blue_round.png | Bin 479 -> 0 bytes .../themes/default-304/icons/x12/article.png | Bin 255 -> 0 bytes .../default-304/icons/x12/article_text.png | Bin 155 -> 0 bytes .../default-304/icons/x12/bar_graph.png | Bin 205 -> 0 bytes .../themes/default-304/icons/x12/burst.png | Bin 471 -> 0 bytes .../themes/default-304/icons/x12/calendar.png | Bin 138 -> 0 bytes .../default-304/icons/x12/calendar2.png | Bin 247 -> 0 bytes .../themes/default-304/icons/x12/cancel.png | Bin 218 -> 0 bytes .../default-304/icons/x12/cancel_round.png | Bin 440 -> 0 bytes .../themes/default-304/icons/x12/clock.png | Bin 473 -> 0 bytes .../web/themes/default-304/icons/x12/code.png | Bin 401 -> 0 bytes .../default-304/icons/x12/comment_blue.png | Bin 404 -> 0 bytes .../themes/default-304/icons/x12/dollar.png | Bin 130 -> 0 bytes .../default-304/icons/x12/double_comment.png | Bin 288 -> 0 bytes .../themes/default-304/icons/x12/download.png | Bin 309 -> 0 bytes .../themes/default-304/icons/x12/envelope.png | Bin 146 -> 0 bytes .../default-304/icons/x12/flag_black.png | Bin 446 -> 0 bytes .../default-304/icons/x12/flag_blue.png | Bin 511 -> 0 bytes .../default-304/icons/x12/flag_green.png | Bin 512 -> 0 bytes .../default-304/icons/x12/flag_orange.png | Bin 485 -> 0 bytes .../themes/default-304/icons/x12/flag_red.png | Bin 497 -> 0 bytes .../default-304/icons/x12/flag_yellow.png | Bin 504 -> 0 bytes .../themes/default-304/icons/x12/folder.png | Bin 311 -> 0 bytes .../web/themes/default-304/icons/x12/info.png | Bin 446 -> 0 bytes .../web/themes/default-304/icons/x12/link.png | Bin 148 -> 0 bytes .../web/themes/default-304/icons/x12/lock.png | Bin 209 -> 0 bytes .../themes/default-304/icons/x12/magnify.png | Bin 461 -> 0 bytes .../themes/default-304/icons/x12/minus.png | Bin 121 -> 0 bytes .../default-304/icons/x12/minus_round.png | Bin 392 -> 0 bytes .../themes/default-304/icons/x12/money.png | Bin 264 -> 0 bytes .../web/themes/default-304/icons/x12/new.png | Bin 122 -> 0 bytes .../themes/default-304/icons/x12/pencil.png | Bin 301 -> 0 bytes .../themes/default-304/icons/x12/pictures.png | Bin 224 -> 0 bytes .../web/themes/default-304/icons/x12/plus.png | Bin 194 -> 0 bytes .../themes/default-304/icons/x12/printer.png | Bin 233 -> 0 bytes .../default-304/icons/x12/question_blue.png | Bin 487 -> 0 bytes .../themes/default-304/icons/x12/refresh.png | Bin 265 -> 0 bytes .../web/themes/default-304/icons/x12/rss.png | Bin 286 -> 0 bytes .../default-304/icons/x12/rss_round.png | Bin 428 -> 0 bytes .../default-304/icons/x12/security_green.png | Bin 218 -> 0 bytes .../default-304/icons/x12/security_orange.png | Bin 207 -> 0 bytes .../default-304/icons/x12/security_red.png | Bin 202 -> 0 bytes .../web/themes/default-304/icons/x12/star.png | Bin 526 -> 0 bytes .../default-304/icons/x12/star_blue.png | Bin 457 -> 0 bytes .../web/themes/default-304/icons/x12/stop.png | Bin 271 -> 0 bytes .../default-304/icons/x12/stop_round.png | Bin 445 -> 0 bytes .../themes/default-304/icons/x12/upload.png | Bin 271 -> 0 bytes .../themes/default-304/icons/x12/world.png | Bin 567 -> 0 bytes .../themes/default-304/icons/x12/world2.png | Bin 611 -> 0 bytes .../default-304/icons/x16-list/accept.png | Bin 202 -> 0 bytes .../icons/x16-list/accept_blue.png | Bin 466 -> 0 bytes .../icons/x16-list/accept_green.png | Bin 296 -> 0 bytes .../icons/x16-list/arrow_2_left_round.png | Bin 435 -> 0 bytes .../icons/x16-list/arrow_2_right_round.png | Bin 428 -> 0 bytes .../icons/x16-list/arrow_left_blue_round.png | Bin 434 -> 0 bytes .../icons/x16-list/arrow_right_blue_round.png | Bin 436 -> 0 bytes .../default-304/icons/x16-list/article.png | Bin 361 -> 0 bytes .../icons/x16-list/article_text.png | Bin 383 -> 0 bytes .../default-304/icons/x16-list/bar_graph.png | Bin 260 -> 0 bytes .../default-304/icons/x16-list/burst.png | Bin 534 -> 0 bytes .../default-304/icons/x16-list/calendar.png | Bin 335 -> 0 bytes .../default-304/icons/x16-list/calendar2.png | Bin 259 -> 0 bytes .../default-304/icons/x16-list/cancel.png | Bin 228 -> 0 bytes .../icons/x16-list/cancel_round.png | Bin 461 -> 0 bytes .../default-304/icons/x16-list/clock.png | Bin 419 -> 0 bytes .../default-304/icons/x16-list/code.png | Bin 577 -> 0 bytes .../icons/x16-list/comment_blue.png | Bin 328 -> 0 bytes .../default-304/icons/x16-list/dollar.png | Bin 136 -> 0 bytes .../icons/x16-list/double_comment.png | Bin 302 -> 0 bytes .../default-304/icons/x16-list/download.png | Bin 275 -> 0 bytes .../default-304/icons/x16-list/envelope.png | Bin 242 -> 0 bytes .../default-304/icons/x16-list/flag_black.png | Bin 580 -> 0 bytes .../default-304/icons/x16-list/flag_blue.png | Bin 681 -> 0 bytes .../default-304/icons/x16-list/flag_green.png | Bin 684 -> 0 bytes .../icons/x16-list/flag_orange.png | Bin 647 -> 0 bytes .../default-304/icons/x16-list/flag_red.png | Bin 674 -> 0 bytes .../icons/x16-list/flag_yellow.png | Bin 480 -> 0 bytes .../default-304/icons/x16-list/folder.png | Bin 383 -> 0 bytes .../default-304/icons/x16-list/info.png | Bin 432 -> 0 bytes .../default-304/icons/x16-list/link.png | Bin 218 -> 0 bytes .../default-304/icons/x16-list/lock.png | Bin 246 -> 0 bytes .../default-304/icons/x16-list/magnify.png | Bin 446 -> 0 bytes .../default-304/icons/x16-list/minus.png | Bin 123 -> 0 bytes .../icons/x16-list/minus_round.png | Bin 346 -> 0 bytes .../default-304/icons/x16-list/money.png | Bin 328 -> 0 bytes .../themes/default-304/icons/x16-list/new.png | Bin 200 -> 0 bytes .../default-304/icons/x16-list/pencil.png | Bin 212 -> 0 bytes .../default-304/icons/x16-list/pictures.png | Bin 255 -> 0 bytes .../default-304/icons/x16-list/plus.png | Bin 197 -> 0 bytes .../default-304/icons/x16-list/printer.png | Bin 271 -> 0 bytes .../icons/x16-list/question_blue.png | Bin 468 -> 0 bytes .../default-304/icons/x16-list/refresh.png | Bin 150 -> 0 bytes .../themes/default-304/icons/x16-list/rss.png | Bin 243 -> 0 bytes .../default-304/icons/x16-list/rss_round.png | Bin 417 -> 0 bytes .../icons/x16-list/security_green.png | Bin 210 -> 0 bytes .../icons/x16-list/security_orange.png | Bin 215 -> 0 bytes .../icons/x16-list/security_red.png | Bin 221 -> 0 bytes .../default-304/icons/x16-list/star.png | Bin 511 -> 0 bytes .../default-304/icons/x16-list/star_blue.png | Bin 455 -> 0 bytes .../default-304/icons/x16-list/stop.png | Bin 366 -> 0 bytes .../default-304/icons/x16-list/stop_round.png | Bin 436 -> 0 bytes .../default-304/icons/x16-list/upload.png | Bin 265 -> 0 bytes .../default-304/icons/x16-list/world.png | Bin 490 -> 0 bytes .../default-304/icons/x16-list/world2.png | Bin 750 -> 0 bytes .../default-304/icons/x16/address_book.png | Bin 681 -> 0 bytes .../icons/x16/address_book__arrow.png | Bin 732 -> 0 bytes .../icons/x16/address_book__exclamation.png | Bin 767 -> 0 bytes .../icons/x16/address_book__minus.png | Bin 700 -> 0 bytes .../icons/x16/address_book__pencil.png | Bin 763 -> 0 bytes .../icons/x16/address_book__plus.png | Bin 737 -> 0 bytes .../icons/x16/address_book_blue.png | Bin 685 -> 0 bytes .../themes/default-304/icons/x16/arrow.png | Bin 531 -> 0 bytes .../default-304/icons/x16/arrow_000_small.png | Bin 267 -> 0 bytes .../default-304/icons/x16/arrow_045.png | Bin 505 -> 0 bytes .../default-304/icons/x16/arrow_045_small.png | Bin 266 -> 0 bytes .../default-304/icons/x16/arrow_090.png | Bin 512 -> 0 bytes .../default-304/icons/x16/arrow_090_small.png | Bin 256 -> 0 bytes .../default-304/icons/x16/arrow_135.png | Bin 531 -> 0 bytes .../default-304/icons/x16/arrow_135_small.png | Bin 269 -> 0 bytes .../default-304/icons/x16/arrow_180.png | Bin 540 -> 0 bytes .../default-304/icons/x16/arrow_180_small.png | Bin 261 -> 0 bytes .../default-304/icons/x16/arrow_225.png | Bin 529 -> 0 bytes .../default-304/icons/x16/arrow_225_small.png | Bin 272 -> 0 bytes .../default-304/icons/x16/arrow_270.png | Bin 526 -> 0 bytes .../default-304/icons/x16/arrow_270_small.png | Bin 263 -> 0 bytes .../default-304/icons/x16/arrow_315.png | Bin 495 -> 0 bytes .../default-304/icons/x16/arrow_315_small.png | Bin 271 -> 0 bytes .../default-304/icons/x16/arrow_circle.png | Bin 702 -> 0 bytes .../icons/x16/arrow_circle_135.png | Bin 780 -> 0 bytes .../icons/x16/arrow_circle_225.png | Bin 758 -> 0 bytes .../icons/x16/arrow_circle_315.png | Bin 764 -> 0 bytes .../icons/x16/arrow_circle_double.png | Bin 778 -> 0 bytes .../icons/x16/arrow_circle_double_135.png | Bin 802 -> 0 bytes .../default-304/icons/x16/arrow_skip.png | Bin 553 -> 0 bytes .../default-304/icons/x16/arrow_skip_090.png | Bin 515 -> 0 bytes .../default-304/icons/x16/arrow_skip_180.png | Bin 554 -> 0 bytes .../default-304/icons/x16/arrow_skip_270.png | Bin 524 -> 0 bytes .../default-304/icons/x16/arrow_stop.png | Bin 608 -> 0 bytes .../default-304/icons/x16/arrow_stop_090.png | Bin 558 -> 0 bytes .../default-304/icons/x16/arrow_stop_180.png | Bin 615 -> 0 bytes .../default-304/icons/x16/arrow_stop_270.png | Bin 584 -> 0 bytes .../default-304/icons/x16/auction_hammer.png | Bin 568 -> 0 bytes .../icons/x16/auction_hammer__arrow.png | Bin 678 -> 0 bytes .../icons/x16/auction_hammer__exclamation.png | Bin 716 -> 0 bytes .../icons/x16/auction_hammer__minus.png | Bin 597 -> 0 bytes .../icons/x16/auction_hammer__pencil.png | Bin 655 -> 0 bytes .../icons/x16/auction_hammer__plus.png | Bin 638 -> 0 bytes .../icons/x16/auction_hammer_gavel.png | Bin 584 -> 0 bytes .../themes/default-304/icons/x16/balloon.png | Bin 561 -> 0 bytes .../default-304/icons/x16/balloon__arrow.png | Bin 669 -> 0 bytes .../icons/x16/balloon__exclamation.png | Bin 682 -> 0 bytes .../default-304/icons/x16/balloon__minus.png | Bin 605 -> 0 bytes .../default-304/icons/x16/balloon__pencil.png | Bin 662 -> 0 bytes .../default-304/icons/x16/balloon__plus.png | Bin 640 -> 0 bytes .../default-304/icons/x16/balloon_left.png | Bin 560 -> 0 bytes .../default-304/icons/x16/balloon_small.png | Bin 348 -> 0 bytes .../icons/x16/balloon_small_left.png | Bin 350 -> 0 bytes .../themes/default-304/icons/x16/balloons.png | Bin 586 -> 0 bytes .../default-304/icons/x16/balloons_arrow.png | Bin 716 -> 0 bytes .../icons/x16/balloons_exclamation.png | Bin 755 -> 0 bytes .../default-304/icons/x16/balloons_minus.png | Bin 637 -> 0 bytes .../default-304/icons/x16/balloons_pencil.png | Bin 702 -> 0 bytes .../default-304/icons/x16/balloons_plus.png | Bin 680 -> 0 bytes .../themes/default-304/icons/x16/bandaid.png | Bin 711 -> 0 bytes .../default-304/icons/x16/bandaid_arrow.png | Bin 802 -> 0 bytes .../icons/x16/bandaid_exclamation.png | Bin 829 -> 0 bytes .../default-304/icons/x16/bandaid_minus.png | Bin 739 -> 0 bytes .../default-304/icons/x16/bandaid_pencil.png | Bin 777 -> 0 bytes .../default-304/icons/x16/bandaid_plus.png | Bin 776 -> 0 bytes .../default-304/icons/x16/bandaid_small.png | Bin 350 -> 0 bytes .../web/themes/default-304/icons/x16/bank.png | Bin 579 -> 0 bytes .../default-304/icons/x16/bank_arrow.png | Bin 718 -> 0 bytes .../icons/x16/bank_exclamation.png | Bin 759 -> 0 bytes .../default-304/icons/x16/bank_minus.png | Bin 648 -> 0 bytes .../default-304/icons/x16/bank_pencil.png | Bin 707 -> 0 bytes .../default-304/icons/x16/bank_plus.png | Bin 695 -> 0 bytes .../web/themes/default-304/icons/x16/bell.png | Bin 696 -> 0 bytes .../default-304/icons/x16/bell__arrow.png | Bin 816 -> 0 bytes .../icons/x16/bell__exclamation.png | Bin 802 -> 0 bytes .../default-304/icons/x16/bell__minus.png | Bin 732 -> 0 bytes .../default-304/icons/x16/bell__pencil.png | Bin 824 -> 0 bytes .../default-304/icons/x16/bell__plus.png | Bin 772 -> 0 bytes .../default-304/icons/x16/bell_disable.png | Bin 497 -> 0 bytes .../web/themes/default-304/icons/x16/bin.png | Bin 654 -> 0 bytes .../default-304/icons/x16/bin__arrow.png | Bin 746 -> 0 bytes .../icons/x16/bin__exclamation.png | Bin 750 -> 0 bytes .../default-304/icons/x16/bin__minus.png | Bin 697 -> 0 bytes .../default-304/icons/x16/bin__pencil.png | Bin 769 -> 0 bytes .../default-304/icons/x16/bin__plus.png | Bin 729 -> 0 bytes .../themes/default-304/icons/x16/bin_full.png | Bin 809 -> 0 bytes .../default-304/icons/x16/binocular.png | Bin 397 -> 0 bytes .../default-304/icons/x16/binocular_arrow.png | Bin 563 -> 0 bytes .../icons/x16/binocular_exclamation.png | Bin 616 -> 0 bytes .../default-304/icons/x16/binocular_minus.png | Bin 469 -> 0 bytes .../icons/x16/binocular_pencil.png | Bin 558 -> 0 bytes .../default-304/icons/x16/binocular_plus.png | Bin 530 -> 0 bytes .../web/themes/default-304/icons/x16/blog.png | Bin 513 -> 0 bytes .../default-304/icons/x16/blog__arrow.png | Bin 634 -> 0 bytes .../icons/x16/blog__exclamation.png | Bin 658 -> 0 bytes .../default-304/icons/x16/blog__minus.png | Bin 570 -> 0 bytes .../default-304/icons/x16/blog__pencil.png | Bin 647 -> 0 bytes .../default-304/icons/x16/blog__plus.png | Bin 608 -> 0 bytes .../default-304/icons/x16/blog_blue.png | Bin 517 -> 0 bytes .../themes/default-304/icons/x16/blogs.png | Bin 556 -> 0 bytes .../default-304/icons/x16/blogs_arrow.png | Bin 665 -> 0 bytes .../icons/x16/blogs_exclamation.png | Bin 702 -> 0 bytes .../default-304/icons/x16/blogs_minus.png | Bin 593 -> 0 bytes .../default-304/icons/x16/blogs_pencil.png | Bin 653 -> 0 bytes .../default-304/icons/x16/blogs_plus.png | Bin 641 -> 0 bytes .../default-304/icons/x16/blogs_stack.png | Bin 545 -> 0 bytes .../web/themes/default-304/icons/x16/book.png | Bin 391 -> 0 bytes .../default-304/icons/x16/book__arrow.png | Bin 524 -> 0 bytes .../icons/x16/book__exclamation.png | Bin 594 -> 0 bytes .../default-304/icons/x16/book__minus.png | Bin 471 -> 0 bytes .../default-304/icons/x16/book__pencil.png | Bin 598 -> 0 bytes .../default-304/icons/x16/book__plus.png | Bin 494 -> 0 bytes .../default-304/icons/x16/book_brown.png | Bin 383 -> 0 bytes .../default-304/icons/x16/book_small.png | Bin 280 -> 0 bytes .../icons/x16/book_small_brown.png | Bin 275 -> 0 bytes .../themes/default-304/icons/x16/bookmark.png | Bin 500 -> 0 bytes .../default-304/icons/x16/bookmark__arrow.png | Bin 616 -> 0 bytes .../icons/x16/bookmark__exclamation.png | Bin 677 -> 0 bytes .../default-304/icons/x16/bookmark__minus.png | Bin 526 -> 0 bytes .../icons/x16/bookmark__pencil.png | Bin 627 -> 0 bytes .../default-304/icons/x16/bookmark__plus.png | Bin 586 -> 0 bytes .../default-304/icons/x16/bookmark__small.png | Bin 263 -> 0 bytes .../default-304/icons/x16/bookmark_book.png | Bin 520 -> 0 bytes .../icons/x16/bookmark_book_arrow.png | Bin 621 -> 0 bytes .../icons/x16/bookmark_book_exclamation.png | Bin 666 -> 0 bytes .../icons/x16/bookmark_book_minus.png | Bin 576 -> 0 bytes .../icons/x16/bookmark_book_pencil.png | Bin 689 -> 0 bytes .../icons/x16/bookmark_book_plus.png | Bin 603 -> 0 bytes .../icons/x16/bookmark_document.png | Bin 599 -> 0 bytes .../icons/x16/bookmark_document_arrow.png | Bin 678 -> 0 bytes .../x16/bookmark_document_exclamation.png | Bin 719 -> 0 bytes .../icons/x16/bookmark_document_minus.png | Bin 627 -> 0 bytes .../icons/x16/bookmark_document_pencil.png | Bin 727 -> 0 bytes .../icons/x16/bookmark_document_plus.png | Bin 660 -> 0 bytes .../default-304/icons/x16/bookmark_folder.png | Bin 601 -> 0 bytes .../icons/x16/bookmark_folder_arrow.png | Bin 729 -> 0 bytes .../icons/x16/bookmark_folder_exclamation.png | Bin 754 -> 0 bytes .../icons/x16/bookmark_folder_minus.png | Bin 656 -> 0 bytes .../icons/x16/bookmark_folder_pencil.png | Bin 727 -> 0 bytes .../icons/x16/bookmark_folder_plus.png | Bin 710 -> 0 bytes .../themes/default-304/icons/x16/books.png | Bin 498 -> 0 bytes .../default-304/icons/x16/books__arrow.png | Bin 604 -> 0 bytes .../icons/x16/books__exclamation.png | Bin 642 -> 0 bytes .../default-304/icons/x16/books__minus.png | Bin 535 -> 0 bytes .../default-304/icons/x16/books__pencil.png | Bin 626 -> 0 bytes .../default-304/icons/x16/books__plus.png | Bin 579 -> 0 bytes .../default-304/icons/x16/books_brown.png | Bin 508 -> 0 bytes .../default-304/icons/x16/books_stack.png | Bin 446 -> 0 bytes .../web/themes/default-304/icons/x16/box.png | Bin 463 -> 0 bytes .../default-304/icons/x16/box__arrow.png | Bin 598 -> 0 bytes .../icons/x16/box__exclamation.png | Bin 651 -> 0 bytes .../default-304/icons/x16/box__minus.png | Bin 518 -> 0 bytes .../default-304/icons/x16/box__pencil.png | Bin 604 -> 0 bytes .../default-304/icons/x16/box__plus.png | Bin 571 -> 0 bytes .../default-304/icons/x16/box_label.png | Bin 537 -> 0 bytes .../default-304/icons/x16/briefcase.png | Bin 463 -> 0 bytes .../default-304/icons/x16/briefcase_arrow.png | Bin 584 -> 0 bytes .../icons/x16/briefcase_exclamation.png | Bin 636 -> 0 bytes .../default-304/icons/x16/briefcase_minus.png | Bin 516 -> 0 bytes .../icons/x16/briefcase_pencil.png | Bin 598 -> 0 bytes .../default-304/icons/x16/briefcase_plus.png | Bin 555 -> 0 bytes .../themes/default-304/icons/x16/broom.png | Bin 708 -> 0 bytes .../default-304/icons/x16/broom_arrow.png | Bin 776 -> 0 bytes .../icons/x16/broom_exclamation.png | Bin 785 -> 0 bytes .../default-304/icons/x16/broom_minus.png | Bin 720 -> 0 bytes .../default-304/icons/x16/broom_pencil.png | Bin 799 -> 0 bytes .../default-304/icons/x16/broom_plus.png | Bin 755 -> 0 bytes .../default-304/icons/x16/calculator.png | Bin 443 -> 0 bytes .../icons/x16/calculator_arrow.png | Bin 597 -> 0 bytes .../icons/x16/calculator_exclamation.png | Bin 615 -> 0 bytes .../icons/x16/calculator_minus.png | Bin 535 -> 0 bytes .../icons/x16/calculator_pencil.png | Bin 626 -> 0 bytes .../default-304/icons/x16/calculator_plus.png | Bin 562 -> 0 bytes .../themes/default-304/icons/x16/calendar.png | Bin 415 -> 0 bytes .../default-304/icons/x16/calendar__arrow.png | Bin 554 -> 0 bytes .../icons/x16/calendar__exclamation.png | Bin 613 -> 0 bytes .../default-304/icons/x16/calendar__minus.png | Bin 456 -> 0 bytes .../icons/x16/calendar__pencil.png | Bin 561 -> 0 bytes .../default-304/icons/x16/calendar__plus.png | Bin 528 -> 0 bytes .../default-304/icons/x16/calendar_day.png | Bin 489 -> 0 bytes .../default-304/icons/x16/calendar_month.png | Bin 507 -> 0 bytes .../themes/default-304/icons/x16/camera.png | Bin 612 -> 0 bytes .../default-304/icons/x16/camera__arrow.png | Bin 695 -> 0 bytes .../icons/x16/camera__exclamation.png | Bin 722 -> 0 bytes .../default-304/icons/x16/camera__minus.png | Bin 629 -> 0 bytes .../default-304/icons/x16/camera__pencil.png | Bin 666 -> 0 bytes .../default-304/icons/x16/camera__plus.png | Bin 671 -> 0 bytes .../default-304/icons/x16/camera_black.png | Bin 538 -> 0 bytes .../default-304/icons/x16/camera_small.png | Bin 315 -> 0 bytes .../icons/x16/camera_small_black.png | Bin 272 -> 0 bytes .../web/themes/default-304/icons/x16/card.png | Bin 333 -> 0 bytes .../default-304/icons/x16/card__arrow.png | Bin 481 -> 0 bytes .../icons/x16/card__exclamation.png | Bin 546 -> 0 bytes .../default-304/icons/x16/card__minus.png | Bin 371 -> 0 bytes .../default-304/icons/x16/card__pencil.png | Bin 494 -> 0 bytes .../default-304/icons/x16/card__plus.png | Bin 440 -> 0 bytes .../default-304/icons/x16/card_address.png | Bin 483 -> 0 bytes .../default-304/icons/x16/card_small.png | Bin 226 -> 0 bytes .../themes/default-304/icons/x16/cards.png | Bin 407 -> 0 bytes .../default-304/icons/x16/cards__arrow.png | Bin 528 -> 0 bytes .../icons/x16/cards__exclamation.png | Bin 593 -> 0 bytes .../default-304/icons/x16/cards__minus.png | Bin 449 -> 0 bytes .../default-304/icons/x16/cards__pencil.png | Bin 554 -> 0 bytes .../default-304/icons/x16/cards__plus.png | Bin 490 -> 0 bytes .../default-304/icons/x16/cards_address.png | Bin 553 -> 0 bytes .../default-304/icons/x16/cards_stack.png | Bin 375 -> 0 bytes .../themes/default-304/icons/x16/cassette.png | Bin 398 -> 0 bytes .../default-304/icons/x16/cassette_arrow.png | Bin 527 -> 0 bytes .../icons/x16/cassette_exclamation.png | Bin 578 -> 0 bytes .../default-304/icons/x16/cassette_minus.png | Bin 440 -> 0 bytes .../default-304/icons/x16/cassette_pencil.png | Bin 524 -> 0 bytes .../default-304/icons/x16/cassette_plus.png | Bin 490 -> 0 bytes .../default-304/icons/x16/cassette_small.png | Bin 192 -> 0 bytes .../themes/default-304/icons/x16/chain.png | Bin 358 -> 0 bytes .../default-304/icons/x16/chain_arrow.png | Bin 533 -> 0 bytes .../icons/x16/chain_exclamation.png | Bin 584 -> 0 bytes .../default-304/icons/x16/chain_minus.png | Bin 398 -> 0 bytes .../default-304/icons/x16/chain_pencil.png | Bin 520 -> 0 bytes .../default-304/icons/x16/chain_plus.png | Bin 474 -> 0 bytes .../default-304/icons/x16/chain_small.png | Bin 214 -> 0 bytes .../default-304/icons/x16/chain_unchain.png | Bin 515 -> 0 bytes .../default-304/icons/x16/clipboard.png | Bin 440 -> 0 bytes .../icons/x16/clipboard__arrow.png | Bin 569 -> 0 bytes .../icons/x16/clipboard__exclamation.png | Bin 621 -> 0 bytes .../icons/x16/clipboard__minus.png | Bin 489 -> 0 bytes .../icons/x16/clipboard__pencil.png | Bin 594 -> 0 bytes .../default-304/icons/x16/clipboard__plus.png | Bin 549 -> 0 bytes .../default-304/icons/x16/clipboard_empty.png | Bin 492 -> 0 bytes .../default-304/icons/x16/clipboard_text.png | Bin 476 -> 0 bytes .../themes/default-304/icons/x16/clock.png | Bin 603 -> 0 bytes .../default-304/icons/x16/clock__arrow.png | Bin 694 -> 0 bytes .../icons/x16/clock__exclamation.png | Bin 736 -> 0 bytes .../default-304/icons/x16/clock__minus.png | Bin 648 -> 0 bytes .../default-304/icons/x16/clock__pencil.png | Bin 685 -> 0 bytes .../default-304/icons/x16/clock__plus.png | Bin 674 -> 0 bytes .../default-304/icons/x16/clock_fill.png | Bin 628 -> 0 bytes .../default-304/icons/x16/clock_frame.png | Bin 749 -> 0 bytes .../default-304/icons/x16/clock_small.png | Bin 308 -> 0 bytes .../themes/default-304/icons/x16/color.png | Bin 725 -> 0 bytes .../default-304/icons/x16/color_arrow.png | Bin 777 -> 0 bytes .../icons/x16/color_exclamation.png | Bin 793 -> 0 bytes .../default-304/icons/x16/color_minus.png | Bin 733 -> 0 bytes .../default-304/icons/x16/color_pencil.png | Bin 817 -> 0 bytes .../default-304/icons/x16/color_plus.png | Bin 762 -> 0 bytes .../default-304/icons/x16/color_small.png | Bin 411 -> 0 bytes .../themes/default-304/icons/x16/contrast.png | Bin 631 -> 0 bytes .../default-304/icons/x16/contrast__arrow.png | Bin 706 -> 0 bytes .../icons/x16/contrast__exclamation.png | Bin 748 -> 0 bytes .../default-304/icons/x16/contrast__minus.png | Bin 658 -> 0 bytes .../icons/x16/contrast__pencil.png | Bin 744 -> 0 bytes .../default-304/icons/x16/contrast__plus.png | Bin 691 -> 0 bytes .../default-304/icons/x16/contrast_low.png | Bin 647 -> 0 bytes .../default-304/icons/x16/contrast_small.png | Bin 340 -> 0 bytes .../icons/x16/contrast_small_low.png | Bin 362 -> 0 bytes .../themes/default-304/icons/x16/cross.png | Bin 426 -> 0 bytes .../default-304/icons/x16/cross_circle.png | Bin 610 -> 0 bytes .../icons/x16/cross_circle_frame.png | Bin 747 -> 0 bytes .../default-304/icons/x16/cross_shield.png | Bin 667 -> 0 bytes .../default-304/icons/x16/cross_small.png | Bin 205 -> 0 bytes .../icons/x16/cross_small_circle.png | Bin 251 -> 0 bytes .../themes/default-304/icons/x16/crown.png | Bin 645 -> 0 bytes .../default-304/icons/x16/crown__arrow.png | Bin 696 -> 0 bytes .../icons/x16/crown__exclamation.png | Bin 719 -> 0 bytes .../default-304/icons/x16/crown__minus.png | Bin 662 -> 0 bytes .../default-304/icons/x16/crown__pencil.png | Bin 718 -> 0 bytes .../default-304/icons/x16/crown__plus.png | Bin 685 -> 0 bytes .../default-304/icons/x16/crown_bronze.png | Bin 643 -> 0 bytes .../default-304/icons/x16/crown_silver.png | Bin 621 -> 0 bytes .../themes/default-304/icons/x16/database.png | Bin 399 -> 0 bytes .../default-304/icons/x16/database_arrow.png | Bin 523 -> 0 bytes .../icons/x16/database_exclamation.png | Bin 592 -> 0 bytes .../default-304/icons/x16/database_minus.png | Bin 456 -> 0 bytes .../default-304/icons/x16/database_pencil.png | Bin 567 -> 0 bytes .../default-304/icons/x16/database_plus.png | Bin 498 -> 0 bytes .../default-304/icons/x16/database_small.png | Bin 287 -> 0 bytes .../default-304/icons/x16/databases.png | Bin 457 -> 0 bytes .../default-304/icons/x16/databases_arrow.png | Bin 579 -> 0 bytes .../icons/x16/databases_exclamation.png | Bin 630 -> 0 bytes .../default-304/icons/x16/databases_minus.png | Bin 498 -> 0 bytes .../icons/x16/databases_pencil.png | Bin 570 -> 0 bytes .../default-304/icons/x16/databases_plus.png | Bin 548 -> 0 bytes .../web/themes/default-304/icons/x16/disc.png | Bin 756 -> 0 bytes .../default-304/icons/x16/disc_arrow.png | Bin 811 -> 0 bytes .../icons/x16/disc_exclamation.png | Bin 834 -> 0 bytes .../default-304/icons/x16/disc_minus.png | Bin 782 -> 0 bytes .../default-304/icons/x16/disc_pencil.png | Bin 814 -> 0 bytes .../default-304/icons/x16/disc_plus.png | Bin 797 -> 0 bytes .../default-304/icons/x16/disc_small.png | Bin 390 -> 0 bytes .../themes/default-304/icons/x16/discs.png | Bin 699 -> 0 bytes .../default-304/icons/x16/discs_arrow.png | Bin 818 -> 0 bytes .../icons/x16/discs_exclamation.png | Bin 830 -> 0 bytes .../default-304/icons/x16/discs_minus.png | Bin 739 -> 0 bytes .../default-304/icons/x16/discs_pencil.png | Bin 784 -> 0 bytes .../default-304/icons/x16/discs_plus.png | Bin 781 -> 0 bytes .../web/themes/default-304/icons/x16/disk.png | Bin 485 -> 0 bytes .../default-304/icons/x16/disk__arrow.png | Bin 623 -> 0 bytes .../icons/x16/disk__exclamation.png | Bin 686 -> 0 bytes .../default-304/icons/x16/disk__minus.png | Bin 544 -> 0 bytes .../default-304/icons/x16/disk__pencil.png | Bin 636 -> 0 bytes .../default-304/icons/x16/disk__plus.png | Bin 597 -> 0 bytes .../default-304/icons/x16/disk_black.png | Bin 408 -> 0 bytes .../default-304/icons/x16/disk_small.png | Bin 324 -> 0 bytes .../icons/x16/disk_small_black.png | Bin 295 -> 0 bytes .../themes/default-304/icons/x16/disks.png | Bin 502 -> 0 bytes .../default-304/icons/x16/disks__arrow.png | Bin 621 -> 0 bytes .../icons/x16/disks__exclamation.png | Bin 652 -> 0 bytes .../default-304/icons/x16/disks__minus.png | Bin 541 -> 0 bytes .../default-304/icons/x16/disks__pencil.png | Bin 607 -> 0 bytes .../default-304/icons/x16/disks__plus.png | Bin 594 -> 0 bytes .../default-304/icons/x16/disks_black.png | Bin 429 -> 0 bytes .../themes/default-304/icons/x16/document.png | Bin 465 -> 0 bytes .../default-304/icons/x16/document__arrow.png | Bin 591 -> 0 bytes .../icons/x16/document__exclamation.png | Bin 634 -> 0 bytes .../default-304/icons/x16/document__minus.png | Bin 508 -> 0 bytes .../icons/x16/document__pencil.png | Bin 605 -> 0 bytes .../default-304/icons/x16/document__plus.png | Bin 555 -> 0 bytes .../icons/x16/document_horizontal.png | Bin 390 -> 0 bytes .../icons/x16/document_horizontal_text.png | Bin 505 -> 0 bytes .../default-304/icons/x16/document_music.png | Bin 581 -> 0 bytes .../icons/x16/document_music_playlist.png | Bin 599 -> 0 bytes .../default-304/icons/x16/document_shred.png | Bin 594 -> 0 bytes .../default-304/icons/x16/document_small.png | Bin 291 -> 0 bytes .../default-304/icons/x16/document_text.png | Bin 583 -> 0 bytes .../icons/x16/document_text_image.png | Bin 619 -> 0 bytes .../default-304/icons/x16/document_zipper.png | Bin 534 -> 0 bytes .../default-304/icons/x16/documents.png | Bin 514 -> 0 bytes .../default-304/icons/x16/documents_arrow.png | Bin 633 -> 0 bytes .../icons/x16/documents_exclamation.png | Bin 669 -> 0 bytes .../default-304/icons/x16/documents_minus.png | Bin 549 -> 0 bytes .../icons/x16/documents_pencil.png | Bin 617 -> 0 bytes .../default-304/icons/x16/documents_plus.png | Bin 601 -> 0 bytes .../default-304/icons/x16/documents_stack.png | Bin 499 -> 0 bytes .../default-304/icons/x16/documents_text.png | Bin 606 -> 0 bytes .../web/themes/default-304/icons/x16/door.png | Bin 471 -> 0 bytes .../default-304/icons/x16/door_arrow.png | Bin 609 -> 0 bytes .../icons/x16/door_exclamation.png | Bin 606 -> 0 bytes .../default-304/icons/x16/door_minus.png | Bin 535 -> 0 bytes .../default-304/icons/x16/door_pencil.png | Bin 637 -> 0 bytes .../default-304/icons/x16/door_plus.png | Bin 574 -> 0 bytes .../themes/default-304/icons/x16/drawer.png | Bin 631 -> 0 bytes .../default-304/icons/x16/drawer_arrow.png | Bin 737 -> 0 bytes .../icons/x16/drawer_exclamation.png | Bin 724 -> 0 bytes .../default-304/icons/x16/drawer_minus.png | Bin 658 -> 0 bytes .../default-304/icons/x16/drawer_pencil.png | Bin 749 -> 0 bytes .../default-304/icons/x16/drawer_plus.png | Bin 710 -> 0 bytes .../themes/default-304/icons/x16/drill.png | Bin 637 -> 0 bytes .../default-304/icons/x16/drill_arrow.png | Bin 764 -> 0 bytes .../icons/x16/drill_exclamation.png | Bin 798 -> 0 bytes .../default-304/icons/x16/drill_minus.png | Bin 675 -> 0 bytes .../default-304/icons/x16/drill_pencil.png | Bin 737 -> 0 bytes .../default-304/icons/x16/drill_plus.png | Bin 726 -> 0 bytes .../themes/default-304/icons/x16/envelope.png | Bin 445 -> 0 bytes .../default-304/icons/x16/envelope_arrow.png | Bin 570 -> 0 bytes .../icons/x16/envelope_exclamation.png | Bin 593 -> 0 bytes .../default-304/icons/x16/envelope_minus.png | Bin 498 -> 0 bytes .../default-304/icons/x16/envelope_pencil.png | Bin 603 -> 0 bytes .../default-304/icons/x16/envelope_plus.png | Bin 540 -> 0 bytes .../default-304/icons/x16/equalizer.png | Bin 425 -> 0 bytes .../default-304/icons/x16/equalizer_arrow.png | Bin 573 -> 0 bytes .../icons/x16/equalizer_exclamation.png | Bin 610 -> 0 bytes .../default-304/icons/x16/equalizer_minus.png | Bin 471 -> 0 bytes .../icons/x16/equalizer_pencil.png | Bin 577 -> 0 bytes .../default-304/icons/x16/equalizer_plus.png | Bin 535 -> 0 bytes .../themes/default-304/icons/x16/eraser.png | Bin 638 -> 0 bytes .../default-304/icons/x16/eraser_arrow.png | Bin 729 -> 0 bytes .../icons/x16/eraser_exclamation.png | Bin 735 -> 0 bytes .../default-304/icons/x16/eraser_minus.png | Bin 659 -> 0 bytes .../default-304/icons/x16/eraser_pencil.png | Bin 779 -> 0 bytes .../default-304/icons/x16/eraser_plus.png | Bin 709 -> 0 bytes .../default-304/icons/x16/exclamation.png | Bin 559 -> 0 bytes .../icons/x16/exclamation_frame.png | Bin 537 -> 0 bytes .../icons/x16/exclamation_shield.png | Bin 697 -> 0 bytes .../icons/x16/exclamation_small.png | Bin 327 -> 0 bytes .../web/themes/default-304/icons/x16/feed.png | Bin 649 -> 0 bytes .../default-304/icons/x16/feed__arrow.png | Bin 710 -> 0 bytes .../icons/x16/feed__exclamation.png | Bin 716 -> 0 bytes .../default-304/icons/x16/feed__minus.png | Bin 662 -> 0 bytes .../default-304/icons/x16/feed__pencil.png | Bin 753 -> 0 bytes .../default-304/icons/x16/feed__plus.png | Bin 701 -> 0 bytes .../default-304/icons/x16/feed_balloon.png | Bin 683 -> 0 bytes .../default-304/icons/x16/feed_small.png | Bin 365 -> 0 bytes .../web/themes/default-304/icons/x16/film.png | Bin 613 -> 0 bytes .../default-304/icons/x16/film_arrow.png | Bin 718 -> 0 bytes .../icons/x16/film_exclamation.png | Bin 750 -> 0 bytes .../default-304/icons/x16/film_minus.png | Bin 656 -> 0 bytes .../default-304/icons/x16/film_pencil.png | Bin 715 -> 0 bytes .../default-304/icons/x16/film_plus.png | Bin 700 -> 0 bytes .../default-304/icons/x16/film_small.png | Bin 299 -> 0 bytes .../themes/default-304/icons/x16/films.png | Bin 554 -> 0 bytes .../default-304/icons/x16/films_arrow.png | Bin 658 -> 0 bytes .../icons/x16/films_exclamation.png | Bin 709 -> 0 bytes .../default-304/icons/x16/films_minus.png | Bin 580 -> 0 bytes .../default-304/icons/x16/films_pencil.png | Bin 668 -> 0 bytes .../default-304/icons/x16/films_plus.png | Bin 625 -> 0 bytes .../web/themes/default-304/icons/x16/flag.png | Bin 652 -> 0 bytes .../default-304/icons/x16/flag_arrow.png | Bin 755 -> 0 bytes .../icons/x16/flag_exclamation.png | Bin 796 -> 0 bytes .../default-304/icons/x16/flag_minus.png | Bin 674 -> 0 bytes .../default-304/icons/x16/flag_pencil.png | Bin 735 -> 0 bytes .../default-304/icons/x16/flag_plus.png | Bin 729 -> 0 bytes .../themes/default-304/icons/x16/folder.png | Bin 438 -> 0 bytes .../default-304/icons/x16/folder__arrow.png | Bin 592 -> 0 bytes .../icons/x16/folder__exclamation.png | Bin 596 -> 0 bytes .../default-304/icons/x16/folder__minus.png | Bin 500 -> 0 bytes .../default-304/icons/x16/folder__pencil.png | Bin 577 -> 0 bytes .../default-304/icons/x16/folder__plus.png | Bin 535 -> 0 bytes .../default-304/icons/x16/folder_open.png | Bin 639 -> 0 bytes .../icons/x16/folder_open_document.png | Bin 654 -> 0 bytes .../icons/x16/folder_open_document_music.png | Bin 720 -> 0 bytes .../folder_open_document_music_playlist.png | Bin 736 -> 0 bytes .../icons/x16/folder_open_document_text.png | Bin 706 -> 0 bytes .../icons/x16/folder_open_film.png | Bin 710 -> 0 bytes .../icons/x16/folder_open_image.png | Bin 762 -> 0 bytes .../default-304/icons/x16/folder_shred.png | Bin 578 -> 0 bytes .../default-304/icons/x16/folder_small.png | Bin 308 -> 0 bytes .../default-304/icons/x16/folder_zipper.png | Bin 569 -> 0 bytes .../themes/default-304/icons/x16/folders.png | Bin 522 -> 0 bytes .../default-304/icons/x16/folders_arrow.png | Bin 625 -> 0 bytes .../icons/x16/folders_exclamation.png | Bin 653 -> 0 bytes .../default-304/icons/x16/folders_minus.png | Bin 564 -> 0 bytes .../default-304/icons/x16/folders_pencil.png | Bin 639 -> 0 bytes .../default-304/icons/x16/folders_plus.png | Bin 612 -> 0 bytes .../default-304/icons/x16/folders_stack.png | Bin 502 -> 0 bytes .../themes/default-304/icons/x16/funnel.png | Bin 537 -> 0 bytes .../default-304/icons/x16/funnel_arrow.png | Bin 656 -> 0 bytes .../icons/x16/funnel_exclamation.png | Bin 706 -> 0 bytes .../default-304/icons/x16/funnel_minus.png | Bin 579 -> 0 bytes .../default-304/icons/x16/funnel_pencil.png | Bin 662 -> 0 bytes .../default-304/icons/x16/funnel_plus.png | Bin 624 -> 0 bytes .../default-304/icons/x16/funnel_small.png | Bin 304 -> 0 bytes .../web/themes/default-304/icons/x16/gear.png | Bin 590 -> 0 bytes .../default-304/icons/x16/gear__arrow.png | Bin 704 -> 0 bytes .../icons/x16/gear__exclamation.png | Bin 758 -> 0 bytes .../default-304/icons/x16/gear__minus.png | Bin 654 -> 0 bytes .../default-304/icons/x16/gear__pencil.png | Bin 703 -> 0 bytes .../default-304/icons/x16/gear__plus.png | Bin 687 -> 0 bytes .../default-304/icons/x16/gear_disable.png | Bin 497 -> 0 bytes .../default-304/icons/x16/gear_small.png | Bin 336 -> 0 bytes .../themes/default-304/icons/x16/hammer.png | Bin 506 -> 0 bytes .../default-304/icons/x16/hammer__arrow.png | Bin 671 -> 0 bytes .../icons/x16/hammer__exclamation.png | Bin 709 -> 0 bytes .../default-304/icons/x16/hammer__minus.png | Bin 556 -> 0 bytes .../default-304/icons/x16/hammer__pencil.png | Bin 628 -> 0 bytes .../default-304/icons/x16/hammer__plus.png | Bin 618 -> 0 bytes .../default-304/icons/x16/hammer_left.png | Bin 554 -> 0 bytes .../icons/x16/hammer_screwdriver.png | Bin 715 -> 0 bytes .../themes/default-304/icons/x16/heart.png | Bin 630 -> 0 bytes .../default-304/icons/x16/heart__arrow.png | Bin 732 -> 0 bytes .../icons/x16/heart__exclamation.png | Bin 767 -> 0 bytes .../default-304/icons/x16/heart__minus.png | Bin 656 -> 0 bytes .../default-304/icons/x16/heart__pencil.png | Bin 718 -> 0 bytes .../default-304/icons/x16/heart__plus.png | Bin 700 -> 0 bytes .../default-304/icons/x16/heart_break.png | Bin 697 -> 0 bytes .../default-304/icons/x16/heart_empty.png | Bin 514 -> 0 bytes .../default-304/icons/x16/heart_half.png | Bin 721 -> 0 bytes .../default-304/icons/x16/heart_small.png | Bin 294 -> 0 bytes .../icons/x16/heart_small_empty.png | Bin 252 -> 0 bytes .../icons/x16/heart_small_half.png | Bin 321 -> 0 bytes .../web/themes/default-304/icons/x16/home.png | Bin 626 -> 0 bytes .../default-304/icons/x16/home_arrow.png | Bin 719 -> 0 bytes .../icons/x16/home_exclamation.png | Bin 773 -> 0 bytes .../default-304/icons/x16/home_minus.png | Bin 658 -> 0 bytes .../default-304/icons/x16/home_pencil.png | Bin 716 -> 0 bytes .../default-304/icons/x16/home_plus.png | Bin 703 -> 0 bytes .../default-304/icons/x16/home_small.png | Bin 320 -> 0 bytes .../themes/default-304/icons/x16/image.png | Bin 523 -> 0 bytes .../default-304/icons/x16/image_arrow.png | Bin 620 -> 0 bytes .../icons/x16/image_exclamation.png | Bin 652 -> 0 bytes .../default-304/icons/x16/image_minus.png | Bin 553 -> 0 bytes .../default-304/icons/x16/image_pencil.png | Bin 648 -> 0 bytes .../default-304/icons/x16/image_plus.png | Bin 606 -> 0 bytes .../default-304/icons/x16/image_resize.png | Bin 503 -> 0 bytes .../icons/x16/image_resize_actual.png | Bin 532 -> 0 bytes .../default-304/icons/x16/image_small.png | Bin 288 -> 0 bytes .../icons/x16/image_small_sunset.png | Bin 276 -> 0 bytes .../default-304/icons/x16/image_sunset.png | Bin 481 -> 0 bytes .../themes/default-304/icons/x16/images.png | Bin 604 -> 0 bytes .../default-304/icons/x16/images_arrow.png | Bin 670 -> 0 bytes .../icons/x16/images_exclamation.png | Bin 703 -> 0 bytes .../default-304/icons/x16/images_minus.png | Bin 625 -> 0 bytes .../default-304/icons/x16/images_pencil.png | Bin 678 -> 0 bytes .../default-304/icons/x16/images_plus.png | Bin 653 -> 0 bytes .../default-304/icons/x16/images_stack.png | Bin 547 -> 0 bytes .../themes/default-304/icons/x16/inbox.png | Bin 425 -> 0 bytes .../default-304/icons/x16/inbox_arrow.png | Bin 548 -> 0 bytes .../icons/x16/inbox_exclamation.png | Bin 614 -> 0 bytes .../default-304/icons/x16/inbox_minus.png | Bin 463 -> 0 bytes .../default-304/icons/x16/inbox_pencil.png | Bin 562 -> 0 bytes .../default-304/icons/x16/inbox_plus.png | Bin 515 -> 0 bytes .../default-304/icons/x16/information.png | Bin 636 -> 0 bytes .../icons/x16/information_frame.png | Bin 771 -> 0 bytes .../icons/x16/information_shield.png | Bin 701 -> 0 bytes .../icons/x16/information_small.png | Bin 265 -> 0 bytes .../web/themes/default-304/icons/x16/key.png | Bin 577 -> 0 bytes .../default-304/icons/x16/key__arrow.png | Bin 715 -> 0 bytes .../icons/x16/key__exclamation.png | Bin 759 -> 0 bytes .../default-304/icons/x16/key__minus.png | Bin 653 -> 0 bytes .../default-304/icons/x16/key__pencil.png | Bin 718 -> 0 bytes .../default-304/icons/x16/key__plus.png | Bin 704 -> 0 bytes .../default-304/icons/x16/key_disable.png | Bin 452 -> 0 bytes .../themes/default-304/icons/x16/layout.png | Bin 246 -> 0 bytes .../themes/default-304/icons/x16/layout_2.png | Bin 308 -> 0 bytes .../default-304/icons/x16/layout_2_equal.png | Bin 296 -> 0 bytes .../themes/default-304/icons/x16/layout_3.png | Bin 278 -> 0 bytes .../default-304/icons/x16/layout_3_mix.png | Bin 336 -> 0 bytes .../default-304/icons/x16/layout_header.png | Bin 257 -> 0 bytes .../default-304/icons/x16/layout_header_2.png | Bin 324 -> 0 bytes .../icons/x16/layout_header_2_equal.png | Bin 313 -> 0 bytes .../default-304/icons/x16/layout_header_3.png | Bin 295 -> 0 bytes .../icons/x16/layout_header_3_mix.png | Bin 354 -> 0 bytes .../icons/x16/layout_header_footer.png | Bin 270 -> 0 bytes .../icons/x16/layout_header_footer_2.png | Bin 318 -> 0 bytes .../x16/layout_header_footer_2_equal.png | Bin 318 -> 0 bytes .../icons/x16/layout_header_footer_3.png | Bin 292 -> 0 bytes .../icons/x16/layout_header_footer_3_mix.png | Bin 346 -> 0 bytes .../default-304/icons/x16/layout_join.png | Bin 365 -> 0 bytes .../default-304/icons/x16/layout_split.png | Bin 437 -> 0 bytes .../themes/default-304/icons/x16/lifebuoy.png | Bin 671 -> 0 bytes .../default-304/icons/x16/lifebuoy_arrow.png | Bin 784 -> 0 bytes .../icons/x16/lifebuoy_exclamation.png | Bin 830 -> 0 bytes .../default-304/icons/x16/lifebuoy_minus.png | Bin 716 -> 0 bytes .../default-304/icons/x16/lifebuoy_pencil.png | Bin 771 -> 0 bytes .../default-304/icons/x16/lifebuoy_plus.png | Bin 755 -> 0 bytes .../default-304/icons/x16/light_bulb.png | Bin 660 -> 0 bytes .../icons/x16/light_bulb__arrow.png | Bin 732 -> 0 bytes .../icons/x16/light_bulb__exclamation.png | Bin 751 -> 0 bytes .../icons/x16/light_bulb__minus.png | Bin 691 -> 0 bytes .../icons/x16/light_bulb__pencil.png | Bin 722 -> 0 bytes .../icons/x16/light_bulb__plus.png | Bin 712 -> 0 bytes .../default-304/icons/x16/light_bulb_off.png | Bin 690 -> 0 bytes .../icons/x16/light_bulb_small.png | Bin 247 -> 0 bytes .../icons/x16/light_bulb_small_off.png | Bin 251 -> 0 bytes .../default-304/icons/x16/lightning.png | Bin 606 -> 0 bytes .../icons/x16/lightning__arrow.png | Bin 703 -> 0 bytes .../icons/x16/lightning__exclamation.png | Bin 714 -> 0 bytes .../icons/x16/lightning__minus.png | Bin 643 -> 0 bytes .../icons/x16/lightning__pencil.png | Bin 690 -> 0 bytes .../default-304/icons/x16/lightning__plus.png | Bin 679 -> 0 bytes .../icons/x16/lightning_disable.png | Bin 553 -> 0 bytes .../default-304/icons/x16/lightning_small.png | Bin 304 -> 0 bytes .../themes/default-304/icons/x16/loading.gif | Bin 1460 -> 0 bytes .../web/themes/default-304/icons/x16/lock.png | Bin 560 -> 0 bytes .../default-304/icons/x16/lock__arrow.png | Bin 656 -> 0 bytes .../icons/x16/lock__exclamation.png | Bin 676 -> 0 bytes .../default-304/icons/x16/lock__minus.png | Bin 597 -> 0 bytes .../default-304/icons/x16/lock__pencil.png | Bin 661 -> 0 bytes .../default-304/icons/x16/lock__plus.png | Bin 638 -> 0 bytes .../default-304/icons/x16/lock_disable.png | Bin 464 -> 0 bytes .../default-304/icons/x16/lock_small.png | Bin 307 -> 0 bytes .../default-304/icons/x16/lock_unlock.png | Bin 575 -> 0 bytes .../themes/default-304/icons/x16/logout.png | Bin 802 -> 0 bytes .../themes/default-304/icons/x16/magnet.png | Bin 580 -> 0 bytes .../default-304/icons/x16/magnet__arrow.png | Bin 705 -> 0 bytes .../icons/x16/magnet__exclamation.png | Bin 771 -> 0 bytes .../default-304/icons/x16/magnet__minus.png | Bin 624 -> 0 bytes .../default-304/icons/x16/magnet__pencil.png | Bin 727 -> 0 bytes .../default-304/icons/x16/magnet__plus.png | Bin 680 -> 0 bytes .../default-304/icons/x16/magnet_disable.png | Bin 468 -> 0 bytes .../default-304/icons/x16/magnet_small.png | Bin 292 -> 0 bytes .../default-304/icons/x16/magnifier.png | Bin 622 -> 0 bytes .../icons/x16/magnifier__arrow.png | Bin 726 -> 0 bytes .../icons/x16/magnifier__exclamation.png | Bin 759 -> 0 bytes .../icons/x16/magnifier__minus.png | Bin 657 -> 0 bytes .../icons/x16/magnifier__pencil.png | Bin 702 -> 0 bytes .../default-304/icons/x16/magnifier__plus.png | Bin 698 -> 0 bytes .../default-304/icons/x16/magnifier_left.png | Bin 634 -> 0 bytes .../icons/x16/magnifier_medium.png | Bin 452 -> 0 bytes .../icons/x16/magnifier_medium_left.png | Bin 455 -> 0 bytes .../default-304/icons/x16/magnifier_small.png | Bin 301 -> 0 bytes .../default-304/icons/x16/magnifier_zoom.png | Bin 700 -> 0 bytes .../icons/x16/magnifier_zoom_actual.png | Bin 709 -> 0 bytes .../icons/x16/magnifier_zoom_fit.png | Bin 687 -> 0 bytes .../icons/x16/magnifier_zoom_out.png | Bin 676 -> 0 bytes .../web/themes/default-304/icons/x16/mail.png | Bin 411 -> 0 bytes .../default-304/icons/x16/mail__arrow.png | Bin 537 -> 0 bytes .../icons/x16/mail__exclamation.png | Bin 596 -> 0 bytes .../default-304/icons/x16/mail__minus.png | Bin 455 -> 0 bytes .../default-304/icons/x16/mail__pencil.png | Bin 550 -> 0 bytes .../default-304/icons/x16/mail__plus.png | Bin 500 -> 0 bytes .../default-304/icons/x16/mail_open.png | Bin 671 -> 0 bytes .../icons/x16/mail_open_document.png | Bin 621 -> 0 bytes .../default-304/icons/x16/mail_open_film.png | Bin 694 -> 0 bytes .../default-304/icons/x16/mail_open_image.png | Bin 678 -> 0 bytes .../default-304/icons/x16/mail_small.png | Bin 230 -> 0 bytes .../themes/default-304/icons/x16/mails.png | Bin 473 -> 0 bytes .../default-304/icons/x16/mails_arrow.png | Bin 573 -> 0 bytes .../icons/x16/mails_exclamation.png | Bin 633 -> 0 bytes .../default-304/icons/x16/mails_minus.png | Bin 517 -> 0 bytes .../default-304/icons/x16/mails_pencil.png | Bin 591 -> 0 bytes .../default-304/icons/x16/mails_plus.png | Bin 550 -> 0 bytes .../default-304/icons/x16/mails_stack.png | Bin 430 -> 0 bytes .../default-304/icons/x16/media_player.png | Bin 595 -> 0 bytes .../icons/x16/media_player__arrow.png | Bin 700 -> 0 bytes .../icons/x16/media_player__exclamation.png | Bin 734 -> 0 bytes .../icons/x16/media_player__minus.png | Bin 641 -> 0 bytes .../icons/x16/media_player__pencil.png | Bin 716 -> 0 bytes .../icons/x16/media_player__plus.png | Bin 682 -> 0 bytes .../icons/x16/media_player_black.png | Bin 513 -> 0 bytes .../icons/x16/media_player_medium.png | Bin 569 -> 0 bytes .../icons/x16/media_player_medium_black.png | Bin 532 -> 0 bytes .../icons/x16/media_player_medium_blue.png | Bin 602 -> 0 bytes .../icons/x16/media_player_medium_green.png | Bin 615 -> 0 bytes .../icons/x16/media_player_medium_pink.png | Bin 614 -> 0 bytes .../icons/x16/media_player_medium_red.png | Bin 588 -> 0 bytes .../icons/x16/media_player_small.png | Bin 420 -> 0 bytes .../icons/x16/media_player_small_blue.png | Bin 449 -> 0 bytes .../icons/x16/media_player_small_green.png | Bin 470 -> 0 bytes .../icons/x16/media_player_small_purple.png | Bin 446 -> 0 bytes .../icons/x16/media_player_small_red.png | Bin 471 -> 0 bytes .../default-304/icons/x16/media_players.png | Bin 669 -> 0 bytes .../icons/x16/media_players_arrow.png | Bin 746 -> 0 bytes .../icons/x16/media_players_exclamation.png | Bin 771 -> 0 bytes .../icons/x16/media_players_minus.png | Bin 689 -> 0 bytes .../icons/x16/media_players_pencil.png | Bin 734 -> 0 bytes .../icons/x16/media_players_plus.png | Bin 722 -> 0 bytes .../default-304/icons/x16/microphone.png | Bin 616 -> 0 bytes .../icons/x16/microphone_arrow.png | Bin 749 -> 0 bytes .../icons/x16/microphone_exclamation.png | Bin 771 -> 0 bytes .../icons/x16/microphone_minus.png | Bin 685 -> 0 bytes .../icons/x16/microphone_pencil.png | Bin 745 -> 0 bytes .../default-304/icons/x16/microphone_plus.png | Bin 723 -> 0 bytes .../themes/default-304/icons/x16/minus.png | Bin 221 -> 0 bytes .../default-304/icons/x16/minus_circle.png | Bin 570 -> 0 bytes .../icons/x16/minus_circle_frame.png | Bin 740 -> 0 bytes .../default-304/icons/x16/minus_shield.png | Bin 646 -> 0 bytes .../default-304/icons/x16/minus_small.png | Bin 138 -> 0 bytes .../icons/x16/minus_small_circle.png | Bin 261 -> 0 bytes .../themes/default-304/icons/x16/music.png | Bin 427 -> 0 bytes .../default-304/icons/x16/music_arrow.png | Bin 593 -> 0 bytes .../icons/x16/music_exclamation.png | Bin 660 -> 0 bytes .../default-304/icons/x16/music_minus.png | Bin 512 -> 0 bytes .../default-304/icons/x16/music_pencil.png | Bin 579 -> 0 bytes .../default-304/icons/x16/music_plus.png | Bin 562 -> 0 bytes .../default-304/icons/x16/music_small.png | Bin 208 -> 0 bytes .../default-304/icons/x16/newspaper.png | Bin 565 -> 0 bytes .../default-304/icons/x16/newspaper_arrow.png | Bin 694 -> 0 bytes .../icons/x16/newspaper_exclamation.png | Bin 705 -> 0 bytes .../default-304/icons/x16/newspaper_minus.png | Bin 615 -> 0 bytes .../icons/x16/newspaper_pencil.png | Bin 685 -> 0 bytes .../default-304/icons/x16/newspaper_plus.png | Bin 671 -> 0 bytes .../default-304/icons/x16/newspapers.png | Bin 596 -> 0 bytes .../icons/x16/newspapers_arrow.png | Bin 698 -> 0 bytes .../icons/x16/newspapers_exclamation.png | Bin 736 -> 0 bytes .../icons/x16/newspapers_minus.png | Bin 648 -> 0 bytes .../icons/x16/newspapers_pencil.png | Bin 707 -> 0 bytes .../default-304/icons/x16/newspapers_plus.png | Bin 686 -> 0 bytes .../themes/default-304/icons/x16/notebook.png | Bin 501 -> 0 bytes .../default-304/icons/x16/notebook_arrow.png | Bin 636 -> 0 bytes .../icons/x16/notebook_exclamation.png | Bin 694 -> 0 bytes .../default-304/icons/x16/notebook_minus.png | Bin 559 -> 0 bytes .../default-304/icons/x16/notebook_pencil.png | Bin 654 -> 0 bytes .../default-304/icons/x16/notebook_plus.png | Bin 619 -> 0 bytes .../default-304/icons/x16/notebooks.png | Bin 588 -> 0 bytes .../default-304/icons/x16/notebooks_arrow.png | Bin 684 -> 0 bytes .../icons/x16/notebooks_exclamation.png | Bin 715 -> 0 bytes .../default-304/icons/x16/notebooks_minus.png | Bin 613 -> 0 bytes .../icons/x16/notebooks_pencil.png | Bin 677 -> 0 bytes .../default-304/icons/x16/notebooks_plus.png | Bin 653 -> 0 bytes .../default-304/icons/x16/paint_can.png | Bin 648 -> 0 bytes .../default-304/icons/x16/paint_can_arrow.png | Bin 734 -> 0 bytes .../icons/x16/paint_can_exclamation.png | Bin 769 -> 0 bytes .../default-304/icons/x16/paint_can_minus.png | Bin 678 -> 0 bytes .../icons/x16/paint_can_pencil.png | Bin 714 -> 0 bytes .../default-304/icons/x16/paint_can_plus.png | Bin 712 -> 0 bytes .../themes/default-304/icons/x16/palette.png | Bin 789 -> 0 bytes .../default-304/icons/x16/palette_arrow.png | Bin 824 -> 0 bytes .../icons/x16/palette_exclamation.png | Bin 846 -> 0 bytes .../default-304/icons/x16/palette_minus.png | Bin 786 -> 0 bytes .../default-304/icons/x16/palette_pencil.png | Bin 819 -> 0 bytes .../default-304/icons/x16/palette_plus.png | Bin 820 -> 0 bytes .../default-304/icons/x16/paper_bag.png | Bin 557 -> 0 bytes .../default-304/icons/x16/paper_bag_arrow.png | Bin 672 -> 0 bytes .../icons/x16/paper_bag_exclamation.png | Bin 682 -> 0 bytes .../default-304/icons/x16/paper_bag_minus.png | Bin 584 -> 0 bytes .../icons/x16/paper_bag_pencil.png | Bin 713 -> 0 bytes .../default-304/icons/x16/paper_bag_plus.png | Bin 643 -> 0 bytes .../web/themes/default-304/icons/x16/pdf.png | Bin 1376 -> 0 bytes .../themes/default-304/icons/x16/pencil.png | Bin 417 -> 0 bytes .../default-304/icons/x16/pencil_arrow.png | Bin 567 -> 0 bytes .../icons/x16/pencil_exclamation.png | Bin 623 -> 0 bytes .../default-304/icons/x16/pencil_minus.png | Bin 463 -> 0 bytes .../default-304/icons/x16/pencil_plus.png | Bin 517 -> 0 bytes .../default-304/icons/x16/pencil_small.png | Bin 245 -> 0 bytes .../default-304/icons/x16/photo_album.png | Bin 690 -> 0 bytes .../icons/x16/photo_album__arrow.png | Bin 732 -> 0 bytes .../icons/x16/photo_album__exclamation.png | Bin 759 -> 0 bytes .../icons/x16/photo_album__minus.png | Bin 689 -> 0 bytes .../icons/x16/photo_album__pencil.png | Bin 749 -> 0 bytes .../icons/x16/photo_album__plus.png | Bin 709 -> 0 bytes .../icons/x16/photo_album_blue.png | Bin 694 -> 0 bytes .../themes/default-304/icons/x16/piano.png | Bin 344 -> 0 bytes .../default-304/icons/x16/piano_arrow.png | Bin 521 -> 0 bytes .../icons/x16/piano_exclamation.png | Bin 562 -> 0 bytes .../default-304/icons/x16/piano_minus.png | Bin 402 -> 0 bytes .../default-304/icons/x16/piano_pencil.png | Bin 525 -> 0 bytes .../default-304/icons/x16/piano_plus.png | Bin 467 -> 0 bytes .../themes/default-304/icons/x16/picture.png | Bin 494 -> 0 bytes .../default-304/icons/x16/picture_arrow.png | Bin 612 -> 0 bytes .../icons/x16/picture_exclamation.png | Bin 627 -> 0 bytes .../default-304/icons/x16/picture_minus.png | Bin 523 -> 0 bytes .../default-304/icons/x16/picture_pencil.png | Bin 626 -> 0 bytes .../default-304/icons/x16/picture_plus.png | Bin 595 -> 0 bytes .../default-304/icons/x16/picture_small.png | Bin 279 -> 0 bytes .../icons/x16/picture_small_sunset.png | Bin 270 -> 0 bytes .../default-304/icons/x16/picture_sunset.png | Bin 474 -> 0 bytes .../themes/default-304/icons/x16/pictures.png | Bin 523 -> 0 bytes .../default-304/icons/x16/pictures_arrow.png | Bin 612 -> 0 bytes .../icons/x16/pictures_exclamation.png | Bin 659 -> 0 bytes .../default-304/icons/x16/pictures_minus.png | Bin 563 -> 0 bytes .../default-304/icons/x16/pictures_pencil.png | Bin 623 -> 0 bytes .../default-304/icons/x16/pictures_plus.png | Bin 592 -> 0 bytes .../web/themes/default-304/icons/x16/pill.png | Bin 495 -> 0 bytes .../default-304/icons/x16/pill_arrow.png | Bin 633 -> 0 bytes .../icons/x16/pill_exclamation.png | Bin 675 -> 0 bytes .../default-304/icons/x16/pill_minus.png | Bin 548 -> 0 bytes .../default-304/icons/x16/pill_pencil.png | Bin 671 -> 0 bytes .../default-304/icons/x16/pill_plus.png | Bin 606 -> 0 bytes .../default-304/icons/x16/pill_small.png | Bin 314 -> 0 bytes .../web/themes/default-304/icons/x16/pin.png | Bin 580 -> 0 bytes .../default-304/icons/x16/pin_arrow.png | Bin 674 -> 0 bytes .../default-304/icons/x16/pin_exclamation.png | Bin 691 -> 0 bytes .../default-304/icons/x16/pin_minus.png | Bin 589 -> 0 bytes .../default-304/icons/x16/pin_pencil.png | Bin 672 -> 0 bytes .../themes/default-304/icons/x16/pin_plus.png | Bin 646 -> 0 bytes .../themes/default-304/icons/x16/pipette.png | Bin 502 -> 0 bytes .../default-304/icons/x16/pipette_arrow.png | Bin 628 -> 0 bytes .../icons/x16/pipette_exclamation.png | Bin 655 -> 0 bytes .../default-304/icons/x16/pipette_minus.png | Bin 540 -> 0 bytes .../default-304/icons/x16/pipette_pencil.png | Bin 628 -> 0 bytes .../default-304/icons/x16/pipette_plus.png | Bin 599 -> 0 bytes .../default-304/icons/x16/playing_card.png | Bin 688 -> 0 bytes .../icons/x16/playing_card_arrow.png | Bin 758 -> 0 bytes .../icons/x16/playing_card_exclamation.png | Bin 788 -> 0 bytes .../icons/x16/playing_card_minus.png | Bin 714 -> 0 bytes .../icons/x16/playing_card_pencil.png | Bin 769 -> 0 bytes .../icons/x16/playing_card_plus.png | Bin 732 -> 0 bytes .../web/themes/default-304/icons/x16/plug.png | Bin 549 -> 0 bytes .../default-304/icons/x16/plug_arrow.png | Bin 666 -> 0 bytes .../icons/x16/plug_exclamation.png | Bin 701 -> 0 bytes .../default-304/icons/x16/plug_minus.png | Bin 593 -> 0 bytes .../default-304/icons/x16/plug_pencil.png | Bin 678 -> 0 bytes .../default-304/icons/x16/plug_plus.png | Bin 631 -> 0 bytes .../web/themes/default-304/icons/x16/plus.png | Bin 460 -> 0 bytes .../default-304/icons/x16/plus_circle.png | Bin 616 -> 0 bytes .../icons/x16/plus_circle_frame.png | Bin 765 -> 0 bytes .../default-304/icons/x16/plus_shield.png | Bin 683 -> 0 bytes .../default-304/icons/x16/plus_small.png | Bin 212 -> 0 bytes .../icons/x16/plus_small_circle.png | Bin 254 -> 0 bytes .../themes/default-304/icons/x16/printer.png | Bin 665 -> 0 bytes .../default-304/icons/x16/printer__arrow.png | Bin 735 -> 0 bytes .../icons/x16/printer__exclamation.png | Bin 782 -> 0 bytes .../default-304/icons/x16/printer__minus.png | Bin 691 -> 0 bytes .../default-304/icons/x16/printer__pencil.png | Bin 726 -> 0 bytes .../default-304/icons/x16/printer__plus.png | Bin 715 -> 0 bytes .../default-304/icons/x16/printer_empty.png | Bin 493 -> 0 bytes .../default-304/icons/x16/printer_small.png | Bin 327 -> 0 bytes .../themes/default-304/icons/x16/puzzle.png | Bin 681 -> 0 bytes .../default-304/icons/x16/puzzle__arrow.png | Bin 798 -> 0 bytes .../icons/x16/puzzle__exclamation.png | Bin 818 -> 0 bytes .../default-304/icons/x16/puzzle__minus.png | Bin 724 -> 0 bytes .../default-304/icons/x16/puzzle__pencil.png | Bin 798 -> 0 bytes .../default-304/icons/x16/puzzle__plus.png | Bin 758 -> 0 bytes .../default-304/icons/x16/puzzle_disable.png | Bin 594 -> 0 bytes .../themes/default-304/icons/x16/question.png | Bin 668 -> 0 bytes .../default-304/icons/x16/question_frame.png | Bin 794 -> 0 bytes .../default-304/icons/x16/question_shield.png | Bin 723 -> 0 bytes .../default-304/icons/x16/question_small.png | Bin 264 -> 0 bytes .../themes/default-304/icons/x16/receipt.png | Bin 396 -> 0 bytes .../default-304/icons/x16/receipt_arrow.png | Bin 530 -> 0 bytes .../icons/x16/receipt_exclamation.png | Bin 588 -> 0 bytes .../default-304/icons/x16/receipt_minus.png | Bin 468 -> 0 bytes .../default-304/icons/x16/receipt_pencil.png | Bin 583 -> 0 bytes .../default-304/icons/x16/receipt_plus.png | Bin 494 -> 0 bytes .../default-304/icons/x16/receipt_shred.png | Bin 490 -> 0 bytes .../default-304/icons/x16/receipt_text.png | Bin 476 -> 0 bytes .../themes/default-304/icons/x16/receipts.png | Bin 496 -> 0 bytes .../default-304/icons/x16/receipts_arrow.png | Bin 608 -> 0 bytes .../icons/x16/receipts_exclamation.png | Bin 648 -> 0 bytes .../default-304/icons/x16/receipts_minus.png | Bin 524 -> 0 bytes .../default-304/icons/x16/receipts_pencil.png | Bin 631 -> 0 bytes .../default-304/icons/x16/receipts_plus.png | Bin 583 -> 0 bytes .../default-304/icons/x16/receipts_text.png | Bin 555 -> 0 bytes .../themes/default-304/icons/x16/report.png | Bin 467 -> 0 bytes .../default-304/icons/x16/report_arrow.png | Bin 557 -> 0 bytes .../icons/x16/report_exclamation.png | Bin 611 -> 0 bytes .../default-304/icons/x16/report_minus.png | Bin 491 -> 0 bytes .../default-304/icons/x16/report_pencil.png | Bin 578 -> 0 bytes .../default-304/icons/x16/report_plus.png | Bin 534 -> 0 bytes .../themes/default-304/icons/x16/ruler.png | Bin 514 -> 0 bytes .../default-304/icons/x16/ruler__arrow.png | Bin 669 -> 0 bytes .../icons/x16/ruler__exclamation.png | Bin 688 -> 0 bytes .../default-304/icons/x16/ruler__minus.png | Bin 560 -> 0 bytes .../default-304/icons/x16/ruler__pencil.png | Bin 642 -> 0 bytes .../default-304/icons/x16/ruler__plus.png | Bin 627 -> 0 bytes .../default-304/icons/x16/ruler_crop.png | Bin 634 -> 0 bytes .../web/themes/default-304/icons/x16/safe.png | Bin 602 -> 0 bytes .../default-304/icons/x16/safe_arrow.png | Bin 702 -> 0 bytes .../icons/x16/safe_exclamation.png | Bin 709 -> 0 bytes .../default-304/icons/x16/safe_minus.png | Bin 630 -> 0 bytes .../default-304/icons/x16/safe_pencil.png | Bin 712 -> 0 bytes .../default-304/icons/x16/safe_plus.png | Bin 687 -> 0 bytes .../default-304/icons/x16/screwdriver.png | Bin 474 -> 0 bytes .../icons/x16/screwdriver_arrow.png | Bin 634 -> 0 bytes .../icons/x16/screwdriver_exclamation.png | Bin 667 -> 0 bytes .../icons/x16/screwdriver_minus.png | Bin 517 -> 0 bytes .../icons/x16/screwdriver_pencil.png | Bin 613 -> 0 bytes .../icons/x16/screwdriver_plus.png | Bin 589 -> 0 bytes .../themes/default-304/icons/x16/script.png | Bin 427 -> 0 bytes .../default-304/icons/x16/script__arrow.png | Bin 537 -> 0 bytes .../icons/x16/script__exclamation.png | Bin 591 -> 0 bytes .../default-304/icons/x16/script__minus.png | Bin 468 -> 0 bytes .../default-304/icons/x16/script__pencil.png | Bin 591 -> 0 bytes .../default-304/icons/x16/script__plus.png | Bin 509 -> 0 bytes .../default-304/icons/x16/script_code.png | Bin 494 -> 0 bytes .../themes/default-304/icons/x16/scripts.png | Bin 518 -> 0 bytes .../default-304/icons/x16/scripts__arrow.png | Bin 616 -> 0 bytes .../icons/x16/scripts__exclamation.png | Bin 648 -> 0 bytes .../default-304/icons/x16/scripts__minus.png | Bin 535 -> 0 bytes .../default-304/icons/x16/scripts__pencil.png | Bin 622 -> 0 bytes .../default-304/icons/x16/scripts__plus.png | Bin 589 -> 0 bytes .../default-304/icons/x16/scripts_code.png | Bin 582 -> 0 bytes .../themes/default-304/icons/x16/shield.png | Bin 658 -> 0 bytes .../default-304/icons/x16/shield__arrow.png | Bin 742 -> 0 bytes .../icons/x16/shield__exclamation.png | Bin 802 -> 0 bytes .../default-304/icons/x16/shield__minus.png | Bin 702 -> 0 bytes .../default-304/icons/x16/shield__pencil.png | Bin 777 -> 0 bytes .../default-304/icons/x16/shield__plus.png | Bin 730 -> 0 bytes .../default-304/icons/x16/shield_disable.png | Bin 513 -> 0 bytes .../themes/default-304/icons/x16/slash.png | Bin 609 -> 0 bytes .../default-304/icons/x16/slash_small.png | Bin 213 -> 0 bytes .../themes/default-304/icons/x16/socket.png | Bin 456 -> 0 bytes .../default-304/icons/x16/socket_arrow.png | Bin 600 -> 0 bytes .../icons/x16/socket_exclamation.png | Bin 652 -> 0 bytes .../default-304/icons/x16/socket_minus.png | Bin 523 -> 0 bytes .../default-304/icons/x16/socket_pencil.png | Bin 606 -> 0 bytes .../default-304/icons/x16/socket_plus.png | Bin 573 -> 0 bytes .../web/themes/default-304/icons/x16/sort.png | Bin 402 -> 0 bytes .../default-304/icons/x16/sort__arrow.png | Bin 559 -> 0 bytes .../icons/x16/sort__exclamation.png | Bin 633 -> 0 bytes .../default-304/icons/x16/sort__minus.png | Bin 442 -> 0 bytes .../default-304/icons/x16/sort__pencil.png | Bin 574 -> 0 bytes .../default-304/icons/x16/sort__plus.png | Bin 511 -> 0 bytes .../default-304/icons/x16/sort_alphabet.png | Bin 496 -> 0 bytes .../icons/x16/sort_alphabet_descending.png | Bin 493 -> 0 bytes .../default-304/icons/x16/sort_date.png | Bin 445 -> 0 bytes .../icons/x16/sort_date_descending.png | Bin 425 -> 0 bytes .../default-304/icons/x16/sort_number.png | Bin 479 -> 0 bytes .../icons/x16/sort_number_descending.png | Bin 478 -> 0 bytes .../default-304/icons/x16/sort_quantity.png | Bin 432 -> 0 bytes .../icons/x16/sort_quantity_descending.png | Bin 432 -> 0 bytes .../default-304/icons/x16/sort_small.png | Bin 269 -> 0 bytes .../themes/default-304/icons/x16/stamp.png | Bin 585 -> 0 bytes .../default-304/icons/x16/stamp_arrow.png | Bin 697 -> 0 bytes .../icons/x16/stamp_exclamation.png | Bin 725 -> 0 bytes .../default-304/icons/x16/stamp_minus.png | Bin 631 -> 0 bytes .../default-304/icons/x16/stamp_pencil.png | Bin 707 -> 0 bytes .../default-304/icons/x16/stamp_plus.png | Bin 671 -> 0 bytes .../web/themes/default-304/icons/x16/star.png | Bin 640 -> 0 bytes .../default-304/icons/x16/star__arrow.png | Bin 728 -> 0 bytes .../icons/x16/star__exclamation.png | Bin 737 -> 0 bytes .../default-304/icons/x16/star__minus.png | Bin 676 -> 0 bytes .../default-304/icons/x16/star__pencil.png | Bin 735 -> 0 bytes .../default-304/icons/x16/star__plus.png | Bin 705 -> 0 bytes .../default-304/icons/x16/star_empty.png | Bin 523 -> 0 bytes .../default-304/icons/x16/star_half.png | Bin 730 -> 0 bytes .../default-304/icons/x16/star_small.png | Bin 310 -> 0 bytes .../icons/x16/star_small_empty.png | Bin 281 -> 0 bytes .../default-304/icons/x16/star_small_half.png | Bin 352 -> 0 bytes .../default-304/icons/x16/sticky_note.png | Bin 423 -> 0 bytes .../icons/x16/sticky_note__arrow.png | Bin 561 -> 0 bytes .../icons/x16/sticky_note__exclamation.png | Bin 597 -> 0 bytes .../icons/x16/sticky_note__minus.png | Bin 466 -> 0 bytes .../icons/x16/sticky_note__pencil.png | Bin 564 -> 0 bytes .../icons/x16/sticky_note__plus.png | Bin 530 -> 0 bytes .../default-304/icons/x16/sticky_note_pin.png | Bin 480 -> 0 bytes .../icons/x16/sticky_note_shred.png | Bin 551 -> 0 bytes .../icons/x16/sticky_note_small.png | Bin 281 -> 0 bytes .../icons/x16/sticky_note_small_pin.png | Bin 310 -> 0 bytes .../icons/x16/sticky_note_text.png | Bin 518 -> 0 bytes .../default-304/icons/x16/sticky_notes.png | Bin 466 -> 0 bytes .../icons/x16/sticky_notes__arrow.png | Bin 594 -> 0 bytes .../icons/x16/sticky_notes__exclamation.png | Bin 627 -> 0 bytes .../icons/x16/sticky_notes__minus.png | Bin 503 -> 0 bytes .../icons/x16/sticky_notes__pencil.png | Bin 577 -> 0 bytes .../icons/x16/sticky_notes__plus.png | Bin 565 -> 0 bytes .../icons/x16/sticky_notes_pin.png | Bin 559 -> 0 bytes .../icons/x16/sticky_notes_stack.png | Bin 477 -> 0 bytes .../icons/x16/sticky_notes_text.png | Bin 547 -> 0 bytes .../themes/default-304/icons/x16/switch.png | Bin 516 -> 0 bytes .../default-304/icons/x16/switch_arrow.png | Bin 629 -> 0 bytes .../icons/x16/switch_exclamation.png | Bin 647 -> 0 bytes .../default-304/icons/x16/switch_minus.png | Bin 558 -> 0 bytes .../default-304/icons/x16/switch_pencil.png | Bin 633 -> 0 bytes .../default-304/icons/x16/switch_plus.png | Bin 610 -> 0 bytes .../themes/default-304/icons/x16/table.png | Bin 504 -> 0 bytes .../default-304/icons/x16/table__arrow.png | Bin 612 -> 0 bytes .../icons/x16/table__exclamation.png | Bin 667 -> 0 bytes .../default-304/icons/x16/table__minus.png | Bin 536 -> 0 bytes .../default-304/icons/x16/table__pencil.png | Bin 626 -> 0 bytes .../default-304/icons/x16/table__plus.png | Bin 588 -> 0 bytes .../default-304/icons/x16/table_delete.png | Bin 589 -> 0 bytes .../icons/x16/table_delete_column.png | Bin 610 -> 0 bytes .../default-304/icons/x16/table_insert.png | Bin 573 -> 0 bytes .../icons/x16/table_insert_column.png | Bin 599 -> 0 bytes .../themes/default-304/icons/x16/tables.png | Bin 603 -> 0 bytes .../default-304/icons/x16/tables_arrow.png | Bin 684 -> 0 bytes .../icons/x16/tables_exclamation.png | Bin 712 -> 0 bytes .../default-304/icons/x16/tables_minus.png | Bin 620 -> 0 bytes .../default-304/icons/x16/tables_pencil.png | Bin 693 -> 0 bytes .../default-304/icons/x16/tables_plus.png | Bin 667 -> 0 bytes .../default-304/icons/x16/tables_stacks.png | Bin 490 -> 0 bytes .../web/themes/default-304/icons/x16/tag.png | Bin 596 -> 0 bytes .../default-304/icons/x16/tag__arrow.png | Bin 690 -> 0 bytes .../icons/x16/tag__exclamation.png | Bin 747 -> 0 bytes .../default-304/icons/x16/tag__minus.png | Bin 621 -> 0 bytes .../default-304/icons/x16/tag__pencil.png | Bin 714 -> 0 bytes .../default-304/icons/x16/tag__plus.png | Bin 652 -> 0 bytes .../default-304/icons/x16/tag_label.png | Bin 626 -> 0 bytes .../default-304/icons/x16/tag_small.png | Bin 306 -> 0 bytes .../web/themes/default-304/icons/x16/tags.png | Bin 573 -> 0 bytes .../default-304/icons/x16/tags__arrow.png | Bin 682 -> 0 bytes .../icons/x16/tags__exclamation.png | Bin 718 -> 0 bytes .../default-304/icons/x16/tags__minus.png | Bin 595 -> 0 bytes .../default-304/icons/x16/tags__pencil.png | Bin 703 -> 0 bytes .../default-304/icons/x16/tags__plus.png | Bin 641 -> 0 bytes .../default-304/icons/x16/tags_label.png | Bin 597 -> 0 bytes .../web/themes/default-304/icons/x16/tick.png | Bin 575 -> 0 bytes .../default-304/icons/x16/tick_circle.png | Bin 630 -> 0 bytes .../icons/x16/tick_circle_frame.png | Bin 786 -> 0 bytes .../default-304/icons/x16/tick_shield.png | Bin 697 -> 0 bytes .../default-304/icons/x16/tick_small.png | Bin 216 -> 0 bytes .../icons/x16/tick_small_circle.png | Bin 258 -> 0 bytes .../themes/default-304/icons/x16/ticket.png | Bin 604 -> 0 bytes .../default-304/icons/x16/ticket_arrow.png | Bin 699 -> 0 bytes .../icons/x16/ticket_exclamation.png | Bin 754 -> 0 bytes .../default-304/icons/x16/ticket_minus.png | Bin 643 -> 0 bytes .../default-304/icons/x16/ticket_pencil.png | Bin 751 -> 0 bytes .../default-304/icons/x16/ticket_plus.png | Bin 674 -> 0 bytes .../default-304/icons/x16/ticket_small.png | Bin 322 -> 0 bytes .../themes/default-304/icons/x16/trophy.png | Bin 790 -> 0 bytes .../default-304/icons/x16/trophy_arrow.png | Bin 881 -> 0 bytes .../icons/x16/trophy_exclamation.png | Bin 914 -> 0 bytes .../default-304/icons/x16/trophy_minus.png | Bin 811 -> 0 bytes .../default-304/icons/x16/trophy_pencil.png | Bin 875 -> 0 bytes .../default-304/icons/x16/trophy_plus.png | Bin 858 -> 0 bytes .../web/themes/default-304/icons/x16/tux.png | Bin 643 -> 0 bytes .../web/themes/default-304/icons/x16/user.png | Bin 688 -> 0 bytes .../themes/default-304/icons/x16/user_add.png | Bin 693 -> 0 bytes .../default-304/icons/x16/user_comment.png | Bin 690 -> 0 bytes .../default-304/icons/x16/user_delete.png | Bin 714 -> 0 bytes .../default-304/icons/x16/user_edit.png | Bin 780 -> 0 bytes .../default-304/icons/x16/user_female.png | Bin 610 -> 0 bytes .../themes/default-304/icons/x16/user_go.png | Bin 740 -> 0 bytes .../default-304/icons/x16/user_gray.png | Bin 653 -> 0 bytes .../default-304/icons/x16/user_green.png | Bin 669 -> 0 bytes .../default-304/icons/x16/user_orange.png | Bin 670 -> 0 bytes .../themes/default-304/icons/x16/user_red.png | Bin 664 -> 0 bytes .../default-304/icons/x16/user_suit.png | Bin 695 -> 0 bytes .../themes/default-304/icons/x16/vcard.png | Bin 486 -> 0 bytes .../default-304/icons/x16/vcard_add.png | Bin 608 -> 0 bytes .../default-304/icons/x16/vcard_delete.png | Bin 598 -> 0 bytes .../default-304/icons/x16/vcard_edit.png | Bin 721 -> 0 bytes .../web/themes/default-304/icons/x16/wall.png | Bin 501 -> 0 bytes .../default-304/icons/x16/wall__arrow.png | Bin 626 -> 0 bytes .../icons/x16/wall__exclamation.png | Bin 667 -> 0 bytes .../default-304/icons/x16/wall__minus.png | Bin 537 -> 0 bytes .../default-304/icons/x16/wall__pencil.png | Bin 633 -> 0 bytes .../default-304/icons/x16/wall__plus.png | Bin 599 -> 0 bytes .../default-304/icons/x16/wall_brick.png | Bin 369 -> 0 bytes .../default-304/icons/x16/wall_disable.png | Bin 304 -> 0 bytes .../default-304/icons/x16/wall_small.png | Bin 337 -> 0 bytes .../icons/x16/wall_small_brick.png | Bin 272 -> 0 bytes .../themes/default-304/icons/x16/wallet.png | Bin 458 -> 0 bytes .../default-304/icons/x16/wallet_arrow.png | Bin 594 -> 0 bytes .../icons/x16/wallet_exclamation.png | Bin 632 -> 0 bytes .../default-304/icons/x16/wallet_minus.png | Bin 490 -> 0 bytes .../default-304/icons/x16/wallet_pencil.png | Bin 562 -> 0 bytes .../default-304/icons/x16/wallet_plus.png | Bin 550 -> 0 bytes .../web/themes/default-304/icons/x16/wand.png | Bin 473 -> 0 bytes .../default-304/icons/x16/wand_arrow.png | Bin 642 -> 0 bytes .../icons/x16/wand_exclamation.png | Bin 674 -> 0 bytes .../default-304/icons/x16/wand_minus.png | Bin 529 -> 0 bytes .../default-304/icons/x16/wand_pencil.png | Bin 598 -> 0 bytes .../default-304/icons/x16/wand_plus.png | Bin 590 -> 0 bytes .../themes/default-304/icons/x16/wrench.png | Bin 643 -> 0 bytes .../default-304/icons/x16/wrench_arrow.png | Bin 785 -> 0 bytes .../icons/x16/wrench_exclamation.png | Bin 832 -> 0 bytes .../default-304/icons/x16/wrench_minus.png | Bin 684 -> 0 bytes .../default-304/icons/x16/wrench_pencil.png | Bin 755 -> 0 bytes .../default-304/icons/x16/wrench_plus.png | Bin 739 -> 0 bytes .../icons/x16/wrench_screwdriver.png | Bin 810 -> 0 bytes .../themes/default-304/icons/x16_sprite.png | Bin 8569 -> 0 bytes .../default-304/icons/x32/calculator.png | Bin 555 -> 0 bytes .../themes/default-304/icons/x32/client.png | Bin 2410 -> 0 bytes .../default-304/icons/x32/dashboard.png | Bin 2025 -> 0 bytes .../web/themes/default-304/icons/x32/dns.png | Bin 2049 -> 0 bytes .../themes/default-304/icons/x32/domain.png | Bin 1518 -> 0 bytes .../themes/default-304/icons/x32/drawer.png | Bin 941 -> 0 bytes .../themes/default-304/icons/x32/email.png | Bin 1503 -> 0 bytes .../web/themes/default-304/icons/x32/help.png | Bin 1950 -> 0 bytes .../themes/default-304/icons/x32/login.png | Bin 2357 -> 0 bytes .../themes/default-304/icons/x32/monitor.png | Bin 1244 -> 0 bytes .../themes/default-304/icons/x32/network.png | Bin 2035 -> 0 bytes .../themes/default-304/icons/x32/server.png | Bin 1440 -> 0 bytes .../themes/default-304/icons/x32/sites.png | Bin 2363 -> 0 bytes .../default-304/icons/x32/state_critical.png | Bin 2394 -> 0 bytes .../default-304/icons/x32/state_error.png | Bin 2200 -> 0 bytes .../default-304/icons/x32/state_info.png | Bin 2175 -> 0 bytes .../themes/default-304/icons/x32/state_ok.png | Bin 1456 -> 0 bytes .../default-304/icons/x32/state_unknown.png | Bin 2753 -> 0 bytes .../default-304/icons/x32/state_warning.png | Bin 1917 -> 0 bytes .../themes/default-304/icons/x32/system.png | Bin 2454 -> 0 bytes .../themes/default-304/icons/x32/tools.png | Bin 2024 -> 0 bytes .../themes/default-304/icons/x32_sprite.png | Bin 37386 -> 0 bytes .../themes/default-304/icons/x64/client.png | Bin 6611 -> 0 bytes .../default-304/icons/x64/dashboard.png | Bin 5945 -> 0 bytes .../web/themes/default-304/icons/x64/dns.png | Bin 5730 -> 0 bytes .../themes/default-304/icons/x64/domain.png | Bin 4177 -> 0 bytes .../themes/default-304/icons/x64/drawer.png | Bin 7236 -> 0 bytes .../themes/default-304/icons/x64/email.png | Bin 4156 -> 0 bytes .../web/themes/default-304/icons/x64/help.png | Bin 6117 -> 0 bytes .../themes/default-304/icons/x64/login.png | Bin 6797 -> 0 bytes .../themes/default-304/icons/x64/monitor.png | Bin 3198 -> 0 bytes .../themes/default-304/icons/x64/network.png | Bin 5546 -> 0 bytes .../themes/default-304/icons/x64/server.png | Bin 3527 -> 0 bytes .../themes/default-304/icons/x64/sites.png | Bin 6904 -> 0 bytes .../themes/default-304/icons/x64/system.png | Bin 7060 -> 0 bytes .../themes/default-304/icons/x64/tools.png | Bin 5721 -> 0 bytes .../web/themes/default-304/images/Thumbs.db | Bin 10752 -> 0 bytes .../themes/default-304/images/ajax-loader.gif | Bin 3208 -> 0 bytes .../default-304/images/buttonHolder_bg.gif | Bin 609 -> 0 bytes .../web/themes/default-304/images/chevron.png | Bin 183 -> 0 bytes .../web/themes/default-304/images/favicon.ico | Bin 1406 -> 0 bytes .../themes/default-304/images/header_bg.png | Bin 308 -> 0 bytes .../themes/default-304/images/header_logo.png | Bin 5872 -> 0 bytes .../default-304/images/lists_tfoot_bg.png | Bin 149 -> 0 bytes .../default-304/images/lists_thead_bg.png | Bin 200 -> 0 bytes .../themes/default-304/images/meter_bg.gif | Bin 80 -> 0 bytes .../themes/default-304/images/screen_bg.png | Bin 90 -> 0 bytes .../web/themes/default-304/ispconfig_version | 1 - interface/web/themes/default-304/licences.txt | 8 - .../templates/admin/firewall_edit.htm | 38 - .../templates/admin/firewall_list.htm | 60 - .../templates/admin/groups_edit.htm | 26 - .../templates/admin/groups_list.htm | 54 - .../templates/admin/iptables_edit.htm | 67 -- .../templates/admin/iptables_list.htm | 73 -- .../templates/admin/language_add.htm | 29 - .../templates/admin/language_complete.htm | 29 - .../templates/admin/language_edit.htm | 29 - .../templates/admin/language_export.htm | 31 - .../templates/admin/language_import.htm | 44 - .../templates/admin/language_list.htm | 47 - .../admin/remote_action_ispcupdate.htm | 33 - .../admin/remote_action_osupdate.htm | 25 - .../templates/admin/remote_user_edit.htm | 47 - .../templates/admin/remote_user_list.htm | 52 - .../admin/server_config_cron_edit.htm | 30 - .../admin/server_config_dns_edit.htm | 38 - .../admin/server_config_fastcgi_edit.htm | 52 - .../admin/server_config_getmail_edit.htm | 22 - .../admin/server_config_jailkit_edit.htm | 34 - .../templates/admin/server_config_list.htm | 40 - .../admin/server_config_mail_edit.htm | 94 -- .../admin/server_config_rescue_edit.htm | 44 - .../admin/server_config_server_edit.htm | 67 -- .../admin/server_config_ufw_edit.htm | 66 -- .../admin/server_config_vlogger_edit.htm | 22 - .../admin/server_config_web_edit.htm | 256 ---- .../templates/admin/server_edit_config.htm | 22 - .../templates/admin/server_edit_services.htm | 70 -- .../templates/admin/server_ip_edit.htm | 50 - .../templates/admin/server_ip_list.htm | 64 - .../templates/admin/server_list.htm | 58 - .../admin/server_php_fastcgi_edit.htm | 26 - .../templates/admin/server_php_fpm_edit.htm | 30 - .../templates/admin/server_php_list.htm | 55 - .../templates/admin/server_php_name_edit.htm | 34 - .../admin/software_package_install.htm | 30 - .../templates/admin/software_package_list.htm | 46 - .../templates/admin/software_repo_edit.htm | 40 - .../templates/admin/software_repo_list.htm | 56 - .../templates/admin/software_update_list.htm | 49 - .../admin/system_config_domains_edit.htm | 33 - .../admin/system_config_mail_edit.htm | 80 -- .../admin/system_config_misc_edit.htm | 38 - .../admin/system_config_sites_edit.htm | 58 - .../templates/admin/tpl_default_basic.htm | 23 - .../templates/admin/users_groups_edit.htm | 30 - .../templates/admin/users_list.htm | 68 -- .../templates/admin/users_user_edit.htm | 73 -- .../templates/client/client_circle_edit.htm | 39 - .../templates/client/client_circle_list.htm | 59 - .../templates/client/client_del.htm | 25 - .../templates/client/client_edit_address.htm | 140 --- .../templates/client/client_edit_limits.htm | 284 ----- .../templates/client/client_message.htm | 39 - .../client/client_template_edit_limits.htm | 230 ---- .../client/client_template_edit_template.htm | 28 - .../templates/client/client_template_list.htm | 56 - .../templates/client/clients_list.htm | 73 -- .../templates/client/domain_edit.htm | 40 - .../templates/client/domain_list.htm | 62 - .../client/reseller_edit_address.htm | 116 -- .../templates/client/reseller_edit_limits.htm | 279 ----- .../templates/client/resellers_list.htm | 68 -- .../templates/dashboard/custom_menu.htm | 9 - .../templates/dashboard/dashboard.htm | 48 - .../templates/dashboard/dashlets/limits.htm | 11 - .../templates/dashboard/dashlets/modules.htm | 10 - .../templates/designer/form_edit.htm | 79 -- .../templates/designer/form_list.htm | 24 - .../templates/designer/form_show.htm | 61 - .../templates/designer/module_edit.htm | 43 - .../templates/designer/module_list.htm | 18 - .../templates/designer/module_nav_edit.htm | 24 - .../designer/module_nav_item_edit.htm | 33 - .../templates/designer/module_show.htm | 31 - .../templates/designer/paging.tpl.htm | 9 - .../default-304/templates/dns/dns_a_edit.htm | 54 - .../default-304/templates/dns/dns_a_list.htm | 88 -- .../templates/dns/dns_aaaa_edit.htm | 54 - .../templates/dns/dns_alias_edit.htm | 38 - .../templates/dns/dns_cname_edit.htm | 38 - .../templates/dns/dns_hinfo_edit.htm | 38 - .../default-304/templates/dns/dns_import.htm | 55 - .../default-304/templates/dns/dns_mx_edit.htm | 42 - .../default-304/templates/dns/dns_ns_edit.htm | 38 - .../templates/dns/dns_ptr_edit.htm | 38 - .../templates/dns/dns_records_edit.htm | 12 - .../default-304/templates/dns/dns_rp_edit.htm | 38 - .../templates/dns/dns_slave_edit.htm | 97 -- .../templates/dns/dns_slave_list.htm | 59 - .../templates/dns/dns_soa_edit.htm | 131 --- .../templates/dns/dns_soa_list.htm | 62 - .../templates/dns/dns_srv_edit.htm | 50 - .../templates/dns/dns_template_edit.htm | 38 - .../templates/dns/dns_template_list.htm | 53 - .../templates/dns/dns_txt_edit.htm | 38 - .../default-304/templates/dns/dns_wizard.htm | 95 -- .../default-304/templates/error.tpl.htm | 8 - .../themes/default-304/templates/form.tpl.htm | 1 - .../default-304/templates/help/faq_edit.htm | 29 - .../help/faq_manage_questions_list.htm | 43 - .../templates/help/faq_sections_edit.htm | 20 - .../templates/help/help_faq_list.htm | 19 - .../templates/help/help_faq_sections_list.htm | 43 - .../templates/help/support_message_edit.htm | 33 - .../templates/help/support_message_list.htm | 53 - .../templates/help/support_message_view.htm | 22 - .../default-304/templates/listpage.tpl.htm | 1 - .../default-304/templates/login/index.htm | 33 - .../templates/login/password_reset.htm | 33 - .../templates/mail/mail_alias_edit.htm | 39 - .../templates/mail/mail_alias_list.htm | 56 - .../templates/mail/mail_aliasdomain_edit.htm | 37 - .../templates/mail/mail_aliasdomain_list.htm | 56 - .../templates/mail/mail_blacklist_edit.htm | 41 - .../templates/mail/mail_blacklist_list.htm | 59 - .../mail/mail_content_filter_edit.htm | 50 - .../mail/mail_content_filter_list.htm | 59 - .../templates/mail/mail_domain_admin_list.htm | 58 - .../mail/mail_domain_catchall_edit.htm | 36 - .../mail/mail_domain_catchall_list.htm | 56 - .../templates/mail/mail_domain_edit.htm | 73 -- .../templates/mail/mail_domain_list.htm | 56 - .../templates/mail/mail_forward_edit.htm | 37 - .../templates/mail/mail_forward_list.htm | 56 - .../templates/mail/mail_get_edit.htm | 60 - .../templates/mail/mail_get_list.htm | 62 - .../templates/mail/mail_mailinglist_edit.htm | 86 -- .../templates/mail/mail_mailinglist_list.htm | 53 - .../mail/mail_relay_recipient_edit.htm | 35 - .../mail/mail_relay_recipient_list.htm | 55 - .../templates/mail/mail_transport_edit.htm | 56 - .../templates/mail/mail_transport_list.htm | 62 - .../mail/mail_user_autoresponder_edit.htm | 44 - .../mail/mail_user_custom_rules_edit.htm | 22 - .../templates/mail/mail_user_filter_edit.htm | 38 - .../templates/mail/mail_user_filter_list.htm | 44 - .../templates/mail/mail_user_list.htm | 66 -- .../templates/mail/mail_user_mailbox_edit.htm | 81 -- .../mail/mail_user_mailfilter_edit.htm | 26 - .../templates/mail/mail_user_stats_list.htm | 53 - .../templates/mail/mail_whitelist_edit.htm | 41 - .../templates/mail/mail_whitelist_list.htm | 59 - .../mail/spamfilter_blacklist_edit.htm | 49 - .../mail/spamfilter_blacklist_list.htm | 62 - .../mail/spamfilter_config_getmail_edit.htm | 22 - .../templates/mail/spamfilter_config_list.htm | 51 - .../mail/spamfilter_config_mail_edit.htm | 66 -- .../mail/spamfilter_config_server_edit.htm | 38 - .../templates/mail/spamfilter_other_edit.htm | 80 -- .../templates/mail/spamfilter_policy_edit.htm | 64 - .../templates/mail/spamfilter_policy_list.htm | 63 - .../mail/spamfilter_quarantine_edit.htm | 44 - .../mail/spamfilter_taglevel_edit.htm | 52 - .../templates/mail/spamfilter_users_edit.htm | 50 - .../templates/mail/spamfilter_users_list.htm | 62 - .../mail/spamfilter_whitelist_edit.htm | 49 - .../mail/spamfilter_whitelist_list.htm | 63 - .../templates/mail/user_quota_stats_list.htm | 52 - .../default-304/templates/mailuser/index.htm | 34 - .../mailuser/mail_user_autoresponder_edit.htm | 37 - .../templates/mailuser/mail_user_cc_edit.htm | 26 - .../mailuser/mail_user_filter_edit.htm | 38 - .../mailuser/mail_user_filter_list.htm | 50 - .../mailuser/mail_user_password_edit.htm | 37 - .../mailuser/mail_user_spamfilter_edit.htm | 28 - .../themes/default-304/templates/main.tpl.htm | 188 --- .../default-304/templates/module.tpl.htm | 41 - .../default-304/templates/module_tree.tpl.htm | 42 - .../templates/monitor/datalog_list.htm | 49 - .../templates/monitor/show_data.htm | 12 - .../templates/monitor/show_log.htm | 25 - .../templates/monitor/show_sys_state.htm | 25 - .../templates/monitor/syslog_list.htm | 56 - .../default-304/templates/sidenav.tpl.htm | 24 - .../templates/sites/aps_install_package.htm | 56 - .../templates/sites/aps_instances_list.htm | 62 - .../sites/aps_packagedetails_show.htm | 139 --- .../templates/sites/aps_packages_list.htm | 50 - .../default-304/templates/sites/cron_edit.htm | 68 -- .../default-304/templates/sites/cron_list.htm | 74 -- .../templates/sites/database_admin_list.htm | 68 -- .../templates/sites/database_edit.htm | 113 -- .../templates/sites/database_list.htm | 66 -- .../sites/database_user_admin_list.htm | 50 - .../templates/sites/database_user_edit.htm | 54 - .../templates/sites/database_user_list.htm | 51 - .../templates/sites/ftp_user_advanced.htm | 50 - .../sites/ftp_user_advanced_client.htm | 22 - .../templates/sites/ftp_user_edit.htm | 54 - .../templates/sites/ftp_user_list.htm | 62 - .../templates/sites/shell_user_advanced.htm | 34 - .../templates/sites/shell_user_edit.htm | 72 -- .../templates/sites/shell_user_list.htm | 59 - .../templates/sites/user_quota_stats_list.htm | 54 - .../templates/sites/web_aliasdomain_edit.htm | 125 -- .../templates/sites/web_aliasdomain_list.htm | 59 - .../templates/sites/web_backup_list.htm | 41 - .../templates/sites/web_domain_admin_list.htm | 61 - .../templates/sites/web_domain_advanced.htm | 146 --- .../templates/sites/web_domain_backup.htm | 32 - .../templates/sites/web_domain_edit.htm | 249 ---- .../templates/sites/web_domain_list.htm | 59 - .../templates/sites/web_domain_redirect.htm | 76 -- .../templates/sites/web_domain_ssl.htm | 68 -- .../templates/sites/web_domain_stats.htm | 37 - .../templates/sites/web_folder_edit.htm | 34 - .../templates/sites/web_folder_list.htm | 58 - .../templates/sites/web_folder_user_edit.htm | 49 - .../templates/sites/web_folder_user_list.htm | 55 - .../templates/sites/web_sites_stats_list.htm | 62 - .../templates/sites/web_subdomain_edit.htm | 112 -- .../templates/sites/web_subdomain_list.htm | 60 - .../sites/web_vhost_subdomain_advanced.htm | 146 --- .../sites/web_vhost_subdomain_backup.htm | 32 - .../sites/web_vhost_subdomain_edit.htm | 208 ---- .../sites/web_vhost_subdomain_list.htm | 60 - .../sites/web_vhost_subdomain_redirect.htm | 76 -- .../sites/web_vhost_subdomain_ssl.htm | 68 -- .../sites/web_vhost_subdomain_stats.htm | 37 - .../templates/sites/webdav_user_edit.htm | 64 - .../templates/sites/webdav_user_list.htm | 59 - .../default-304/templates/tabbed_form.tpl.htm | 27 - .../templates/tools/dns_import_tupa.htm | 56 - .../templates/tools/import_ispconfig.htm | 103 -- .../templates/tools/import_plesk.htm | 74 -- .../default-304/templates/tools/index.htm | 20 - .../templates/tools/interface_settings.htm | 31 - .../default-304/templates/tools/resync.htm | 67 -- .../templates/tools/tpl_default.htm | 37 - .../templates/tools/user_settings.htm | 39 - .../default-304/templates/topnav.tpl.htm | 9 - .../templates/vm/openvz_action.htm | 53 - .../templates/vm/openvz_ip_edit.htm | 46 - .../templates/vm/openvz_ip_list.htm | 58 - .../templates/vm/openvz_ostemplate_edit.htm | 48 - .../templates/vm/openvz_ostemplate_list.htm | 61 - .../vm/openvz_template_advanced_edit.htm | 110 -- .../templates/vm/openvz_template_edit.htm | 74 -- .../templates/vm/openvz_template_list.htm | 52 - .../templates/vm/openvz_vm_advanced_edit.htm | 64 - .../templates/vm/openvz_vm_edit.htm | 107 -- .../templates/vm/openvz_vm_list.htm | 68 -- .../themes/default-304/yaml/!important.txt | 4 - .../web/themes/default-304/yaml/core/base.css | 229 ---- .../themes/default-304/yaml/core/iehacks.css | 310 ----- .../default-304/yaml/core/print_base.css | 120 -- .../default-304/yaml/core/slim_base.css | 50 - .../default-304/yaml/core/slim_iehacks.css | 36 - .../default-304/yaml/core/slim_print_base.css | 21 - .../themes/default-304/yaml/debug/debug.css | 157 --- .../yaml/debug/images/grid_pattern.png | Bin 29833 -> 0 bytes .../yaml/debug/images/warning_iehacks.gif | Bin 2912 -> 0 bytes .../yaml/debug/images/yaml_debug.gif | Bin 2842 -> 0 bytes .../default-304/yaml/navigation/nav_vlist.css | 109 -- .../yaml/patches/patch_layout_draft.css | 29 - .../yaml/patches/patch_nav_vlist.css | 61 - .../yaml/print/print_003_draft.css | 32 - .../yaml/print/print_020_draft.css | 31 - .../yaml/print/print_023_draft.css | 40 - .../yaml/print/print_100_draft.css | 31 - .../yaml/print/print_103_draft.css | 38 - .../yaml/print/print_120_draft.css | 39 - .../yaml/print/print_123_draft.css | 40 - .../default-304/yaml/screen/basemod_draft.css | 70 -- .../yaml/screen/content_default.css | 170 --- 1451 files changed, 1 insertion(+), 17931 deletions(-) delete mode 100644 interface/web/themes/default-304/css/central.css delete mode 100644 interface/web/themes/default-304/css/navigation/nav_side.css delete mode 100644 interface/web/themes/default-304/css/navigation/nav_top.css delete mode 100644 interface/web/themes/default-304/css/patches/central.css delete mode 100644 interface/web/themes/default-304/css/print/print_100.css delete mode 100644 interface/web/themes/default-304/css/screen/basemod.css delete mode 100644 interface/web/themes/default-304/css/screen/basemod_2col_left_seo.css delete mode 100644 interface/web/themes/default-304/css/screen/content.css delete mode 100644 interface/web/themes/default-304/css/screen/content_ispc.css delete mode 100644 interface/web/themes/default-304/css/screen/jquery-ui-custom.css delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-bg_flat_55_fbec88_40x100.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-bg_glass_85_dfeffc_1x400.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-icons_217bc0_256x240.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-icons_2e83ff_256x240.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-icons_469bdd_256x240.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-icons_6da8d5_256x240.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-icons_cd0a0a_256x240.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-icons_d8e7f3_256x240.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/images/ui-icons_f9bd01_256x240.png delete mode 100644 interface/web/themes/default-304/css/screen/redmond/jquery-ui-1.8.16.custom.css delete mode 100644 interface/web/themes/default-304/css/screen/tipsy.css delete mode 100644 interface/web/themes/default-304/css/screen/uni-form-generic.css delete mode 100644 interface/web/themes/default-304/css/screen/uni-form.css delete mode 100644 interface/web/themes/default-304/icons/device_sprite.png delete mode 100644 interface/web/themes/default-304/icons/flags_sprite.png delete mode 100644 interface/web/themes/default-304/icons/x12/accept.png delete mode 100644 interface/web/themes/default-304/icons/x12/accept_blue.png delete mode 100644 interface/web/themes/default-304/icons/x12/accept_green.png delete mode 100644 interface/web/themes/default-304/icons/x12/arrow_2_left_round.png delete mode 100644 interface/web/themes/default-304/icons/x12/arrow_2_right_round.png delete mode 100644 interface/web/themes/default-304/icons/x12/arrow_left_blue_round.png delete mode 100644 interface/web/themes/default-304/icons/x12/arrow_right_blue_round.png delete mode 100644 interface/web/themes/default-304/icons/x12/article.png delete mode 100644 interface/web/themes/default-304/icons/x12/article_text.png delete mode 100644 interface/web/themes/default-304/icons/x12/bar_graph.png delete mode 100644 interface/web/themes/default-304/icons/x12/burst.png delete mode 100644 interface/web/themes/default-304/icons/x12/calendar.png delete mode 100644 interface/web/themes/default-304/icons/x12/calendar2.png delete mode 100644 interface/web/themes/default-304/icons/x12/cancel.png delete mode 100644 interface/web/themes/default-304/icons/x12/cancel_round.png delete mode 100644 interface/web/themes/default-304/icons/x12/clock.png delete mode 100644 interface/web/themes/default-304/icons/x12/code.png delete mode 100644 interface/web/themes/default-304/icons/x12/comment_blue.png delete mode 100644 interface/web/themes/default-304/icons/x12/dollar.png delete mode 100644 interface/web/themes/default-304/icons/x12/double_comment.png delete mode 100644 interface/web/themes/default-304/icons/x12/download.png delete mode 100644 interface/web/themes/default-304/icons/x12/envelope.png delete mode 100644 interface/web/themes/default-304/icons/x12/flag_black.png delete mode 100644 interface/web/themes/default-304/icons/x12/flag_blue.png delete mode 100644 interface/web/themes/default-304/icons/x12/flag_green.png delete mode 100644 interface/web/themes/default-304/icons/x12/flag_orange.png delete mode 100644 interface/web/themes/default-304/icons/x12/flag_red.png delete mode 100644 interface/web/themes/default-304/icons/x12/flag_yellow.png delete mode 100644 interface/web/themes/default-304/icons/x12/folder.png delete mode 100644 interface/web/themes/default-304/icons/x12/info.png delete mode 100644 interface/web/themes/default-304/icons/x12/link.png delete mode 100644 interface/web/themes/default-304/icons/x12/lock.png delete mode 100644 interface/web/themes/default-304/icons/x12/magnify.png delete mode 100644 interface/web/themes/default-304/icons/x12/minus.png delete mode 100644 interface/web/themes/default-304/icons/x12/minus_round.png delete mode 100644 interface/web/themes/default-304/icons/x12/money.png delete mode 100644 interface/web/themes/default-304/icons/x12/new.png delete mode 100644 interface/web/themes/default-304/icons/x12/pencil.png delete mode 100644 interface/web/themes/default-304/icons/x12/pictures.png delete mode 100644 interface/web/themes/default-304/icons/x12/plus.png delete mode 100644 interface/web/themes/default-304/icons/x12/printer.png delete mode 100644 interface/web/themes/default-304/icons/x12/question_blue.png delete mode 100644 interface/web/themes/default-304/icons/x12/refresh.png delete mode 100644 interface/web/themes/default-304/icons/x12/rss.png delete mode 100644 interface/web/themes/default-304/icons/x12/rss_round.png delete mode 100644 interface/web/themes/default-304/icons/x12/security_green.png delete mode 100644 interface/web/themes/default-304/icons/x12/security_orange.png delete mode 100644 interface/web/themes/default-304/icons/x12/security_red.png delete mode 100644 interface/web/themes/default-304/icons/x12/star.png delete mode 100644 interface/web/themes/default-304/icons/x12/star_blue.png delete mode 100644 interface/web/themes/default-304/icons/x12/stop.png delete mode 100644 interface/web/themes/default-304/icons/x12/stop_round.png delete mode 100644 interface/web/themes/default-304/icons/x12/upload.png delete mode 100644 interface/web/themes/default-304/icons/x12/world.png delete mode 100644 interface/web/themes/default-304/icons/x12/world2.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/accept.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/accept_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/accept_green.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/arrow_2_left_round.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/arrow_2_right_round.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/arrow_left_blue_round.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/arrow_right_blue_round.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/article.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/article_text.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/bar_graph.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/burst.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/calendar.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/calendar2.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/cancel.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/cancel_round.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/clock.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/code.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/comment_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/dollar.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/double_comment.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/download.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/envelope.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/flag_black.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/flag_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/flag_green.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/flag_orange.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/flag_red.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/flag_yellow.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/folder.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/info.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/link.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/lock.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/magnify.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/minus.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/minus_round.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/money.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/new.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/pictures.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/plus.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/printer.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/question_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/refresh.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/rss.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/rss_round.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/security_green.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/security_orange.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/security_red.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/star.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/star_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/stop.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/stop_round.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/upload.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/world.png delete mode 100644 interface/web/themes/default-304/icons/x16-list/world2.png delete mode 100644 interface/web/themes/default-304/icons/x16/address_book.png delete mode 100644 interface/web/themes/default-304/icons/x16/address_book__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/address_book__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/address_book__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/address_book__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/address_book__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/address_book_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_000_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_045.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_045_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_090.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_090_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_135.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_135_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_180.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_180_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_225.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_225_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_270.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_270_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_315.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_315_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_circle.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_circle_135.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_circle_225.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_circle_315.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_circle_double.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_circle_double_135.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_skip.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_skip_090.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_skip_180.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_skip_270.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_stop.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_stop_090.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_stop_180.png delete mode 100644 interface/web/themes/default-304/icons/x16/arrow_stop_270.png delete mode 100644 interface/web/themes/default-304/icons/x16/auction_hammer.png delete mode 100644 interface/web/themes/default-304/icons/x16/auction_hammer__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/auction_hammer__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/auction_hammer__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/auction_hammer__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/auction_hammer__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/auction_hammer_gavel.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloon.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloon__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloon__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloon__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloon__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloon__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloon_left.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloon_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloon_small_left.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloons.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloons_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloons_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloons_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloons_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/balloons_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bandaid.png delete mode 100644 interface/web/themes/default-304/icons/x16/bandaid_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/bandaid_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/bandaid_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bandaid_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/bandaid_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bandaid_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/bank.png delete mode 100644 interface/web/themes/default-304/icons/x16/bank_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/bank_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/bank_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bank_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/bank_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bell.png delete mode 100644 interface/web/themes/default-304/icons/x16/bell__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/bell__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/bell__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bell__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/bell__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bell_disable.png delete mode 100644 interface/web/themes/default-304/icons/x16/bin.png delete mode 100644 interface/web/themes/default-304/icons/x16/bin__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/bin__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/bin__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bin__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/bin__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bin_full.png delete mode 100644 interface/web/themes/default-304/icons/x16/binocular.png delete mode 100644 interface/web/themes/default-304/icons/x16/binocular_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/binocular_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/binocular_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/binocular_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/binocular_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/blog.png delete mode 100644 interface/web/themes/default-304/icons/x16/blog__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/blog__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/blog__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/blog__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/blog__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/blog_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16/blogs.png delete mode 100644 interface/web/themes/default-304/icons/x16/blogs_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/blogs_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/blogs_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/blogs_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/blogs_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/blogs_stack.png delete mode 100644 interface/web/themes/default-304/icons/x16/book.png delete mode 100644 interface/web/themes/default-304/icons/x16/book__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/book__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/book__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/book__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/book__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/book_brown.png delete mode 100644 interface/web/themes/default-304/icons/x16/book_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/book_small_brown.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark__small.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_book.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_book_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_book_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_book_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_book_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_book_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_document.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_document_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_document_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_document_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_document_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_document_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_folder.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_folder_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_folder_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_folder_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_folder_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/bookmark_folder_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/books.png delete mode 100644 interface/web/themes/default-304/icons/x16/books__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/books__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/books__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/books__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/books__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/books_brown.png delete mode 100644 interface/web/themes/default-304/icons/x16/books_stack.png delete mode 100644 interface/web/themes/default-304/icons/x16/box.png delete mode 100644 interface/web/themes/default-304/icons/x16/box__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/box__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/box__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/box__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/box__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/box_label.png delete mode 100644 interface/web/themes/default-304/icons/x16/briefcase.png delete mode 100644 interface/web/themes/default-304/icons/x16/briefcase_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/briefcase_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/briefcase_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/briefcase_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/briefcase_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/broom.png delete mode 100644 interface/web/themes/default-304/icons/x16/broom_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/broom_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/broom_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/broom_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/broom_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/calculator.png delete mode 100644 interface/web/themes/default-304/icons/x16/calculator_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/calculator_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/calculator_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/calculator_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/calculator_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/calendar.png delete mode 100644 interface/web/themes/default-304/icons/x16/calendar__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/calendar__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/calendar__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/calendar__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/calendar__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/calendar_day.png delete mode 100644 interface/web/themes/default-304/icons/x16/calendar_month.png delete mode 100644 interface/web/themes/default-304/icons/x16/camera.png delete mode 100644 interface/web/themes/default-304/icons/x16/camera__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/camera__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/camera__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/camera__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/camera__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/camera_black.png delete mode 100644 interface/web/themes/default-304/icons/x16/camera_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/camera_small_black.png delete mode 100644 interface/web/themes/default-304/icons/x16/card.png delete mode 100644 interface/web/themes/default-304/icons/x16/card__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/card__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/card__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/card__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/card__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/card_address.png delete mode 100644 interface/web/themes/default-304/icons/x16/card_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/cards.png delete mode 100644 interface/web/themes/default-304/icons/x16/cards__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/cards__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/cards__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/cards__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/cards__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/cards_address.png delete mode 100644 interface/web/themes/default-304/icons/x16/cards_stack.png delete mode 100644 interface/web/themes/default-304/icons/x16/cassette.png delete mode 100644 interface/web/themes/default-304/icons/x16/cassette_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/cassette_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/cassette_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/cassette_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/cassette_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/cassette_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/chain.png delete mode 100644 interface/web/themes/default-304/icons/x16/chain_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/chain_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/chain_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/chain_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/chain_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/chain_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/chain_unchain.png delete mode 100644 interface/web/themes/default-304/icons/x16/clipboard.png delete mode 100644 interface/web/themes/default-304/icons/x16/clipboard__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/clipboard__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/clipboard__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/clipboard__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/clipboard__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/clipboard_empty.png delete mode 100644 interface/web/themes/default-304/icons/x16/clipboard_text.png delete mode 100644 interface/web/themes/default-304/icons/x16/clock.png delete mode 100644 interface/web/themes/default-304/icons/x16/clock__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/clock__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/clock__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/clock__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/clock__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/clock_fill.png delete mode 100644 interface/web/themes/default-304/icons/x16/clock_frame.png delete mode 100644 interface/web/themes/default-304/icons/x16/clock_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/color.png delete mode 100644 interface/web/themes/default-304/icons/x16/color_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/color_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/color_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/color_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/color_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/color_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/contrast.png delete mode 100644 interface/web/themes/default-304/icons/x16/contrast__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/contrast__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/contrast__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/contrast__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/contrast__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/contrast_low.png delete mode 100644 interface/web/themes/default-304/icons/x16/contrast_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/contrast_small_low.png delete mode 100644 interface/web/themes/default-304/icons/x16/cross.png delete mode 100644 interface/web/themes/default-304/icons/x16/cross_circle.png delete mode 100644 interface/web/themes/default-304/icons/x16/cross_circle_frame.png delete mode 100644 interface/web/themes/default-304/icons/x16/cross_shield.png delete mode 100644 interface/web/themes/default-304/icons/x16/cross_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/cross_small_circle.png delete mode 100644 interface/web/themes/default-304/icons/x16/crown.png delete mode 100644 interface/web/themes/default-304/icons/x16/crown__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/crown__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/crown__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/crown__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/crown__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/crown_bronze.png delete mode 100644 interface/web/themes/default-304/icons/x16/crown_silver.png delete mode 100644 interface/web/themes/default-304/icons/x16/database.png delete mode 100644 interface/web/themes/default-304/icons/x16/database_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/database_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/database_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/database_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/database_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/database_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/databases.png delete mode 100644 interface/web/themes/default-304/icons/x16/databases_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/databases_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/databases_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/databases_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/databases_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/disc.png delete mode 100644 interface/web/themes/default-304/icons/x16/disc_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/disc_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/disc_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/disc_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/disc_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/disc_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/discs.png delete mode 100644 interface/web/themes/default-304/icons/x16/discs_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/discs_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/discs_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/discs_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/discs_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/disk.png delete mode 100644 interface/web/themes/default-304/icons/x16/disk__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/disk__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/disk__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/disk__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/disk__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/disk_black.png delete mode 100644 interface/web/themes/default-304/icons/x16/disk_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/disk_small_black.png delete mode 100644 interface/web/themes/default-304/icons/x16/disks.png delete mode 100644 interface/web/themes/default-304/icons/x16/disks__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/disks__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/disks__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/disks__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/disks__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/disks_black.png delete mode 100644 interface/web/themes/default-304/icons/x16/document.png delete mode 100644 interface/web/themes/default-304/icons/x16/document__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/document__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/document__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/document__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/document__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/document_horizontal.png delete mode 100644 interface/web/themes/default-304/icons/x16/document_horizontal_text.png delete mode 100644 interface/web/themes/default-304/icons/x16/document_music.png delete mode 100644 interface/web/themes/default-304/icons/x16/document_music_playlist.png delete mode 100644 interface/web/themes/default-304/icons/x16/document_shred.png delete mode 100644 interface/web/themes/default-304/icons/x16/document_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/document_text.png delete mode 100644 interface/web/themes/default-304/icons/x16/document_text_image.png delete mode 100644 interface/web/themes/default-304/icons/x16/document_zipper.png delete mode 100644 interface/web/themes/default-304/icons/x16/documents.png delete mode 100644 interface/web/themes/default-304/icons/x16/documents_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/documents_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/documents_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/documents_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/documents_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/documents_stack.png delete mode 100644 interface/web/themes/default-304/icons/x16/documents_text.png delete mode 100644 interface/web/themes/default-304/icons/x16/door.png delete mode 100644 interface/web/themes/default-304/icons/x16/door_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/door_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/door_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/door_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/door_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/drawer.png delete mode 100644 interface/web/themes/default-304/icons/x16/drawer_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/drawer_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/drawer_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/drawer_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/drawer_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/drill.png delete mode 100644 interface/web/themes/default-304/icons/x16/drill_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/drill_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/drill_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/drill_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/drill_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/envelope.png delete mode 100644 interface/web/themes/default-304/icons/x16/envelope_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/envelope_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/envelope_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/envelope_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/envelope_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/equalizer.png delete mode 100644 interface/web/themes/default-304/icons/x16/equalizer_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/equalizer_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/equalizer_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/equalizer_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/equalizer_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/eraser.png delete mode 100644 interface/web/themes/default-304/icons/x16/eraser_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/eraser_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/eraser_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/eraser_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/eraser_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/exclamation_frame.png delete mode 100644 interface/web/themes/default-304/icons/x16/exclamation_shield.png delete mode 100644 interface/web/themes/default-304/icons/x16/exclamation_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/feed.png delete mode 100644 interface/web/themes/default-304/icons/x16/feed__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/feed__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/feed__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/feed__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/feed__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/feed_balloon.png delete mode 100644 interface/web/themes/default-304/icons/x16/feed_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/film.png delete mode 100644 interface/web/themes/default-304/icons/x16/film_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/film_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/film_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/film_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/film_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/film_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/films.png delete mode 100644 interface/web/themes/default-304/icons/x16/films_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/films_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/films_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/films_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/films_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/flag.png delete mode 100644 interface/web/themes/default-304/icons/x16/flag_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/flag_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/flag_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/flag_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/flag_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_open.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_open_document.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_open_document_music.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_open_document_music_playlist.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_open_document_text.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_open_film.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_open_image.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_shred.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/folder_zipper.png delete mode 100644 interface/web/themes/default-304/icons/x16/folders.png delete mode 100644 interface/web/themes/default-304/icons/x16/folders_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/folders_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/folders_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/folders_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/folders_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/folders_stack.png delete mode 100644 interface/web/themes/default-304/icons/x16/funnel.png delete mode 100644 interface/web/themes/default-304/icons/x16/funnel_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/funnel_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/funnel_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/funnel_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/funnel_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/funnel_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/gear.png delete mode 100644 interface/web/themes/default-304/icons/x16/gear__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/gear__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/gear__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/gear__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/gear__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/gear_disable.png delete mode 100644 interface/web/themes/default-304/icons/x16/gear_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/hammer.png delete mode 100644 interface/web/themes/default-304/icons/x16/hammer__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/hammer__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/hammer__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/hammer__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/hammer__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/hammer_left.png delete mode 100644 interface/web/themes/default-304/icons/x16/hammer_screwdriver.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart_break.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart_empty.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart_half.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart_small_empty.png delete mode 100644 interface/web/themes/default-304/icons/x16/heart_small_half.png delete mode 100644 interface/web/themes/default-304/icons/x16/home.png delete mode 100644 interface/web/themes/default-304/icons/x16/home_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/home_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/home_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/home_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/home_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/home_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/image.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_resize.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_resize_actual.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_small_sunset.png delete mode 100644 interface/web/themes/default-304/icons/x16/image_sunset.png delete mode 100644 interface/web/themes/default-304/icons/x16/images.png delete mode 100644 interface/web/themes/default-304/icons/x16/images_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/images_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/images_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/images_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/images_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/images_stack.png delete mode 100644 interface/web/themes/default-304/icons/x16/inbox.png delete mode 100644 interface/web/themes/default-304/icons/x16/inbox_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/inbox_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/inbox_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/inbox_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/inbox_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/information.png delete mode 100644 interface/web/themes/default-304/icons/x16/information_frame.png delete mode 100644 interface/web/themes/default-304/icons/x16/information_shield.png delete mode 100644 interface/web/themes/default-304/icons/x16/information_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/key.png delete mode 100644 interface/web/themes/default-304/icons/x16/key__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/key__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/key__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/key__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/key__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/key_disable.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_2.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_2_equal.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_3.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_3_mix.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header_2.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header_2_equal.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header_3.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header_3_mix.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header_footer.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header_footer_2.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header_footer_2_equal.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header_footer_3.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_header_footer_3_mix.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_join.png delete mode 100644 interface/web/themes/default-304/icons/x16/layout_split.png delete mode 100644 interface/web/themes/default-304/icons/x16/lifebuoy.png delete mode 100644 interface/web/themes/default-304/icons/x16/lifebuoy_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/lifebuoy_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/lifebuoy_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/lifebuoy_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/lifebuoy_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/light_bulb.png delete mode 100644 interface/web/themes/default-304/icons/x16/light_bulb__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/light_bulb__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/light_bulb__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/light_bulb__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/light_bulb__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/light_bulb_off.png delete mode 100644 interface/web/themes/default-304/icons/x16/light_bulb_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/light_bulb_small_off.png delete mode 100644 interface/web/themes/default-304/icons/x16/lightning.png delete mode 100644 interface/web/themes/default-304/icons/x16/lightning__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/lightning__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/lightning__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/lightning__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/lightning__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/lightning_disable.png delete mode 100644 interface/web/themes/default-304/icons/x16/lightning_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/loading.gif delete mode 100644 interface/web/themes/default-304/icons/x16/lock.png delete mode 100644 interface/web/themes/default-304/icons/x16/lock__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/lock__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/lock__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/lock__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/lock__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/lock_disable.png delete mode 100644 interface/web/themes/default-304/icons/x16/lock_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/lock_unlock.png delete mode 100644 interface/web/themes/default-304/icons/x16/logout.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnet.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnet__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnet__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnet__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnet__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnet__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnet_disable.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnet_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier_left.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier_medium.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier_medium_left.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier_zoom.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier_zoom_actual.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier_zoom_fit.png delete mode 100644 interface/web/themes/default-304/icons/x16/magnifier_zoom_out.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail_open.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail_open_document.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail_open_film.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail_open_image.png delete mode 100644 interface/web/themes/default-304/icons/x16/mail_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/mails.png delete mode 100644 interface/web/themes/default-304/icons/x16/mails_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/mails_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/mails_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/mails_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/mails_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/mails_stack.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_black.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_medium.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_medium_black.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_medium_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_medium_green.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_medium_pink.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_medium_red.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_small_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_small_green.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_small_purple.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_player_small_red.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_players.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_players_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_players_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_players_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_players_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/media_players_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/microphone.png delete mode 100644 interface/web/themes/default-304/icons/x16/microphone_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/microphone_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/microphone_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/microphone_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/microphone_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/minus_circle.png delete mode 100644 interface/web/themes/default-304/icons/x16/minus_circle_frame.png delete mode 100644 interface/web/themes/default-304/icons/x16/minus_shield.png delete mode 100644 interface/web/themes/default-304/icons/x16/minus_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/minus_small_circle.png delete mode 100644 interface/web/themes/default-304/icons/x16/music.png delete mode 100644 interface/web/themes/default-304/icons/x16/music_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/music_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/music_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/music_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/music_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/music_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspaper.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspaper_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspaper_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspaper_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspaper_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspaper_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspapers.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspapers_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspapers_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspapers_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspapers_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/newspapers_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebook.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebook_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebook_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebook_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebook_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebook_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebooks.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebooks_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebooks_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebooks_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebooks_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/notebooks_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/paint_can.png delete mode 100644 interface/web/themes/default-304/icons/x16/paint_can_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/paint_can_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/paint_can_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/paint_can_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/paint_can_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/palette.png delete mode 100644 interface/web/themes/default-304/icons/x16/palette_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/palette_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/palette_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/palette_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/palette_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/paper_bag.png delete mode 100644 interface/web/themes/default-304/icons/x16/paper_bag_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/paper_bag_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/paper_bag_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/paper_bag_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/paper_bag_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pdf.png delete mode 100644 interface/web/themes/default-304/icons/x16/pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/pencil_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/pencil_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/pencil_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pencil_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pencil_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/photo_album.png delete mode 100644 interface/web/themes/default-304/icons/x16/photo_album__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/photo_album__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/photo_album__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/photo_album__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/photo_album__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/photo_album_blue.png delete mode 100644 interface/web/themes/default-304/icons/x16/piano.png delete mode 100644 interface/web/themes/default-304/icons/x16/piano_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/piano_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/piano_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/piano_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/piano_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/picture.png delete mode 100644 interface/web/themes/default-304/icons/x16/picture_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/picture_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/picture_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/picture_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/picture_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/picture_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/picture_small_sunset.png delete mode 100644 interface/web/themes/default-304/icons/x16/picture_sunset.png delete mode 100644 interface/web/themes/default-304/icons/x16/pictures.png delete mode 100644 interface/web/themes/default-304/icons/x16/pictures_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/pictures_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/pictures_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pictures_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/pictures_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pill.png delete mode 100644 interface/web/themes/default-304/icons/x16/pill_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/pill_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/pill_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pill_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/pill_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pill_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/pin.png delete mode 100644 interface/web/themes/default-304/icons/x16/pin_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/pin_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/pin_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pin_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/pin_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pipette.png delete mode 100644 interface/web/themes/default-304/icons/x16/pipette_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/pipette_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/pipette_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/pipette_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/pipette_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/playing_card.png delete mode 100644 interface/web/themes/default-304/icons/x16/playing_card_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/playing_card_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/playing_card_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/playing_card_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/playing_card_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/plug.png delete mode 100644 interface/web/themes/default-304/icons/x16/plug_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/plug_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/plug_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/plug_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/plug_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/plus_circle.png delete mode 100644 interface/web/themes/default-304/icons/x16/plus_circle_frame.png delete mode 100644 interface/web/themes/default-304/icons/x16/plus_shield.png delete mode 100644 interface/web/themes/default-304/icons/x16/plus_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/plus_small_circle.png delete mode 100644 interface/web/themes/default-304/icons/x16/printer.png delete mode 100644 interface/web/themes/default-304/icons/x16/printer__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/printer__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/printer__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/printer__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/printer__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/printer_empty.png delete mode 100644 interface/web/themes/default-304/icons/x16/printer_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/puzzle.png delete mode 100644 interface/web/themes/default-304/icons/x16/puzzle__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/puzzle__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/puzzle__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/puzzle__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/puzzle__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/puzzle_disable.png delete mode 100644 interface/web/themes/default-304/icons/x16/question.png delete mode 100644 interface/web/themes/default-304/icons/x16/question_frame.png delete mode 100644 interface/web/themes/default-304/icons/x16/question_shield.png delete mode 100644 interface/web/themes/default-304/icons/x16/question_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipt.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipt_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipt_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipt_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipt_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipt_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipt_shred.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipt_text.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipts.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipts_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipts_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipts_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipts_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipts_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/receipts_text.png delete mode 100644 interface/web/themes/default-304/icons/x16/report.png delete mode 100644 interface/web/themes/default-304/icons/x16/report_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/report_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/report_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/report_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/report_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/ruler.png delete mode 100644 interface/web/themes/default-304/icons/x16/ruler__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/ruler__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/ruler__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/ruler__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/ruler__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/ruler_crop.png delete mode 100644 interface/web/themes/default-304/icons/x16/safe.png delete mode 100644 interface/web/themes/default-304/icons/x16/safe_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/safe_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/safe_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/safe_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/safe_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/screwdriver.png delete mode 100644 interface/web/themes/default-304/icons/x16/screwdriver_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/screwdriver_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/screwdriver_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/screwdriver_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/screwdriver_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/script.png delete mode 100644 interface/web/themes/default-304/icons/x16/script__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/script__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/script__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/script__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/script__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/script_code.png delete mode 100644 interface/web/themes/default-304/icons/x16/scripts.png delete mode 100644 interface/web/themes/default-304/icons/x16/scripts__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/scripts__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/scripts__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/scripts__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/scripts__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/scripts_code.png delete mode 100644 interface/web/themes/default-304/icons/x16/shield.png delete mode 100644 interface/web/themes/default-304/icons/x16/shield__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/shield__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/shield__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/shield__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/shield__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/shield_disable.png delete mode 100644 interface/web/themes/default-304/icons/x16/slash.png delete mode 100644 interface/web/themes/default-304/icons/x16/slash_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/socket.png delete mode 100644 interface/web/themes/default-304/icons/x16/socket_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/socket_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/socket_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/socket_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/socket_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort_alphabet.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort_alphabet_descending.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort_date.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort_date_descending.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort_number.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort_number_descending.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort_quantity.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort_quantity_descending.png delete mode 100644 interface/web/themes/default-304/icons/x16/sort_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/stamp.png delete mode 100644 interface/web/themes/default-304/icons/x16/stamp_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/stamp_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/stamp_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/stamp_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/stamp_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/star.png delete mode 100644 interface/web/themes/default-304/icons/x16/star__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/star__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/star__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/star__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/star__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/star_empty.png delete mode 100644 interface/web/themes/default-304/icons/x16/star_half.png delete mode 100644 interface/web/themes/default-304/icons/x16/star_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/star_small_empty.png delete mode 100644 interface/web/themes/default-304/icons/x16/star_small_half.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note_pin.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note_shred.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note_small_pin.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_note_text.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_notes.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_notes__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_notes__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_notes__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_notes__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_notes__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_notes_pin.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_notes_stack.png delete mode 100644 interface/web/themes/default-304/icons/x16/sticky_notes_text.png delete mode 100644 interface/web/themes/default-304/icons/x16/switch.png delete mode 100644 interface/web/themes/default-304/icons/x16/switch_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/switch_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/switch_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/switch_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/switch_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/table.png delete mode 100644 interface/web/themes/default-304/icons/x16/table__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/table__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/table__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/table__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/table__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/table_delete.png delete mode 100644 interface/web/themes/default-304/icons/x16/table_delete_column.png delete mode 100644 interface/web/themes/default-304/icons/x16/table_insert.png delete mode 100644 interface/web/themes/default-304/icons/x16/table_insert_column.png delete mode 100644 interface/web/themes/default-304/icons/x16/tables.png delete mode 100644 interface/web/themes/default-304/icons/x16/tables_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/tables_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/tables_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/tables_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/tables_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/tables_stacks.png delete mode 100644 interface/web/themes/default-304/icons/x16/tag.png delete mode 100644 interface/web/themes/default-304/icons/x16/tag__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/tag__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/tag__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/tag__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/tag__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/tag_label.png delete mode 100644 interface/web/themes/default-304/icons/x16/tag_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/tags.png delete mode 100644 interface/web/themes/default-304/icons/x16/tags__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/tags__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/tags__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/tags__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/tags__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/tags_label.png delete mode 100644 interface/web/themes/default-304/icons/x16/tick.png delete mode 100644 interface/web/themes/default-304/icons/x16/tick_circle.png delete mode 100644 interface/web/themes/default-304/icons/x16/tick_circle_frame.png delete mode 100644 interface/web/themes/default-304/icons/x16/tick_shield.png delete mode 100644 interface/web/themes/default-304/icons/x16/tick_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/tick_small_circle.png delete mode 100644 interface/web/themes/default-304/icons/x16/ticket.png delete mode 100644 interface/web/themes/default-304/icons/x16/ticket_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/ticket_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/ticket_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/ticket_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/ticket_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/ticket_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/trophy.png delete mode 100644 interface/web/themes/default-304/icons/x16/trophy_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/trophy_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/trophy_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/trophy_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/trophy_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/tux.png delete mode 100644 interface/web/themes/default-304/icons/x16/user.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_add.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_comment.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_delete.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_edit.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_female.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_go.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_gray.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_green.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_orange.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_red.png delete mode 100644 interface/web/themes/default-304/icons/x16/user_suit.png delete mode 100644 interface/web/themes/default-304/icons/x16/vcard.png delete mode 100644 interface/web/themes/default-304/icons/x16/vcard_add.png delete mode 100644 interface/web/themes/default-304/icons/x16/vcard_delete.png delete mode 100644 interface/web/themes/default-304/icons/x16/vcard_edit.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall__arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall__exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall__minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall__pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall__plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall_brick.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall_disable.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall_small.png delete mode 100644 interface/web/themes/default-304/icons/x16/wall_small_brick.png delete mode 100644 interface/web/themes/default-304/icons/x16/wallet.png delete mode 100644 interface/web/themes/default-304/icons/x16/wallet_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/wallet_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/wallet_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/wallet_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/wallet_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/wand.png delete mode 100644 interface/web/themes/default-304/icons/x16/wand_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/wand_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/wand_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/wand_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/wand_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/wrench.png delete mode 100644 interface/web/themes/default-304/icons/x16/wrench_arrow.png delete mode 100644 interface/web/themes/default-304/icons/x16/wrench_exclamation.png delete mode 100644 interface/web/themes/default-304/icons/x16/wrench_minus.png delete mode 100644 interface/web/themes/default-304/icons/x16/wrench_pencil.png delete mode 100644 interface/web/themes/default-304/icons/x16/wrench_plus.png delete mode 100644 interface/web/themes/default-304/icons/x16/wrench_screwdriver.png delete mode 100644 interface/web/themes/default-304/icons/x16_sprite.png delete mode 100644 interface/web/themes/default-304/icons/x32/calculator.png delete mode 100644 interface/web/themes/default-304/icons/x32/client.png delete mode 100644 interface/web/themes/default-304/icons/x32/dashboard.png delete mode 100644 interface/web/themes/default-304/icons/x32/dns.png delete mode 100644 interface/web/themes/default-304/icons/x32/domain.png delete mode 100644 interface/web/themes/default-304/icons/x32/drawer.png delete mode 100644 interface/web/themes/default-304/icons/x32/email.png delete mode 100644 interface/web/themes/default-304/icons/x32/help.png delete mode 100644 interface/web/themes/default-304/icons/x32/login.png delete mode 100644 interface/web/themes/default-304/icons/x32/monitor.png delete mode 100644 interface/web/themes/default-304/icons/x32/network.png delete mode 100644 interface/web/themes/default-304/icons/x32/server.png delete mode 100644 interface/web/themes/default-304/icons/x32/sites.png delete mode 100644 interface/web/themes/default-304/icons/x32/state_critical.png delete mode 100644 interface/web/themes/default-304/icons/x32/state_error.png delete mode 100644 interface/web/themes/default-304/icons/x32/state_info.png delete mode 100644 interface/web/themes/default-304/icons/x32/state_ok.png delete mode 100644 interface/web/themes/default-304/icons/x32/state_unknown.png delete mode 100644 interface/web/themes/default-304/icons/x32/state_warning.png delete mode 100644 interface/web/themes/default-304/icons/x32/system.png delete mode 100644 interface/web/themes/default-304/icons/x32/tools.png delete mode 100644 interface/web/themes/default-304/icons/x32_sprite.png delete mode 100644 interface/web/themes/default-304/icons/x64/client.png delete mode 100644 interface/web/themes/default-304/icons/x64/dashboard.png delete mode 100644 interface/web/themes/default-304/icons/x64/dns.png delete mode 100644 interface/web/themes/default-304/icons/x64/domain.png delete mode 100644 interface/web/themes/default-304/icons/x64/drawer.png delete mode 100644 interface/web/themes/default-304/icons/x64/email.png delete mode 100644 interface/web/themes/default-304/icons/x64/help.png delete mode 100644 interface/web/themes/default-304/icons/x64/login.png delete mode 100644 interface/web/themes/default-304/icons/x64/monitor.png delete mode 100644 interface/web/themes/default-304/icons/x64/network.png delete mode 100644 interface/web/themes/default-304/icons/x64/server.png delete mode 100644 interface/web/themes/default-304/icons/x64/sites.png delete mode 100644 interface/web/themes/default-304/icons/x64/system.png delete mode 100644 interface/web/themes/default-304/icons/x64/tools.png delete mode 100644 interface/web/themes/default-304/images/Thumbs.db delete mode 100644 interface/web/themes/default-304/images/ajax-loader.gif delete mode 100644 interface/web/themes/default-304/images/buttonHolder_bg.gif delete mode 100644 interface/web/themes/default-304/images/chevron.png delete mode 100644 interface/web/themes/default-304/images/favicon.ico delete mode 100644 interface/web/themes/default-304/images/header_bg.png delete mode 100644 interface/web/themes/default-304/images/header_logo.png delete mode 100644 interface/web/themes/default-304/images/lists_tfoot_bg.png delete mode 100644 interface/web/themes/default-304/images/lists_thead_bg.png delete mode 100644 interface/web/themes/default-304/images/meter_bg.gif delete mode 100644 interface/web/themes/default-304/images/screen_bg.png delete mode 100644 interface/web/themes/default-304/ispconfig_version delete mode 100644 interface/web/themes/default-304/licences.txt delete mode 100644 interface/web/themes/default-304/templates/admin/firewall_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/firewall_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/groups_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/groups_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/iptables_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/iptables_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/language_add.htm delete mode 100644 interface/web/themes/default-304/templates/admin/language_complete.htm delete mode 100644 interface/web/themes/default-304/templates/admin/language_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/language_export.htm delete mode 100644 interface/web/themes/default-304/templates/admin/language_import.htm delete mode 100644 interface/web/themes/default-304/templates/admin/language_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/remote_action_ispcupdate.htm delete mode 100644 interface/web/themes/default-304/templates/admin/remote_action_osupdate.htm delete mode 100644 interface/web/themes/default-304/templates/admin/remote_user_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/remote_user_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_cron_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_dns_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_fastcgi_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_getmail_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_jailkit_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_mail_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_rescue_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_server_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_ufw_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_vlogger_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_config_web_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_edit_config.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_edit_services.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_ip_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_ip_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_php_fastcgi_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_php_fpm_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_php_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/server_php_name_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/software_package_install.htm delete mode 100644 interface/web/themes/default-304/templates/admin/software_package_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/software_repo_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/software_repo_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/software_update_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/system_config_domains_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/system_config_mail_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/system_config_misc_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/system_config_sites_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/tpl_default_basic.htm delete mode 100644 interface/web/themes/default-304/templates/admin/users_groups_edit.htm delete mode 100644 interface/web/themes/default-304/templates/admin/users_list.htm delete mode 100644 interface/web/themes/default-304/templates/admin/users_user_edit.htm delete mode 100644 interface/web/themes/default-304/templates/client/client_circle_edit.htm delete mode 100644 interface/web/themes/default-304/templates/client/client_circle_list.htm delete mode 100644 interface/web/themes/default-304/templates/client/client_del.htm delete mode 100644 interface/web/themes/default-304/templates/client/client_edit_address.htm delete mode 100644 interface/web/themes/default-304/templates/client/client_edit_limits.htm delete mode 100644 interface/web/themes/default-304/templates/client/client_message.htm delete mode 100644 interface/web/themes/default-304/templates/client/client_template_edit_limits.htm delete mode 100644 interface/web/themes/default-304/templates/client/client_template_edit_template.htm delete mode 100644 interface/web/themes/default-304/templates/client/client_template_list.htm delete mode 100644 interface/web/themes/default-304/templates/client/clients_list.htm delete mode 100644 interface/web/themes/default-304/templates/client/domain_edit.htm delete mode 100644 interface/web/themes/default-304/templates/client/domain_list.htm delete mode 100644 interface/web/themes/default-304/templates/client/reseller_edit_address.htm delete mode 100644 interface/web/themes/default-304/templates/client/reseller_edit_limits.htm delete mode 100644 interface/web/themes/default-304/templates/client/resellers_list.htm delete mode 100644 interface/web/themes/default-304/templates/dashboard/custom_menu.htm delete mode 100644 interface/web/themes/default-304/templates/dashboard/dashboard.htm delete mode 100644 interface/web/themes/default-304/templates/dashboard/dashlets/limits.htm delete mode 100644 interface/web/themes/default-304/templates/dashboard/dashlets/modules.htm delete mode 100644 interface/web/themes/default-304/templates/designer/form_edit.htm delete mode 100644 interface/web/themes/default-304/templates/designer/form_list.htm delete mode 100644 interface/web/themes/default-304/templates/designer/form_show.htm delete mode 100644 interface/web/themes/default-304/templates/designer/module_edit.htm delete mode 100644 interface/web/themes/default-304/templates/designer/module_list.htm delete mode 100644 interface/web/themes/default-304/templates/designer/module_nav_edit.htm delete mode 100644 interface/web/themes/default-304/templates/designer/module_nav_item_edit.htm delete mode 100644 interface/web/themes/default-304/templates/designer/module_show.htm delete mode 100644 interface/web/themes/default-304/templates/designer/paging.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_a_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_a_list.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_aaaa_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_alias_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_cname_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_hinfo_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_import.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_mx_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_ns_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_ptr_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_records_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_rp_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_slave_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_slave_list.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_soa_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_soa_list.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_srv_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_template_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_template_list.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_txt_edit.htm delete mode 100644 interface/web/themes/default-304/templates/dns/dns_wizard.htm delete mode 100644 interface/web/themes/default-304/templates/error.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/form.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/help/faq_edit.htm delete mode 100644 interface/web/themes/default-304/templates/help/faq_manage_questions_list.htm delete mode 100644 interface/web/themes/default-304/templates/help/faq_sections_edit.htm delete mode 100644 interface/web/themes/default-304/templates/help/help_faq_list.htm delete mode 100644 interface/web/themes/default-304/templates/help/help_faq_sections_list.htm delete mode 100644 interface/web/themes/default-304/templates/help/support_message_edit.htm delete mode 100644 interface/web/themes/default-304/templates/help/support_message_list.htm delete mode 100644 interface/web/themes/default-304/templates/help/support_message_view.htm delete mode 100644 interface/web/themes/default-304/templates/listpage.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/login/index.htm delete mode 100644 interface/web/themes/default-304/templates/login/password_reset.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_alias_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_alias_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_aliasdomain_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_aliasdomain_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_blacklist_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_blacklist_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_content_filter_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_content_filter_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_domain_admin_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_domain_catchall_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_domain_catchall_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_domain_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_domain_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_forward_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_forward_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_get_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_get_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_mailinglist_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_mailinglist_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_relay_recipient_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_relay_recipient_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_transport_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_transport_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_user_autoresponder_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_user_custom_rules_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_user_filter_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_user_filter_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_user_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_user_mailbox_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_user_mailfilter_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_user_stats_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_whitelist_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/mail_whitelist_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_blacklist_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_blacklist_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_config_getmail_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_config_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_config_mail_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_config_server_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_other_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_policy_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_policy_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_quarantine_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_taglevel_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_users_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_users_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_whitelist_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mail/spamfilter_whitelist_list.htm delete mode 100644 interface/web/themes/default-304/templates/mail/user_quota_stats_list.htm delete mode 100644 interface/web/themes/default-304/templates/mailuser/index.htm delete mode 100644 interface/web/themes/default-304/templates/mailuser/mail_user_autoresponder_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mailuser/mail_user_cc_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mailuser/mail_user_filter_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mailuser/mail_user_filter_list.htm delete mode 100644 interface/web/themes/default-304/templates/mailuser/mail_user_password_edit.htm delete mode 100644 interface/web/themes/default-304/templates/mailuser/mail_user_spamfilter_edit.htm delete mode 100644 interface/web/themes/default-304/templates/main.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/module.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/module_tree.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/monitor/datalog_list.htm delete mode 100644 interface/web/themes/default-304/templates/monitor/show_data.htm delete mode 100644 interface/web/themes/default-304/templates/monitor/show_log.htm delete mode 100644 interface/web/themes/default-304/templates/monitor/show_sys_state.htm delete mode 100644 interface/web/themes/default-304/templates/monitor/syslog_list.htm delete mode 100644 interface/web/themes/default-304/templates/sidenav.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/sites/aps_install_package.htm delete mode 100644 interface/web/themes/default-304/templates/sites/aps_instances_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/aps_packagedetails_show.htm delete mode 100644 interface/web/themes/default-304/templates/sites/aps_packages_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/cron_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/cron_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/database_admin_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/database_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/database_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/database_user_admin_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/database_user_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/database_user_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/ftp_user_advanced.htm delete mode 100644 interface/web/themes/default-304/templates/sites/ftp_user_advanced_client.htm delete mode 100644 interface/web/themes/default-304/templates/sites/ftp_user_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/ftp_user_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/shell_user_advanced.htm delete mode 100644 interface/web/themes/default-304/templates/sites/shell_user_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/shell_user_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/user_quota_stats_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_aliasdomain_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_aliasdomain_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_backup_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_domain_admin_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_domain_advanced.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_domain_backup.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_domain_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_domain_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_domain_redirect.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_domain_ssl.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_domain_stats.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_folder_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_folder_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_folder_user_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_folder_user_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_sites_stats_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_subdomain_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_subdomain_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_vhost_subdomain_advanced.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_vhost_subdomain_backup.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_vhost_subdomain_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_vhost_subdomain_list.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_vhost_subdomain_redirect.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_vhost_subdomain_ssl.htm delete mode 100644 interface/web/themes/default-304/templates/sites/web_vhost_subdomain_stats.htm delete mode 100644 interface/web/themes/default-304/templates/sites/webdav_user_edit.htm delete mode 100644 interface/web/themes/default-304/templates/sites/webdav_user_list.htm delete mode 100644 interface/web/themes/default-304/templates/tabbed_form.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/tools/dns_import_tupa.htm delete mode 100644 interface/web/themes/default-304/templates/tools/import_ispconfig.htm delete mode 100644 interface/web/themes/default-304/templates/tools/import_plesk.htm delete mode 100644 interface/web/themes/default-304/templates/tools/index.htm delete mode 100644 interface/web/themes/default-304/templates/tools/interface_settings.htm delete mode 100644 interface/web/themes/default-304/templates/tools/resync.htm delete mode 100644 interface/web/themes/default-304/templates/tools/tpl_default.htm delete mode 100644 interface/web/themes/default-304/templates/tools/user_settings.htm delete mode 100644 interface/web/themes/default-304/templates/topnav.tpl.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_action.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_ip_edit.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_ip_list.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_ostemplate_edit.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_ostemplate_list.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_template_advanced_edit.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_template_edit.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_template_list.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_vm_advanced_edit.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_vm_edit.htm delete mode 100644 interface/web/themes/default-304/templates/vm/openvz_vm_list.htm delete mode 100644 interface/web/themes/default-304/yaml/!important.txt delete mode 100644 interface/web/themes/default-304/yaml/core/base.css delete mode 100644 interface/web/themes/default-304/yaml/core/iehacks.css delete mode 100644 interface/web/themes/default-304/yaml/core/print_base.css delete mode 100644 interface/web/themes/default-304/yaml/core/slim_base.css delete mode 100644 interface/web/themes/default-304/yaml/core/slim_iehacks.css delete mode 100644 interface/web/themes/default-304/yaml/core/slim_print_base.css delete mode 100644 interface/web/themes/default-304/yaml/debug/debug.css delete mode 100644 interface/web/themes/default-304/yaml/debug/images/grid_pattern.png delete mode 100644 interface/web/themes/default-304/yaml/debug/images/warning_iehacks.gif delete mode 100644 interface/web/themes/default-304/yaml/debug/images/yaml_debug.gif delete mode 100644 interface/web/themes/default-304/yaml/navigation/nav_vlist.css delete mode 100644 interface/web/themes/default-304/yaml/patches/patch_layout_draft.css delete mode 100644 interface/web/themes/default-304/yaml/patches/patch_nav_vlist.css delete mode 100644 interface/web/themes/default-304/yaml/print/print_003_draft.css delete mode 100644 interface/web/themes/default-304/yaml/print/print_020_draft.css delete mode 100644 interface/web/themes/default-304/yaml/print/print_023_draft.css delete mode 100644 interface/web/themes/default-304/yaml/print/print_100_draft.css delete mode 100644 interface/web/themes/default-304/yaml/print/print_103_draft.css delete mode 100644 interface/web/themes/default-304/yaml/print/print_120_draft.css delete mode 100644 interface/web/themes/default-304/yaml/print/print_123_draft.css delete mode 100644 interface/web/themes/default-304/yaml/screen/basemod_draft.css delete mode 100644 interface/web/themes/default-304/yaml/screen/content_default.css diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 83b6ffba3..cc22d9e02 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -2248,6 +2248,7 @@ class installer_base { // Remove directories recursively if(is_dir('/usr/local/ispconfig/interface/web/designer')) exec('rm -rf /usr/local/ispconfig/interface/web/designer'); + if(is_dir('/usr/local/ispconfig/interface/web/themes/default-304')) exec('rm -rf /usr/local/ispconfig/interface/web/themes/default-304'); // Remove files if(is_file('/usr/local/ispconfig/interface/lib/classes/db_firebird.inc.php')) unlink('/usr/local/ispconfig/interface/lib/classes/db_firebird.inc.php'); diff --git a/interface/web/themes/default-304/css/central.css b/interface/web/themes/default-304/css/central.css deleted file mode 100644 index 91c793c36..000000000 --- a/interface/web/themes/default-304/css/central.css +++ /dev/null @@ -1,33 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) central stylesheet - ISPConfig 3: default theme - * (de) Zentrales Stylesheet - ISPConfig 3: default theme - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* import core styles | Basis-Stylesheets einbinden */ -@import url(../yaml/core/base.css); - -/* import screen layout | Screen-Layout einbinden */ -@import url(navigation/nav_top.css); -@import url(navigation/nav_side.css); -@import url(screen/basemod.css); -@import url(screen/basemod_2col_left_seo.css); -@import url(screen/content.css); -@import url(screen/uni-form-generic.css); -@import url(screen/uni-form.css); -@import url(screen/tipsy.css); -@import url(screen/content_ispc.css); - -/* import print layout | Druck-Layout einbinden */ -@import url(print/print_100.css); diff --git a/interface/web/themes/default-304/css/navigation/nav_side.css b/interface/web/themes/default-304/css/navigation/nav_side.css deleted file mode 100644 index ea947a5b0..000000000 --- a/interface/web/themes/default-304/css/navigation/nav_side.css +++ /dev/null @@ -1,125 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Vertical list navigation "vlist" - ISPConfig 3: default theme - * (de) Vertikale Navigationsliste "vlist" - ISPConfig 3: default theme - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -@media all -{ - #submenu { - width: 100%; - overflow: hidden; - margin: 0px; - list-style-type: none; - border-bottom: 2px #ddd solid; - } - - #submenu ul { list-style-type: none; margin:0; padding: 0; } - #submenu li { float:left; width: 100%; margin:0; padding: 0; font-size:0.9em; } - - #submenu a, - #submenu strong { - display:block; - width: 90%; - padding: 2px 0px 2px 10%; - text-decoration: none; - background-color:#fff; - color: #444; - border-bottom: 1px #eee solid; - } - - /* Menu Title */ - #submenu li.title { - width: 100%; - padding: 0px; - font-weight: bold; - color: #444; - background-color: #fff; - border-top: 2px #888 solid; - font-size: 1.1em; - } - - #submenu li.title a { - background-color: #f0f8ff; - color: #444; - } - #submenu li.title a:hover { - color: white; -} - - #submenu li span { - display:block; - width: 90%; - padding: 3px 0px 3px 10%; - font-weight: bold; - border-bottom: 1px #ddd solid; - } - - /* Level 1 */ - #submenu li.active, - #submenu li strong { - width: 90%; - padding: 3px 0px 3px 10%; - font-weight: bold; - color: #fff; - background-color:#aab; - border-bottom: 1px #eee solid; - } - - #submenu li a { width: 90%; padding-left: 10%; background-color:#fff; color: #444; } - #submenu li a:focus, - #submenu li a:hover, - #submenu li a:active { background-color:#f63; color: #fff; } - - /* Level 2 */ - #submenu li ul li a, - #submenu li ul li#active, - #submenu li ul li strong, - #submenu li ul li span { width: 80%; padding-left: 20%; } - - #submenu li ul li a { background-color:#f8f8f8; color: #666; } - #submenu li ul li a:focus, - #submenu li ul li a:hover, - #submenu li ul li a:active { background-color:#f63; color: #fff; } - - /* Level 3 */ - #submenu li ul li ul li a, - #submenu li ul li ul li#active, - #submenu li ul li ul li strong, - #submenu li ul li ul li span { width: 70%; padding-left: 30%; } - - #submenu li ul li ul li a { background-color:#fcfcfc; color: #888; } - #submenu li ul li ul li a:focus, - #submenu li ul li ul li a:hover, - #submenu li ul li ul li a:active { background-color:#f63; color: #fff; } - - /* Level 4 */ - #submenu li ul li ul li ul li a, - #submenu li ul li ul li ul li#active, - #submenu li ul li ul li ul li strong, - #submenu li ul li ul li ul li span { width: 60%; padding-left: 40%; } - - #submenu li ul li ul li ul li a { background-color:#ffffff; color: #aaa; } - #submenu li ul li ul li ul li a:focus, - #submenu li ul li ul li ul li a:hover, - #submenu li ul li ul li ul li a:active { background-color:#f63; color: #fff; } - - /* Form-Elements in the Menu*/ - #submenu * select#server_id { - margin: 3px 10%; - padding: 1px; - width: 80%; - } - -} \ No newline at end of file diff --git a/interface/web/themes/default-304/css/navigation/nav_top.css b/interface/web/themes/default-304/css/navigation/nav_top.css deleted file mode 100644 index 573ebc6db..000000000 --- a/interface/web/themes/default-304/css/navigation/nav_top.css +++ /dev/null @@ -1,116 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Horizontal list navigation - ISPConfig 3: default theme - * (de) Horizontale Navigationsliste - ISPConfig 3: default theme - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -@media all -{ - #topNav ul { - list-style: none; - padding: 0; - margin: 0; - } - - #topNav ul li { - display: inline; - margin: 0 2px 0 0; - } - - #topNav a { - background-color: #D3D3D3; - background-position: center 5px; - background-repeat: no-repeat; - color:black; - display:inline-block; - height:20px; - padding-top:37px; - text-align:center; - text-decoration:none; - min-width:78px; - } - - #topNav a:hover { - background-color: #eeeeee; - color: #000000; - } - #topNav a span { - padding: 0 3px; - } - #topNav #topNav_current { - } - - #topNav #topNav_current a { - font-weight: bold; - color: black; - background-color: #ffffff; - } - - .topnav-admin { - background-image: url('../../icons/x32/system.png') !important; - } - - .topnav-client { - background-image: url('../../icons/x32/client.png') !important; - } - - .topnav-mail { - background-image: url('../../icons/x32/email.png') !important; - } - - .topnav-mailuser { - background-image: url('../../icons/x32/email.png') !important; - } - - .topnav-monitor { - background-image: url('../../icons/x32/monitor.png') !important; - } - - .topnav-sites { - background-image: url('../../icons/x32/sites.png') !important; - } - - .topnav-dns { - background-image: url('../../icons/x32/dns.png') !important; - } - - .topnav-tools { - background-image: url('../../icons/x32/tools.png') !important; - } - - .topnav-help { - background-image: url('../../icons/x32/help.png') !important; - } - - .topnav- { - background-image: url('../../icons/x32/login.png') !important; - } - - .topnav-domain { - background-image: url('../../icons/x32/domain.png') !important; - } - - .topnav-dashboard { - background-image: url('../../icons/x32/dashboard.png') !important; - } - - .topnav-vm{ - background-image: url('../../icons/x32/drawer.png') !important; - } - - .topnav-billing{ - background-image: url('../../icons/x32/calculator.png') !important; - } - -} \ No newline at end of file diff --git a/interface/web/themes/default-304/css/patches/central.css b/interface/web/themes/default-304/css/patches/central.css deleted file mode 100644 index 27dd462b7..000000000 --- a/interface/web/themes/default-304/css/patches/central.css +++ /dev/null @@ -1,37 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) IE-Patch stylesheet - ISPConfig 3: default theme - * (de) IE-Korrektur-Stylesheet - ISPConfig 3: default theme - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* Layout-independent adjustments | Layout-unabhängige Anpassungen ----------------------------------- */ -@import url(../yaml/core/iehacks.css); - -/* Layout-dependent adjustments | Layout-abhängige Anpassungen --------------------------------------- */ -@media screen, projection -{ - /** - * min-width/max-width workaround for IE5.x & IE6 - * - * @workaround - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6 - * @valid no - */ - - * html #page_margins { - /* Fallback if JavaScript is disabled */ - width: 80%; - } -} diff --git a/interface/web/themes/default-304/css/print/print_100.css b/interface/web/themes/default-304/css/print/print_100.css deleted file mode 100644 index 95e63e80a..000000000 --- a/interface/web/themes/default-304/css/print/print_100.css +++ /dev/null @@ -1,31 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) print stylesheet - ISPConfig 3: default theme - * (de) Druck-Stylesheet - ISPConfig 3: default theme - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* import print base styles | Basisformatierung für Drucklayout einbinden */ -@import url(../../yaml/core/print_base.css); - -/* #col1 - x -** #col2 - 0 -** #col3 - 0 -*/ -@media print -{ - #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; } - - #col2 { display:none; } - #col3 { display:none; } -} diff --git a/interface/web/themes/default-304/css/screen/basemod.css b/interface/web/themes/default-304/css/screen/basemod.css deleted file mode 100644 index 31e7bd1ae..000000000 --- a/interface/web/themes/default-304/css/screen/basemod.css +++ /dev/null @@ -1,124 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Screen layout for YAML - ISPConfig 3: default theme - * (de) Bildschirmlayout fr YAML - ISPConfig 3: default theme - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -@media screen, projection -{ - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Formatting YAML's basic layout elements - * (de) Gestaltung des YAML Basis-Layouts - */ - - /* (en) Marginal areas & page background */ - /* (de) Randbereiche & Seitenhintergrund */ - body { background: #EEEEEE url("../../images/screen_bg.png") repeat-x top left fixed; padding: 10px 0; } - - /* (en) Centering layout in old IE-versions */ - /* (de) Zentrierung des Layouts in alten IE-versionen */ - body { text-align: center; } - #page_margins { text-align:left; margin: 0 auto; } - - /* (en) Layout: width, background, borders */ - /* (de) Layout: Breite, Hintergrund, Rahmen */ - /*#page_margins { min-width: 980px; max-width: 80%; background: #fff;}*/ - /* #page_margins { min-width: 980px; max-width: 80%; background: #fff; display: inline-block;}*/ - - /*WARNING: ADded a overrode for this setting in main.tpl with javascript to target non chrome browsers, - This has to be changed too in case that page_margins get changed. Reason: Chrome does not support the - display: table; attribute correctly*/ - #page_margins { min-width: 980px; max-width: 80%; background: #fff;} - /*#page_margins { min-width: 980px; max-width: 80%; background: #fff; display: table;}*/ - - #page{ padding: 10px; } - - /* (en) Designing main layout elements */ - /* (de) Gestaltung der Hauptelemente des Layouts */ - #header { - color: #faf0e6; - padding: 15px 2em 5px 20px; - background: #9a9a9a url("../../images/header_bg.png") repeat-x top left; - } - - /* (en) Text Alignment for #topnav content */ - /* (de) Textausrichtung für #topnav Inhalte */ - #topnav { text-align: left; } - - /* (en) Absolute positioning only within #header */ - /* (de) Absolute Positionierung erfolgt nur innerhalb von #header */ - #header #topnav { - position: absolute; - top: 0px; - left: 0px; - } - - /* (en) Text Alignment for #topnav content */ - /* (de) Textausrichtung für #topnav Inhalte */ - #topsubnav { text-align: right; } - - /* (en) Absolute positioning only within #header */ - /* (de) Absolute Positionierung erfolgt nur innerhalb von #header */ - #header #topsubnav { - position:absolute; - top: 10px; - right: 10px; - } - - /* (en) adjustment of main navigation */ - /* (de) Anpassung der Hauptnavigation */ - #nav ul { margin-left: 20px; } - #nav_main { background: #9a9a9a repeat-x top left; } - - #main { background: #fff;padding:10px 0; } - - #footer { - color:#666; - background: #f9f9f9; - padding: 10px 20px; - border-top: 5px #efefef solid; - font-size: 0.8em; - text-align: center; - } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Formatting content container - * (de) Formatierung der Inhalts-Container - * - * |-------------------------------| - * | #header | - * |-------------------------------| - * | #col1 | #col3 | #col2 | - * | 25% | flexible | 25% | - * |-------------------------------| - * | #footer | - * |-------------------------------| - */ - - - #col1 { width: 25%; } - #col1_content { padding: 10px 10px 10px 20px; } - - #col2 { width: 25%; } - #col2_content { padding: 10px 20px 10px 10px; } - - #col3 { margin: 0 25%; } - #col3_content { padding: 10px; } - - /*------------------------------------------------------------------------------------------------------*/ -} diff --git a/interface/web/themes/default-304/css/screen/basemod_2col_left_seo.css b/interface/web/themes/default-304/css/screen/basemod_2col_left_seo.css deleted file mode 100644 index 3914fc33b..000000000 --- a/interface/web/themes/default-304/css/screen/basemod_2col_left_seo.css +++ /dev/null @@ -1,48 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Variation of screen layout (basemod.css) - ISPConfig 3: default theme - * (de) Variation des Screenlayouts (basemod.css) - ISPConfig 3: default theme - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -@media screen, projection -{ - /** - * (en) Repositioning content container - * (de) Neupositionierung der Content Container - * - * |-------------------------------| - * | #header | - * |-------------------------------| - * | #col1 | #col3 | - * | 200px | flexible | - * |-------------------------------| - * | #footer | - * |-------------------------------| - */ - - /* #col1 becomes the fixed navigation column | #col1 wird zur Navigationsspalte mit fester Breite */ - #col1 { width: 200px; float:left} - #col1_content { padding: 0 10px 0 0; } - - /* #col2 is turned off | #col2 abschalten */ - #col2 { display:none; } - - /* #col3 becomes the main column | #col3 wird zur Hauptspalte */ - #col3 { margin-left: 200px; margin-right: 0; } - #col3_content { padding: 0px 10px 10px 20px; } - - /* Graphic-free column dividers between #col1 and #col3 | Grafikfreier Spaltentrenner zw. #col1 und #col3*/ - #col3 {border-left: 1px #ddd solid;} - #main {padding: 1em 0} -} diff --git a/interface/web/themes/default-304/css/screen/content.css b/interface/web/themes/default-304/css/screen/content.css deleted file mode 100644 index 4f65858bd..000000000 --- a/interface/web/themes/default-304/css/screen/content.css +++ /dev/null @@ -1,203 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Uniform design of standard content elements - ISPConfig 3: default theme - * (de) Einheitliche Standardformatierungen fr die wichtigten Inhalts-Elemente - ISPConfig 3: default theme - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - * @appdef yaml - */ - -@media all -{ - /** - * Fonts - * (en) font-family and font-size selection for headings and standard text elements - * (de) Zeichensatz und Schriftgrößen für Überschriften und übliche Text-Elemente - * - * @section content-fonts - */ - - /* (en) reset font size for all elements to standard (16 Pixel) */ - /* (de) Alle Schriftgrößen auf Standardgröße (16 Pixel) zurücksetzen */ - html * { font-size: 100.01% } - - /* (en) reset monospaced elements to font size 16px in Gecko browsers */ - /* (de) Schriftgröße von monospaced Elemente auf 16 Pixel setzen */ - textarea, pre, tt, code { - font-family: Consolas,"Lucida Console","Courier New",monospace; - font-size: 0.9em; - } - - /* (en) base layout gets standard font size 12px */ - /* (de) Basis-Layout erhält Standardschriftgröße von 12 Pixeln */ - body { - font-family: 'Trebuchet MS', sans-serif; - font-size: 75.00%; - color: #444; - } - - h1,h2,h3,h4,h5,h6 { - font-family: 'Trebuchet MS', sans-serif; - font-weight:bold; - color:#666; - margin: 0 0 0.25em 0; - } - - h1 { font-size: 200% } /* 24px */ - h2 { font-size: 200% } /* 24px */ - h3 { font-size: 150% } /* 18px */ - h4 { font-size: 133.33% } /* 16px */ - h5 { font-size: 116.67% } /* 14px */ - h6 { font-size: 116.67%; font-style:italic } /* 14px */ - - #header h1 { - font-size:2.5em; - letter-spacing:-2px; - line-height:65%; - color: silver; - } - - #header span { - color:#333333; - } - - p { line-height: 1.5em; margin: 0 0 1em 0; } - - /* ### Lists | Listen #### */ - - ul, ol, dl { line-height: 1.5em; margin: 0 0 1em 1em } - li { margin-left: 1.5em; line-height: 1.5em } - - dt { font-weight: bold } - dd { margin: 0 0 1em 2em } - - /* ### text formatting | Textauszeichnung ### */ - - cite, blockquote { font-style:italic } - blockquote { margin: 0 0 1em 1.5em } - - strong,b { font-weight: bold } - em,i { font-style:italic } - - pre, code { font-family: monospace; font-size: 1.1em; } - - acronym, abbr { - letter-spacing: .07em; - border-bottom: .1em dashed #c00; - cursor: help; - } - - /* Set a background-color, no system backgorund used anymore */ - select, input, textarea { - background: #FFFFFF; - border: 1px solid #DFDFDF; - padding: 1px; - outline:none; - } - - - /** - * Generic Content Classes - * (en) standard classes for positioning and highlighting - * (de) Standardklassen zur Positionierung und Hervorhebung - * - * @section content-generic-classes - */ - - .note {background: #dfd; padding: 1em; border-top: 1px #bdb dotted; border-bottom: 1px #bdb dotted;} - .important {background: #ffd; padding: 1em; border-top: 1px #ddb dotted; border-bottom: 1px #ddb dotted;} - .warning {background: #fdd; padding: 1em; border-top: 1px #dbb dotted; border-bottom: 1px #dbb dotted;} - - .float_left { float: left; display:inline; margin-right: 1em; margin-bottom: 0.15em; } - .float_right { float: right; display:inline; margin-left: 1em; margin-bottom: 0.15em; } - .center { text-align:center; margin: 0.5em auto } - - /** - * External Links - * - * (en) Formatting of hyperlinks - * (de) Gestaltung von Hyperlinks - * - */ - - a {color: #4D87C7; text-decoration:none;} - a:focus, - a:hover, - a:active {color:#182E7A; text-decoration:underline;} - - #topsubnav a { color: #f0f8ff; font-weight: normal; background:transparent; text-decoration:none; } - #topsubnav a:focus, - #topsubnav a:hover, - #topsubnav a:active { text-decoration:underline; background-color: transparent;} - - #footer a { color: #999; background:transparent; font-weight: bold;} - #footer a:focus, - #footer a:hover, - #footer a:active {color: #4D87C7; background-color: transparent; text-decoration:underline;} - - /** - * (en) Emphasizing external Hyperlinks via CSS - * (de) Hervorhebung externer Hyperlinks mit CSS - * - * @section content-external-links - * @app-yaml-default disabled - */ - - /* - #main a[href^="http://www.my-domain.com"], - #main a[href^="https://www.my-domain.com"] - { - padding-left: 12px; - background-image: url('your_image.gif'); - background-repeat: no-repeat; - background-position: 0 0.45em; - } - */ - - /** - * Tables | Tabellen - * (en) Generic classes for table-width and design definition - * (de) Generische Klassen für die Tabellenbreite und Gestaltungsvorschriften für Tabellen - * - * @section content-tables - */ - - table { width: auto; border-collapse:collapse; margin-bottom: 0.5em; } - table.full { width: 100%; } - table.fixed { table-layout:fixed } - - table.list td{max-width:350px;min-width: 32px;white-space: nowrap;overflow:hidden;text-overflow: ellipsis; -o-text-overflow: ellipsis; -icab-text-overflow: ellipsis; -khtml-text-overflow: ellipsis; -moz-text-overflow: ellipsis; -webkit-text-overflow: ellipsis;} - th,td { padding: 0.5em;text-align:left;} - thead th { background: #444 url(../../images/lists_thead_bg.png) repeat-x; color: #fff } - tbody th { background: #ccc; color: #333 } - tbody th.sub { background: #ddd; color: #333 } - - /** - * Miscellaneous | Sonstiges - * - * @section content-misc - */ - - hr { - color: #fff; - background:transparent; - margin: 0 0 0.5em 0; - padding: 0 0 0.5em 0; - border:0; - border-bottom: 1px #eee solid; - } - - /* Sorting cusror and backgorund */ - .pnl_listarea th[class^="tbl_col"]{cursor:pointer} - .pnl_listarea th[class^="tbl_col"]:hover{background-position:0 -15px!important} - -} diff --git a/interface/web/themes/default-304/css/screen/content_ispc.css b/interface/web/themes/default-304/css/screen/content_ispc.css deleted file mode 100644 index 64e2df350..000000000 --- a/interface/web/themes/default-304/css/screen/content_ispc.css +++ /dev/null @@ -1,1045 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Uniform design of ISPConfig elements - ISPConfig 3: default theme - * (de) Einheitliche Standardformatierungen f�r ISPConfig-Elemente - ISPConfig 3: default theme - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - * @appdef yaml - */ - -@media all -{ - .pageForm_description { - font-size: 12px; - } - - /* Tab-Box */ - .tabbox_tabs { - border-bottom: 1px solid #d3d3d3; - } - .tabbox_tabs ul { - list-style: none; - padding: 0; - margin: 0; - } - .tabbox_tabs li { - display: inline; - margin: 0 2px 0 0; - } - .tabbox_tabs a { - padding: 0 1em; - text-decoration: none; - color: black; - background: #d3d3d3; - border: 1px solid #d3d3d3; - } - .tabbox_tabs a:hover { - background: #fc0; - color: #540; - } - .tabbox_tabs .active a { - font-weight: bold; - color: #ff6600; - background: #ffffff; - } - - .pnl_toolsarea fieldset, .pnl_listarea fieldset, .pnl_formsarea fieldset { - border-top: 1px solid #949494; - margin: 20px 0; - } - .pnl_toolsarea fieldset legend , .pnl_listarea fieldset legend { - font-weight: bold; - color: #6299c5; - } - .pnl_formarea fieldset { - font-weight: bold; - } - - /* hide line and legend when inside tabbed content */ - #tabbox_content * .pnl_toolsarea fieldset, #tabbox_content * .pnl_listarea fieldset, #tabbox_content * .pnl_formsarea fieldset { border: none !important; } - #tabbox_content * .pnl_toolsarea fieldset legend, #tabbox_content * .pnl_listarea fieldset legend, #tabbox_content * .pnl_formsarea fieldset legend { display: none !important; } - - .codeview { - margin:20px 0; - padding:2px; - border: 1px solid #ffcc00; - background: #fffaea; - font-family: Consolas, "Lucida Console", "Courier New", monospace; - font-size: 0.9em; - } - - /* Lists */ - table.list { - width: 100%; - border: 1px solid #d3d3d3 !important; - } - table.list thead th { font-size: 10px; } - table.list tbody { border: 1px solid #d3d3d3 !important; } - table.list tfoot td { text-align: center; background: #f8f8f8 url("../../images/lists_tfoot_bg.png") repeat-x bottom left; padding: 24px 8px 8px 8px; } - table.list .tbl_row_even { background: #fcfcfc; } - table.list .tbl_row_uneven { background: #f0f8ff; } - table.list tr:hover { background: #fffacd; } - table.list td { word-wrap:break-word;white-space:pre-wrap; } - table.list td.tbl_col_buttons { word-wrap:normal;white-space:normal; } - - /* Password Strength */ - #passBar { - width: 101px; height: 10px; - background: url("../../images/meter_bg.gif") repeat-x bottom left; - margin: 2px 0; - float: left; - } - #passText { - padding: 0; - float: left; - } - - /* Systemmonitor */ - .systemmonitor-server, - .systemmonitor-ve, - .systemmonitor-state { - margin: 10px 5px; - font-family: Consolas, "Lucida Console", "Courier New", monospace; - font-size: 0.9em; - float: left; - width: 100%; - } - .systemmonitor-server:hover, - .systemmonitor-vm:hover { background-color: #FFFACD; } - .state-no_state, - .state-no_state-ve { - border-top: 4px solid #95A19F; - background-color: #f8f8ff; - } - .state-unknown, - .state-unknown-ve { - border-top: 4px solid #30302e; - background-color: #cecfc5; - } - .state-ok, - .state-ok-ve { - border-top: 4px solid #23fb00; - background-color: #adffa2; - } - .state-info, - .state-info-ve { - border-top: 4px solid #183e99; - background-color: #d4e2ff; - } - .state-warning, - .state-warning-ve { - border-top: 4px solid #ffa800; - background-color: #ffda93; - } - .state-critical, - .state-critical-ve { - border-top: 4px solid #ff0000; - background-color: #ffb9b9; - } - .state-error, - .state-error-ve { - border-top: 4px solid #ff0000; - background-color: #ff7f7f; - } - div.icoDevice { - float: left; - width: 64px; - height: 64px; - margin: 5px; - background: url("../../icons/device_sprite.png") no-repeat transparent; - } - .systemmonitor-server div.icoDevice { background-position: 0 0; } - .systemmonitor-ve div.icoDevice { background-position: -64px 0; } - .systemmonitor-network div.icoDevice { background-position: -128px -0; } - div.statusDevice, div.statusMsg { float: left; } - - div.statusMsg p { - float: left; - padding: 5px; - } - .systemmonitor-state .status { - margin: 5px; - } - .status { - float: right; - width: 32px; - height: 32px; - background: url("../../icons/x32_sprite.png") no-repeat transparent; - } - div.status { - float: left !important; - } - .state-no_state .status, - .state-no_state-ve .status, - .state-unknown .status, - .state-unknown-ve .status { background-position: 0 -207px; } - - .state-ok .status, - .state-ok-ve .status { background-position: 0 -270px; } - - .state-info .status, - .state-info-ve .status { background-position: 0 -336px; } - - .state-warning .status, - .state-warning-ve .status { background-position: 0 -143px; } - - .state-critical .status, - .state-critical-ve .status { background-position: 0 -463px; } - - .state-error .status, - .state-error-ve .status { background-position: 0 -400px; } - - /* Usage unknown - .systemmonitor-content table { - border: none; - margin-top: 10px; - } - - .systemmonitor-content * .online { - border: 1px solid #ffffff; - background-color: #E3FFB8; - color: #000000; - padding:0px 5px; - } - .systemmonitor-content * .offline { - border: 1px solid #ffffff; - background-color: #d12f19; - color:#ffffff; - padding:0px 5px; - }*/ - - /* Dashboard */ - .dashboard-modules { - float:left; - width:60px; - height: 60px; - border:1px dotted #888888; - background-color: #cccccc; - margin:10px; - background-position: center 5px; - background-repeat: no-repeat; - text-align: center; - } - - .dashboard-modules a, .dashboard-modules a:hover{ - color:Black; - display:block; - font-weight:bold; - height:30px; - padding-top:42px; - width:60px; - text-decoration: none; - } - - .dashboard-modules.admin { background-image: url("../../icons/x32/system.png") !important; } - .dashboard-modules.vm { background-image: url("../../icons/x32/drawer.png") !important; } - .dashboard-modules.client { background-image: url("../../icons/x32/client.png") !important; } - .dashboard-modules.mail { background-image: url("../../icons/x32/email.png") !important; } - .dashboard-modules.monitor { background-image: url("../../icons/x32/monitor.png") !important; } - .dashboard-modules.dns { background-image: url("../../icons/x32/dns.png") !important; } - .dashboard-modules.tools { background-image: url("../../icons/x32/tools.png") !important; } - .dashboard-modules.help { background-image: url("../../icons/x32/help.png") !important; } - .dashboard-modules.domain { background-image: url("../../icons/x32/domain.png") !important; } - .dashboard-modules.sites { background-image: url("../../icons/x32/sites.png") !important; } - .dashboard-modules.billing { background-image: url("../../icons/x32/calculator.png") !important; } - - .panel_dashboard h2 { - font-size:20px; - } - - /* Image-Replacement */ - .swap { background-repeat:no-repeat; } - .swap span { display:none; height:16px; } - #ir-HeaderLogo { background-image:url("../../images/header_logo.png"); height:32px;margin:0 0 0.2em; } - #ir-Yes { background-image:url("../../icons/x16/tick_circle.png"); height:16px; } - #ir-No { background-image:url("../../icons/x16/cross_circle.png"); height:16px; } - - /* BUTTONS */ - .buttons a, .buttons button{ - display:block; - float:left; - margin:0 7px 0 0; - background-color:#f5f5f5; - border:1px solid #777777; - border-top: 1px solid #c8c8c8; - border-left:1px solid #c8c8c8; - - font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; - font-size:90%; - line-height:130%; - text-decoration:none; - font-weight:bold; - color:#565656; - cursor:pointer; - padding:5px 10px 6px 7px; /* Links */ - } - .buttons button{ - width:auto; - overflow:visible; - padding:4px 10px 3px 7px; /* IE6 */ - } - .buttons button[type]{ - padding:5px 10px 5px 7px; /* Firefox */ - line-height:17px; /* Safari */ - } - *:first-child+html button[type]{ - padding:4px 10px 3px 7px; /* IE7 */ - } - .buttons button img, .buttons a img{ - margin:0 3px -3px 0 !important; - padding:0; - border:none; - width:16px; - height:16px; - } - - /* BUTTONS STANDARD */ - button:hover, .buttons a:hover{ - background-color:#dff4ff; - border:1px solid #c2e1ef; - color:#336699; - } - .buttons a:active{ - background-color:#6299c5; - border:1px solid #6299c5; - color:#fff; - } - - /* BUTTONS POSITIVE */ - button.positive, .buttons a.positive{ - color:#529214; - } - .buttons a.positive:hover, button.positive:hover{ - background-color:#E6EFC2; - border:1px solid #C6D880; - color:#529214; - } - .buttons a.positive:active{ - background-color:#529214; - border:1px solid #529214; - color:#fff; - } - - /* BUTTONS NEGATIVE */ - .buttons a.negative, button.negative{ - color:#d12f19; - } - .buttons a.negative:hover, button.negative:hover{ - background-color:#fbe3e4; - border:1px solid #fbc2c4; - color:#d12f19; - } - .buttons a.negative:active{ - background-color:#d12f19; - border:1px solid #d12f19; - color:#fff; - } - - /* Button with icon and text */ - .iconstxt { - background-repeat: no-repeat; - background-position: 4px center; - } - .iconstxt span { padding-left: 20px; } - .iconstxt.icoPositive { background-image: url("../../icons/x16/tick_circle_frame.png"); } - .iconstxt.icoNegative { background-image: url("../../icons/x16/cross_circle_frame.png"); } - .iconstxt.icoAdd { background-image: url("../../icons/x16/plus_circle_frame.png"); } - .iconstxt.icoKey { background-image: url("../../icons/x16/key.png"); } - .iconstxt.icoDelete { background-image: url("../../icons/x16/minus_circle_frame.png"); } - .iconstxt.icoDownload { background-image: url("../../icons/x16/arrow_270.png"); } - .iconstxt.icoRestore { background-image: url("../../icons/x16/arrow_circle_225.png"); } - - /* Button with icon and without text */ - .icons16 span { display: none; } - a.icons16 { height: 18px; width: 18px; padding: 0; background-repeat: no-repeat; background-position: 1px 1px;} - button.icons16 { height: 20px; width: 20px; padding: 0; background-repeat: no-repeat; background-position: 1px 1px;} - - .icons16.icoDelete { background-image: url("../../icons/x16/minus_circle_frame.png"); } - .icons16.icoFilter { background-image: url("../../icons/x16/funnel.png"); } - .icons16.icoEdit { background-image: url("../../icons/x16/wrench.png"); } - .icons16.icoDbAdmin { background-image: url("../../icons/x16/database.png"); } - .icons16.icoLoginAs { background-image: url("../../icons/x16/user_go.png"); } - .icons16.icoWebmailer { background-image: url("../../icons/x16/mails_arrow.png"); } - .icons16.icoPDF { background-image: url("../../icons/x16/pdf.png"); } - .icons16.icoAction { background-image: url("../../icons/x16/arrow.png"); } - - #ajaxloader { - text-align:center; - margin-top: 180px; - } - - .blockLabel.email_at { - width: 20px !important; - margin: 1.6em 0.3em 0 0 !important - } - .textDisplay { display: block; } - - /* Form Length Classes */ - .textInput.formLengthBool { width: 25px !important; } - .selectInput.formLengthBool { width: 60px !important; } - .textInput.formLengthLimit { width: 50px !important; } - .selectInput.formLengthLimit { width: 85px !important; } - .formLengthDate { width: 75px !important; } - .formLengthIPv4 { width: 125px !important; } - .formLengthIPv6 { width: 100% !important; } - .formLengthEmailUser { width: 30% !important; } - .formLengthEmailDomain { width: 30% !important; } - .formLengthHalf { width: 15% !important; } - .formLengthDouble { width: 50% !important; } - - /* Individual Form Lengths */ - .textInput#username, .textInput#password, .textInput#passwort, .textInput#source_password { width: 100px; } - .selectInput#language { width: 75px; } - .selectInput#client_group_id, .selectInput#default_group { width: 125px; } - input#refresh, input#retry, input#expire, input#minimum, input#ttl { width: 50px !important; } - - /* --- */ - - a[href $='#logout'] { padding-right: 18px; background: transparent url("../../icons/x16/logout.png") no-repeat right top !important; } - - /* Select Menu with Images */ - select.withicons option { - background-repeat:no-repeat; - background-position: 1px; - padding-left:24px; - } - select.flags option { - background-image: url("../../icons/flags_sprite.png"); - background-repeat: no-repeat; - padding: 1px 0 1px 30px; - } - - select.flags option[value=EL] {background-position:0 -1475px} - select.flags option[value=AD], select.flags option[value=ad] {background-position:0 -1px} - select.flags option[value=AE], select.flags option[value=ae] {background-position:0 -23px} - select.flags option[value=AF], select.flags option[value=af] {background-position:0 -45px} - select.flags option[value=AG], select.flags option[value=ag] {background-position:0 -67px} - select.flags option[value=AI], select.flags option[value=ai] {background-position:0 -89px} - select.flags option[value=AL], select.flags option[value=al] {background-position:0 -111px} - select.flags option[value=AM], select.flags option[value=am] {background-position:0 -133px} - select.flags option[value=AN], select.flags option[value=an] {background-position:0 -155px} - select.flags option[value=AO], select.flags option[value=ao] {background-position:0 -177px} - select.flags option[value=AQ], select.flags option[value=aq] {background-position:0 -199px} - select.flags option[value=AR], select.flags option[value=ar] {background-position:0 -221px} - select.flags option[value=AS], select.flags option[value=as] {background-position:0 -243px} - select.flags option[value=AT], select.flags option[value=at] {background-position:0 -265px} - select.flags option[value=AU], select.flags option[value=au] {background-position:0 -287px} - select.flags option[value=AW], select.flags option[value=aw] {background-position:0 -309px} - select.flags option[value=AX], select.flags option[value=ax] {background-position:0 -331px} - select.flags option[value=AZ], select.flags option[value=az] {background-position:0 -353px} - select.flags option[value=BA], select.flags option[value=ba] {background-position:0 -375px} - select.flags option[value=BB], select.flags option[value=bb] {background-position:0 -397px} - select.flags option[value=BD], select.flags option[value=bd] {background-position:0 -419px} - select.flags option[value=BE], select.flags option[value=be] {background-position:0 -441px} - select.flags option[value=BF], select.flags option[value=bf] {background-position:0 -463px} - select.flags option[value=BG], select.flags option[value=bg] {background-position:0 -485px} - select.flags option[value=BH], select.flags option[value=bh] {background-position:0 -507px} - select.flags option[value=BI], select.flags option[value=bi] {background-position:0 -529px} - select.flags option[value=BJ], select.flags option[value=bj] {background-position:0 -551px} - select.flags option[value=BM], select.flags option[value=bm] {background-position:0 -573px} - select.flags option[value=BN], select.flags option[value=bn] {background-position:0 -595px} - select.flags option[value=BO], select.flags option[value=bo] {background-position:0 -617px} - select.flags option[value=BR], select.flags option[value=br] {background-position:0 -639px} - select.flags option[value=BS], select.flags option[value=bs] {background-position:0 -661px} - select.flags option[value=BT], select.flags option[value=bt] {background-position:0 -683px} - select.flags option[value=BV], select.flags option[value=bv] {background-position:0 -705px} - select.flags option[value=BW], select.flags option[value=bw] {background-position:0 -727px} - select.flags option[value=BY], select.flags option[value=by] {background-position:0 -749px} - select.flags option[value=BZ], select.flags option[value=bz] {background-position:0 -771px} - select.flags option[value=CA], select.flags option[value=ca] {background-position:0 -793px} - select.flags option[value=CC], select.flags option[value=cc] {background-position:0 -837px} - select.flags option[value=CD], select.flags option[value=cd] {background-position:0 -859px} - select.flags option[value=CF], select.flags option[value=cf] {background-position:0 -881px} - select.flags option[value=CG], select.flags option[value=cg] {background-position:0 -903px} - select.flags option[value=CH], select.flags option[value=ch] {background-position:0 -925px} - select.flags option[value=CI], select.flags option[value=ci] {background-position:0 -947px} - select.flags option[value=CK], select.flags option[value=ck] {background-position:0 -969px} - select.flags option[value=CL], select.flags option[value=cl] {background-position:0 -991px} - select.flags option[value=CM], select.flags option[value=cm] {background-position:0 -1013px} - select.flags option[value=CN], select.flags option[value=cn] {background-position:0 -1035px} - select.flags option[value=CO], select.flags option[value=co] {background-position:0 -1057px} - select.flags option[value=CR], select.flags option[value=cr] {background-position:0 -1079px} - select.flags option[value=CS], select.flags option[value=cs] {background-position:0 -1101px} - select.flags option[value=CU], select.flags option[value=cu] {background-position:0 -1123px} - select.flags option[value=CV], select.flags option[value=cv] {background-position:0 -1145px} - select.flags option[value=CX], select.flags option[value=cx] {background-position:0 -1167px} - select.flags option[value=CY], select.flags option[value=cy] {background-position:0 -1189px} - select.flags option[value=CZ], select.flags option[value=cz] {background-position:0 -1211px} - select.flags option[value=DE], select.flags option[value=de] {background-position:0 -1233px} - select.flags option[value=DJ], select.flags option[value=dj] {background-position:0 -1255px} - select.flags option[value=DK], select.flags option[value=dk] {background-position:0 -1277px} - select.flags option[value=DM], select.flags option[value=dm] {background-position:0 -1299px} - select.flags option[value=DO], select.flags option[value=do] {background-position:0 -1321px} - select.flags option[value=DZ], select.flags option[value=dz] {background-position:0 -1343px} - select.flags option[value=EC], select.flags option[value=ec] {background-position:0 -1365px} - select.flags option[value=EE], select.flags option[value=ee] {background-position:0 -1387px} - select.flags option[value=EG], select.flags option[value=eg] {background-position:0 -1409px} - select.flags option[value=EH], select.flags option[value=eh] {background-position:0 -1431px} - select.flags option[value=ER], select.flags option[value=er] {background-position:0 -1497px} - select.flags option[value=ES], select.flags option[value=ET], select.flags option[value=es], select.flags option[value=et] {background-position:0 -1519px} - select.flags option[value=FI], select.flags option[value=fi] {background-position:0 -1585px} - select.flags option[value=FJ], select.flags option[value=fj] {background-position:0 -1607px} - select.flags option[value=FK], select.flags option[value=fk] {background-position:0 -1629px} - select.flags option[value=FM], select.flags option[value=fm] {background-position:0 -1651px} - select.flags option[value=FO], select.flags option[value=fo] {background-position:0 -1673px} - select.flags option[value=FR], select.flags option[value=fr] {background-position:0 -1695px} - select.flags option[value=GA], select.flags option[value=ga] {background-position:0 -1717px} - select.flags option[value=GB], select.flags option[value=en], select.flags option[value=gb] {background-position:0 -1739px} - select.flags option[value=GD], select.flags option[value=gd] {background-position:0 -1761px} - select.flags option[value=GE], select.flags option[value=ge] {background-position:0 -1783px} - select.flags option[value=GF], select.flags option[value=gf] {background-position:0 -1805px} - select.flags option[value=GH], select.flags option[value=gh] {background-position:0 -1827px} - select.flags option[value=GI], select.flags option[value=gi] {background-position:0 -1849px} - select.flags option[value=GL], select.flags option[value=gl] {background-position:0 -1871px} - select.flags option[value=GM], select.flags option[value=gm] {background-position:0 -1893px} - select.flags option[value=GN], select.flags option[value=gn] {background-position:0 -1915px} - select.flags option[value=GP], select.flags option[value=gp] {background-position:0 -1937px} - select.flags option[value=GQ], select.flags option[value=gq] {background-position:0 -1959px} - select.flags option[value=GR], select.flags option[value=el], select.flags option[value=gr] {background-position:0 -1981px} - select.flags option[value=GS], select.flags option[value=gs] {background-position:0 -2003px} - select.flags option[value=GT], select.flags option[value=gt] {background-position:0 -2025px} - select.flags option[value=GU], select.flags option[value=gu] {background-position:0 -2047px} - select.flags option[value=GW], select.flags option[value=gw] {background-position:0 -2069px} - select.flags option[value=GY], select.flags option[value=gy] {background-position:0 -2091px} - select.flags option[value=HK], select.flags option[value=hk] {background-position:0 -2113px} - select.flags option[value=HM], select.flags option[value=hm] {background-position:0 -2135px} - select.flags option[value=HN], select.flags option[value=hn] {background-position:0 -2157px} - select.flags option[value=HR], select.flags option[value=hr] {background-position:0 -2179px} - select.flags option[value=HT], select.flags option[value=ht] {background-position:0 -2201px} - select.flags option[value=HU], select.flags option[value=hu] {background-position:0 -2223px} - select.flags option[value=ID], select.flags option[value=id] {background-position:0 -2245px} - select.flags option[value=IE], select.flags option[value=ie] {background-position:0 -2267px} - select.flags option[value=IL], select.flags option[value=il] {background-position:0 -2289px} - select.flags option[value=IN], select.flags option[value=in] {background-position:0 -2311px} - select.flags option[value=IO], select.flags option[value=io] {background-position:0 -2333px} - select.flags option[value=IQ], select.flags option[value=iq] {background-position:0 -2355px} - select.flags option[value=IR], select.flags option[value=ir] {background-position:0 -2377px} - select.flags option[value=IS], select.flags option[value=is] {background-position:0 -2399px} - select.flags option[value=IT], select.flags option[value=it] {background-position:0 -2421px} - select.flags option[value=JM], select.flags option[value=jm] {background-position:0 -2443px} - select.flags option[value=JO], select.flags option[value=jo] {background-position:0 -2465px} - select.flags option[value=JP], select.flags option[value=ja], select.flags option[value=jp] {background-position:0 -2487px} - select.flags option[value=KE], select.flags option[value=ke] {background-position:0 -2509px} - select.flags option[value=KG], select.flags option[value=kg] {background-position:0 -2531px} - select.flags option[value=KH], select.flags option[value=kh] {background-position:0 -2553px} - select.flags option[value=KI], select.flags option[value=ki] {background-position:0 -2575px} - select.flags option[value=KM], select.flags option[value=km] {background-position:0 -2597px} - select.flags option[value=KN], select.flags option[value=kn] {background-position:0 -2619px} - select.flags option[value=KP], select.flags option[value=kp] {background-position:0 -2641px} - select.flags option[value=KR], select.flags option[value=kr] {background-position:0 -2663px} - select.flags option[value=KW], select.flags option[value=kw] {background-position:0 -2685px} - select.flags option[value=KY], select.flags option[value=ky] {background-position:0 -2707px} - select.flags option[value=KZ], select.flags option[value=kz] {background-position:0 -2729px} - select.flags option[value=LA], select.flags option[value=la] {background-position:0 -2751px} - select.flags option[value=LB], select.flags option[value=lb] {background-position:0 -2773px} - select.flags option[value=LC], select.flags option[value=lc] {background-position:0 -2795px} - select.flags option[value=LI], select.flags option[value=li] {background-position:0 -2817px} - select.flags option[value=LK], select.flags option[value=lk] {background-position:0 -2839px} - select.flags option[value=LR], select.flags option[value=lr] {background-position:0 -2861px} - select.flags option[value=LS], select.flags option[value=ls] {background-position:0 -2883px} - select.flags option[value=LT], select.flags option[value=lt] {background-position:0 -2905px} - select.flags option[value=LU], select.flags option[value=lu] {background-position:0 -2927px} - select.flags option[value=LV], select.flags option[value=lv] {background-position:0 -2949px} - select.flags option[value=LY], select.flags option[value=ly] {background-position:0 -2971px} - select.flags option[value=MA], select.flags option[value=ma] {background-position:0 -2993px} - select.flags option[value=MC], select.flags option[value=mc] {background-position:0 -3015px} - select.flags option[value=MD], select.flags option[value=md] {background-position:0 -3037px} - select.flags option[value=ME], select.flags option[value=me] {background-position:0 -3059px} - select.flags option[value=MG], select.flags option[value=mg] {background-position:0 -3081px} - select.flags option[value=MH], select.flags option[value=mh] {background-position:0 -3103px} - select.flags option[value=MK], select.flags option[value=mk] {background-position:0 -3125px} - select.flags option[value=ML], select.flags option[value=ml] {background-position:0 -3147px} - select.flags option[value=MM], select.flags option[value=mm] {background-position:0 -3169px} - select.flags option[value=MN], select.flags option[value=mn] {background-position:0 -3191px} - select.flags option[value=MO], select.flags option[value=mo] {background-position:0 -3213px} - select.flags option[value=MP], select.flags option[value=mp] {background-position:0 -3235px} - select.flags option[value=MQ], select.flags option[value=mq] {background-position:0 -3257px} - select.flags option[value=MR], select.flags option[value=mr] {background-position:0 -3279px} - select.flags option[value=MS], select.flags option[value=ms] {background-position:0 -3301px} - select.flags option[value=MT], select.flags option[value=mt] {background-position:0 -3323px} - select.flags option[value=MU], select.flags option[value=mu] {background-position:0 -3345px} - select.flags option[value=MV], select.flags option[value=mv] {background-position:0 -3367px} - select.flags option[value=MW], select.flags option[value=mw] {background-position:0 -3389px} - select.flags option[value=MX], select.flags option[value=mx] {background-position:0 -3411px} - select.flags option[value=MY], select.flags option[value=my] {background-position:0 -3433px} - select.flags option[value=MZ], select.flags option[value=mz] {background-position:0 -3455px} - select.flags option[value=NA], select.flags option[value=na] {background-position:0 -3477px} - select.flags option[value=NC], select.flags option[value=nc] {background-position:0 -3499px} - select.flags option[value=NE], select.flags option[value=ne] {background-position:0 -3521px} - select.flags option[value=NF], select.flags option[value=nf] {background-position:0 -3543px} - select.flags option[value=NG], select.flags option[value=ng] {background-position:0 -3565px} - select.flags option[value=NI], select.flags option[value=ni] {background-position:0 -3587px} - select.flags option[value=NL], select.flags option[value=nl] {background-position:0 -3609px} - select.flags option[value=NO], select.flags option[value=no] {background-position:0 -3631px} - select.flags option[value=NP], select.flags option[value=np] {background-position:0 -3653px} - select.flags option[value=NR], select.flags option[value=nr] {background-position:0 -3675px} - select.flags option[value=NU], select.flags option[value=nu] {background-position:0 -3697px} - select.flags option[value=NZ], select.flags option[value=nz] {background-position:0 -3719px} - select.flags option[value=OM], select.flags option[value=om] {background-position:0 -3741px} - select.flags option[value=PA], select.flags option[value=pa] {background-position:0 -3763px} - select.flags option[value=PE], select.flags option[value=pe] {background-position:0 -3785px} - select.flags option[value=PF], select.flags option[value=pf] {background-position:0 -3807px} - select.flags option[value=PG], select.flags option[value=pg] {background-position:0 -3829px} - select.flags option[value=PH], select.flags option[value=ph] {background-position:0 -3851px} - select.flags option[value=PK], select.flags option[value=pk] {background-position:0 -3873px} - select.flags option[value=PL], select.flags option[value=pl] {background-position:0 -3895px} - select.flags option[value=PM], select.flags option[value=pm] {background-position:0 -3917px} - select.flags option[value=PN], select.flags option[value=pn] {background-position:0 -3939px} - select.flags option[value=PR], select.flags option[value=pr] {background-position:0 -3961px} - select.flags option[value=PS], select.flags option[value=ps] {background-position:0 -3983px} - select.flags option[value=PT], select.flags option[value=pt] {background-position:0 -4005px} - select.flags option[value=PW], select.flags option[value=pw] {background-position:0 -4027px} - select.flags option[value=PY], select.flags option[value=py] {background-position:0 -4049px} - select.flags option[value=QA], select.flags option[value=qa] {background-position:0 -4071px} - select.flags option[value=RE], select.flags option[value=re] {background-position:0 -4093px} - select.flags option[value=RO], select.flags option[value=ro] {background-position:0 -4115px} - select.flags option[value=RS], select.flags option[value=rs] {background-position:0 -4137px} - select.flags option[value=RU], select.flags option[value=ru] {background-position:0 -4159px} - select.flags option[value=RW], select.flags option[value=rw] {background-position:0 -4181px} - select.flags option[value=SA], select.flags option[value=sa] {background-position:0 -4203px} - select.flags option[value=SB], select.flags option[value=sb] {background-position:0 -4225px} - select.flags option[value=SC], select.flags option[value=sc] {background-position:0 -4247px} - select.flags option[value=SD], select.flags option[value=sd] {background-position:0 -4291px} - select.flags option[value=SE], select.flags option[value=se] {background-position:0 -4313px} - select.flags option[value=SG], select.flags option[value=sg] {background-position:0 -4335px} - select.flags option[value=SH], select.flags option[value=sh] {background-position:0 -4357px} - select.flags option[value=SI], select.flags option[value=si] {background-position:0 -4379px} - select.flags option[value=SJ], select.flags option[value=sj] {background-position:0 -4401px} - select.flags option[value=SK], select.flags option[value=sk] {background-position:0 -4423px} - select.flags option[value=SL], select.flags option[value=sl] {background-position:0 -4445px} - select.flags option[value=SM], select.flags option[value=sm] {background-position:0 -4467px} - select.flags option[value=SN], select.flags option[value=sn] {background-position:0 -4489px} - select.flags option[value=SO], select.flags option[value=so] {background-position:0 -4511px} - select.flags option[value=SR], select.flags option[value=sr] {background-position:0 -4533px} - select.flags option[value=ST], select.flags option[value=st] {background-position:0 -4555px} - select.flags option[value=SV], select.flags option[value=sv] {background-position:0 -4577px} - select.flags option[value=SY], select.flags option[value=sy] {background-position:0 -4599px} - select.flags option[value=SZ], select.flags option[value=sz] {background-position:0 -4621px} - select.flags option[value=TC], select.flags option[value=tc] {background-position:0 -4643px} - select.flags option[value=TD], select.flags option[value=td] {background-position:0 -4665px} - select.flags option[value=TF], select.flags option[value=tf] {background-position:0 -4687px} - select.flags option[value=TG], select.flags option[value=tg] {background-position:0 -4709px} - select.flags option[value=TH], select.flags option[value=th] {background-position:0 -4731px} - select.flags option[value=TJ], select.flags option[value=tj] {background-position:0 -4753px} - select.flags option[value=TK], select.flags option[value=tk] {background-position:0 -4775px} - select.flags option[value=TL], select.flags option[value=tl] {background-position:0 -4797px} - select.flags option[value=TM], select.flags option[value=tm] {background-position:0 -4819px} - select.flags option[value=TN], select.flags option[value=tn] {background-position:0 -4841px} - select.flags option[value=TO], select.flags option[value=to] {background-position:0 -4863px} - select.flags option[value=TR], select.flags option[value=tr] {background-position:0 -4885px} - select.flags option[value=TT], select.flags option[value=tt] {background-position:0 -4907px} - select.flags option[value=TV], select.flags option[value=tv] {background-position:0 -4929px} - select.flags option[value=TW], select.flags option[value=tw] {background-position:0 -4951px} - select.flags option[value=TZ], select.flags option[value=tz] {background-position:0 -4973px} - select.flags option[value=UA], select.flags option[value=ua] {background-position:0 -4995px} - select.flags option[value=UG], select.flags option[value=ug] {background-position:0 -5017px} - select.flags option[value=UM], select.flags option[value=um] {background-position:0 -5039px} - select.flags option[value=US], select.flags option[value=us] {background-position:0 -5061px} - select.flags option[value=UY], select.flags option[value=uy] {background-position:0 -5083px} - select.flags option[value=UZ], select.flags option[value=uz] {background-position:0 -5105px} - select.flags option[value=VA], select.flags option[value=va] {background-position:0 -5127px} - select.flags option[value=VC], select.flags option[value=vc] {background-position:0 -5149px} - select.flags option[value=VE], select.flags option[value=ve] {background-position:0 -5171px} - select.flags option[value=VG], select.flags option[value=vg] {background-position:0 -5193px} - select.flags option[value=VI], select.flags option[value=vi] {background-position:0 -5215px} - select.flags option[value=VN], select.flags option[value=vn] {background-position:0 -5237px} - select.flags option[value=VU], select.flags option[value=vu] {background-position:0 -5259px} - select.flags option[value=WF], select.flags option[value=wf] {background-position:0 -5303px} - select.flags option[value=WS], select.flags option[value=ws] {background-position:0 -5325px} - select.flags option[value=YE], select.flags option[value=ye] {background-position:0 -5347px} - select.flags option[value=YT], select.flags option[value=yt] {background-position:0 -5369px} - select.flags option[value=ZA], select.flags option[value=za] {background-position:0 -5391px} - select.flags option[value=ZM], select.flags option[value=zm] {background-position:0 -5413px} - select.flags option[value=ZW], select.flags option[value=zw] {background-position:0 -5435px} - - .panel_login { - max-width: 80%; - min-width: 680px; - } - - div.subsectiontoggle { - border:1px solid #ccc; - font-weight:bold; - font-size:14px; - padding-top:10px; - padding-bottom:0; - margin-top:5px; - text-indent:15px; - cursor:pointer; - margin-bottom:10px; - background-color:#f4f4f4; - -moz-border-radius:5px; - -webkit-border-radius:5px; - -khtml-border-radius:5px; - -o-border-radius:5px; - -ms-border-radius:5px; - border-radius:5px; - } - div.subsectiontoggle span{ - display:inline-block; - margin-bottom:-3px; - margin-right:10px; - width:16px; - height:16px; - background:url("../../icons/x16/plus_circle_frame.png") top left no-repeat; - } - div.subsectiontoggle span.showing{ - background:url("../../icons/x16/minus_circle_frame.png") top left no-repeat; - } - div.subsectiontoggle em{ - display:block; - position:relative; - left:425px; - top:-13px; - margin-bottom:-3px; - width:13px; - height:13px; - background:url("../../images/chevron.png") top left no-repeat; - -webkit-transform:none; - -moz-transform:none; - -khtml-transform:none; - -o-transform:none; - -ms-transform:none; - transform:none; - -webkit-transition-duration: .2s; - -moz-transition-duration: .2s; - -khtml-transition-duration: .2s; - -o-transition-duration: .2s; - -ms-transition-duration: .2s; - transition-duration: .2s; - -webkit-transition-property: -webkit-transform; - -moz-transition-property: -moz-transform; - -khtml-transition-property: -khtml-transform; - -o-transition-property: -o-transform; - -ms-transition-property: -ms-transform; - transition-property: transform; - } - div.subsectiontoggle em.showing{ - display:block; - position:relative; - left:425px; - top:-13px; - background:url("../../images/chevron.png") top left no-repeat; - width:13px; - height:13px; - -webkit-transform:rotate(90deg); - -moz-transform:rotate(90deg); - -khtml-transform:rotate(90deg); - -o-transform:rotate(90deg); - -ms-transform:rotate(90deg); - transform:rotate(90deg); - } - div.subsectiontoggle:hover em{ - -webkit-transform:rotate(90deg); - -moz-transform:rotate(90deg); - -khtml-transform:rotate(90deg); - -o-transform:rotate(90deg); - -ms-transform:rotate(90deg); - transform:rotate(90deg); - } - - div.gs-container{ - margin-top:10px; - } - div.gs-container *{ - margin: 0; - padding: 0; - background-position: 0 0; - text-decoration: none; - font-size: 1em; - } - div.gs-container input{ - background: url("../../icons/x16/magnifier_left.png") no-repeat 4px 3px #FFFFFF; - height:20px; - border:1px solid #444; - padding:0 22px 2px; - color:#444; - -moz-border-radius:5px; - -webkit-border-radius:5px; - -khtml-border-radius:5px; - -o-border-radius:5px; - -ms-border-radius:5px; - border-radius:5px; - } - input.gs-loading{ - background-image: url("../../icons/x16/loading.gif"); - background-repeat: no-repeat; - background-position: center right; - } - ul.gs-resultbox{ - margin: 0 !important; - padding: 0 !important; - width: 300px; - z-index: 999999; - border: 1px solid #777; - font-size: 11px; - background: #fff; - -moz-box-shadow: 2px 2px 5px 0 #c5c5c5; - -webkit-box-shadow: 2px 2px 5px 0 #c5c5c5; - -khtml-box-shadow: 2px 2px 5px 0 #c5c5c5; - -o-box-shadow: 2px 2px 5px 0 #c5c5c5; - -ms-box-shadow: 2px 2px 5px 0 #c5c5c5; - box-shadow: 2px 2px 5px 0 #c5c5c5; - list-style: none; - -moz-border-radius:5px; - -webkit-border-radius:5px; - -khtml-border-radius:5px; - -o-border-radius:5px; - -ms-border-radius:5px; - border-radius:5px; - max-height:500px; - overflow:auto; - } - ul.gs-resultbox li{ - float: left; - width: 100%; - clear: both; - cursor: pointer; - } - ul.gs-resultbox li.gs-cheader{ - height: 13px; - overflow: hidden; - padding: 5px 0; - color: #fff; - background: #6ea6d1; - cursor:default; - padding-bottom:10px; - } - ul.gs-resultbox li.gs-cheader p.gs-cheader-title{ - margin: 0 !important; - padding: 0 0 0 10px !important; - float: left; - font-size: 12px; - font-weight: bold; - } - ul.gs-resultbox li.gs-cheader p.gs-cheader-limit{ - margin: 0 !important; - padding: 0 10px 0 0 !important; - float: right; - font-size: 11px; - font-weight: normal; - } - ul.gs-resultbox li.gs-cdata{ - margin: 0 !important; - padding: 0 !important; - border-bottom: 1px solid #c5c5c5; - } - ul.gs-resultbox li.gs-cdata:last-child{ - border-bottom: none; - } - ul.gs-resultbox li.gs-cdata:hover{ - background: #eaf4fd; - } - ul.gs-resultbox li.gs-cdata a{ - display: block; - padding: 5px 10px; - text-decoration: none !important; - background: #fff; - } - ul.gs-resultbox li.gs-cdata a:hover{ - background: #cde0ff; - } - ul.gs-resultbox li.gs-cdata img{ - margin-right: 12px; - } - ul.gs-resultbox li.gs-cdata p{ - margin: 0 !important; - padding: 0 !important; - color: #444; - font-size: 10px; - min-height:30px; - } - ul.gs-resultbox li.gs-cdata p span.gs-cdata-title{ - display: inline !important; - margin: 0 !important; - padding: 0 !important; - font-size: 11px; - font-weight: bold; - color: #000; - } - ul.gs-resultbox li:first-child{ - -moz-border-radius:5px 5px 0 0; - -webkit-border-radius:5px 5px 0 0; - -khtml-border-radius:5px 5px 0 0; - -o-border-radius:5px 5px 0 0; - -ms-border-radius:5px 5px 0 0; - border-radius:5px 5px 0 0; - } - ul.gs-resultbox li:last-child{ - -moz-border-radius:0 0 5px 5px; - -webkit-border-radius:0 0 5px 5px; - -khtml-border-radius:0 0 5px 5px; - -o-border-radius:0 0 5px 5px; - -ms-border-radius:0 0 5px 5px; - border-radius:0 0 5px 5px; - } - - div.df-container{ - } - div.df-container *{ - margin: 0; - padding: 0; - background-position: 0 0; - text-decoration: none; - font-size: 1em; - } - div.df-container input{ - } - input.df-loading{ - background-image: url("../../icons/x16/loading.gif"); - background-repeat: no-repeat; - background-position: center right; - } - ul.df-resultbox{ - margin: 0 !important; - padding: 0 !important; - min-width: 250px; - max-width: 500px; - z-index: 999999; - border: 1px solid #777; - font-size: 11px; - background: #fff; - -moz-box-shadow: 2px 2px 5px 0 #c5c5c5; - -webkit-box-shadow: 2px 2px 5px 0 #c5c5c5; - -khtml-box-shadow: 2px 2px 5px 0 #c5c5c5; - -o-box-shadow: 2px 2px 5px 0 #c5c5c5; - -ms-box-shadow: 2px 2px 5px 0 #c5c5c5; - box-shadow: 2px 2px 5px 0 #c5c5c5; - list-style: none; - -moz-border-radius:5px; - -webkit-border-radius:5px; - -khtml-border-radius:5px; - -o-border-radius:5px; - -ms-border-radius:5px; - border-radius:5px; - } - ul.df-resultbox li{ - float: left; - width: 100%; - clear: both; - cursor: pointer; - } - ul.df-resultbox li.df-cheader{ - height: 13px; - overflow: hidden; - padding: 5px 0; - color: #fff; - background: #6ea6d1; - cursor:default; - padding-bottom:10px; - } - ul.df-resultbox li.df-cheader p.df-cheader-title{ - margin: 0 !important; - padding: 0 0 0 10px !important; - float: left; - font-size: 12px; - font-weight: bold; - } - ul.df-resultbox li.df-cheader p.df-cheader-limit{ - margin: 0 !important; - padding: 0 10px 0 0 !important; - float: right; - font-size: 11px; - font-weight: normal; - } - ul.df-resultbox li.df-cdata{ - margin: 0 !important; - padding: 0 !important; - border-bottom: 1px solid #c5c5c5; - } - ul.df-resultbox li.df-cdata:last-child{ - border-bottom: none; - } - ul.df-resultbox li.df-cdata:hover{ - background: #eaf4fd; - } - ul.df-resultbox li.df-cdata a{ - display: block; - padding: 5px 10px; - text-decoration: none !important; - background: #fff; - } - ul.df-resultbox li.df-cdata a:hover{ - background: #cde0ff; - } - ul.df-resultbox li.df-cdata img{ - margin-right: 12px; - } - ul.df-resultbox li.df-cdata p{ - margin: 0 !important; - padding: 0 !important; - color: #444; - font-size: 10px; - min-height:30px; - } - ul.df-resultbox li.df-cdata p span.df-cdata-title{ - display: inline !important; - margin: 0 !important; - padding: 0 !important; - font-size: 11px; - font-weight: bold; - color: #000; - } - ul.df-resultbox li:first-child{ - -moz-border-radius:5px 5px 0 0; - -webkit-border-radius:5px 5px 0 0; - -khtml-border-radius:5px 5px 0 0; - -o-border-radius:5px 5px 0 0; - -ms-border-radius:5px 5px 0 0; - border-radius:5px 5px 0 0; - } - ul.df-resultbox li:last-child{ - -moz-border-radius:0 0 5px 5px; - -webkit-border-radius:0 0 5px 5px; - -khtml-border-radius:0 0 5px 5px; - -o-border-radius:0 0 5px 5px; - -ms-border-radius:0 0 5px 5px; - border-radius:0 0 5px 5px; - } - - span.icons16-empty{ - float:left; - display:block; - height:20px; - width:20px; - margin:0 7px 0 0; - } - - .ttip{ - width:16px; - height:16px; - cursor:pointer; - background: url("../../icons/x16/question_frame.png") no-repeat center center; - float:right; - display:inline; - position:relative; - right:-2px; - top:-2px; - } - - p.prefix { - float: left; - margin: 0; - text-align: right; - } - p.label { - float: left; - margin: 5px 15px 0 0; - } - p.value { - float:left; - margin: 0 0 0 2px; - } - select.search_limit { - width: 50px; - } -} \ No newline at end of file diff --git a/interface/web/themes/default-304/css/screen/jquery-ui-custom.css b/interface/web/themes/default-304/css/screen/jquery-ui-custom.css deleted file mode 100644 index a90d8b987..000000000 --- a/interface/web/themes/default-304/css/screen/jquery-ui-custom.css +++ /dev/null @@ -1,7 +0,0 @@ -.ui-datepicker-calendar thead tr th { - background-image:none; - background-color:#FFFFFF; - color:#000000; -} -.ui-widget { font-family: 'Trebuchet MS', Arial, sans-serif; font-size: 100%; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: 'Trebuchet MS', Arial, sans-serif; font-size: 100%; } \ No newline at end of file diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png deleted file mode 100644 index 5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_flat_55_fbec88_40x100.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_flat_55_fbec88_40x100.png deleted file mode 100644 index 47acaadd737478ddb090f47f618810712163317b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*Fsaj7L$B>N1x91EQ8x$BA993)+ za~~)OO5|O5sDCi_{N8&XlRv*c;OQ6|AR59NN?mFzWBXJVGojypu|S6~c)I$ztaD0e F0syyrGF|`x diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png deleted file mode 100644 index 9fb564f8d0a117f17aa6b844490309dadbd94821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq?|on978O6-=0_GYj6;7zWBfT zzjhI`OjAO{6(N>+Em!s|xjZW|^1EO|(5d{JeUmv{p6fa-GJh;t>KCH4`R~7(L8qj} Y_egNRQF(If70@^aPgg&ebxsLQ0Qgob)Bpeg diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_glass_85_dfeffc_1x400.png deleted file mode 100644 index 014951529c315d6042e72febc310a4d2db5b4a82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq?|lm978O6-<~(*YA_IRxoBVf zfAX@vsV!R#l$@#*eLnw)_Sv|_?i7P!ORnX)SxaXh+BPpZ!Fw~yjr&#G|Jw^YMHDhV X&EsZx`7bsSXc~j3tDnm{r-UW|&(SK+ diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index 4443fdc1a156babad4336f004eaf5ca5dfa0f9ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hIh978O6-<~(*YA|4MzBvER z|7}eQtdCVXoUc2b{PaWeaIKu7gJx>{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png deleted file mode 100644 index 81ecc362d50ef5abbc0420aacd5345822f1f6098..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3457 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 diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_217bc0_256x240.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_217bc0_256x240.png deleted file mode 100644 index 6f4bd87c041453ef037c4a9a1a698f0105d02eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_2e83ff_256x240.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 09d1cdc856c292c4ab6dd818c7543ac0828bd616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_469bdd_256x240.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_469bdd_256x240.png deleted file mode 100644 index bd2cf079add1ca236adeb509698adabbffb08acb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_cd0a0a_256x240.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 2ab019b73ec11a485fa09378f3a0e155194f6a5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_f9bd01_256x240.png b/interface/web/themes/default-304/css/screen/redmond/images/ui-icons_f9bd01_256x240.png deleted file mode 100644 index c7c53cb11904843e176e4ce1f4e7247cd90b3590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5355 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 z 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 XHFZ@a+U*rJ00000NkvXXu0mjfEZ#v4 diff --git a/interface/web/themes/default-304/icons/x12/accept.png b/interface/web/themes/default-304/icons/x12/accept.png deleted file mode 100644 index 6a9f2e2ebcb0a18b80fc49712fa5c1d702bf5e4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4b)GJcAsXkCfBgS%൏@^Wr zw{I1O9uwVX+^!cmwu?B!^is-b4D z%`lrUDSGCOjvLlDj2l!Pt{qfK=$h@Abbeu1Z*E0`pWDV=ALHaA94|N9>@aRn<5v7F zxI|*z%AcP9{{QGz z-z!657{|}Q!aXHQiqa%$q)2h2Tq##>-4SVL8=++9IAzSz#N#L zdA?N?1SJv*An{bhrTWE0G3Cf3hHcPySBrv8&15n-kTs0DRSYf7{t1sV{H|G+WPl!qM*p(AR>=>97l>w6jP48zlZz(HJlE6`fzuvM56fr a*Z2k$i<>Rht0chy0000=@TeSb;AvoDQ#k3~FZZ|p@7t&UU%%IDHtgUPYR)ogn9U>fg18K0}6UzzJj$M5Ace#%l991xQeTrp+j0dlWZVdA#r3oufbOo9ySaZ%kX~0u1 vv}?KJEVY=7qa2z$mV5GrO;YZ=vV@UARHa5GWviDt&@&94u6{1-oD!MC;}l~NGfLvLa(6^p2cMHDr*DzOHUJbgp9jl~|iFl3l{ z@9mq}C>0;aaZ;BkYpp+B*9C()YwW4yxfIfD8e_l{MG;P?NOIO88qN|8{u%1Q9ptnk==MSrr!+~3Ph#40j>gIiA>JXEX5<}`ZmOL)Vj z2okF}96b~KHW)z{?_qDOxOH>~3yIzSD2osR)v4Sc8szdtc%Jt+!CK;gaU{3JWT5mlZ{W5Mo+<$+KGy8$9 U4sBCBF8}}l07*qoM6N<$g3{iK761SM diff --git a/interface/web/themes/default-304/icons/x12/arrow_2_right_round.png b/interface/web/themes/default-304/icons/x12/arrow_2_right_round.png deleted file mode 100644 index 35fecf506c647b41354aae7a0fa58d752d31a339..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)F| z%TB^j5bdw%m-us7G(#Av!iL7M7LX8^}gGMkdpdvy_pzZy z>j=&a)JX^D3e1yf%)fy-RomX%$6+ReLh%wM-9Y7Kf?CVMm+eAPfC`dry|1AMx` zNiH9DG7JOC(J{`>OSr4|F{6UHT-FyzjSw(q&hNnjP%f8|K2SoyLu2#@U`j4g8caMG zLmyi^X|i3Y`66z#F7BVktCS=fL?`K3je2{E)529qq1>?OKfrCR5652`I+E2id$383 zM`H@DX`%8wM6Er6?f;W?`QfTnomx8xh%X!a99wy~mDQjGz z%P#{_6vpRYVQWKz#L6pP(I7%1u@OYV&OacLc(l`cM$u78qa`X-s+NrfVN+VFuNkc| zXiHdVwP6y;XU;_zZt~rneCK!WJvsMsCXGk>|qqZCywg>l~Gf$$JJj(rXY%>@P zHG;(=i;)oSUUKlIzL+Q`k8;GY0J}oX*F+4ltflx<2HjQ(<{d;*22RH7FmjhAtvA86?04!lSjG2!~Opnn|9m7;r>pZMDhQx@eLLe Vng>?@EY|=4002ovPDHLkV1m%u*m(c| diff --git a/interface/web/themes/default-304/icons/x12/arrow_right_blue_round.png b/interface/web/themes/default-304/icons/x12/arrow_right_blue_round.png deleted file mode 100644 index 71f5dd9fc53a083f47f3ee0671653905af78219c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-W~P)Gz z%P#{_6vpRYVQWKz#L6pP(I7%1u@OYV&OacLc(l`cM$u78qa`X-s+NrfVN+VFuNkc| zXiHdVwP6y;XU;_zZt~rneCK!WJvsMsCXGk>|qqZCywg>l~Gf$$JJj(rXY%>@P zHG;(=i;)oSUUKlIzL+Q`k8;GY0pou`3vHrI<%KVu{d;*22RH7FmjhAtvA86?04!lSjG2!~Opnn|9m7;r>pZMDhQx@eM1F Vng{dmy>S2l002ovPDHLkV1i1E)re{he#|}cEVINW$VwR!>mZm1*+cq_cIce~)F`kF*y5}u>WJ?&22POufbZv;OZI`l_ZkB)%)pP~8%(A%7>>r| z%zVM{Q!s;^nuiLkTS~xkg%#HGP{Hw<5U{AbPuQFz(7hKs*t;=dcPZr6DTKAt5^Rx# z(d-CR^p~ai0M$;|fr2EZ6lLQMi$egi8MA{nsNf&4`vKSN)He)j2mJs5002ovPDHLk FV1jdcZrlI> diff --git a/interface/web/themes/default-304/icons/x12/article_text.png b/interface/web/themes/default-304/icons/x12/article_text.png deleted file mode 100644 index dbc47e51e554e465e624088eed921578039e662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4Bu^K|5RLQ6KmPx>Km6q6lQ&lp5^tXJ>ZkYAw|HI|gOEP!-`uL}Qh6P9R)d`^i$0p2*Wq2lEw^RCN zYFvG~5xp(H?bI#t&LIfZ9)&GJe8*ginz`?nIK`$NEy;!8`XMG+jA9?edocF^rs(=d+}QppTzcKx`6t?FILgIt&7w zGUMf@%kv@<0SNxID!|L4HcZ7%hW%=`-H$$dCr^z0JO1S~i8b%!amYo_8F?K<#D6g- z<%XKQ2}ya#Z_j4_Ox^jVcFKDb2zHc77jHtGP189sS05Bkv$ zLYM8Z6I530d{KKOz!rdI03gr?=k6+b(K1hv*l_|3i(z}*r1>^!EXHeHvAwKzwadEG zW!(jE!^r)~EF*{jxfqPByvVIw>|4tEA~^RBf`?ryRWCaBqWcN}KLGIg_W~K+Av6F0 N002ovPDHLkV1gIz&{zNf diff --git a/interface/web/themes/default-304/icons/x12/calendar.png b/interface/web/themes/default-304/icons/x12/calendar.png deleted file mode 100644 index 56ea24c2af964ca99dd334f3a0b1c0f3ea1f8f2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4Ku;IP5RLQ6Cr)Sw{r~^po|)sh z$khMG-J1Z4 zYiLogt8X;@|NlQjT3XtFT=cZ5Q>NE7G--o5q+qay_ANKS7{Kj<#<;Q>jZ$AHwq2b*RN}RNO&9?t%t~>$@T)g@6|IstI!0Ze6-u*vv86tl5?mHwu xY~K6-`h$;PfjiHC{yz`YgwB5W<{x=Z0sytKaRtnJZ|nd7002ovPDHLkV1iOYcq#w@ diff --git a/interface/web/themes/default-304/icons/x12/cancel.png b/interface/web/themes/default-304/icons/x12/cancel.png deleted file mode 100644 index bff763a22038c10253c41ddd0adeca402adc6d78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4g`O^sAsXkCJv_XV{k*+@^Rw`1 zW@hqaW=N>8O=4cjxGI&wIPdB6|LvJgUQLBslagjg?KrT1(W3t+%oJz$=p3KWqw-PS zlWDp{+tvG@KOf+la8qGt$O_|)RqsNpv?P+bdDckf9d~Ik+}3cQ;L=V3`yG=LazxY> zXV)CNFMRm&i6n)s1)Z1c=4mWb%yyc_%$>u>dtigq-IdZ#%z?^%GnOzeV)Q66@#=nm R$rb2W22WQ%mvv4FO#qs_QGWmc diff --git a/interface/web/themes/default-304/icons/x12/cancel_round.png b/interface/web/themes/default-304/icons/x12/cancel_round.png deleted file mode 100644 index 803532cf0937811afa6e7e71dfa9772a57d4d8ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)n!pHc z(dzWhlcKzEhCA<^bMJfiJtYtbD1_JR?emM+4TYYMH0_gM&NXsBI{ESWd;{C6T7EQ5 zw5wHo-QPXf)7CCQ(}Vz;wF=+$ee0&@l{Gz z-AV#c6ouzi>J>C12oluPg6N_r=puT7=mGk{-%0~(C`A`{)XJt4qs+c<}GmkQ2h~*p( zyNgaa$tsxI%EQb*VJB8c=KTu>?<4alBZgRx=FES5Vs`%p7GDk)K8Nk=8bq~W+$%GW zGGd73PQwSv)w6;Lp9Hfvi?Iz6+tC_wwQuO$A}p#$88O6ik?^5%S@?#*lY!oy!NTz~ z>g_Hr#VQ4vyNlzO7 z+eUA#!tYx97boxqSxiHEYv5dJGf_<*W&Ml$|1^SoyQQ<^!w!k+|4-uw+6k1il12sT P00000NkvXXu0mjf)CbQ* diff --git a/interface/web/themes/default-304/icons/x12/code.png b/interface/web/themes/default-304/icons/x12/code.png deleted file mode 100644 index fc2b05f682e164d0292b9dd54185aafd9683511a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmV;C0dD?@P){YZZLi# zSqvW_-(`ynwy!1K!DmLcO=4P}J1s{{&$DnL>0Qzo+AuNFg$@_IW*t0-uk@`Z30-A~ zn>MG9S^DQ+7+gydjGSXxc5BTJw=X%?E+t(dgRMJ@&WR_6S2Qwqh1r<^hG8_;fGSX~ vRJc!lU|0^(L;;yAxlc4r^Y=>s2~a)(U53NjE0F<#00000NkvXXu0mjfR9T~; diff --git a/interface/web/themes/default-304/icons/x12/comment_blue.png b/interface/web/themes/default-304/icons/x12/comment_blue.png deleted file mode 100644 index 248ddb6b59edbd11614e865f57e30c8ae53b2f48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmV;F0c-w=P)Xs zXgJLP!a8-QWHqZ#R=V|FydFRI+PCESH@-#9y879!KK3wR=xVu z`W7u`ug^H}^#6l5-~a#n_a6*?{rUI*%F{3ZYuDfV4^+1ahy@sc;tblgr%r4*|N1{Z z(7gGO;vlw*iPAO(Bx%vO%<1ctMfaD#z&VOLgt~+H3((vT{PrMpH^4=3JePz(9 zJ*f%Q@O$^wcX%~`14bUE21SED5CemF;r7dK|K~5i{a?NMXXZHm_EYo2 z{{jE%XGr+)au_FEZfN1m`q9t&_zFXKORxVFwv^T*R-GySk4uHNC8(a|cga>Ti#Yk+ dWZx1-h8ryzk^g+yRs#)X@O1TaS?83{1OQ#oEztk~ diff --git a/interface/web/themes/default-304/icons/x12/double_comment.png b/interface/web/themes/default-304/icons/x12/double_comment.png deleted file mode 100644 index 21262ec2a9778775efb6db9a37e3e81a3d496828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmV+*0pI?KP)Z~ z|NlP&DHse48crwpO}ccyd&i^yGY&lcU%2A-f1ucWAQoUi2SCAwx()aLBZE)h|NIAu z0p-qvw0J$GzGA;lz4CIFZ5aa3lpZ`IgCa3}GaRVS;4-yEUarHmU zMs&Y{orDxx1)z`tIWcnP)%PIhfouh7h6eL~lwgL2`+KNu0-zuTc@$(LD4wvzM*dX0000O%YN<#huCVCaSl8~k; zMp1-Gl3)-7xK1{huGScaA$M^cGs8lDoTcCTAF&`m`K{amkw|$3Hq;?J00000NkvXX Hu0mjf;huy; diff --git a/interface/web/themes/default-304/icons/x12/envelope.png b/interface/web/themes/default-304/icons/x12/envelope.png deleted file mode 100644 index 5b48a00b61551520fb1c82c15e06fc70e94a296c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4NKY5X5RLQ6KmPx>XV#q2n8KTx znfc%IU;?jw{eM-i#ThfUJ^lE9b^pDFn+j4hc_$sdz%aQ%^N3p8LdHl&E9v#T3Q{fn u@zuSz*-|cFFbuPwAmXKRlzF8gFGKPFgRf1hb;^L2FnGH9xvX$> zO-lk%6o&7pIbb?4iW?I@TDcenv5m_Xxd}lcTZp3gF~W#7g0vC*1GRAJrez?~KXBD1 zb)fkHZCkVqYEy`u-aDw6c;MlFo%fz|UZ!aptJmwy=kqayY`5F{Hk(bu{!|bIJsyvL zJDtukTgOTu%CdZghu2&#N0mxtDT?A}I-REJbV|iy@fWEVz{^^#*1f8#&wjsu5sSsB z*XxmC7}RVwDVa>tXf&e9WI};J;01y{uP|=6+aH-shFmTeWwTit4u>?G%}7xcDwRrP znx^$ZFc^GejYi`b6>cD+P$)#>(muO=SZh>SCy%KQFbzNVkQYpf<2@Y1i@KxBjv=*Q>KF?#hT&6@K zae`oQiFrI8_Aj<7a1;#p)#-E|y4@~=V+?ayc@BreVpqVqZa zOiN}+PfKO6OrOf2lQe@#D|SM#M$AN4!{q6@dWln9t#js`H%OW`S36+}gF(u41_qc0 z^Ry`j`l+**2e<9~8Pv4lgGt)Vdmgo$J}o={@qhZnJ)cygCpZH&af38O12yzpr}VxK z>pAqlcH^`E>u>z{Up(jV|B$W&|L2|m_kZ>I_y4VO=4}PqoWYQhma+w?>3vXA(SP^) zZU2jw-TdEo@ZI@7GAZ!W5e~Qzhy7SXw8In`e8LU(Kz#2?ar!knOO~=px!jpmcKhTL*8Nm2SO-pA; zNy~s^Y#LO7_$3e@1Y%}%d2AX$xEzRo0dYLK902BK`^7mR!_@!)002ovPDHLkV1nWI B1v3Bu diff --git a/interface/web/themes/default-304/icons/x12/flag_green.png b/interface/web/themes/default-304/icons/x12/flag_green.png deleted file mode 100644 index d9fe8e4dafcce94a9c8a942db2dd28f61a255328..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmV+b0{{JqP)$? z%}Z2a9EG3X``)>CK5lw5A`>H`g-A-|RSW-uAW)F#52%=E(IPO~E77J!yK3F0jf>i} z2rBwqxv-?5$=p~uPUG0jTy^HY_r5KhD53|>@|?rrNb&q7a4oGf>m)g|*BX1JWp;je zj`tDdcyIT?x%I}{V{17lA~*n8Jd2%jGWzl*;D{!E&`kwOL{8@PzxhT$7UTTRoko(xp2|H`Xrq)^5rq!Ju;ZbGVnA(XhD9-%E&HpP6(8wN zQ{%-5f>IjA-)MW2SQ_q&p3Cm59$> zUr3Wt7>8eTVNf@r78L~{-3-+3LW45O2qPl8Dg7+l_MPvmZRCaa=c1D8N{L14bm?|c z;o8E4(2yV@q}wEfbdW>vDt3{0r6D}N8)9KzJegpEUbJ;AW7bzS|MGxNUSJJvTBLU2z)rd#0xo1uk4g- z{!o(&k=bYEIZ`$7^*PK>!uTZ^J_nfzm`TCl?lDbvr6mv?wfy1Vy=^Dq%|RGzh3{|S z=SN6-;qyIMn1%^Q=M{5ejPV9+=f35;#kbCV@a}{TpTe|CpRTBM3?@4uT|G-;S5zEh z6uZ>&g?~H@U1T{?2C1{qzkh(&2Rev(azsmp^!*k3>5_axfq?B=S6gl~{-hFKNmd)% zLA*$`ox|GPc4FF+vLR@SM++Ej4_XX8s%=O=J}#Nap?uY%x66ORIyJ^Pt7jS?bX{n^ zBSF_E3z5=-u+rx#uvy5{Z5xADU3$? zF-Tic6o!8hEE)_{FiCZh43U!B;envd(7}L%1a%M`#KzFP_weP3q7*b^7Z*W9=u~hJ zK{AOLL)1Zp)<)ZyVv9|&6e(08ii(Oz_3wEl6qO7gT<$&J{m;1<-KL44VPM7S#3umn z0dGp!1Y940npA1&+l`{4F>Tvn`DxEp%4!gg@4A! zx!c-$Aqh{Rg~Jw)y8HUFuL1$?m6h>YTG_6vTi;QX*j7o&P17xMTe ziS5y7v~6SrJ-Uv?%1UfYU0T>GAXrRUQjcLMUH$!#2f$> zO-mb56o%hmf`znTkuJ2*LZ}-l*n*p`N*5(yU1TFM4ulYAGBq(tYuzd6Ui}AV6X+tA zF0ze8P~5bIYH${6z%euCV>Kfql4vrVo+&ETdg0;R!@bYFhZmw4M=~j5W1|9Kux4DM{93hnwJ;mbVkBx?VN7LStrj6OU4pY~kQ?t2Fwc3bn zSqODHc!Fp&u{<>;Zx#wY?Zd+!B3fX6QKce~s=ng=cQTA`bbO5Mvop*g98RuHOr-0X z%pjG^UDR%m@}*U3wYF$?*GrZa;(mv!)k!Lq`c%lW*#w!g>H~c@4)o!uaJL@$_)YH|^Wt~$( F69B$sexv{Z diff --git a/interface/web/themes/default-304/icons/x12/info.png b/interface/web/themes/default-304/icons/x12/info.png deleted file mode 100644 index 150c5cb3cc06b7dac3dd60bdb7a2a2b04f32e830..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmV;v0YUzWP)Gz zOG^S#9L49W)F)`uB4|;hfd#Gl06nlT(q?ot$|9VhP)vzlMj6y1h>D6J3e3kimYR>u z3hgB{xHx&P<)VQz9M1XO%jJKsSZ- zm53qt@`dw!0~dvc@XXke5eu5DJ2ln&ST2_lF-+JuN(fxlFn98bsm+qe*pVSCDT>q0 zU3PR6Bg+|By?1aORUjWe!KU3~WGN#$GGry5GgJA*#A+Uciv}iFbMPELHy4yKtfpb} zrbS1Fth5_mGtVAO40%(qEa(^yW{|IbhO9W!-P1cpmkjhMQFO~uM50w8dS>j%h$AUZr`t%z5W4q7L**pVUI8mrbCtM9UgF<%PyKuh$@#8|c8v9>QxQ?rI1hhBWcLGn|Go*BFL o#r=O8p%s5&Z+pE?(f@xMKQXnIid{$SuK)l507*qoM6N<$g1OzvNB{r; diff --git a/interface/web/themes/default-304/icons/x12/link.png b/interface/web/themes/default-304/icons/x12/link.png deleted file mode 100644 index 1e7eb87035a0146bc71b72d621dc822f4351cec6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4Xipc%5RLOwgB-aS6gWO_-FL0o z-pESBY}tjx37eJzWjl7auM*3v{mtWQw)v3SB)?;ywLF-vtyb8`^(jo`Tiy3BDo4~3 v1xi$1#Cw-5SNNyy!*5=d5U;G9qA9yFte0)y;)Iz%YZyFT{an^LB{Ts5_+K(F diff --git a/interface/web/themes/default-304/icons/x12/lock.png b/interface/web/themes/default-304/icons/x12/lock.png deleted file mode 100644 index 33a24b6f01c2ad05f187b4104a9d4fcd1a8e5212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)48J;eVAsXkCfBgS%&&*L>Rb^yh zVPUX*>C(UM$2B!Id0xJJnNZ4Oz`Jtg$~Oupv#+m9Oqfs+6eMKb)iz^>1nUg8l*@^K zcI>cV72%yWZJLIZgWrMGjI(cFG;C|zzdroI5ew5lRTj+J$5uZ4{k2Raz2S#};TkEs z`P%Hs0`kY&K5oqVQJ^B*<5(jheeC$Ehfmqc*GQ~pOKK8j*v;RlnzpU+BhZZup00i_ I>zopr09%St3;+NC diff --git a/interface/web/themes/default-304/icons/x12/magnify.png b/interface/web/themes/default-304/icons/x12/magnify.png deleted file mode 100644 index 730675e88dac72a9b386476d3dabc1acf5cbe4cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmV;;0W$uHP)ANT{j`UN0p56{x(^NZL@+pqs~9 zfLJ_Md(w2&$^1k_(EzS1K!G;)&#w`ll+Q%Q+M59NTq`}-QKsZ#mCVn;l@8vc zcXceRu7d>wEEEd;yn%k9lP1a4jU;xCv)IiPpd6fHet8XE?+|=GpGH6FX+YnkXb}SA z!*umlM4mdL^~ykhU&Lm!!EU$1@Ap^fY%m-SH-InkUMa1er@34%6V-^tVu91?Y(SnC zpdp^*cDp&iYm`F{hl97L|1e6v*=M z_Wtd^sm)8xtu4R)ztJD&Ti?FRPhi{pzwu`M!bd*!{|s~lgp`912k?glnKCd~UJBdU T!_&kIG>gI0)z4*}Q$iB}W56fT diff --git a/interface/web/themes/default-304/icons/x12/minus_round.png b/interface/web/themes/default-304/icons/x12/minus_round.png deleted file mode 100644 index 3d848055f5cdc746526ddb0b024b1dbe81cfd1b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmV;30eAk1P)Gz zOG^S#9L49W)F)}xB9t{L;os!Z+~0#8jSAHCn6bmIc5E0YoW;vu!&;7@x)Oo4 zzAA`T9y4~>)spFSyZhmwwzG|LcplG7izCou#tysMMK;^>N+r~e4&gW6@u${33_WJ- zuqy+)r2<|KcHzCf!grhz=rLnQ2JkZ-r-|~`2JUC3@i-S$1o{NUW5$jwi5szO8{b!1 z+=YUQ03H@X0yRBm?8v5hREhqve&sSKY_8!pJS$MsW0n{k>+r>KmQJIApW>51O>gAl m#(#}7wa&|2&L`C4zs5h{LXV792Ugnv0000X^ zU7PqH7X|``@TI|g)w?PfYJj+EXE_4{NaEq=`xqEmQ}AMc*;hYbFg*G42%%xctwksp zCJxgSwLFaf&WBs58dBFK{O>s04A%gnku}Axh*ZaGL&UOB3{5B+UjBLZ|IyF;a1C|) zD&YpiuZqUh0Ak|wqzL9L3=Qah04V@D3*;9J4Rfwc z`5(B*=YP$<^8d?kF9d5?d1EPx$5Aw3i@1&V)?kP+;7c0C+w;Doiva+~LY(wc!#y?t O0000XV#q2_)V&a z|JZ+Z)@IWN1~aMI5;4p?3ZE0-EI!ZoM`^{u`tG;oIYkz8Th6&%beOc9J^lzI!&9X# VHRn6xKLZV8@O1TaS?83{1ORbhDcAr2 diff --git a/interface/web/themes/default-304/icons/x12/pencil.png b/interface/web/themes/default-304/icons/x12/pencil.png deleted file mode 100644 index 6bfdad47421635a7e05c51eb8eb8a20982a4a18f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmV+|0n+}7P)ZK zSjfPDjxQ9mF|1y(gkjl+jSRQr;tZYz1pEi#cWrH{4EQuGU%So%r110dcw6d zR9Jj(YCK#^ss-?076Av;RN;q2IxM+ughn<~WpRmW`tOIFQJ~m29P8NE4ecVepT@Ux1{ryk4NUn{y zWlno2v)%KB6;hE&Z#S3!|D4YHKmN;xxfZ;_Wq1GCt6qEff66795Z)Ib877~IE&5$w z`2X1dqm#EU%<}N}PxtWfc+l0;BcgVSf9A}Y3epk{56^V!Px+^u&2TiKs!B@O@FWX^ YW^MJIb6Mvv0iDd?>FVdQ&MBb@0E??zU;qFB diff --git a/interface/web/themes/default-304/icons/x12/plus.png b/interface/web/themes/default-304/icons/x12/plus.png deleted file mode 100644 index e3afb66734bfa629cd884718dadf02142d25d757..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4PEQxd5RLQ69^T%`4u}6=H0ZKn zHsf9U{M3ON8N6TJxefxUtL()GC8o2LnE%(mKb!T~jVA}ByuK~}r+<(2sCDrF>2uo> z1f8iUsMQ5G~X~NoFKJ>tz^z_Rk@x*OU}cWBWEWanDHXO r>$U*r!6R87_e8jk9l710p2@(V6vo+MdfDwN&`}JYu6{1-oD!M<^Q=nA diff --git a/interface/web/themes/default-304/icons/x12/printer.png b/interface/web/themes/default-304/icons/x12/printer.png deleted file mode 100644 index b3fc25f8814ba17dc91c3982184aca739001a777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)44W2HJAsXkWPBi3WQWS7qzU6~T zwT{pZrWnT?7jky=rf(2RcHgpbvtfwZBfdhl*Qc`PJYkji$32-rkwv17QB!x%_fwYa zwfDmlw4PKae%NCh^ZM1Bw6jfyZA+wV;*7X=U+!IMxM$NfCJsf1?7Je%dRT+J815(( zC)&w9bGz zO-lk%6o%)o)E{Wmq6qq;AX-(lX(0*ygrJ~BL|>?5(ihQ4keNnB*@uEiw2B}KvP@^j zL7i-@u?U(ntEt7?oEx?1!nqvI`@Hua&b^%5?dB*P4o3xVt$^RB?QL(ADJZ8JX}=uX zoK9z>R}j>+m_+WOgpI2s74ww%wV}Iy~5(1uImUZpBRqaWBj0qkysJ^VI8}& ziK3+uLoCPht|>ZYEA@`P^&4a#O%#kz78kc~um$qi7T?)T#B$VU?!E;3S{@xs8H_~l zU=OMo*wa93C{jR={~E*)%k76Y%;UU?_Qf>X7GyNcNU#TTkn}fbPbPW;S+vZ{Acj~j z9NILG)DN`INobx)p=nw~{H6@iGT3|>)O%7)BZgSkQl|Kf?j;2^&IDR4(?nE5mms6g zeT7;+!8Br6OT5c9rASEx&tFhA7DwA`5{I&Z!H|lo(Q{N!#+gP8u|H$={)~0y)IjHg z2>Y^(R?j8cEwlg30BOXqvHm@rS5Orxh4ig~m{h_+x&+0_sYcr0!~Opn!Bw9Y+1V^p dQ2zgGd;_x_nZD4hx`_Y)002ovPDHLkV1jSa;)(zO diff --git a/interface/web/themes/default-304/icons/x12/refresh.png b/interface/web/themes/default-304/icons/x12/refresh.png deleted file mode 100644 index 5c76d9b7c39c0656a486023fad440185e4e61fcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmV+k0rvihP)Z~ z|NlP&DVTv|4U#$bU@V$$Cj-R)k+H@ED+Y-?TRD+5dvS?u2e3LYA(3S-2T~BZ-5;Vj z&CUrZ&Lf&(Cj!$fl5Q^|nG4q7zyMPW(;%4*wow>eTr9&*ltBU_i6Q|LLl##kbprDl zBy#LMF*E?hfSQCbY|gP40-K~+?*f<5Y;Zxb1yzFs1A|y5rUXb#JPW&1!F~|Sw1c}@ zzSf38Jj32fB+afCIplx_u);NfFi?TGWU-B$Qj-k>dVGjw*vr7wksQ+i9fJz&i68?k P00000NkvXXu0mjfVo_kt diff --git a/interface/web/themes/default-304/icons/x12/rss.png b/interface/web/themes/default-304/icons/x12/rss.png deleted file mode 100644 index e918050ae78acf46e11a874d1bff361a2eb3daa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb3MP)%u zzY76j7zgl+h{&iI{RJ$PKSBNh*={xX7j7apSx+gGm<~lpZfB7)m{}QQQJn8n->bK` z8$Nfv&+~rop8H|=wlRb^+`$18@?eCK!vuWI8QPEt3lyLM9XP>P2`(Y02h!SA>Tpy- zd&sH*4;ElSm5mIHl#mmQXK1rOpa)R~ZKc-=0`iu&+#EFL5a*o^tX<@J)Y)a6wG!&H zUV|TNrW8_8WHSjHHeXO-{mR-*7A|~vjzJlo++Z=#<@%;Sbcq{wT(2Mk&0vo-r~EZs k<(mvx^Ek46+_Ai%KOI#tYQ9k{2><{907*qoM6N<$g7IH+>i_@% diff --git a/interface/web/themes/default-304/icons/x12/rss_round.png b/interface/web/themes/default-304/icons/x12/rss_round.png deleted file mode 100644 index c436887723821660e32a64043f7158ea637a8662..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmV;d0aN~oP)e* z%`O9B6ozNP1z2FghJ}TVTW|?h?8JqzBGGng-yccSMwE`Sq7exq5@8{9v>KI=RywVw zp{SP4+E3cDrFuGA0Zc?~hOn!e*!VduY{c zlxxJ-Qg2kG=XD{SOi2GSLviU-RF@VfAt`pnLbocPYHc)1l(+_mdceNC!3tF9mt zla{LDOm@M+7`zr-;&a|Tnl>X4oHh&y8WYGO@FHl>6ga z%aEOeegZ67u%2$%TA*VP_dC9!0h;zq@`{t5O8QVv-M z6QyG%#h8UGeiW*=B~6g9&{F`KmHg3uT}N{gTM4hkNv0O%Q%$-PuQD*Wtq*&iE~4cC PbS#6XtDnm{r-UW|y8=-$ diff --git a/interface/web/themes/default-304/icons/x12/security_orange.png b/interface/web/themes/default-304/icons/x12/security_orange.png deleted file mode 100644 index d1ba672d95695796898a8287c3bb86bcba77c1cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4X`U{QAsXkCJ@UGe8y@bsH2y85}Sb4q9e E0Lhq20{{R3 diff --git a/interface/web/themes/default-304/icons/x12/security_red.png b/interface/web/themes/default-304/icons/x12/security_red.png deleted file mode 100644 index d2f1bae8f40ec481498dc6bb69e823cfe34df362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4iJmTwAsXkCJ@UGe8y@bs)!BTU&-2@Tap^V zW9F+-$QXFIL8kkEp{tCD@q+9F9%3)L93>d;{>z)QPy6i$pyL=kUHx3vIVCg!0H;Yu ARsaA1 diff --git a/interface/web/themes/default-304/icons/x12/star.png b/interface/web/themes/default-304/icons/x12/star.png deleted file mode 100644 index 77cbacdd07eddb0bd9c9f13bd6a893127e69e1dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)R?%kyKh5qUH||v zKza~HCi>Q-C&z7mHWNIYD_jOd)*8Jhzv{!-(5mm&`E$S;@XxR1s&@)mn~jYZ#`48E zNEQLZt?T=xwfWkM-f5e91KMY)4=Qx(wRPrXCEpz@l{E2*8Hg-Eut+R9ORf-SI;A-1 zOl^lwKUG@!Z#&K6-OaC8Du+!4;Q+!egdK2wj@s~kyHMHhOx;uBe;WX!!#|CG!L!<4 zuacRmYy1#Ifo;)hcQ`r=UK-`<00zJVM*HY=um}AHgJGLdXh;Mt<|o=j_1fyl>30Gc z01&jYtK(F4wN`MIs`=RMM-SH*-0kJe!NpWiywN((AmT9q0sxC&YAaj2$CqBkqTyR> zg{_^1rJwQiW9Rjf5>h}%0f5JO-D-B{J~=O+1&;`bP&*kU-wbT*2lxoUf5>sd`&sH+ QO#lD@07*qoM6N<$f_BRCqW}N^ diff --git a/interface/web/themes/default-304/icons/x12/star_blue.png b/interface/web/themes/default-304/icons/x12/star_blue.png deleted file mode 100644 index 5bb59dfba15d8d6bd0f3d19591dc3c7e66014765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP)Gz zOD_Xa7>4Js@CW<=Bt@DCLHY-*Bw}M>Woy^VG;Ij&Oe|;-9n_`lut6kkBcx-RnN%-& zl@cwjwnSd%JLsY(c_&}q_xaA8eCG(FC<-L2)!OA?Ys0seJ=_b_NmP?Z*+0iWHk-{P zOHxYLRHVx_g!5lqRFg*;F}#6wcgvEuP%IV^GFq4k7BHneVsh(|*W^(~46%a4VRzCl zhw&!N-URxW3>>Ky?A}$-w`gE+C4mE$5kss%=X`j2$F!2gd?<(2>oPt*ztLb?4?jaZ zFJU&A2QkD7N5MerGTp+6SBG-*g3fiKzG7T5Kn$@$D5$h9QcVoFHH>+5L^HKEe4DFt z&*aiT46*!3iBc67*+8!t!&UMPnU^NiLLJF+1Eb3tCfMJJ;YV`V?M@@E!WXT=FNr1?F{|?_B69j(Cx7o+<=R0;H zNx?MX=wbfQOCuKRUHWA0< z#~$zVV#C?KXWu=~=XrlCe!pK~c|4vrpZKVUxw48oeJ*{=8mqM@UtR*?b<4 zr4m}2CW}2adSqlkq}w-D_0}*9JjY@vyWKDX0T`hW%8Lt9qeq6Uvg-4#aTGIlgq+=m zt0gzyn@xO}CiInMyks+&aoz2oUF6Ugxh(LCH46SMvZ;b}>u32P6fF2pL%6=r$ zGS4)mog=syb|5ui!BZiRmr4aG>j2J&honb_tPDJf4Qj&B95$R<`=M_HQQT6I9PE=C zJu))DY3{F!NKa29Vd+Iu09V0v=nOa=LhF$p8M!2GBv&Y)ei*@VcNgMT3ts9qygoc2 zF=7{5r}W6kP4lQi-^W^uhH)}6isZ}`wE0;iC&r{kkBmIl-xtSG8oG|VMEt8nPwmge n{eK!eVx0%ksL5jg|7m;zNcfLfJLGrQ00000NkvXXu0mjfVXnp3 diff --git a/interface/web/themes/default-304/icons/x12/upload.png b/interface/web/themes/default-304/icons/x12/upload.png deleted file mode 100644 index b1810b31b5ac4ea872a798ce7e1c89740fc6cbdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmV+q0r38bP)kOBono8qzxb8REJf zgh2|o{mlbo5Id^VN*E-EqM@X)lp(g!T@a*T`jyE4Gp|RXXo{(K7A!6(g=qNy|38QU zmVjZH24pdi8jxDBVh}!g@+3$AEIH?11Y83MfaGB6z#5)EfByf@b_Ttun4S?h@G!TQq8Y(L*ePAI#2m|BH2OJNiU;v8@ Ven|#zn2Z1b002ovPDHLkV1n3yXnFtu diff --git a/interface/web/themes/default-304/icons/x12/world.png b/interface/web/themes/default-304/icons/x12/world.png deleted file mode 100644 index b7f9a8e8e77c606d08e9dce80f2fb6ac2e24539b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 567 zcmV-70?7S|P)$D zPiWI{6#jvphIrNU4&GL=FolUAf^=Sm9sF|;5y68BUSyNO^dPNEqd1k>#&!jT+;Nd+Uyzl+{-bWaQA+GuTe$V|Nlh@=p z)s(EQ%4u7Xc*+LH^KNbj*L8tFV2I};v}C@lE{KEE!`LsM!}-}L?iHK3xDbQ7QbIHwv0W@-8AdnE29CVA2@*Phq1g#! z>OUY`TR4^-0pa@K$z6xOWa1&q>O_+hbkdp!i4DS+zl&&f1KAn{Q?}4MeE~i4AV}mW z?ifj=!~`X|q}Ca(syLju4aNG5OzkJqtKV^@pg2vu*exDM&y){i)g0ntx=cZeeL)Ld`lvaW&fUhI{97+owN zU;l-PN&|c3Q#g?cp!}{4k&ja6=yBbpQ)zBt-}AH18Xjkg-klO!UdMnoibqxpbEP^S z1R1?cD;Eyg)z&7?EIh$UjfJ@U4Wju45n~%#vyJkb4RE2Se`wu#+_P|q8r23C*S@0o z$;SLgilQ4=YH%9#{BB!NnjYztG89siFsegpfIeo*3O_n80y002ovPDHLk FV1k&Y3K0MR diff --git a/interface/web/themes/default-304/icons/x12/world2.png b/interface/web/themes/default-304/icons/x12/world2.png deleted file mode 100644 index 2855f3bcce50f9203b636d35eefe2b1e64dc881b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611 zcmV-p0-XJcP)n849>3S;L(=IqhzV#xOSC&^E;tmL*>!iuJj{*g zPT!I&NsG+T=bNfrBOC=6i<|&Ef+T-Id^?;Oe|$D^J|@{^ArTo7GN*H~ZrCv`v+awl z(pa%{tHd(`adVu_+LC6<&sA~La~oIu*Wl%R*le!jlky&`=ZcpCJeeJk?ALkY7`?xD zQcsC(4Wr>v#Klvfgu+IF?fM3EX28q$qR@Ys3aH#8o{b2%2E<-G?R$vK(JXWVfB^rP zj$&&MaaR~2yN0HvLiQV3-V{mVZg2`$eNzAj5C#Yokdy*muD=1(42T{-65argNBjwH zdh)?D)7KGxwpXAr6LEJ0764`erqw{nY~et!qmM)}p`>(fVla~lM&pqe#n*VZ`w>3D ziFi*O9-9YKp)>+Q4?dJXBgrM=J45#TrRc&LxT7|9QM3%n{{)dq-m8)}HC^Xrw z%gS<%?40q0+|fI(dmySC#mYWP2UXPnw$S;iep$^Io^;IKZJtsFqr)xNH!3%xMPIHE xTc6n#{)`a){0Ec3?cV{kM)d#y002ovPDHLkV1h5B5fK0Y diff --git a/interface/web/themes/default-304/icons/x16-list/accept.png b/interface/web/themes/default-304/icons/x16-list/accept.png deleted file mode 100644 index b0f56047f99201d98034229b9346111d361457dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6FprVLo7}w|M>sko>_H9V-j-# zW6i8LZ{PlB-pI&o*Wh1#`f}6%0B4pDQVr+YGusjcSHDx|X3j8MvBhMuM1%IM3x`?P zGv44ixLooucf=&ExU)Beq}_~;%?{~2X>ufi!Jqwu@!d<@qCm$nc)I$ztaD0e0suAC BOo;#h diff --git a/interface/web/themes/default-304/icons/x16-list/accept_blue.png b/interface/web/themes/default-304/icons/x16-list/accept_blue.png deleted file mode 100644 index 128614830de4dcf06bad4a47733dffded999c57a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)e< ziba{JY(;7$)4o%?xVD}gc-U`e-gkDtZ)a_`o)84VrIFB}9*}d{`h`{;(nyM;Na=K% zR8=KCutp9wXrQ$+H)63E8;bQW3SBp7EnZ=;Mh*cDw5BHLs+)sXb(#*BEJ3ZSNz&Le zUJVhrtkGmpv1C3{;wveLkkbQXuyZGcTuGY zQD)rHqOqO{YKGSqKlP*CA$LS!Ej;jY1H|fanH)Ze;&&T)&s=2suG1Drx%yl z+TOwKf?$=2s*UV(5*%l_+E6A^W~z5<;V1&u15d>002ovPDHLkV1oQg$uR%` diff --git a/interface/web/themes/default-304/icons/x16-list/arrow_2_right_round.png b/interface/web/themes/default-304/icons/x16-list/arrow_2_right_round.png deleted file mode 100644 index 14de6fe9b21c78ddfce7930051708f85f126ce09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmV;d0aN~oP)qqHiL!;K_`Wm)h%4`CQW1)o{t8GG1U z1Rgk!lY$n@CFb!0(^-t)>0G`u*u!3pgsd8PvBV?+4x<^qekOST93%J`Aso-LBqG(! z(emK-TPFp#J43XB0leov`r$;A(jNv zBx=l#&3X_7sMQWpKfjdV$EU8$?sp_H?2!Zv8kW_p>I@+Sc6Q6KZ|)@l&lws4-Og%O z^(cy9+cwI36aU8VVhgqI666l+kDl) zMJA?eRf_$yqvaN%MXE|hZNMt0*?t(1~GQR>hlsUz8t5-CY1EiDR(EN#-7onvi& zjcv`uCVHIboAYhw$FBC)r{43v&-?WKb$mWYD2fs=iJ8CwYXM)gFq>^AaaC23OeRsO zRA2>j*4U$lTCd@VP7ULKI{_NRxIevENAGgR#oTcLAN601??1{KwVdHB4a6ZWoxY++ zO-si1^3dOE@*w$b^{C|xXN3V{bT^0Y#S{YTI?jwLoMH6|bB4`eWG4&%{4E9|cR0zs zy9}&8VQw?vau$xB&=tCo1h)*N3t!S8xNXQDwT)X4he&bfOv1&KmP57ngW*kG)~Ibf zM0t&&!v}OsU%T*!5(4Jb*sjs}kY=NKv`=1n!k+6Pc|GOS^Cy&p9EKt(0dv-xKIN8w crdEFEKeFbe$qEBxDF6Tf07*qoM6N<$f>@c#5dZ)H diff --git a/interface/web/themes/default-304/icons/x16-list/arrow_right_blue_round.png b/interface/web/themes/default-304/icons/x16-list/arrow_right_blue_round.png deleted file mode 100644 index e321918ac1bbe3789316f18023ebc61e2798eb1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)CaN?Mdu9+L2f+icX9%V`&5?@=^{?f9LCrNJDfWz| zK`ZBF>Wi2(xRGZN%fJKuZAZa?IQD0h8`Qg;W5)L%=)LhnbH^o-a|17W(2D_lNK2EI=>-0000U%RjeHtVS;C1;{_NPSu^%AI+pS$@kkUgAjHCe#LiHag!*0v+liAV z1uQwTW8dTB&ylJEFr7~Aprhq^emowJAN}0dMIj)|GFGCff(D!Ju4iiyzZQq5D3Gs& zuWw;l7#6v($OV9dlXKEEolho{qp&7!su}?!YP;GFFx*L6A^otpSP4cHQALEZ7~tde zfn_1=jt=>Jf1U%;8bA~W01>SL-d>(s!>s|d1t1EiXBQavZ!{cme>-ajh-wKaLGC(! zO@B9VMJ1%lL)2~R0*Fi9>RaW|!swq2>dGGA%^Ct7uMjAU)UUJEkGlceNnB;%A&pQs zKO@yiA;@N9ZD2!)NiSl5Z$KEfx{tb9((AZ_5xBX!2YR4N>XQ9419rM=6wGl zWE21jL(??q`W`B}&e^SGY;J9X?WwA|p%k7xrxXS09Ej;FO6CYDL7Z~f-m*j}U|~N> z7YwI_!}d<9(~?9eU{mRV1x3Mq$0-6DDWb=U>Tvn4O19a zh=CcRHx1C4_-KuNG)5k3-yS}OEbjoyz`!+m?;% zrUh%2VC+O|8(7{7!N`vALZ?1;v#ED&8#hfGR}Bl7bqg0YlYb|vfL)^eB872AP$Ih{ dQo(=7bH6sb7=fpEXLJAn002ovPDHLkV1gKwo`L`X diff --git a/interface/web/themes/default-304/icons/x16-list/bar_graph.png b/interface/web/themes/default-304/icons/x16-list/bar_graph.png deleted file mode 100644 index 31920e0582058d7665c094910e2ed47445cde96f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmV+f0sH=mP)uopI}2lxm;@C~blYVQ=ghD$Gng61^T^QQ zJl^&2=lL7Z|8)7Bbv++~&IX%!if}vlJwY@BUG`f70MHSl*}J5my+H{$E@y~G!_NlK zgQI2;M*x5dp_K14m_<7b!gXQbSQ#h@FZ>QjMUjfu1`mJ`$~J)9BPjvm>MeK@+S(xZ zl>wC<4H^m3Od#Rg0Fvem9O3+}G?15sz^vHXWU=b>oiC?-004K6_N1cN96HeqI(a0oDZTw zYCvkc4}LTNiX~te(zf^g{?@(k{#G1D zZm8Vy(xH0mtAv{Eum2Ok@9THGfd?`}`Q{e_Wt*Nilx%$d9*F-F!o?e&tuI>ttO0}z z*FAH98K5G8mhRAt$1mFe*&%9|6GV9j+&{?{|g~%|27E3HVLDe%^1|jr0D~ZZ!B!yZ#>weh;RnUf+)q|DF@CCU{M{ z296r{30Dg|CSLsy#Pgx_c@Pa0?+2=J0P)=?Tq(erA{~1!opz1GRU$x}; z|MEr0{uj?b`agfp;s4n)5B<-We(-WBX`SKJ315Wn!w|EPJl zFbyCV!wq=(?i&~*vkCF3YXHSwxc}@U7$dV`{QnXXU^a+GS4)%uFwN-lC*h+t^jDA}}5GE&!%Gw0l~Wo-+XoQha-6`xq` zh@Z$?Ib&|C=;C(%Htq?$J15TSX)0vZ^J6}D{P==|Icy7#n|eIlcp_kp#A@*irti7G zH77?XEb3m!qO|GRUdMd}J#xJ}o^WU>q;Lez+9pN428kEjv~ zQMX(sWp#y0vmyh$mCNx84dU-O0vcp+zOP!13NwD{C<+U(FD)-Iz!A-hbJk!F54>o= zm-KpgKzDwD3X2QW(=;~pY8r#No07uTKLu+e*&r$aibTv6fw_aQ8Am7@j?wALf=C3e&*<;K1A zewtwe_SXS{0nP(eDzXN9>m{1M@i`Hv%V{4qvM0QrjgBzDTSb|q^)=Smexq}cp7wSr z>m7ClYX1hwZInN&6?%;CkhHnM07tIxC=dLY26@gu@|>qKSeqP600000NkvXXu0mjf D>M+U| diff --git a/interface/web/themes/default-304/icons/x16-list/clock.png b/interface/web/themes/default-304/icons/x16-list/clock.png deleted file mode 100644 index f770a9c671fd9b5091fa31beb1c1d12dddba5eb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmV;U0bKrxP)Q{-< zXl-Lb`~o@VJ+;@|YwFSi58V5n_nh3XXqpm+Vdw$b08)UaYuzG9_63wo(tPKZ#LsqgG{|Cq*NqPvTfLIlF1Ej@>hPilwP?VHv~pCZ zQL`ekRcL=r)!{`AYPkVoYR{#SWk({Ff8v~~!;6p_Ozu``cr?LeXX@p5{sxCknuNZd%K88R N002ovPDHLkV1fc7zhD3W diff --git a/interface/web/themes/default-304/icons/x16-list/code.png b/interface/web/themes/default-304/icons/x16-list/code.png deleted file mode 100644 index 3791cb592817f1475b17061c962fe113b92c3607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmV-H0>1r;P)OC$#%U^*N@ofu)_=dkNq}0> zV2CgtLXv`LkSGt53mDP|lQCRBh9e>zvsB7f`_UbNj0N<`xyO}bh>n*^+4dUV2qYJv z!tIi?t(@Hu?Y>N;Y}JiztbW?U;)hNAOE(J;;Q$uhXewt%LhA*I@`{=Z;Bo+iZnO#F z@Q~7w@O+A<@568e^e#`%sIze#X8~Ri!*V4RP@?k1#@PqIvHORkxNhUlx`l=%!2C2N z+qQEe2qL;!Vu75mywEW5q=|ZiW2S21?q?gf-gnURQh@8aS->xiWA=@XON%$`kjfXWdpT+4}B`;Peb6^LJKqW@7%K{mNyO|rJT#Qk!oP{ z1S(&9xcSk-Wy-nU61e)Zg&Rw46rVN;n7+&~4D;J~WHPj=U9am7CRR-B5@3>wS$y2Y zzRn<{csxK25u;Wz>OG@Ya@qqKLePA0C5n({EdfMPGzxh5==5BR^b diff --git a/interface/web/themes/default-304/icons/x16-list/comment_blue.png b/interface/web/themes/default-304/icons/x16-list/comment_blue.png deleted file mode 100644 index 8bc780f4118869648de4b88b2eb4a1ce047e068f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmV-O0k{5%P)72An$L&NxcdL;`=9^u0gyaM9Y{Uc5U2t3K_-9t{^vh20HhA;lKC(L-h-S+ z3IM4G>4O>Yf8X`@BpCow57GxWV9D_pBpCowk8HsClm$0PG619=qz`6*1F^0E1>lSW zPhn}p0XZEcfCLLy+{PJ|H=cimg+2%;pd=)uR0v8WV1*mczd;E!q(tO^krL68vjWHv zSZag?7!dbkD8^v`I7~pGZo_?4ClhHvf!Bmfu#kR_k%5RXU_R7VPH6 jLMtbUub3{~X~@7}*VrvN<3su{pwSGTu6{1-oD!MNkl4c5T6GrMhBn1|M@@Tz*CSR?}69=mjUx}X~y9q z5H3JA0IV1tfW$$zqsu*g|MP$0irfF8t`=axX1mvfOaC{XfAb$7sM~NKWXOE50jKYO z!mynXfO!#QKmxiqh%o@B4i*jtFh7HUZO1vR;erf6u7(?c6rKGk3vPh@2g10(zU%KX zV*{3$x_3N+1<-v^U@kfS0!1@O9;;@k0qdcX>!B`E0OI|y=tPP>1zd^hJUD7l#rA`u zGX3aU7A96$e_AL-b>eNzGe;5~9rn zHrX;O#+5b)lswnjjWb545_05l}BEo(#Z29j;m z0+2?a0|HP;2%DLM=)hY0J_0Rr9NNy~5L~MR+y(#_lb>6$zV9Wy1BxT?T#GmVg>UpX Z-~}oL`MF5=`Gx=h002ovPDHLkV1n<=Yp4JK diff --git a/interface/web/themes/default-304/icons/x16-list/envelope.png b/interface/web/themes/default-304/icons/x16-list/envelope.png deleted file mode 100644 index a98b125f1160b3148d8f0ee75d9c6211c4a776a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmV7&?*x%_cU`1OsF75;+ s7F?Y)EMfz*=tmd4-htOk?EEvm0iQ}R#kSS9ZvX%Q07*qoM6N<$g5~{UnE(I) diff --git a/interface/web/themes/default-304/icons/x16-list/flag_black.png b/interface/web/themes/default-304/icons/x16-list/flag_black.png deleted file mode 100644 index 0b453a5adaf7264c42f68aca488c6ea9598e33eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ*P)h?K zE)6ZU-C7I&J?BN?y(ZTKKMv>X_x{gwUIu{W^LZAJ$C;#QiMND_cySu5)oM`xiBR%Q z{4Bd5s1v_^J|Exwi&*nK+JfzWR zpx5gW4u{e0cClKmuvjdhQmH`K6t6NE4ETrM->U&J<|zb05L0+O9z>&2*lacohr`eO z8dj?nX0sW`!dlJ+=3Fj!SF6>;xH_E<27`fben~t%_FswQ>AB7YoNB#Z7o#ebN-+t$ z-(=FkC4rh!d}%hDaJgJ}w8wbbOf_KV?UH~al*?sgGMR5wgC`b?g+(F}Mm1sdI*h7+ zRlq342mUIZPUl^vQhC&Fw;4$p)rV0LncZ%GSU@}@K%zg?d#M-a8;u4dF{2+%O!AO` z^O{SDHSzeEj1`MT#uKGdsjGq;;wSN!NSxh$SwKrJ!~r3N7=ZEKP0uZD+daS}7G1Ole7F=@fjMscfTs ziAvcZ(Ij8)3KEQ7L9kR7#3HgNV)pGkKNOawUVM3Y&U4O(^L)<{00a>UBU#0M>J|s6 zLsf#YMW1Bx#Awa!n$^1|-~F2J!yH$0WUW{W;DosN;^tub`8(K|TQ|nZ54EPYU`9nR zx~4urUv&?f0(Z{;0I~5F@2%vLPMoZNg4)0$Y6qSp>rx+5?0#Gs4&%`r&^@t$y@ky$ zwA2w34JcEz8Z17TCq1(^J+y0rtimu8oPMPe`mHXIzFSv+zpq1zDkt5cw?#X(9t*m()8=7f$ zEo&5So=n_FJtCRf)Kg2I4FOW8t)##}w(t?E5h>Ix^mJKdkxOJ!oeD{yt_=aPX0lB2 zxqOZaZl0ksah3|zO)Vuwq*9YeqXuL-O7ybJ6 P00000NkvXXu0mjfcB4Hu diff --git a/interface/web/themes/default-304/icons/x16-list/flag_green.png b/interface/web/themes/default-304/icons/x16-list/flag_green.png deleted file mode 100644 index ac6bfb81c18cb6505ecac90d725fe337b46b53e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmV;d0#p5oP)>en^ZnTN?mh1`vr>%8B#{sHvcD&zqvbvjXj!tU)~OZu%* z+MKE#JBq|y6emVY;po|=Yax3Uph~wW5BDV9Q9J4n4o;jN$f|>mbW$n5sd?`&K0Jhz_X1 zfga1ng@B}~l)_stLrqw5XrdVBpPxbJbQ?8{pe|XRc5&rRBL+WrWAt|n+Mpc^0b97i z!F3Z_`(C({5>8H;xcc$};;9fKKZ4LBML7Gc8n>ncxH)qTluPHL3`m!S3tz1UB`(1n zcc5;v3OwvY`=`KTxnDxreHY4O3ibteh+sEn12%Az&zf#O+|3TSpGa^I+fWqT>7vlq z(qvpT*2#l?`Eq8|EE^zHE&#?c9omo`>Yxo;*gpR@BI%}O>VS>q0<0nzPfe8qz2use z6Zz}ZZ~;@I64Qc(RIN<8E9C?TSwxt;%y?xS_pb4@IhaxHW!^>?(;MV8Ou0vp@c#jf zTy%-4m?fnx+-okUa2Y`vU5^Q%r^U&Xn3My+`DPLb^o#0Ns_Au8^UuH9avu{}rRIlALu##ufjP03lDt#aq&*MgKfzy7vz@3j*T> SQcf=b0000z0W!SBLGBE6gg`%3I;_G z$f#fH5tMv>S1hePG6}yt<9_-Mb0r6$3fJW^Vw-?od4*u!1151@27KuUZj}RGIgkrb zh^X`-unxFi2aNfE*PX!4Ex^D=;A0q={>=R=DqwZ+uMP69^l(k zDglIx=Cc8NjZHQv76m`N1%&Jbo;ZNFeFS_0#zVj$!Oz?I9S5df0HK1JWj(MemU}vr z9pTPeEXD{K*0B^9`_TYQL>HI<+@Xtv7HsMQd(f~9KvgzbtVx5p6<>Rc>7oL-Tc^In z4Md7-;FB1Fnt5E~+An4Qy+YcB(tVUJF4^nxdtg0nZb0hIeUuvgvSVpZasjAPmNI?J zbOxi{l}QYVZZVK2h=~04X;N`%h*kioG8j&_qP@9sF7DnXKRrc~xKJY_UDYz$vo#GF zSRGJ!%4&JTnAGZBz0MZB>_6@lJ13Q3nYmgbQC(9D5}N(SZbBI1n@q@j{t+=Y^tBHkBxLBSaudmP_5{hFU^s8hznKHYqE%f6uEMz2@@b$Kjm!oZtI=5dgAUtz@%UXpM-L z|Ds+YQt+CZ*uNyYzbunIT9MqNWP(K^$19?53q-@b_b$cvJFTq<3BoTQ(dDFq*F*+> zyty?#Q)o3C?xg6hJE?|2bdxL}U$>lHp6%@3a%~SrA6zpYZ17DBb1hgn8gBky+^5p zv|30bNaY$lZQ;KTm6hR>OomuR1<=`vuf4rEoSsH7Hy0m@ixDxIu)!-A_U?%yGWxcT zj;M)KnNh28AP9(7RbiIs<7R28i686+mC7Gn)-eqQr zVG4`Km*w2bHgR1}HV1JoSZuca7N-+ad3oTunDFzRFcW0NIaxY6Y^MYwPGfg>>_&5Q z^qC;gyh=qgS}i@+>1Z}9OPm!7NJPm5Y9?&r0yg&b-SX7c(G{1AZZr3{_XtA1G(7z;ZRK@&Et;07*qo IM6N<$g0Dj^RR910 diff --git a/interface/web/themes/default-304/icons/x16-list/flag_yellow.png b/interface/web/themes/default-304/icons/x16-list/flag_yellow.png deleted file mode 100644 index bf137827010d1e7ba2df497f24df1f2bf1ae925a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmV<60U!Q}P)d-LAM%4$7}*HY8YBYRg>)g-YFLbz%U<0tTukPUBFoj1X9d2{jxxQA6@pi zRnQ-gYfp-@!7eYSD_9z_imTOLYLfjc;J71^6_!dZz3213!RO~ODipj_D$UZ#iHquW zM@IoJR6El&gLyn#$BT=r-Cpk|K}x}3l3rd$sa&3DF91`3;W#yna}fUK6=fZxLFsgu zYBfh&0cVFxzzyi*IS45hixb~bCKKu?7y_T*8>mf3B)pl90?v}y#Rr&_*FvGS-`*dX W1Tps?12A*|0000f48;k3=Tfb81wPGoGlD%Ciyk020 zoU7N0OKnLi!1Y?OYAa_X4+m*NNB|hL8$aEpBc1wKmwG_Q4GRW=L#Y(E=P$B8Z-fNVUMm0q002ovPDHLkV1fLR>ss`R*0Dv4&ooqoVm6p zhO=ibjj?@R!ek)h5KYw(G%AWl595D3UN(qwf9cW>Cbk|rm_Cs{8(SK6F&{ABO z4`onm{0bbmbb6F)bU&n(NFIZWmzdqZSD?mR$3yD&l#@jZ+Odi0out4qwVqG8@6XiF acm4y4k)5Lvd|D;|0000(3`A+*nshLUJG=%+CZGYD*!WI!$r=ILz}mfFgpus$9~4RDi3-VAtyN|w0CIP= z)((<6z!`k>-W3W+3IO06fxDdre9iz#Dgf>SLbn0inFF}HNXpE{0OOtlNGk5WQ~+QB z%ZWB@aSBm`Mm7K@1{23?z=tF0a10Vd=EKDB8t`UUI2?n- wkohn%yav47;Eop)G~nqnbG#U@0i-4*06plAJtZ2lhPU3!wvln8o~l_uO-?Bw3Y6Bz!Cx7T994q*+|jZ^eF)2~brPr)NbN z*ELkGYS=$KMlzKeiG1T=IvJX#Vekp`S$czE=)2zTVkx~s5<}PtwM{1z-0cIM55VjJ z4{r>91={aGx&DN?B=2NeB;alLY;c3Yw=Y2L8K}00S=-h~kQWN7?7jrI1n@-*C_Vz4 z*#kZcp`c{czTrE9J3rx*Ca|%`1-eLJYS|o`Hu%zl&n@_<0W2)@L1sh(g;rHzgSrvG z1qSaF%Aq_kH_xFi%F)KM0dO0@caGx7ir1Ht3@$c{d;~(D33oysBEc|cyr~T6ZfQ%J30{X&2izhKIewnaBnt?&; WU(H4{HFqYUX$+pOelF{r5}E)hoGMZP diff --git a/interface/web/themes/default-304/icons/x16-list/minus_round.png b/interface/web/themes/default-304/icons/x16-list/minus_round.png deleted file mode 100644 index e246f112a7ed309bc9289bf76e8c0db0c5da43e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmV-g0j2(lP)+Q=k~V{6_8VHb33M~yekeskN&Nw{R0yI~3JxKCsHj2FLWY9eo#wgd zaAz8Iz!x64ob#T;J@>;fBC;&Y^y&CW1Y)MKNq#cr)3a?`T-O!P^JFd7#K_^n8&|w= z97h!_XEXU~w`E=~D_9dlc<_dr&~;t>*=ox0JRb`=tw}GKnXRFZ=B+%P<+g$ct;R8F z&|$vc=~M=%*+k%_hFTh^Lwax2rJpquftMO;RRi=~Dk^qK_k|h^i81~2A@}bg#XaTk s@km}OSMpf6P_QPp@hR{9nfCe4e`c4FO}Xm=4*&oF07*qoM6N<$f|6LC5C8xG diff --git a/interface/web/themes/default-304/icons/x16-list/money.png b/interface/web/themes/default-304/icons/x16-list/money.png deleted file mode 100644 index 915c983bd180033ab0dc54e7b15dca97a34ed316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmV-O0k{5%P)5F5q^$$`|&zAz2Uk60GsK+phWKFmcRb#pJx`~&rl3y@~Q zFaX&LD{n6b8&JQ$>VMAW46r;%?eue#U=|f%81U@(V=#sp0+LTzoA5tiz7L8^paw*t z7y#3ZYzVR!kPU@JFNOiIz(Y3xB)0tKLU;hf3?bSD$eKa?Mc3wF8h~sFOd&`fSu;!= z77lO&&|?7IzaVzZiirQoYvSMrM6U?{gkk`CLP8Hjk_|vlNXQt&0DPGVrU9EA12Ned a9|i!R(cC1!_He8K0000#Bm8?qnd+5RyqdYs)~|3AQ_iJ^r9^S9bdo$gTe~DWM4f_tQzg diff --git a/interface/web/themes/default-304/icons/x16-list/pencil.png b/interface/web/themes/default-304/icons/x16-list/pencil.png deleted file mode 100644 index f13405605f93032fbc5c4d9f49165d0bdd9dc13d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vproLLo7}&oovX}Vj$pJ?D9TQ z)v{6jgM^dcro8lQ?HjopId1>EYj2>~m1u1Ep=;tEan2)*1!CKlF;;%HwFp1?+k&e{ z7nKrsa#b z-<`zYC}qi(_0)NR+q46pBqsc8bnR{NaQgrMKLavm07-oR@tY_NQj607Lbij{q^GCjH{j5(|6p9O%Kv}* z6gMyi@rgEI%j3WQ=O4KIpOi2`F<`-kkN-&x6BGkVR^IzhYM7uHP`>N$e^SE)Yb+p# z2?&EUf(%*rDH+ViY5=moki!IqyS$a*Y@7xFUH2b7Oh6c<8HSO=32Xo`DLa7}FpM51 z*f5F#=m~@5SioffF_@qMpfEwl7zqj80Q4}yhk;4i8UUp3-$<~>hPE|i0fGh@*k_%+n}FQ)PJ5r0002iNklO&J(EDF=*=DnehG^*%+qY#*+jD{(QzPi1R|;Wjt=W82!oW@py5lsaPP2lemZZ>F zs|#@{Yv$C5&8s5%%@JJ3U(g7HGcRiN5P!?jGQh$0g^M5PGlc|Amj#>!9x-W6Va}dG zxbPvGYIS_?G%{N21m zcS+IdC8U4}OAI|L_Y$Aqzwz|`g#~+B(&?1~I32@z2I^&>!lAtoT#09lA4DXbq_=(v zViSW8Z|Gk1NF3V_L$m5@(&??=MCBNl&r;}`cMHx~<3ihTW)+R3M>@vFi?n1P0t(cLUE<_y z85ztDUCCwa4TfgDH+WJMT#d~t7x6eua}IaD!0=>)!?gCqQ+pjwuq`^oFkjx2>&TP6 x2cH~gT34YaViz&_(_#JZoqkh!n)Qt*0xf3untP-#?hDW&22WQ%mvv4FO#p>}Gw%QZ diff --git a/interface/web/themes/default-304/icons/x16-list/rss.png b/interface/web/themes/default-304/icons/x16-list/rss.png deleted file mode 100644 index b35840d491b9463b2cbe79124cfaf483fc5561d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmV{-EaT^002ovPDHLkV1jd^WgP$j diff --git a/interface/web/themes/default-304/icons/x16-list/rss_round.png b/interface/web/themes/default-304/icons/x16-list/rss_round.png deleted file mode 100644 index 27ce67d2b3ecec7154c442a68414f53fd0b1062e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmV;S0bc%zP)|(5vrEOcOYMyb}(0o#O2N$Ewcp(7p5Ft-UE@y(O7|nisb9K z6bQMWd}73NqqyyfyatufW53D~;If9b6wm`ppnS?MHo8Dy?uv{ok>_0KzOQ)#T-LBQ z6UgieqaGRk7WTaq2|FTBxyW^$Qx_N`cwiLA=sfRMB4>8KN}&01Lm*orLct!AhbVpv zF=kI=v^@m+i1=$00000 LNkvXXu0mjfLw2{+ diff --git a/interface/web/themes/default-304/icons/x16-list/security_green.png b/interface/web/themes/default-304/icons/x16-list/security_green.png deleted file mode 100644 index 38afbbb2095225c42bc20e1de30ca76f0a6d7075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Gd*1#Lo7~DoxD-V!9c*}b8D5a zRPXx_kz7kp?ax>t;xX~evo~^Q-tWCWoOVuo@tZ8RH%}WhnOqj@iU~@QwR_yPMwaf{M#=#6u7Z#jhZTNq8nUV3b>6Qtx z8^SlfysB_h@7K!G{r{4MLdD~(WK+#T?)jb2{j-U^Nc#Vp&#asuijVn=`NRMn$>8bg K=d#Wzp$Pzy|5GUd diff --git a/interface/web/themes/default-304/icons/x16-list/security_orange.png b/interface/web/themes/default-304/icons/x16-list/security_orange.png deleted file mode 100644 index 4c5bad763c62abaa2ee7749de532aa56f7af364c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`^E_P~Lo7}&oxG8^!GMRwSe{jR zNuqGuq6MikDr^fFlTKdzJ$Z(LlI?;I`x3tJ70NpMUY5}hIUSxe=eW|*^LJOUPCUJj zSIM@wTX52nI>ra-i+&o0%om&@lGUn}@9!wtpvK?uK8|tTE{0vZ7&tO@^L!bkX02y9 z+sas=y;aO2!qQ`}eQiTT}|Hm8>Q716W1}5 z`3xbG2BF`+btK+Rnh_Gk^#s6UV(~f-)iHviT+PU`<`|R!SY!ck?Gs?>6A-`JSOsVh z&71%nn!fY-+G&Oh%oZ z5`^vi0HwJTNb+x6J#i)0q8h+050adUIg-5FQ!fhYm!NK77suK1qyJyWeo0|Tg`26! z(%f{EQhow9W}vwMpDbu(d0sFmEu6)gJxwNc3Nt=ZkW}zUGBb%Fyx0TfgWyD9{RXri zz@`mf%FuZX8yTp@pmGd%aX;y);a}cJ3Rp8icyk15=b&*5K0kwR4fx)M%~#Nzhj$aW zuLGp7M*cQdl0RdP;#Q-uJ`L?h@O1^;+E22^ZQPY{(uuL|sYvo$*)gbJhL1UDJ%n}< zns?ztl9F{ENr7JO_m}RBfD?lHMOeEAYuDj@9Nvzy`eX=6;a&tjJ3j#BL$Dmgt%T^< zVOSo5%2C{<14zpC%zyR%K6tqo``&Sk$(SRlV9gHGdFq43T_lZ=(~H2Y&hI8+oN4|3 ztE4_jrjJn$5R4&22}WfFh7dv!Od%o#1<^yo$q@6^ zSZbv*7^YF2JeOve@v-W_VZQm!`3`gM+-tM7K$0YTli?=OLiX&oZfJ@s5fmeoT%a`rdfLQ5P!?DGa$_MrAiG9Zzc^+`?JO#ur_P-a)z@E z5Sz4d@rH4468kqLL|=YU7{%`+_y|6Vj}XO%wx(^`ByE!h+Cgv?9K@-kIH?HYCi(&@B1Mc^imgfr(Wyg* zEINq8F<&sDi8s>H3qLq~=g)8%05%Vq&uz83Z>9-?G@Io)hAudUfh4*x^?==MxVGLz zg5Wk)`K7LPUK@4Toi@e?`yr(1M&7^Wk*X|=G{t|`RCwoSh#qOWkw=-#fhVQf9jY}D ze@Bjb+ diff --git a/interface/web/themes/default-304/icons/x16-list/stop_round.png b/interface/web/themes/default-304/icons/x16-list/stop_round.png deleted file mode 100644 index 4cc285205dbe17d9b35b960115385429254dd72f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)+q~TCGM-AP0vU zG|)C{uBxia8oo*;dPyd!Y_AL;2Zw+LTEPUaPID!Zpu*$?J^1}(+4*Za&2n(4xlA-Z zGq#3!j>qX{e2l?LrT7TQ9UdCQ-#9W1GMMkvG$}VKa~RuO+@KuU5o*w)2fZ+0hxBxK zKvyHf9J%Q!Zg3Y22sLQYgI;EUC~SsE8yXPsZBaKVeLgcfyHtHTdAOc8)(M-i9^sVvuoVs2QvJ5`)9*WL^O?b zIPD11JZkghd1PsjVe|R6X8~}3T!#>~xd)6OZDXw^nR%2z1n&pHIY%)@Dy86nlo8km z351)W5CUrrAU^Z}!qIE3{Pryg;K?~tN{Jy1K;f4J^E`7;1AvBu_gvK9fo}jj@B+|A zkOVzoNdk}r-uvYdv`2hM%?U6E0P_{Mp!Ta)SAV9h`Wx^9HNOL+c)qn; P00000NkvXXu0mjf-coC8 diff --git a/interface/web/themes/default-304/icons/x16-list/world.png b/interface/web/themes/default-304/icons/x16-list/world.png deleted file mode 100644 index a94d9a6247d89a12a30f23d96f7db70de53b219a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmV&Vqi5y(q)UwNJrM_l=lC}A-XqrTg`AmxT#V*Vk z`;(d(69=#FdF%J}eX~XR>S^o!^ZcIod4E5XspzvjU_UWBa zgIWU#Sdmza%G9_tMh$Dj)VpJ&y5)Wv+4GU_EW^J|zA5rvUI>zcHZ!E*EOP0G60h1jd9+NMv%#WQs3$dpM<0^ zP5?0|(EDQ`zzA3sW*0@pK7bT)cp(KJ4I{9L*s~}SfP6t9$YH1}lros8t4v+A)cf6N^24Lx_V_5_fMhfjhe!!R_%l;EE(w<${U7aSe%P8P4{kp>fiL{#hFw>jcsV zOV)^xO_CqyBUi2i6O$%mYYhXq(x>ozNc~jzhAqYyz9Hq=bvi@V&#rHPRCbGH!bAz` zLX8=xjTvhk^4Kc+EeJ@g*9*U)vKeT9=OY0MwMK}}OVkXP8_KyTQ$l7`VaLM|j|f?r zkO=I~C5+B~N5PPW_V@-dvdT0dTzU(UvB~o6>Lv)A(>*cb`Z6){_AA9p#~1Y5oX`xm z!q*@~zFvbUv1H|tNcs6me8QtIu@O2c6*$%AI^jVF%$6Cn4bPzY`6RUMBlLeLQkfu% zO=AhiBj6Sx=Xt0y90mIOD6VU#gtGchlxm-#<&w-YHZ@BD g0`g4Wc`|#|e^)y=*b=~26aWAK07*qoM6N<$f`6)BQUCw| diff --git a/interface/web/themes/default-304/icons/x16/address_book.png b/interface/web/themes/default-304/icons/x16/address_book.png deleted file mode 100644 index 923e0bc8422955a4b7aecc4b0371fdaea9f99888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 681 zcmV;a0#^NrP)g@1A>G%=iaPJa9PN!{s~Q_uYF!wrvBn0cH2km}<6< zufU~Fw+UkmcD7mexVN|6iA0Dx4zXx-E%S17iRI)FjYf$^B2=}sbZl$e z)oB2hvpM&l@mFJSPj|Xa0F%J;RR&f?MFmw=iv&TiCHF`qf;KcHuXHz5HaE8cYZ5H2 zHNNlTc^*m(N(5uFG{Yh6aF|#u7p)Bop2y786q^7~t*>wp@DU_(}#ca)L z%=~!A@Qd3lj16IoMoGqlymXd6h(JJLfNN5Oz^@~Qe2|BV_y?(txdKXp{*D!8nJ)W{o+gt=yRDST^QoiKc=iUSvMKJL<^@s{=ot7yjq@@xFg5C@6>`WD+zF(*sTa z!3_enm8PjJJRU_Y2sBTPMl_nuFxYIcI2?HIcEj!SVPIqgUneK=ZDt0uv$G&Yk-y9e z0s;d3)X_AJW_8Rz@!w)Wa$u>TUZqlDRF{q6CfTz1=Z5?k{Fs{qDT|j18gg=SFw}S& zy){C(t52Y-Dg&;{d3qil$Hyl^X0FSP#>DhA)K@0~21B zDUS)x2kGe3O7Q$rG`wSDSP>d3BCvuN3WWl_wIcXTckzAHgSL{xuo5gqsTl7zV4}wW zPt8d*srE7DwGk0}2&_Oam&=)J&wTENrI3cJ_8fEe^X4{>N&ozrGK$$j2$w4%u!82S ztSmV0r(vq!NeTy z=<{Qt&x^&;^BQo@R50w4lwxnC7s;K#dST7rhEqB|MZS%M-i(Y4@`Myv?<6iucxExe z%)shHWkV}DX@#V>$}b2fydr$zZ=&pfV{@cnY)yRLc;HU{1@eCwA^0bagE8y@Ho@=! O0000hMosc(|-6AOEVv0 zjOEV3!RK09TYm(IZ3DE{Y*lMyyNCF0;uX?SJNG^QDu<50#?RAlQp+FU%!7Ir4$y$#(JJR9ymuLv(D<~Dy3r4l#0cj2wH2j zXp~ZDUGMeTxCMgD{e(>stsVEWxbQivD=X%25kv$dI}U#N>Rk>#_A>KVrrCRUmZn>~ z7 zJUuY$Yy&)F4AvOpj%8y$&+66hvECY~wk4c|hp*Ro_>s4myOINUgMGI+`?cn1%v!t8 zTAMM(5R1j|eV=5IAd^bsB(IZgPmqjVC+%&rS$v7Kw@KRD;I6K8OSQ%s2gm_$0)0=l xF~9rwdxq)A>?Pd2bK-2pL;iFe>~Gh|{{`89LZnP`K%oEt002ovPDHLkV1j`RYJmU% diff --git a/interface/web/themes/default-304/icons/x16/address_book__minus.png b/interface/web/themes/default-304/icons/x16/address_book__minus.png deleted file mode 100644 index 1fb998230d2e0afd312dffe52b180435de680c7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmV;t0z>_YP)&70>qX4$lnoGgq89mGtr2p46GS|znew042H4y4E;Xj7{eK?`Y-34It9 zK|vCIEK1CxA{C?-lBtDXGg>h(-@E7D7LH$3c;Rq3hs*E$&*gtD$8i9ffTC+hOa&{S zkHCqG=|dP}a5BxJTb-TFZa7TDb%{nI3z3tZO*AWuNF+ie9Hy+kzGErP5fOl*JFTrW zR-^##-ED5sJoax1n?brIIqA?BodUB{Uiv2|7s71!)QZI@5zpu(!+dAEBEqa6ux8^9;-&i*CjXrH!eDnh zuInNKsdSpj@o}>h5E2pmK#@~WNq+HOx;t7hfYzFl-Nz`bYG9)GE?OJ5R97EgyKdck z0DB&wl;ZcSPkwO?ukV~;RjiQhwP&e3c#giOSIN$cwt|SDWl_QBmu-|EIL&bXv$@>c322m>dxKJAKHT{93Cpr9fUd^I#$Cs@C9z^9 zXJduo@vDv{W5y}i9+9uU@AW3(n@8GentWqPOw41_{9e!*(4Jb#c;pjf?rGeZLd zBYE)7F~+P1a<$gjwvFq$e_1%uP`+U0w#)Z>&WqeP@%W@aIC$FvDu4?>>CreNEB)nh ipU+RmxdhAt-~Ip%4NTtB)(&(40000OeaN!YfTpp7ibELVaqJd%rIM8LB5ow zSnAB$meU;K+#0D^x|Yc@dlAhEqWB^6-?=Auu@6xfemsZs@c-R&4iDqz=Ee|C6N>Jq ztZe@eN(fAlP{;_9k{D)5P}E>BKw~sQ-_wJxzCOIR*0WBJ3o(wg$0mc z8W-jTEX#5{77B%ED~$Ok+$okM2bT*PRVo!Gv|0GlBL6E~UtbV|pNoqiVd-)~b8c=f zK5H^CTql98_7vXKh%iw7o1q6M@&1v7_O+Ly;hdX;XLz`jzzbTGN+m`c)A6<@1!Klr zfOCXr#@>$psuX;Dl8)BAXpBrwVnske8i5x)Qz#S|u1|xby$nAl>@bxdK{ugGos6kL zJ)A>&*y~c!qKcy7P=R2(g=Ad@Js}Ei*F{efLgaX0)FK4%6CJe2CVL>j|`S{i?Gu(5lq{d2|iS8eM`8xm*tG z-J_WLV1?mYJgwR*2mYw0J5jhGiNQRXiBKOOLnXt+x&%glH=mA}E811JAvgXyn!8xn^{KO=;h7)WfydZo#?!#D@ tL-vpw$vQ^s+9tS3{ulnEwm_ywwyBqoLfolXD%002ovPDHLkV1j_xUpN2& diff --git a/interface/web/themes/default-304/icons/x16/address_book__plus.png b/interface/web/themes/default-304/icons/x16/address_book__plus.png deleted file mode 100644 index af396b41050db1bc095eca7b12686d2569710525..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)1C)S3!?us$gGVX0^~EiXqBD%V<@INAqe!D84@^0KB;c}dJn zyD8aHsodIT4fEFWf~CVu=B*T$6D09N=F_{QjzX*s{CHmYpXYbp^QYKsHbuxFXz!<$MeW@hkhejeYKmax3M3{sT3 z%N_xX#d6a?(=<#4QUAn!i#197?*hF>qrq&;MSN*iY>Ins%#Xs)l@*Y(>~}$9c6K(V znl50ZP6GSGbNEmz!a&U`Ll4g4(_;xUZ@C%?*Wx04BO+u3kDyttR%2YBiI27En6#Dw zu2ByQ!xr@4OUKyLOgztt#HiB=FCI@y@CaV0R4R;8*Ph?UW+4Q2_6f zJrmR&PQ|*QTOyI5yF8f`j-u<48jfBILr+5vcqM)iOebxCD&6&dUC=8Qi_uk@h}Syu zRc#Cm`Oz@sMZ;7W1EFpo_UpJfQ0#}0i3o&Lhr=tEGf5TgsG!KhC5(tfBJvB#Xup}T zDg1mcxQ<}3F7KS$5)dFJy=`tmDB%@h`jj7K`x}ArZ0GhfK66yOkDk0ALg4%YP9_@C TX7j6=00000NkvXXu0mjff~HtP diff --git a/interface/web/themes/default-304/icons/x16/address_book_blue.png b/interface/web/themes/default-304/icons/x16/address_book_blue.png deleted file mode 100644 index 6f855e7421f91af66e1f0517a05b172d732d8790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmV;e0#f~nP)5BLMHFUdwJ9p zq7?-XUw`3z`%d1BjB~zyCohM`ae!K3ds|!Anzd^`x)n9>t+hCp;MMRrXOHF>n=Eka z@gVQN&T#iho}sY?)H$43Og`UTlgYGZGMS2kaz{FbzWv0CaOP+u03Sx@7##bBbCfJt zVIhhTk;F<1DOCk^kVrBzvB>b)JkEiaOyVVdaHS`;CZD^A{fna))mBx?-^qkB+7jz;56w&`ka5Z~y(w@$^?_p4|kNf$zTopGjZ5 TZ?$AS00000NkvXXu0mjfc-=ui diff --git a/interface/web/themes/default-304/icons/x16/arrow.png b/interface/web/themes/default-304/icons/x16/arrow.png deleted file mode 100644 index 82cfae37cce484b4f63c7cabf3eb6ab65fe8ccd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmV+u0_^>XP)%i>VJ7jQeha)oawB!fk+Y?+pf! z1}HuQ#W6%10K!H+*TFUd@tGM<{{IKj7E|uW5N!Ym8+Kg<*?6Y&>firU9{l?cVgp?l zgJFPf+r^nc!85pU#Fm68o<3C8fdfmwwxB*J#ht7aBq-}Z!#|i6R{SRL9@W0ob zoBv&=UH zYoGl$UHas|=Ddes?7Q{#e~^0F{9Onah^KFwDVDbJ3@)s?_4|Lm)nES`?fU*7#0RR6 z0UCk`1E3&-NXmK)ES$WKK_GtB8KE8j|I6+9{~yE_OjsQQQjcN)w{au`mr(=;=8jkl z!e=CQ{r?Z5c_Np@@VM7AuuAGMfB@V8T!2YbgMlq*?imnfwJVEZ7SlwLM>c>7i1~n6 z28gwQ*cgVHtcsU086}rM`Px7%3&i|D%#3URBM`Gg4G{xkDI8b~s+j|1Dck@`FaT6! V`gL9)4>$k-002ovPDHLkV1mOd{Wt&s diff --git a/interface/web/themes/default-304/icons/x16/arrow_000_small.png b/interface/web/themes/default-304/icons/x16/arrow_000_small.png deleted file mode 100644 index 02867c8e314d3df5a02fb7612ae19c136be8f943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmV+m0rdWfP)A1p_-0VaJn8GxG3%zXO) zKZrJ;d@qJ519V$2%mgYt1H#<#tIkBPz59Q{qyPUwe4tzmK?7`;Jbc#i;Q#-m%m4p} zok!r3oB#hSR~|k?&;ZGt?K35^ww?iDkPFNg-u)kV?*D%fA1FuI1we%iqG=l$gp=1X z@Ww1ZqjT{8e-OWk{JK8B2x*3rdE&F(pdMTL@W*QV1E!kjDb0C}WweD0M^P z85YJ&2~ngB$2niGFP|X`Zv8snIj8%-n~wni`wR9j0TJC7vPkV^2NJ*NPy~c^oqfbZ zJ5NQ+0YKgM8`SEQ8us3R_CE&Tk_ERO@Sv7`QNQyHn#Bi&ij^mzog%=qQZTQoRpwK( z!F=m<%&&f%G$K*8_5^w3H!{uQJpH|VuS!z;c7b+32Dp?haSRcK)29&KBxJdxhf+<_ZUODT4R9=;;}{~cr_LdyZBv#$ zaso6@89IX4-aYC2OMq?u1ji7OJaY~1J;$>6@hhM?YNQ%Id?EFU0L#oFBBB-^!Fupc z7C7|)G`Gqc=JW_v>WL!2JY#@xv-E!9vG59pqc7k*_X^b0+&sRLnFgdWs#2dZp!|{O z7^pp%QA7zhPSy&CSpcfk)BNM1o_r24LT<=k<)5QbCA14wKyDHCuE+`5AxmV2jFIYd vfB~{X4#-}A!A3u`&|fssKVHq)$07*qoM6N<$f?z6sZ2$lO diff --git a/interface/web/themes/default-304/icons/x16/arrow_090.png b/interface/web/themes/default-304/icons/x16/arrow_090.png deleted file mode 100644 index 7e670dd348da116ab08d0572011f39c22304f598..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmV+b0{{JqP)V!ldwMd zEZUqAadl=}bhzW<`pd*^h2%?3pE-N%mmA<8dj`-_?H05$#c z0~23alGEE6Jb3pf%VabS`pioXv^?HmD5qj+47^PiF#hEqn6pMpsi9 zSxMo3IEh}*H}t)Z!5-K`zb}fRrzZ$O#i z!tnAQ=Z8LubA#{YEnf`Rp01}f_)n62qH(yB85^y2})P@0S`ngwZpjyFJ ztFC=;R@ePpW>K2H;sko>_H9qJ&h! zjoRLWMYo*Ue(%&zdh>j*4f7($nh6#c*&=*u87`HiJ-ht>zoSWq{}x8J*l@?L^FHiZ zdHcTq|9?gO|NrJ63WbY!F08OGUH1Rt|Nn{E@BW_O!?iH_{r~^`Lh7d&eom@2e%keI z&cnX=(qrN)SY03*7_`zRoVj;QVbZ35Jy(JHfX0KBFJNPPcS2R6=GYUC3#<-ON7y@s xQyH=!$Z+t@u${d1;~8TEUQuaH&zT`S3`_h^9D8nlY!A>&44$rjF6*2UngBHIZp{Dy diff --git a/interface/web/themes/default-304/icons/x16/arrow_135.png b/interface/web/themes/default-304/icons/x16/arrow_135.png deleted file mode 100644 index a0882c227845eae464b8c5a49ecbf2837c2fdf54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmV+u0_^>XP)bZWV=EV2^xjR3BamJRn z|LaeG`VSHZ;(j1zFzmj@px1thLA&`JgI41iR0DKc&Yvke^yPoz+L!+W=G^%2I`Qm( zmkDS7=kI>@A0!9V6r);wj6uG5FM~wZRtB;3O{fL{CC{X9fA!yS`j!7Vdtdywn{pA3 zlea$k50Y1@IvRu10HDMfueDGAC+vOmAH)FV_Z4$`p&t_j9!yY{E4Bz(u|3Nf}4^xL?01z+&F$)lL0x>@jivqDU5Gyg6 zq~$UB&N#zloKghj8w0TcNFJL3%s|Wv#2i4(4a9svEC|FRKr9Z#l0Ym4rMan+8v(~6 VI`A8NqGbR8002ovPDHLkV1mj+_n!a& diff --git a/interface/web/themes/default-304/icons/x16/arrow_135_small.png b/interface/web/themes/default-304/icons/x16/arrow_135_small.png deleted file mode 100644 index b51c5c67d59bfae5a9ba4d029aa1cc10657c1548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmV+o0rLKdP)lw@=c)F z64}B%+(a25k+tNVZvw@a5M=;g+{&4}G0V^J$FH&j z(o4ij_uN$3|NlQoj3@(u3K_T~7Bc`1VBid0z|9&kdkGMqVGEq&F;Y?@-3575TE}wkQdETI)}-&AI9k9nSwtAPMEeE40>4{HLH{Mv_F?HGppxT587w zmW>5<6OttA**s7)wh8W&YJLPQ?l1vH4m_xhwc_m#T!c^y#>4-($|2G2%N-X0*JM{zLQArIW?QRjz% zBmDsPhjN@E`tFM$IIj!1LXVyik=Lq3WLAfau(hib0|4KI2)EdRh_Ge_3brf6d`g5~ zDv^6{v?|6F6EBR)Utl7lh*;t@VKrHDicKj+o!tA8K*SOI`7eLL9%7$QVkV9mVD>GC e@u#|AH~aw`Ci-F}_rJaX0000H z{~+3=?2E+$ppxjJ?1}Ik^KGX5w|NpS_2poUu z|NoMk|Nq-AdH9T=0g^e}VUWXL0$MlWx#Bc zW|I>wvKB?U_<9KCNLrbXg$Wj8_?WT&p8rL!4oL=j;K#Y=@%_%~DgbIPsC^M+G)$<> zrY|Pxbv~6^HDYGg*=@5br*qB_G&5`V`R4xwtuuV2o4x|ftalbPer^?v5P{UPtX<=O zaOX`B^`Cx&HTxj~E(@BZ)s7kzFte`pt>Mg^=c$$N%_Ei|q3ku$r7wTU(hB%}Td&}n_oqeK(306tEFUs>FhmgV93j)QapZecJNZS5uV?vwudFKMV(SI)NxOPIPy4vNWmc-_5=_i zL=ObOdD!_5V@H9+QCpVNZOd!X|0K)VBfIIsNx{Bda7b_nF_i5>?8a{RzWj~raNjO) Tat|^i00000NkvXXu0mjfF+=ye diff --git a/interface/web/themes/default-304/icons/x16/arrow_225_small.png b/interface/web/themes/default-304/icons/x16/arrow_225_small.png deleted file mode 100644 index f082991f028b0040350f0ad98915892a76af9b1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmV+r0q_2aP)d-DIkdF#n%4s-6^Y`g#ezx&*~H-X|yh%!LA^6;6k z^Z)pFzeTF}9$&BPJ!%-2ebG WIoKe;F4UI*0000mjJqG8Lw_i=r}EAbWhD(c<@~o%+G&_wsz7hmQat{)g=E!q_hZwd2X4 zLh1;bHwJ-kblr>`S_K}*GkCHBFq=09LDle@89DHMAA!X*_%fR}2Em#BB~dvT*CQV- zrE%}|E*^eKgIV8mZxEd7{2Q@B05h2B^S%(;#`?k$4TT~Sfm`#Eb@ z$gYJQw1if0XD$I|-q~}PS3ul73!4y+Pn?pVu6BU&;2^4ld1XqH%fyzR5LsMt`6>w2Jyj0(DafG`~!OJMIkv zbri>M&1lEkrsdU7dvJx47B0?jgFScLTLh{UCD+4RaqBZ#^YJ%|BdNbsyh($1_S{(n zN6udpgsko>_H9qJ&g} z`EyH&+vjTyjlW;Go~|IJ<~D`V&Gx#a&T?CphsMV9|NZA*NAoXQYj$n1aR zlEk|cs_7+sOnVuYfGoer#$al=f$dCR;>Y==Y%a||T%-+{J~J`6xSVLJd6jtt=raaS LS3j3^P6EyNS+JE;^M{vC9yf> zO?eliOq#M_qS5F3E@s?DQk?qr-S7WD=eN5I0N7t({~|DSow3xO3zjixW!WQl91%2W zr#z+Om?gLFDwB4C-gpWIZs?Kdxdfm|`|kza=X6<^PhX*7!vUQqPN1D~m4NPbpAV=6 zR3M`5@CB;n2N$h-&p^4p{fLu*ChZ@%1ym-t?C_-KZPC2*3>A_cjFvkn8oz?NH5*Wl zm}yon-hA$A0R;(7TRgsTQ`D~8A+zrQ(tGz6jItFdFO{w#Z|p?*Mmz-+#?-I!Xw!<| z%Qnytp1LTIZk3reaRt;PZb4{H6^kt&QUp|l*T_7qdQs%c_YgmNtwKM23)CTQ!RPUf z*0bR9ITloAVL`@OGa?KN4-h_e?;>u-4wNIF0y;j0Bh0UOf@@1AMWXD0fSE@Xy16Hy z4*6c-T`+@=%nFj!50#9%SyK5+&B6`q;-^#A|Bl`n1r z*-L;1*nz~%C*PY%lmU9}mzH?UyL+?a{{R0DbMDdK=Cs~8KBv4np?T@ z@Dii`i#Nm0|Nn2-cj7;Y28t19fK0(|28pb#c3P!7o>}#t_-}aV|9{Oj?>+;?h%t<=-`E^;#pdg#J$?svZPo$oS&h{XRO|AbwgEN7&@ z0DmLn!KgzkChS8lkBZ>3A+go6v@!16tfcWDuoqe;P~gPVRU2)yuC6I{~Y zQP?|A*^j=`#r{Qt4%GKaOh9DiaMqEw&xV|?Z+e6EhkjStKo;MuQ3|%6?M+Q=8Xq~< z{)tXMpCO**zk|2`xz}P_;Y)wkXAayRH)XYdypzy4X5?9`6!_$sjTs$N)9Eb}6jjk@ z<++5Bmca*vZ~n8WPjbhYYgNN`X4% zt}&)&Xgc!7Fm1{2wyF=c#5pH73g`Vz!YS#NfQE-1GRWdaDd0eAK#_T5XY~X{*Nx5c zEUnWu#Nik~!@~|4WO1VuI3?C-)+X0mf|_l#x$XaX8sC z;&^Rx+QGCyK-TPGhYYfKRuRqCXsECAwQkt0W;VEzxRee#B{pX@}a>YP!o(V~v_0Wy6|k{TPNylcFn5 zKU7B|#J+V~3&Rz5UDrkBYUh-AJkK}$Vf|tA*xXP?rJRiETXUm|7%2G1eAvwBl38^h3*@+E9>Mh0kM&InW%?OWLcTh8AO=}qe^uXGJZY}OegaDs2orG9k zVc42-e;^_5mN5tG(<{!t2%~TUwH$lAqS|Cd4@BNJ>akV|0bVED2zO<@X~%w5k0LOu zGi6D7`%3SOcDDEgF9gs{uqO}6d!V@Q{PZr!M6#_g`pE8f5Ph1W^_!Ja*?Om|@ zk;hWkl!wgaP!n5_e4oubs9|0hv?#5W;f#;1)B}2fv=Bgs`APRKpqc+0>eJjgv4PD? zY@|Rw3Ii1NCLk>Yh!wR2A6eTEJFAQWv6=y(oQ)_}4;kY={&v7UH| zwtLG6er@$IY-|_-x3WPXy)?Z=M}30y26eyHyW%tW-!X%Ij7n=4Sw8U@r|-H-@L`We zfv!GvR&cvx1&^Aq;HMcCAnjE71s1BUU>B|G5Ji;8X6`PX_>nkAPd07aCH@x~HW4LF z%QBzom#aQnoa)9wq#lPEMJ9{rSgRgq+NptuW!xN3Mn?$1bM8$}cD_x3H1%+X9xucZnescp7I8r4B9ecAmPH6h0Y3qZV-EzN%c{%(0000< KMNUMnLSTY3R%$Z< diff --git a/interface/web/themes/default-304/icons/x16/arrow_circle_225.png b/interface/web/themes/default-304/icons/x16/arrow_circle_225.png deleted file mode 100644 index 3bec0d1063ffd36892a3de637d4a95a1ddaf0688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 758 zcmVg~N+RIkOD%56gf$y=$Ju z8+!g;aBo}^rO*w_84DC?7omXuwhG*pj#(h8Qa6m=RRw{!-wF4ZjcISbS%k}dUm&|< z)_lB@Wdcjy(+FzZ;Z4qbhY;e$jQG}DYr*d8ucdKn9h=)Z17}+eW-`+OH%8*nfS|@* z#uI}%uX_fPTJ$Vt2-X5o!JtywZZKvv=^*^h2(zzOuUhF~r5x%85jw&@{7H36u1Tp6H5BFAjNnqnXhd*)3nDi zMU6K)vHLUNH@amSf>j0(7Z0*zmf}yig3U>Fe8<$rJiq$clI?Y~CH_@9xod7u-ljyA zm_UcL&BGDRSMXMS0@VD}#vYOp@{{YW1smg)l*8%jZ5vV=l3f~2SeXrv zUmsgV?|QZXPHGc`b}azTgdzfE>msri;KSSMOWB6z2<&33BJD5sov<%wW7a-i3R`pX zAsyIj0iTW~j)VOcz#Soh3;rx1j|0KWW}Tzh#v|x}jp$S)&--u$FIcAJNy_Oz2$oe7 ozvr(7b_6~_KoI@|^f;sc2ZU}6P(tl9y#N3J07*qoM6N<$f>zRIApigX diff --git a/interface/web/themes/default-304/icons/x16/arrow_circle_315.png b/interface/web/themes/default-304/icons/x16/arrow_circle_315.png deleted file mode 100644 index 7a4f23eaf5648fa632f1644b2f148fe2c4f19253..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmV_iMm0ViKY%oQ^79c5Rop-{>VVglv0v(Mresx<~3VVwq;2ciFvm% z!&!-lx70K{x|rI{qa|~?g+WSd>8!W+6FFD}{m}=%bDr;cpZ7V3008+PRv$qMj_fX* zCLwqAB=o*PD6TL{k$Qw(gK8nVfD=y z1m1Wr+*dZGQE(Q>?)wVoIv31`YxP{9e1fGMRnBt7V@r_rY!MXP3Q$dbzQFJ5m^7|= zPM6vF8IsioGu~PM;_;Y(l6PdMY?RJ#QBOW$fwb07P&8r!dglv#@`vlvyXH-&RWl$~ zjB}!bkr)gRuiTf!JCBXU`RZ@y4=t`z@^%TR#}{~H^|Kk>^AK120jS=QJxIJRy&#?! z2Z-l|=jGJ<6YBE?uIZg@N}CamR80caTh6uxd6e!`XG9;@OqsBGpT;Ep-8+7_yYU5MxjHZN)z0& z03ziV5H}gk-g$kT-SGw%>G96%Z5OKyYMjY2lj@M53d0?1zF_0AI${%DEwN8fY2DOj zaB2Dm?k(TJzio-KfciChk8viqJE4rntbp$D1@tgZUc@RSLt-6Wt+B}&)Y(=VO*ZNk zKo(GIY_bRHtfQ+kF|(a!=~-W3g*YQ3#>pp~2|km{94b{Zk~_ml4|70%lL<;XxnYyr uUd;F+E_7#o0fX2gPKfXyIIm?Hy88=OiYH*y4on&V0000q=t%QFmh*yBL3nLg;QgEh#qE zbwr{gE<%fCJ!pk-u{7t`R&oiaj!&QGd)jK+`lDxieV@;d*Yo}|0KohY>?gErwge%6 zfzJ7eFTxACH{%d|XOa=$`p5*TM_Jf_;L<4>E{J9vpm1c3MLh;UXGO-fko4D<=yOl! zrN_#rB{<`42%rNb2O&kntB^%jAb-#bw9gx`hF*K~L!RCLT~Rb_RY=NAvEt%!?>_=W zH;t}h%~*SO-!i1V_zL+0D?n?J>ODb(()%XmmF@*~M%Oo0-dl?*sCZ0?Z@9vu5nI54 zyaD;CYSTn&>u1R9HUst~|J^cs2NVu72lEF5u+B~Cm}@{sA5&%0Vjqdv0t8vTT6xpV zVp8J_gqIpevDYAE9cF)aAG7ajU&QfJqXC^Ebo+5$KzD3_Z(0{gY@P+VehO&qm)XPY zP4AW=C0?nWjA!z5#xLU)^*Yfpqid!$Vhcc_^MZcb9QSzAOl$X~XN*@$2g64^F1M8+ zGPgtn^$0qEF3_3=vjMzIO$AX8KJ-g<6GNiwJqF&z#t4^$Iy$G2bu_peMF*mE7EThIZ}9oXbcATx^ zIw#aBCCv*e!NV`AL%L}-KdoK4{fthC5b+Z;NLm)aM>hww=AN%@$2YFr*lJtAw$ob1 zF{aX+8($MEGFTLDbxR7*`enIaqa}3f$qFK9vVcp?5(FA7Kzk$yVeEGcYytFecKI{* z!Ku8>F%^iRu*B$D$p4sV;}wsz~hMU?Y1}x?L5Rs z>;xwy9G|eGoSg=TcPkLkxl8%1^aR2}S07*qo IM6N<$f(x2vCIA2c diff --git a/interface/web/themes/default-304/icons/x16/arrow_circle_double_135.png b/interface/web/themes/default-304/icons/x16/arrow_circle_double_135.png deleted file mode 100644 index 289419c8310cdffc598a644ef93e8aec2ea20dc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 802 zcmV+-1Ks?IP)h!FbzNrKuoATq8e!8kw2Og) z&dj{zQd3(~)~Jpy(!^{+rEXqoH7|L^x92_8holcd2Y#IA{XggY&!>Yh#^`?_?|ePO z=jKP`e`^E<+#R(MmX3vhYd{TXPzjP@$M(N%KrlyvlD`%3g65T`~g2}(5>CofdL@!`Q=cJc zX(!@H+7V=en7R>RLZdMNc3h@_mGqdPW11&$M4ge5s4`)av6Gvkwj?UirubUKN>qBf z%e2x^#Zc0rGJQDgU6=y01oZy83G7vFz+p`$OwORtHns*?N8d+waSwyxoFl3n&i7M{ zial~(hQgV}6j&Wo5VX%DGZr;Z;q3|&CbM%!r=H|M&CBR$-CJdB;8%Z@2Q^QLZR2VJ zt&dk(Fa_%)$_QGhn#bhMSI%O`+V7ZCKZ|!L=Lj>*eULSJJ(-i+#65_%j4WquI9l=Z zU!d&W(AvXy=wDx73?8OkLa(sr{vV?(|Q!%b%Wos+e9VwTt@lWGX4sM8COaWYu zly6EIC5V^6ETA0tB5L2MOzPl`YAU3-3#h3B@&d~HWbCSqPJZwVAJ~J{zYDB@9oP)m g|A4$~2`EzV14vO0ECB7!>;M1&07*qoM6N<$f_vC|rvLx| diff --git a/interface/web/themes/default-304/icons/x16/arrow_skip.png b/interface/web/themes/default-304/icons/x16/arrow_skip.png deleted file mode 100644 index 860332d754ed5a288875c5ad98ea4df8f2d87ff6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmV+^0@nSBP)G#61((G{`+yVzxuMHA`9!9_z; zsSuMQ5?wHk;Us3ROe!-8qHq|q=P{GAFRCuZ1 zXntLv<2N;qIc#qF5@6JZJD;fd=6mvAA2PYz+E=p|_^-Vq8L()Jnsb5RyE0rxjhlSVnI1(ek3ZEC7G;c= zfr{`rb_YkW^X?F~-|ENKhNwaIa<;$YtC^wY2O|3X>q&?*##eQJN9n^cl!QNH+x<~& z35}vC_yKuMBZktpag$$h@QI@AeXW74>PK2MyQa>Ga3IvJOD@iz-4&a;CuTFQ+tL8Ko@ACt0H66S&Ko1)UiIL_Os} z<=Ii|Q^|1YlfM_OFI%A>qrYcpOuBeRsm rq%s~R!@gWP3tpR9U}utOzQ6NdX{5sXx%S!B00000NkvXXu0mjfc*h0z diff --git a/interface/web/themes/default-304/icons/x16/arrow_skip_090.png b/interface/web/themes/default-304/icons/x16/arrow_skip_090.png deleted file mode 100644 index 2138dfd5330816811febf698305a70ef93f47b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmV+e0{s1nP)OIR)BiZx#PbO-z(-;`1$a~c&j8CZbON+*-@y74pr-%tfxho7$)M{V zmSwk>0p~sFGY>xS@f$-KaNeO|{;wZBN4H?kp5H*$hdr9o=eR}N<~3S3uF?GE3U#x8 z(DeBd@7COSyXr>w!424B-)A7RQ*0UUcf?G~$^|MvIZ;1%g2x&AJ_FiRX&u`hQrovw za_hR(+8rqD71T@~gPOk4VL#wNO527?db3QVYRZ9v{#{f~9D|xZ^PmIzFDkKd(LhS4 zUC13eM9Jh2P#YP0egjFCuPVN7#*7rt|3<$37m8-jL2b_2_ZfJS^U6cqYrBChwsu+! zsEy3%`V5#)R8fbDt{U@$zWD?l2+b^0k>w+{$cj<%qBVW<2{aI@d8$badpRueOF+y5 z5Vr_W)7KegMZ$ZKJA;m`D`vTPV#ZW&KhxlYTXGwvm<7xBN ze#IradHgp{_53hgc=Z!k`eV5K_Ai&-#Bgn37Lt<>ipq0Q%DdR7Z;#HQrh8@qm7%XV z^6)cCAB=7rjD`nhiS7)Nz@2FE(T<50&plypwvKq!iR z&nB@qIEj+*G$hB6XmK!Vyco)^39GE?E`4?&j?AaOP|!0A@yT$`%0AgGdCT#pfDNs! z45~F1PxP+W!1|Yf>={)dT6dx&f#jq>)bVE0a`MS@u#PDxnN3Wg%U^Zgwe#E~-UCT&vol`%Ms6vE sNoPDvhW#>k5xjP0wSAL9EB&4S0J+G<6|DBY#{d8T07*qoM6N<$f;1oqrT_o{ diff --git a/interface/web/themes/default-304/icons/x16/arrow_skip_270.png b/interface/web/themes/default-304/icons/x16/arrow_skip_270.png deleted file mode 100644 index 3c37e6e8b8aacd1dc6de3b257003d24cbf8c3779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmV+n0`vWeP)5Ux>?wLRv8F z9lj$6pR0Yp?8xp2@G1=OrnYyqfx_N3J4Qjzsx+atceH^^ub2NDZQw%3f`+H_hv9j- zC=XHE-q8l~p3Vt(`@9wT;#(ALb9;FHH418L&b~H~Q9mxSpG=DUXJ1TY>&z}{NB^K@ zdKc7Y#vc2Qfpd>1L{?KssLXDHGXamNkBD>4-x#YLB=rrC9;NAjlrM~))VI^k7{*VF%F;@yyhMwr4=u2kTOUNb5kw&Lr6QCLC|F7m8ePn;Bf8i{?u%7X1 z*3^8Cu=dullaMQKeiWJ421HiX;8;y@H3Zl%_6a@^Mum|aV88UnpjGw*Tnzz??Lx1< zkx z+ew0o#nFxt>}vMoeD81YOkSCOvXd`W^1ieip=`r$HQi5=43X z5A1IBqqxzhInntO>|K1ULvr2o=)0c9!UJuJ4;8t61`6uGV2f)IIn{kwU**NRD_z*( z83Oy6{Dx1u7xPM5l;hh zt4Jw!JClp*>VlU=hiaH+zN0_$aBer4Gs~vd}~A#?*E#I^_k{a z#N*p?ikX-ho=&8QNHp1&i?=sP4O1t3A_IQ0000Yd_B=E^~ zF3GcbpwSaf!>o~~a{&8>f%7kXj-1v7*)QxH2DGWpJ)aMf-RxD_O&*)R<=<_{**6_X zubonT@2lm)E3?$qi za>SPpN+?BLUR-Dy!}ZQt?9SLX3}{oGD02lkUOJ$TmGnx%+eM_cd2q4I2Wt8|9rjHJ z;_mjVm|NXMvfll`$&O{D^{j%LK6BH7=(9FuO-NOT@~c!-@f#wi-ftkf`xg@XHb70E zIS>1WfzV^kt5lIiujJ?lKP1(^*W^7VcaRsaA107*qoM6N<$f|=V3ApigX diff --git a/interface/web/themes/default-304/icons/x16/arrow_stop_180.png b/interface/web/themes/default-304/icons/x16/arrow_stop_180.png deleted file mode 100644 index 573ff4889bd49f1a63d35d9c4e7e1b440c43629e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 615 zcmV-t0+{`YP)6oofaR^$+cIsQ;DLZxBpj6Q@#iD5oe5Iu;&fuf1Rmn2M!3MC2?s|l*HrnDDp zEQQK`pdTt6qD)R$TA4#X&RA3g5spq$j;pipTyNf(H!pm5owL_k`#xO)K$C&;FMRVT zBLqKse}gsia2GA9c`5jO@X~45`A1Q9e^8^+ zH-rNnVU7Jy!`SzP8Aes-FRepqdwh~jR;KRFAC%ty3Fr0iDE0=iwxJJ&^*ty!^+JQs zJlop#MeESKopH(eAwOM3{zo9QSq5toul zG;L#}%upd#OJX{WKT~WO6t}Wc@ce(z^jPxBy_WT7rP534xE*u#0^nZ*qjynbpew_2Z&+mQ4E+z-szeyqoz27|= zWx-mNIex;iM?O+%7>vF&T-3zFAIg2x$(>3UnyjFLWD@^L}+U_zT(hr{k0bet>)C^i~w49dpaJ z>eu3^=@KpR-AJo?rAqpKBf~e3qPJ0S=AJn{`n+2%NX|Mc>yJN>4JRJTCgX{0t$ZP= z6&=Qw^5?3cCk8$_bI+U}ecss$Oj1tyWMkPQL!D2EjaxE0000}M{P)MA*DpT-FYJv z1bMBOf?k}<@TU9y1MgK=$LIU{u5HY~4t#ic$DR-0=Q#(E(-H_{;2i$)_yRCf4=grA zEnk6tbrqI?*B!u{>$&7KW(%h4q2|KSdn<9{O4Nx3LuF9Oi_p6-V`d}KX1d3?uA^8Z6~I(TL|*9ihY_0+ zCgC{TNjk}kwqpdJyMg%#uo{K6`KTd9i8IcFkjzV=^A$?sOL zCo>Kg%iEc0fMQRcVC^=PNc0C4Ne!Nd#UvDDFLt;bijOQ$@b(6jNc7IaU7Pi(>_Fzk zpg*%%UUB-B4h4Z*6|UgfWhau}Uy1)=U21inFcR{|pbsc51UfxOf}XQLpahvS5r7hj zK3E$ytdl_~+Sz!bGvJ5*{bk&+-Z=wReG30~!X6}fRS^%y<+ELA6`F)bp-u=0oVHYu z0U(3GD-;O@bkw+13spj;P%e}Sez(czHZq^A6S5H$Qg8?~P0(AB3yRbL0000)|es30~nr4poBVo-@?65=C?n=KMb zNDyifEpihDwfNNN1ts=^rbWwHwK|=18y!W1F8uhokMq0#bG~~KX8}s1fXekDYBm9_ z=|D#gR98Oq)4+cacNfyANu$3q)43YF7P74fH zq>?0gH&9DU+mV?Fs|tb=C6Wp6PI}n9*OW+-CGD7lMblQ`d=AiC1Pt&08>=o3Xij61 z6?*unEg%v}BJIdb7Lr`FuOb*J1=?&tzXQhji44C;%yy2X1!N|YM0SU3RA=r#1ZOf~ z+;(sC^L4{%3AH1GmECF0fRdUOf}s*9mgpPG=C9fSLy|bkeJHaPnS*tD2Y;20e3~n{ z^V75E<`>wny$K1f?uKHCo@y@($aTnevRTl`H9MF*W;>I~q%uhie;L>qU2}gn?-^0FXM8%+ z*;U8a*2s$zgCsEV%ob)d6U)Rf>lpsw5n*+Yj)u8Lr>!nSir0$Z56jChNJa!1OaK4? M07*qoM6N<$f-V0r$^ZZW diff --git a/interface/web/themes/default-304/icons/x16/auction_hammer__exclamation.png b/interface/web/themes/default-304/icons/x16/auction_hammer__exclamation.png deleted file mode 100644 index 0f44985dbd69cd48d2dafa1a832da55a05d6c678..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcmV;-0yF)IP)3`8%_x)#FQpmgCD+WX)B+943+D7=(SB@Xu?1n4q#=}9Vq{tAR#<74Cvq*Z zi+M?*6iO;dJPM~DVy>A85~c_m%Hoe8nC4qoQ#9zn!^eDc<~i@o9C+w}XlKB<@-K(o zfYW|Jb})GE7HF5ZLy_Q07;r6OKJymN6=e8q zit1xwHitx$i}*Z&VZ}m{oS`*lM2Q=Fy~Mlhcu|)YB`8TtR-BC_lw<}ZEL{k9fr z!~;n8l_Do-C5d_)Nhk?zht6as$;Hq`1f|iySv^n`1?AZx|6!6)lB!I%sixb@Md$r+ zLAN8<@SM&65M%~GdANV$uX_6+=e@Gkk82`|*3KMp#>8tTd)RF)O&f16)e9maJGC)l>2e>dg#oHB8rD zx1@Y>#5`d%8pXs=-UN-QFPRpc+XOBpT1S4;FRD2q_Fotuo-=%W!Q#5!Z&N3Sa)k^m zM!udDTC=}OeVWJdb>LE>S&NSfs%bvp$v!}?iQ#P}V=YyzY|v^N>+MbuZ(e7K?yhLj z)wyeo`ZN#YDro%=QUui)7jVyIn0=ZoEb>#myE@nxD+YSP?Fpz3^hAi(S{Ie(5vW5d zU6o#k6#2qdNr)s!5@0d2>R#1IqP)6Qp&=mrD4(@QL92lzy zCR?DMoP?e^4U6DeJ1~DXmz+YsV6-0UVKelP*`)C#>c0iOWl-rl=UxC zJ&9(K$`K^?6_N}=e;tjRmse`cx5;kvc{pw)$@=(ZTO^WX3tZh>hzi0I$-=d${W=jb zlH}K7pYgXNGZA(bcoHR&we%VDW#qggktDu$oWbJWQQ&b4@Zub>bis|4ssu)&6a}G| zZp3VnND^sBX0ny!Y1=M>R4jYz5G+X|0{>v|R`BJj2Hx?uKEfw>-T_64 zULU_?%X*(PV4wH^_h6=o|0!Cga1Acof{Ei!B>i(X`B&DdR_7JQ;t^M{3Rpa>^O1cF z)k0CCe`orQtixfb-Y^j6_rVVE#zk+WQYIhSM^7pApOrx)>&5+0)g{RJ@teW`pES+G z`OHaz<^a-iRj~jDdG-`(CC5l3iI7^tHv@;s0mAViNQ%iGc}R^1XNxMr&QU?iNU2v8 j@(Lv%M+uG+MIzV)ekt`bSO@&A00000NkvXXu0mjfu&5NQ diff --git a/interface/web/themes/default-304/icons/x16/auction_hammer__pencil.png b/interface/web/themes/default-304/icons/x16/auction_hammer__pencil.png deleted file mode 100644 index ac7a9c9fa0da59cd8b9c5c840fbc554f5325bc6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmV;A0&x9_P)GK&*#(OCsrg|A7sbo^Iz%qwcakbm7BgE}ReFbM75vYJfi#sBg{{MsK>wnYB7pdkY?lmm0NS68nZOVvbE zS=5%8R3sAw`nqI-sW7M7ed=MrrKY=T)Q47|;v_SjN24s^B#YqK>SUw?21^Ex=S83D zxr&p_4>qd!c6cVtiUM0AS@J$qt|r3=EeR)yYsVTaTDAe#i-G(5f#HgOvCd`!;XD#K zU=E-3Mp?p1xE-F!Vv_MJkt`VT16RGkfDgvo)7v8~vD!J27v-67l1I5IKfgP~+?){p z6$O{`VT{!lMCjb8(U#lc!CojxoA20NG_HDk)szrl5(Gm>AW33AmflGHMi`ug1&f0X zmx~4c@PTKsSWE?6u7Q_8U`cRqA0$c4na-*x?`<>#>J!s%gvF=VqGEDXe2hhID38Z; zD?L5E^f~MyUMqqmiTSNR_=orI66*=$MH`ZeM|#9(y=rZx)9HjIxVROPB<7EybBgy? zH)MkwaMS-WaT`g+4?0jS4{6Xe4c4mL0Q1*qv*NvSJ!JM8EUkAvD2y*|sYkUZ2Z^gt zLx``+tD%`bcM&DT4kEv=Njy=%7t~<4m^~FhEuEzi^w{AbQV78gmrXX2MQkB96B&dG p>0!kgSKe(FFBrIHI!>@!x`84@7(`)W`c_J>A!; z=PtIHS&5=eqCgNXEhgfGnooxGljC0fVW3OD>kny8vXDMzvV@b^pu40PVL-BE^n~Ah z9RGrYfw3?mI4Erc%Xzr8SS3_T&V&c3F|s=i$h29tVTg z6-Ik(!;0XgThe01M3>{*ezxW>)k2U&eH*)=dF=N=^!flF{Xft|`6tR5)%mkW{|(P0 zS`M}JBBpulEQ6?7kHTLgNv>{`7;z~k_~Wp)pYhZs`6F>Ys(=GATE2$}5<7V-QAgAg zbTi<_kn@Z8dyA%Vk>1x4Yxo=9EH%UyVlz=iP?tdYLEQrvREmT#g)1eCNE(y$zLo`l Y0Eejsn%8W=ssI2007*qoM6N<$g0#yZhyVZp diff --git a/interface/web/themes/default-304/icons/x16/auction_hammer_gavel.png b/interface/web/themes/default-304/icons/x16/auction_hammer_gavel.png deleted file mode 100644 index ee46a7e905379263ed3b08137c3ad815296424b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmV-O0=NB%P)yA2Zuh)5lQWD1(cVkEv1V(vj*s` z1p2EXsa;UFYGE7Ub{%kcPrmXRa{)b-kgFl6&%<$@fyh4t+Ezmn8=*c8#q_iG8vU}f z&dETOX_7oZY*@X`{ifT}bTZR-#36)Evcl12g_083gp3^vI^(el zO(#Ddwd>q*mZL;2l&`HiXZm_tp2^gpb9_#}q4|=xFl>y110hK^a z9uGT&&p317$b$l#75fGb;JKRvN6 zZT9UZ-{Lq7mao%W1z}GCVB!G8K-8#&)2CL!rV|2kgFU+z!cSHJxVIN#AZn)Xu)})E zWbkmm=ZLxRbMc8UZua&^>pi)E>)TyR>dSEaH|yX|$eoDSTugrfT^k?_kE;w{@eYN z3m;iam(BeW<4nt74eJ62Y>H zMo{D)biEWFWOLCC)WFZ3b$1*YH)CemUDK!Mk?~cR?2-dN=H;FL|9=|^5vBhj9mv2Z z2S}gmKpLonJpUuGk^96+>P=4b&c+$eawmJ>e4wGYerD*IKe;j{Z>Az?%)}5gOSqX@ zOefW#JTvI>bB42f20l9AWZ>z!W?dPLU}_#w|3Rj+&|PvC_2}0~z;(8nJ7VBN4cu13 zz7QG|`t|+a^eI$Ao)CA$K>tHZ9HTwC&>y4XtL7k{P9wi?_K1KtNvC6B%dXS4wRjCSIx?A})*+J@7^ z)nV?4fp_=d%=;&&I+iE9;)dcyJ?7b0Y`i7j_qd>gJ7VDNU64F?;G(xS-yQ6+kE~3+ zQj_uCOj_;7wAv>GeK$wEj-zhQaz_kYyI_%=mqB`MhhtrKxK5f#C+Xg{q4|;DoZ)O~ zk!5FK_fuJ6+2cw%K#k3M>E#WpkChZ!M0WQ8-{z29l1B>3X;MPUNQJEwZZ%!C4)EFh zmYY3bHAfDS!{i9bCk3R46q6I=xcM#TK>o%*u+3UHL_$so00000NkvXXu0mjfb!iOf diff --git a/interface/web/themes/default-304/icons/x16/balloon__arrow.png b/interface/web/themes/default-304/icons/x16/balloon__arrow.png deleted file mode 100644 index a3e2a7febc8404b0657f6fc82739113d60182d7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 669 zcmV;O0%HA%P)4jZLP#1$D2&9ZYFtx;$)l4s1UP!gnDFt0<64_gg z7_4P#!NhG+D=3MuZLjMM%E*=bbS~yHwy}@$={av|AyyY2_;C)0=l{QX7yw`vf?04u zZ#5D0)ey#5Lo!XZM26(34%JVqoBos089GZda|7lFUe7@khrYf2x5#@4a2k$ggo5rVZtT^Cw&?Sx>|6!XizPNn zT+!($edvTXH^BDB{^04_@@E}ogr$CjOhE6OWn@L&Zo=e9(tZ`}(7F6qMgb~uLx+Zb zJBJ(HSU+IflSha`CfauOph!<`TA9Yo9HBsZ#>`3-Mw>*@XU{nLfGgBGp%^!rebT^Z z?o=vqE*Is?a>$X3MIs}8qqS(UP=H}3V`~Ym6^Tpr_ASo=#HII!#0NU$__rKoAqkSA zRVW)RMd^PQFrwVO%%b8uZ2G?2HoVK0?7zYM@6dvuyi-(SLP=X!00000NkvXXu0mjf DD$p|{ diff --git a/interface/web/themes/default-304/icons/x16/balloon__exclamation.png b/interface/web/themes/default-304/icons/x16/balloon__exclamation.png deleted file mode 100644 index 102e2cc1ce67533a821798646250715f80ae2cd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmV;b0#*HqP)O0Ni?T z>kfEbLYTHv!dXhmHftG?Qx_;TRi30y*5ufOy*RTnAk%g=t$gH7rFHh#S0NGe#bIs| zU~U2uvGMrqRIf17uCZbd_AUp!q6cb^?fQZ0Xt2izv7Z3ZAhJK`H0jki z!vb212~q|7jSi4#({I=RMcoi|=p8u20?b7OY364JC5Sj+$wK%OM1#!`7Vd#KRs(_2 z3I@+%pH9LV7GNqQsA@jqltP|L@Y>}d^cTR?xRy5GSX0oem2idy7%mcY$=ChBHTvZY zNYf24WIsV~sfB5wZk34tE_mJ+_Tvl-czT|o{gzu>UXJ&v;tP@){NM8-FjxlBN&PC5 zeKmoWD=GJJh6Q{!^Jv3I19=e@lt*;vPuL2$*XNNP>TJSgr1Faa z?M*yyGw}6egQ}3*l?|3QHMpFoz}a&$g!QV+L{==9Wz{NWMs#Q=&n+z$U~S;DI$Be@ z#)cH&9XQ6`0C(@eacDPg{+6TQb7}3cJcHz3%aK{|OzopKE&ho*{_$|nK~emX3F2@D zNa1p}Be#8TsPPVOqRpvP8nv6+MQx=vvVf*q?%|W$oc&+$`Ppo4&4mGf0f&!g2}B=K Q&j0`b07*qoM6N<$g1rhxWdHyG diff --git a/interface/web/themes/default-304/icons/x16/balloon__minus.png b/interface/web/themes/default-304/icons/x16/balloon__minus.png deleted file mode 100644 index 2aa4cd9dcc0457fef169e91c5cfbc79f31ff3149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 605 zcmV-j0;2tiP)xh&GhovN zFWZFls$IZXyV&8mE==SSv5<}eOJUE%Gd#n$6akZ?am9L@o{tEGb#WMDw&i7OelShPTH5rfIJ!4c@U6lcf zhb*ws6ZFtmT>czRP)5bAgll^3yETAwP1K?UCDI;4+ rIoVDsNF}KzHDnLjUAR{EU;f75@rPIj4VIXl00000NkvXXu0mjf;p~vpom?VkU>{GAz|;%2Bh%6#V|du^6^TAnF2$PQhY$ zG7_8_bd2_@O}K-*iGpr^;5J!mx7YbS19k{c0QkRhBTMkR;28Lw@9Y-!wmQs+g2&|y z9rp~kTOq)get!Np{}=FB^;XP?f`_LWQqRxX0^qYk+%NB2@OwJI>u7}OZ}s3FR|$Cb z+FJvd5d{xQ7&<@i`xJoL_aZnqr3ZI+8BAtpz@(vwhc5iZGj=h68Bx%7ilJi1z|G;P z*8)GB%`oz@0bX1_0ie;q>pfDKb!ZcO&Z{ueS2BzlQE;b-p{?~sGvrB84T)w_*V$xWCM1-A>Cpf6y%JJm^s=lV2X$fblU4aEyX{f!Wr zF(wSQAMJ0eSgXZd%!mR*Eg|N6l=R-E`=8vPW(;3f(g|%L>(b@3*0=?)3Gm&L&(gmU6dTmq$Fo2W92f*-b+U$?MRwJN&JZyNaNvaD*7fb zo83Yv?OgDaqo4mE3ABiCf1dbE#Y! ww~^Zro2?K9_$6hz)Ofal?yD{#|Mg(OZ``mh#(2HIzyJUM07*qoM6N<$g6irzC;$Ke diff --git a/interface/web/themes/default-304/icons/x16/balloon__plus.png b/interface/web/themes/default-304/icons/x16/balloon__plus.png deleted file mode 100644 index d171b9bd7097605197bc4e33ca11b875027d642b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 640 zcmV-`0)PF9P)_VzlegvhVeON9U zA=nayAjw_Sx-q;Ex0Ms7fy>-?8{0D8jct~vb6%%`WCT9&<9Rsm`TuWT1^{d|*s2Q# z>bc~NjS6D7_4LXbTs3A+AooQ%?b}6&GV7K*ZQNz@`o0eq6?wwD0(vS%NWc)Cn znn@?aqu!~v1`F-b?oz>Pe4wq?8zoI*Xv71lX#nvvnp_5FNjHeT4<4&wM-yeFf>(8% zoC-P34oKkAkMVyKCm`f7IVd9)^k3k_FgNQ;K->X~eny8t4D~|Pdmp}iZHC~NYZ7`# zJ;nrOq=J`PPHxS`#}W{;Nx@ma3BofixZLyHJHj%}-uGCLg3X+J@FI z6toG99n6)n#tru3=`z6Efzv#+38_#4Dnv!77;VXZ%lT7qIhQfrS|hudW0UU6HSB*5 a75oO>Xf-F@16+0h0000DcRQW2M36uXde<-e;gW+Iruh+xdn zD3V;D^G5MPR-+b~foAT^?KnFw<(#q2^6h=)csfdUV;}tZK0co35r`;uLj0G30SAcJ z4Il;^AkTjjY~(s|l180V|Fdz1v)tJ_a4c}AsBwDuzCX42PFhPxGMJ4aX6JD&J(o!( zg3|Pm%g-6kZW?&yfCGVhhg(&7B7*5zMD+`q+JgR4GpI(#A^}%PD|d{67xi#O4*No= zQE27kzp0;54tYY{F$VhUz_q$OsbMmN8-6OIsLIb!ksjj0w>FG_y}ORzN~A~Qjxo?% z3(c#^4;n7LT`w-rdoVHAPT`inl4sgA?id5!YN(MW9*46^0DnZga7l7+D;e#;sgc?+ zcZ`9j*Wl3e+Xp)rCcERB>_s)^*;ed*TfFbqzE18K15c_zc&@@J?~T3gV6S~V^Zg}e z68*Y9OvQcK#ZMiHpzqSS*RjXVS?(AE=gTd^Sqb8i9rC;F(DO@qgM6EGktTA1Gn_5k zZ}~H@agG#P#Dj}gAFH=nPoFsfaQ37{n3<1xz)JGT(WZ0O!HQD2Oz(1XoRpFhQmkik y$!-GX0U$YgpjcN#3P}OU(~CKJdDo_ao%juLY+5)~EVg|B0000$Y5C;xwYvF`udM-%?PxZn8y`MuizuOChP36jTaz_L`Pf_JyqKmPc1*8ew;x{z@9 z|3~Ml9)slZ8n7sd$z*+{{OsqKdY^uIzVPqY7YqM?dA{KP(+kZ{*Og1p2Fc?!U||vy z!`yf#vpI20l|VcRh^PK}v++NO28n~@2^s)Y%rGk!f~Q6^yG@Q_o(ICyqL~?H#4?j+ u08k@Ca{#k{qd)T|AZ7sJL7tQc!~g(Vo4di$Y5C;xwYvF`udM-%?PxZn8y`MuizuOChP36jTaz_L`Pf_JyqKmPc1*8ew;x{z@9 z|3~Ml9)slZ8n7sd$z*+{{OsqKdY^uMx#a)X7YqM?emeK>(+kZ{*Og1p2Fc?!U||vy z!`yf#vpI20Q~$i({2xRE@gyLw1c`&>@ft8AmYHE%G&95GDCT(}JT;oxZB{H30|)~R wVIXKgqdzkYZ)y%;_6HimK#~E&ATN-E0ez6W#O7@t6aWAK07*qoM6N<$f*~-VtN;K2 diff --git a/interface/web/themes/default-304/icons/x16/balloons.png b/interface/web/themes/default-304/icons/x16/balloons.png deleted file mode 100644 index 4508686488e37c7f0cc74b007469f685d7777810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmV-Q0=4~#P)@A|xFyEOY6Ve5Wi5jWA0jGJC^N&YCKXw> zhW%kN#FvDufl^p&=FBZ`w$!`j4Zi(;W8R&q5FYs4d(J)I`+4~O1OV~ODRb~S<>Kdu zWihdzIH|zrV!r1b|C@faACg&|(&|69a52C+Q}D1_s+=~)`X=zJ2Zr_riD)C@kxTgg zr3S;{bI=B^K#z4yaLyDwJ|KnHVd64IKj`}K1B?vR;YZ}c3=-emI_FG5ra1AGI&fFX z@?QUmuJM=$iNSi}MlR6?gxV^*I5%C8Zl3l>TdNCRcYAh+QzMU%jC+auNXG6#`*dA< z>)9D>aV)59u9St@DNJjA^7lt{Hrer4^CM7Sraw8mF><$Re&;Qlth-qucQx9j^|oCZ z<7~~pxV9rrEYzCQeA8YjNFZ_qvo(L`R1x02vdw6IYFh4nieN6yE7Qsf=F&XDc~MiU z2)NM}$HLlfuPyk$<_WQ3Ri5Bw3bt>~6UR%Wl^Sl~=J~B~o}1@;&Z)~3(6SKAukNul zGZkAbrF33NtRM=BrNknlfXFB25mFWK$F;6)miDddWjXCP5k8`Qv3HaUtF8f;; zwJ5;WmkWc&OE6@*40dxqIIIm5EXVSE!DBfkD(MVau8~fMW2gp(&3W*(FJ~U3Un(3d z$MVE25ygpA>5$NmVT38P8D&WoI^Vw?IqBorKxXC$O z2a`4xQU#ONO0a(_uzye8&Mu9kfym!em}7qGM-MdLm%uN(7IcM?jwhKReP!{! z&G%wxUU4*yQb?$a|-j!KS&FP z_SZ39=Hss^I2`77D+a~eZ<|O+Zs&Bt|C$fWe?M^70)WF@Xn|2YQ}8eI>9sE)s<;IX z<~NS7j4d&W>I`th41mMj=9~^OU%-r(OP6GGs+gv^<|7^%e_us4C-nfw+Gk1W0a%y% zj^hi$w=N*(4^SZ*E@I}{-OWB}YHN_J%CJVRZugTsFg~!vgi*jTGOK yEl4o30SQ9ZvO=F-DW$&Q#ce)2lVfpB+29}5BSUt@5f=LZ0000efLIh#$_mfLdqxoOUPI_J&Rmf#CN&T}|_{+#!B5CEXI1nhx00qou!t}DIQusLqu&e=C8gql}S0+I(&5_a^&9epd@z|aF&Lxc<=7+#(>wyIm z53JLZ|(qX4Lnr90dZ(tlL<` zuecWgAG@Pi^9J>GFphFJ*6nqmQw9$znwazQMg~#Xf^E%DWx+`ADOfZ=f$;Efm^Wt3 z_c!3OzB@TXuq^Tv@xm{5e0ISmkr&y2@`O5!K)5i#eaHJb(0Xf=0trb-kg^E5An zp{_G)22JcQjXDIxZ7HB0J`2MGr)Rqb%*#$b!>|Pxk1;4E1pAgo;$mu^t`z=l{N|l- zziCPv1e2pD*c;Gwa`Yth*89lY%b7s7fP5UnzWl44N=jrPCzR|D)E6>UT7{q0^7$}W zCj7x}OJ!GzR({aZT*B~N1v?3c(l2mYgZyy>nU4|zlCL2_X%_nMDjTVIIY?QSiw4Vc l(Llu`q^Qh8a{goV;y2UyU2tOj!mj`T002ovPDHLkV1gOHU;zLC diff --git a/interface/web/themes/default-304/icons/x16/balloons_minus.png b/interface/web/themes/default-304/icons/x16/balloons_minus.png deleted file mode 100644 index 2af8dd3ffb1ee9797ca26f4790808bae4b368167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmV-@0)qXCP)WFmueg zsfCu!VI_+(ylG%HPzrO+T)E}R*5=uA!PE1ecI+G{M1vnY?>W!==bZn`5RpB#fQr`w z^E!_}2{}McDe!d(e=g559?)?Z{<47HcYOZQf#+6lb}XF0+-JmzVZ>Yvv)|q%2D;99 z`Ex$U=cR!5L!eX|30(E#&yR@de#BIt0N8gs%+ zOvdUk5xs(62G8P1#D>DqH5B7r<9v?KO95>MfqBf6thuqbqBzouqeFK58og8?`KeLl zb9|o3B~mf$34K#zC6x8~PWGhZE=&&BkXvf8S`4>W^zb>N3Xqzo>toGTy6%u`Pb53~ z2r~%}abqUlgu?rq!YkLVfYUs?x}gFLB!3E1nxFXb4ukb3{3ZC%UsEbRKEF2VsGJ$R zX9WA*a@bvG0{wjxFit*&g65yy*eQvJn^n!%?*~Q!%&`@ibG>Hr6bhPuaJm?KUl^xt zzIB;~wJ^rqL<;zy=3AEj*{llqSM$Mr8?kMLA??<&LE03OH8FNa3gC@8&2y?l9%Ep- z<{d@)RK{q;scut<6tIKJII#uv)Nn0tp8qRcurJqi+JN=iXoJ#4`3>l&C5x`_)i!YD z8?@VKy@V_#2C{(6B|0*T%pkBy?jV12m36zeWAhp)qw95~n5-r%Nl`v_&Rfa3(Kx{ zKg+Q^3QMG7&=dMk?FA%v%zVYR>NddgYy+h}nz=@>cjenyjuKTMn5T11M-lgO*l@xT zSbPk;$4Geyy!!!oC+~RQ8kE+y!kyJ!M@h^Zj6=7u$^82F2^hL}8h(1sU}?zlcUQ<~ z?iXwyYElv1-8^#KB#%v>#@J-TI4OJ!Tg*SJ%NB6kJEF`hmCCr1#6&GrRY5n#gW+4) zVqRYs5AR;6qRe-flO}~iQOxr^q)DZ>^a!O11^;8-HCpz|REsD1`BIR{WLk+tB5y|M zkAr`ica3VGUoZ8s!}S&TRc11GL@XAgje^#E64O?=t9sa|vTio-9MSORme?iXuol18 zX;4Z=5{EdBLs{X1V+j~tPA6h&xRIG>Pe#jGV(6^FA47+&>~KmViXNJa{To_#j8wLD@zjkp=8!TxFK1C;0%$rSpT7c(#2;f%^_8 k;A~b%*+(_mKZ}T3nGcWT-q0c5`CyFx7u*4 zjfyN&(Tc?oZ+g>8PzrO+{MvMyZBBE+({o;%ZZ4<;Kh8Ov|M~O2zXON}FN#$t73W&2|@O>IT4`qQDG#qCO6ft@8>G+eqFSU&`6I~t*4k6ACAO;6Ynw*@B$s)?#d25YdZKChkUh=>BwJgraJ3YWhYEC-!4 zV^46}ViKi~GgwH$ENX;zdP^H>7$=M@&2pZ)O(+wQ6Hm$w=1)medOC0kvl zd}&*)ik08ZW!ZW)lN;0wIH6aFGT(YDQ^eh6i!i_EavXqd6=YnAg^ZGz`B#WCfB&2k zJ71|H%%|Rw3v`*I18Wk1K`~eGzvdGSilHOp#R%pk0ZfSt1^+UCxHTO&nAZE_bqRgh zqZ*`(f{0$B6AQS}I!#QeU{yK(WCiAP05~9)?m}&*Qle?|AlRxr$;X#C8aXL%pUTX82U3HaKpZUmUZ} zPg^QHcZwq_@eNP9vOvI!;eQC?9-NHSExzobi_g30(x{dG9JfvV4;1r;uNZpWd6h0r4hrkH`zArc#&H(P z8{0EMfdaBx5Z_lMtNV1%NGEPpQa?TpPPhdLJF{`@1^i8O1|*tQKp3Hdgx*3~{oJD# z>NS?r?@wCk51f}t*!c@~)Sb_pn^lk`h6Mq(LM)jO>nxBOS=%25Z_sxx9UU>02@9DssBrFOP_IzpMXKZ_>zn0Dp7zD{%$94KpcaF~Bz9UcCZaN6bC?KNX z*iOmsKd?0eF3$GXEckl$^u4=gg@ldMc2s6*NaOaQfG|Ox7!<2T1(iORc44Zgnubc) zI4!x-Zo_^qr9O=#M`Bh5#cE84Qm^*Rt0@eN5;l%0N9wFjAAOX2FSByqJF t+aU$N??HAW3M3kdLZrwRWYZrB`~m<$o2)@2I57YK002ovPDHLkV1jN#Kkfhk diff --git a/interface/web/themes/default-304/icons/x16/bandaid_arrow.png b/interface/web/themes/default-304/icons/x16/bandaid_arrow.png deleted file mode 100644 index 1fab58928156b669ef6728ec2b616fda9299a0e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 802 zcmV+-1Ks?IP)F;HIwU% zv$>mA(xQ^vb3wrp($w7AFoM)k>2&X-Ov}9R=e%?8`Tsco4-cVV=kzWHUH4>=#Fs&a zV2mmcU{p<16M|7KQC$e$QGXD}lbS&KaPr2dGpk4J#UM=(Mmizh2w>lQ!ZvG()yyw< ztLG=n(%K(ITBVa2J_>g*L8?HE)WrNBfb-L6+wA53N?7ht!AhqZez01YC{69u1>-2r zya~Xi>9|dQXOgggALKfJX2^!N{3H%S>ul3KP#v`{iW2Ku_9Lk?+#Oypn5SUY^9n%BKKm^^%T?I6#pmW3a=yKthySU>u8D`B-Y1tUV2uLOXXz!fSFG31GoIYX5S{$#;fwd4CM{$T(;a5ET z_2w8r+#tZQzCTJC25`L8$|CuG9N(1{J2+0vzacbEK?qNuac&ak4tsC=K3P<6vpxN&YcwA}gXTL>3k?<-JZX z0W4xvJ?24IV#yu%J6gE&v1^(eb5ZQgNUwS@68~-3o7_7Q?IaQqZ6~rb-JM)wc0}H1 g>T^Dh^kx+B6YsO_2YAn(5&!@I07*qoM6N<$g0E_JoB#j- diff --git a/interface/web/themes/default-304/icons/x16/bandaid_exclamation.png b/interface/web/themes/default-304/icons/x16/bandaid_exclamation.png deleted file mode 100644 index 5fc2d8b51b7a6873841dc73009f9132ea8de3bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmV-D1H$}?P)|vq12UtjS zl!Y{WjI<{)(i0hyFftOElJG9`DV$FHI=Ls4cN}JB^%NXrA>|2-R6M*9AhhLDuyDz# zTv&D}7F_Zi+9KGVPi8nMIgCQDj$@=C;r{^kzquG(y!=TE%eGgr(xHH#&UzSsncbn{ z<5XXG6F_9sg`g5|rwY97a#*5kS0PJwg-6N5w>ASrHl_xZE;^L3@Zkk`+G^H8yiTQu zsfWf8bro~(l~b#y5~V)=0#@eiP$hq)#Jr)-*p25RrYN}t*1 zGtCkogsG!W4yvk2#1RC5{swRjDS;JJuf@<^oev%|ywt7tK|U$Y!qA&ou;gyB$`Ww2 zEFL39YXMQZR3X&({ zaP@h%m|6Rqxg16{#n4uk>4PvnY`h8s)}-l`c@=zioUq&U)EQbwAw~=!qW&Da>N{C` z!YG1CQ<)F)MfDJ@#n-@P7J>Egwh{Mu;i5nwfLYhw*>(+EgJq z1itD^*Fl&%+Dx|fqlMc)=eiB#gN1Jc8Q^RTr{C65iLD9(kjCTuagA_sO#2AdLYO+z z)9kv2a@;i9mp0ws!-ocQHuQAGL089-=@vO9X|ACtR27HQ?ZV4FVsl?W95_yZ|v>l-4(<5qe$v5^n{6haoJ0 zI-stkY6flL-=~K6!qm`in4ih>Iio>3WXe!QJ!5`E|7Z^8=0ve_3u0LncVbwggb*A{ zp6|;_N3~B1(8s6uQRlNlZm!w6X!7?ZUt;4h#xo~s}A{{ z^NVAS`Dt6_@crVLDy$KRDuE;RJRlBi{*U0$<8!ffi?2KA;!8VS8gbCyeixl;tr&4D zp+s!nM3B^fR;CHQa?{`o8x0M&tx7_pj(}4ES2hzQJt&cB7si})ez1iGhOFx(LBBJA zedQYpJW5FFD-m>a&n)zvvzE>cG_I4dIGsf@gDnpd{}H$pAnz#_^xv`RZQBjHG|?;0 zKOPxH35(-V$xPN2Ete? zNbXcgZ_hn7(@{eO{rS9^{=&RW!q(sLMC}EF4*3%NJSq^FTsK1RXh=S%ExH{XdU6|_B(2qXtIth!@a!P8mMstH$ z><`CIh>4i9p=!#jUYP8tr)woFj`^gdU7yLP8?iW0T1vxV`^1z5WuxlSHh)`FHB5&)xl|>CfK0d*_9Bax diff --git a/interface/web/themes/default-304/icons/x16/bandaid_pencil.png b/interface/web/themes/default-304/icons/x16/bandaid_pencil.png deleted file mode 100644 index 9d7f08ceed93e321298d956a9c2a940fc20e2a80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 777 zcmV+k1NQuhP)zAHgbWuy#=ilI0&owUojJ6?j=&n_20US&>lqM@b-FDP$rf$YzeI*kMfilRNNzO|0jZgQiRLKzvSWh5em!kCm;XUU=w1H9U z{NjjZe%e$p*p#Qe*gy_oeL>jeA$K<=B4_?@#1_g7>w5PJRCeH)w4@*3=UC|jXWT=V&SSQ-|ls|P?z10rlm z+?vm1?3s2wp7mBRkO{j6_m*A7Gi2XLS>i7{`ibv)O(#DL+CiQ3EWn5 zHkB7_*5m+5LJSMASgb#9pe6=o3~SS0O%n582pz{L=Q@mOD1EJ2A_lALcqj}vO4)|N z(u?DhPOX31UGA@v?eGZMFj{j3YVeOYxUvxTT{s2KkoGM^^wpb)C?e)LZac(Bkp)rI z^%5~vRdkrr$L&P)J^P99Wd-aydJv|NeJBx^Xgks7WeEBW2j9#4*cu~400000NkvXX Hu0mjfh$Lv; diff --git a/interface/web/themes/default-304/icons/x16/bandaid_plus.png b/interface/web/themes/default-304/icons/x16/bandaid_plus.png deleted file mode 100644 index 3da2d463e34487009185d611fd5799e11a1a2ad0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 776 zcmV+j1NZ!iP)Nk2|>2~g~6gBh0mvhd&=X^NdKQ6%Eb0VCBOK}{i z5;?HR2sG~{U`Ms46KF%Vr<1K6`$#^75_nYW1hlM)p6#Z5i z$>WFD07P~k5-Z(9R_cCcq@KR|MTlp>*g{Dv(u6z))>=>uie3OPT~Rx#^rQPPk0ie(UH zr}lu*xV_k~2b&#Cxl}Yd2T?%1#bo&L3>O?LcssbFzli75o z*ga@>ll+0wA@OycoA0<|3_L2W^WK&H0=PIw>aAd7JQ!G&iZ17~#UGKrv_+<0M|KE=+`v2?rQm`Q_T$ySJ8nD)bNe^gK z%iDc({{OnN>Hp&mePBaCE?MNv)PUE3Rc=g*E8Unnt}bf$|M}RG|KHE70viHy$$TfK z$#WfXS7-{&uKDa)&jB_h&Est9ld_EQk1Xw5(Vv$IMMWfM2 zA>JXQ#~gcb;GrWT#{OXN5DtfZ$z(D$9*-Bu=rO-*;P?Br!C>%Bxm>OvkH??2T8)s= zV~+jb48&fq*BOh&KK6RO?PxTjY&J`oOonIlm}3tP{BHxN)5+X!_v=I=QJPMtKbp-Z z6$%AvwOU+=j2?6B!GVX48#o+}r+hyDeJ~hMqtT#BrNTwsZkIZp4$tT@#~vJb=(vH! zV)@YT_h~pB(rh-P&1OTV(}}LvE8T84x?CITug9f&hvc(T3T9E z7K`P~(9lpglga!T9UTQ%<~-;9UICKk=4QRa;c!PHk@UjC0{Z*=;q`jO%ADuCXC3Q* z1?cs9G8hbPPNy@tyuAE8=cCam#>dAo zGBP5XW@l$HGczMr<~-*;>sZe|0Yn;&=Gxrc9AdE;;_*0ES68vQxryD~UF32(WV2a5 z2c%LdanCx|vrhn#LZRp^D=YK#_V(g`!Fu+oR4O8=R7wQ}1zt`L27?d|3j6h}XP;ay zC(6&yXWUp>SwSciLU(sJ_Uhde+c-I#!6EbIv4fT?RBpOJ#IGTdNSteHYY2zK@OV7f zt8WW!;pu0fzUSR1-QaeIwl7IkS6AoA%gej8v$G?fw$JCopZ(Rb4V>`DVf4O5gZm}g zUu?mj1GKke+nSya9aLRieO>rv!G9fJ)%5iAU;XjtTkvLq&J=L^{ckuo0JVEQPD-Wn z4hJkPEg_LeAel@eolawYeO<)az#AOB6@lUAYt*|Ypc6jBmH?DzpM5F6_^N|SN=mw9 zGMTruwDfL8Ma4a}TJ5W;sTt5}wS%>_wS&T44^~xG4OCWE-j~}SeLE5bWTzf}J)pHc zkT$dvKScr*0#y5<$ohD=(E8+K;jzAR0xxFsPYUw-C?On*EdT%j07*qoM6N<$g5qOa Awg3PC diff --git a/interface/web/themes/default-304/icons/x16/bank_exclamation.png b/interface/web/themes/default-304/icons/x16/bank_exclamation.png deleted file mode 100644 index 10bf86ce4d0ecf66f2be6ba643bf313f6973f379..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 759 zcmV%ouc^Q?8s5qz*5&f|I6NDRN7!=DfQrXh5nxnBL zF}6aQIb4fS%bar?w2Q8#?NSh8K^N>#!PEDAKO#q$ABXc?&N;li?+dlHwNO`A2Wqt% znwy)UwY3%6+uNbDv$KN58Di>bPJ7ako_q?00^kn;+uPdO)Ox+%5DW&R#MIOLzX456 zP12T@mXkJ{&7DrCzq?#6B&MF`wEtTGud%UFsnu$G1A#ztVPOG>hKA5&GI2~j&1p|M z(*FujDwUv8sgCJ%I_uKX(pRt7i^IdiI5|1V8HuTB+|eKrWYGn3X zX0vn;7>~!fJ?ThKJ{ABHiR83cEH)U8M*J5XH#ImlF6Wr^@ zn;wk4IE5WY_~YW8d>{ZFgU93PmY0{&?RKNVV8E?)0t5FOa3eo}8jS`&W^|+Qiz@312EqM? zWo3iq<>h9XOm@Ahs%pe?S-cXPtN6D5T88WCeYp9tmt#U~Zr7KGw;3B73fovnSV#*o p)(=(|;X>Gq5Vo5j=p29>KLJ?#2;yIg2$=u?002ovPDHLkV1f=jVzvMP diff --git a/interface/web/themes/default-304/icons/x16/bank_minus.png b/interface/web/themes/default-304/icons/x16/bank_minus.png deleted file mode 100644 index 0edcebce1527f6a985aeb50dd8e392b664cc2d14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmV;30(bq1P)1iTkkf1QOA#O;72M=9hmo6$))FF%^F{jf*C8M2^ zOG``S^Z96HWrYHPz)hihh^W!W92|J~oK7dv9~O-G{eEvW8jT$t9W@Y9qd#=P;^Lxl zd3iasy}g~kxVZS9%jFmmHTszUZGq(RcwE6?@L{=JZXX^Vaw3u7cswpg)aYXl4*ahL zE|-hu=jZQ4B9ZLL$;sDZvB>Fkn)mkhWFsPK^f3nq9zJ=&?Ck7XDwXySd53|;GYQddlJXta0C?!#r=N2 zFW+`DndIN|j|&U@c6^+RHXDDKp5_-sgV!q6=XXS}$YQZP5>J-#>hP=f_xG>m*@+4M z77AU{OQJd%42GvzaD05sjYfl;%_g_oZSHovvd+)X`OWGor>s^^LKX{en#~+hD!)9# z7pT?hwb9YhxK5{gZZerRrlzI@XWg2anaSAg_Kf(~8ME2EH90xCDeh|n9C-L{(a&>3 iNH1jk4;h3;VEzFH7~N@VdY}sc0000qKgW`n|`nf84Z+yEOYIL7&KNx zh>{6PPGq*54KZ!HT{tHug43XXpkNnWJiX_;2okM6csS=g=XuWia=w>3J3Gl{vyt6y zr-6Y1ayp$fG&DrR!^77F?s4RrdG520_3Z2D=pedafM#%T&^|Uc=G)%hE^y?U`F{@R z@9&o#4#%xnES5MrI{LY=umFx+Gtd3Y2B>;_d#x^)YdoD!m$tUH5C{a|_xqK|HS^qO z9qWG&uv)Fu)zvlP@pz&;J3HT3R#p&+M377-6(dKkndd(1SkFFXfW=}N4TVA**=!ce z%gczz-Boy)YKII7fzk-O{TiK@JW(-sJ6D2)M~Y#Cr6`E zh(+OVc{m(~v$1gl6BGC#Nm;6@s$x9N=ku7KpNHG+#%1~Ejo0vcy{J?w=#%9aaiTtw zWtmhemFM8#0Et8bKA#U4<)P_2NGG~c`8E!t(U_{Mt24z&d}g!RB}vl#lamu=+reNE z=kwJiKi5Cj55mQfd+LMm-`s?-an;?RK-*>wS^W=j-Ki8N=Z)hC(5psi!&ZNk{rW z0cNuqtXAt?pU=l`Z*Tw1WHK0w#c+Lnoi`FwPjlLnj`ZZ?1IEY4XQR>Rr(&^)>2w-b zR#tdZE|+73 z7G<9yF}w_8V`DG5CyVsz=&G{W?3wz)k`8UBo-=^Op$d$QjJ%RUlwxW9J3JPCKzCw6#8T$JAW(NiaLQ<*ptx~CcH##~R z(P%Uadc8hwFc{+8UB}gG^@2*JnioAA{HADXk@1U9$p<%jfxaFNat?~FnCyB z)BQ1;5Lqiiplu?pLbebzA>x>-2HGG*3R&&&%Ql*C{WGC@#bb_-V2m$C5=|EqJ(KGQnIF1tr^ygB{mj}EjchoFhTbb5m*EBGWYATLS+;@(gjR^nu_Z;JwJE!JuPj1_dA(T=)vdCs14h*JTDIOS(K z`&RaUzG$?@T7xzk5zrR$LbJ4cVRxFbFW30FE(vHWq?vpfCA&WD#r=7$HO6Rkks&~# zg{*LdVQrxub(hkKtZGvVG0REPi8^-T+{N$xT1{2LkVdCNJL=Gn`?NX{)tw=JwW5yx zc;wi2rq;5Yr6c%L^KFPQ(NF<<`}e_4Rdr|MlL#3h+Fv)9LWl=;eRD z&k#U~2=k!|o{i}NF;E9sjyQN=j#B`C4Y~bjiwDz-D1hfli_NDaF-k;GN_jwY%7Bl< e0x7U9BJMRl7CwkXGvez20000;fi z|JTLy%imRErjJx>pML(^jKpylV9X}K-bbFAt~n|_dTZ?_mlFrsdt}mHYLO{MWHj)@ zEqMCbUA1$ceLv#>MA0Tdv0NE1>y{5d;mS9ByLb`Hab@XxV|B~E1LZBds?2`)^(AFl zbqBz8?#^JZ2jaMHvQN_myuM?e(UMKMvXzPVcH)m$nfu`EC1qLl^uWNZ1EBA9;H5G{ z2_^K1a$jp&Rh?_iAM2-<4Ng7T-#>eIiBZ%|6k%kfI-VC}h+~5>1_4YAMhBeSG5_oQ z73=Lkqn!(m?czqsE8|yE-e7i>E0ZP z6%s2u=rB3)(C*PlYmAA|kwyfxfljCy+di`0518y|?2d+x?g6wB{6L;4c-yuP6-yPZ zHBqF|VSoUk7J@J)n@x`73WH<*hV0Ripd;x5f)1X)p$;E=@s$I1GN}^TEUA2+Tp>@X zSR#`z;0|Q5-Gn;y+>?jfftm_Bc+hvECq& zi0Mx&a#@RFA?+PHx@YQ(GZ*gI7VkI!&2?G%=-tzoGr7Tr<)nsV5ewksPu`lCo15dy zvlsqWfMsD~?XRpi@BC}qtXK+^h)~HYXSu}?Pz3q_#tS_9@G!>#7FRfPt-(U?BSK)+ u%dqBUh?Iz+l(K+yFC6|~2JnG45dR0(@>B+h+ve8*00005TON diff --git a/interface/web/themes/default-304/icons/x16/bell__exclamation.png b/interface/web/themes/default-304/icons/x16/bell__exclamation.png deleted file mode 100644 index 2eddd3d11ed7f06b1a1d183a2d27756f5486229f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 802 zcmV+-1Ks?IP)FJ2Tm2noN>SHals$b=9qC1#2n7)>3Q*6}t=FgF-C`>u>)74|?$=h#m!n zD&j>}U7>>Zw)YBxMM3RFs}#E%H*LB}CYj`&cODPPs(bJYpWE|%AHH86B_dpSRr6mJ zvWmc0TyLcpI|Itr%BjcCt5skLxCDH%JG*ytEDfyWGQ3eM>f0i?%HgZH=R9}s!ylbg z$~`SYRs=-A1<>l>?NoTOP(AqUv9m8dl*Y#2`ubP_5PH zYm%k_Sal1pu%9&9VSRm_L2s*=@$WpGSROIE1{qiF;v^O~lbOnn0|`bp@n`PlM*BN1 zee)Wv;Z?lp@KBQQv@s|RV3L0bbA^hh1O+fMP28M=c-P737E8I{WanM^*w$$09_ zQzw`Dv09FYgxkMOK5_dttLI*MaXFJKhS#ob(d|S;-H3jtO=<>sUdldSQ4BQIvLBu~ zySV)M+T|Tb^R^4n=}GhbcP{)?C{DMvo10BVG{6TRzPYfmvB8(0UH(;#OS7qon!V1> z4acFW6(|v*9w>LKO9iL`S%CR6M<1BwJiw1l)_!mEJ!6f4?XW;AERZM>K`EsHe}X$1 g{6ASB0{TGuH_U@Z+@No_kN^Mx07*qoM6N<$g7RB`>i_@% diff --git a/interface/web/themes/default-304/icons/x16/bell__minus.png b/interface/web/themes/default-304/icons/x16/bell__minus.png deleted file mode 100644 index 7b50d7261bd7da38b707b35fb789aef0aa4b5c09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmV<20wev2P)st?NYnVPIsCxH-<1#K|~O{L3i*lMM1=WN4+r6FdC^^_ zBJQY%-gl6B5Cu`kgy~$nmCm$jll_I1lLJvVnC znEM6S6MzyK001(aZ`OUdIFmg{NuHAL@ES4zfE=;_K$X1I?j3pk^xE4`R@rp_)b_u% zn-{+?w$^`tq1=rhVE~Z0kwaMmP$f@4@%)9;d1xKpy1!}j@84|wai_kv`br&b0QmCC z6*&|I09DdkTv}O-J3|2Bv5qf({2^`qvw5!=xDAkVBZqn(0BXCVl-KKx>1YVxnfFgx zTsq{+rx0+0ZxVraBFjYeN@Wi11cK~W?{k;Ism zdrK>`sVr4hsVqwgWknfBX6F~Xqlt&}9?Pql_NgF)RFNuT;aIPKc%ht3lx3+bBPhxw zjz?y?a|g#`kH&(0f#!)IgH#2n3boPL@neslJY2-6EDN!SQX-a&C()6k%SVSJ$H!4^ z92rM4h-ESyrKh_6M-I*R7M5a+iXw`Wk%UQ1Mw3dX(^#JA&K()yMjTvdV-cH76PGjr$O``zOrGtq2(;aMHtbIyA>N<=vG ztmeN;b}6ic;*Ztf^J)x|t;p|CeDvM@Oq5Co?k$y`TZY%SIya<&>3EbE`%-#M zgs=z~fQJDsB4Z25u6Q?e5`uW3b&)!bIWs%Bc`&%t;^Zbpi zJ-;160tFCqTC!`buy@e+JdE)veR+ztzpl|^X&G-H`(s z`_}C}x!wWK^YDES&vg*M^#sQau&h`RDCc)3OokOR5^hBJ)s?&l$Zg)--U zukd~QS6pDlPO@qz@s)_6l+r+=O_=|e0qQ^l2>t>2f?dxmyRN(d0000`b@JO(=J7W}(he!I4*8Dlzf zb^jLM&(uD{Eas$iPP>!=03gH3;i~s1MzRMf$y0La#I23jLy-=hed)}sBF*Y1kV6&# zD3e#}W4qp%J@M94Wj540xN@iR-kl%&S66PnIJ_AbR^uw&5`LD<QypR1z2++X(m(Ic~P<4{>!4Pd{TKfjw# zw^!~hwN4+H`2Fi&=Rh!*Lp2Wom4}^_SF3|Vg*JeXr}mnd++p(47w*UVY?cg!L-HVp zq7R@oT;Dbjk^m$C$|CGrA6Wb8{PhKSn3D&l2IbK2CyWK}QzOl-yV{%SaM4eSev(0_tJU5N$4nN#P^9x?M6VBiDl7Ve7LsyU!`I(3xt%C$wtT*)@{QWhG4qs;1k=OhTj%l zytQH;(8E%zZn;(04=E)fgbX#*kOKe!03zDhK>0twq)rB|Am38}0000{i# zc*ZO*sMqU8wAE_$Ncy!AXz+|#UQjNV8TLx0lHP1KVbZURK!b-2%kzR#sl+&~R;wCm zLBeYySgX}EWLTaT6bgkM#bQyU|MpIrpSU#PhldQy^MYJ1$G97fMsK8fhzk=Qc*w9k zFUVvvz@E)!KW4Mp18L`0z(WRE?C=6rRRvwwrF=gBNtcCNKeGZJGRR_w7o<|DlP@~c z=@h^2CR~5uMh02z@B&3qqK!r)x>zj2lgZ?MJRV2r%X=CO1}^|JGi0uz%Xz-As n>@jwD0UaB0Kpg%PWOoHWB&Q<_5XM%U00000NkvXXu0mjfi_X|M diff --git a/interface/web/themes/default-304/icons/x16/bin.png b/interface/web/themes/default-304/icons/x16/bin.png deleted file mode 100644 index 7fe988052a9582081778d449ef46247b2241ba11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmV;90&)F`P)Wa#M7H5nbcWDH~xp$?@|2f-x{1*N4*Ek$sURH(Hj2zC>Z+DV900-aij zS|i37t9hxZN&JpABt~EBCyfqI?~y(swo49v!*Rd=pS$<&Wg3l!Au5&Xp-d(-%+1Xi z7-NW;^Ll=MeqAb+zFk~gv@b0!S>5Z)yshpK5T@u)y{6Sca_i9 zI@{k$?NIEf84hI|kx=#`QaJAm=u(aa0s-RI1?WF5+HF<%x7fo1bScLy77KBGgdeqTGL`GK)h~~sd@&G0nO4s6 zq1K6?G~-x+F6EffXe6!+PR@G51Jid{wdF=Ca~4eN`C&9G9@7!fr5w}i^~BT;l82r4 z{U>QC@g1Z}V*KVcqDwiZ)9Hw*YZUvVQn@im9#nos|9wd4QjRGU3Z~U+kz2n+bTNb3 z$yixgVM?V^&)+uqd_M4cy}<7nY&IKMtyZwx?cj2`CTr+$_v!NTGNW;ab9Z53;aRm> z1wjxXkw`!+7KhEvFR-!k8Md~f5DFbYI$eQcu?_ssG-2j%mPtAHBofK<+1Xjg%*>2~ o&yhC>pHJXx6S(I<7c-ds16Sf+7ol=9hX4Qo07*qoM6N<$f?=#Nt^fc4 diff --git a/interface/web/themes/default-304/icons/x16/bin__arrow.png b/interface/web/themes/default-304/icons/x16/bin__arrow.png deleted file mode 100644 index 1191c51775b8c457bc438991351d999eefad97da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmVCLMzs%eWL_$bsz4N?#)xKInC=|%*lpeQcvO6W>)qnk<*D)>O8 zB7zHbVRfffgKjKT1s{<%eb{PRQ)BbEnS1BnabqMJUHHS#z;M2E{^1Pi>FEIgaL&6E ziA2N1!~{&!1b`|4L8sH{QdQOR`Fz~(_ZKxyD^^!mPbrFW4**y!7Q;_9M7wq$pIpc< zg;kfkKHv_0$rNX}X%pSBh#_nONURKb{bNr?hDs074nW14u!Dt1|_p%u~;$LG-+t)cD8ByvtVi!5jXCO z$npJ-uipzs4gks-rtA7|u*a#mMql!}ecRP^wbxGdU-;H`XpcHw;KnbioT*5l5JKBm zvuu5U8rh<4ojz7Gp3WKh)FN%F4bjw}38=2?C>a29T2w;;axGYrK2S=* z4FfeD9cWzNiWgTOj1fu)8Gx#IJg!C}5oa_SMJAJhuImuO#^PcQ>$rs5?Saqd!^x2u ziS4AOJuJLFuHMj_e|VmO7an9T6WM c4g#3}0TCZ)ohX+7vH$=807*qoM6N<$g8WHZ(EtDd diff --git a/interface/web/themes/default-304/icons/x16/bin__exclamation.png b/interface/web/themes/default-304/icons/x16/bin__exclamation.png deleted file mode 100644 index d87347ec6a3286122686af03d1a880bc8e6d8aa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 750 zcmVqokkR!Ag81$z*Lgy>Kfq(PlbC=w4r5Y(yY;wgy0pe{lk z0zFiqhoVE7hscCNLK8N>GBtMHb=}?Bciwkqy0o%l9{R)oIXpbS=YxlIc6I^)7-MH< zW@f76@i;i=0N@5tuBxg_*LBP1^RZwsSO^3H1+UjTC(H6n0H7Tm9r&y2*oo7B0izHZe?#n8GH2gZi*1IPrd@zX(ww1pZg03}uY%SV$#86^*)uWfx2V ztC%lkB*qwuE|n}v)T7bB{ipm`KBv?vGNGjnil&7^VcTTRrEve?#;*BgL3K9~&xS>` z_mYxW&zo5QC}pT&7+c^nRd&7m%p&L8^rY8guik!`YVJCx&*z!BNtH6&HjoLCjvSyH zRUygTDA?BB9{-nQ*36l!&l`Q_D+TgdUdl*@VW4OL$TDG6hRITVkp-^zEgq2wk@6cx zd1_@ew7>bX*GP?O7EdchX4?q>KxN{(^Jp#*@>71jZ?^gP?hpJzYpvtfT&mAsqg4mK zHZA;a*!c^>a@d_~_371wp**-%H+i!8O*&GwN50rK2!F6vt*e+m+#VaC?XiJ>H?VET zYK)ep9^X4Ko?3lPG*!`vm5_&qhG1l7Ngx=m5f)mx0Hmd*C77lO(=@l7VLOhMV?3K% z9t`=)LuJ2G;}{vfi3FR59tlT3%h zICQ)cmRLu_!3o5_9R)z}bL#uYTqb*i0&tIwjp@;7RE@=ANT<^<3Y>j gcWci2>>|eh00$9fLk9CjegFUf07*qoM6N<$f+W9PApigX diff --git a/interface/web/themes/default-304/icons/x16/bin__minus.png b/interface/web/themes/default-304/icons/x16/bin__minus.png deleted file mode 100644 index 8c70f25b5cd66a5958d0836f6bb199801fdee43f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697 zcmV;q0!ICbP)BY?zUG8|w2FhARZm=FU0TkQJv#;v|o8JUeyNG!CR_K$L zeLr^%y8!_03^PshFF536lT=Cv6DX!>q9p)maAEc&Ng=n*wW*oy5rq(?QJ3ATpN+UH zrQ1r-QpXbjfKd{dev;P`G3HFoYz*uD0W*8Hd)u-d8$h_l=u1n7k5RaiPhTIb-g%VM zp57Z;`_<&lnj!4=DU8m~BU&sTZs2*+J+6m#p4}h%vTHb2@#e%azPb_tfO^2k(wiH% z{ibMKqwtSqI8L&+Dex0i8dUkPf@o}|Ug=v}) z!b7>-0Ou0HU%N~d?YLImSP5JKvlBFI}sZ^A|3U-2t zCFenM-QP<)I)N)oRU)zOP_fIkrP%l7zLdz;ahPW>uCYWQV+>wGRk>@)tz)n zCZcCTX$T&_K0doE2?5^91}z|2;>Mm`H)5rDf2= zFdqyIQ;oX1x+v#c*bXGj8;)d5(CGy4QJU3SBM!-UAa2+V8&++*+fN!A=Af?+<``xP ziN#{ddBN^MlD*OX1zNiur~D2(v=6yXmhDmJ=T(huOf?zIWHL}!R5Uz+P#qEqg_N8X zn787wy89OJ;1z6mqJ{;-jBS4ES|oGu47gnG9G=dKH+WQ0TU#3?=NO}@Q;#>4HrssP zmX}QLtn*X6tgIg8rtaOj{tB0%?urV8YHMpzb8|D{pOd(@Icxbe{p-!+vMVu@`MsZH zi9_7%RaI4m>g(%;c(y^QRDwdG0DR8S-y?>J;W8ld$cr+Nk8}db;Oqk)kB8`W0dujq zxcH&p?+2D;!DuvsUT=WuQ4v7O3Cf|X@Ns4gEEXT^?Zp89neD{+?II55a(;gPqrAL4 z3BxcFd`}p_!0l>gtLzdpiJuJ+a85$9#3AlaLwHvf^A!?P00000NkvXXu0mjf%Q5P)OI3!N-Ba`F-d6^C$6m900%=JF>8_ z5KSZ!uq+DzJOJvQPN&P~^NBzpz(S#r84LzZzu&*Cs_Ih!paTN~_@!v9`|!}`jbbL^ zbGe)9+~Mz8bCp>(F-n4zxJ>|w*047;_4fH#8KRtX{I4n*${73SL#hz!a8nN#wprp3 z<@-uTVT_^dN~wxMy>1%3anIVP7ahACDxsADWmD5MtA4gDB|P>x-?H+JQ=f*hS;nB5Dg%G8Xm-W;0 zdPqnq$_>h{8UX;PN?aqimxFb+)EXXL>d=~9M!c_nZDi@&zChSw=K$N5Vy{-Sb@zJv z;F!NKudE(hDTq3b%*=`=X!cv<@nNoN|Ws=$A=9*Ym= zSDDjFfnbUP@Jvih_%uy(#$qvKvsoC10nTltQUx$35p(w;5D4JhhttT240zrm7|rzo zC=dX30Gd@*?U7POq?C|S0{GdE5Q6e)_o|0T1dT{xR=%*#1Niy_d5vjknAjQf00000 LNkvXXu0mjfo0wnc diff --git a/interface/web/themes/default-304/icons/x16/bin_full.png b/interface/web/themes/default-304/icons/x16/bin_full.png deleted file mode 100644 index 463c7d6aaa1fea3ed62c24b87e089bc5d8859b3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 809 zcmV+^1J?YBP)D^zqxqohR#_60}Cpz%qa_{|ozZ`z|Tp*E10HLq1545+p zgSxspAP@?{O^M_N29j%2b2DgbYXcn}9iY3rn|H-xF%S5!;4UtJxB!ak>!nv38eaGJ z_ZzP@HmaLjTBdP<92dxN!3cKm|0~dHwG_yvO0JciuxaUs+gZN2Os5OgqhziU{@n zvSq`QkKY;gpocH^f887LqG!{gnx8G69^>+rZD)YEGzTDr6n+L;qi0KR+Vwd0^X1!* z9Vl0-#S^*8G1-}N+02j~z(0%6fx*E+3Ur5}zB#>-Ipj`Rv(tB+JFju6e3gx6%i%fw zCZn?i&143|r8&^k(*p(u1_*G;XbaGDz@@TD&8o>tPNGu(jnQof&Gah}mt;tmUtL{Y zptrYo2p>(PQmK$qsYEj~GiYpV49R3NB$vw({$%_+;$ZhlXJ;p%>ni4YYisLMmSvI4 z5L{KP{Mfk@WCYirk(1f`q5{aZjp->?Z2o(69 n@RES?w##G9>#O4y-;FmW#3U00000NkvXXu0mjf+&XyP diff --git a/interface/web/themes/default-304/icons/x16/binocular.png b/interface/web/themes/default-304/icons/x16/binocular.png deleted file mode 100644 index 8279f4584ae1847e328f5ae0dc35ae1015d844d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmV;80doF{P)qN0OnL69y5K@=o$QJe&E6~4fBuN5vo~U*8i~vPZ z=mNCoDcYaf1wlX;b~kF=n&O)Zkf~?kxP!ucb;+}mFggk!V&)vL@A?t$!-+#{ko&W!iBwf^s)9KXxe!niu zvd-rgwR)8zkqC0R98#$i_}rpauZIM>C9Yz(+Xcrx>w!Q3Uaz-m=xb(!Z{ctl`FvjN8IQ-scVn>_GMS9%S=TfTg+f8- zJYzQa9t;MN&1R8KrxA@t`4>*>vwHu?wN2sFG+W%J{S9EzUW*`WsI#KVEz}t9BGN# z@B_k;$K!#|=VOB-=58bwrGeK!^%p;Y@d^<8bb;J1V0rR>r)F^6B!lBCz5PzAQjSz2vVmdkB{nF(X2^Bh1NJzn^*zg7SM002ovPDHLkV1g<9 B4G91M diff --git a/interface/web/themes/default-304/icons/x16/binocular_exclamation.png b/interface/web/themes/default-304/icons/x16/binocular_exclamation.png deleted file mode 100644 index 1c7550cca6442b5df5329b4610a5fc691c6b5d36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)YVnVCHU@rjg!gLD4={{Kr#O8zG%CjJNUiIjr_2O$2ht*s4G@E^)2 zMh*pB3=IthDY!_Y9K(DS6_uCz`uZ+&N4YB|v57L8dz%6tG)YR1A27uU=`MUpCOjr0n zq0Jd)z%670?w}h0^fTNGnwrZ0=k&<^fBtah|J8GJ|Az$of(*EWY`}f=FaU~u2L|GQ zU?BdtGiUt0e{;b9KVMh>Ke;#je|dp5Nd7*u0S7=ff)oQo8SH0}7)WArBO^;!1=FkN z_uBu1qVd_C`v2Y4!vC3>A@a!J3CzzRHb`Lqaz=&&D;S+G?lU<4@ktFh5k0?=@qft_ z`JW(hkUR`n1Mv$(L&N`;mX;ueFF<0u7BMpJS;9Eu!L`^o*Dt&O-@2vr|K*Dg{}1oA z_`6{y<4TY`%z)2W!r=3^d5o5a*NGl~aMS7k-K)l67l7!yS55xU?BxCnk_Ty)0pcUT zF!%=ygJ-}ncm@oEe?YO5)0-JLTsx}t?&WQ*|1WQ8{Qvs45=?{e*}XD97j!c&2N}Qz z#6mzU4#ZN(cy=qpEFeCEj_0&7oSxgpaB5x$!*l@tV^~CvNMCsX0000EB6l2XGNkNb<1wjGtV0*kMM8%_=Z;-U?c!3}-{{~XNI^$}u?mHPmCNNU-iP$u^`z@M4h92k zx7*13ke<7a38*LvA3$dx#{0Eq^?IET%>L=YD49&!*=*J>m&=$=r)|=nWmy&)bM}kH zB5ImuJO0QU@KUK%&@c?qXS3N9&uugs*zI-&XTR6$p=p}J=NfOoYpGPie!q{MP6unX z8ovUo)hf1HEy3Am&KI!HHQs=^KOmJ#xdF@r0_NU;g+G9Lc3WT`5U}tDEd4VeZ9_vu z8lvCwp=o+1MxO0G|fkZb}kfBocTYi{Tl- z*QxUYJ~O5sx74FWJzCV`mb3}s(7`0YA3L=WA;bt0VJ{>krzY|ZrxOMrwMY?6VHhP)gg_8~xJVol8IYuYZGskUqX>i|qFoVf zYV(87hc>|{B8s3*3}0G({4l$JyXWy|nuZ7;TsZHZd(NAC7^VK4N9lChsZ=UXp-^ye zUy<|A$3~;UlgWg8y&mJfBIloy6lXFS44`mdh5PGlw^}U>Y=;T;e@@Ng@%SQ}%`WQo zI;T>ph4elplS$nJ24AgKIiJrj4)}S{;Im;EY}>Zpv(xG5&uzEcJRA-+20t2&cs849 z9-5%Rms+jHmSu6j-{)qtiLYSOG`ZXDY78D24}gc}Dv@vSEo_iTBzyzlpn+8`^PFgJ zi>Txod=DGQ&i)F(p22uL=7AXS`Z~WNdhZ$h2xlNYS3+b7QDg8kyUByWfL+(+v(f0T zq*(O~Ht-6DC1t%cdL9XE)?$2bdYD~js#l6cA{&nb12{juoq^HFoKfoCQ&MlA(8b#p zxe(vAPjKus{UQm_42UmC?c{PfE*6V0*g@~bEv3cJ?$Z{;H?AGxOXZl)2lQ(Bj|`U2 zZ>q%02lNKwJJ*l$#A*cpgQX`vCABFT>`MlYWZ*~!`_lU`y+RLp?`%0;wjRqa~zDgBccZGs3S zqKH6JMY~)06(?ka5xmd->-PRUWL~!dW|}ZMx$6P z7BQVpBd=TZ8Z|>er_;$BP+hm;{i<0n?^msgV)vss+F2dn3mP#ejXEK=-&rKu}n9XJdXFr$AVYyruKA+JBTn2+d%;)o% z$z(7Vi}5Qk5{Y0cl@gqN=6nJBd`25^tq-u-Y>fcsO#-g90XO;p>bcPZ^Ckf|+JKsV z2Bf{v5Rrx`IQ#O(Bn}=raCB{)wVF2Ih;QM|G-c536_$lNme<$I=FnFus{qhOmEa6vu9-QChVi6uRDFsY|?Im~c!ze$WgQ znt?(y_#o|sFrngv{mx?FtGVVxV?p8zj@7f!O^^uv1oNL*>^Oi0Llu_j`*o)K6HT}r Ug{6dwSO5S307*qoM6N<$f{RJ)UH||9 diff --git a/interface/web/themes/default-304/icons/x16/blog.png b/interface/web/themes/default-304/icons/x16/blog.png deleted file mode 100644 index 09267a222cbef0bad211947d3c501b4ae8320fb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 513 zcmV+c0{;DpP)A#j&}%dx37Bv@IaPvC2oBO!5H3RJQYSlgDfDynBb4IU;MSo_2R}e{?B=NW z2Sve@+-uaFq(dN@pk}42ysr{b~>HU z*Qj0BeSeOXFbtDI9LMzDDijJgXqt+uJ_96z;K==bz{5kpyRRqG8s&64WdOOHM6sx1 zSq6ro0TQ0)vs&#q9FD|sOj@HHkH=&aMG*k6K78Z%vZNo$@23_jgq znmVOYk=@Qm*R}rx4u?ag_~wiE)>C2 zZQGB|A4L(SX(sVSfa|)6{nctktJT6V47S@XK@ebBRu(XwPBZjovzZiYwHiVQgb>LL z(hk<^HOgQxpwVbhDwT+$i1~c}Xa?u^aRzKQ8$8crI2@t?h2e0hRjXBGS;ldkiyujr zWhRpe6BH#D@U%=uIb-W5k=u6W<00000NkvXXu0mjf D9B}Tm diff --git a/interface/web/themes/default-304/icons/x16/blog__arrow.png b/interface/web/themes/default-304/icons/x16/blog__arrow.png deleted file mode 100644 index 500ec141287ab8582f9b7cf53993c50b552e08cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)b3V_vUUz_G_guIQM@;}P)f?QKlz_rcqD2(vdE@#c1uLNlHX9L19xhw-3yKgc0h zbjCZ!I=$Omp67XuZst)*`m`C!p z9cv2`Qj0JD7(foWqGOUI33#PaQ3uc!f~>NAl@Ae+sq--l;cV4BIIcg+8=XT-<4?>uJAY&Hw{ z#>NIRnan?l$K%j@mNBsgT$JJ|?f8nZeRPR2lgT9Dxm*qohlBn!71|GamvC(&j?3eV zXt&JZx_=qcDxk#j>5-U`b#`_#gTX*>Iw~D~Cs+L6FqQ&LpMjpm-`x5FoE%<|87-|= z%XB&&r=tb}0fa&!L?RLO**E?c9k!6lx#0k`$~CTj0-DSLxw-$9k@|Xt2&(PoF96Qwt3))elk_xVHx<@vPOkAjYeZ=XlUTOaqz;xyShvFQwQ3*ozzhK0~hFj Uzh|592><{907*qoM6N<$g0S>1PXGV_ diff --git a/interface/web/themes/default-304/icons/x16/blog__exclamation.png b/interface/web/themes/default-304/icons/x16/blog__exclamation.png deleted file mode 100644 index b7a4007c0119fcfc0167047b3073aa6fe244a5fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmV;D0&V??P)|Ar#a_w@PXk1*M%*2VDebXI;ceaS;u;7>gY` zh|(c`Y+4*FBIpu=G;K{yB-P|{N$$g;G$dM~@ASUU^ZbAOpXYgng@pwG1VNYqhS=ZP zbY1s3fMnbDZg6OBZtlT;)VW;l>h4{#EUTMvU6<^vL?GZpRTUJ)3kaBIn?}RLFihs3 zbm-Mcold6@Ac_LPph7GbCLC4)f$i-&<#LTytBvcr^lGGbyWM>_jsw8SYfJq4_MSk% zM@Kyj%h&sAdNq3j^0&{T>l&d@kXo&drm6o2v|6pcsQVGA`kD@3vn@u!Lqh5W3?2i&qy!h29vCwLwR5`RaAdyJ)H}Bf~D7@t0 z_$0HLXFR$)$w>I=@gt+JCBXUzkjv$|_RHlmXHE^E$RdJWVR3Phdp9Et3`T~nR{6B+ z^2!s5MDY21SeBKVnwpx4Mx*Guj;`y(<6|_o9upnX_}TbOdip$a@Dm=d&udiIY}@9A zn9t`a6be)-6&%N5eSMv3wTfXFd|!KuC~V;hU-60+rqA6WApK@AWCmrwdd#voApwDv zl@)bjVgirHLo%7{wp6U$C#E-1#5%|hjp_~R)uo*+9SDtosno9sKo}TSRrRPSifZrt sE?+Qa<0H=K-=9hpuw~gXiferM13ml~_ai0fMF0Q*07*qoM6N<$f{?g51ONa4 diff --git a/interface/web/themes/default-304/icons/x16/blog__minus.png b/interface/web/themes/default-304/icons/x16/blog__minus.png deleted file mode 100644 index e02d945f26b2d2c7448f18c21e701145dda06993..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmV-A0>%A_P)L^c%H-g;Gg+dB3pU*Yv z<#i)I@0`c?;6=$Le0^ZTn_H*w)P4-?u&X)>27?MQo6WQVKdT>6d*{WEPkz+Dz5Qzd zJM5~C{C>YeOs7+A0DnU2&N+O!Z_+;D&jIYPt2**}y$UgzOfVXa4uu_dRYx9=M@Ave_&WiG&6}4+aCIQYjP)1+c@e>d5VOE5vX(M6FgkK)2i7zh{SC)sf5PQiy)P zk4z?md_Ip-sia-2)hb%8*8Y2T*yYBzxk==7Iu)YV>!I0f{+CLnqQMTkd#kGyC3zeU zheC8Z9r%1c{?j!0zFaQjgWZl7W;33fOh~S;BdpWaWn6ehv`ZF?g={t(BY0I_{a>PM zYnW_rAK7+#lS!o0Y20SF3iC#p07DF6Tf07*qo IM6N<$f>Ja9$^ZZW diff --git a/interface/web/themes/default-304/icons/x16/blog__pencil.png b/interface/web/themes/default-304/icons/x16/blog__pencil.png deleted file mode 100644 index ec5a3b2c3a7860c1e29213dc72b5539d8dd5ba35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmV;20(kw2P) zt0pb7HO6SnoC`;Gu^dP@4VxdRY>XlL?|n|4m=xiGAA8@!@Aq&H@5t}>6B7soI(5W0 z=~Ny0d_IN1HW$09qv7FUh1lHO#NgQ-@SWd{@I?dOT|KCC2xFJ_VWej-9(UD&9d=bm zUawanHa0e-^y-2EA8$2b*3+tU98-6i@%r+944vBvcGy)Nc|0D4SYKb41AgQZ$d5bm z{ev6drr&HCzz(~rBe&bF5Y=i`4&W<9uQeilyIEeLb^trkcH zuTLS?*4B{E=l^19X=%&*b&Dm8{(gitEkV7#y$Z3ivVwR#j){p0WV2cMo6F@;EEa$5 zCkExI_!{QMM%Pm!GuiESg;-u*#{B&JKbf9qF>fYb%k-WFo88$_PFxAH9}z@(JRh zGcxu+IEl}h5ZL90Te*xzBbm)+!AFfmB8bIeNTpJEJ2r%If4huF^f;aL$?LGojaqwj z4z#qih=qj(6bgkuyboRhN?#FpcnaC{sN7?RU2cB2WY9TMUte!+XlM|%==002ovPDHLkV1fm1usw{13E2pe=`i?lsim!c4QsP&=*0wo~gNi03olNZ6Ge?WwSH}Rm7gP?0q ziiqMN=+#yWidvBtp&?C-thK-07fKtG2Y zWu??h09^>Nx7j~6HFf_mYS(qI?alQt44Va|6uB!pu~;vrX)rGpHo|XPb}6; zV4i?CH`;nyHTwecvy<4iMLgce=4KtsGXD?oeZQ@E`C)b6;GCA8R*mj?UK=2n%P}@K zMyXWVy{~eanVA_D78bB93&(M2)wDSfLXgd70Z1m30HjhW!Z2ibc(~bfpo3zuNHiM7 zFbsBfcCai9Aq2%@k$a6ttgNiEHCUS-s2_b0h@cbTI8Mj;rIgsV&G#S6Oq@T9`|Ii8 z&u9T5L?^&?-KPCYr9vi?VYYmi59^PN$o|(a}+a z5PV+$%0T)!02|>3XD&_*0YmSey+zOG^Nf#=6OYG{QnI$T){(&}<0M~RFYUh8OgGDq zmsb6rU;~Xs9f-}(&zmD7BXo6jkxHdHGPrZ>766kkF7ZeFMbrbhUCRP>4M+e3rfHsz uL?Y%vzi|7UKP``_L4K=m@>OsXDE$M@c_Hu6tM%#t0000= zgb;BLk`5M&1xml)r_pGjX&PY|GM!Ez_24oe7r=74WV6}ex-JTkcU@PlR4T}_Os!VC zx=6AtGa8K;4u>YN%>V}QR8`d%k|e3OY-1RP+wFGy6PW!0Zbk|_&W$Vp00000NkvXX Hu0mjf66o$n diff --git a/interface/web/themes/default-304/icons/x16/blogs.png b/interface/web/themes/default-304/icons/x16/blogs.png deleted file mode 100644 index 6539158e527133665b5ede174b7a2719c0cfde52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@MA8P)dE{!rg-+Ja0~MKk*&+UR7}W`6uuh_vqwI z@}XYcZWp_+kMQM38|g|D?<#HhKD2RXKab^di9{lybn@TiC+V;20gJ@~u~+H$5PrX3=|spNhb)WOY&J0%3~Xc`7s2}g0000svx7)oTDH$Lk7*P^a6IUiHF~y6RYc-c4COF1G7z}^C&mmXFXdU=+JiL#OA2^cR?Iw@MLtd|! z`17yl4w=}b4xXhy7w~;-Y>X4w>*SF$Ti_K9c-7O0shhhoaZQECx_X72N~N%}vZ7Qjmti)Wg^Y+9%wd+} zTpfPQPUB1P9zIW5Fl}mr%dkx$$K!DX0s-aDOH3w{kP$J1In3e(EO^(~jG6wu>kIfS z7K-ksc-8oDoi!c}rLPo?4<}j;D&_&!!=G?$FpjofKXkr%3@!o(@4Q)P=}+p38O-5d%;j=5 z@vA%G`v%Jba5)W}{`k9|S)kb%N|Q#TA+1&`3WWl!Rx9M6P$`?uDgv$f1={b1u}64v z+s}`u+Mdp%GXXSSolNbz}9V;2Cn0hVQkL% zcz@$G>+9=m1_r}0Ow^G`B+|FIxX5t_&iA!bbbYEsc>Jjur4+^(JkP5EK@j{i@`FqJ zH};nwz69C;&{|WiR%<{#N*IRR%Uam>PHejcDJ8C3p;Rg}df#L8Kr3Bcoj~VSpdQ5- zgOrk!m#1+Ha~NY-esPCN#lskb@B7Tn%@K>mNT<_ODwP^gm$cRZJij$SGP#$A2DuSm zYmIiF5|7MdaS~&C{tleYt!=C8FcA1t;O_AuxFm&z_ zx!Xrr{ya^!Qjvj{NTn1?DYVuU3I$eHR&ZUHAP6WF3aoz1)6f7iTxD`{60iITLPd1P zoAm7LELJ^=)|zxWy=8EY& zn3$L#9*+ai-``L1bDn1N1tY%GC`$~Sy2;|ZqqM}t&hD-q(W@7O{Z>AokM{QVBBdmo z&2DL+)p|vHJfK;Ag@~d2;~MUdCjfMGwk41Kbk7PP6^%wuNGV(YtZ?+quc6MQ?f{Si k-PB}$HClM}dntMS8*0WtJCusMmjD0&07*qoM6N<$f^lj>3jhEB diff --git a/interface/web/themes/default-304/icons/x16/blogs_minus.png b/interface/web/themes/default-304/icons/x16/blogs_minus.png deleted file mode 100644 index 3493ff6075ff5297e7de9365392d3a7c7e018bff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0a;9LMoLk+2TIo0sS`7zSNrgM`j@jU9z@W8mdELAoFv`of|^ zN=!|ZOjaU@r!*o#5EB#;3_<+${GX=i7;O)HeSLZU@8buRqR}YDVlmQno%sFn{i;ly z(JIf<>;ZfYhr^t}8H;ClcJ6?QA`}XV@pz2un+LeLn}qe{5pD;*;?}baZfv~=@9~U` zP9?vUt5&OF?fC&deXAgnDIu7t;Le*0%sX+6Mk53Q0U@JvlOIGrPY)Olhw%A)LPpG; zl3(Aw09{DmExr~0luNn*n@OV5zM#K!}Fe_xgh~M9H_?dc& zABVfhxfc;}TvFs>v4~_csjhs8+wB%IB4#j$S$qHszU(aF=!t210PhtF1yrk5Rj=2B z%jFU>B4#j$Srg*PcrTmHBArenpUA>l93K&1MtZW-}2pn8U0Iu~aId*=$bla~m7b zO(uL;URK3dRuD88e(e*zB4#j$Ke5qh%rzm$D1LU1S7Hgs6)IDNvz{XnkB%v_W1J-Y7!p)dN0A432CmDf5f@`?8YCze-?RJZUg9BU`n#N^o0Q%Q!FgQQs+RJ6M zJf8vQxJE+%RGyHrv9W>PSJU|TB?-@R9PgHsxHq1}Me_%gN+md*P9dTHR(|67qz)(+ zi?G}6LPD&oD!;vd1U_*R3;n0D`1B0kKhk2X_n4xbNF#&x) zrw+U8EBFz#VRO-n6;l&D#^Z`|G#W)95KvYgVltV8N3SPh4c1{T9>4~x=4PyooL2{M zE)t0#l}ah>27`z-Hhx{zXl@g0unudL6>H&KC=|ld(h~fBKl}~{Fg%P|jV44=g%MmR zpHaaf3o@BZm2yzt8V!%Z<#M4=D4?^gEjUKhP6Go2jL2rQsv@(ux2Nto=byD@00000NkvXXu0mjfjOHq_ diff --git a/interface/web/themes/default-304/icons/x16/blogs_plus.png b/interface/web/themes/default-304/icons/x16/blogs_plus.png deleted file mode 100644 index c48266531c9bc63a4fe110743247ff2044966bb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmV-{0)G98P)Qd5(SY^+2QuX0f>1TjGoK@eoW-sg~#HChM091ri~;|Gr9^ZCf{_fsGcApZR8 zc|aysX@Fh7UycWbkTLk(C3pna}k3)Cj*nMLf ze8w{}T9N!jUW<#17`z+An-3Xy<0(wVGdT7rgYMA~8jS{AE|-wef0IYNZ(9rM^*S65 zhma9-Tja@8YY-4>yt=X#Ggr6a`2`Ig4yqJ#I-N$fT2-pmYOq?ZLPo?4<}k~BW-Wev zn!}gqI6lwVFlXt6*SJw3CzDA;A`#`zODqZIy2ph&W=jgUNz3+QJ_^vd*X^P~f z(dl%GfY~d>XFNkUJ3emzx)*e-BS|(j$p!p<>eOg7r?pzG_*Xnb$5lQWRwe1ux(T|x bURm%HkE@T!fxhN>00000NkvXXu0mjf-f diff --git a/interface/web/themes/default-304/icons/x16/blogs_stack.png b/interface/web/themes/default-304/icons/x16/blogs_stack.png deleted file mode 100644 index e568c075960498a04a959ab861b4a3e0d6771675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmV++0^a?JP)Ox!v(n1jN4^a>Vk+<_+LhcNgrapMM=UmQtpYuvOot8`{Bd5L|jXDDl z&z`<$kW3~O&KRE2h^0A|N*%P@Z6x+?BKzVt3Zc6Ohp#+HJh_3@YK3?_t~B!B=G3!W zST2`{Mx#n2mgep7As$A*;PHOh!1wMe?u0%X=ER;Gi^T%ra9C-C)_*eZy!~vL8;u6$ z^EraSpwfu22m3Jn{k?O@s!RCx^fHciui(?84ScwN!7%exG#3g5%w{tL0s*BFVGs6U z`u_HL41ONt*Y^q7Jj_Gwhl0x zbGaNwqY->QpVEl12m3I6I-Oc#HpgNy3*$WpoK@s1=I^zdkTwKr3;7$2-cp#5DbXH%63r74av-aI{^$Gxc-SY9gTVkb9I{@oD~q+(JiRPMNw90+ zy(iCe=JR=_LBHPz@2d^)9w7w1UhklIu~@LlaWZDmaL$2qNGVCv^uRz$$tEXG(6H8m zwE)=dy&u-vdIBK?JJTtn)Sdk&fvX_^q6DSxY}7#gogm(VDhNUdQG!x0TF6$Y5CTF7 z0A1`s2w^kth=KPWY~JAelkhf00qqb%2RQcLqol+bQ@M#!NtkDEe*q*E!ej>L)Aj%W002ovPDHLkV1nevsxJTl diff --git a/interface/web/themes/default-304/icons/x16/book__arrow.png b/interface/web/themes/default-304/icons/x16/book__arrow.png deleted file mode 100644 index 6a66b4ef022ad0f20489a7280eead9b3b9c9db8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmV+n0`vWeP)VeDJ>>aVu)#kPCEMsH*qWN;G~WnbarwrIyh9YXsHMyx=C>m zk>DWcpd=w82rVcMg+S7#N$!tBnjf)EDENirj>mi7_c`7ZN-6er3&_|j57Qj23UC)d z4FogKH#Y7>g8&_k64yFB<6~pQV==VW=pdjtKYz1dq^z}}!Hbm@n7aXVfad7-dlxPO zj}8*Zd_IpV7U_1oBa4F|;AQED2nhxaoO5(K9jevpNP}E12hNQ)z&V5vWV6{r#kE?E zUXGQ+3?kNAuofvLjYi{;fs~S7&TxW=F$RnQ!0g`#WsEtRKnTIWbV7x3YyOX*9-pAz zPB1YuGZhH}y6yIG0$?b?juR|gp5*tRQ|VYDx!7tp*9Q&MFoLa)rsX04Z2m0sA*Hy! zFnetE*|#O{+&=`WPvE@|3FPDnuAZOfdjqD;S-QZ-ZMbx;F!%aNX-RqS5kde2{XOvB z_vQ`Mzt(vCsnYwxUW=)7MN)+f>kr<17E<0m+dDPS2WkXqavwZEus%lw5o-Dfk<0L zfzZMhQGqTclY*isT8y+9htZk)(!!p>ml-;6xrfU+|MNSCbA?ihe|8%fb{8L?l_V+WTti@SVF4!RfEuvfy8O<} zdEm)m0y!};fhrcM*Xu2lwbnd;`$aSe_6vCLsnu$1Y;3d?7#|-8?^_GtJwgb^#>S2$ zZ*Fd~7vp3zfs}I&oI^@Uxm-RXAf;q4ra3{%S_{?!VE^5TjhYvnDZHkfx&mG_2;^Y` z=Nv)^65lxozDiE7F+FvYPTrG|RfV(Q>_Gu*ZKHDHTWiV5cMSFw=suodptp~6L+jmH zRUxY?&1V3R?1#Y7uih{+IL++!MIJqvWct)f@7)W}6kzugsAdG+sWl2+X^bebw6uh; zeq$sbw_C?l-5#8QN_q|<;GDxd$3SX@f&LDD{aNMJ%Xvz>pU9tRi>>8qy^fF}gvOG2 z@A2LfLcn`Zr(7r3ULuqJOe9NOx_qBlmFex;*4ku?)^b(?aR{L&gwXE2M@oq?hA4^{ z*2|0zR>{cUWOaqg)*Z6CLRN2+D;yiytuZHnP9P6F1WuE`_B}zmG4o+)sAnra@*kAl g>1Zqe{Q85{zf;%pn#=u?*8l(j07*qoM6N<$f{bMkq5uE@ diff --git a/interface/web/themes/default-304/icons/x16/book__minus.png b/interface/web/themes/default-304/icons/x16/book__minus.png deleted file mode 100644 index 305ca0c1d054913a99db87b080e5cd88479c4d4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw{7P)4e-7>1vjoxM!XsEq`Im4R>^CtQ(2uoJYf)+Q+|qkq66RY)x<1tX$o8X@=tf}oX! zg(*_#`U$K7 zn33ZAhn=10l{m&$Dpak_*OlpMs#8-~Yq4=mb7|@6&}6*#dBFDOCM>Q1DR5eT{Q3O{ z!0U?yy3uH0noauseyKT*V?KU8R5`(DKnQ^}O=-8=r2+MN9YQD%AOw_B)M~X$=1!-> zpvUWR0g?9}yhm$Iuh+X2ptWYuGoB!F&Vh3PxNN^D=iFohr4%F6$(7f=`%eNtAb8yU zJe~j;OOV&S(`!H8QTuaL2ry*?x3^z#y}OTy5JeFiNpg4Y?Bu(^ZXsYuAR+|<-QDNO zy*r~I*MPsv1eN~N03wrz9wX+~5Cf&yA=JkMita_qa;Az+td<)kWvbiLP|-YP*^4)rDU;2i?J7jY|3SjK>^?Q@qHhFavbz> zeosEVc6TmwPeEK(6DXw+LQsx_E`*>sKg-I{*Y(k4vU?8BS=9stCRJOLJwfhMnEQ{1 zV+Y#WE+mXe{gVJ#Hobx8Yz>Vu)c>B1T}RW;ipA>+#)AY_ErKTNB~d*>&yhHnh99xI zc}xD|k6jZF!@rhX!75+D7*io>vL|TeHa*>O2Ck%-TXm95?sJ|sQ64O0k;a(HlWDEd zT4RhsYfZS6WwRKe_i&tnt0_KM$M|mV0N)ES{|@u!CK8AkV;YSy^;&DBl(?>o<2bDQ z`Go%78(h3L&P?P4Uj1IAl$eErW74CIKtuoyKnpMcY^UXTwzAapt*%4y4c}hPZkx&G koBw{6H=E|m_<3OZH%n9*dSuGemjD0&07*qoM6N<$g1EI0PXGV_ diff --git a/interface/web/themes/default-304/icons/x16/book__plus.png b/interface/web/themes/default-304/icons/x16/book__plus.png deleted file mode 100644 index 23260e555dfa870ac67454af67a0295bf74cb70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 494 zcmV1vjolPb&9%>=N6>@1p2)IQ`3sF?iQbEW+pcWQ3)`I_o!W~zn5kW*Ot~e~T zu@KbaKrXCA#OuTuyh}KAcYauGvLts|4t!yl;bY!+p5gn1Qi_T00(E=s@d`(48+Zty zW{UM^o0|_xVTdl3sA`?BW0eZkav7~PIt+6%9S1+(Wcy)s17)a*=R1v{@{e)k#52l2z6Kn3&Y`44Yd!b(^V|nuV|o=ULBuQA-CD6P+wkPba47dPDel(l6!{JpaO);esRby6bzfz%E zE@O-Bo4X9tfvpMRNT8E~|2pgWxo-NQOXQAEROnsWb;t?s`7 zBEn*^U^E&<0qu4hC&U3Ff>MfBtF;jxkH?5e6tL%=O|Om}^z dH_v35v0ofZ#U`f>tnuW|QXF!zto zGHL)6IcM@}Mb~xPu&!%ZXC2)^L@eALcSlvJstQ#dZ1N%Cn8Cu#zzh+g?|Vc9GlT3W zQvl@#01OW|-F@63BDR2tz;-&>CK;T%J1K&)EQg_#hzR)pN>dCz+O}QBt9%}woxbl! e^8f$BY``zlyl?dXGP4H&0000HGd5HcdlH85u}gxjXJojFGyoi812tSjr1=WoDQeAq0kDAcTOKVV(!5 zz5&2d|M0vM4gg6*NxQD=UWQY>O=l;O?Nkf@{}&bm ZJ^`MiblaIn!QlV^002ovPDHLkV1oKjbkYC- diff --git a/interface/web/themes/default-304/icons/x16/bookmark.png b/interface/web/themes/default-304/icons/x16/bookmark.png deleted file mode 100644 index 6bb98fd547de0e794569a7760eff1ab1b9698ee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 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 N002ovPDHLkV1hSuBOm|( diff --git a/interface/web/themes/default-304/icons/x16/bookmark__plus.png b/interface/web/themes/default-304/icons/x16/bookmark__plus.png deleted file mode 100644 index 51978f1886356dbb3a0fc75596c18ed59f7b5ead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmV-Q0=4~#P)3_lj1h>LSyWJq7C|U2igr2U)S^Y3h=LZ%Og83djz8#tAxMU}GFlZ3=|X5> z^hbYUv@ocM=w?t92vMX&iy$bqw3M&+JV zl)s&qBbT6@JTTsKvZ~6aVlgLCC(5ss=7sj1D+I1>1O|$MzM@5fax!QQ4K@*p*km;7 zBe(a0m-%eX*?($*Jd$bTq)QRSgJ@3HD!)t*{g?{+!QCo^~ zT;vrZq=yUw!|FtJ2sjwkD<4_|TqsDPr@$AbV`Y|^yPRV+;nQNv0PsvCfD>GAB77;V zCwu_p<9zujP)UquE0Vm^>_}=mKip(_;)&Q z@BC_}MgYh+$!`G*RavtgJFp`=sb*NyrtN8gENh`wgH7Ah06Er17~)o~!jQ+F1laOn zA{_()uAT=&Y~SKxm#T&M)m{P< z)hNyoo6{#MiGVRLj96cFXbn_LL?kf~@j_k1nl(hqL?jjP2mit+-2un?dLU9a8~p$P N002ovPDHLkV1mzpa18(e diff --git a/interface/web/themes/default-304/icons/x16/bookmark_book.png b/interface/web/themes/default-304/icons/x16/bookmark_book.png deleted file mode 100644 index cf55d2049bf20b453fd93ac9a1c567616c3c73da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmV+j0{8uiP)058?Cr6-vO=EcD909D0QF%eV*FM_Gk z>-82zTU%S8`hNkg3}`eO0QCEPR24M&WdR|jgla;If>ac^7*S1(Mx$8=?@1{^S}q78 zf@!u8SSb*ZMUjYHEwH3mQJ_VE#fT+k{!-4lQXp3elu+JwfaQYpTj2i^m=c_$Ew>2H zVKx)Y6{WzF1d?15L=gcqo=i6w)arZ~ex_wVmI#)Q5K~GV%d8;)2Z@S2G@S(>9;TC8TkeFK_GZ$&Kk%70000< KMNUMnLSTYVw&^wi diff --git a/interface/web/themes/default-304/icons/x16/bookmark_book_arrow.png b/interface/web/themes/default-304/icons/x16/bookmark_book_arrow.png deleted file mode 100644 index 7d0f980a044234e1c3ea1370328381dad4fd9d5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmV-z0+RiSP)SjwsL6;yf!dq9#L$FXCI}~{9)K%)xK_Rh7f{40> zL_~y_4jLgYDE)yAyoeyXuDZRM-*j+&X_@sq4a0Xnzt8-JQCe$ibpr_P;DavyT?OC{ zfZnwkKAoPv-8nTys#wJLJbd5B%Vh9JMo8AzlSm{;1Od6Bq3b(`w6!({JR2KhAbpx^ z7rG&eAP5*=(Y%?Q-`jp`;36>oyMdR@W?|JqwTj!^L^U*k`1JMl#i1Ywcs}!4#Rj_p zB7zga8G{&uXADk+LZJ|cdV708kir*G^pVnNxa`N!R)cj2+f>J8J&WC(HfA*ty zhSt_rnwpv@l}ePtJ_gT+ER|vX*DUEs!pq5-S?!#o1_?xj+^HOuN(B)il}fQ(_`<`v zB>*a0o3x+Hk?s$9a{tw=^1OQ*NIK_IK%Y}LYL(5{89B9K5^ z^#g@kw1^4}S{RZQ6iQK~6pX{D@7{A;G!804o#o-&&-cUO9#3mcrLF@xd+ts*|E^`= zCV<}4%-vsD7|+hk5UsA_D~0d-sC*uOVuECCEnyfE1_6bUk+I!J+FDx$%uY=)oIc65 zp&p212m+>mYM$L)+8@6)d={8KXrKlL24KU%_BO6u#!DnXeER$Qt3yE$@ZiNKuWGOt zAR;&soH2+oC}VIUEH5uthx+>ZK;-`bUImcP=K)w*SwTcVtU3(fTWb-qNE~D17*A_N zEX88+Z-P=-Yr!6F;2UFb5>yRb#lRRtZ}^Z?nWq%}iy&UrKpix2R&a5Q#4#?8aaKUe zq=GjL4UW>pD-x=#u?DQ!4=|NPzp`x~a3ZACOS;-Kv@|5>Y-{IC_FYS)OGLVKh=CJ) z&tuB8;Cmh(h7SFlo~~X-uFTS%?qKNHQrrC4q@Ev}+y~Ic7;ui!oh*;qPB6NYCD-tQ zOmi)vx6a($98&&5PdZs|EQ7JxzXNTpypNBDUR`!bFTWyM1(@2KomuY2-$`;@|}i6?MG_VI_EFkBB_hCHE#w%7!{1+ zv;vaOxmM>~y@;TcA`C-nYHG*@3-orCNvQ8cL5b4F4Wgh#6l{{p9O>EK;hG0D0cqei zaGdnz)m^2l!>_a1){W%BTMo3@YOE`M{k+EFA9Gn6crAxI=?#v~3!>TEKS*_xVVUrY#q!8=^v9MK}Sl9^a7Z73Tti;&%sCdhS+W`uryS1t&ySfi#yLm6?gHg-<iv>w3-$(x z2r7blk9beyJt{(@(P$U-_xFRy{{@&lpi-#-u(-I0h=7D>zW^ITKqMepM#wUZbBF|5 zt=7&7QA7vA#8zVEXc$+D|v5ROufN=R3t)kH-^8;dqZP;~bX2--=zRu+K^t>{8xL{QXb zkf5lR8KfY{*oDa=oYINWynN@pr-kD%T2Sxqyu9c6J?}Zn_kHqp9;mSg+GG5?27p!o zzo=Q$olIV+?&@N3I*q3_p68+CalDHcDP6RPNF+ie2xx3>J~wyCx7HQ_4>~&7TeX$5 zyK5l~AqeQq_&mGaKR?Y&p@D8_Xn-FMrl)a}lc;DE#G}5xzAzL70S{jfse(Z< zKtymNIAaiF(8l0I7#J8R4As@ufyn;>R2~qI#{n1|97IGwtOhv!J~3|#(fjKLTKfH8)h+0=^dqeG7@B=kZ9 zX9X9ANEqV65N8EzE!J9;QcV3EVTt!+RjjqODFc`MzZrP>*Y==b08kP1F*+RO@$*|7 z_t(~5X?8C8r-2hZrRXrL@RY*2S%c;DvcbDgN6San?KqNpGc|SFLQk=QZ;S!wI5ksE zy0V6MnGZC&F;>t^Ou9IJIKj1B&nREBKKuFCw!Wv)>3P54TWh%+siCs6l8W+jGSMin z#$U3BdmL{{&~`mZX6YG*M!#fP7URiy8s9mGQVJjt5gIo)GBGiMh)@yDvSsBfP8`}z z+l?fj{G-@l3z&}{6T`SvHyS8)&aHONm5B&iYa)>dB_$=SoP0sci91}q*~7QelgyOu zLTim1&y~1T_iCV20n33ZpbgkW)vmP}KOJ~>Q3jLXp6yJL;17Cjw X(hEx83q>`%00000NkvXXu0mjfY{fiE diff --git a/interface/web/themes/default-304/icons/x16/bookmark_book_plus.png b/interface/web/themes/default-304/icons/x16/bookmark_book_plus.png deleted file mode 100644 index d1eae3554b9cb70fc1b7b54227504180154b8b1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 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 LNkvXXu0mjf`CwJ^ diff --git a/interface/web/themes/default-304/icons/x16/bookmark_folder_exclamation.png b/interface/web/themes/default-304/icons/x16/bookmark_folder_exclamation.png deleted file mode 100644 index 4c87cd3ea355dbcf5da0ef85f6d8ab5319de501c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 754 zcmVJE-yRM?7X}hGk-te;eZ_eb1fe(G~o8Nclod01M)|<~W!gTL1KR8Y) zpk9NL-hb6_X9d(`s-+xTv*5Hq@^>drkMwjvp#YicUKKC@R%zEdZGJFC7V0yr3yi{J zg;dN`!Q$@;$mLj0OcYJ^_&_Q~4B@cNs0E)xM+yI|r+{Y!>$$^A$YHI(sNX&;r=-9Z zA1`|J_+FSAeK2LtML<9RtRtDwzTjIwt2sLX#yazO3B}U*D-0j=z*15Y7Gq*W_l9go zzxD*I!)aiQVblF&=hYGsZ=>aUEnZTc8d*^ z-exNH=>{*6J7ZFzeZLEA5fPXR2@y@TwJR6YGuB?h@6J5TEiQuQt1^V2*l?Yf$e-%D z3$5o?ATshFkLzxNdfnA=qAin?pn1x%Iyo<)vUcX6e%EFZUEI;t`>(ciP_N_d1<@vp z1vF1NmL15m+7yw(30)RmyE~%0AP^R=T8Ytozw4p&i9<~d?W)P1OVtilKuwP(2b{G zN5V;F#pGc}K+#kC6ByKTcC0vfYArEBsl?m!e?118v-;lvR{)CCsiZ_@)xPWh{CDRJ z%*>D)4Z^&6%>85I+UbW2PJfuF^4;p^T6IcrG{Jb`{)3uf5y?psE|Ez{&YSTUY+paz zoxg6V43sa8j#4Of0WKjI$?S*ZqHleLOaI>Q7zliP{c5W5k#_}*7wU14%rH+RGu({O z$+w=_-ThQ5@nm$@#j$hgWc_8L7m&LQQ`>>e$gG{aV%L5akdtpY5O{VQ3R4fjx&ZI2 zU=lKG_vSgRMiUdcC;BQ|!c1lk9px?~%6|exIc^bBBDNya)t4+>vul$l4kjRzprbs+ zh{?%AU{0w-9s(xEV+42JRbTO2c`1Y2E)GcyO3>?|a5JKeJOmy+y+2B1sWRBt`bu7GY`+&yHVqCTfAEg+7-vbYTwz8!EWOz=jG#7xv&1E~nLM z;d0);|4P$B-$X5t0sSYgYRRWB%+ErgRFwW#SqRkYb+QmRc4NV{o0D8WaaH{R7y!yg qw&#a_U&=~;A*$2VMsDaVF!c>1v5Nkla zlO5>f9bvBUVh#TOr>6y>tzQt%u^ks&mB{~mNEm}&4`{WZq?x|U^yv2)>MtEJp{NKZ zL3qWilDthJmQAonhXNW6HuLg$^4V$RI6ju(X=^cDE*HXmd@33l3ul(wqKpQMEtri8 z!Dc}LJUKZ$`8?N*`AIDX+JoWxo{zYQ13gNmGVlSD&Ul3=qup>k#@EPG*iftC&dlUV z^G}Ng{p~?qZmSPKhfZwDiS}a8BLv3G22n=mu|L90L@+$LxmZg}<7tUKhJNEoE*oq8 zF#Wa=)RjFpTqers*JmGM>ih|~v$C*~l!SRzEPAxwTk?Hh*!pro9qP&+8!8oLN>{%$ z;C)yC*3;9m6d#Yij1XYSiq@Lru=c9p`c#jl={ivNb&0rVpjf(~UwUj)wlY(Pv9o?y zOHPI}HWtz^f+5lyqg~lp{!jy_?H;DO)R;8I^+|mdd93%QC{w;{tH#I~UwBedu$qv- zljg;D<)EFl^E!TwS76oc2KC8fFN;K(%HNhd7z#ZKq^ACp4)ZP0ZsJ)sPrK6z>XXO1 zHKI)Q;V|az>Qs@-C%Pf&%ll)P@g#n=Zle)IrX`zKqZ3bMp5s63)+6_?@ zMwU0J` z2msJOmEHq(uom-or^CAd+cpk<2J8lEq;!-Or|4=t2n=g8uRJmN{!U_qN`=2ZJ^35Z z1lZWp#DSOJ+ZNlRDU{X# zE+H4m?4IOe^noqZX0HNJ?%TkvZ?0UwNmwLME7av6nPHwtX1E!lQ-8esRREs-?n9Qe zL}+^GDYCJ$2y_E-mtkrfya? zdVLSo!+UAOh+8BnB8jBPk@};U+RL-!UpaI2K+{66%Naj&h=H*YTw-8sgz+fnzg|eEa=n&Yw7|{s0UB s)v1a6ovlMW$^VFj8`P&~^a*hNA3&p|3cOV07*qoM6N<$f@)z!ng9R* diff --git a/interface/web/themes/default-304/icons/x16/books.png b/interface/web/themes/default-304/icons/x16/books.png deleted file mode 100644 index d7d6eac82d857fb8d0291973006c0efd02281f08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmVU28DOBc~vSCW-deE$BPG);-3XaX>1 z1~6x>#bz1(e!l`pk_2Z=fNQP6mH<;KLI_%|R!Gj3oiUTjFg4IK0GR`#C?ZYM0LYb{ z(X$4nBS@_^6gLz?YaI-{_qoB`kp@Ar5Yt;nDFuKK0zdkv7;XlDI?3SYw;z9AZf}1L zi{pbKfA^XJkQ)TW{CS7D`@;UK+ocALr1yRiIAyIx3PG(_tF%!FfzQSc7?od{1Qvi{ ouh(1To!dM1^NtUOz}Yh3Kky>;^V=TrQ~&?~07*qoM6N<$f}VxnR{#J2 diff --git a/interface/web/themes/default-304/icons/x16/books__arrow.png b/interface/web/themes/default-304/icons/x16/books__arrow.png deleted file mode 100644 index 219ae0bf37a37d4a27737c6edf893a51d0968192..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmV-i0;BzjP)A#8=id2n)G{eS{K#R(Tgh0q$O>jBfrzwfBN4Qzc0~};sy`qQ34$St7PT;l zprsHI(U%JeTsZ1PK}Kd|O=vmSbIv_2^j>D1q!-@BS^S>&d0#lfwr&1V7l4!=yw%0_ zH3M9)O8fnnuqMXgnmhK6DT%Wlh*|9Nv9= zPN`JFvaAh&QdNM6)*9`3%+1Z!09@C_S1N={DM4=mY*GlfwJ{ks4P+I- z4gi*AQ7V-}K%nd^$=65|USkWwFNZ5w0YFMwrMUI&E5+)%;nYwki{%J=(&@GqcVDeR zsJK~Qbdpa?ibglf`$B;iZ*5Kvr}?t5*cokTJRJZWDJ4`MDL77hJA=nNm|uZa1rm6@ z48v!0^^fm7yBY!l17l2;L1}uHdsDM4|M<1~N2w3lf&SjsY>NA%Po|Bxa?>)#>@>zC zwblqBh{a+!juUpawVqtMiSLuIrXs#EzxSqiIyyeJw&vY1hPwjj1oA*HZD$s?{k-en q=IzXZsMx(fErb}0C6f>05yf9h`VBSPe^$2u0000Nkly9hLb%E#m*=XSquZVQ|1jAL}*z}cMN`JHn#UDw$l27nfI{AP@Q z#{_V-q&wer3GwO%K+C<6k->n^N6<8>3I@HbG)>GvfX=?Y3jiemcS{1b?;?y}Z@HgN z!>;o{4wx?=pF4UCxTO~>12MvFu>W%Rgc(KqX5;4b0BjA1=;@3DU>F7uUs_tR!8+xh zGUeW(G?|P8Kr)#GrB(q-DS-bff3c%(!@&dRSQ)#^_utDPof3dv00<$-X0skZ2*GCgoc4GtwV?p9hDN?jje9GI0>E(` zZ~sE=I1WO~Q_nLxk||D~c|bhcOhk;LyS9#W)&Nq<)#Ct#T1rX8|DO69ol0Y#;o)Jh zr>LuP*b~Xrx|4T2fU%K*bR3#|FKCE__&WcZCyxi2u|HB>y(mw#zX=+-=~fR=nCQB$ zH@$`r)K|}8`Yn87hTfCc2SZ~wV)Wk8GTuIttSo0L-Mnug!+_YN4VcuFF= zf+^;}$g?~<#M0~|0HV#I#=Q$mr!=4mNCO=-_D>i8|Ll?RSaaQM5WuLAxp39OluyTA c`w(yc0NWA+@c7tPn*aa+07*qoM6N<$g1e6{pa1{> diff --git a/interface/web/themes/default-304/icons/x16/books__minus.png b/interface/web/themes/default-304/icons/x16/books__minus.png deleted file mode 100644 index 6da011f424f8429e30086d7316c949d6c92fc30b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmV+y0_gpTP)Iuh#Dg5(EqH~-!bBlpA%cj7V0B=t7D7ZwArkx#L<`}RD~^Do zVrvnwun4HA2o@KP1C=O=5%jjOxOHZBEbeyMy*2uSX@>dUy!mEE*tX4Iav3P;(|4!Y zJ}uy8sydv#iuL+7K);J?aWgCet)3Y|^|r4)qPN*Y+zY8CtNA*7Ud2k&UzIah=3{=vK$G;thQZ#J6~JP*HY`+0wVUk4^1LbnD) ZkUy(3@eT_)bmjm6002ovPDHLkV1o1-@5}%I diff --git a/interface/web/themes/default-304/icons/x16/books__pencil.png b/interface/web/themes/default-304/icons/x16/books__pencil.png deleted file mode 100644 index f1a57ed572464c740de1f1965a2abbe0b1d51733..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)jk;(=2gK+lsp;qliCX+#F;ojsB zA(gUVTvb)5w-X}3RVDn+=SG_Y{k=Pp`R2m@V{KSj((vM7{%-9J;&!`T+sIWV{O%sS zg$v#i5$-s@4b9yHAjPNRWYtEkVA^W6Y8%b|XBw*CkDJ%`h_LhIn)#yb#yPUV{F1D# z8YYD3Wx1v7yw^K-RMcFA2!=y5m$353BDK&}1Tm{xncJY+6-A3yE!#x|k+pJF3H}2{ zWKdv1W<+SyM1e)94LU{(ujib5TIgKnI!P~li?ev2@8N?Z9LM1wxddd)>3d!5odw`# zq8$xfLB6>Ika;paeLYoQPullsN~hy#^nLtPioUV2ivS6L-Iv82y9~3pGn3=v(0>8g z1lDWUZ=O5_Janp+fiBu|Fm!cr!S6(@gxDwoV1HXP!+i$+wZAf=>S zF2{h1a-OKaH0%>CIvG^~F;e6IKC$H(tK03gI$X{~Ls);1Vp5JKR29z|zFTL<`TN?|XjUt<@#oh08yeKWiK@ha;ff<1fwI3sfQ- RBz*t?002ovPDHLkV1grH{xbjo diff --git a/interface/web/themes/default-304/icons/x16/books_brown.png b/interface/web/themes/default-304/icons/x16/books_brown.png deleted file mode 100644 index 4fb21ae301fa956332994c0cd6f44348dc8b5d62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 508 zcmVFL3n-2acEb-uLs|17A+LuFH}<0;VQr04vB-Lg)$SA#EHxpSA{aEOSYg_MC)uh+S;wT{+0Q}#TM_iv90 z!w|=D5RsX|zdJc&43o)(e!rgq_`Z*bP2gJVj6qIB5D}D8)M~Y)JX5xaL@g0vs?z{B z1~`sG7={U8rkpmIE*Q94>(qt$M9PtYwb7aZ#0IhAd_)9e96ZkhKq;ZJEg=Da&FY zm1N64qyTg08(q67D8A`DI{Q;X6zM4%&Xx?Qg7xG7}8o- o3x&c6XS&k!=MBtt;5EAZ4MQ*Zp4B+^K>z>%07*qoM6N<$g3zJHdH?_b diff --git a/interface/web/themes/default-304/icons/x16/box.png b/interface/web/themes/default-304/icons/x16/box.png deleted file mode 100644 index b1adc112204c49811fa193701028d80806a91f87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463 zcmV;=0WkiFP)*3gZjzKjl7{?AtI6blDETvTKuU%&HtmmLYN46@O;$(< z`LC3W%MQ}cU(e@P&w9AnvU=_L^*o>Vb6AZL5&I9eS1p0GUoGinLke@AW?4=B3|lm4 z*>05t$!9&O&hU|mz5-+1^?W@&Ew*tuEBCR%77bdqRUxtMN-5`Yy6_N#&x29!)U4wn z;H=!o23s^}*{1v@GlX{fUc$!{q&OHYqm#)R4rlc@((*y&;qK zN3?V?Tg%~W(PxmSBb%SEYz9JumaUbFFcsPxrVsxBz59$5Tg}R?S98Sg7pR|Miv}(8l!#z`S?Q!(M`Hvc^;Hd9G-#Q-SOoj? zQhVfA{|mNg&@xAn23(KsR=Tv-MFm?lXql}*1Iu^LCOWt1qk=6Ov@9iFVB@)hA8);} zH$(+nG-&Zj(xnS?gIPi#7HH7o1#z+jSz?S5c>CYK^EcFkLIS`gpSu76002ovPDHLk FV1hos)zJU| diff --git a/interface/web/themes/default-304/icons/x16/box__arrow.png b/interface/web/themes/default-304/icons/x16/box__arrow.png deleted file mode 100644 index fda5bd79f5bae6d4bdb5d671ce14a1ec5ff77013..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmV-c0;&CpP)Ou;N>Y}2qB7%wtVq3(JxseSUY^Afbkws{k6s%fCrpvi$ z)45VXQr4pUlVz9;T^ZG~!6?*%Mnro3be=<7EBgl>`0Rao-{1Fem;fODhv>6NB=uV) zo6MEw*`sdDmVL)rHf%-j0f}-(D%Q2k4AtPv;1$L5rXsw#=~Qr^KIaT)*{~J&_DkY^ zzO-xn`rbzz_&nfNL_Jm|B<|DaoZ&1Rw&Je*BP&exoJr0+xrVd>w+X|w1q$x7?>Nhb ztq7YnRP(yER2dFe>JTX2g8qv}#2V}h?!C56XfNBT?8h1l!G^8q%F|F?s_z2cN2)Lt zuEb+!Rn7VTosa_Y@uoay~4b{KvJcW3$B;)57WZ!X?4O`Kkt08}~ z;{;wdAIV^py=LPq8@3{3&`=<8>v-m0|DBWm2+Y11f~_~ehOKDcr>5X|=op^)5C4&& zb_kvcAlEYtrz8Kdy~r*^qh3vIuUd{`)N7l?;SNFT>QSse)PTH>1TMb?ww8B)T3Zz} ziIt00;_7ZygkSI?P&|t^6vz1_U>O4pqu-Urft<33Q6WFetQ%FnbK6yezp~9-@?mvB z-83!FyEMJIDFOWmu;QTaPuDyExX#yCTfepc_GngV#azAD kGe=h+l~>a|UA1!l6_;Qv_a@wBi2wiq07*qoM6N<$g8Hf=r~m)} diff --git a/interface/web/themes/default-304/icons/x16/box__exclamation.png b/interface/web/themes/default-304/icons/x16/box__exclamation.png deleted file mode 100644 index 80aea4361631655592ac194eb9243ccd2d3d4b82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmV;60(AX}P);DwWZOW#m3ubFRfga|(_!*XYY`p)5J%vVQ)>QyqVEDVlh9A4#0e2k`#EVFBvX zXOty}TxKs96RqPetr)sp3Qzk{0qQl%&9K(z3%y@g4RXk3-DP6pVSMlw zrX5!hvo~R?y8&uN&R=|gc@a}RjfnMKMtnd8a>!*}rDCFOqU!=eohMUdE(ln5!TVyZ zP$^3exy)K3CbZG#=MXd;PeD?u8f)OSZN#rwn^2>+Ga!dtW|E5ueZ+h=_0==+7z^>$ zU4q{U3nFegLbm-Nhg@dZCn7q-raJhvRsY}^Mob&R+bLOBsYj!5Q9y8HJmVD81B`5$V&LBtC3qG134002ovPDHLkV1jV>E%pEa diff --git a/interface/web/themes/default-304/icons/x16/box__minus.png b/interface/web/themes/default-304/icons/x16/box__minus.png deleted file mode 100644 index a8fae8526f8158e96620e31ca233e9a368dd5b96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 518 zcmV+h0{Q)kP)_}STo~fQkR(awWa>B0v9z|aDxS6i zPSgXe$KOw**NFg*!uD^mlhXk zMiE|w!C)}g?S8*cU<`q^l){jqVsnDLi8eVoAxV-m$2FNuihZS0L3~bNGKEZWB7&+G z0?_OA3OySW5i-SPO1=P2Bo9o{?RF87LeD}($&~y7WqA{=suY?31yvzaZ|$DPWjXl; z5&0w26yIKbARUeh+Zclx>878s<(_}^JiSfTT1yy)eQ&0Eqt~!leo+1Eq>7 zsW!!#uL)$zJmW4KwxYj8p;cqHT;I&oM*N60sK(nW@c!lr73b7*?r@h4ThV7w#DfFM zwkelxhzs8b9jXzhQ4NW6>N$6~%Z9D!P2Q5s@rUQ5Gs9PrGU(WcXV=PAoHNh3%Z9B8 z?blM{yBo*U<&eDqUdu)d)EDDL>me2A7SjfFTJzNTmB$P=Y(>{zEj7i%b@kjqCpK`R+Ny?p0yByBhKSTCfS{YJ>ESwKKq8Sq z#o7fEZXxnSyIw>7sgC1#={`KC5w{NaT`Q1?Sy5%oNA=cu-JUg42+uAJ1>X89@w~+} ztKrrH^g5TTvG?K(m(=wtT_-q@1M1+3aPq9zQ4Hu*yhTq0nWW q=lpK}dEwwr88~T>o5~AkU-$+5=^pD6ztp?{0000u4^P)Lh zxoOQnGL})PNJ7Qvo!%^xB4^Z!D6fB=-$NUx(h558+4Jl?|L@^2CIIArNPneH`aq@b zHZ`RfYwb}h>ltU+u$8`TIyvro7ly}g`S5k9MR|N~7hayd(p914aXXa5vnf2!0~e25A0C5_q&&&t8SIrKWg)U4O{7{(5N-pe+*;2jYz~A zFxumV;adEYcb5)f^zvaOt{g$KuL*3}N_V+NXWn)n#Pi6Wv|k@!J>x7Jw$imxqu|KJ z19;kAlg7xpT5*;QTj|`OQRvl${pnwQGG&oMl;7O=@Le5qPRwPP(BfhM-nAcp_65H9MD{VuQSyVIa{Ty%RH!65j1giVSuDBK>-*A(V`sgz-2D)1gU=++`f=`XmknDnnW2iQOf}il zdV8J=|K@5Xm&GJQ;;bL%4tLqG7312QrocO0w(0xY1l?S18oo8>NSp)DahDBSVNX}6 z@o)bVxoj`L32R{jW@}Qh)SfSKZZpTjR-7c~UtI-Y!&Z#kQ>eu|^9BcFmDsnJV{fDc z7SrV*yB}X+?^7xEKUcu(s0JIhVmMWyx7))nvD#PUr-xS;fCT3$u1ufc;^;AAKOAAh zRtz?5h3&3Foty7pV5R4gpMHTIpD)C3Ya!UM6$2>>S=Zk^_dj*reBFI`4i7OnF#(6$ zjY*eFe*WH?2R3X)&mAN6c?O>1XXk?;Q&lPWv9%S#S)TzmY(>{CBMtrOeGGS-IS7Bg z(XtyM7Fu$_hOLN=G>C?4hB1Bv-rHGlmknFKqD^szj@O9>XE@lf%_zDHYYndVoYp7T5Be9rUqJhan56m0waTbO2a05xGl9Vf`zYI3T1^z+)s83WXT!UpY83V9PG3uiyZGZ1!?w zshtl7D`mw$xLa(K9M*S#H-85D7!F+WTLp!}v!^2^UcF9+1DAZYf_n3H@sryT<3aCs zGuy-$6Low#YUY#SY5_6waNyEvwV+;BI{9|4S-6_A@%gxg&&Fzh<#N)>aNyE%g`lu2 z#8kMRwlf^K z`4A`8;lQPtVnH4Dm-C*pD2CUO&n{b*fH=N}UN~@RqEJv_{m%RPxT%0%IB+R9ov1gP z6fP&(ttWzBIB@Y5SkmaokxuGAz=4Ya22GA8@1MXid;`>#n7%Lzu~Yy6002ovPDHLk FV1lRa*98Co diff --git a/interface/web/themes/default-304/icons/x16/briefcase_arrow.png b/interface/web/themes/default-304/icons/x16/briefcase_arrow.png deleted file mode 100644 index 0b4927f6468c9bf80a3a0d803febaed8ae41720c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmV-O0=NB%P)F-tP^k!G53*KAd~*J)iRq_eyW6NOI>dx_5|N z@rhh57ON*HDiiJnZ+~}7@BC0Y+Wy`d@wQHiWH!)+(!R}L1U5Y8L^X95_q3$kZvdmO z=d=As1JY)RB=SWuGT(A(!qtT;&@?=|qIyV$A5Np|E5JQ{X3sZpHHx%&MY*mEM&@Px zAAYud0i2IO<@j$JrhvTWw@R+*u{CNc>EKgW6;kKRF%T&*k+~D^hCkL1D|!pw$aVMz zrcp5lc$~i3-1--`bOwZ|$<8p|wH){_1;>-{i~?4q5BB~&Glvd_MLPTjHQsRqqlr+O zk#l8u*{};wV#OFf;lqR4LX;mpi;ag{5wCSXhpt>MG^qC%EAXmux8d2T5 zUwL{m06KK#!d8RgUnwqz=cj|9Lst@BgK6+aUmQn&-MkM&dh8qaCc|KKdwRNg=+Kq; zW`kClzjERm`lQM{ag-TFdUONTDMbw$hMeke=SQlLYZ4YD<>HEWg#o$NVH W6u!;hWNlsm000071of~8Y#4#jUx>hRKLW@@7)Px$6$7h(nS6L8G#P9tW4lHyJ z`PpIt$UhB8vj)Ig1f15?wLu@-{oZd#&Lq7!F;xAI_H>=HsRpXRiLC^I?O2+4cAx3s%4Q&Z z(7qS@8Vpk4R5|)i=+JjH7e`+g;`EndoE|U2WZWWG67A3b-J`O*aCsvTPEVy^CeNij z?6xnP<)PrRK%z^5Hn5fekq!FAhojM7Sa#y0W2M+}V7=ryx+Ohb3S}I%;-wmkC4P3t za?EsCvjjt-5YjKD^Z)NthO%(FP~s2jHlSBGnVdh( W*u8JdXV7#20000SK97=(rl)YJSuR)or|Y9m37LXfCAQBgD{vuOr(P)tj~mk1LR zg(CKYg5sglN*6Z-Y11Dvv^?GKjW<08rSZXsd*8X|bME0>%y$6`7ymNX0Zcao&)ZgtRFqCcE!qtty7sEgo*Zd;>%E!>iyvoUeTdgb-)^Je8gS#CTf6P0B$ z9q`L+utMfS6_P4LKFtnh+CkLb%njL2T`h?pnLeR25!5r7YB8wYsq6AR87;8+v`4-^ zyd)pvZL&VnENeqe2JRWBLl@&s2DOvECf^=iHhjLpm-`W+Ll?=g!4%ligJbI(Pr7AQx4L+<-mo%!q0pTR9lA)IHK@l|j*FK;>zFu> zBYaZsi_huM#e*{jl^bY~SAC}oWTG{a=saQI-h0MeI&=}QHK-N+_F3I-DKM7~T?BkU ztP+aDIcVy|FqaNpexcSQcoX$O9R@mdS-`KU(o`Q3I{rVn;hafQ9!dxR0000rbVoHuL`yim<2&WI_-n3tr*G{)mm6qf>R>r zR%AhDlv$%hi0a}*5Z!pwrT0Ow%YX0x#KyFX@`WGgd7tzAp7U^y+-nf&ZTv&eZjqby zBDZ#l^R7=+In3qS3<(BqG@H-sc4@CUM25AdL61Aez=`^^O=Q0Bw zco;K&7N(;JZCx^bbo2bjeXB&|j!&bedXMA#?PlaJA3)~BcD?eSj3?^wG`R?rbMY!n zT=RntUFr5{)VJ;?d`cYriw`%v80)Fha;DRc*PR}GNrpg&uB2QV^)+=ElQFZz`%C*V zcEN?wRHc^tBMXsjU5{ri^%y_D2XyGl)twsk`N|=@>Da4zdB%(9VK)ZDD}Y~97>L^N zsJ$8^tuD=rb`R*#mH0M|;;9tNv9=L!vLoBFWk&whSs&=ol~}DtH<++4j-$Ve`tigX zweQGA&G4zZ(sV`W(3MEFMqS*u80DOFE20x&QzG07*qoM6N<$f{|w=1ONa4 diff --git a/interface/web/themes/default-304/icons/x16/briefcase_plus.png b/interface/web/themes/default-304/icons/x16/briefcase_plus.png deleted file mode 100644 index 24e67f9f328d6b8bf703bb0aaf2c8d39d4cd82ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmV+`0@VG9P)j? z(M0q|K`~Ucs>OvM+O!JVv#)KK&cl}D7rY^6E;bCimhS^8%KF%bdc zbufzg9Bv2wP%4nKg4y$0Z81?EEiv z36E7@8(5#Lrkw6WWx!;s!+f0F$9M5qfj4Kn`SNrZpANV4(O?T79&P5fL65Zq0meqc zlp_}xn;qsuau;8XZgD(65#^JiHaAEj zwHK$+U!U2|2X^e6`|BN5r5%o6S;Bs&(nU9Jx5P%3{IrIV01bEy7f|2D@U%r taN7dR#>!ykgB-bP5U?z_RLv7PfnW0tpWSN|f~Eif002ovPDHLkV1l4~3F!a; diff --git a/interface/web/themes/default-304/icons/x16/broom.png b/interface/web/themes/default-304/icons/x16/broom.png deleted file mode 100644 index 97daf85a9d9a7e3760d81c17e12aa267ecd2ab3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 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 dn+5P+dvN z=}?(snh#Bq*N#(~26-Xq#fQL`>ZxG0=O_k2B(&gTpMM|LVx6Bu0O)_9iey1n=GGZO z<)>$-3)jx210jMcQw7~lncbC!5tT=fvTQF&*LIU~ApxPcQ$=+}im2vY#Pv{8ns$*i zV2p!q8%h5P*u$-~g2960N; zq0wkyvo%2o(NGvGVwm{=x|$#&jVjUZxSxbNZ4?>{V$jo&hVGivcvX>z;kNTQTDucu zQOt+}PkVUb3JT9(PP9K*P?SFh#Q$#6YCep9zA(F9iPjQ+ZpxBtE3DpMQ)bSC>U|}; z??Y6hpn3VPo(;NmP(*8EMc3WDFjSx2gO~S`u@HD!AkDiXhpHPLDAQ;aPkZWHEB~=m9IAh4B`qw$Uz8Vo7)4; z?56O^*cbm<7`|cH`R#88*39Q~0E{sofic(5?-=8EfaP*Y5@Q4)#(1|_EWUPKceZmd z7*G_&r^8xOmSvykNs?TBzAVce__h}?#`O71_BkWQNC<%t0;;;tx7#g~$po`BFGmgz z1fIv^F{+A)AR=^Kx94ayB280_G0*1&{KJ=rv({5mo_;=IjPXYTv)QcAAB&>Edw*Ue zP1$TVkB2p@s=S6(Ro3e@m)PG^)tv(o*^7w?)9DoN{Yk#=#vVE77bYS`Ravc8T%w4W zzURLYLI`A8#wETT;n0CqRjR7u5=F!wIdIM$jgVy-r`Sh7f^%*sP}enW+v2@XLI_k< z#VPjTy-(VIqP)CFMN0|-sd^zC9Bm+jLl{KtZ@Gng(+gMD~(b`-&nL9m`^ zLnN2W1tGWFjlHm*XhUQ&nFKc)jRvaK>aN&5>xni*Mx#-1t6r}o9*?73F854!&w8Q_ zk-=aP+^N-SVAj{ydnUtrXKu#mv@1;9INyW1fqCckFyXr_%}U@jQ=ED1>x6-A!9y z1?Qt>7$??n;_fSqyl5i41$4%Izi-1qYPFiQS}o%(6bfKcsZ=-3OIw)u30(RN4441% zd;yM)rFmjUrBabbqj{Li1vj?l##pShU(UEta-v1@)j8Y26+qEcK#-NIeK16ffqGqX&P3;7zI*e}I8p zRPfk%Nl_4_B39c9MYM%V+}30pcV^a06E@Y*fsf~%559Na4@S(*%>f{UxB_H2`22{X z=y~&EMNtGm6h%Yx^Yf3xFzh&K+cx=p{%*Wyl}e?i_AJXf@cB}yWkW5J8(kE|+WSwR}EL5Cok~9EYW)rL}lZYOUETskNq3sqjC3e*ci#w*t9y ztLOWAcW9QSlxmqNrI?wSAqawf^qCmhX8iO`POcUvXQ#g=f!)^7UJ0!=3kwVU!+Hg} z4v}&a93PwN*M?c8LFs)f7-MiaQ8ip5?}^XN-(b^&2g&YK5g$djhGord%!) z=ex>NQmG_DZ&553(T&YycWUgE(p(4?NZYwV`Qjd1jZfG| z1}Bx`dKe<)%E}7WYLy@eEMpAia+xMo@PS%w6=8j$TW)db@&i)V4(W8G&rYV#D8;k{ zQtRvM1HSJkq?CA`MgZU1I)xHlVy+z~(@FyuJS ztd#Ot{FB_i*0?x2YzE@Jt}c|5G`}p1Kiw8@{sQ*SQWN5IGKK&E002ovPDHLkV1i)Q B9U}k$ diff --git a/interface/web/themes/default-304/icons/x16/calculator_minus.png b/interface/web/themes/default-304/icons/x16/calculator_minus.png deleted file mode 100644 index e3c8b40714b4a3150c83d3e513b35952de8e3cff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmV+y0_gpTP)gKgPi zC>#z;9#19{jK||U;XQkX4w1!TkrZOF7-qqqp+jV~S|x8&-%>a&pCb7+iIXoUIR12u z#K#1VJ{%#QisRt=0PGn$L^hjEa$dM8Apawe-1i(V`h-#5@}52R^~FWXlNg`RC)wjuJDm=y z)v9Uop1tJ40u@B}_XA$9SF+z~wV>-d%H{G@UhV84x3Yrw8yk2%H+L(FE#@6jhFmTe zc|0EGd85$)Q!16F^3B>Be#Ybfa4sIf;#6k0ws5$-jO6+{ z_7!FPQWTk2e1VvG!96jD{9C)-Mx|0QP2RI7{QKN{NPlKY@W5`js}6@FF$?yDzxlUE ZzW`(X+-SgikO=?)002ovPDHLkV1k`=^Rxf} diff --git a/interface/web/themes/default-304/icons/x16/calculator_pencil.png b/interface/web/themes/default-304/icons/x16/calculator_pencil.png deleted file mode 100644 index b3665e9af67399dc079db38c25adcffa8421ec5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)3`^327b(Yfu<0m}5|qJ6JFk9JwFqWD&TrGfx7;gOG+45rPIX9I~I9;>Jvx znPfy17G`D}bARlQ4T;sNgTM}U9PIG!dp>+)(Zn9OxZ!=T`}y9F*=#mO*zIV> zxIrH8jM0MD)>e+!>2%^a$Rq!mSkBNdSS%LK&1$uZa=CmYbWh$wcQ^YXmZb$oqmeUF zsZ2#dixm*rjuNU!n{I86@58&xSk5qO|wtcl4+lD$jJDIdV ztyVLwR!iK;WHKP4(deH{#zJ`Wq+cpW{FiX;%DM2M{wz}{6znQH9HmmpG#bslR4N6x z+l}4bT`9LWBUpQQUMfGBQDf_M0OXP1I44C;i*uj8n$PEvNF=0u9=s0x`i#du9d_O> zNv|SL^v@jjq&X#WvAw-66`%bTWg;N z6USN$fVFm_SS&v9eSc(SI2@)>D9mloIj-vlddhK}J-2sVcM2#C41^GY?q#lLu-0OX z!5D+qdZ1ga7L${ch$o^q)WJ4`ZX%IDYmHJ0r4+vJ4;YO`ky0Xr=#Db*>i6p-TbD@I z-mM{o@P-U>xm=)E3WWlm=Z!Xzl4i5HvOO2lTC)`)tu?h;jolcm3&K%K4a}5MWV2a3 z&-*X8?k4o{#CNd3hTSaM3Zb=TadDARy#47e^~=jQI_YnvPWmgIV_$}kV2mM?$uNrV ze=jq8apn-dJx<^LZ98a9YfYt6;a|?L-s8g3CG3V~U9UsmfU-+iN+Oj?5sgLxZZ0e= z%ma9yhm>-_*|%4jm_EGYRi3-g8cw_2CYekUi9{S@4Ap9tbUIC?QW@}Q{0J`}HHpPy zIA_Or^Y~R`^9Rxpz!;t$D!Bj5s5^0aOTAo*3b7@efZ%ucYdAZ%)YJw z#(@bb<>^o;ba1zi)IX)B%>g@Ze%d-^e-8NZ2Tqn$W#R8!H~;_u07*qoM6N<$g0F1? AmH+?% diff --git a/interface/web/themes/default-304/icons/x16/calendar.png b/interface/web/themes/default-304/icons/x16/calendar.png deleted file mode 100644 index 7f38cfea75b5fc0031a63543213ad558fe35121e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU`+FLaSXBWpE_y3w^N|V@$-L$ zW2Blme(kk1G1+O=wV8u=*DHY*$Akp}dcC~cELnu~wwZ?M1+MnH8qk*1*=bv8clPqn zd(jIY6zu)5^LgC4@5MW8QR4I~=fW;@Mv8w)pI%q^2Q{l}8OxhZQ;Xl0&m#>2kOWX{0@TqzF^{FN^F@wDzNE{ZKew;Z#zhF+O-?b|uOE48tq`@!d)dpYNOxLhu+C`A!A&iFL2 zE~)Yy-BGG18OhSl0w)`PK(rVP1|e0R^Ofj1^@1>8*aU`$vDDZIzu&JbhK33h^mtY> zlBFfSu$ey&2Lg3S%x&PhXUXsj8MzVCmbParRWs)Nq$0~?tPl7_J>SKt@AeQTKfYRG~Cz2KPXZZe%l zES1_-$I}&fqCn@fD6CC=FKf?TAv#K$b8T}I%ZWsho4yb(KKiWH-gD*l^}D0MH+A1AWDUc^57 z5ocTht$uI@4c;&=yaOsbAIB=MPTAx$R2^38;d74%d$IP7;$#529;$7bldLQ_bxpTK7(|f}UFbz1UNndyDb0%rlo+iQhS3C(q@Z9I>q0Pz zEJw7cps46W7`9MiZEnt$w#|Lm+@`*6&b5E%Ij_Vv-=G7(^M4P|^Lse&%ge%?vxvYU z5bKDbos!PcO|)v{kjpj)SOpFnV_$qeA1LWujz-NY2ZY2Xc!s_{cpDqxbUJ0Cx3_|d zn&>5mT;>&<;MH%71s`-e4Aj)f-01GEpu9%C^c^KcPhqx$J<7 zxmYTpP%QqF#QYF~?$a`xjbdc7W*g`4oX&*9)U zc7t5DPsO^pwuYan)D{B4r@A~F@&+bD*Z8W)!AgSiUcO! zcVIqn0n?slym)Sg=j#c4n>vL%m-*!D`{GZk73|^sR#JSd$jV9ufgf-1`CT*S0w)pj zHpm-LhP;R2ux(#>ImD0BTh#96{N7``9o0OsABW$iLn3$xiJ5vRsjD)Hskb|GV>UiQ z0~&U4KCp}P2i06W!)FFBu|+LzTUgX&WRLy;=xAGo2(mtI00000NkvXXu0mjf#%Cjw diff --git a/interface/web/themes/default-304/icons/x16/calendar__minus.png b/interface/web/themes/default-304/icons/x16/calendar__minus.png deleted file mode 100644 index c9a9885e4e790384449f0c7bb5d47e4d64acab45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)M}dW(`fQjo~a}ft=W{qbEN z`O$20xmGg;df{jTCUmyS^*R?S6;q%W&JqTU>jYmvKl!m#GUVLj;gjjBY}L-LwNmD(-J&&gG*h9u=7?b&QyBC^3MQDGY! yNDPfAb#N4o@_&E>7XxMol?o3l75@)#;Qj)nTU55s$0{`d000097WLTCh@8Z5eoEHp&(2GlZ`@%U^fLDQAmURi$1flS#1hypcMY-wc?SO^6{7K*H;VWm%@8zu$!`lU_P>RYEr5 z(U0CiPrHctq-X^GC(+2lAy4<`d?DEjj>P&7#M)1^~A3M=kw(oskg~ zi$xsvcwXF8%BObA0O3NmRKj8|_gCgq5Aig16vZ!nxEu^(dqcyuQ@q4o4*stzE3lWA z>N5N8KE^Gdkt1O*-X=ythpyV`aA`pv@qH%q2l3e$#_k<4@^GjHQ!`PpmkwRkD6e9N z)>kreLFwgX7jqw8V?1`u`Q_^e@h1Mje9vAwbj^%yT8Hn-&DL@wa2&|bA$+k3w}Pi# z86CPDuy2djgIl$}U5jKm(W34Bje4{;qeFKc3FBN9$u#_H00000NkvXXu0mjf;290$ diff --git a/interface/web/themes/default-304/icons/x16/calendar__plus.png b/interface/web/themes/default-304/icons/x16/calendar__plus.png deleted file mode 100644 index 84dddb8df4932ad74c9a577f8f75236fd142d290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 zcmV+r0`L8aP)yfB(2OTx=t%s znLK~n!mCDyu51m6DRVO-i>Xu!OrGoUsKxAnPr513Fg}i@Kmf^P(k8~n8fd6#FCDtF zq?J@(^5-85jBD=7FQY7+^!oUF1 zeSJ3BONXw!b$MS7hw(WWM5e#r!tY<9kSFY=LsvRohM}w0BwTdp$}yLbYORJ!wb~Ty zr9)RbTyB@OP}#Uvy7a zruWAA4E{sL+CdK6I>dC2>RX}8k$-gqoqZJ0>v%CFbblA8(2$jg|-Pv5)IiP1TK9nQPdDg zgB6saSYc9%U-|a_&h3hVf*yFzIq!LY&*5;n;#EqKU=A4`W6TUz)NlVZ>%oDmCN4DQ za9fD$SS&_ZQPP4bd18)feVy*d$0-~RtCdz)8))cp77ko-&l7XN|n{KStyfU=p+=8l5G&4)e^k1I1D7XtFe{u3 zLWHByC}G9wVbluxa9*>7tnwl!3>`rCjz!leOQtbYWkJE8i7tPhx z@tPkQDdYbgvT)#vkYG-7CKKh=6W^>>O4@An90*Wqcv$CsV1N=vBd^H9fh+tP!OYMQ z-5U(_)Yr#g|Iy!H5oF=O6`dNRq(-qyFyO!y9U5bWVv+3o`?R^YM;ksLt?%s6>h?BS zyzyJ>lAi`)9;y#{`KJPEfOB`US|sfh!u+-_$JS{7W`ViO_`g6?`L=NhG4s|7f4e*rRZOy)J%x%L16002ovPDHLkV1fht=}-Uw diff --git a/interface/web/themes/default-304/icons/x16/camera.png b/interface/web/themes/default-304/icons/x16/camera.png deleted file mode 100644 index a828599892892978cfdb8cfbb866d4a96d2cd368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmV-q0-ODbP)+;!lbPUjpi$8lc0 zUjOUbKcTlfgvC;+1PZAi|0j!7%Q+m5r9Qc4vl*t-=^soclfTmKcKcLIrshPYQVELN z?Z#j*KqL}j&t9*GTCIlpbhM^xv^O4)VYAtua1x2+kP1B>4>Rd>I=HyFM7!NaHk+k8 zVKf>sXie8>Z#W#nYPCM42A}PAJ6tXoGiWxOjASy2LZJx%$}5PMz|C8?;q$E^l}clG zH;hK31+&@wj2h%E77KWuX9k5r0f|HstE&Oz^95)OJe=MLlb4%hf+|9x zID)}DNg#kwg%oP$+zyTrOXZ#S-U&&|q`7WQ73$0000D5f0Mwzs#TR;#bGw6wHm)MzvsMUikgjIFH%g25o> z=jZ7q#N%-hiYZ66&CN}emzUR*zzdB=gPNKeQ6LZqh}i9RxLk{9YQBq50yvR<5@vHV zW@qQn*Eayae+^}2Wj9D*L8VebtJR7EE|&{4Gj>=kRxB*IAXjLiGYKMv$|@``2gKUq zq9017vVjCV3Wb8k5e3G_CplASX=&qozd`MlduSIzB6X(w@cBZpTHE1v2T@d1bd!$g zm&@fSEiJ|Q#xZC|x6u03hpw)EKJF_F+g_sSp%YCVPS_?ra5|UK+dIN1Sw}%ZK_dwS zi;IhC9OPR)5K@3fcn{0y3c9-o`O#iub@d(A)?$1mFM4{0;Ba{1@vI{+FYh+Xu4?@v zyW;?H%pjolc>+D30o9|ou#EW7-#>+pjwd1m1JjtB^YPU}e1#BXGMSkbj(zyr{t37o z1F9oGxD^K!4+7##ZucJ4xX=;bAMfVd5~v6R^q+A~ z?~qERZGXTlkx0(c4J4dQ&T*-JB6?;8Ab(Wdd5v;^A@h6ho*g=^W=AT9gu|M_5chTI d7dzQO>>KMrDG2aXjiCSl002ovPDHLkV1o7+J9hv8 diff --git a/interface/web/themes/default-304/icons/x16/camera__exclamation.png b/interface/web/themes/default-304/icons/x16/camera__exclamation.png deleted file mode 100644 index 1ba77c5f01347457684f63980acedb46cb43514a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmV;@0xkWCP)eCp_rBW&A_4-RxV6?Qf6y@dRf2xreOsGFsh#9XE<3n|5YI0y=!Uu)g1ha(^IH@Va z)Ko;sO-_cP(P*qxAgETWVK`L+XG=c5e!hp`Qx&c|9Q@obQF*=@ZA?tyjHLzB(=j+4 zZ3qN7D3!{~^b*4gg#vXo$KZda$B)e?coVIG>$Zh&_c{6o#$j*wz~14(z=I$>o+)&9 z-{m`*gIq4ZLIt?uVkNqp_aT>QrT+jMA6wyLwdm|*_)B|%X!JE^XA}HLA#`=QFg6xK zFgOR9Ox7Sg<7wkzj1Hc__pF`&n*^VhYQgz*a1Y%?PtQYiblef>?R^Bddzv3D#*Yv~ zQBjeN94M4nJ@-}L-YwQ5mC(ZLX+R>b!Yi%>f#EXYq(I;ov~Y{QK6Y6mkyweoc-Prs z*PajW(`sZEr9ubPW)@{&ncZ2HTs)AMm)E)tHnCWIoIJiI>R*Z;+E`yciuJcgu=(Yx zU@6H+!G^0%#PXthw;`WLOa^ZdXMa1H*$J9AYRQi4C!t3|eI8F#ivR!s07*qoM6N<$ Ef@nfZ@&Et; diff --git a/interface/web/themes/default-304/icons/x16/camera__minus.png b/interface/web/themes/default-304/icons/x16/camera__minus.png deleted file mode 100644 index ed506c6c3f01809a785059cad557434fb7d8aa63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629 zcmV-*0*d{KP)jHyLHuODQ@adX#PMe(opE4 zt3p8pA<%_H#J1E9O-rH)8WWRoW|HZ`4}^YT@vQFVK5*|jNBF+ac_gN%r;lfIadDBc zv9U~FU*DMl3Wx%urfI$~O_NL}BhI*616IW3Z<2V4+>val+ALR4vwA(%(mh;Td zXSnqs&2ny?VDJ)KTU#_59-ik(1zfOg8zBy#Un-RWfs{H*8C)H_$&F+ZfIMY%-9Xa} zq||X;S1RB44aafNH0{t=Wgw*@7!0w$Z*%u{lFecf1l+qbO0~L2PtRqfREGdS*EEfG zyM6TOE~Hcp3|wP#^EE$9qYq{MV%;u1v@ zXN0u5dm9G_hlt1HSXx@5 zmyk}U1r$?`?)LZhQCnMkp9~i2>gr%JnS?k z3=g{zjc!7#)i#mAa!pMQ3H z6dH}DnGC{JRaI1uFqoX2hRZdIPO}B*>cZIRQuKKef}7SJtgk2FboL<>ibJhdKcpc> zRVo##tE+{9Z|WJ>^&pqa;i<`j@yESzya>S2AHc+P7=geVhKAnoO17X>DqF}PUQtm& z<)HrhdA#>tMlRb5o9zMG+PeABK44>G2b-I_SYD1`aBvKZixGswTTmzzkA8k5iASCn z3$b_LB4(#X_`p8$cHW}De^lUh&%p0r=U+FH4D6rRcU8a_9EjxJW&i*H07*qoM6N<$f}BD; Ay8r+H diff --git a/interface/web/themes/default-304/icons/x16/camera__plus.png b/interface/web/themes/default-304/icons/x16/camera__plus.png deleted file mode 100644 index f3ba46afa818de3db3ece6b439dc24df37668825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671 zcmV;Q0$}}#P)Zo5|eJ!B58$HY8TP!N{EUYbl~%x^E`+1ea<-y0Q(=9*=#<; z${4dYH#h(M_D|@z!fA^{A|QDDut?gdmKlx4_C0RL$HzE2I{J-5q3}o2>GU4e@~)Yr zP$)ojbaWt_&BEn!37^Si5Rb=2X9UIcM!9@GkCv8}9#&FP@|FraJ3EEQ?(QxQ4i1q@ zrLelXN2$p$5Y+4SFquq3AQTE=anXmNp%DawA*eMbn5`~BgZ3WQ*OMX_ z4kw`1YWqkarqO7q9Uqksv4SwyI5H8V|?7n+kFrB>>3812Qc6WVAdN$Ah3?9sW-fn9jH{QCnS(+ zYHC8oiyCx)?Z;KG5=%>AKE@g*CSLKSeZbb%M{IBJ@sZ+~oP3StY<;v@D4WMbk4!ycqy2fna9e?CLc}WBS@&LtFy5($AvF+aj)7a|({4i%o^cKbfn*4FYRc9+kW4p$UPhbm5PeQp4GqO41vmdoX%f59e`$?9nb zGEOD4muIT-H$k4?tBRoVM=dv18DqWYU99JvBs|@Vv~TgX6LmNK>P-Lu002ovPDHLk FV1lU9J3>9eW{_Piy_13?t9PkKA-nJj#B_AcR_JD95Y@iiZcD{ zc`kT)C^)e!3q<7Cb8^C23SQLf^{dHbg7J9#AEVLehT(81VXjmvSDY26R(?61PLMz# zfKI1_NF*ZftyT-gViB{`F|)>Azu)I+-%#*1kw`$(G%0B`8tCdejV~2wG6kK{d9{Bx!DbRHj+uJ(` z23Jt6Hev2P#q-mtgqbz=(&;P(A1V0ma=GC1`J})wa*}9N6UQv0SUyJk*-HsCYwU52 z5PYKGr`zp@*Xxx6)7+Qnx+UIq69)%1G@C~fX4cr_8X@@n&u3g(dVt;C(hZr+K9b2a zR#!JA%&g7&Lhyxx4;vfCwQbkLx2__Wdoma6>-sfkDaZ-V1V3)c*`HbEo?ubnx+RNp c_O8G4Z{UrdrKXz6vH$=807*qoM6N<$g5HztS+1JXb=7HopofPjF2%$F};{(t=V zF$RA2?Ad>iJYEBU;EbcA({UU_xASA#%lm0Bjb8w zW8?pO_U!rZ;2QQnG;Jmr+d75(-@W_5e^*!6JVFK>02#1!>5Bi+DNX-7W}X4#n6y@) zp~wH*+S(Qp^n#6z?f+G)HvOMIXXF2xuC4!Tfq4FsJ^%OZJNMtr%&Y{j0lK=n75nxb z|G#V3F`$j7fcWhHy?f7sX%Gg<<268BT-;GaM5GxP2FVZdq&y%7007N0s$o5e2Alu@ N002ovPDHLkV1f!Pn1BEP diff --git a/interface/web/themes/default-304/icons/x16/camera_small_black.png b/interface/web/themes/default-304/icons/x16/camera_small_black.png deleted file mode 100644 index a8ba67ec7d4cfc5851d9754a783b74a2b7d21ce4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmV+r0q_2aP)bshK0bjU1NIa2f~ct2e?Py7 z|6$Pu|MP2>gE5E=5(64=lu#g^iHJz~9}<%EKR7rM1B2uVxga0p4Lmr1kSFBU5lI9E8%wb=jg^gsg{4oBw@48JLU1wc zBD=D>>w29}5F~{#?!e*x&ACi75D|m{p%=8rpu&l7XC(t-|M6g!l{n$vAoqaK;RsNpB0X1ts5+KCrzR)xBe4f=YCz0{toaF9EJI z2RGH!tkss{hflF^i!KvTcmU+>zN0z@B3joksBwC_%=_{JkJtMp_1b-;c5eBIZ(Byp z%qenqfV3_HGCJm_sBUbm%q=duJf2@kXkJ3(27IYCoP%Ae&}hnC&(Cl?KK@FvW&=^m zc}%VxfgN_KsHdmG>2|~V@E{9z*dR#~vaE@i1y zHD>Xov%5Q4u){8;R8`g9IGs4LSYWc*z-LabKk|9TXLc!4p-@_$o^a)GK-t%~=oc2& zG_2Qeas3hQ@r>_q%?`U15FRcCMn^X=exafHL=?jL*86G3uIQ1!Aee_T3HG_-cmEf! X1e3ge&}R2z00000NkvXXu0mjf7f;|T diff --git a/interface/web/themes/default-304/icons/x16/card__exclamation.png b/interface/web/themes/default-304/icons/x16/card__exclamation.png deleted file mode 100644 index 7d51346b7030ff0c9eeaecf7a6e1894528b4773e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmV+-0^R+IP)1nvmj&#Uj{Qe*oXV0jN|ecpbg6=bXFLH8P@!#$pIZqe(e-e1*+a5AT5{czdw<<6{*MY6gJ20E>!Lp)(&N$ReEe1n# zFcN|968Elq9`39^uOOeR$;^pAO*VNG0*WwR_;0^>5Sou~5+eQhb zzY0j!TL`$G$;#}SZsXnCo4=^Gr>E5;-sbdr6Zrn65uZm(k}~t56uqws7U{lT|L8av zgx&2<3+`~2s@mHhJH>T(kB-uUJKUvmt@g>G-w&%KVc+8cuUXm0b9u&V?oxqLsgq7m zVfXo<>+he>%+G)NW_tQ3`*=9x8Si1w9qv+&LQ#9YxVV$a%*(40pXvtdMV4yDU6Ii> kK`sx|Bvi_@% diff --git a/interface/web/themes/default-304/icons/x16/card__minus.png b/interface/web/themes/default-304/icons/x16/card__minus.png deleted file mode 100644 index 6711e6f3423a7d0adee9ef5dd63e1a32ab8a6ab6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV2MP)Dh za_CN{Y>&rMz=2EqrBd4QJhnz7Dd51RM6q}@5F2~Lp%if7(r!L~{OP*fwJa&%z@_b6 z?xZK4^w#f70S7K^WiqE9j>E5}$(_M~5#vTa&teZTT-uDsv*u*NUEAhtx%?c8MlY+a zRvY;|sG)}$v!5m~Oij(qph~&TQz(K7Qo6ADGNTZQ5QG|qpBWC_2 zC9^ecY17MQ9>4EI7~1mIr{C{+zQ51YulIdv$YLSw++0kITEn5uR?AD0w2c8}g1T5R&bI1mG@4mimbprySRYd=`>20rrk-PXysmBD zUnynT*~4~rXe(uogZ3!6}Jrh>z4(iXKhYV*>!+}dlnVHqeIXPV*AuX*^ytq`X@4de=xS~gi kf)s>t0wcq6Ua-J0c4PEr=8;`a5X%`Ow$H*VSqKh;K@;}))R8Hi{#g8h z@Lc)|`+mQ<*=k|E+58p5gAG-8lN`!7EthJ>$f-64J3gPe#x9lX^`59MCs6V-#w9uA zg2n6IC^s5ds8o8g8ZhDbiH1vZ$b~hx+fuC6Fk33|f*f)|?{aPC*!EOD&kJ(Mg(atR z>$6#{whr^a)PkPQ|ctH-iFl)7LzZZ-6lulzJmqR*JQr*e-8J)=mrA}v0 zSF4yT6wvPR+zaILgR^KfMs+9DqZ!?ynjCUrK%vkNYBYOp>qw iOhcZCIhXzF|Kbazs-m%at}n^}0000>8?|K)4x5X7e{1s*<$wb%Nl0qrvIk|0vPoJcmeeNX zqkJVwHrh?QT6WDm=9$_JMX^)A-uHdp`Tb|+Fakg_K{7s|e_^4_pyr>HNw3FKi+^5p zrE7k^PSbTv?`dCHKGTuZv>%~ESK4Q1>k>vVx}{-gWE`rhn$;cD5l<$u9tizrsphH(2gM*C`<3#@jFtdCBtJR7*-yv4dfQRR29Nyl3 zff=DgSJb|~=BIcZt_`4VzzvJVf}UYF+`GVCIE+QV--J)~?d+Htp+i?noz9jA<5jKB zH7JUbrgLHq*T#4M1Rc6k($v&?AB*8U6v9m;0`{z&Kl6RZo~{&^mv@BT-f$O~UoasCW5?syMpI&>wcsK}A4D4is$prArT@>x^aZ#%k1CfNpgT>gk!;dk;v(5kj002ovPDHLkV1lfxU`Jm1(#zNFJ{NP0O|k#{{6$iAOMxeZ9wj{X_-I&{{8>$ z*DnkV5(mlSH6XF8EBg~r@tZGSFfd3QB#+mCkeZs@_rHJtfBpUY|L31S|9|xE9he63 zLE<2Jyau@C<>lXf_wGHDx_SkOehRc1nGcf3Yk;b^cetRLSs74+1c;V*buB^WgXD*M cN*oXa0Nmp60u?XQ$N&HU07*qoM6N<$f~MAGf&c&j diff --git a/interface/web/themes/default-304/icons/x16/cards.png b/interface/web/themes/default-304/icons/x16/cards.png deleted file mode 100644 index eb20f4a730d2be328f13cd36f91044b1e650f45d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmV;I0cie-P)6!GhSm0v7~>*#}rpZo6p-@AvHnf?Ra1Qmb*X zTK$!Bqrrx0^5<~KN6F-wWAEomh2OhfHY|$|6N!jp@266Uo2?dq^!vQ8s^^ZqAIoKK zb~^kfH2kqxl;8m$c-ev6ZaDlKCyzpx{Uwb{4%n7_BVH(P!|1A{oIy*hPA6fCM572tA}TdMefWL`eBB3XcVDp{0w25oo~z#7vdr2X zj+PMr6nuJ8vAFh7Ik2vv>-mGCsS{MY0sY_xD*9#VjdzD6$y*)|)(;NiQea&`-Ws6m zTEz6mDH?}|TjP3b(K5D)+*TQm<$VM~A=KOLZE?M|pxp1B9e8hUaQ*m*8k?;>uD2GH z`{j1Sdv^z4Fo-IP#mva#UpR~aA0&curA$G5iuKVMkf&|qQYK|WXa_X(lgXOn3t zDLcC}U8n0v%g;A5@*p4bN(AMq%w`*7ER&PLNnzwcKEjLovEQ!}I~U%c34SZg`eR4obstzSxi8c%=z%&D-kc=G4%`($eKg% Suf8z=0000Tchs^4w1ZtG4cwFfs2qM-C&GC{AR`1X)`48Ey({*Zs)*&?~@>4G88hHczp)T zAsa%$6L>l9L~!mXf`L;APPf7G;C}mmb8Fe7Q<$4PiSG-?5T38mHXsepAHwX!addgk zdP?WcGyA?3%U?{0F78KEsDcu^p(zm#9K@4{d!|a}*7^9xhOy@+gK_U+cpo3Yi>I|1 zd1k_$+xtGSOCHaapV=%Dic%Kx9kEzOmg4b*#2+xVv^dy#x4R>ePUD9xmxX){R_oo( zm6g|b)YUn+S6827r(LeAYwPP+iN(r7zDB#<#ee2*&MwYY*6489MZVrjG6`LmB*~y~ zPD=jT=4NIT<)A#2i&i6zq*Bl+oa?zctg60#;{wV-dC0`u8a@&q8K4G3OTrhTcL}Zg$Y7J^r9ME8r;Ha5El`(#i53vDQO9G za1lh1Bq$93VVa6~x<`BBQy-7$z{lkse)o6Z2Z#v&0Zt>4A!pI3kzxM>#{R|QP>5%j zwPJ6K7rPxFG@1!+wAuu{+Alc_1PDjB*TYV?E8v!ezs=?eE@iUUe!+Px1}EV#IQ{;; z7Q4`Bw*|zlR=iTH1zfXIPNhl+ygk8S_&J-!r%XnaR6dWDMgzY(9klv<`=Z{{pm|KE z@uOD5N~?uCUawQsdm5CxPbRTYD&c3diCY|ZAnH90%H5?>Sg2Om|j&dt`n935uo{aduQ+00000NkvXXu0mjf5JJje diff --git a/interface/web/themes/default-304/icons/x16/cards__pencil.png b/interface/web/themes/default-304/icons/x16/cards__pencil.png deleted file mode 100644 index b160038b34a3084aee1d0aaa313dc3f8f97a927d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)Aj|N6!>++O(c@x46n%li|Ku`!|O9Um7?zrP~( z(NW=UXlVYa(@h3-I=wit;I5>z5>}VX-qYUx8cruBYHHTB!5*(y(FIwBQ%LN*$D8SC zWHK3e91aW^jYHbmT=LZICZ>F$fLuQRAMw~Cf`L28#GYelco<*8VK86vw)=dddt~HM zR)*6@N5_b5E?{})wl+NB)*}*r3+9+V=56(Od>^Axe27F!EPeJO;MZ%zuUt)7SoR{B zPU9e#!^6SB#}&O(f1>y_TReNpa}&S5&tpCm!cHoMWHyTjeSO^(y@P>X;NTl3U*5ov zuXA87u(E=U-Cg`XJj6Yl?a8U$L#0RvA2h9snKS!m<2uPL$7Ku zcim{5T2CaBak;Rmqr)QTK_7ZmgSlHK)4-Yf`ezqgTC5iu8}AEx(1%{tV6M$Iey=J& s#mPSN=j-Z(f^}9>`_HQyMenlu3pARSKyk!v_y7O^07*qoM6N<$f;21&cmMzZ diff --git a/interface/web/themes/default-304/icons/x16/cards__plus.png b/interface/web/themes/default-304/icons/x16/cards__plus.png deleted file mode 100644 index d078c6bf1610aa92fc83a7968233b5f007a2f140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmVN2B9H@0_jUEoeBz? z``F4g2%(aoQ2fFa74dYBb{}f*@ecer_a6TDaDT*caX}c{em~g>1VkbJ_5;cjcD!Sr z)Ge5#aALH0W$(tg4Y2>sCd&^uyA(hKX~sgpO2W`?v)&Ukjdw3SiCjE;HkDuf4I_BXJgQ_r@623 zwjCY$9$#PK?&U=g`Th`ez4gJs;VAqR3Se}(Rz@6C)&YIhb=g&7$5y zVD9Gm8N#s`M6+3#vfI~0y@kNsbub9wWD>qI88BF_7J?q=lb{1BFsEHwx(vnRi3nXd zvanz!=z%`psgxv`n=qMn8|3nhc8$i?rc}-n^gti7sN}nh1KJ5A(tv zibQy-=gfO}dYbTs9_WK!_%-aG=`=8^=ggZz6ncGS0eYYhhUitz{229f%(u#9gn`va g>G<=KqT*duzc*rt+=$`*r+Xq6!n6iB)69B~jARa^_hQ4UD zL(;tuI@E)ALm|x-xfP9nfWC)v8ZOk z9P?_y!_iT3FB}#Z*Y=VUGD--o3-a;ZK1pJam+^CB1Lu9d8^-(Qlb3Khop=<8D9887B$C-IJ}xZm@_surgPi;qg-QjM z*Xt4VpwIoMAy}4$K7R;hdHJA($;oS(1Sh>S3hhv8!lY$SB`&zIm_em2_a5M zj!O;+deBFEv1dyqL-V=zKHb?VOwofr^x~(ne_vmRrukfZOT!9S=j@RGV_HL@*d1lRLY_3`8XfByaZUo?Am23a;Ax_0gV_dkFBXHA}*MV8IGE?oHk@#oL~iJhI< zWZAswGm0HAj#BfARI}f1l#wJO+?IK&F2F@dGbL zwt4ZsecxXF`t{!?Ik|uVC4-4BQZfjdAVqg%%0P+XO)F#-%tV01JZIido z7F03mR%lx6#3IaokcGvZ`Oy--Miv>KmI;mmg3h0emg<&il)SjGP~q-d=`W`Lp6zeG zaBz{@hr)L!E${p95a4VGVOd$wpmX~6oObD(Mh^@D%P{dJGa zB7q{YEafjRq#ih(wY6#8>-38zyj_dtXiPu7z>dzUrI&FyyZsyF(*ct`0Z~naJiB@ytSV8hdvEqv_ za?JH(zndq%H;#W=>cMTfjPKjuTRi3ix_9cQ=hb%e7vIfGHk#S+{Qm>K^2%kW8ck7oZ-C0!sSU+juoj=E2zeWMWnZeW5&t;ucLK6Vf&9o)} diff --git a/interface/web/themes/default-304/icons/x16/cassette_arrow.png b/interface/web/themes/default-304/icons/x16/cassette_arrow.png deleted file mode 100644 index 48c7cda85969691490b8bfc608e9c35786bb5013..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmV+q0`UEbP)Zsf`OKZG(l`ATI^n<$k^eZjkQ=(1p~QmMe>@$|%Iv%zAq z{6>~#(4otMjdHmRpU;PSy^druDKZj?2%JtQtX3-ug@V{IIn$xbf+xjd5y4;(olXa4 zvsq*|n-w@54%qGXe|DVd&}G51d_Iq8G>Ue+jc&Iqvejw{_!TafOZ+tMn4Ia*WxrBIwX%!B!@dK_ZdZlfbQ4So#W)`t=1CY_Z^VI-Q25 zY4Ccz@caD;1Of55h$IdO{{KFm0eF4-PPa!K4pCsdKr&1{>iUM8N z!RNmTt!(4wXW-%oVDjA`N*{p}mzIC9;IYBCUK|Zx{Vq=~?vg`ev%90qJJ8+&oCinF zY_ed`;JCr?UL2Xa|Ni82fH|biU;gFxcMgo4l@4lmmj=e~yfN~^;qiI#{wI2G*P#Gg Rm$v`_002ovPDHLkV1jM%`)B|F diff --git a/interface/web/themes/default-304/icons/x16/cassette_exclamation.png b/interface/web/themes/default-304/icons/x16/cassette_exclamation.png deleted file mode 100644 index f2befbf31cf5d1dfea8b8421c81321a8ed9aadad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmV-I0=@l-P)IU9<$8oLx7#)47n z&>vR0ji8_?=mi@DG3L7(!Vb}p>`<`F2);eP2kHe-S`Cp%1eHo+e{{da5&tTq%wq;3uE}T{fOr|DA8k}4s}VOrBW%xVzFIO zmGihWJ%H}!r1*SWovVDd^Vds~KqJ9QB9TBS6oSj;g2&^5*XxDf??)gIKvEsW(*4u; z@#PBt?HIP!FJN*06v~&zNU*}6Fk diff --git a/interface/web/themes/default-304/icons/x16/cassette_minus.png b/interface/web/themes/default-304/icons/x16/cassette_minus.png deleted file mode 100644 index 60ab78a95f8bfb15c245e83d2e00c71f312422f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 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 QegFUf07*qoM6N<$f?lG~b^rhX diff --git a/interface/web/themes/default-304/icons/x16/chain_small.png b/interface/web/themes/default-304/icons/x16/chain_small.png deleted file mode 100644 index b4f1b114c4562dfea7a4e964b503f70837d89de9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`b3I)gLo7}w|M>sko>_H9;uVGv z=0AV`E|rmy;VLOD)o!rpZ*6tuc4_{hP&mORj#)=nw|jfe%}+1h-L?MD&CT7<#QTEj zqJo`=j7tA?23FSAU9Ydd|HGcSr{LkQ?(+Bh{CK9|142i7!nL-urTn9Ro!PC{xWt~$( F699-mP#ypP diff --git a/interface/web/themes/default-304/icons/x16/chain_unchain.png b/interface/web/themes/default-304/icons/x16/chain_unchain.png deleted file mode 100644 index 8decfb022854b09877b7a7e475d66c1a8bf75110..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmV+e0{s1nP)D=RJNH$+{eJ)5Fbs1xn_2Vu+=87>r{-WVct;$0D+}nle%R~vj8^OHIT#FHD~fU@z#e|Y zk;jk>rBbQW@p$|d4sW(R9uEP2nZz^vh$D|78A>D)C!NmyN3(fx8wdnWT`pIdc)?;1 zKjO$^NRY{7D4k9d@iBK*Rl8}o?`GZZlj-;SFByWx9)84;7Yc)@ro{a)BSjVlmP*jpFh60##KhnM_itRQkUF8Y63iM_A6~ zau|78*2b~`?k8sJ)W&2oF(Z*kgCSV#;TPH(s4-YTqaA;U>Z=cp^G_@WdUzgfI-l7G}8g9XC zFk6hqN8RT;pF95z2j?8$=Xb1 diff --git a/interface/web/themes/default-304/icons/x16/clipboard.png b/interface/web/themes/default-304/icons/x16/clipboard.png deleted file mode 100644 index 24c1528a8790e1c583e1bbdb7a19690e3c1614f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKV669aaSX9I-8*5gHUy5*ld+W8Xa~XPC860S+X^_bOer1`^Pk$d9mi%35$*h z9R9%U`t)txqgX$8c7B=i^Tp*db1gd^GM@Estz3QdZP{*>d3<_nO08EdUdMb+mFdUv zmmkwE&-Pt*Cg`u#as=%uuxFv z__uR%>`d-5eDMV;MaM5@^ysf&XDMOxu=YNqNZV>Ft9jQtrroLWT;6-25y+c!sl#pc z(XDQWIb?RMQr;h{oOM=h`s-5Vf(NVmYJ{Z%Cz^|_4h8edj+;Dkzc)dDY7a=`txcIn z%GVydnRF4PaWU^|w;SDuu87kZqUG0(8~H?2Z%Gm)vTmot|^%DNu7a zTW+-uk5FZsXU$3es_F8nOnfmWSzo-^#D06&tU3SbZx_fh8CJSqy>lkpmRP4New2T( c$niJ#wlY5*la+BBfic41>FVdQ&MBb@06llUGXMYp diff --git a/interface/web/themes/default-304/icons/x16/clipboard__arrow.png b/interface/web/themes/default-304/icons/x16/clipboard__arrow.png deleted file mode 100644 index 2380ab60dd7d866c15b94935e752ec8406b6e299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 569 zcmV-90>=G`P)k`tz%R@6e)NE@tnk-(Gg?nW($G7J`jw?*kurc%JX~c^)2m(n7?>?0fu| z>Z)8Wms9H6<>a;UjM1aA112QFLZ@lz09xZCG4f zMl|{z$>g6Bp7R>-afY)-kHXE0fE@kz9$;{A2;<{VF*WrXGc&Vz{$dj0@CX6}L5_g4 zMvsQiDWWJhf5hXaIKx?^M~}}cqEIX%UnrR33}=lVg=~t*@9ZGAy={s!oHcqha7Gcj zydk@_Wr{PLHF|Xalp_Ag8??<$Q=H+f(W5@AA~y1QtY)(n1wO99`*sc2E_Wu~S9_?# zeS_$Bogy^(#NX@d6}hKVm`DSyfe(7q=ub~WXql+@q#`o9j)bP|Pu)zYE%8WNFPt$5edTv5Z75m*<1 zTE~!HZSVE%cIlvGZ9G8J7pq8^Ibri^H5VT0$1LX~+~Mwjt-V&pN=tc=00000NkvXX Hu0mjfX0Htg diff --git a/interface/web/themes/default-304/icons/x16/clipboard__exclamation.png b/interface/web/themes/default-304/icons/x16/clipboard__exclamation.png deleted file mode 100644 index cd8b682e3555a377b2f994c83f3d0219f0b6a536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmV-z0+RiSP)H;H8E3{nnKqf3U`3boMG5`g%wOwJaQGnNzl|U&) zX<6Cc0HyGHvJyD1i&Sb)0GgJaK&l-8@2h9l=6kVX?+6z+;q?gV*_TRT?*eeu2G;UN z4p+7^KRtx2qdRsAAhQ$f21qWw#~&!d^a;#BAq5p$XmQH@KY_Db0@oqFFi3etEtjwL z@wBU!q7z!Ax&;A9-F6_QREb_$e?H+88rX~U_xJO6^*eb-N=@m|U`xmLzyXUcOJJU(=6vxko@aqB$g|&2t#L_DO4o1Tj z6S2e%4af%$)fsf=X;gaqt83;+ew3V@zoHA0`$PPi{>jKc@kR@ap@JkH00000NkvXX Hu0mjfL3|h` diff --git a/interface/web/themes/default-304/icons/x16/clipboard__minus.png b/interface/web/themes/default-304/icons/x16/clipboard__minus.png deleted file mode 100644 index d1536eb527f0f285ac4628fe06f01908666ad136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmVn6uB(F-CrL!fM?Ml#8@6^GR@AQ2p5)@->@r18 zK2{>M+Gu58R%?4a|IG|hZ>D}V&HR2d^S-p!Oay!_-wd@^=6XCHx6u2A8*4uu-I<9j z1_TA>U39!P+JAq39%X&Hi1;J^(Q5N%6OgB1o9vn;-h$NzB9 z)y2C`XO_L18V=@>C9w(<1;|}W)L))O-6fNJ7K{BMR8_@qa>#G|atIzl9r7)`WuzYD z2i?ez`c0&#hu7q0;B&cnEQhQqiD&Tw8TmqSXCbNm;a1)oXtD(kTr^)T6$y^|916GP flKKyD(V+bVWnx6eaGZ7r00000NkvXXu0mjfv~b?- diff --git a/interface/web/themes/default-304/icons/x16/clipboard__pencil.png b/interface/web/themes/default-304/icons/x16/clipboard__pencil.png deleted file mode 100644 index efce1c43b3348caba895b23ea4ded20035ec478c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmV-Y0D0OB+*SZpdLgs4R1tRkwl$GyA%gFOa8SoiGLS#i3+cthibN9$wC}2!gU5prA>LA3JsHS_ zLIKH4=D)L(`V=l@A0Hiq#LC-TWFXs)YHS}d0B zz3NY(vvnpimCIo&o&JlkHi|dHzv4iz9T)ct&0$?f-fDG$tA?m`n~t2zW}&50fAHzc zFkS}_>G5FC0ffRYz%Do3>g(thqLx~c-_=L_raqKGslj2QhZ0$)x}ERv@e4LE9!gJGVohvBNGmt1Vd+^?TRS;NdEg<)}GMG>U~| gR-u*8+2w}YpLJSF5c0!Epa1{>07*qoM6N<$f@PH(*Z=?k diff --git a/interface/web/themes/default-304/icons/x16/clipboard__plus.png b/interface/web/themes/default-304/icons/x16/clipboard__plus.png deleted file mode 100644 index 05fc5ea9df5e9fc5c54095c371768ab868ab29b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmV+=0^0qFP)c45e)Gp)A}dlR4hbJ3J?8>^ty-!#U4$&f(yB01(jw|6FTrC=Z1~ zL8X0FP}bIFbPsC|h$$rccH_&N8=Z4gQwbI_mo>dFS#!X%fI*Ydb3E43#N*>%d1B%l zCzC%4WG-v6CmG4=9wL5&SdBY(?{PT%hzAB<@bK_k9vvOySFeXS5_!t^dml)IC98Yr zZ#F2eHoqqlt|TK_-NVCu2Ica3&gOEiBqLefLtm3Y*_9Q}EHAr~jAV5Wy?YFD)D7vS zC0CM>tnQ(w(V#!-277VQm1HEVd$?^Gw2;m6TsmFS>CacVF@BhL-CAe2p7mn?1ut;D z!5~{bab|wLq#f@Ae14&uH$GYKlnwfTm&(;`2BjQ_r)|5)sgIY~dgm`_voG?7aJ8e# zgh5{n!A(HtmIC^j$?#+1`l$b%iC^ZOLoEf? zte<^1D;+$pBJ@|qq+g-bw$*^*-G}%?m%pT~J+)k)+|Jcq6^?XPyHGy?Yi}7wj+KMl n)F1WOl_x!p_lW0{bfo(i9nL^VlISa400000NkvXXu0mjfn|l9} diff --git a/interface/web/themes/default-304/icons/x16/clipboard_empty.png b/interface/web/themes/default-304/icons/x16/clipboard_empty.png deleted file mode 100644 index c1d8414a7fc5afca4e466d49cda574b29773db8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 492 zcmV0;Iolb{O8*ev(8vx4Z6@oE_e!tJ|le@%m zOdQ8ZDY4dKjKLT~tJNaZDDSJpdr!OFW>Glj2sJeV?>$M99B=SH0&6YS+Jy$z+B$*D z>+W*{=Nws0c6I_kJRmpTZWi%R*=Q%o_B^)BH&4C#K0VLt^*rD2m)6>efUo0^;ciE%+wFEKJb7GLD|B>6 z1qW;>7|b`)_3qffYbX>JfH~ImK3sFaYP*3SeSPBZZ8_Vy0s@X#+?+dJa*uE@;n929}8J6dita87MLg~PVMfvY=O zY&CE;my>ihYYQB>x}*7K1E+s}9R^OQSM&!0 z2HdEh;Q0Jp;K0=#4b>Sqo=QnXeYYKO;OdTC)kFie7W|S-%40lk3mmv;&|0IXipWz# z{HA_T?CZ-GIB?PEQKqQuEhj!1>6D{Er!8>cqRF>Zp{Q>uq5ZB>;{N~_4ccFE&Oz%G S5;39x0000au&~FOjcfft^=VRoOKwZF*dp`*lEX6 zW4i>+J=P@c(bVnHDYY#fyT~rzzV8S9^0QPUo{+rP3P&1}6rC!J#*3cRI?xD9b%`n84w1JQu4~Mew5^ zwpy(ul}Zth$3y5RBs|ZPWHL$KtgjQP+3cai1a`aq$*w5MYQeX9o!D$P*-aR!6IVltWL zG7Ae^B}r=0(q)(Ol}fYO>=rG}A%iR~wLn7|rQFeIH21YyZCtO{3zQdq1kA9bnY)x* p=%@uF6g}l8<@P@q?Po{O{RQ{|L;AA!=V6x`XBh4 zUazN`nwlu1(MXw0CTUAci;7?*Fj;V~!XD1xEM}0sg7V7@(>dyPKlg>h%c~n383gxO z!yeA;Cn#_4=&((*Y$Ce02J1UJFy-~~D}pubwRd*faJER$*w|QRX>IMAo|{VqVlnu! zz0HRl4o6;qwIJ!u`27jmYVE>ILqmfg(CKuVVW)G#$8oTjJsq*z?fE@|J$7jcMqRE6 z%n$@YU0t2|!|dz|3JRfV8ur$ZPxJFDm>~#)nwpw!Uo@J@4dhNV7z{;Eu(q|u_rvjc z1~UXfP+eW!!*U!i_?aE9s;Yv%zCO@uwLm^0Fbo5|y}j_*DFN0dG=GPoICu3motitG2^gCt>F8cp*BLZ-;|D#X%A;={biz%5*rmU>2 zyzLkodiOOFNo}RmyVu48f6flP-<4l~_4}~dl~O(7pqT|YcJ;OIc=sDRClC>i5>AOk zqI0FCrB;bVVk6wkV#AvBl6yh!1(2G@gJtwnE0It+!2yDVaD;GTKMv|2x=RdW!IJt1 cSF#!EFGyBh6MsSOP5=M^07*qoM6N<$f&@!HmH+?% diff --git a/interface/web/themes/default-304/icons/x16/clock__exclamation.png b/interface/web/themes/default-304/icons/x16/clock__exclamation.png deleted file mode 100644 index 4ab75f41857700dfeab1b535913c22719ec85da3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmV<60w4W}P)P$(45Hm^69Xh`f>US6J@2Ru)}ZBc`b zxd$`BU<@-9L6D!He}&;VUhp#>$jQlpmX;PME-r=(=QZ%WQwot#H<*Uc0UP3Cn4t&) zxm;c|!7#zCf**cA|L(nTVHI<~Nr^_-kGjAE%+ec?vb}{H1{mqz) zAiyesb06nVfFtM52J`DQ%ZO2QA|Vh{_EV0E#o|*bDJj(wi9~n%n%LnOKeQR~9)XBQ z3Y#l8_z__(2P1E~M7;^YE{cS*k8&VE&mGcDv2CUIF0mS0$z*>Uu?*ZN9e)AM&1+ZC SyF$+Z0000L$@TWiqkjVwiwiG+a-5$8Wp-;}dctq7F$sc! z!5~<@iW>7x(A-&*6gB5|no`@+<%?u*em&3KIn;<=bnv^ZOmgQG^icf8cKp zhl6stT$J1GraT_c8L!tn2DkxQ1lMEO!x@~#4ALtYxkJ-|#aQe`GLtENJv?k7xW*dx zaOQ7!Ig-j|Im`fp0Cv0nWMN?)zW^TdphMF83TcibOUujan7KbZEC{q( z?YSG{`9p>Ixx=sVVYWqam+=m!qR6v4MfgYF}S!m7=1&K%>!6DwXQ0bz?CY#Gu>&@m#19H~=+GY3H=+&%$ZQeY6cER{;H$z(FWLZM)QM|&fD4x(Glxl0AORG> idEnwd7!+qQL;VKE5=3emn%k-X0000W zF_2tZW@ZIQEs6oYzP^0Xv9a0v&z^mJ;lYFdFF$+$YwGFgfg1o4y9ks!bpHI~n7FuX zkRBf&ABX{7US3ucX3kuD=I-79x1hFza7#-IoDIStxpVjK{hu~>?plx@Ach#==H?c) z_w?z9AOnzbOiavwbTJS&PEI*zZr}a^QvkEk-`^j_1<&8V2g_gG zu;JGc9-fQG7#SVF2H4rz<(|8H7i_>QsA5x7)Bok=<^MfAJpKct@PATL(*L}?y#EuY zPyfHVyZg`ohKBze85s|P4Y0DZia&Jj+#_TI?%cos-@?KIOvCVnGt2%@ojdpc_wV2T zdnhREoX^1E1~vd_n|=S3DVsqt0CMJQBtu~A`**khKd{mL|MzE=|0ANJZfa_3MrBAz zLBhbu$cW$B#iioZ<;%~WynTz}Z)E@{pRsCQHqGp3pr_ITkXn!)5Qbz3AmHNSVh|M-HPYADZ|v#q-F^M$&1a7v zocncXliNR#=4q{p@0@K!=7Q9K)WQMO02Uw?2V!j&78V;$PR=+U9-fM1Z`Q;Azuf%a zn8$S2%8<1YBnMQZ3&avoJ#YhT#n!Hia`T4R z1>ciN=<4d?)-vWG3)ceOa6343h#3kmpr`eYPfP^x3*cksDkPP!AP(Gs2m4Q;`R(;Q zX0AMH;F=NG6Km78^lVYJz$hoE2}WW$eEVI)4fbooCrg^NWiQ`1SRT27l)ll3R^^U5Z~# zOk5nF!kNDXh9-PIE}2eO3-vl|@9aSG(JVAmw*@v|M&RAbOk>jLy@s=W0jt$|@Z8wg zf&%k>Ux!^r>1sxhNo6Xu=@%Tf&ScH7%?MN^fq=D`( zO3!Y>(meMV9U3qijb~TZ);?pP7mvpS#iyZtWS>O0(4hgnUO&kf3O~AHcL#R6y>AEG z{HzeDyom0hLjyXUZYo_Y3V}vPR;$$z2n4`nG6DI8z_Kj({eHNA?>bap#rDvl0j*Z+ zT}`Jey@5{~8=%o>glm@qfzRdOO*UIWhX%;oPQ~Wt68Hz|trqDMz@`fx~CGMrMu^j-b;U7$8UqhY3gj!C+^00NvlY;#oX;<`iH6 O0000+S8m*Vosl!*j1}Jz_J2W&j5(CblK0X%EIv5Nl1_uX6 zC_~x*2PjM?lfmh9&XABuBuIeQ>lM(NYQHSNLX6& zLM{}^H;?eUT7}maz{-jbPUmcjT-Ms!`oLr|Pwec-aJyF#iOV>-xVR+}mCH*c zQ(2J-hj(E#nkL9)EiEmqxw%97dhmz#>Ph0)YPO@tJNI0w_aSa>%9M9nM{a zLh(?gQoYn@o_w5}bLTRdGHyaO>QRQWC^kMmW961Ddv_l=@ae&e z7oR|EkQhjgpaI@Muz3CY{b%mp{hyPQ^B+W?y?5{bvW*+}gX9Pr;Ogp{e*F6NPtV`K z{~sC}`v3LEkN-jJGq-Mi0?83Hz}D6_>*S3apI!kq+S}Xz_w@AqpO~2Vf62;~pFna1 z4KOn^3tG5p)!`Q(K7efp;g>-6vbAdugX9Prpr@xNYHMd#zIy%oW6xi|{sO{lH*7d& zXK!B)k|St zOffO6U#j=<5A*s=x903$ZdsOjK@N8e z2n~{Mu@tOy$NXpBy`C@Ufk#It-vG(1JX3vG8@q4nEl;rZ5qtyMCG^DLMCGis?q793 z{J#0H*U~sbB!J2@DMpKPwbQ?vde{>5Y{=PQmJ%cR{01XES4s&%K%`|BP{&#f}sFN`OR#SG~cR!WPq9e-0 zIK)(d2tn=;+c|*tJ_HGDdtJ3cx-$T_c3FJdTpOFXcttv7BuM&bgn$qbY2Zm{^<+>DeyCQP{{?-#1%Mm?ZI+Y0 zWd6m{^ZgHX!j1s@-g}~00000NkvXX Hu0mjfUolDD diff --git a/interface/web/themes/default-304/icons/x16/color_arrow.png b/interface/web/themes/default-304/icons/x16/color_arrow.png deleted file mode 100644 index bec3b4b7fd536b5de72eb96814a712b4cd7b06c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 777 zcmV+k1NQuhP)nBh5DCSbAShB$R0QiyYK11U(alTECf#&)H@lhLneBLJHqo;`_#OWrp6CBak|g|} zD1dA8!ej>20<>;2X>KyD-_@qLqZJ4;aR1+Ps*sVTCsgvCY_M$Q4O*pge zv(Gt>c|;904QLtkI(D|P&>0K9ub=M+>RsT<;K@Fqm{Fs}xzgB0Q(vzOD;p3Pu$4vc z89baHSI)(!{p#n-bNzLV0ipmBi%BWiv!zF0GxgTG(03u_f?+`}3*iVfhSBeNQaV>M z7w6Yzd+qR>9pYOGAR1;`E1q;x`MO{`U=|>A01O*)IcVp>azQ+_dPY)Zakg%(PKU&= zD}W7yslGR=-H`~#cCn3zP<8<Y-L{6Qs#6}o_i2Q+r;>pGfgvIPYHYO@Cw zV)lT=h}!R+yIIrrBu9uxNFHb-q;|1d7rxV*Y#ffU8?ZoBi-8ot$|l#pUHhZIM2{*l zH57lNu?$oN)-yMn6DKd3Be^Ff%NPcu-2Sr1 znd1c(Td*Com&Yvl;?tix4*(H33OujPsN+Xwi;utLJaTwSInEO-U#qdbSf|(Q(bxJn3fNfsLsvGZ+7|g3!|4Wq^lpz zhmz9XvvST`13&@(Zin^<{cncOet0DjIYr$4Ao}W!w}JQ{9A^W}t`jh+00000NkvXX Hu0mjf=oDR}T!62fdJP025&{1Kp9s(&3K^LJ@ zASoG$kPu>&NfC6YM8UOobD!<%zGn6{JCFVP{X&|i000000000Wfv>Ly$2&>JSbN}j z?zxf7VtmS6+-J3uo&EEzR?nTLeOEGGe%N-*k^)EoKZs5n}B_03{2_foREmSrug zv6(Ma$2JeG{7zB8D6a&>mJu~Gki zOY30*&2A%c|7*plcPYph$@S6MLpD!W7aP5Fln7<kI@K;8 zjORjAF<+9;?vdpC=%~C+1n#uj1>ke7P7aD*|X3>1k=ym z`C<0&_JoE>EejI=iA`Zj+t%7GeFFo|ocqSWk-c*JubWG%cV{e%ARTw*&wt0NvullX zQO3N)v|v)Oyn0V(M=D7d+_-T=+M00SP&K{w#mGNDUOOWK%N{mX8kc^#e{XBDwwca~ zO$nY#h3RkgRC4B4es}x33l_H@8yen8i-qO0&88>;pW~Rzn{Pe$>$97q{YSTp11}bm zqm5aG##7m7TRW;c{q|?ZADy5pL~Ggnk&W8=`yowJA%qNuFywINh?9eF7#beFPugaj2-up8jZPkf4#01yIEB#nYJiroJn XtIZn*^Jm)000000NkvXXu0mjfcT0#_ diff --git a/interface/web/themes/default-304/icons/x16/color_minus.png b/interface/web/themes/default-304/icons/x16/color_minus.png deleted file mode 100644 index b0299cd5cc92550d022fc3f1a3f8aeae656edbb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVp1P)BIB#{fan_`Ja*iPaX>f4Un@? zeb1o&jS=;`GR(5ljc33{Pce$RCPH>SP#KtMau}D?FTi#wjM{l~%sP3_H1z|rqoP4o zBd8}+<=J|#_tL%G^yEF@{vQ*xx>30=JD%&krmIC)u&@fA2Bj2gps_R4C(UaooG(wm zjyH=6TM!8lCm0mn$+6s?E4o@O3Yr$QS)e5#odSOslsi$^Y>~T|(?3048VhRv^L3&b z2@rNNqGV5-Z5daPG(qnMqYJboq|;E#K*9oHqqv4>8xm&e&EkkpbVmZLY795+eaf;3 zF_RWaZ3i;h4G9O*7L+^L5NT?DJ6;7ESzB3TaX3P5t}q{xS<~7@1wj=JOBz^~O+xQM z7!JOo<5j`a!Rvq@swU)cJD7sDw@P1PzfC3TQfKMSSAM4*! zdeRnYd~AF&Kn+1#3%1gL(mIp_Sa$32EaA#FVBs4RFP7$d2M!*SHW2}m4HT+?5KvRV zl~CM(l^RTaUTS`&HgSn(tv42U@XndNY-R_XW=a(TiH{(G0KmL^3v+rJqXBzw)z z$u5>}Dn$8BBbAs5)`EMlCtr;pKi#hfX+=~JXf2QR%}jIq)RDhqpgnx_=!}Tt7$F24 z2F@#^^5}uF?4b+h?)}5kG>;*w4%w^MF{a+qEY~m^UZ}_Qu;s$ZEr1H-fjoU`KWB1h z$qx#Q`KxF84jTCOvX7ej9uFo@jjxD= zP}}HOvSWWX(N+vJXGyoy^cbmT^Nsfnl`rT$`l1WpUDdnrxs}%4jdv7|RYV^qU?%0z zT5enNK@eMLZV|O_VoSTl97F2^dXK)~{11QH5q_%9D^@#l$pVL_gc2}X(>9-~3kvEL zq)dfP9<}7$oxJAR*S|OL^L0-Q|awbaO7)pdzQD4cFs`66K9bc}9nsTcK3tL2)@A zQk#wt!o;kLzfF#G?s>X5%!yQm)+H?>2v|x|44GPIdWjojlWXIaF0NY@LY#N*@7AGr zvK@O`*D?)3AXE`(6o5)VDamXdqbrN?@Z|l{y5c!jCBU3J)%j}w)hoZR{99g*Cnb#w zjA0DpC?v=)mE)V&udGD1NBu0_ArgXbu-ob7!?XUF`Q=2%uGQ?89hoqj-6Du0rD93p z+DJ4xaIX|i-|px9X$CJH- diff --git a/interface/web/themes/default-304/icons/x16/color_plus.png b/interface/web/themes/default-304/icons/x16/color_plus.png deleted file mode 100644 index 23b3e9c32a6e3e7b2a26f282952dd31ff52ab908..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 762 zcmV( z+nZWMEmn^b@Ii~>p@+1_Ln0g4yv!!ubT-@B&hE@+JS1sF=*bU!kG~JUmn2ET|3LwK zc~cn5fSQHo1BT3XM)il<2rF6vKLcBPSL1lkR7C$Zoue~dj!-A}Oz;$qF}G}wJ8zz} zZSy77yJ`#&)C=Bm(jAmxCO1}g_)KQ#K#AGuOGQ!?jn zE{}JD@P{YFGYTN;V^k|1w^RALkhQ@qKxPjZS+Fb!@{o2wT(o*dQo~|z{Ju0A5?@jP zYX&1-cR*W_2s`VLHC{kv3y}7}a-h-2mRJN~5B?^!i>|iB(nyTj9$`Kr|H$Z(O@t-} zj>_OTE@^WwlJN*N6Tb<*34Sj;)(x2_%E!AqsKl^H8_;lp#!ft4M>9<}0RLav>_CN> zr-HeN+Mlh5IWy~uMTkpC9taRpJF;3Eu3KYNUcQgx947eobS(x_0E_EP{kZ&Bcb*Pa zVrnSe}3M^|-Q!vLg@11>xigk|#f~lo5w|350;o7t}d(JK%^}0D-1VxCDMgX|A z_zBfunka@ww?Vu8nB>OC7f8irNsb%707*qoM6N<$f>t(ZCIA2c diff --git a/interface/web/themes/default-304/icons/x16/color_small.png b/interface/web/themes/default-304/icons/x16/color_small.png deleted file mode 100644 index 085a9d99156d9ba00b083626ee9ce0cd8905a049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmV;M0c8G(P);V!^1-W=r5t}0>alsc^k3ERlQK0V^VQsI8_{+ zl`@89;h9cYltLW=mcKBHm8%t{8FuiN&#N|VH@vbKPzwF$VjEzZKq#&g%Ebi*Z>K=g z0R;Sj^A0#Jp*;VhM0%2fCg79}QmKB(ztlGHc?%SBKfB|NB~8Gb(5DhD ztD1p`3S{s`4ewbX>jR>embzg~q%?tv7)jRJHa~+C5j-IM-9YRK@VbFLbB&vHG3^HA zCt)f#qgddE18I2MfHM#5ihyZ4rw|3THy}GPx*QP4QcDy0NA;N@^Q39t(`zycs9W&-heT%Jy+$x5ZNHy8}+qtS>C1Om4{pRcRa z=}rX#0Ta{zEg;WiGCTc#zd0NZ5lz!$BuS1zggH}Esr17nf&-CAL!&I^m-E$_=p33zu#6Wo!0aD z63XR@ELyF3hFY!dL*N|_!15^L@nou4te}&V3l@{f!eTaC(bCd`It1R}fXCwzZg2a@ zT<+V=+1WLkw!Z$7MWcB#;PH5$Ah3u7u)c)dZkKOvZtdi9guQ0v-`7b_S zScJ*XSR08M5{ZP6!_esrWGEEgJ32bAUtYFptJVG6V6YD5^5viN^Sont^aXJ@rUUnY z3_Rp=xhmN6PemfphFC0q4fn1=7VH8OSO)i*In#kTAOH(s@gHP&&(1M({{YBF5A&G> Rj8Omp002ovPDHLkV1oA=7!Uve diff --git a/interface/web/themes/default-304/icons/x16/contrast__arrow.png b/interface/web/themes/default-304/icons/x16/contrast__arrow.png deleted file mode 100644 index ad1107bb01f1023fd3da554a20d827fdc1ffdab8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 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 diff --git a/interface/web/themes/default-304/icons/x16/contrast_small.png b/interface/web/themes/default-304/icons/x16/contrast_small.png deleted file mode 100644 index 606c490662373013d52901484d9e7a6e3021d777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmV-a0jvIrP)YVoy?XUOJUsk=OiavwcX#)D zKm+Os8qnU}9{=pwvyV4!-28v))an0LR@VQ`%*;Rr`~(`XhM)lz6&3L}Zru8K?AWRQ zM~|NTZ)@ua#!gOdzkmj8B4|KHMuz+5%{%v8xN!6T`SUk`HV6Lq@Cf{`t84rWXh0`H z1Au-ON=iyeTeohFEh6Dk{1IaXbS9 m!$lyT4aBNIJR*`ZsTcq*+_FUG^_^G%0000Ke**Me(>FQ$A}1vh+{$hJz#0JVcRx1=YlbI1YpB)oNWMa0B!+{ zlv4QsA`+!isnKjU&nuP6p=p|$>$)$kR%vIfnw3XVBq(EmzfVplH|VKzPjo4ULQDL`Q*HidY2|Vts;t|bt&ZufUPhLYXF`BTr$S`S(fDk{^2it0|`8USXcn#e*gdg07*qo IM6N<$f)Xp5+yDRo diff --git a/interface/web/themes/default-304/icons/x16/cross.png b/interface/web/themes/default-304/icons/x16/cross.png deleted file mode 100644 index 45d6e0d22aa95129d1ef11f92f55d1cc2fde7cad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)wp+%G=aFsjgUQkO7wGPWD-?`dLSTE1K_GO&_ya{jzQ4+-Q{$^Ik4H*=wQTWxoZ77(nI#!AGT{ zH_4>F6^qK5JmqrE?mnG%c652uQGh`95bQ#D$>;Sl9@o26O0N?M-H$}H8I3A4I&=dI zAjl4cZHO1Km>yY{!*MvQ+%comRj`U-4Qzl-NL!H4@zpaNdvM2$4qe`K6|A=ebA^K- zn9=D~z`)!>^x)iMm+2^2#sJI%1P{(D5J^zR8^0imVF99z;28p6&J);^po}+u0e)j( zdRAnq1Yu5O5%Uxn2cuweUZli~4(1u&v=@Xx7z~3EFa!p{fSXw$;^u^I$S>%JAI6%f U0Y`og^Z)<=07*qoM6N<$f})eRe*gdg diff --git a/interface/web/themes/default-304/icons/x16/cross_circle.png b/interface/web/themes/default-304/icons/x16/cross_circle.png deleted file mode 100644 index e0886b8ccec4a51c1f59c4e866378ee339907db2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gPdP)E6l4}yYYJt)|_6p9B?8Hg+n&x*(0HxR)Nym;7QV@`$5`rl0_ zgZ;^5-57(^g|Uv&(nB)3u7_SE=_$N>-z+Pi!?D9&_$6Py_j#V=%l82y!vEl2)&bxl zks&q#Vp{-n#0HV|;PD*yGM<(_7X^&$g+l7bM8d32O<8BNv(DMfjPpZLtkc0klY6ZB zTfoTUmKLp|DE9a1X*3n(96a}Ja?(Bshc(vz84$|^gQ_txVSgPTN3JiUqvzn_UU6*9 z-e_u4+0zJEq4mA%?>F_~VHE4b(2$E*r>PXa?CUex(+Ic=@aR)2WvPh-Zg+RP!g{@q zl}ZImr4kkj1uPbecu$gWRhIFvx7T7%Bj67GX?nZ!d|&{d#pC#(wH0%@9O}A``F!3r zuaJ4oW2dvzVNWAqnI5!c(s|m`gF9_)xJ4q-Y#4?+_nZA_)L9k-mgsX{$K%#fB!Wj5 zn9JodR;yLF$LvQU){?k{G#?yUHcn`LqIs9Z44Z4Un#(JCUJr%LwD=PjXiIMU{pv|a zhkZz2!R99OIBchVK6OFd#(6pvH|cOJ1_D}ElI&v&(RnEX$HW^lFZ%r& zYv;v-#MMPyrN#|PzaI>m+2&^Jvm`kTk9m%Jtm%SZB?bhDcH(jjAejWXbq!$qI>1|o w$2`Y9(p({;>=6Te#3e!|V*jAs)B4!^6KS>od}!ZP4gdfE07*qoM6N<$f~f8zN&o-= diff --git a/interface/web/themes/default-304/icons/x16/cross_circle_frame.png b/interface/web/themes/default-304/icons/x16/cross_circle_frame.png deleted file mode 100644 index b67b8c90834a973435994ffe66f7098ef3f84711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 747 zcmVQu}Wpv?gREAL(;%#Nr5?M|V zKbD!HNK`5-o3-}UnzD^eRAd==(T$h?p7XR|MhAYphjaeF=Y3vyS#xtUGa8M|Y&Nr& zmKN69+Ip_7txe5o=k%nZUQIj7P?j8WS;hepzEoSS)&Y;l6FNFN!r|eefcnkN%}{@T z{{Uqu`|kk~lgXraI2@BCe4ClUC#x0jH5vi+AwD}e*vG`g#3W_O5eFCy2I2}|IFrdF zHoChJ(CP4lKY#W02~u5M@HIAyT|6Fx-EMc1LoUv$ zbgh+JJ^0SwFkf0Kf+r^@NTpIpBoc_lV*KiHjOXQHxx8Ftz1}Y%muWN_i{J0Zi`rU* znwqd$QGw?&8GJq;g25mnk%*8TTy}C6ii$+m?RJA)rdF%(c)ecCR#(HLQeh!KA1)ru zl=t@b#Ef{QP>AgM`Z~yEDwV3+?+;+1vlAO-Wmx@>{P$m=-LhQ%C%fSWxvZ|P?&{o} zYx~W^$5<>WIVCT0fgt(#_*gJsScugJV{kZ}+vKvEni_@4WFGPP!k9G};VdW+@(LFN zX{aaJ$v=-WTU!AbjiwQDSyfdPtE{Zl4G-UU1%ok6HC@A4ZZ1A@DV&CSn$gbhkHTiV z=OTw(CYQ@uadEL!sZ`z=9K8E75;?%TCzF`E-holYc>(n_i$wN88OoAFF4Y;%S&2k) zK_-)Rs8p99O;5j$N25QH3C(Cn8OoBAc3Boj#!+%EWoKt=q*CeaoSd8?&S;t;n$eCj doQr8E>o<#B8vsi;q&)xt002ovPDHLkV1gMhTp9oX diff --git a/interface/web/themes/default-304/icons/x16/cross_shield.png b/interface/web/themes/default-304/icons/x16/cross_shield.png deleted file mode 100644 index ea75a6fc4bfe6278bd47944ee5d4af475140844d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmV;M0%ZM(P)pG^Li)pp``z#N`+Se%4iFLU0F?0&%Y>g; z1!yLoC^Y+(nNQhe*oA)sln~QhfY1j?`oeHcJ+tpW0U_cl4Nnp_s@Gn(w`YEikK>QA zF^qR~WT|(bXS~C^?5F`t0MXBG_s&Xnb!dMnR zzDzr*-rgN{)BrEQi^9mrL1t(OKMf8dpI4If7kp9!1DNdZ$B%CJ0Xu5IJix}5)4Bi5 z;Xv)-`=fd>N!n*e4Y)<`Ecf*6ZnU-GYEx5ru~aHyKA*>QI*rL>5>u%Z&KZs9HJdTq z(y~iVKn=J7FdOacEIzi|G1A(K3!;dzSPW%Z#zZ1fmc1k|Dg+uDzLRrP4Y&?)fl{-N zY&Hzk)uEr3v~nhsDfgH)n%_1Wv*est1Fiv_oi`XZpIWULIzrCna#$!7%CmKg1!o0e zlN~kSGJs*Gq9Xd-YTeVyK@u32i^XD@h$!yO&?jU^4Vb3C>Jq?3uU@|$rYErcfW(&y zT(ivAIYHRw-D&NgI7K&;0OABdWU;n3`%n}Q-J&9aN-QW=sAG(D}s<_xTc{e<6jwypvgq_g?IOu6X7r;HP|MZE|#Bp}m{RIzB-jY1vUG)F}002ovPDHLkV1hd9 BKsx{c diff --git a/interface/web/themes/default-304/icons/x16/cross_small.png b/interface/web/themes/default-304/icons/x16/cross_small.png deleted file mode 100644 index f55e3cf6aef8cc0d5aac7c757308ea2fff0822c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Q#@T9Lo7}w|M>sko>_H9;uQuT z<}f3J3Wkr80(+-4GPe3pVf1e3`agBbANGq5F}-KhPc>9J%znls`rpIvU%!ujN`isf zsfLvf>CA7o0#Xm7Y<4t0Mf*#MVMm+{CyU&L%e6TmV>zgBC!Ypb(W$Iu4 zMbQmr%AY%p6vQ)v)dC7tFPwMqEvVDms3+0rDaml}^_uS*TkF|@?ql$D^>bP0l+XkK D535T# diff --git a/interface/web/themes/default-304/icons/x16/cross_small_circle.png b/interface/web/themes/default-304/icons/x16/cross_small_circle.png deleted file mode 100644 index 948ccc36c5e141c36dc0ad9e8b7ff555a17d489c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`hdf;zLo7}w|M>sko>_H9qJ-3j zmd3_JRpw@K0e$92#sRmuRs5zfb~kpFTU*4`i^=`_SsQihzItNfe8-vz7J+PMSa1DE z`uFF&!?*u`pFLA}^?z^XWxM7hokj^-7jClq`u^7w5&2X9`Pte33RP>@yom?t`NEKE z6%+VTa!I9bz~|T3*Z-ftZtdSY&TF`%8tUdIrj^xpZ~pwgxT&eWyrSaIyzJ!Sy{$J4 yGT7S6^a2XiF1RV!F)wobla`d6Xrei}kFlTo(2lm5H_L&(VeoYIb6Mw<&;$Uor)(?$ diff --git a/interface/web/themes/default-304/icons/x16/crown.png b/interface/web/themes/default-304/icons/x16/crown.png deleted file mode 100644 index d48dd5d9c87304fe6d6c261722341e7324486bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 645 zcmV;00($+4P))(y(W>pNHSIA zQ?#~F(pad$ERlD+Ol^B)1MlZ^0tg>c==wpWmi=%rAZG$tQni61iGCX@3#g9)D<*)P z4y)`49Z>9ShJFJ0S`27mfQ13=i3ioV;mO16o?0*l``;wMifzTq6KpOM8Wp{%Re#<1Z0c==J97!25{$>lH%#6$+FqHG_fO816f& z1Gif>IQGs(mt&<4ya}ztL;p^6?o&>(nQ`E(Sth3@SB<@LA$i}f1CIkc#4Gf9a&_QS zWGzy6Rj~dOO`1Fo*j7tCwK1Os-Olw0HRhwUE)U)#OT`Ax@@$;1T!t(5T!fp9;CbGL-i7r1ZJjK5f&1KCE;SN3MRAbH9^fy)Uv!}sks_nc5}nqe_t@eKZ%76Gl== z6eqG!wT2_h1)gjdd6oRXJlCAYfbOdTJ-s57uni*v0#<-Sg=*??IUd-4WkJtojOF+eoob3angwSR|Q!7SOK~FKA3{{wv%wajKmKqQtAE* zNIpIa;2gZ+0_1KLnCUpB0CKnP73Lj9E?~GVNx4G5CCmlnS#1!T9LOtEhKyX>#tl#a)2=D7}i0)~4GKqZQ z^5jWpKWYDU`Gt*gg z8p6_IZKG>HCGAMHyPPgSXNcMq^tRX(>lFfn6uD+fUi#=tvvdxHO=X9ys)c0PN*zgIoWcf zn1V+|F^u$=1u`ZI5z_n8zUl-HSW-o5yea1L2U-pUF9Qd%&Qgo3OO0ER)WLxx%RsP6 zC1~q!hv%*ZF#_onLe|oFDHfc0USQCC#q$-~^g(bohG1@7&Hr1%=Yd$X8@Ena zs#s`qB?r`DOe)uIP@-9P8uc1EUKWHypMKDDf|~q|7;&6Kf6p{|hB^BI?D&@?Zb}002ovPDHLkV1gX> BO)LNa diff --git a/interface/web/themes/default-304/icons/x16/crown__minus.png b/interface/web/themes/default-304/icons/x16/crown__minus.png deleted file mode 100644 index ddeadb3a1d6aae93ab58c3b3249ca50939507f7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 662 zcmV;H0%`q;P)TO!g}##^TrgLoF7E`#qZ^h?H7r%OemvaV2cy7!A}`!0d3dV$PZflPTqewm8G z)fz#|LKdAsu00|(9T3(0KJW7sGobyLL^qB~)$G8=fbz<;pa9C-Z_Qg7d7Cu&ygZLZpuXTb}qhzbLHA! zfpA)y3`8TR;{dOX0eyi@GQevIpD@^683*op3*{$txm0oBLr3m!Pq>=Fej#{RB7dn= z)#ES5K|_MyDo{U>`dM?hp2$kZjRH?~#I46o`&I<4D)?%$;5xBJ zp1@wZ4Ckgy!mvj3M=T7X)FgrOmkJKNcVXm}UH*lkUJLre$I)|Lk7t1$xUyLZ^Be^% zN(HR*Cc`*^K9;fOay|iDQ`gQQbM|}+Aav4zZZLrnH+HB%Bb_QteC$ra3FLE*i(>1-R_|rXoKySFP5)i`y z>(8kwO!j0!+`(&`3bO+maG-TzAPm}T8l`PGAlh@QwFlOs#EZhgUf`TN#J$T&*h%+xR)fO!Q9U&noiT3Y@PKRd3 zx>p=wZm7@)ylhREjxb<}^8u3``|;3}1dqpqNQL5ti71lVFUrWCEh`$cXJXcQ%?CVh z)WC3I7rG2l5-`>h21oTqc&4+E5V4`p&(ANQlK3*E3S`s>1&g1mF#ksH14iv&})R+*xJ{qN4m>)04jOz+sG^x;O-XxW+x8!(d zkHW9vV^9Y(v)J>l%@JFuEIxqR5_eE@N)XklL&%&OM&{f^_6pxdQIx@E(hpGAk)70- z7)X!A@5P=MSjQvhQT!t~u4FB-;Y|70T)xz!-~Dp`JsmHoFaQ7m07*qoM6N<$f?YsU A*Z=?k diff --git a/interface/web/themes/default-304/icons/x16/crown__plus.png b/interface/web/themes/default-304/icons/x16/crown__plus.png deleted file mode 100644 index 66a13f86943ab7e5b856d71f9e374c4d2ec306e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmV;e0#f~nP)cL zFBS8(HAkem{Og=gSXoR2DDDUOvU_w)rzlgD>3y(#`vQPm>MbtpMCDlz>B6B_#P(Uizh*y z{Sol!^(x@&z32z{Yz`P{+phwAHt!Y2`-=QPe`~sWg>J>*2aGqvp}(~X(Q?p}w96VY zUeXY?pOna*D-{p8GvVzy?*|??njmLyM2EcB53H{b#gU0DEUO9`3vh-IIasR9A~{TA z;mms{CZCn~fmiP1>MQiPVqmCUgRoj1B9s*{c+FT^9z4p*9;ytnQ{Fy-$JX0m!9B-8 zwA&51T^bAJ>`wIrj@&H>y`n|*#{<8GN`pP54H77Mv*5&-g6Ve-^%W)uD=_LggMm91 zylykXs6-&VLWd2q4(o=a5LmGI6BP$~$QEcP_UU$oQdxW$wH*qlmP9?(C2yr_^LDCE zi6R$Et!W$8ByA#PN%kV2c4#d$R*jeUXwO34ry!Q)EZV;&HQ*|l7xb&^j~;yoOCtIm T%kOG=00000NkvXXu0mjf0J1lB diff --git a/interface/web/themes/default-304/icons/x16/crown_bronze.png b/interface/web/themes/default-304/icons/x16/crown_bronze.png deleted file mode 100644 index 9d0e752bad6eb628870b886790098e9f47bf5303..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmV-}0(||6P)_#8g*LoHnTQ(|m3Ou)DWF%18Ny?AK`<@3gBq~3>aNa z_F}fX7W@XOW-FHZD!_nYgbyP-P*;bQNGq1(?U=iH9vJHeuOWN}DW`}<&jEb(?Uic3 z1*Q!K3HaivmjPbO03TaK3E;J?Pnh%DW#EnLxb%dV4ZCFEbK9O@pD<}AnlO{+-IZ#5 za-WldS9TjbWg1MKE|Gx`Ef&0WRAS6X-f>eJi0OzTI_g-9UdPhyMj1%Cs-!8rZV+W) zpp4R|%|lW3@Orrw6+$#RUG5HWPL6d|ilx`D5JGy3;!L+r>-jGwZA z_w^J~7ylO$pjk)c%A){=ZeW#7fKOpL)`t0@9kX54c;9gd^KP3og%!UQYoYz%{rsE+ zuvJjCp4<)gkWQybJRaxVZa0U3{e0eq$+g=bL9f@ZAaL~@xDpPBZ)1NZ znM{%k0NoY>91dQ?+&Vsf4{K`z?Cre+1Rf(0MId{6`W+SmG&szSMk5f#S3q}At2Lq3 z`Tz(#7>~cgLZH!TK)>IIUato`I}I2PCqQfM_7DW235SOR=ypG`+HZkuHp_r!vnd0# zHV3x1j~GB}3y;uhwPc`Pf60!pvGGg>4h}lM9wC)Vk!Uo^iJ}OSB+0<~`cvR}9#&VM z$bclZ5v~LFXJWC~84wDEh~MwOF&>XE>_8A+uv@5BpUVLKGfz&wKp+sfNna%cTrL-} z+wB=a5TH`2K)GCoQmF*_e4gzfm&-w+P=I2wh*%YGrABXL$?0^S0cy3Hn9b(p>2wN% z!GPUDr_+V~{Ug}id<|P$Z(w)#ExUzY?=ws$-vImX(m4j;cNw4U66O&Wb1IeU9_Efx zsa(dD$H&FvYs?x91|D-?r_(*8{d8^)7%`VH)_(}?H&WmS8&K*L`l|t*00000NkvXX Hu0mjfaAXQe diff --git a/interface/web/themes/default-304/icons/x16/database.png b/interface/web/themes/default-304/icons/x16/database.png deleted file mode 100644 index a81cfecfad0e853e89f30febc14d22633d0cbe16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmV;A0dW3_P)G=>k#NgmyF!u5B zAvzF&YP0nEw7NiHH7XW7#DB^Js)4Biv002ovPDHLkV1nU0y!QYA diff --git a/interface/web/themes/default-304/icons/x16/database_arrow.png b/interface/web/themes/default-304/icons/x16/database_arrow.png deleted file mode 100644 index ab07ed078931ced354efe6d94391dc0ad86cea94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523 zcmV+m0`&cfP)G=b zq>KN3r(F4OQnCGi^xC`sCp`N9AE^0^ZtH~@1~W4=1~)f11_uX+RBT@GTz>z5$Aka> zlP>@NA9fyrOK$%EuUvWf3gr}m2<5pFecQV=jlHJg8mB&X6Hs078Ve00^(*MAC#q=IXF0)*(|cpv3hhrW7G7R4blVB3jlVuH*Su<%B=tZ N002ovPDHLkV1gB!1eyQ< diff --git a/interface/web/themes/default-304/icons/x16/database_exclamation.png b/interface/web/themes/default-304/icons/x16/database_exclamation.png deleted file mode 100644 index a10c08422bce1b9d3e33860db89575d7cace9c56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmV-W0UoS2QV6kHtvyU8Q{N$`;`Y1lXcY{7{e5jvBZgP9`*%&jB zi&BA3rz1wAk?8gMQ~g?)x;KbM*^XLy5Kj_Ll;`y*&hGn`dB6nI_Ze!SOQ}>6wOV~< zyEWg>0Mn&7Z0UsNc-I$)(l26`Y_VV?cDO=@o`Nj1u#3Kh$f1yEVX$Lxs zDy)5S^&(F_zpeWy$lT=xGRjV=RC-P#k$CBM_6mhUp3B3>1qDCLw0?8L#Up6lbPJk6 eA1RI63HJ-Mm^xDFcpTCI0000G=<3&dm_ z8?#lwWV#%P8G?g@!Pv*g2WKE|_7DHRPE+UqMjieCTl9?n&*$KH2-JLL83V&i1~W4= z1~)f11_uX+R9s$|t*H9{dt4j_o&huj4EBH5CUQyPEO8Tc6RngV0La~VPOH` yCLnGG@EQ diff --git a/interface/web/themes/default-304/icons/x16/database_pencil.png b/interface/web/themes/default-304/icons/x16/database_pencil.png deleted file mode 100644 index 21eba868a4a6e48b9cbc34abced0e6ba1d7ea6e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 567 zcmV-70?7S|P)5`)1K47_l9F(^xlK|35-rE9X- zh}g;uPt-*#X&bV@5ygaE9LU=OyLJ`- z<4GHh#xxOWnq(@QOr~pgyM4y#bQb-7e?Ah4Ofv78L?S_&=(m9Ma5%(ZFhIZG$M*Jn zD9RhGt-VI4vxRQ=BX)K^Lsh?lc{2wFsH%!yug5?I?e=pt8Y__HWi*>@wtt6>ja}^R zeff_A0@-YKRhDH)l7wotibA1)d_Iq2v4~2g0_|TemuoR^C^s=dU5@+rCMsiNe+C@3 zgnT%BeV5}Nt#h1k>VDI5#G#aH~Fi84xvm~$Adue~b!u%|j<^noAeG==r6*$8H z0%~e%47$3ynYavanjZ9Db*jmK&6yVebspLNXKfLD#L&ZchM|{lCP+UQ5Q|AlN){7J z2Rc(M{!880{?A;&`xvALs+R#65)3+=oSeDr?Cg!e?A*x0!UDogK->)EgR*op2M0$p ovlrVr#yGZTjGnAJL3%)X0sJ!_zZ?o}*Z=?k07*qoM6N<$f~lYFr2qf` diff --git a/interface/web/themes/default-304/icons/x16/database_small.png b/interface/web/themes/default-304/icons/x16/database_small.png deleted file mode 100644 index 1919c749805f469ce48acd3ab2aaf16825814aef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmV+)0pR|LP)U3wK)E1d3`l$R>ec_7H*fww zdGg%D&JwJ^Jz=D3?Q&0neU2`+wxfk^dVvZv8)Z?)v{bcb@)#@7{Z&4KR+0 ziP=13#*F{X&CUNSD=YuEx3~Y#$jI0QlryKj7d$*XaC!kKN7w)>D=U-8$jB||UPw+( z-eGNRP1p+>8XEbyyr8M6SwzqPadGh)TwVam)e$s+o0~hGm6f%Ng@px#dw}d7c6Rn2 lPEO8l9v+^IA&?hH#Q+q_!5%$0Dfs{Z002ovPDHLkV1iRRgI53m diff --git a/interface/web/themes/default-304/icons/x16/databases.png b/interface/web/themes/default-304/icons/x16/databases.png deleted file mode 100644 index 5cb5e5ff498765f03575c2df6dbba18ee3563c0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP)w{AW5|GS2 z7Z(@*FE6k8-`w1f*8qY}PESt<8q)lK^5n_?3knK$01YrhF@TVhJ3FV~4FiG(R9Cm+ z^@4F~YU<{hGiUyvI(6#*`uh6+m6ernCwF)E0r5=ghJmN2r85<)Hj zIT@w_9moTnlLO4IjVvrIFxw{AW5|GS2 z7Z(@*FE6k8-`w1f*8qY}PESt<8q)lK^5n_?3knK$01YrhF@TVhJ3FV~4FiG(R9Cm+ z^@4F~YU<{hGiUyvI(6#*`uh6+m6ernCwF)E0r5=ghJmN2rQhpWKi-Kkd%}xAruQzQc@+n(MvDr9Q^;EH)i=6zPOb!qVbEt`A43UlQRdH zT^m_gSYWuBm6f%bjg76DgM*`qi;JrXs3w=ix@ZM!!0a<@fpcPjhA@B(001eLL3yVZ RWLy9M002ovPDHLkV1n24EH(fD diff --git a/interface/web/themes/default-304/icons/x16/databases_exclamation.png b/interface/web/themes/default-304/icons/x16/databases_exclamation.png deleted file mode 100644 index 4f4ddf2e9a6d2f39654410532e1653f7182da527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmV-+0*U>JP)mUfx4YCKE9j3`8cA z5%&JOH!}SoA%xX1qbmY|;JR2W9+S)EmsKj2(`YoFVv3Nz0TPL%*$*}v4OA)>lu9Mc z%*-N@$RV9Bpirn`b#)UAV0Z_BEf&H8>h(JE`8-mo6r$0mh(uzD#hxLXEu&ifu>-Kp zG6R{i+wGtz3QngJBO{~mcy6}^bhK=>S{aB3e!m|Mha<@VdbR;NS@wDZZD-IC;Bt+% zji9txEK}id7{Oo=ZnqmWP5-g%^WDOD;50Im8qB7>|38D;$~R1e4q?3(K{DEl3l3Yd zzrVjnuh;J`Lix=EUT4nY=f)#^m_Lu@@)Kw@njx)LyBokeyiE^a{gV&OTYRlu!#o2! zdPHIG?(Qap&B54Fn$6~xGZ+t1$W0sYy*3JFNAP)J2*u|nn2h^ELZOflolZy8YPIEG zGssO3pt@i~x!8w9{1S@u8obK%Zr*kCvV0ynNV>YZh(e(_*DAu}XaFzbC-8Ami%Lnk z<$ygarDI4_WZqnS9J1*|>y)iO(-%D~$J@AphFIiVan%&P9 QmjD0&07*qoM6N<$f`~yMi~s-t diff --git a/interface/web/themes/default-304/icons/x16/databases_minus.png b/interface/web/themes/default-304/icons/x16/databases_minus.png deleted file mode 100644 index dfea00a5e831be7b7a506b5c1250c21478188fca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmVw{AW5|GS2 z7Z(@*FE6k8-`w1f*8qY}PESt<8q)lK^5n_?3knK$01YrhF@TVhJ3FV~4FiG(R9Cm+ z^@4F~YU<{hGiUyvI(6#*`uh6+m6ernCwF)E0r5=ghJmN2rHXiLXZU|6GxL*W3=A_F z+}zw4?CtGS@rA((poZ^paTs_q1H)woH8nK`9UYxad|p@<5&yrOmGx;Y1H(mR+{nN% z7nJ-3Bqb$F2*rYwlvD{&tzZ<8D2L)Y1_+Sn%A_P)w{AW5|GS2 z7Z(@*FE6k8-`w1f*8qY}PESt<8q)lK^5n_?3knK$01YrhF@TVhJ3FV~4FiG(R9ClR zc%fHQ6K;TUYHI4{nKNhppE`Bw|N8p+|CN=Ma3^`!v}Zm8gB$S%G^hMuKhN_2 z_h%rl_54>;Q)^2W6=h%mg`}sar*TS33eGT?Gp+Fds+q=M%}XX*{Xchd_kSrVsS*wj z4xk&{+!*Zb?Nf1u!P(>M{_kJs3D#Vn!}P#Zk97$b7grM}Cuc4&(J3(iox-4_qmzlv z3#*qd{=aRh16Xrw5!>D5V1^)|CMhH=2ul6}l9G}o*j%t;TIT=%UvBw{AW5|GS2 z7Z(@*FE6k8-`w1f*8qY}PESt<8q)lK^5n_?3knK$01YrhF@TVhJ3FV~4FiG(R9Cm+ z^@4F~YU<{hGiUyvI(6#*`uh6+m6ernCwF)E0r5=ghJmN2rJjmEB&v#!QsEIu5PwehB5;K$R9xG7^kG9;0y!X*`EIu z<{JK2Uuy9`^mW>Qy)_R1nI{N6VVEN{lfli+jltgDJ{4aW=qEroq)HeXc`iuZ z*Z$AY%yWjJgO>ql06721b8>R#0JCc&3kwSjH?y*`HnXv@HFI!qG;wipH38M+GWfHu mV8~=W!;s51lcA6uYybed*(u)h^+eqO0000d>6qHu+5>fUbtMuyiHrNtTtau0p)7U&BskXGbg6ad;fqnuVDUMe&J@4wPFd|% z-|*{^(dL$xR?7TMaJ;?cO855#2#@(qEIt{li0N0`)Ubm2@9)JlI}xCcEGRB6 zRt*e1mU*6HR5Q7;mHi0000@}!azY#@U|>3kxhrDfK?`T0yiK|y$7VWEJKPblAkW&!<2XXq^LQ2rGht0=ov)!W`Rpp?ojI=$Y<%@}=Z zt=iJ}x__Xeva*WK>?JrZsjO+7{h;8@@04IiCLx=YL7`@$n=xR{!NY7e^Ad@qkozYUQI&#o(LvnP-;}*%qH+oJC$*M7CS z>^<-5>xF%89#)eRx@pczJA{BBEiJ89r_=Zpaw(=&qwxEE zC@Cp<5FH)OP-yo1{V-~5FsQ6B8+jk?5CVdfl$1KX!Q_)G)KDnZ@OaiyU0r=AGc%K+ z(CqPeppdap%BEq^&iH7D5D+9MCzr|MGoBH+~u&aJ(7CxvmMcJAm{y zc2yvGar>nBUO8L!o_>wvj1GF*6uZ+w?w^CChecisi-Jci1d<_K9Gpdq4Tx)E zl_&1AqHRG!LIM*T8ylCMo!!K7oOAoW`8jBeItT}OG+TjkHBhAdLjwmKz5abF@F2(v z4Gm?YqM{Pw_ljaDZ@R pFZK(ccLtwnQw3)~E!*iZzX5(TO3;&9t^fc4002ovPDHLkV1h%PgE;^I diff --git a/interface/web/themes/default-304/icons/x16/disc_exclamation.png b/interface/web/themes/default-304/icons/x16/disc_exclamation.png deleted file mode 100644 index bd45b6d86f567966c603522f7af4be07f4269aed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 834 zcmV-I1HJr-P)7)If*rOZgXyT^G@C7?lzrQrwMZ_#DC}PCREU;4*c$U;5`2yhjY$l05JbU=u=Qo zz!Vl1GDSs2OmT7XrjnA9WI_?)*e__EOxI`+?WGyY--4JE700Wdv^`YlRa(2*VhM7S z)}WC!+Mhn_Qkt66~z2tT{jRTF2X7=rQ_X7@A=XbjDGbC&w}E=3%qh_`15f z^R)L5L4JPz=8E#tT90yoU${R6XU8zumqeh}KyNaDvrT~axG*Qo!ESf(<>lqIG?SN? zCkk?Ma%769H@jDPIfBYp@O6#A&o5$aZ7qa9umV94;Pncaoe>~^{G^*^2%;b>E9R8$m0q4li21BTDJFnzrNo0SjJ3_%p6rly{>j86o$IwN#?BmDjqR99DD z$pO^X6C0!%f+WJk3+gOjyPg0tGOu;7E9jQaZeixkzT zCX>^03akF-Wc#I1DjRs3A&7#cq@>ilcU#{$c@JFf8O+TI@GbhVw6ugp-#l355iGlJ zfjlP6doJUxBHErJOH3y@QIL?3uq87y^Bl)n-So66E{~hsKZhYzD@^@|@Xggg-YtWf z@hbE^k8$)o*qGPfB@qSj@$pP-Z0w%g+}tLP<2<4J=BHueSbXUzfx}z{i}3*7zdH+~ zAsza`6yGPgq_y{vL?ZqWWQ2!@Gm(*z@o{l+mzrCeKWeliZi8O&WANjCIJgWK)$KZIX_4!3IJEVJl(#I_-_jJ;KQEbTl!V&SqxlK?|dPbe*~V6YFDFxRP;cfB*mh M07*qoM6N<$g1{z^Qvd(} diff --git a/interface/web/themes/default-304/icons/x16/disc_minus.png b/interface/web/themes/default-304/icons/x16/disc_minus.png deleted file mode 100644 index ee62517738955233bc841c910b9fd8509864ce2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 782 zcmV+p1M&QcP)n&o4o{qy=kOhS_1onooe!=@e8dRUh5` zrJ%mP{&2gZMd@GsC~S^@hUf7TOs`16CoMSR3V5d-g5QfkFaVd!EhrQUCC$iWvSfio zA`#E1AI|OxlZY+8Mrc}xh!Dp9{(eFvx`SXah>eXPzODx`IWaX$GeokWwzl?y#q_}) z^iCqWF^0Wu4>TH$rK+mx5k=={Gz#z9I^1?Y%&WYcW{6}#b#=AUY&OPNy#}i*3y8;K zXl-r1Ur?a5#)_HXnR17BFwTf~g%D2A?SB zXy$reUb3L9tn5flP0bCSxB2M5O?mx3^8R_~SUu(?=ke}D5mAWQlli;j2M>7FX=$9A zVMY@LrKP1zadGiksZ@H8=XrnPeG6+a+RV^#dQ6-uLbR>z4Q*XngXo728)vYL0tB+~B#Il0??85#bY>FMTv5~K!yJ^?u*B9}NV5{b@b zW@ffzXJ_{k11Y`qH+qlkoFR_olT1HNrV7%DY~m-8|dc=FT?L<)+ZwCgR)qHW3TD>VxO-<9zS?!1+E71%Ub=f{%iN z0;;gEkSZ!FqKb=)_m`BEq;M2*T-kxlDP)giNS1U6e+y1lR$Q&_?dTd*$(0tJUhij2 z2ETS*Yw3H_KUi5+RZTMg5}c~9y4Lu8m}brIR8WsjLouxYtyM#3TEL=%h1qOo>+9o6s^80adaTI~ffj|I;IU5!5AMpTygHEn8@6!Z43F85D>_qRUEJW1H8Tz!)r8U3Ejn zt%in%+XONj*C#Mw$VE$69mwZo$HtDnrYK2Jker+>Zf}1!Vq=}KJC?Ar;)2`b#@gB% zJRT2z8XRB-9${qQ7<|rKIDaW~At525v^pjxbOu79@L*O})=h>nILK)e>`n)F{|shm zC6vP*nCLhcEO$LT5s*saACnG8NFWdhsKms?vw3-WEeyjrgZIrYV$Pt$)R#_-b%)Bm zZGyms?BlOUmUIZAAA(zvk&#qXRFohoDd|pYTkDuYIpfgKW1HiH;%!oX(sb0FnR@6s z$&l>s+7X0tM01=D3kyq)h=?fT^Z7R_rQwtK#i056K9fioewXZVnKK+mb~?L)eH?s_ s!yGYtK&6!T@nSkpy60W=PL_12-_|fMx&B3+zW@LL07*qoM6N<$g0+TxVE_OC diff --git a/interface/web/themes/default-304/icons/x16/disc_plus.png b/interface/web/themes/default-304/icons/x16/disc_plus.png deleted file mode 100644 index 7c3a1e07941988ffca8bff2230164b7b0b020ef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 797 zcmV+&1LFLNP)EBdDMd;XVF*S_f`Xq&b3veqrR7K7h=mswVNeFvosy(dcd^|+ z3MwlrlN#!4+q^TM__d+0a1GAFI7JJ-sGwWWgR|Sfd)-(SR^f0s`TF|$HkPTVsE8Gm zm6hdBj6Iy(Os=LPJxI@qq0OI z(W!)lgj%s!+)3Tp*2$j5-PmtQcVvOw7VF7Tk%*R%oq|1-m`bJ6chwRh1qqH|{+F$>TM^(a|yI`i<+q z9z3}FKRi6V&dkh=0YpE2_~QS)TaSN%SP3h_B*TiG$<`8NeVXC&wuyB;*Xlg+Sa0 krJX_IAo)R_ln2BB0GE}qyCTI8KL7v#07*qoM6N<$f)zE(9smFU diff --git a/interface/web/themes/default-304/icons/x16/discs.png b/interface/web/themes/default-304/icons/x16/discs.png deleted file mode 100644 index 4998c22ebd4375817edec712f8938b4d59970449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 699 zcmV;s0!00ZP)ZPZk_D~O|EczqE zwQ}p%rmL*AmlUTQmfTStJO9{ z#!ZpAPN(Y}9v<$-x`Ji+<-5sxGamgV!CAw#vGK*Hua*Pe&Amu0S`EkOJ?bsBY%mzc z$$m?Mp`jt9(P+@XzyKN?9PGS4dUYbc=wZ^hD1-3-JShSBTw6D00v zxs4?K{ryB2-%%##kFN_*p7#TrKZIJX2Hz_z6bc0>H(j`@%l`$;>-B-1T7-?yUdYYjOXgkMmwGQu zN+gn##{x5%OlwVGiD(L*S)bQ^Zg27Ny+>G>(4P$=T@cnA>?bR=5!`|<58+W>|T z5~@_HhfQE{I$0Ns#jAWi|1LgcI7WGMOCYalZ%UGL*5}0TYQt=no?x`uh4NgTdf7dGl0e z2fl>^ZGmB-M&G{~Umy^4$>s8?nI|)A!AQ6mOE9&g!0^7JQSLD%|2a=SV@I*bGq h)->^C-U6(R{RBRf_m#?w6^8%-002ovPDHLkV1f;CN`3$U diff --git a/interface/web/themes/default-304/icons/x16/discs_arrow.png b/interface/web/themes/default-304/icons/x16/discs_arrow.png deleted file mode 100644 index d354855dd5c0fa37fad2782522a2ddae1bc7f667..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 zcmV-21I_%2P)JNM!n`q(A}uPIP9tmR zra5hX%xY*WNSSZ*W7B<)ZEk*S(}C3nZR6iL(k#KK7asoadCzm6bI$KQhak|CoSaM) z78Vlu`T1MI?c(C%q>_@7bfhvQ{;!&jzsLMr<{bhK@~>3a4!n3htkcY{7|o{eg4wX5 z7*q`N`TSbkzb&AssEFWlxkPSmE|Hg)mvptNvd%g%X>m!kFgv1wDJ==}W&{M9rpdX+|7`joE)sPZxtftk1zcY=p`ZO-GE3W0^dVH@cDe;^ZG#XMxn&MZ2@S1 zo9|g!Syfi^`0ASb6@-Hx5R1hsCX@LP*H9<~F541VjgD39+YuPrhEyi&iOS`2@caEx zT3UK1H8qvMH5d%R{ImsZCRaEkBjfsxzzim1)L=2f=ZQ%e9UXkH-UE*D|>J-@}lL2hDvqRA^P_{|lH#GX-+R08D?- zz;YLwq*rA>mw85*l9ICLufRkikvayUm&NFTJc*DoV_=@h?OMNzYsGU7<`Ed<_K}aNB zDz|$XylB7cfdB-MV!$r+8KKDmz|#R-oc^twCV<1YKam6mk)53_)a&(j{Lh{4MVML8 zZ2_ykH}-9xK<1&<49>(?_K+t#ZBU>Epw$kOd+U_t_%c#yG+G*q#j5Xk-l5hT7yM?M zB{DUk@weW8s%9}y)uVnk^6gG6?O$jVU&9#7EmjgE_pOG`{l6i}(uMx+*8 wahpP+WTJis2DYo9y_Lchlc<)X5CRAM1m)#8;4oM(4gdfE07*qoM6N<$g0j$s&;S4c diff --git a/interface/web/themes/default-304/icons/x16/discs_exclamation.png b/interface/web/themes/default-304/icons/x16/discs_exclamation.png deleted file mode 100644 index 4f63b48ec74fb12d1a6e8089e3e564ef2a122387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmV-E1Ht@>P)V zC@(J$@p!y_k#RvmK~!O3VKUY&EWsa7CeQck_lu7RI4!tcR^HdzBR6Pg*D0GdV76J- zW&JX_Kp-e5?+*p!=jWr`++38MosDvGa-vF0iYw;(#%V`~9%dCeZXGc0EeHmKu|-h8^R!d+eeFJM~jD5(3>V9VVO z76}h#y5);k)2>v-#l@ZYD=?8rq}~HY>04lKj1R%>ZZM79+`3nGs+Ggx#6(0yAVfe| zC~H8c!(V5Z5HP$sIayg*Z$rTJ6zEkqz_s`?fB}Php_=Kc4^u`QLl1~ z8o2R#H+??vVYwY^;OPAV%CBc((OUY;Vz>tKfrnt2O@`SCu22F$~+go5l%H3JArh?scG1LKZyXg|Bd)OL9Gb@oC#>nXC=%mEN z#3xP7O==@$_S)=pa8jf7%3Ch`Oe5zQ7kwUFwiwvncocFXtA^u}Hn85401i3P;o;#) zY&KgM85#KktB!bOaoF&?XDn00b2KfkK~t@-(AYt>y+-xF0j4-aK00q^8~^|S07*qo IM6N<$g7FfF&Hw-a diff --git a/interface/web/themes/default-304/icons/x16/discs_minus.png b/interface/web/themes/default-304/icons/x16/discs_minus.png deleted file mode 100644 index 196b18c8959c73b3f21a368730541d3282435693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 739 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 LNkvXXu0mjfyU1!T diff --git a/interface/web/themes/default-304/icons/x16/disk.png b/interface/web/themes/default-304/icons/x16/disk.png deleted file mode 100644 index e3827760bdd28095ba0fd60a126fd8bfb7c42afd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmVG0aY~!6b_3j2?j+F6(rR-f@o3*hHMZB zDA4e+tf(QO-E3#)-a+hAUIXlwFlt8JGv{~jjLA9kKg(QqcLB2u%vX=*HV;$u>B`qL zzz4|p{qX*L`qt{w&9j$}GRemPZ_{_~Tz#+t;4=zfV~iwKM0G5{SxbzOjM@<(16Wlh zsxlZ1#sWeJs4AIk>jo~RL=>Sv0g$aFr9?&@fY&SlPDF^R69F~^LkL;ENc`^w&X0E(g*^+1LIAprzyE#7;2 zy-2g!1fbW8!_j4T0HCS}DFC=_J~BmP`_saq%SQm)8BmjXyQ9m9AZ?pTE(4^ODE64KNK9fcwXv bEI|JU(Yeq3_4wz}00000NkvXXu0mjf*@D-b diff --git a/interface/web/themes/default-304/icons/x16/disk__arrow.png b/interface/web/themes/default-304/icons/x16/disk__arrow.png deleted file mode 100644 index c364501e9cebb82549b737cd340056fdad57b52b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmV-#0+9WQP)pTag7CP#M4+q}&`96m!L`J3%nFK0_Bde0j z@z(Y2iGKbo+q%)s@->5u%`P~?JI4u&#bMQ6}xVAS|fj7w`;`o8Lj_ z=U>ixMzPEKRvQcE9NHM57y>F@ z{8k$Q^6EnUY@bL^nqFS{h97(|F+H8(*tG$aHUtI5r@ScYjAHw9V1@kl*peELjO`Wa zi1}IDSB$4ph)+%~sJPCJRlUHP!*?NB+2WTJSs9aY8e(~3`HV6Cj~|lB1<8#)C^+tf zTJ;pvP|J36YSI=q$M8Nnfzhd{tZ0U2siBrta`mJ=WO@gmX6T>LEH%`!ot%nv1Pl>0 zR$PTv+Bq+Jo730)5!6u2q}*w8y{GXt^p!Ud4)-A#3}v7@dUGg4Fv{$B*c1gd)UtB! z1hIP?24Rxlg5Mv&$+Biaceh7Ccl1UJEC=tP_xuQ`p_Xmql*H-RzJj^R375+!e2Lxe z63pGv0&C4ZJkY-ZHPo_2Im_7EobnBubB_8{n=Xxab$QWJ?Go5*Zo%9gEwI%Fa9=kJ znx~e|a$bHOD?Cujsvn8PV%>b`?N0@4i*>eTxxB@^rT>YV++T0KPXNkeuGRnm002ov JPDHLkV1lcWDun<5 diff --git a/interface/web/themes/default-304/icons/x16/disk__exclamation.png b/interface/web/themes/default-304/icons/x16/disk__exclamation.png deleted file mode 100644 index 3c6d4c9f2200a73ae345f14de22fee2e32496c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W^mP)MA1Wu+$B zmItHxm2O$)qKW1}=h97AX2UhJ+)8a^_U}9=Cyv%dFZ|8}&-4DD_pl6^mSxDwC54TR z|Ma?rOBV@LL-#4mmKU5CX~c`?A}JDTv!AtWv-&^P1gK`MQ)&NX#03iRBPw$~_zF6| zBKYEM#*`}$Kj#Ip=D;BcpbTYMx~z<7?R7I)Tv|eKaWUMFAe{Y5e4D-jxm=EbSB-u{ zDwJ!~6_jOXWTm8Hux1+bV!*$!5XLjv4%dJJ0Z#!KWAKhZ|$ypZMat znVA(MV;$)0O2CBk5ZsP9=?|#79lOz@+xoG+hTG3h^F^fEs++)Dw;!IlxfK?38pdsV z;TwyE&$S)%pD#(3*t=rB8*g!USTcW=+_jXC!&Gb!BdC(mpxXHty=E6Gb2s?vHB84& z@r9(WyUYpI$$FH???ptjklxDopiF*3JY#bHGP(a$N5P>*Jfc@}6> z40u`L24yJAlK6aL=)5+B^3;bgo4ZkPtWwh4{6s=Mn$d!)vybuOx(k${EIYyHktTD= zFm#G07>y>W5`)1g3H4|}?S&3JFC7JCD9hG!o7p}t>0lyv(NuW!_N*Xu;%25%qSv=c zLOoib&*?^&`VHtlW$A1Y?TBG}l!sa7tEi|bbtE)fEshR z3Q^mNmWw7*7imRG_J^c025OiMhW$FfmlnmwP(1KqaL)66-U$F%4RM%#ivO5$!4-`< zmxHrx!lF)-TA+9*2EK#mR|%s|C*n5SU;1V%LbB%TfXHPzZ1$3Gyf2IV(h_p{e34jn zHGbOdMS4V@Nu$|AT`#VE!w)q)x42m3w!?u-R;wYXmiaerMXRixImdrsH@hkDy!SI^ zb2)sOpD&9uoMm%T+a=PVwNr33_z5%WYwxq!vN*$8Hf-gf)<(UVzz4jWn#1(MLRp;Q zEE~2`ubri|# diff --git a/interface/web/themes/default-304/icons/x16/disk__pencil.png b/interface/web/themes/default-304/icons/x16/disk__pencil.png deleted file mode 100644 index 39b929bcb5f65c3b45607429ddabdf03dbd6b4eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmV-?0)zdDP)B0c=lhHdIx87;Ho@d{uF6>>IE?hQi31KIJssCsn02sv3X4liSXf+)Y4USBx|>oFp11^~p$G@ooU6^3^+d;X zW>)gD>KlG)i!<}{e;NPiLx(3t#IC9&wB1s{4YzbuSIkNW$|o?ruz)YKvr$Gv&G5VT ziP%}O3&SHV;9YLGr7XFCmGzg6V^aIKcT-a2bce&w~GUY3*vePySZ^2*`BEnTeGL*cU zs5$R)!z~?>O|05)38EwyQFz90 z&fHE|vlMidjDZ_&DNW8}O6&DkupOy~&*z6R#V)wr%>vK(jSrNaY((JZTX4fI9h7sK z%UAdsrP(g1s#p9nMNx&wj1M@@w4mMm2HbE<>!gjeLrP0ZmCkxi$raNL4XwDHqY8C( zO+sYG2kI{P@w9jtyw5Fvn>1Uu(DoC1DW@kcF0MEhe*4ol+V5CyDPFT)v*AB+6aO0- WH%4t-vkCP80000IqP)!1VQ12A%igI+}ebVHOr=9 zZBB$Hgt-+hCr!jI)QXHu`$KAt)G!$gdpf^^gJN^k3m*==@AG{Q8AS&fMW@Uh4CX{V zTfLGod@)ZQ`9$jr&PiIOAyY1@?wzx>->v9E$vtvlxFcD|Pkq8%KQoe55@t#LAy%CJ9J!J4^a8OXhPjLwKQXdA!tm48aZ zORK9H3&BJil|y>2G6MH6E8@An@J=#r1u$F-BiljMgyZkODBaUXpg&Q`Tg_~e_mP12{V{Q zgO>EdHRy;r-*LEk@}FQ94O%)On4vRjpW>F|ciE!r$_j63Bkm831}*7?M(BRr@``Qx zdmN9C@X%1~FSx^7us+6)>HrV7O*0y_q!k(OGkxz=!;lhva6<#L!q$zg+L%AOW$FE@4_Q~YJ0Bl*Hy2!!500000NkvXXu0mjfD^C|# diff --git a/interface/web/themes/default-304/icons/x16/disk_black.png b/interface/web/themes/default-304/icons/x16/disk_black.png deleted file mode 100644 index a08f6f13d4662c73a47b1b984c8b7d14cf33e69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmV;J0cZY+P)**$Y}=Zcx}pAr!PxCIVxdcDWre7Ze3IR>7A8$<*V>6c|`W@dRyo0*km zX(G}W5p)4{Ap~O1q?|WyFPtNU0N{X6K+c(vGqc%jBfxu4o-e5Yij)!|C8k>d<{T*{ zfT9A3F%oj#3UJ;NV_XHKlz1Hu**`eg2zVV1e^zkc>HO;U^?H51g27BSlfrZg*BL;l1bb@`7fw$!IiMdY~0RN(oiv?QP2W`56FrckK_!s`IC{T5ah; z1>l`?s4A05pwVamFqwq;>8z*#7CG<$&de~g>u$IEG9HhoAsDKPs$w?pcct{V~nTYMo++*0J}hK>FOUU0n>Lfv(ODIyu7mj00005{PqowL41%nNFJ{N zQA{nfS63YQ-x0bH1$Txm`oE^~=zowrUIW6J8WyZ5J^26FvE%;_9XbrgAa-xmvj1zV zj{OJ8<24|Jsb<;IqJ96jZ{PdB+-2hbb?df(*^}Z||6gBo;y*|puK@u}W!*r$ZtdFL zV5hHKx$QrQJw0W^|BZF0{)6Q38sN>C&*jFLF`I>jr3)DY#SVe6J7dt=`Lo7}w|M>sko>_H9Vu9p= z6DMwP9LbgnTkGX~T%mA+jUw~4?OV3|`Op63&)@I-eU3E~EIj5-V4R(mmG!Uw-`Cgw zcdw6sC~<_nv-t_9zyG^_$&xSicX#O~ zY+Jkb?f(@kG$t?}2ihdkaejU5Zs|8)rfP5h%f4~$oH_rFA34&%W6^(|LE!=0qqRCZ pIl6h4Xz{Vxs``wm;kY>Ee?XF#&zf;OXk;vd$@?2>`a4hsFQ^ diff --git a/interface/web/themes/default-304/icons/x16/disks.png b/interface/web/themes/default-304/icons/x16/disks.png deleted file mode 100644 index 6f2a9801142554e4ad2a858e6e4080558c231931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmV-M_zUz#MzzbcHop#`pcMBl1c? zg@L?98aJ-fX8&1)1Lrka_@1e_g|(zh)K@u8{U#5I<{3H~yCpNqGS>1?T*HuAXbWs;&6y-%k--M!>6Sl*KBZ^rBO~F2CBOyIDoeMhJ24iz- zTg|#qN2HZ*GmN99Ww2l-MivCa63GkO(|HeU%~r6%561I8=Q)QTGjR@9&9$yV&df5+ z)?o0=|DZedsH{-UwPa(DcmF^Nz^_y)2g>PAz0ANRTPHJex6?SLJm2thWd)1N%Q;X^ zcj{#Z*OTjDG66J}?=V}5BV2g>PA zy?+Y3plgo=-DB{JQHACMkI-K61cOb}8Dh>E=+q6ayoJ?n713DfMU&PCp{f&Ocjr*0 zwt4avCTRT_9eoMAt{YC{14P>rs8nC~=Pm5U2{*#wA?0DWxgRg=aa5?U1o9Sk^~gP# zz3))wOu%Xz$B^(IB`QlFBM~GdThQOo{UB$W+Ho`Xwc|6e@0zr@zgUd#Qk8Zv5;5HJ zL6Jj}vZ3r`?Q@g}(~hm@F^`r9IvR$|r#J zHT}|t^I@LtR2@G>GOS14$x!I2^67!V0O-GX`Z2mJ&oaUa^<8ha4FiRIkF?GZ;N=lU zzoIRw-KN8;vr&ykBV@00000NkvXX Hu0mjfx(6m% diff --git a/interface/web/themes/default-304/icons/x16/disks__exclamation.png b/interface/web/themes/default-304/icons/x16/disks__exclamation.png deleted file mode 100644 index 4606873416febe49d31c6e3eed7c506e00e3a929..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)(hxpt2fW)Q!#2kVL`EjG#<3aj>D5n@yd4Z01rsPGK{@ z$Q=0r>D<|IiYN85$_dL&^|9Sbbd}$-glQzU5%!&l+ zG~u>?1swhv|GHenkGf+PWHi^^$Mf9*5O0Sw(WSnIrrd5!8iPLjYNl3R_ab z-dLVu>O~%+k#6{h3(#M47i0SOIM3Z0WF&%w#0rW-?}v+5BK%3WrBEoaGOvwVZl|os zWd*Jb?m{yo5##mqq8ySG3(d^e%i(k6VEt<)7-I;1xC+<6!RhJ}?vn7mkC6!alR?!5 zx7&k>38x6%4XRGqYtLfQUxc|CIbIHyV#ap@KJT#~qgKv5%yS$g5mZ2C9gZ=Soi?Jk zcTl{Wi>olweiTcAQwYwci!Y!vIGcg-=X*Rut=tio#+|!JGBk3_YERFI_;j0X2z2kP z%EX*A4dIW65S~v()y8gB02AdIDZ mzdfm8@7i_Dy#rsz9{vHG&zJ=S(h_$70000^C?7 diff --git a/interface/web/themes/default-304/icons/x16/disks__minus.png b/interface/web/themes/default-304/icons/x16/disks__minus.png deleted file mode 100644 index 764000c0b2e1b3f9b9d97b46f62cb08e37a0f4fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmV+&0^6e}%JcWlw6%zZV;JDHOq5D2I|}W@a7S!bXmsz;+X=p&q!dbWb3j-^ fWvh9>bQSCa6OV8)3r9rW00000NkvXXu0mjfp?d)6 diff --git a/interface/web/themes/default-304/icons/x16/disks__pencil.png b/interface/web/themes/default-304/icons/x16/disks__pencil.png deleted file mode 100644 index a627c311204a6a4c4bb7c6189021be7b48efc860..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607 zcmV-l0-*hgP)S z!X{c5qJ$Ns&R7=(MS(%1AF#ke?1vmLY~SAJ#Kz_f_QD6=^E}_@IWHe(k$mi=)KLJh zo#nL4@%ZWgL4C?mnEhMg&Brq{@DmvTe=?aOs7`&# zi=aC7DVJNopT(C%*l|fAx?cvqVvdK?^YcYeo%)n3SU}k12x}Id{ull)_?Y^E^uj_B zRHr`WRutA^>Ya=SlZg7KG}NOYxO5^n}d7ItB)AFhTl+{Or$#(pGw zKBG}|gi02s7^9e;eh!am0O7+=sm2#f?MfU=?bUj6{%-d_l{h{;6#TKKQPPDK*`O^0gJ8^s9`ob_%t9 zj6^*1zSrcCqe z+OrQdeD|90)ZNM|4SI>?PQ7?3Mhm*kgPJ5;WhaJ*N3{DLODE#WE^XLlEt{ob=Xu5o z7L*GIkJbpSBeEelH#9V^Jv|m11>L*PGy%V75OVCni7iKxJieN(aCU4Kc3buf)+wD% tr{u$XFz?;?y{@eK4Hp*T-)=C>Ug6pn-5$BKctZcE5|QTUW4y5C7x$``-8de8?sF>7;Zc3w`F+ zY4pV7RsVzcoZ~S4E@?KSjCXxU3c$})$^y@M&$&!Nowt)Jq^30fk?;(DEG}YhVZj2= zdC$2_fqpH$Btpj}nQ40)oQ9@{r)Fm@@SOLY%PL@MJrO!4)~j#SFZew14O8>;7I@Bk z&izx^S!erTJT#1`nlNZAdVu!QCwS%?&G4#q0#5OIFlS-sH>zlG+<~tw0=c{s!?!0< zE_%Z`3zN&D7#eyF#o2|{iu*{ke1t>163toI)%_v#_4OMchun|wLK#P?cqx{%u*-Wo zP#kk$O|TF<+m51N9z%&x-AgQjg_s5X4exhJt`YLD{938iV3}{-+-~7?qEI*xAQthm z`GX;cC7DSJI}|(xd;MCCI##@Q%v6C-gA4f)ViEiomcx<;1_lkx!ZzI8j-u(q7U}xdVI}C1AF4WwhoWDW?4C5s)hxQaJWx>P}n5tNcaNJS8OCrTAsqzbhl78Tq>=MHr& zLa}wQ`Fh^a%4rfI2ObFD&zr-;VTnY7MR3izb-LY)L!gg2b|9eNYPHBCqHoU&fjat_ z+b^9vju>#)Xf)_+x1*2kHU#SEV{X61uO)^IY}=-HKD=75L!gd6=Kci;A)|V|PD|IN z)n*d{b@VY8DeN?#f4OS6soHG%D2hV5u2Z2<*kf510>-h0Ns>gGrujkXbed|l8UiM< zg=I1sn$H(x7>55{sZQ2bX^U X(edG4e7ox800000NkvXXu0mjfm@2p> diff --git a/interface/web/themes/default-304/icons/x16/document.png b/interface/web/themes/default-304/icons/x16/document.png deleted file mode 100644 index b84a5cd0c9867e09cc88b5f0cd0f3e62a450f564..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmV;?0WSWDP))u}IXMibT;A5*sTkn-pmRMiA4-A7JATh!$3& zkSG$=TrQVfa=CF{xCsinI`9>{y!Y6d9m-r@5;!Ur7lrsAj2~WHP`Xf{gR`?fgo}_w z)A#w^^Z2#Z;)>(&Q=`F;w%zBtTxMv5$hQC-LK2NmhihVduGjgYR^$7Z7rv`j`LQaxh!0Os@BasA;eq!PGvl_`j%rTc00000NkvXX Hu0mjf$v)8Z diff --git a/interface/web/themes/default-304/icons/x16/document__arrow.png b/interface/web/themes/default-304/icons/x16/document__arrow.png deleted file mode 100644 index 501197f7e40e9d75861537824bc0917bc07de833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0Iye*t;RvJzk!E2N z0;AU3sq!GfsBn4M!OG=SWWBie_ixWL_Ok_TJ@7gF|2*Fhzvub=$nNowaC3gXo$2}y zM~3I-$TmAmgKl>bk{>0^@mvl+(`jrclL*CP2u7n=i$sdN_4^?`Ox<4s`6ywIW-+div zgwb~EiCgDfpw>|jQHRZ@xRPgqoT8G%@NgY>L%=E5O0fC%XT$NaWui8#Rnb@AhmvDK zxn$(&8ak%~ILEXMzr>|StC$D^9QGY^d^FGry`Hodi*Qw5T7gedF3~^U#Q0ahw{&qjx82x8F_`~d#mVp4;<+6`VLy28ziq`Y7c3( z11KvQM|P4c?M1Hm^w0}5yaD!Ioc^XcbFHtGrTt8UroO&wZ)4+)YV0{X_^zgXV!fv6 d!X3#-_BV8LwTr9J)jj|K002ovPDHLkV1mQ>6yX2> diff --git a/interface/web/themes/default-304/icons/x16/document__exclamation.png b/interface/web/themes/default-304/icons/x16/document__exclamation.png deleted file mode 100644 index bc9187aae6cbcfdbe80ca693aa11ed3276a8791e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)MB=wNx5SQ_>_&-@W&}=V0E;qZKb4xNy(?_|7@^s{50Z04SwKfIj}e-gut3 zWUVC#0stJ}_rt^fyQ8Dy+Ve2JkMTUbAczuIS66wxuy6}d!1wTySZfKx_kBEL@U%wn z?$W5&snu#!t5s^X8V|xDs^cP@Elq*UhN&)PH6bc1`ARwE~@_Bu|5gC}cK@9LOh;8=ESgTrqmO)fPeC>rO zr7*_C09r=?Q3?@()?^|`qxb?{nxn061fz8X5Ti9=ga#rK^+S|G1ulB~14oCh;+Eeb z-gYv)BU)>kp_EdDeTYLE<+r3WJ*3)_q%&O{OMe-1{4$PT#?i47LIWQV01*PuP%X|d zaJay=>o0lwMFQ%rZ*r_a&&*giq#|2|SiYqH< z*G0Q-WYB^@X>FQRHqFnid1hYSq2zw0qdV7SEu+Suq|>iDivuyh6u9#`y)pG zzzY^>lMD!xv79W(BD2dI4tROXMFxQhL^7#IkYpd_fLxoY${=@D{IXE0U`(_ UDvgj&hyVZp07*qoM6N<$f&+dbx&QzG diff --git a/interface/web/themes/default-304/icons/x16/document__minus.png b/interface/web/themes/default-304/icons/x16/document__minus.png deleted file mode 100644 index 6f900ea2e94e8fbb993d2431e04e7c3d79264cfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 508 zcmV2*OOa^NgO%t(bFk6~P#Gs3*20{H4krFycJ206f;%^{P(Wp&Qc8OSQWiW|K zOQb>n|8D#F-sT>mxSZq}&dvKiIp@2Fd`CwF{Gm{vF!~2AOTi#{0|8px->*UVpySGF z8ow5c{G88oER*4AI?eZ~RE_gUgpm;}Uj*3bxYDH(C#3k8O!8eK!M9IOd=roJbu7lG zmzRu%oM8D7%gP z4aIm~W{{Hm8%ZEQR`tlWwx*aUh#*ra7)mf$WL1xbR#z31rAmc!G6y3G{tmLLN6wWM z#bj9o1(}199u z1xZ$~$D^38%0tmaP%pU{9_G{b_8Mn48}BwWM5TOnNVH8I4hPxYZZLzFR+UrKOOB}hG_mvz#ld2=|TaM z6#R8`gwbRY!-)j$#pAfED7Y33A{WmQ&8LFLUaw$4CBb1PbEf2NAaF{%%{EE^1EbT^ zf`M$Yh<~!#b0vHdz7Efd95|+?1cMsAL5l9*NWuc1<;-h~1;9QzDR_`0ftt%Tl<>py z>~>2Fe3K-A`{Uz+p+dQgS$c;?68<~S`}!s#lH~s?Nix{R#sot}66EL|8cB8|5gf5v zSJ30ZWl7qEUbkD|C{-$$r)!)iiAF!5&+kW#dRxdPjQwcw!e;B zD`wQg{Uy-K>oFhAl4*vJB47PJkOd zJz#P;m=WHz3Z0@}l2A7A^J@1=ct*w_p^wP3oZ)P>uA0rzLEDA35|YD%5Pk`qgqLP+ zVrcI@^0M(PXGH0UiyOTFb^C!aNhUF|J>whE(d^!+y>6meHN{?-;6PM z?*Ry$bIptCnaRm)WG&h`w6$38TMLWDA`5G4_W=REHa96_49&wiht(PzMMU*F`@6e@ zVMwi3BMd{HO-*HuF}HwAO&~DFG|xoGXup|bNJ0c1MI8ZJ1znJYQpEQJQLI2j5D^q~L>_&5LSbi}%GvN<|K7Qm#zseg zMuCHlNTKqP(Xmlp|H=)PPk+Z*+o8bwW5|Q0X;v!*z_V?)@&7C?u*-N>g3XN$deiB{ z1xJu~zdz7>qaT1Rv&Gn*YlFbx+x#NIaz4+Mi3v^(45&s13JxK|XRflk@c!T%xCvk0 zeEt~)^-Y8ofF2-qaeRE*$HsZ@t#jTu=e4yyvepm3y6)2(Lq2%i`vXV;JpphMNc}C9 tc9J6_Gu{5>`sLDHx3qVGKW@DNnE!O47(Ns!zFhzS002ovPDHLkV1h~m_Lcwu diff --git a/interface/web/themes/default-304/icons/x16/document_horizontal.png b/interface/web/themes/default-304/icons/x16/document_horizontal.png deleted file mode 100644 index 7c133e878e5b28cd44dee3149194d2b4d7c7fc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmV;10eSw3P)#}B9{BD~3W*CVcCliK8luZEgD0^YZmglh{hHuB=Pupf)j30{yzv?=_ z%x3&No$`~W@xyq`DEJz^UY2UzZh09+?8sNwf!vQqzuGI6YE$H5=sWXjG+Pn0A4D#TIZ1f(1i*F!NN;N&E`ccp@afZf#7!FrGt9?5~;@0g$iUY zXLxD9TD{^`sX(wN@X~IfaLs=T;~ukKTR|ELaL|6$^ZZW07*qoM6N<$f*fnCNB{r; diff --git a/interface/web/themes/default-304/icons/x16/document_horizontal_text.png b/interface/web/themes/default-304/icons/x16/document_horizontal_text.png deleted file mode 100644 index 6ee38d8ebee7ed8b8fe2501e56afb8c177738c2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 505 zcmVICr_g973lQpvPFgTt+&dN0JEd*(~Cj3}Qr# zBoYY3Vz_^P#!Wa3cPNAds})?#)2^*`ika2bv0|lyES>rnkqy268{I=gGeW(xGF~Eq zV}}EFuNQ|l8}=<0nA~pc7>%&r-NAl)`@;!ehq+>Sd0Abi4E*spe6O$YzP#W*8igkk zksn?^J>h}+dM7NvTrs$`G*Kae6Q>hSzh62zvfHH-i^qdqlSw++HW+Yrd5P1D3+$QA zGFaw{0iABLN};fWFVs7Eq`p2Ao(^+G@7&xJr^*g$;qdvSldE75u0Y^Nuuzh&gJmHeG4Dx^z{{2Yg&^z%djhTc=wdFXTyIGL zZh??3qsdP{I6VB!;}>6De!b&_ozx^4TJ_O|sVU_~AdBKl073?4w|VsWA@@Blb##Jd zgI0YsFg8YsY!=+arUh~fgj_1T<&)_m&%XTB(TOSJK?@JO;prP0p&{8Wj*f=tIPp%f zY|z4^r%O0>I+3`=v4e5Yi68ZXC&r$*@(nFKk(Z7OXS;fPCyw>^-}xV)g$Lf>HNc|} T)V%@Z00000NkvXXu0mjfKvfiO diff --git a/interface/web/themes/default-304/icons/x16/document_music_playlist.png b/interface/web/themes/default-304/icons/x16/document_music_playlist.png deleted file mode 100644 index 2708c7f5dfd724eea0d65f942f3783be277cfd99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 599 zcmV-d0;v6oP)N!9e6@;4 z^YcE(ySuLuf)OK=laj&0R}J~KI)X_qEC4TanxEu-UIA;RPYkD0l0mE4ghv0bnx>zG zHyC>3;`5K6UJ~wuwbCapC6kh&m31A<-!uf1oJc!3J5@&fndx`JTImx#gXD|Cj!tyyh_%uu_O-Q%lfAvn$d`@Z zV1h|@cfv_n%O3W6D-;fk_O7lt0*jL{4);QdY=ZBJMNihUN3Q+E(LJ4=eS0I3>;D34 l+0*ih5OI(=^q;UN^arLhZ2tEZ5wHLN002ovPDHLkV1hio7|Z|w diff --git a/interface/web/themes/default-304/icons/x16/document_shred.png b/interface/web/themes/default-304/icons/x16/document_shred.png deleted file mode 100644 index 2c0d00c261c3b0f5d5dd86c702b9a1af89f10fdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmV-Y0GD7{-UZ6n2wNOLWOYc{A$d#lwOS9Xdos3{hZfxfP3PEf|}ECr?7mVGs-r%smJy z?ny5}C=>+R$i_fy$*h|+yRNg2`~U5IKK2ztw}BroGvD+6c;?e$b8{Ma6OZ3u9{q=l zuV-hq=**1vYI<5hM4E<=4MK%#mE6Na+BrC&ZO@~h`}>NIo127lru~=z9~y+bQi*=^ zLdtdNdnQ9xI!)gkhZ1XRga;X>{U5>L)RfRyD3{4C6pl&WFE1Z)Ro5eo29zLTnnIsn zsZfsVpCmyO{0?%mqXc2Y5FSI2=R0U7N#*l|oa`t;XktQmQshhYip8dq)ZQK;Cp${; zaC}_oFR{Sqi)<$O#SM^?9VO7m#)SSd3mn(APm&}Z$KGKPaqg~VWZgYPA1J4MWV4?{onqa<-$8p|`JRT98Vp`9% zwVe-ib=|uV48HhcSr%rcTCHKOZ)~V{oFj)k_C(OaoMSFAS3qk=$Ai;>z^${Lor9Qo gmopS@pF diff --git a/interface/web/themes/default-304/icons/x16/document_small.png b/interface/web/themes/default-304/icons/x16/document_small.png deleted file mode 100644 index 4e7ce8c8622d993c2c7ac0af9849882b66ee51de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmV+;0o?wHP)U`Jm1!t=#R`?G#fuq=X3r*U08nB2hu^>dKl}Ri|D(^J{~x-1 z`9Daka?v7Hq6`2k%J}&6=l>_~-~Ye$^5y?+$B+L90g!m%tXZlA4ak~2IqU1MU;keN zZ3h{$Wb0NqHjRxfBxpclXJ_{JKY#vz`1TEM2*@QM?||e88W2`rpY!YQ-~V5L-as}4 z6eb`!f(G~$7w7%`_wWA?pev9KdHdtXe~=tO18kC$3qXMeG6dujutC6B`3j_=a`+99 pc5;dkx3w+BhCy;eASu(`005zq@5Cd`l;Z#Z002ovPDHLkV1mo{h7gVPASA?zDE~nd65=3>Qx^w{QY8e8b|7V8Vq#%nApsKti;tv2Br&vv z0+yt))mCW}u~5pRsPz3lp6^XhQ$YhK`3$%He$VfF&pqT^TqH2Qv~*ACzk;^0g#~iV z&(n*!IRoK`I<{=3!oP||KFQ}fp2=`5o#r2@l))1WGBiT_Ukz}mV@sDxoD^f?{G7ih zll<-Ih`$^j^5=M*-)(L(3Ob>^(cszatTK?120ydee>QpPay7VXwGImeXn1Bu8OW8( z{C0hv-*`Oi4g`34YwJ=HTnAe9k$rkvd6btKgc1oO3?3YCV1NHo5;TBTePo-OQXUti zfy?XVjZmnO82k73%kVY_0a>TQ?XZSHIB%AcTZ3Mn*@6Tt@`M`!=XH> zN`v=4AAgKQ8cDq2ut~DIvtyE^37c(huCo3|{MQEn<+2Q$H7(FjkBJt@i=T6pSSx*^FDTh?dp1d9iW8=-aqmh VpS_B?6>9(h002ovPDHLkV1j4|4blJr diff --git a/interface/web/themes/default-304/icons/x16/document_text_image.png b/interface/web/themes/default-304/icons/x16/document_text_image.png deleted file mode 100644 index 0c697bb30faca5effa81887c4b299ccc41acd9c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmV-x0+juUP)~Hh11#OlF8J^D4_Zr4#ASI zRA_c#fo9xpa)m-Px45{k60`%Y_>^^IM7Ukx8AOsvEevmMQD}2>UnNKYt@xCAcv!eo ziH(mInJenTrhb<=Jatkrs*ELSg(|K)kg zB)VxgdPP^#IuqOpwBl1YY&PL;jT1b3U?9i9Vfy^)G|fFfsoQzu@z95*C4Ee3ZV_7X zscZfH!o4~lN|oC{D>-9(T{@Y*ugX?i3!=z%Kw^S_a^AA#Z?8q2M3@B$G)8czAu)v#YDN#(chYlR&b5bVMx_ zYc>5U799kDOeW(1kMHjef=bX1yv#}P@Q_+8*$lGQKOpQMfTwi24FLdN<|J@%KrNLG zkS~`V1Y!Im0GJ6OFS(q;%bd*b?^DawMnj7>2S88(!T@owfTZj?}1YYK3Ivl1}8U{cW|3R`=9lXrRubhAE_78F)F`i8ES9TKh~2>;KfJvuB^H-UK{GzSB+$Rgm$$byB``r|*xl6&^s|ir zlrN;{UY;x2b3D$|J3F%ik#TPi%p~)9{!AuoN~)FjolYf#<>dDEoInH(=%i(YuXOrX zNk#eG?^m*qOom6dw&n#QXh0_`1qlh%N}zn^^C?+O#vNH(GYCY`fKIMh*N(2q)l;m?2_{Xm|z_2q+Yplq5iZ(r&>=9MY-;L13Y%H@G=!{c>n+a07*qoM6N<$ Eg2ig1vN>L6HkQXO;Nu`SfSi%u~L!W;>+Az9%6Ag@=V&T@!ELv)f1h;UH~BFZnv z#`0a5$5pqqG;xSTLv$818N|3K1rg;JBO~Z^hEVq;h=HjHj_UR2I7Ff$I_Yc{2|kBX z5K(pv52MB&!0iB*o(J2^<^!$wi9|zmG7L!Z7{!ol1JkIw=f#m*E>yI?M)hMKZhiyy z8s7W&+!)u8XoyahuPe=C6hqX{W?-BK>O4S|>rXCE0Xwd|@z6e%iVih4o|pU1vPCiE zg2j!)o$s)%;Zb0{_JMnUuMg^vz*gN;_m*1oN#eC>S7qfTVf)Wb@jfo#! zDXp78RBFp;h>W#4o%m6kW7VA7*@w>kd!8}JG{XZw-gC~w`SE+-Ll1|BsBL(d+DAr6 z?o-d#nA-nvN;fb-_xt;)rLT`DQ_#+<44FD59)~{`!&*3u)ldk_8ylFiS|Kwge}6%$ zf`@gX%}xB`58dnQaQS@r?(yJ**$la4&g5qbb|pVB7z`$-6H|6O7QEiH#9%b0DXyq! zX6V4=Nt3k+!#2s8_bO;8&DglFZ~c zV`J%=R91F&Y8WEPkemo_ArOiDBiTuw{QL-x>2fU1_ux-7iW?mr4GfWFNKT9eAs*}} zSqb=H8ZU+7AHM3Nyn+br1PZS0k- zEF0mpR3Y#~2O@&UQ4jl<>!`d_)RU8!Me+#DXy&toJKfu1YxS4hu)xbSdx z7K1Z02u)7|?t&5iD^LRiXw<>q(Q%jHRONRY8&xGT zQ8q9!5g<4m#%aoLS@fCjM_K&fzco1nz`dS^#NCr^JE+ zkKtAFzN^b3jg9uIx!K`aO-=kc@D$RJPMOzLjqbQ0Rbz4iK_-Bs`xm?XI_aS9X900000NkvXXu0mjf$kzrD diff --git a/interface/web/themes/default-304/icons/x16/documents_pencil.png b/interface/web/themes/default-304/icons/x16/documents_pencil.png deleted file mode 100644 index ddc0b7d6b19f988aa4aef8e496e0ba58d04f802c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617 zcmV-v0+#)WP)1vn1^u5WbQ1jtc@mcF#FN^|4pyP7lOlv5(w41gg|Ud5on$A82dR;z!Uk$E zP?}+h;))r9NXZhX4Q%8zBTe`JclSJF``FgP7cRc<<>tA+>wQ0Z(A!H7`})Yz-%s+M z*`HzR{=?z>HXGgT>7mB%Zlc@*3qK`f>Vt^{)}m1?heGfL0$AMGfOBRBk}+k)3o;fQ z)(2uS{Nll-^>ut(UBy?wA43xpkR>@&mRpdge9vmNx;!2@XJ@gnvZ9n&9S#L`ZS5_F zwp1Q>yYouKL^5Mrn}MP9Wo)H9%0=_M&t|^OP1LotTw{n#ot?tfU_6esU@)&FSNY}O zppuE@rRL^_XId?hXoyajkMJiP{--3X{BC+$$(Ef?d@3#d>{6*tl4yudlnVlpNYN5e z9-f*?XLDXJhTGc#iv14hs;N zgS|_GQx}gt&khu>{h}jUg>Z)Ry6s<%o;cK@C>N~15NoEXWrTBY00000NkvXXu0mjf D;5j47 diff --git a/interface/web/themes/default-304/icons/x16/documents_plus.png b/interface/web/themes/default-304/icons/x16/documents_plus.png deleted file mode 100644 index d09545372a817edc6f02cba25792e9fd03671146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 601 zcmV-f0;c_mP)-;X-~;UO6Z1|D$$i`_1H7)hmQKN2Z|6e#94UWZT2i{bc${uqt?e8@G(;!CfG`(o5K*35TvWOc zk9(uH*USM#Lv)gv3`Mz6gNX8k*Gnz)Pw2{2Bi-{_=$ggS!2v`=bkf-@#rYi6AfoJ< zo1;2UBi-NY%I$iS>G6eE4S;BfPKE&~9zzXsXWC5F&a0&Tpr>0wBWXYCspS1RKkSu5 z5Dn4E@^z(o3^hodyMgq9o5zB86+UR2njkuI-&wX$gS1SxQ`zgYzwk!$?ebPV$)3yG z)5G9ZanWFSO8F%wGLD>y9IV_$UdlhmRO4K+n&_KU)7NUFiHF&Y}o!J-xe(TbL^z(6F> zP{=_<5F|=Uz5dqIITwx3x)vRHxx>BR^PKm)uyb|>yXWWd?Kwf2Z;`(3lM~po*Q70qtHUzSW;EK3xC^`j$>K36W|doI@m zX;?+G%jc6foiv+QC;;4p`xGh_Ocx42AiRlac6z;-p>4;F##IUc_uxK7x&w*GN)XX} zaet2zZ9BHSyhZ`w9^9u)fIPiWf{12^$Abm>c2K9=XzS_%;2zwkTB~7+YA8WO^U&0k zvtxAB)UH;~0YEQs5AMSN-a-i?n)@}HJv!K3PbUm(wZMJ&ceR2jnuY1$K3E@yG(dc@ p{C5QNz?WH=9;Pz=wWjtnE5agHhvP7&o}NdD z97|sC`_;d;)+FKHz{G?Zk=ihhBfs=`^iv?9-qlt0ghIN0aG-tT<987e%j6_;CsQiv z8@IdG^*!jV%m5fL)TDWCw!o^ZG(vAbOQ%IQ?w;$n?#hw4u*r+b-~`JE_l8A1<%)zxG^w(N3sKgEDo{==XKR= zeu#*WK~4n)V!OK<#h@AzBl#_6KqaqQz;7>hc0NAQ)+Ry*IaNH@$CVZR;Pa_B8dWFW z-$=gP-EBW*G7UCzvZLd+h@6*8U0p&B-@A&+WppW_OCC%k`ATo^Fb!7Zu(J{@Ew-@m1$>ERL2N910GqASSOk0lUtk+q zix3o)y_=ms$^E|1A~VTMvbYyM4)@+OXU;ir-N)wu;2fWTF}JVpX1oP>_svMGJ~d;_dpF3)a>Ta`It(eVbq-jb~6bCq&Olb1~yeKrI z^=+1AH=?T2<^v?sQWOz}!y#FgVP+i+As`~io`XcBE8x9HRS%}=qs<3MVoR|hnps_} zQB@U-#ex_ks!BZQKwvk5bFTB}`JXEuzxlwgP;4DE1K^{;c4EXihlrqNhzNHurte?U zbDR4%e-mM^gC>gA4jw(oc=q(kw#0bQfpj})A~gH`^ZyDo4%#KQ@g@iU;(C{<6Tz&5 zZGk9oaa{|X&Edxt z*XwQVuh(nJvP496zr?Xq%@?SUyj(|0g{{u2FU){WtAIJaz N002ovPDHLkV1mq=)!6_5 diff --git a/interface/web/themes/default-304/icons/x16/door_arrow.png b/interface/web/themes/default-304/icons/x16/door_arrow.png deleted file mode 100644 index efabfc908b8efcacd0735b6c9c5546946e42f940..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmV-n0-pVeP)Ez~;mbLPd+zss&-ZfGy)FPyiU&Y}|F22s zxEvRrt0vA-ICXxYptUBG$xvTkkJcJ%EnyfEMG+#x>t~N@*gTQ-qEe|aK0Zz+lc8KL zZ;0L9-6Z<~v=xXU)m`8BH;p1fvfm1LHo<7EC7aFS`##ROnivED)>`ae3Os9T3AEOT z$OgoIB>Mq8lVFS+opV)V9Z?ifEEX}wAR?Fz9#~k1MJZKt^W3izEf??dGbpbqNWwD- zNyZqIQdnyd=djjNhhywoFS(sf7-KLNW{+K2&7-K6z*Ywo5nNTlp6xyd^ZN*bfYHW2 zX8NxlT54|VuY}?7a;bzi7Gj9V+6XaG9F>gk~ z+lq*zI6Y1J<6bWG<_nKUrUsn|-nS)aNpCWObBG8Fhfi?4tAnp4@C~d06AN(iY)9ec zllOz(=p6LyfL&Ww4+cSibB@KuMU+z1y?f4!i4WB$6dF2Dlk3PceCO4q()zXsG>px& z^;{!(o=1CoJLzHDw(wgI`LDXup` v+rR$tmm`<<|88!rTb`e}X+J%E2rT>o4-jf*J8CMR00000NkvXXu0mjfB^3*P diff --git a/interface/web/themes/default-304/icons/x16/door_exclamation.png b/interface/web/themes/default-304/icons/x16/door_exclamation.png deleted file mode 100644 index 3fb609c2d6bf4b511de7058ae3dd0d3571dfd52d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)0+IOq8A>SYI;ac(zhwOTALE|N~CX*3#p;?&d> z@p=F)4kEbrYd)X+o-nWhQgkeavTE$w6a}K-51A$!#N~w;YE9;w-?ma{LR$%ZWhfk|wkbwxs z#w1y5QA!~qIPVb=y70Vze4PuoG$R+Eu=4$3_t>=%f}pU$!00*d-ha*DiStP(>V{a1*nJelO-vTI z=_w6i%r^7$^N6f=B{IWhD@^WK&|kOq8Nqv;b0qtIQWzegvhkUB3y)Y0mkA2}$E{^% zX9uOVk4&beZQJfA+d0_VQM z{yqr*>7Z;PfPMQB^P@*M_`*_`rEti50X($L=RPb}cNxL^BF38uH?LgJ>&)kW=IQDx z=H&(~ABAIc+YjS7#(PhaBq*gwl7!Jhl?Sh$QJJgor`y{KMyvxEXd7UDZIc7n4uUa; zdc97yS|tdAVvN!G5owwtBCI@qv;N{Q%RqbywiIv}IB_B1-U6K2>o5O?5AR0Y2fhKn Z{sA`@R=%4E38(-7002ovPDHLkV1i<%>f`_b diff --git a/interface/web/themes/default-304/icons/x16/door_pencil.png b/interface/web/themes/default-304/icons/x16/door_pencil.png deleted file mode 100644 index 2e245e00b19f23099f32f7be52a1c75b02dfcae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmV-@0)qXCP)5 z|F2KRa5XM$Q`s0px^G}OZCMts>rz)&hhu$!4>- zu8Z&cJ2;ccP^|~Bl!h3(a_V{BuB^4DTCX(Ns>)F*MSXoep66kVsbMK4N-3)KJ@W!v zsagZevd~)ZK%7Uc&wLSR309;bMl3YORDv~xVMs2QBZ?xl)->3`!~XV3@pl5l3vEuh~tB*~Z3m zhek&F^Ki$G{>dOt+f+I@(B^UUa5qv)%Jve=PJ7dMcKU8#Z|~R@W8T*oXsx$Ki0hd5 zw)prBdB$H4ccoIP+l3%_cNu1DMu6?R&mjx*5#I^{6Mzluo6OUAsTpkBCYelS->P)ED{MQh-f1UT39H?Kf%({Mg*}ig@1q+snRH% z0ZZ{f!77P`79pB&lFjDs_A+mtMQ$&9Cg{M&H;;Mq&G$YS^I{qRjA0(A^8Zy=WiBtQ zb~mb2FWh4WZm>$0Wvs8SNzOFx`HL=9L5+# z1h0ySFo3f7=o%+RhjGr~1U^hxKovULFCg6kz4vI>!SQ1;XHHF!BneN(R{8i~`0U1r zokw+!9Z%o{a(M51BjiFk8)H}*Y;yhf{ULU>N~YZq4{=Zo5#Z&-PgbH9rA~=0*@Dai zd_t+)?>jJFK4b*d9l_%^>p7>0y*PV@E6m-^lhq;7$s#SM;BsEBUFL@Wael7OJ-KcJT9#b7$_cNOlvALOkWYe82OZ?;PvlIj}6SEyjTfc31a}Few7==EJxV zCeEC{Jh~h8``6EVjV7%JX94(lVf@-?l4vZ;!t*?Q-zS%I5fQZ3B#B1r1Y-ox%P}?i z=o2vJW@ZC5Gc$uy3fs2H=kt_GC4wM8L{Li6YPC>Gk!2ZS7}C@A0U|{oep0X77!77 zIyc?sz!*cf+a-=;7FK>THu0D!im1K1%h5yo3BwR$3?f4Mr-RmnAsyLS~E zi*hNT+G?TVxZh~Y!8U*~h7-fX6bc1=-$!eWh~T;|T5FV2e4d}j7(==PAVQX9bh=&Y zam@E>om1DJ5=9Z!m$x}`VDCoyS%wkW36M<((~FA)u8R@j?VT&wmPN7PQ*AbB*XtXj z{?)-I;N-Dm6pKZC-~Vk3Ns^$H;=|nBKStOLQ7J{OR%5BQ&gmPIL{Y@bi<=zYS0)U@ zeu#a*d;<=8TWg$NS|V^=GGlmi>k_tQQOM`0wpz5~xZkMVg&zsHQ&k2p?g7Vf7^zfn z9EWnb%)r1v|CHP9HjPGuX0wUb8pm;1Yr@nTgDz0{)@Js}v#`~pW}dOeSl R@p1qF002ovPDHLkV1iF2CGr3O diff --git a/interface/web/themes/default-304/icons/x16/drawer_arrow.png b/interface/web/themes/default-304/icons/x16/drawer_arrow.png deleted file mode 100644 index f4a707503d76ae468188023a2cc433d481c406b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)7}MqPSZdPYtvwTOYE46 zytbs{Wn(Iz{_4sJ_GT*+IYU`uh!rj2Ecu``3f7Z;pmkh1*`Dfyxw$zw91i{_Z)1iS zVny>omYli}iIxms*pxu0Qp2Y6fjMyp>JvTCmga}7A_tO055^T^ZZ ztm<=0gt#2Uk~E~cWOwfOtU8IOPuDitZ$oFDhW6@Hgcy5~JL$yDuRwJ5)Vj+0-XKi= zf+R_h0;e)#8hAadA=jAbA&uYcXMbjF}eL3m|u`CZ|TGAOzM zJ=Kj*nH~{&A$d0tvIt&}sFGHRr47O&T*R2hMacijH{AGhYf|&NDj;r^7-D|`K%@7R TY|a5G00000NkvXXu0mjfhD}xi diff --git a/interface/web/themes/default-304/icons/x16/drawer_exclamation.png b/interface/web/themes/default-304/icons/x16/drawer_exclamation.png deleted file mode 100644 index 03f0c1eefb72392ced1d10249b396dfd42135dfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 724 zcmV;_0xSKAP)e4niC6_hMB9jkHY!#YR%tYa zAh8rhxK~7jh$Q&9cZ?wk!8=KYn8}%$v(H`@X3QWK?s9FuZ~bd;mb!HSlmbi94-D{o z=Y|o6M8H`o^c!Jd-_bw%euw`1(Y<=3A$4;<0I!bqpXsaBVw6&No`>)IxUPeU5XUjK zT1*_*Fh=k^myw}6qrfgFG2d0=qv(U@`Pg-W*Hh1F%5No;YolZ19)h+d z>fDb6vXWqIYKp*dFd{r2{1eMkY(E^6-?WcYr|)z7>Rw8PHyBVR`Nar3dwOVUYQpz@ zwAR?!63x91t{X8tJj|`Zv!vVF$aNPpU;dMZ5mp{CiXtW_Cwcl}6m#eT^X(~89o@_< zyyVfy1&Y;ogzIyx?WOg|Wu>f7Utzhr`i*1L)66U`k{H83w~ym2kKt!$@vI_8k6kC_ zd?lN!(9)R>wPvp~@;@CXo58kidh>Z~+a{aM($dnxa_d_*><9_1S#S;Ixl1g~Jpf?C zmS+FM`|>#j^zC*z-wGRl-n!k#>CCMo^{b7v94epZdHfA;Pg(8{5rM}50000YiTx{l*?u2f30$2{3%J2P<(xl!w2^h$1&DgM1*vwgZ5x{d704j5Cw1V zU&lew-4#)&)zIbg)}lWSwgIfQ92*)Um&*}`A;uU)1kdv@#-O$4|*TqF5&%=r^bN4EaQgr4*3e_t0 zQfcGVO$P(3|2X0J@Gza7orGby^$U%e@92e9thLk|4J24+q{2wl;_+XAc4&&lB1^>z zr|#rQk_0n%iyN1&?M!sX^U29kb+Hc)1iU|Y{^;nJr6nAth&+$9WzjmtQHq|0CT6XL z6+r}I-=|v9_1KX2rV9*Q?g7_zInv*c>$-GzchlS3yA|bnz0UgjI@M|wV+_9U^K$C* sx2ZKIJfQz)ow;X|pZT9E!5q;48@uFo07czFyZ`_I07*qoM6N<$f)0l?TmS$7 diff --git a/interface/web/themes/default-304/icons/x16/drawer_pencil.png b/interface/web/themes/default-304/icons/x16/drawer_pencil.png deleted file mode 100644 index ef7ed0ef506f0d2ca535c13a8aa031cf6650669b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 749 zcmV4IRfSRZzQUr>KBH+^4C?EuoO`&X6f<-ZgsDQE1LiH+vNl-}BR%9LhFEqb zPKr-oNI>h+P_!M}hRze)(RWgV;gUVLbv6C`lU+H%n4O)4 z+wGQfs{QXFW-LfytYxnhzjH1Yj=arq3PZbS!>JF3IdvnNQvK0(I0RkC!*SWLMS5lo z8ocsRek>?T3bSY#iBov?+)c8-Ig?Ia`)Ok)o|rRaD^$B*oruQVF!bsp0h?eko8ObjOke24o2d)McS5Ze^_$@ z;1V~nX9l7n$rt8i6`a{YxOOH0L-sZBd^MpgZ5N8ez23E|M2I!vQk+6+%=80g@u>cw zOrNg(xFH>Lj#x~0s3hD`?Twpd5g>+GRv9YAN5sE2XQ)79p9ri)=Pz3ryitcC+iD5B z>(|0+@R1&3h-G>|#!7-1A3nVs4e1+T*7?FNT4_%6gXzFJ^jo|o+*z{!FbtVrhe@7%w)O;l=oJi8Y*xSH9<| fmBr<2#1Q)n;{xdkB*s)Cj36YmR7w~AER_n)qE&Ef5CpfPbgd$Vx)2+t zi$Ez-(xplfyC~Ya&(|G3r9k@*LjhyoYm+y8Hzw1&(3@ znB?Q)q7_OapkF5@tS~u#=$qolsPFzU-EUM#l*02oeBURN(TE7f z7FRx8uTJg%sM*F?Oaz6h-`9Jg-_x681T6{P^kE0ZU)+9Yk949zR@#j9p^Ss51Fmz&+)>N5BtJAKpbxL}s z!ly^pfa|*K7#_xTT?&N)gM))Br+lE@=4JgQrwV0iX^o&OeD&jU`PU}rG%)`P#!C zswE~Cu}Vr=GrFs^jQ(&#(*Ca?M&cIv?cD3OistaZhkN0i`?>d?bAIG>I!Tfw(&=;s z_A;@BOC*;e&IEH&sv;KDy4`L+KQvSz6bb>euF}lx29#adT)bA9yGTJ2Me(?zDDe3X zA`*#cR~0P56GN4xa|9F%w;d53#k`^aUCri^XC#8jZa~G+MypIRt#%2RTCc zHEu;_qz38h75FktMLu6!nVmknC?LIFPk+UJ=E3A?lJQzZ?&&&YCs!joQHl8{D=`09 zhfIR9Z~95$nqVn`7Pq>{d$W_|jwao0?#sZ}tHy=<=j*_!F(%HrU?RXxTuQ(NG}OVL zW7j5gE)#E2PhFt=0lUF)H|S)3k&;Z5*`mFWsbs3uspdr+mWkmv XIVnDB3p%QA00000NkvXXu0mjf%*HF9 diff --git a/interface/web/themes/default-304/icons/x16/drill_arrow.png b/interface/web/themes/default-304/icons/x16/drill_arrow.png deleted file mode 100644 index fdb0737114a34912a1325fd6fa0697772d7bea6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmVt9Y~8B%2^J1jQ|ap!y);D6%5K4HFUC zhir;jR;-d#OrtmdD_J}>H8nFKBymQb&U-pDl<2~bb06oO-@EtR`yeGH1sH|_kx1kr zm2fOR0QMg^3Dbfd{DB0a8jZ$CMRgv`W;5cLdVNNZB63IE3(in(t`bb3R4OlU9ES!& zCR!{OA@X2v;$Qr9#p3r@Vfdvc5J&C4IN{jho-Tz32oDdJipAnW0BG`{)t*C~OheWJ z_^T}nXB&cWy50-FK7kdc9&L0F-&hhrKtKSj8fS>N-IsyIk4jwV*^2J&P3Z3O!THV& zINu?{*%ojQT7jc?OzR1R@gf`a&$EEdh!wr0zSMlH7B9Xj2}4RX6HdyRTJouhs|C_D zGi;4W6z22-)Me0e6vD~eoOMReVRIA)1qHe&9mVHJ0I;X18>GhyKvgylN#&D}TrnlY z(!2zy)d5s70)=Ca$Qg9Sp;Rh;Pi1Pk1RyJ6S+Mtd-x|Szk|D5X273gCKI^V=>{p>& zE+3(?+?Bnq796@aVWVP}qMjE#z7he-ox&FO%VaV(C&!2?Rnjz-6|WJ*6%X)VWo@4k z`51q9P|pio7XkL|5QRu2lGnUIt=9aYvf6YRfHswBwz(WNbWP6=H|lEdTeh{3wD8OBtM`T2QhG-hK=jDnNP zWy1`kLxwT)_u-wV4PJyFA=!MovRBrK=zprB-&b++DSv^Me=vSd-GEEW7pax76T5kV ui0~o&ebTJu-l^6u@03C#J#YUHw*3Z#CZCDyCxQL|0000oe!Q{(2a6|NhAhldCJ@g-6^du{@QBT`)H-HVQ%UFfjx#N|)h zarq;`g?4a^76VIrRGSPk6A45}2tR(C3CV9VfJq4_jWn04*-F7$N0C3$r8bIzuBqBD z(GYX9z2Rb-J20=vCK|62s7;~U3FU9*?t&p?3EM>I<>hIi1|n{a8o*XzDn++Z;q_$# zFXX^cFrg3rj+RLD^Ya^|vUrIQAR~&7x@w6NcT3%lvLCbBDXwz!wi1^?dS7wCSL}~Q zi9|9+W!bL8j4ug~shXT)nKS0qMICD$vboORpQ)4{v0Kq&0)s*i5pzXI60`q?z(_cMni_F0b{%Z%=>J5t-~h}O`%ww1dKibl64C1KFSGc zd_szC{VDc=-qToLmxI057_@dAT^(rhMI4G*e~sNzUW~25i0xve1`Kb|P)efOssu*c zP%N^25&RCg%JxNKO<54;=Ov(0nTcUxp{ztAw#ns5D3`0bzAiq4nukO?WI8l6JtD&C z;lsE%o6A=Yrs=@)btM_2AvREG8j!c~kc^ZHN)VJ6LeXOl7)v$Ksl5&6l3T!R;Sp`z c{|~%>1DY1X!8ZuT`~Uy|07*qoM6N<$f?U*VxBvhE diff --git a/interface/web/themes/default-304/icons/x16/drill_minus.png b/interface/web/themes/default-304/icons/x16/drill_minus.png deleted file mode 100644 index dd63de2b44ffa4bafca4db0b96845f1b70588bc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 675 zcmV;U0$lxxP)~qm8LWhy!2-8CCfW%Rqd)9Zi`ti)kkd**CJ2qT78Frn9|n^px-0nSy?{}aa z0{l5*!PI~rlh=#z(>2KP@#)pECKU3xxWG0fdNRfUuqB4U*D z$9=SjOmMjX-9~`ECi)$lwlgPEG3yKtSx~PpOHkUvawGt_0C0vRay~46p2;MQ&gp3N z7fh@}lgadq!cKt(XkAZlVJiOK+>H6Kcz8k3G7(<$7N6Qt5QNth?#Qj!F&gP873ag^ zXDb23N^J`DJkQJR?OwFoHzuiDS5831aG(JFy8y-x0VL?7ZZ)^kXf)no0;kjUjncgh zJb>F;KycCoFmXh~Ljsuu^6);8?{?6(zSxX7V#D4>kfROY>2|~4t$sluK~UUMGEBiQi%9xV%r6lY zelVABWXLS>C10w$O3TP%B5C$!L0HZi`SjfB#*z^o_;C;Cod1t|&+}Z+YPG=gJTS(5 zWD@q}CJ_FCgD@{O!WJMwgu!4iQK-X*#bQC6(FbQ*hv-W4EIA@v3pc_hB@iLi~6X z1uNk1kyxDX3B|e2b@=5j`1#zv!83JnMF0|s1Omnh;?Y<&2>4cmOE0#eXKXWiMmOT( z^Yys+jN$wscqSXbMQ6;x1m4kI1i4*>Amqif`*bfYU++klhpt2-Z4D3(+A|N9(Io~G za2yBC8QbBpnn9t=TbWDq4sHPlVlgx{#7ReDJMsWX0Di&AV+^`)tss{58pkC~GS)i8 zSn6#a>SpXQ-_W@a<#PFJis@A{fWjo2HPwJW=p!pDE2=axu^MY@v7NC#5)_O#C}#0h zGOARncN8n}zwTOr<0ebd>2xJ-w;R*L!|SgDq|+ztS1Of4aj^-LlT+p>Rv%O#hTCkc z(>;3@6$(Xlno6>__c%bpF1AA^ll6)Mz25MXVr|(<03#P52n=66&w5%d%r<%s1ZO1( z!{s3Kl~7sV96}sXV_Oag_H4*)Hm(ZRhA)(ZcD#lH?~fo(q^@-1Q;j!_{V|AxN+f~c z6GR1uPa8qId#AT__KJ!MEGsKTlc@;f;?ypcN;$>zImq)Cu^*mz@4!|LRrq59FITaL z83!SsmefQ73F^fLTK&Q95tX!Fwc1F-L?f|Bbf77d+4FSlFwMgVsxXBACt-g8C?A6n TqV8@900000NkvXXu0mjfLk~=h diff --git a/interface/web/themes/default-304/icons/x16/drill_plus.png b/interface/web/themes/default-304/icons/x16/drill_plus.png deleted file mode 100644 index c9e751ca6a4e8b0ea6346e545ac54cb80f5b85b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)0l|;j27tLm}m;T2*7ci z!Y;x$+W_nz_zCw+J;VSBlI(W7i;9{RJRT3?h;3uj$uRKfOtF4Rp5lF}H50mjrV;m0Guf$Q`>d^QVXaj@6px0`(6#&q#;BXv7{Ja~P z7w~6yDhAs$IDR(*$68>XuXmP*2G52CpjNBlx3Q0S+E)$?-&=6zWh{pJA~Dpf!s(u6 zIQ@ddU?+qIszIbZ?xh6scu)v=_X~jKr*o~;m&R|mwX;tyB_pLe2tVcAoh8)7d4Uie z#;B47v;ms)>2=KVm#GZ;jZ@f>iW*H^fYPZ_js!HWY5;B|05oU;Zfe8x-Y8knluM5U znTio#$^-^Bp)t)_+~OhOndL}i_IF{YISj0CLfIIzdX^jY6!B6gdRdc%A< zkax==2`S40SBXUH@gIU0ssI207*qo IM6N<$g6xz&L;wH) diff --git a/interface/web/themes/default-304/icons/x16/envelope.png b/interface/web/themes/default-304/icons/x16/envelope.png deleted file mode 100644 index b13127e8695b0e3bc7ad10e7973b73d7fd79314c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU~KVpaSX9IJ+l(dIt=xGKWS7bt9-VEU8ME%`aZH(P z3{mKC=a|ES()WvhJ)PsAnRpRmVp15J(^+Z$(94^d{0k>PW8=3gvnj|)OIW+`nzrWb z2BEnZAnIfeZxWd~WxL|@z8;7dSDZg^ZHG)|T5O2@_SZ~6ZGR6eDD>dd>pyjI|Ds=t cZv=j@osZtUqg7N27%L16p00i_>zopr0AJtAB>(^b diff --git a/interface/web/themes/default-304/icons/x16/envelope_arrow.png b/interface/web/themes/default-304/icons/x16/envelope_arrow.png deleted file mode 100644 index 8024339503892d87b314adb2daed47080504f96c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmV-A0>%A_P)9J@7zVuZFSK_-BwqI(nU~R)twX-Y(yABj=&NXrj{+&*`{Nz=_rddQB@s3eK zdubZ*?IBROU!2x)ukVQBUcs7{!YY0)4HU&4_xg_Loky^X`Gg-IhU>AG>HjPK&K>vq zj%d;?m~CzGECE4`<6hqp#aabx`SGO>s|&XzbI%$LcieHW?}#E! z!PM1sH&*7ZOLA}AhCA-K*LOs(RKZ-|=Wk*;*(u3JU4}dExYu_?FYSW4S7xuF@ZKxQ zgzbhq?zq=?L?N4C?aMPhWHkX~(R2w_}oMxJfX7eySCVYJ1_-O z@O}ccab(w(2{S!u5UeYw{UH->mL!5TC?8D1`4Om?0*=N0s7(MntfLWXIiXOXR_Wz9 zK2&W`>AHb^)`4{;=ekkan?iXM*lZb!Y&rYXOxm-l$D#!CF%{X@wtw1N(}SHMVEf7T z+=l&iRU7x1cu(7^4=bG=6-uy}vg4HtTaVbkmK;3rfOkCp1)P7Ksn4f?0ssI207*qo IM6N<$f=$;H(f|Me diff --git a/interface/web/themes/default-304/icons/x16/envelope_exclamation.png b/interface/web/themes/default-304/icons/x16/envelope_exclamation.png deleted file mode 100644 index 36a43a4909f5073de684a97cb49522fee50181ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0vL+A_5gR*uwXv`e8$nCKN1REy@#@Lb*0yG|Nf?H$dT9IrQPPiE{8ohR0miA46b48N11-Vw zQkmi6L|X)>irU=>EeBRJRI;|_zNG&*4&${ukevadSdq3~tGisK`kXW^5%(WOei>lY zf?9m1g6)7vhE+kONh4ii^w4F}>H_MK+ty)3K@{IgMkhoBD;c%gTk?Ge$>nMB$#zhYpyK>UMR@_Ii^Kil;H)BHA)5$y7 faK?Skb@S{e+TmO|+H;j(00000NkvXXu0mjfl3N%? diff --git a/interface/web/themes/default-304/icons/x16/envelope_minus.png b/interface/web/themes/default-304/icons/x16/envelope_minus.png deleted file mode 100644 index 34003fb51e17ea6139debdb28a131f4ae4bdb06a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmV#bZs37Q14@DH%Cvayy}308_W{tJ>y@&|}up`s*UYYH3f0!q3| zLLdf0*c_tg>5*_T3m)#gHx_rhW^W_Oz!dL0@4fka=SQ&p#1I7B0WNU*@x^=I09X%r z&&A94m*x>Uxik#femVOn53PCt%--fE@yzsz_4~;#>M?n2R6!MEqljd64HfzCOjg&h zQG{wyhZP-wjmLF_;6)JqXQ3ca$q<*7lF!8TiiQcw1TJsj1a+>It5Veh6XK4s5PET_l#`vy7#q=y zgd+r!6J+QJu5+%UsWCViG)R~IQ40nt#XP z*0;eK1ctP&x24B556zsw`r%_K6F5|a_UEtMyn5s4QUho#EG}Z3Nx+p!YCk*ON&|rX zZVxwgmgg()hXes>_s8C!9xV&a0Ek{c3}4MYczmmJ=g0jeJI2zBxwm(p$-V1vV1a18 o#rO2-+=tWt<(&>4AXx)7uftth+^VhsEsx0E$)EjJw%nHGLU zx?&fJ8Dg^>bIp&+wE3}RVL5a-#_}LZPw#U$NN*#g1Hbd}yuaUjI0t4u2y{Rj|co^Fru*f%arfka}cDrd$X z``ks%VuPp?8OO#_E3GH)O02ze<;>V)e|{grsG2M2(W1t!tU;0A>t&CllSQxbG*TnDz3U(jV{Pw5wNSRO!cQH9F%%%ml$d}PLz#NkEej9`bzW}d+c)u#<92jgxcIxs`mel pSR>16Ty~ySNB^7)-^U%tzX9}1jGE6yH;(`S002ovPDHLkV1hC%ALIZ4 diff --git a/interface/web/themes/default-304/icons/x16/envelope_plus.png b/interface/web/themes/default-304/icons/x16/envelope_plus.png deleted file mode 100644 index 1062723164bfafc24d712de8d1ab4bec9f05fdf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmV+%0^|LOP)M#@!&-f1gRI5f)@+w zq2kFjjSz$)u_!cYn}$ZCiP?EG9-3X*M2QdP@cz8_=J)5#IBRzlj>Bc(DE}W{tmQF) zX8~(DcJj*e+lUNrbzRo(U%DBkp0NO^opPCAVtiZs zbzNt2?p$^fvTvTf#w%1Drp8EZ)wTx)05rCDIVC>jr^UT3%#BfBSly|)&N>bSZ~lq+ z53joEeE!hj&U{HYFBcox> emH?lnU(Mf!F&9r30v#Iw0000+_BP diff --git a/interface/web/themes/default-304/icons/x16/equalizer.png b/interface/web/themes/default-304/icons/x16/equalizer.png deleted file mode 100644 index bc17e8339c389941615eef01bd914f43dc4c61c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)(`wUS_(CdT8jywhcXwO+3=pU)8vhq2jg(Cv1SOeQfJjgI=|av6uiK}I@s z8St`NtuUQV5sgOS`#wsgl1$|2x-L?wl&oH>)nFI~8jS|%&}G1@=XtWNcs!29Vu4Df zf=DESdcBTfu_$32|IeXAmjQ3H*$lRA!?G;2S}hC)133cw+(j%FL$z8x>Jz#Qc%Mur zC=?2^630%bgLFC#_D|J>E(1P?!=Z?YL_)UOY&Ma}WWfHZn$TrHo)_de4zk&-e1S`9 zI&`%_An=jP<$l`jwtTi;uO~NuuBJ?fE(1b}FNJ$0bV5ABog%2XzmlN1xBiX4-itXg TQX}Xh00000NkvXXu0mjfM8v%d diff --git a/interface/web/themes/default-304/icons/x16/equalizer_arrow.png b/interface/web/themes/default-304/icons/x16/equalizer_arrow.png deleted file mode 100644 index 2919dfd0826e2172427d018a6ad7d4f5113397dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)^ur^_*-v52nK`Db)C(LrGV&oJVv+M zh0EoFVHl`Zs}KYM&1Q3ppUGrknkK8n5K93!hQlG+?KZq#FGiyg(&;o?NL5u;ghC;< zdoGs)&+{l2iy($r3Rv#-dhA$!zaRa6AK7dc9*+mIEJGAU7Djb`4Kc)0!0k?_gM2=Z zXf%pasf2pH&aOZ{oxW4PE;$E3L=pR$e-^8Wepe8uW`4! z%I3sUK%&uTFfb4Zu%jx9f>y-8z@qdHE2=>O2@1GJ4^$`=5Rb>%56t)O zhtF^(VPN6GbDRikaO)->eE}9yFJM1=wZqwLwv}Wu`MF#!vu~@_YV75I_LsDexc>?8 zuLI6kzjX6Ga4f8UrGWF69$QlXq{A1MKiJ*!CTZ`LC!41g6OJ{&?k#>hbWXTMSJ-Fi zh^3?d(m`H*b7~c!dcYxG`@wE+>^ix~?QzJ`?xm+Mt?JpoBr^XyS>h*tj)@<+00000 LNkvXXu0mjfdol*j diff --git a/interface/web/themes/default-304/icons/x16/equalizer_exclamation.png b/interface/web/themes/default-304/icons/x16/equalizer_exclamation.png deleted file mode 100644 index 46b11ab46a352867a69c2d27d4c3c510dd524380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gPdP)1 zjbzZKXw^O#aHqLRC}yO~jBjRWCepd@-4^A5noxK)_uLEj!#S68h1Qyrguw|z0DZu9 zAoibkzXKmF;Ks_z%3ODMclux35kgQX6xJsuCUOSgc%GN8*Xt}TEupoh(P;cNFBXd| zFE1md#Phr~;240Zlp+WMOw%L?0({@cbzP*CN6u$wXOU8(lmakYfKm#}vQSFl`#zaW z1}P=J@8dWQQc5h#Vqsx{Xf%2Nu=WAlwoyu9nkLz7mbSJwDwPT|Gc)|Gyyi;RONIst zq*AGUz-j^2YL!?lMyXW7bzM3-I!Gpy7>2>(VwPmQ$l&-Bdb&!e=8vO5tyW`tdYW>% ze4rY~akzY;N^k!)&cxd3?H@!m^9KO?&xTws*LsKjH3;_T>HI?K+yDvI24IC@NIV|LaU2qf1VIqA09$Y1d0m*=XLWUzaBrJvR1;z2cLhR-=GNBM*GMG7 z*w`3C2yEMKI4+{bH?Tt*J9E@`-T*K( w9JeRK#!YeDyg#@D_iyte3>i80D;uo+0$n@`?!}Ex(*OVf07*qoM6N<$f@j7T*8l(j diff --git a/interface/web/themes/default-304/icons/x16/equalizer_minus.png b/interface/web/themes/default-304/icons/x16/equalizer_minus.png deleted file mode 100644 index 9e862afe46ab431887a39ea8714c66e428e76b58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw{7P)4I;`vD@Y!av|o=vO3o@&Y0zl9_=mTC^z8osfy5c)|M(1qClCD5(23?ZQQy zphfGJZ}Sc<#LI|V(~9H zmkwP9oX_WTj7B3^EEfD#O9>v22kmxS-P2`2U^<-D15YHjor zi3C=wl^W^LWx&;VJVv+Mh23t)WHLcK9#<1NmP#e~d_J{$I-Q2D>&WNxphK4d*Mq@8 zZOi3yVK^KjnM}fFvmukoAQp?MFpleU=+I@rO|REOHk(Bt5J0h5M5EDAkH9{6;dDBY zN~JdXgf0VaJDm=q(WqL9W2I7o-|q+e+iF6W0r$;jQ;BZ3TWz&aC?FUNg8gkZq04{> zUr;WWLnstdC-Ad=G@DU3nNU4CLe^+hHIYZ~Bs5LC3x~t6<#JgaTdh`8Z+^Yb$jP4$ z$1fs6yfNTd@*pW~<3!V5E`<14=TeAw`589&2nP~_1r;P)&3(1_W=ufTLcKM2xYTF>FY%7LB2Zj(5Du_5CFs z6nsHRL+t|uZCXgQDEa__%YWxNj4&fH6m#Iu^W5h?zyCSsIT8TrB9bm_z}IyynM?Uk z$tSGzs8XqXnayUHPN)AQ>LrF)GI%_hOwjN5VK5kQUd|ynolZ0w4e?DZ8F)vd5jvd? zj7B5I<1tF55?n49>h=1WdLog)d_EVE7-Grb$zU)*tJQ+pY{qanL_8iBjTH0wJlt-# z*j-gs$g+%VHVa~iC4;BkZdV-3X0xH!>miv;!elZbolYYbiwQG|%bt%s|Gd7A`-~lu z!Ct%FhNfxodcDZya;R3T;tEu!Q&_E5q*5tScQ_nK?d$;i`%oGCMh3xVvx!I~B6gx! zEEeJMctG{jd94tH#bUu?u|R;&<(?$zWDu&=Y67&|?c%7quEXc^f$GcrxEjLyquW^g z+=Zejh(@C{gAf_KrU7L#8TkEv@dB%P_@xnz^c?{oytoQA5fDQqR$`333Wvkr3x$Gs zwsN^FCcn(fdH~1TT>&4yxrw|M6fiNwlEEfdlq-Bfb2!*IzYn|Jj@fL6 zYPAZ#-;Y+SwXdH{Cb3$rB$6RZgZtz07~O6cE|&|F$pnc+LN+p%N+kpW0XaRB$-v=o zAfL~J3|SgH7z_q7mdE44a5zLNm4eghL^hj6JRTP_#`Qg9$kO0Zuh)aF>j;HHC>D!o zG#YXR_Bn;y?M6DC-q)wd(%?y_(?Kj2lam-Ll?sBvAlP5euhg$$LqCnH&FfN=rNQ%N zvnin0>y=Rpg#yCiFxX$uw@Oxce?*{F&Ph#{1~2(Qxm*sBNJM_%_k3sf0<^ppTlzL` ze)CDL?OCDxmN&{|GChk%qaVxVvV2>uR+E=s&$Y}BE`PakKzZ5Z18r=FgCyZPY^7=JNj54p}CQ!02Ot?nLwEs?dc Zega(?4>*yC6rBJ7002ovPDHLkV1h{#_s;+T diff --git a/interface/web/themes/default-304/icons/x16/eraser.png b/interface/web/themes/default-304/icons/x16/eraser.png deleted file mode 100644 index 9ffba3dd4b36701d68cf33badcf5f233f1fc7617..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmV-^0)hRBP)VH3E@Btgs;sIvO z!Dgny##NDv2)9G{)h-C1i1Pe+?{@CRCo?J?_;cZUf4_6zy;lNQE|&`efdF_s9xxh> zU@#cq%7d4n!`}!-2SlI%YXFqsSeXKRSAfD4L!!|rxZQ3JnoOouf@?UetslM46GEUI zzWGQ+2@1Y(K{}nDgDV6+?09{n{OXA$Nw^gqI2;am7mjb^{AUz={hz>xor4<(dyl)_ zE)ay-4m8PrIR2CZJzgo$>-An$RfYRkeWHXg%wSC-bvj&fd^`JWNr2rsoXKQFMNy#t z<`V}sNf%+=Y!@HyWOvR9FdWWiv*L6*1+9kr6)yRE20py|@Hw8t!Catq&gF9AWHN!p z`n|KqVW-mxNB45O2*1aDop6EHIiJsqqtR#y?#wznPkzG3t?d^GzeV^9zvfgb#o#ev=Rg%iRV+Jl-6;C zRmJ{ncFaYy*?bwhUSe0s7PBCD$~J^y_d1@9EbNge7?lak7z@UPp=Y9Mi)N#;Fvr*Y Y1G*I&-ZiG_+5i9m07*qoM6N<$g5midy8r+H diff --git a/interface/web/themes/default-304/icons/x16/eraser_arrow.png b/interface/web/themes/default-304/icons/x16/eraser_arrow.png deleted file mode 100644 index 7479dc31ff2fc1cf8cc2669932a1e18005dd13dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmV;~0w(>5P)CJxHZe*njmNNbsCsBtRG*paXy>xX%>;J{N(90){j;HbQ%QJLq&ekjv#DlgYLU zj^fsFawgy*gg~gP?>dJP6nvxthr>|@w-FezVrO^g(amHsiLFSWp`ihSUA=BRe}jS# z{}ULo@`>*0@f(Rm0tmuF2cl%MtM?WU{Oq=Znwpvxj^mii2aRkJVJN|(B)PguC9{Lh z+f@RrPT`@UA+}g7Li*`z3W|~h!je)KFU~uM{}Es)>~uQWLZKiI2(puNRPwt5etF@V zAK$}tSs+$+xm@h#<|b@iKZnODtkGy-=923U!c*ASJQawQJsuCcv9VDFua+un<`?1B z7580)pCkN^j@fRvQ`qbEvbkKY3XaF)6jrHJ&_D5QLAI-TcfPjHozLY0*>oC+)oQi* zd_Fdt%~rv&SgZ{9^z;m<2B$CfpF419JQ$1cJU_C&wiX~3i^VoNI?ATeR=J|lD21QJ zmGJgQA}*0CGRw=c^)sgphPE~xJb3&y!gJgRF`LaTnM{TWg+gp9m7?&<$_gEsTCE2A zVr}ZwG5wAu^soIL3^dgN1RuVS5TQM#QrUvlm~c4E3SXVL7={_BH@iAzdt3Jj*Xc|K znvWX{dk*X1)BTwUj&?-&+0>Yw3WY+4Rhxtn;!CB$=UfsR!U%KC*Y^eHw6?w@@v$dg zxL@D>BpIC$1PTl`1ab^t5&Y?(Sg{vnXUF_J53K|^e|~BpAl&-{R_!YXDhFHo00000 LNkvXXu0mjf@N-d_ diff --git a/interface/web/themes/default-304/icons/x16/eraser_exclamation.png b/interface/web/themes/default-304/icons/x16/eraser_exclamation.png deleted file mode 100644 index 51bafd9b4c9869ff55469b70a4aa7bb86a9c4f16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 735 zcmV<50wDc~P)N}?zTibWvQ)dI~%^g--hqnvwR_nvdQ(8SXE!vhZ-e*gc&!+8Ybs;;i4zP_H? z+FHC`FN=>}L;?bkh^T=EFv7qS7m^Bti@_5Phl#~vL?RJ#-08PZ@YWtWY)4U#(>sj zvsrfZ-Rw}%1gxLdz!w5_czF*-VmQi{^u4HG7raX1tTaqrNva|-Tz zCc}k7A==T=k#HR6kEwh+>-li)AS_H#rq*X*R?J=Oy6i3%5i*%fzDcLkuj=aRTC~dit4u R(F_0p002ovPDHLkV1h=DTzUWi diff --git a/interface/web/themes/default-304/icons/x16/eraser_minus.png b/interface/web/themes/default-304/icons/x16/eraser_minus.png deleted file mode 100644 index b4fbf24f596a2b628539cb506532b9ffe56d2b9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmV;E0&M+>P)hQ8WvQwk`Z>5d@{qLr2s1Zs*y`(4L&o2csxD=k1%j!;@R2!>b+*OiLI!>Y&OHoKzIrF-=o2&{~5S3 z`P}Tr%H2kz0R&;W1I1)L5WY`=ZXIc$R;yi-Byl%SxcMf+FoYG8X1&f#wyq{0Oc-D~ zgA<7aFNz`v&)+dnF=-&I8g}t|A-R0W0L9>BGRY4H17$$aSuZe?-v{6~*A^e*J8X;$ zl;l(@#rOMt7+*h@R~T%uSYY!;>Jh@Pu&-@qpd_c$X};I%O~CbGvSs@#yuG#b7~vNP ze_&&d#bON3WHNlW+ns=GwHkwsMk9p7;ppYkudJVJz+D5c-!hEVcc{|>7x`6m(2 t07$Zd9yNv1?O$soY4}b`70342nSXWR5efvLtr+FGgPi*<@|({r23`Hf(j^&jaV4-|sy4o^#0(Aq@ust~*7d zF}p~#+|l+N*b!;31rAn%;Q)~^08Ic4!Rkl>tfYZ~6oyy`S!f#`mg?5WQBT$dNS5jx_{ptO=s_ExBD~H9P0(*_(j2-B#1C4+r^t}gA+uj(*c*u zg_4pIHsYd$`|{BvVSP(W9jvadL9KWcB|a+I*#pn^+`Nb1!IBpg7Z-~&nT*6>Fqi`y z4*0e@0m_S0u<-sdh#Lmr`@}SbD=RC(rZ+r5_%-%5PX+AGENnCy&GC4g-h;r#3M@OO zKsRIox7+;(o?iod|HwmxUn2a09&>khH-$|mlQ|ZPLE#7l0u;tm0<~JLz4Ga&m%|W8 z5xrn2&}cLrFvSgls`?(Qy~^m@JY$OHlbNTpJ3I-Pc* z%#%nYpzt*byF*!7nHU#HoKB~iy>+=Ekw~=oeOwH~c(B6%2K%!KFb8-%UJdSgD49$G zyO<4v>uf`qBqouqZ19JKG$z9eco;s0i(&R8lUtOn>4G`B<~PDHN8ZyHM$-TQ002ov JPDHLkV1f*%W)c7Z diff --git a/interface/web/themes/default-304/icons/x16/eraser_plus.png b/interface/web/themes/default-304/icons/x16/eraser_plus.png deleted file mode 100644 index e7b3f1c5e1ecfaf21bb1edfbdb99916d138a3ffd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709 zcmV;$0y_PPP)7FpfKV5F#MLVM}YFo;NS;JxEdyD}tU1Hn*U++H7r3ckey@?rC@FCLQ>3;Ou@r-`~#fUIL|MGMS*I zr3D%r8$qpB!=7vRK!xW7O9h0Z0Br!2;2seG-ibg#z#}s)f<-3qcsylr6M+>I+q=V){!Au=t*F3YFu;?po*_Jcje@uT z6Ie01qkATJE1gaQL0IlUk%YQ>Zd0Ihn+j@bYAli@aaZ}B6L!cVcUc_vVj1Azd)y1H5gr%K7j`H%4O>d;+; zrxAX`#_V>x89Y2Z%ohrUDma-;GPtg;4!EiIg?xQ(=ZcO-fl?RbBp|)Ly?rAiBYZxe zuY#ABmddch;c$Ju{&V2G<6P7I*@Ye#A0u)?ZEdXu)3|6f%FAz^vN(=&;r+Z9U0eIXyro$_+jq*+{CVor-wp_NfSVp` zhfb$6W9lw>gb1;slzx#L!jk8@2LA1l`m?6}-ybADfbaJq=+H{CK!>#rOUwS%zrv3W r#C5v}9?ckD+yPLN7>uu7kbnCF8A}~g;6sy^00000NkvXXu0mjf)lfv- diff --git a/interface/web/themes/default-304/icons/x16/exclamation.png b/interface/web/themes/default-304/icons/x16/exclamation.png deleted file mode 100644 index f37eb958203d45839b176190b2c07d1178704421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_@5P)D{>2V6+T&I-osiU&--z)iw0u}+Nb@sw7F3#HYk1>xK6;n`MM_~gM&CPwf| zYW|{HT)9of%q?10C6#AeWnugo{^sLzbO`?;x%k7q=5o1+6|!AxLavi}Z(|-l455`R zG>muCiOythse>d*GUUFxD5XkC-s6n51Hs2w_WlXBMBX%pelFjn?}>JDI-Ley=aN@R z$n_!4SUd3c5t?=d25o)mL`OEe(5~NjjvNjL+3j|UhFfWRvX!D!ZCTE6*6hJpFB<&) zct!~{iIv4mG&j>mO60Wumw+K6P8p&~3yqH+6r44C;OjwFoD;zxU0VqY`QAlUfqGeRI}c({Q_>>24w<5P~HFl002ovPDHLkV1h|66Z-%F diff --git a/interface/web/themes/default-304/icons/x16/exclamation_frame.png b/interface/web/themes/default-304/icons/x16/exclamation_frame.png deleted file mode 100644 index db1b763d86d274a15931ee8f9953d30c59bed2aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)7p8QncE*rXaDE-NcO@$ut~fUvIkq&z)6x79>Wj0qTZ^Dhs~9oBOA%tn5Dse|t0SkD-Cm z0+1Yr0nE(I$e0O;E4OW|zVrD>`Tv}p95DX;xa|LywfT2Ia!@sJJ?I8ld${Ru`0}Ft z|A+gT{}U1tz!=2-^t9%`yR*gykQ!VDaImtn^qe_T`Re_>%>OTMC;r#h*Z(geA@Tpp zY4`t^Pr3i!y21Aq(Ahm8wb%>@Oi8dh`1WDp|2tQG{$IN208AweV0`g{Js4lPfeF@bPK zWvRi1hc~VN-@9fA$1oQli-B-Sfz$<%9*|y;W2+|9*fMEuZaRi8W z15E@)(-I(_1q^La^6dfQZXoUhicJOL`9L+RfOsoV{Q;ofX&?iD9%0}DVqqYbA`**0 b^)LYd`ng3C8}oH{00000NkvXXu0mjfgoXed diff --git a/interface/web/themes/default-304/icons/x16/exclamation_shield.png b/interface/web/themes/default-304/icons/x16/exclamation_shield.png deleted file mode 100644 index f5fb107ee5ae5a705f8b118c6e71248dab8e452b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697 zcmV;q0!ICbP)fM{!xA1%AHO%>SQ*76UH_WivfE`(2x6t=X@z#WcQ&^o`2^S4E26D?UVLf)6VT9aL z7sU9hypvOK4(oPndagNv9a%8;ftoj#-{m&aov@znfVIR!SczN*gTWwz^J@GatSz)K zo-#~1))|lm-v?;la=c|VGt&r#==FM$t@}*GxQZQFFw#%kQ<1xw)U+NX;(`upYimKJ zQi0cb8axvxMQ{#zE~Z(hO%@Elp%0?LYthv7Wk`f{zw8 z(JWH96MRQu#GBzbA!Qd%5#6&pWavv@Nf^PI?JnVsWp?MYMTLTG`9l?>4k_J94nJ-pAD`SH7M!I$ fqne?@4tDp7A*K=j-bKcTT&W0`XyTcnvtRnh}Iqj;&>y`|)|_htSZ_{~w+-d;sx5;vjjv z2JBzX$Z%isR7C|{C|EU{`UgxMvCDj0e|Z-(0`! z{(tM1(*Kt)I{d$Q()tZZ93+p|fNk>_Ef22~J^tXP)Bn3yjlnJe(RZ(!{6Dyc_c%x% zuK^opGS0bmQu*b}+gkr$-qQI0^=&1X2H~5>WnO~h@fxtGn_Lb-^Q;#Ys@fai$kq}{E=u#vi76w~`!CWraV4V`Lf zvI^GzSw_hj;id?Ez=Rb65xSe(8xOX0G`6`K=Zv)&RgAS5YmxF@R7s^$abk32S>gRC zz-g-nMCfekXl$D-US1|dH7-J9-0F0}0DbWOAtb$dL@=Jw>=P5nA1XG`}Yxj}uxs0yfSxHVQ zl?5q*wbKqTW!uFEXRy|iRI$y=F`Ii}%P~Mmudb0&f)FYIQ|WHG-uff2m~-GUS=U)a zE!^&bu_v(MFsW_UJzy%n(g|x0gx_Y6mm303U*lJj{3-3MAds2iLe*>s0 z>G3(z-IH*2|MaG;KSat6lg6GROEy&iAwrl1C>m8%6+Q42=^lV@A7JDzEL=Bj`_mxO zxb!E$Qw$z#d6UOx<~$QAC78@1SuNgswD=v>D!li&5Xk2lO9|xpZV>2Oxqb6qJN3PG z_NYP#c<+Bv2m$A6@&ngjUyPA%eKZc+=FwjCbkr|uY0&ywOLa9khh!O&Wtc2OvkdDT z(VMBk{@l>$@Z^o-Z|E1GeQ^z~M^~|9MJ*di%#D#smqYoC5n_O%=gZ5lJnS9k+PG(2 jfCiu%(0}~N0hsy$hGq}FqxX`800000NkvXXu0mjf$vG{R diff --git a/interface/web/themes/default-304/icons/x16/feed__arrow.png b/interface/web/themes/default-304/icons/x16/feed__arrow.png deleted file mode 100644 index 24fdb9193e60a7cd7380387476526a7399f73439..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmV;%0y+JOP)&;Nv6p8-IbF)X)+ zdaG2a1=T;pSh7aAB*I~!Lq$M@el33uG|{BNCLQht`BGnfe|91re%(WDw+C$e=Cn z!G*-xx5Ul2@J;71ogXm9AR+*mpikgERRBgUs0Atf6y7~R{>drm{(_EON@CGz?5O!g zviH6K@E%lqD!>%V&fVFIs^YCh2Mov5t%qrw0Kvb!i1!|xD+-w6bPN5KuYF116%R-> z>_e==mG#j22qvw;mkq`_M;t}Oe-nrskHhQBNcCu>;SiKn<8SW-ErF2>h@yx%itsVS z@oxgwTKt3k_#4~d!m^%CnXn3d(%A*^E?m3nD zl6k&Efb@_g)f+}KZ$v4R@l?by#VNbO8^^G5_|8$fdR?-8|A7zL%+q~c_l}+vpdU~I s*ngdFFz?`YkBp=1)4}}J&F6vcA0=S~Y7FfIXaE2J07*qoM6N<$f}t^4oB#j- diff --git a/interface/web/themes/default-304/icons/x16/feed__exclamation.png b/interface/web/themes/default-304/icons/x16/feed__exclamation.png deleted file mode 100644 index 5a5a1a49ed9f05e4c89feed68eca70380e4f904b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcmV;-0yF)IP)Q5}u223&T=uY8`0fE~FDUtb_i>yYl7kZ8iby-0TE4b3~w zlZ*Z)v;oe7wSNg{t#R+J<6fVK$2|bB`2@51Pehc57q21Gypf!jCA1LQvURkksI*3F zjXw4s=^cS=8b)8^maZpLHA{8*qe_^W|nT$$lG6N=;2OLu+zm%^MiF13?;;BjlR~e6{sok=d^vn>? zo}OaLA3_>ZF55y%b&9B?Z(+W`$8W=<-+V7tAen?@5^8G5#)TjmBaEc+)D-)=FB3Ca zmedx+TON;;N^BFLZCQ+_(`(qjI?i?+No&Db2zJSe)qC4(lPyt$vn1*dlFK{-ATybp yem6M&Qh-_@3g`v@3vuTH=YS1=*P-$|is3)c!T^|nGoAMU0000`#;+$1t&ZZVHBA2A|S%RvhKDM9c$XUlBOha-s4np-s8MSYJXA1DwXnFKDRdg zmUJ>GiWPVDIg@Qu)Wh%C#9S%yW3@i%~~ zV$X)LvGZ{EC;)6fi51>s(=U*oU3EZ+5Mp(7R4F@ER24n`0vVWuAD-8Hq`ebW6T-wTsj^6HLtNVJ^FKS8} z%?t|xtHphAGso1s?|>0Av(j8PUn*v^9|HFU=w8)C=b2s(Y-naDMr(}Jw;XD3j1U8q wGrqq5&cw(J_hvF?1Xv0*0=kgx9~FT4Up>tgV-Rl0djJ3c07*qoM6N<$g7fh(p#T5? diff --git a/interface/web/themes/default-304/icons/x16/feed__pencil.png b/interface/web/themes/default-304/icons/x16/feed__pencil.png deleted file mode 100644 index 48587c8f8cbb353e1c8d637f98c8292e688c81b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753 zcmV3a0%i8U0IJRjy zi{?&dlW%a&1OZG1WW`#HF_jZlRdmvaL<(OfxIWgy(q&8N?&@Ui;u4v#cq=szT)qG( zNa5-O##O;y8izF*n!=Fg>iL-( zSDkVsli+zw#6_-~QC57sm9sw_WpTQJIq}S?fj<9c_TJ=~z4y5&K-2sx>c48`!`D;1 zgYsG&gT|0+lzAI|9B4TCb?ZdxnvN!OJPk`c9(YRc@f@dfC2|7P07<~UiMZnZ^WX%!7fc5E%00000NkvXXu0mjfA>?lK diff --git a/interface/web/themes/default-304/icons/x16/feed__plus.png b/interface/web/themes/default-304/icons/x16/feed__plus.png deleted file mode 100644 index bb6db9b11a719bd0c3d6f4b4498b8f51f58a843e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&Djwl~R&U>6H&U>8qNbN4F zShbqGotoSfKc51);MIW${l$%~9gFdNR1Gnziub;5t%b!ooJiEvwV@+^KGnYr@E}54 zl#ilnh*|snzYt=w$^_ZuU)ZBxaPu=b=MWJ9T(l}OqYc1$1+O5rm*RVusE%ESr8)fP zhsb^NGum^Y9yYU@!3?}#Zh))RPVWAQ_a0Nlui1?2I|;ka0D?XK4Ksrf>Ht^YZf)M? z6OU;uJs`LDCqzB`eiEifVEb{bX&oU1vNR?87$7TOg=e>r_Ro;LSD>jKyK@eF19TrG zO;fTo#WKjU{{U1KdvFmOIt#yk2LRiSV3l!fdX!Rigq@$vakQ~Q$RK3PqoYdVR8dv5 zG>QzA;mr$}9D?<|%e7~pP@emn-Y*X^T%D(yko?fuh>v4Hm|pqk6`2_6b>FwSc%iToHZwv9q-n}d|BBUL_0{1k`s2p! zvJTI}o+4dI!lvfVVvBDscp4fYijZ6m$>kW!62`}#vh;A0H{E$=uial9A9*$tPlO=> zx;pc;pXz4+mI6C4R%aRYEr;5fWpHdyz9$^{G{10VVrJEah5av6UJB3xGywX3!4Ieu joh4W=DrGJwr-7w+F!l!O0;(DB00000NkvXXu0mjfyLw0< diff --git a/interface/web/themes/default-304/icons/x16/feed_balloon.png b/interface/web/themes/default-304/icons/x16/feed_balloon.png deleted file mode 100644 index b9c94756a18d1ad580fba4e72829e8bcc7239ad9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 683 zcmV;c0#yBpP)1?|LIv~Up=w2BC#O%JF=8==Rh zh+0*v#0ms6=>ZmLYGzVQRF31FIp=;YymNa{2mX8<_tyu zfVKaYHsrM8zEWJNza+C3Kx?|{R@5G@Z>enzQbC}tMH_>*7HusmzAIypQmHsQIleNS znglp!0gNVF-%{IH2=hV7hZtk9)+RD>veFu@RFGcL)EG`pW`6-JnIIJeB_Fc%!u$0M>wtUkaaIqV)Va%zwqU9-w014a~aTNwSE< z0ssr;;VhJ0d~zOZEn*C|ZWX%y7;HHKC}iX=A_Cqg0G$BhertM0sOlb|qT>R}Sa^60 zrk}y4qeyxg-g_eFi2etN2Cu@q2dIYisE*5!Za^NN1zQPg_u!l(at?|90WiiO0~e9L zQ*h_df@9+mBsYpo522biCjkE!ps0<(7=!5^LUj$okB>0k2g}D>@cR80;|WTS{o6oEt#Md0JOt7mK5?K6)CohLV6;Qq^5dXpBEQkC&M>~AuF z0yy4GXIl*i0rtLN2T%k;5t%DbEdWwL4Uhqr0L#ic{ht2*Z`_Q%OMu0(pPwZwDwX7h R-i!bM002ovPDHLkV1j7aE5ZN( diff --git a/interface/web/themes/default-304/icons/x16/feed_small.png b/interface/web/themes/default-304/icons/x16/feed_small.png deleted file mode 100644 index 184a29e54cc36492caf7caf4b518c5b8c2ebaf61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0cSP)CXk z4>aWeBAfp}1J2+z0OV|t%^$l}|9_vT{r~U2I*3V|(!j2GkwL%!ke@-$h6A9+|N9&M z|Nrz1?3Jgf1Pr(v%Wwpw@Xs^@h-M%Fvw;9)@WVugBX|wC6~(ap?*c1`?I3>x0mv&L z@Ud6@|5;y#<#-J^>B%tnW540+|BG$^|D9*?|K}_du+1RN4@zZTuhC(ci`Rht4h+tF z?HD%gwqZE4!;<05R#S#E8;uywtkYvSvr>~`(;OKB>0lV-1#&O|w3pgJ-YsRe00000 LNkvXXu0mjf6DqOo diff --git a/interface/web/themes/default-304/icons/x16/film.png b/interface/web/themes/default-304/icons/x16/film.png deleted file mode 100644 index b8b4b5c95a33da87618c3dbacc75eb163347970f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)h(GZ7M4TB5%|OjqYw9fA6tw~sR!3y4_3c? zWm)s}fm*GmT~H0?2N05d@W~#wq+@KvI@&+wZ4X?%K!&Al#yiO&dU+E@)XV13(_9nIGV3Wb7p!AGOf zcttEMESz&3H~1HF$W=SaKsK8N!NRsPb`JZy3q13UvGiu7v*;PZES$=Y=IaBgR7$&` z!>1=$m#(oYUj9$`LUzbiJIa70Ng!Bw%%{G?7QVvE$T!$`Z)9xIYgkzMg?}VFny(MU z<8keRQ>S=?74KI(=f7adHN;cr2^L*_IM}DTl9#eWuG&!sL{S96!n1YpCoH}RmObo> z&;%Q)Ux<{aXtk#}WRRoz`hXw^P~Ny7YvL`|qPO7lf8aTo$wWTPkf=|QYW|iTa@CG9 zU^1CH4u^xn**uU-9esd3cNq5=_veJ%yVU&)57%HV5zQJ<00000NkvXXu0mjfSTY*i diff --git a/interface/web/themes/default-304/icons/x16/film_arrow.png b/interface/web/themes/default-304/icons/x16/film_arrow.png deleted file mode 100644 index 1b256a8b8561553f7cefcecfe1ca15379d79d442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmV;<0x|uGP)SJm2#@KaK)`A{-7!2;}AE z&HfL}WjmozNTFZ>!C(;V(9mc0q+y&+5orv#7%3R0lIWXEpr2q4bJ-3d1q1>CFlabu z@}{77yd~n$jmM!Sx`i0J>@lbY#FlfiPe=hvOG|PC|DZboZXyo-L=0MC121h+Xw0jq zR(f&2P7odDvK>MS@caE>&~TBn#h@`ppz2$J+7Jdewt`mEA}X7waIbD$bY!290_NxE zlk#bVQ4CXmcbxY!|S3W`-BwW@p$A0uS-fwb{IuPMcWF6BJnrOVJ_PtqyU%81qKZx zowjXgMzUxyq*33S`puJ`BjdhcfqPaECx`7N|`Bp(O_ts-p=pfa5r^0p0RJJAZ_B>k;(sujrXMMwxaK zS5#}bs$Ru~=gYY6IKYDxaQWFR&OHrC4Qgs?qHS$$Ea3Pg3hr<}F212R*V=KdqA_}= zxJtSMI;V-V#QBprRc^88mk)2{-_|{%=K{9)6ZOznrgQbPj{pDw07*qoM6N<$f}2%M AQUCw| diff --git a/interface/web/themes/default-304/icons/x16/film_exclamation.png b/interface/web/themes/default-304/icons/x16/film_exclamation.png deleted file mode 100644 index 371e74b06e10ca5c8d399063e14dd79d7a09d36a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 750 zcmV4l5W#LLn$nIt4SSQ(+8d>gM|N_x;}Y?Rm14l1rB^UB>aLsi}(q00026wzl>< zuB4Psln`S)J~cH3*_rdd&eky@lM*B;B{3x#K6vw)?&Rd8wY9b5P(qB+>gp=wDNA}) zA4y6iq?Dw@&fR;Eudc2F$RWmPdU_g)7^5spWJyX<==b$@dVXL3%k}GjLoq!)EygIu zsDu!Lm6a99d)s~6I}e09$nt1pBzHgcRIx9~AYWNo0gywC(ag*Y6ftEQt%lCNT@E}l zY;3sj_`U%L4|EK5hM<_4nGs_YV^l&2LATq5d~kPL(GOzcZtuQWBxPAB%BI6d_Cnt6 zb^(-7*R{F1IVdikd2byyHa6-TH*Qn_r(Vq-dht0Ub0-~|ot?G3ybMYRAvkyL9F#A= z_0<#onAzH?O@;)Dyz;{S&zv}MN*&&=zCHhqm>M955Q6#nc_>-~EoHNz)ovIZY8o7B z8sBrx#Moh@yW5UFb!_OBm-Y%F2qDO!u4`w{o`pgxRR2XqR%o@F+O5LD))kMAA2GkM z?C6un27bBxg%B!rUCSYaU}0ea$_Lv~)k}JJDz|TLEB^h_XeZOO>B5BzinLiwOzhW8 z>tg6Dp{goNOH0s9N_n0XMP^`E%VQ%y8=Dw)^Y&FgeE*@%2Uk_G)Jp#tZGM^Mu(h@2 z^y$-5O2bKEU{~A2hxa(N?@yz{8yb!4n)#-auYGQ?+_t-ON4vGDu03DE`uh4$i;IiL zF!ag0V;cbPFJzr(-!}NkWn6NE_;ybLY6`oXj16Og-v;&xW!b zV_U1in47Xq(=wF`>?Z$!pzfaD_Z&_adE?-7G2YMfoaYx34PBb8|)gi6bFs^RH8LGfO^B#|FDOh?`&0&`_ zgkF%zWWdmIOAggw_m?r~En&!4guGP3tH2f>_DAucXGL=ipU?|7H#dz1Irl;xj@c^Q z^csP99r08dtBDf&Cg0+bZC!KN~e^stDwQT6isG~XfnCn5 ztgHwE7bKHO@I%MgXk-(^b46kkLm{RJ=WGFv;06W>cG%?%p%)|)2{3e=cSVbk{COgW zzUdr#i5@kJ?x`%=hqRURhEM1P%gf8gg7`>y1M*A`(o7b;Y6g!d*I*lciJO)vt~RQg z!!BnCy&xWsgQ4S+Jeh@UIE{A4Dy+^FWZxT!A0D#Jk=a_IYa0Lu~-ZY9h1Y+E%eh*lY#~GOs!+Y{|aNX zX|#vVJa#rwgo}hI1W3dd>)0$N@PUQtQCYpAux1I z+b6eSn|Oz2=O&t-6#sB_VFG!#8F^>8lkD z4GoYa3BH;d{U3O}USq)x(05r2k2|X135PX@UCt1CL4AGwT1Q6*AHV-i^#$<=N3`aa`0Lym;fL{_UCx-z xX1#!(6T~Uv^f7R!T3ozl7ORiFXZIure*-a#OxYWC6>9(h002ovPDHLkV1hChOI!c| diff --git a/interface/web/themes/default-304/icons/x16/film_plus.png b/interface/web/themes/default-304/icons/x16/film_plus.png deleted file mode 100644 index 2e41b830996d7b9bce031e93109cde22154cc957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmV;t0z>_YP)O742!1i_5B``-E1YD2l#dUKrU%qr8P0>Ej^^eGkAKIls&ws=+ga zRv^nVI8?AGC|^+L+Qieo&#-!TRO;MYu(&pGX2^(#KP@<~Tv7cJ`JPrVFfgDmShh(! zsJ4H?6JZUN&1slzOSt%=6uI83$diq@^TUjy*Tu;97E&;$UoDU%2^=a|ZIr&j;@C!2 zJFReTqeC${xOX9p@1uRMvs_dGHUbS3^NFGTUkZ0000h=)73+)z3M~Tce(e+ z>n+$C?kbhVH<yMIAoRV|4elVob5rj?rbZcgdRJpokp;P<|L z3h({-URYS$cuics=iO|^dCwbF*pE)Gb}HZDp1*{l^<5OB6G!dA^P4T2{k8Yh#!LaL s+LoI>r+DV3S5Z@f>z~K}jAy8yTX$@K4)4KVK;JWXy85}Sb4q9e00J_AcmMzZ diff --git a/interface/web/themes/default-304/icons/x16/films.png b/interface/web/themes/default-304/icons/x16/films.png deleted file mode 100644 index 3ca32682411ad922fd5831e34468520c1cd2c39a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)w2OuM-fNJnmGuy!z>-(q*2S-D(>a9!v%v(&+KWdnNoRp0mY*-OY| zG7ghw4-b~VviqS}EP@Dn9KK*R9*=(xg+e{Q-;ZcCO6OmvMlU-1bUF>Iwh#OH9`kKx zhG9UsF7%ozZR7gv)`9C^-`}dLg2+GaxoDb(WHR|i(Btq0>$exaV`6Rx>in0Zz90L( zLW~^aq;Os6b+hmdW79ocyVLdbO{G%epP>hbUfSF)w9+oJ_P(dDL@0_fctCo*rq5Bo s55{)Xgxuv|t$6AgMNE7sY5@2zH$y6}2o2yod#wU3ehZq?L16?zlEQZA0do z=FtX?R%2RfYDpZo#xOGxvJk!KqMInZdHcVUXA&g#!^3~h_r1LQ4;vX7VMHdADZ>B9 zIne2J!&^an$}z3LY&NrWI;{aZJeUX$zeo3A4!*}(bPZ%7@|)(gr(Cgs57m-XDn)?c zv!{M}7M{Kt-06LTo53+$5r)*cmieoIFqup&nM`Ugc;*ScMXP@TosluL1yVTE*ssoM zPq}~kTCG+P{ClnPST!U`LO2qGKQ@MD@fFR}i9`a#w!UR$Wj|;i2n4_wQwW|NrI{?t z*w(k=NELiOpNivt4vu@XlpT-9;~=*6J-`d-c)eb!R=egD2p2yH#2P1w0s9pzOPFI1GZ3$HogrZ8qBnqtRF}7!0sjEad#NyyCdJ zcRHQ8^k@yWoKoAluQU@y5lnL-ueQh>n!59UTsM7x34#E^Bs^c2R-oPu?J?BX*H1C> z*m%M8-M&S%^vpvDeJuJKYHxo#+q;PB&Kc-%?YW|_^D03zG^X4?5g;&egLFS7aF;c@6r z!D}wPeHP7@Cur!OL`_!!Wh#eMmotA2AaZhYnA`1^Z!p~4JB3>PIIf!l&=@=@tsIc* z)Ti90z6yl`1b<%3JA4A7D8gv6LT?SAO80>3UZ>LuVoTrj^zFZfgM&D^`r$J&hgPg`m-B1i{E-{RX2&MMW<%GczM;X=%vM z&nM@vd$W(?)7m}E1kU1n(t+o}3KT1ZIK89O>A++c^3s^1xYQB;?Yi!pk|KN?6!Y-@ zbt_6rO7JFjRwxmW=2c=T^n32c&4JH~bOQ`OihpIP*YH=P_`Y;L)35(02GJJkp zLpQ=|>^vr18KG-c!Wn)}WwHw&@U*^b5tS_wTx^;{ts#O=M+~Y9!n>D|bC{2uglG6N zBH`l*PapX(dQ0f`S@@qv9<=zhsJc52wJDBf`zl2DDxCM-=xf{c<<&wlmZQ=)k@n?i z0mg??r$+jOLdHEFsnu#~uKY`-Qb^ADGkzqN_9L;Fh2%$-v=a+cdlD{DF!CJR$=SUb ry$!5~6D0bY*!0a7Hu)!(R@V6o$3;YR3W}GK00000NkvXXu0mjf*6B{F diff --git a/interface/web/themes/default-304/icons/x16/films_minus.png b/interface/web/themes/default-304/icons/x16/films_minus.png deleted file mode 100644 index b570dce43c337e7e2d875a8d10807a8437e1eac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ*P)7#D)SL2ywBLRS?kUD$y(PBCg4)Xp?c$k2q6hNN~{ z0tN>{QceA+N^KKEsP$vjMQQ&)sk_&E#!j4QC0=+)<~{Em?vqfhRwJfbt#%O4YXW#Y zo|S*WbMBF|AP@*prBZPKA5ko&Rz6{NsR{LI12c;aXyTJ|o^!9WK!o-Z%d!|SB72rJ zw-8_WfP3@rFp;X`hP-U&PN!=Dx zJ$wE#VzHRbq~6Ap<*(e`$Ye5Lh&_&Puo@1BKl^;Xw%6-LFc@U#qyB+Q_B< ze6h#*HfNfqfgBh1n#ykD)@u=v5vMhrUFYY-gih@Wa@|M`+_y+6u7rtXWy#smf zi`)0(#_%wTeSOFiwcJb)&6DH8UUyR8Fgo4F%?Hgc-?Sv*XlUp!()_ow2OsuQ(z{Ty zyNH|nUA~sM!CmpYDB=Y-F(QM6#~b!>`~8XIdtE%-b|IG7=ak^ge{h;kSnv}!<`cTr S_+*s;00007^beN@z*I+P!;OA^j?OFK!eguLe@Qx(W=9#8^A{vc?DC%2QR`!$Xk|cpKwm|USDay&R zjH13(M^D4;b}KaBUP5#4BK6LM!(k9beGl;g6fTzw?fzA?d6#iaqj{HYXh1|1!BiLW z>KjeN8D4-pG@JJ=KYRjRU0n(tQU=ao3TH}6KEr0iSY;&`d2DYmWi%S!S5#DFN=r+j z*XzkSccALHQny;I2t9rRd+&YZayi`Ncd4lfOm!hIdvFD<{mZ{y|M+f+d{w9866{xn zt=v};TCH}|VzIz%HqWt8D5P$Xx;gv_?Srcjhd$(edH&6}>?|U8YCwJB9Ie84dOYAb2zuPz!q|=h+~b9f|51MY@-HTXu!$dQaCh!U zfc^|g!<<@v`Q diff --git a/interface/web/themes/default-304/icons/x16/films_plus.png b/interface/web/themes/default-304/icons/x16/films_plus.png deleted file mode 100644 index 2bf37576ff8e49123ced7cef000920f38481ad36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 625 zcmV-%0*?KOP)(V=pP88>ro5_N)8bmq)jrLLvwST;mIwTGOObn zG#ZS}nw3`6Q5(bT$3+;3LEv2!-F$nWH_u8+)(an=bH4AFhxbE;LV=ikK3_rn&kA5N znNr)q_uM06K}$;u<#IU#@DasyH1!%Icb5>lvxwo_iwKL!Ip1@yvOt7#Nj95hz=-UA zL|Z^$;svgbKf|SH5$Ao=GB-L~7BDuOjWU^x@q!0|vFGTHJjP(Wh+ZX&bL~?y=X>t` z)7Rl}fDzxH4;?uTRaFs-Pa-l|L`V1$=ecw`4W_EE)oT69_llx`h;&ADXE@U|4OM*` z51&FP6q2-FUqb890(WPV$t0Mnz71jlpI|VEE_DSRkrH?3IZGrGAj5^dhNl)Wkkk=M zJgN8|Y&wpdPC5O4KU^-?9I?md z3+DSLKA>xK1-`MjfBL?1&v~)$mJM`sZ|Uq8x15qr^EeqU>~%T%9_<5Vv|U@;;%kjI zJ1V|c_ULsVo4}I-W)e$?&u&58e_*Dzoho^D=yG~@$pt?FuGbxeBYrKu00000 LNkvXXu0mjf#C9e2 diff --git a/interface/web/themes/default-304/icons/x16/flag.png b/interface/web/themes/default-304/icons/x16/flag.png deleted file mode 100644 index 7d0a6ae0be887bdde4b7bb0fb453acc2decff2f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)|X zkZH*v(=@Xeq#9NjB&q4J3?!_K?8Tn`cT5t=_Mrnm&OP_s-|yT*B0~QIJ!2+67!5Kq zhd0cNhne>bGB^8}J6|#ePSjIRl&S?*K+YdE7+O9$90R|~%4VjEi)F;& zkp9F(@j>#%#7KW!oD8L;$j`hyxkB{tJdt{lFmSKB4&1E`c)<;D4NPWa1WtVs8!NBP zW*NhuNPfOtAnL6pvUuRm1_%K{fDj-A2mwnYB43nr zZo5KP59k7cS^3kWD)HEr*3&!L><)@rz((`Nu82Q@wnO^uH=X+G58Y>^&aSj*a)pZh zzlrk$4f}Ma`n|fE@wRd~YgHOgshp(AYBF}{6>eFVdw}MCz m0XBn;U_Dp^mV>21Px%c;`Z?fGt_R})0000x014Wq=|d<`_n{s>Ys2})Cwf-v&6Wt663 zk!gvPS=zD((wwFkD9zXK5lC1W*~3ofH+=pP{?UaG=bn4-_jB(BB7*+`-XVgG8JS~v z2}6jh1`(sIh;1ju380HX1uk5BurjEw2o>}+ZUFn1t^tR(Q_ z@Z~W#x7L}|)XDE@X*3ZNL;VT`P3d&hhWO$o;*;ly%?*eJO9h)aoMCfuc|08#XZx9% zNs|c)WQ~ZR?w}yD`1(?pR7&HKk@SPt?*p_|0E7#I)f`S9adN8vtkLxU$;p|WNl&L? zjfQ%IgUP}ni=Q9$1_shVSQ!1*>!}*xbs2!-7VzMI8J_arnwUoB0dtR;ijB43+7l2! zALMcx<(E)$GTj7dF9A>*IXf=^761!?1;7GefwG1r-?Un?sZ{ipWt5Ua9C};Cd&PWa zB>}KNd7CADYPCIF%JZykdzH}{^$>hx0`?RRg7?Ml<$^j-5i}=Cpe0EH&ypm&8sj7- zqgChVI)_=Hl$DJeIBe#sTM#62FlRkNsagbgqQ!Q>eE7?oLNcmF4X0zI@`I_B!mVb* zD3MV8uMOzz0%08RSQIqHOLjlhN{T+2u8=`3s#m2O%zV&}W5Qjtw$@4oBSb>KBezSp zOi*=LEUh>sE}m%0qpK=W%_Rkf?5i9e%O4`r_Yg&QE|S(q4F?gM?B#u zuemTAn03q=#>rV*W$`i*Icuvs9K+AX^BM{Q2WE@H9gby%K$lRt_hvj94`wT~nQ@f_ lohoOEtkej zb6f{aG&T3J)EH$nB`fuG{zH}p(nA+M4)nLtcmFgEV|9ul&;85Kp%06o2kcK;HbY!G-zo_6HZRFapML(1!&I%aCr>8_+4pD{I+_gmZ@Y)7>&2L_SOLl3mS89pbtC= z`T0=}KxYboTRLaA1;7Ge0k8mA04#7TV#%7152@VU=`+jJ(RL({#HEH{46pP?sAlSz z-2}h_w@LkSYkwh6%QO(ON zQS}}bQcw+$k4tiA5*7>Wa@VVu2fqS zL<9YH)Zb~P7Wxf&h`$6$9wM7Wcg$B+M^J(@mc}`veO)$Mw3Z!GOpQ3u_@Ie)0-=r% zno>*2K80{Dv5p|0EDfV*2Was$g3H{~FG1=Q5QqF9cc%BLgoD_#whR> aNk0IYQMbB4+|rr=00009k)h8#1@T>Bv`toKJz(ezwtsdN$bJ!6hrDzF3c znRh`!U9(qrKd{|^Mi-X?f02GTA0fh2DU&h^6K?>rZY0U-;0Z7 zGAm1ll9J>_bhLQF!=>L~koU>S@(t@ZiF)dY64k&O$o4UvuKAPAHu%fon42vulu?^a z24Z8y1IZH+Ap=oSGMtbgKXY@Xp6KxfBGV~^_G)LTttu7x`vAOr{jLVyq;1k4SHd`(Leuf-x?5R<$-f%MdgZ&lc{RDcjL zUqY~b$wC5eNbblJD{nWXe*Nni_&n~#BmkD_=e3hnVAxZy8b6nnWV&&Tlk8% zr9@68a${LM?@5H5pk5Itm0)uq4*wr$z`B$1)H%{vEGLZAeJGTUU`-D;f%RZ5(1BH8 z1z6_ynEaD%reHdHJdXO+C+0grCl(9BenKuk0r8J1-! zWooiWt=Y5;sg@N6N@_YZ0|_f*_OR2LEHXv6ZaK$e4t5v$&Nd-r}%PoJ5~$)Qewr_T`O{|anp z`Rs(dd*^IQ%9K4dl_n!2X;7u2>6jSmM(lcs*!}>qqZP4uVPF%>={BkK?o4c~?OR3$ zO~u90kWNQ0gM!HF<3oLZe)KLPg1++pEr9M?fN)1(9m`2$E-uX<4Tiy=xw&(*X=yZS zFi?L;2w7RO`ub9TU?2@EmGmPqk*)#sR0F6k0S~@c06OAD zU``Oh{RGiYQ>>_byzUfTVEHo3?X?)9)oPF0?RHYRxfStsR1nW%?goSky#N{x2q!7tTfbmyts Rp4GHc diff --git a/interface/web/themes/default-304/icons/x16/flag_plus.png b/interface/web/themes/default-304/icons/x16/flag_plus.png deleted file mode 100644 index 560a99523420b6ef4e5753b9342b2aea2b67de2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmV;~0w(>5P)Mno50$ckdzIyo1jthm$=hhz3JKXevIQK6AefpsxWyEehluHcrT79q$Z=;qS%8iwpVr zG;T1^P(%dTIb;tGrlGJf8jXpeZ`s*&1>iv~faVhL;&YjA@!7hVPUaeOm6=OUc0To4 zXehl@sc4elgp5YI2+&^zpsnGoO8_hY761!?1;7GrGfO_Eq>w|WqYo^joE+lNqYA!P z$ulbnfCbviEP0{VJHyqyKcaBg`WJctw5;O+Z-6?_KLzay0lG7#(32&F+gZ}>ooUjl z$);m;fx|4&a?s4!oYf`B{y9)Y{>&C;6SE$6yVb)Xx5r%TmU6-m8}x0e*#k!>00000 LNkvXXu0mjf-AGY* diff --git a/interface/web/themes/default-304/icons/x16/folder.png b/interface/web/themes/default-304/icons/x16/folder.png deleted file mode 100644 index 08dbc875641c0f02557d1025c1916c3484ba9f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmV;n0ZIOeP)u$!~D62-?_u2y-fokB_06RS#5le;5|SU)13%z+#sixf_{_j1VhKSq!+p*`GlLu}7+{8+yvV>p!c~^k z8|or(HK;7>L4}+g0RdEH-k=CC-30Zy9>2fsQ`!i3BG@%KOqD|g?~vupufaYparb3; zF6W^KR7LXy4c-yK%{V&z!?pFBj3yI`+D85tp`eZkW*MoCI2?~pV^C?HKm}I^fik7E zagI(-(3HTw44^m^r)r;Zu|h)A`SIWq#anuN@y^-lCypm+Exf(3P%g&fG2!CiV8rnx zt?l#^2J|+zbop?^c}qrJ)eB|G7!HS6GM;_Bu>EPx#07*qoM6N<$f~IQA761SM diff --git a/interface/web/themes/default-304/icons/x16/folder__arrow.png b/interface/web/themes/default-304/icons/x16/folder__arrow.png deleted file mode 100644 index ada7b23ece60581afe13de082b7451098459e7bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmV-W0`RsR;#zf+7+`UiyNFh`Q!cLOSK42s%b|EfFF#3d*1e4O9qH zp+gcu;6Wu9qqW43$_RJ0U3cDhI;^Q+rUTDmW_W)*&&(4`5S+?q57pOgG=Mn>Hp3LSy`yZECX~Ipd$En90bOox&k1} z0P8mZz!*fa{{k2LSQuPcFrFa#aZd!qIobop<^Nt9JyGrFps81zLWDqKYy;Jbq5y zp{b=}c@>h$BwmG?nR$LM1d-u!2q&9QHv(I3U$*yJ^}&UBX&KW`9#LOC%eno(fUHb` z0z)E^zyyZIu5InFqO`a4NNxy3fWmJOs; diff --git a/interface/web/themes/default-304/icons/x16/folder__exclamation.png b/interface/web/themes/default-304/icons/x16/folder__exclamation.png deleted file mode 100644 index ce288bc15145e4784fe508c40a40a7f13f25b555..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~OrP)P$ViLk`#+*6SVUW(8j_-w6Ks=HWt1RODn51HrfheAU09_ z2dqR4C?SLplYlYAY#w{>CU^JFoMVxvuOtV43}=Sl$IO{yCWkBl#&8`t$>GkN_q+rM z{Z__%PW9b-^90rXtwF%#iz|<|uc7lhC5vSEEZf&_q6p`)y8yQfaH{wNIxyDa+#Z1L z0s?;s0M??8;9mgiRdFf@_$~Us4xDDF9P|bu>Il3C4}`J@uu}QJ+RA5&#WF3W^M9G6 ze1V_eW|7Si&Uw$6RR`)o4Y{N`L3jB!>&X-Cx@IdaVB+bBk;^yJ)Y3~FkK-i!O|@!FTUR^ljRv9wqF`;m$M*ZsmpEPOEOYJVYnnUySzG&p zN&^)^MQ|dhDo%trO%X>R4s0eM%Ee-5x!uVs!^6XDB;WD&2yr}x(`-wE$mTe;dL2~) zRj^rx5#efU_nFrDm5;m~y~|R40$<9py!sWV%Jv7-tvEQ-iMY)LSP?Gd3LR%nZXtKX zE^+DdQwm{Bp-@Gsk|c9@RlHNuG{rlmQdwuCVVXWo8*IJ7VAt_dZ{99YjB3;>4=F}9 zicvz_QP1M?7*QBujU`DEtg+k~Z5eq##>nGWS}^wqdERq^fe>@dK<>}oyVS(#4>P_u iH?_d@&^vtw%>M#mM?SRW%D6iK0000 zu@VF;i$%;vL_`h9x`{V?=bU4)H`!IZyE|}-nc+P1zK3^Qwc-JAj&r~${jE=CJO)TC zKQZIbu?tUcA=14y1gZ}wW;V8o+UAufW>}VW?RTXTYWOxl+W-~8dMI$-quK$GHXv9Z z0K7+(@IQbz5maK2evcF>P|1+kYX%9T1T!!oiJgEbXe?Gx+BU%VrDbBv!bvmUc~QtK zm_)RodmIj;u(=Sw3BL?LL*=vJ%sU+msD#9FgS6hah8>aUFE66~CE zL1RP;EO;LfX<2Nf>4pswgZpXC%2~xmUq88nS!*ae#zq*MIlT!`3B=g4v%0>HNDin& zd1`X9{O^nNZ=Q3!BNHZq1r;P)1vjS<6Z&HN^xq78EZ*5PPt2BZ!J9Q0P|l2SPgLMTD-^ISE9nYmg*%P$EJ) zb|~;x$rids)Z!*BxvQ(c`M&AkFO4#F;ANO^_#VD@c*kT0EC9xE5ol(6>vIS^21tas z5&|u4*Pq=%Wb;<%$UN%4_4}C6uy$qf5h02;?Kc$_Xuz%mbRD1~ge@j8)}s0cK-K{+ zYy*I`h~hQ^*dT(6-=g0l|C>N1Li|>5kU$g{0tCQ%g;-9#px&e2Q=XjW$BiM1ucy{( zu3`uInOVHzByd<1tSH2CK|Cs+++2~jnLLdhU3|DVj*7=R$6R(66(QB{`$V~<0jw8@ z<?^mBpg`dSuOR`7!J@|T4|;Un4XE6$(W#r@k? zICQd|np6^rEr_gITqu|Eit`G#6arceQc2VF%mk@)H)A8ioa(5ewRs;ZQ7n)5s}@Vk z%ZT7az%H3Us0qiH_Jkv;&MwBDKA|mnj05#esK}av2omo-**d(E@VXl1w#5>Cr!Vw3 zjgJh|dhjR>wJrYyDyUE{mkBD&&o8pHVk+N%fyB4(=5lY})Y+lC?fG=)wYrA=EgJ{O zSc=6W)>wMS_l~~EF#2#pb{imEJ!4*0?=%a^T2r;1zx*l3^uTi&1ityOTJN5^O1ZubzKwAJ6!Mbb^IEU&MfV2Ri z?E-*vh!XAua3+F^@6zv(b{nYF5#P;&2vI^aFd*_<0bWqweuG3$FTXx7;~Nr2%y{EO zp;@7cN86MOLw**QQ4vnw_P0d2ss_YKRbuKtxSP&t4iE1z7Pbq|clH;O+Bw=wK@oCW16`a=qBkO(g<| zsOsy5nRy1ph7VpIIpFf&0m!B@|Aop_s8*|(3ahId{E36)(pQMMQO*G=yW97nBqcI6 z0QG$(NEoft7CtCObNuz?; z*#wM%REfrjiOC|aYuLESX3jZdu{XO(DhIw|9_K&jKQrT|?|T58;}URy{~O<9A1EC@hjXr3X_ldeZw0AAjyDx-twCH1WF5T}2TrlFvdUulH`PBiOa)UxtsS?q zf+VUERhyOo=Nz@#U$%$9atIVVGrV)C(ejka76DUfd-9%oy}>pK0H_3_bBK||2r)t` z+7>VkXnwe<;0Ph0xu{A2?+_&cj>gD@7lWMCL@|*KC?NxL;ahT3jLW*Uf|xf6 zz$Xc{N|_K8({&4LIPX|mSy``QlR#<`u-t<8o{9I*={a~36`@c_PziXSP_5SyB?a)G zW9!&!fzpl)lR%Wf)vvn|Z6^0O9vkDc&=6N>-gC$iL=-b=lG`&= zDwR47afR_&@IdFtQ|n%;vx^upH7tJ*79mRtoA5ZUzwUbRW`dU^PpvZrI)LtvUn%#! zdo_9J$npJM-F+n&BlF)r|C*S*Hwn;Fq_N(tFJ;OP-|95bkpfkqI<*k59h(_DxAq>8&-BXa!@hFiglh>*EyQ-`H~vwJjEXV3@MHeS{M`ImGkSpvw6kv= Z{{RlZdz9hYB$xmI002ovPDHLkV1j0&9P$7F diff --git a/interface/web/themes/default-304/icons/x16/folder_open_document.png b/interface/web/themes/default-304/icons/x16/folder_open_document.png deleted file mode 100644 index f3224d33d5e7dccd2eae74d555a90ba1cf4caa5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmV;90&)F`P)ti01++&`}x2693$fZHWr;2 z85p>D_tx*93*^;rBwZ!aUHv3oeTbT^QDgY<;KI%3(fY7?rD^A0lJ-4B0{Q9^iwpBq zzrP|oFa}72)EMe^sCO|vLI`2ILGX^4=Kv&ay&O2akNKHtr28bMrG<{pPRivnbLq&T zkL_oMa_2s(4^YTN?`bMHN62%kt1GxH=7_i}P_)H=TvPw+Y3gJUEXH&fyCM=WyQB-g6KIN~ID; z1T9FcD)o9@^!lT~^c-YP(nk7uA&2(?5kZ?OhE)}X1_97^<8kO&S*M#A2|f^tzu>(` zMG%q3;9n*p!dkVOD$ok_y!ph^>&a*D)>nW2N^FY6i1WTdpo*$ujlmj2VlCDfzE&!2 z(oFE&G3C-J84HoKyG#AUgTu!MpT3yzx8Dvt(bm>=F~;p&$xy2;*=>!;a~F8N_@#2R ovQRnSW$3HT&fW*|f2{S!AAfW^>PcIz9smFU07*qoM6N<$g0GJ`9smFU diff --git a/interface/web/themes/default-304/icons/x16/folder_open_document_music.png b/interface/web/themes/default-304/icons/x16/folder_open_document_music.png deleted file mode 100644 index 855299c23f21445ee6256032fab70db97dc545d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 720 zcmV;>0x$iEP)A#E=i4uTHfh3=#9f=3L<|NY5s@10O{Jx@p&)n>p_hsW@hXCP6t6)~qJp4A zK@hb0e)nBjSU%xjk47XXam zW#A$H-})^CW&om)RYG8R_{9(2J@{*lw7x;EyPvpckX&~WBlh^JwJd+~!aIlCNd3`~ z#9bwFoevQ3q&w@>*2>iX{Doxb3Se5M*3yhd`)ctx-uwF>@ahO@3P7%-kDC=OM!eRlK?*f-24ZeR9_F-co@b7qhjs#mww1<9&S}{xCN;6*)bQ$7_nZ z^f)jvcvY-v_5WG9m)D=1gpiWY=b5imnkNk+?=tlx6m<>}p;l8iDm7-7I%$g{#2At! zG2#?5Y&fA0fyVYWsva?ha@jF`xxkk{8#;11a@KN?B<5rbk#{LRYe7V~JwH$J>}!Y! z#nX8Xf@OFxCXN&lX&Ef89vMX5IW)sNhf}2z9_E{6PjRS+rA^`OXH%>(L?SesO(So7 z?pauc#F@CIpJq5zJ#T)u%8j)q>y^7aKLnGdfQTT_G5|W>`ob5s_c%oec=h<~FQ_Vm zvcGu90Bb>;n#bt56pdg>(Pm)&h!)pdQAv8RX(~lNdQWv z5&`fb5JW(PKdRLZbC}@8Cxn;InJYeUp|^ih#UwucW21g<;J_1f>%iRxPQQn#hpxO3-YApMWA-v0+U8hAC*ZO{1t0000C diff --git a/interface/web/themes/default-304/icons/x16/folder_open_document_music_playlist.png b/interface/web/themes/default-304/icons/x16/folder_open_document_music_playlist.png deleted file mode 100644 index e2f17c32b0825334ca49ace3b8fc2029eaa6a5d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmV<60w4W}P)Z zpcb+ULMY+A9F!NH#|oL(s|B1^CFo7xFldhwgGIKo}O>bg9;{L}BNTTh#{BM~%q z;cx21Vvx%*(c(O%H+M+}#sH_L)OD$PLzyTT#u)Qy1EUpIN&x(Z3<=j#eNu#DvC@?WK#c(Eb@%HresHgOLJVr~jlIwv9 zhf+yWd0q2)b+(nGTffG~Vy$KWNWQvJfoD`IeGN^0VCc#EM3Lrg7;!W5Y0gO6`#h2) zafH&4;@S=J!LnR@N2#ocUn%D26~FCmVe&7BN->}iX;zZN*=WHtN@7wALI`Fa+-LCM z34$-`$o6bzOJ_i?KcKr?BfOdd@9`WA_pdfkXr=GR>wKkg9p_4wol8fqB;4W}ke z+q?HPV=YD-O!^l}l@+$gH$1%kC%@zbVZ1^ZE23Dj5GGVgrN9H~fwqVL5_e4Bc)D%p zSA8vQ9j%VF1U`(P7{LNvU0qnf*xC~!1TVs{!C6i4`#pj~2b?iu`L4CScYAL8zTEXc zru5k-gV#iT{d>oC)#oE=%H`Pmq+q$F47Z}CaA&v}{?O!-Ezitc0_1;;^@oq9z=OQZ SK=^?G0000Uh(f30 zD0c7BMlJFuetj5H~8U zE`Oo<{RQ30(}3!c8bc?T$*m>|h{#3*aTXuP0EDR=ll!*u<;`o<=s`>}NoIJMVzJ0l z;?S;7>0>jowV$*T=*xKL7)Y!|;+STmj_r1-{rEwv)gp=_E?m5ODz^40Fr%$NU&cF! zIQvK5If~^nODijUE*41!0c&e(JeZ%SkjveAzOZmAux>pbaWT%u>w#%SI-N$3kCPo6 zBNc`mnwz6*EtyP)#bU7&*!2tou|4!bDQ#%f>zGD^YPCw#Y9S(s2y?Tubh}-(fx!3C z0kknh^*X6kn#}k(*=&~F#01`ZM1;^7e*I+-h>el{2wH32FD_EsbR5@g5=9YVGKq-L zZnxPnG0`J+R`BY5xGy=M<1LVk1<5y5Cpr_)jT@_pg;5_GLf z^wN*}vN$J{N+n9A617^5N~MBP3avF7dIUh~%0o%ryJSZ39&rMAymL6`I8rDe-jmPg zao!`|g9u6~TFquc14F>3SD&f8TzK-X-Kf^WAc688>l|wEqt*n*5Ew%k1O&$LwOmfA zL4qd^XwDs0r^R!8Z1eWL(|c#9A3vLS*WXS((nCXSWsLoMB_)a~!G?zCsTH2Cu9Wwe om&+$d3|pfQA8rHjKi2x^Z+kFn+GVm?p8x;=07*qoM6N<$f=2L3W&i*H diff --git a/interface/web/themes/default-304/icons/x16/folder_open_film.png b/interface/web/themes/default-304/icons/x16/folder_open_film.png deleted file mode 100644 index d5b9900d1cf9e737b56b66220b4874238141629a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmV;%0y+JOP)}3F zhFT)ZbSNw%dR&Qa4=}ym=Xo{U>x&3F@LkU1^ZS0!`5p1@iUdFiP6EyR--tWM&Ck0Z z;Jf0CbF{P^yLutNxPVIjAgHP(jBF#Qsz*p~?WpJRZsh3s?=6=A@Qqzvl3`^7LHSmU zvzTOphxaG=^yW2>KQ*oaq-1W|ow#zn{Q~f01Hc-MQwjkDWi|BlpJIG;iuPT71Yrqb zX$4Zi-1I@&)z!t+)YRei0M8kNGo}y;5JHenFO&9ixLlS}El7O%iFJs{$;m=hZJ{X7 z8G|)?Rn8c)=`{IFhFmJe{Cu3mw_iAi*WKNXF$Q0oH3!xxj8^ON3cyky3GqdapuB>3 zJcY5y@$vD$9Qalntk&yfKtNVGl$Df}l(N0Gf!2LTcJ}u6qP5=Wz!j|nNYCTzLY&0= z=iGie13=(=2r1cA+sfG3Sm7Dh0eq_!wirQ5$;8A963rLsXl}yuLrTgcIBS@_cbdMw zK1N4J@n=86-sTm6#^|C0>EUqbik*}Lm65vDN^etwSS(i9cP3_;`3N~J!ouyVqBQx8 z!elKvYsjbasBD&8`Zp@47#J8pYmEfT&fT(`m(py)IjphRVn0~tuz7(L9?@t82U@G? z+*3!@*XN7F!^0@0kU%N0`Q--^&mP@)0`J<4)7H3A+T?VsoyJp`oFMcs%}e1K{`} sfwqv>v|CG0Mp1t@W-bHjAKyCj2Q;Ev3E`{-A^-pY07*qoM6N<$f{hhdKL7v# diff --git a/interface/web/themes/default-304/icons/x16/folder_open_image.png b/interface/web/themes/default-304/icons/x16/folder_open_image.png deleted file mode 100644 index 4eb3967dd20e21bb8421e3b1e2922442199d5ee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 762 zcmV_f{>umAks^Phe6;aJV_B&fv?pWkh9I3 z4;}qvdG@weV@6xoS}S@sXzLnKlobF~W&GG{A6$6yLr}*Apj@$PP+R9ZS<;%HcK7xT zjr*4@Z5lxVimGz8>&U+8wrAhMR2>t5GQ}XbTA;0CjZHg;OpT2x`uFSX=+NEM1NQ7X zG*U3~{^;o2bxZ)N9HSf~$S8`!iJ#|P_%-S6cx?5W9>ZJd?%?3AYW z{?^k@NXcTeS=1o`s8fhi2mp$*GBf#&*~V!w@Wy?Q7w444qE;#_Hk)M~B7iE#AjJU6 zsxp6nQdza>>{=PgA`j*Y)LU_%-(Wu;!C%#oHH?gO-RWvKb`c_r>DGgc;|07Cnu*$ zbi8*W^*vnBEoUhvDMmR)jrr*2!$mE{OFe(;a<+0{zm3D6+c?a+!9i7BJAeL%tE=vr{^DF5M|%PA>T{*n zhl`Pvz1+KY!;URG_HOz1`?K-rmF*|%_V$IMsshAEk7oL2E+3zm%Af{-l${C5nY;hq s*?s5sor9|igL7kJ$It>m;{gEv2S?ptPtjX#CIA2c07*qoM6N<$f<63s`v3p{ diff --git a/interface/web/themes/default-304/icons/x16/folder_shred.png b/interface/web/themes/default-304/icons/x16/folder_shred.png deleted file mode 100644 index 2208550e132e4eaaf6b2e4cefc6e2f8cf78c3dd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmV-I0=@l-P)Ep@tX_;bHyT6MCjX;Tk6i&`wrkEt2*Yuw2y&M zM%O7D_fdAvC&T4TzXSNls*X7@*}=e>*IpJ`oAFTLqyJ|q-A8|;C)%^+OoWgVXh06U z@Gwct&F+;}L-b{$d9k=0q>cEsoL%9UKJ^lE0_4qsaTm9U7E-tA-Gj5St;GPP$1kSr z3Lkgmtd1NQY2y~dn@K;7xoRHeKXlQX@Tp0=!p9vst0M=ZSGdK%+Vs^Op-=RM4jO8! zd1hDm>ONp~BvLL>5%?cs#zUqD(1;AyqN31_#t#;qG{D6IlGgdtV9{E4z7iK+Y_$ZeJat`h~ON z_H6y|PXv;wH3o{vhi0rr@^|lV0XBz#O8f*+MKV^Ec_7SOVocZ^JmOo#w`39AWI{~X zr0n!wAtr1JE$^)<^3pu9wl8}zvD7<45Jow8B>K1cOTjtEW780XQ7?guW^7ccO+{@g zj4IAKHf|Ph(TsZurq4WFo*Z0v^({`BR-AWr^Z$QgaKI}tlYHPqzi@W|0000=G`P)3shWeDWsrpad|-mQKywRUNV=T3yDO6)9JKS?Flx6ta|jV&nO}OJ$$^4DHo`_$>9OK`?)_Eodg70+Yj z;n8TwD0jV?7_WY86I9kaW}jbNl$tM<7F%%+CVOFc4P zW8~q<(|*#SkrpTEPIYiG6B1O`J7yn-PD?$Usxb2K@EouldU(MZ@p4gKn~eDQ|A9SY zHrjteDzayfI>+lS9ketwA9L>AKI6RJOCS)4?e76(;lTY5?k{#y|62^b00000NkvXX Hu0mjf0~-@z diff --git a/interface/web/themes/default-304/icons/x16/folders.png b/interface/web/themes/default-304/icons/x16/folders.png deleted file mode 100644 index f236e50c5dd18e075f427b6e74c9c59aec157e3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522 zcmV+l0`>igP){E!CLYp)}Qj3~& zf)a#yNgzcM(2Ic!Ig**#wYW?8UA}bSW!c%Ccc0m1W$sl#1OQ5Dk0RU$201#GN?|-z zGa`@+l*0MT4=0}EesF1w%#Gc729WlyiGVo)-KMA>STD62o(WZhU1R}*aC7b31f@cd zj`!0$cpZQsf@LB=D*PYvuP<*nX1a^%-ZAjpHvJc}x#6ZrjA*NcWn#|s1k1E1X80k> zW|%4^XLM_u)t_~G&)vF^3y*?3xVH_m=^-*)jgm7f^#%IRo@VgwhkNP_C2O}3vng)- zTi8W5#kX3R88HgKH#RUQ1#>VbxhbyOU8*AY^j%|Z{xjBT>A`#->ZG6!>ZGiS?@<-G z@5T#S%?7GUcBRqSL``bR+Ao)K=hSKhkuGHSOtaY}AUv5m`EF*J*GYE_I+s|D9AX#p z@b~GZmGzm~+3EMxS80q+`bzq`2v-NBmVN&v#u&Sh&E?bZn2%Jpw8GQzd}@7@69J(X zYh4OR7xKp+yuC6Y%fOEQ2r%^cb{x5MhKoo2-TEqvqm%v;Sg7Xz0wz*nn$qrf?EnA( M07*qoM6N<$f(icgbpQYW diff --git a/interface/web/themes/default-304/icons/x16/folders_arrow.png b/interface/web/themes/default-304/icons/x16/folders_arrow.png deleted file mode 100644 index 720b84d47b833c19139035180e26806240cef659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 625 zcmV-%0*?KOP)1wsDu{q0LTs7A;Me^74e`>YOK_2*Wo`?TAhY$0pIPcknHai@B~Bj&oyPa|x`-1v=@(TvWBv6SRDb-eG(z+Qy< z^ZpjL7h?89lhn^pD~4Jbe&3NH%)3U3m|TqPZI@xXYEJu)gi~a?kH}b6dG8X{Dp3l!uBcm${^O4H>1GfLtPNqqkV*q-nIm? z(~yCFeLlht1&k#^Tjg#cgJl{=#;O9q0Vj~__*a=5$gZ{}kS%3=L~}^!rjBL{TE^IF zwyd~EmsYGF-+ac5^fCj|4L7qAE@H`RmB`T$YeU}Q(G@utC-V1Y4aKPQ$VuxLa0P>|I)-yn00000 LNkvXXu0mjf=&3Wo diff --git a/interface/web/themes/default-304/icons/x16/folders_exclamation.png b/interface/web/themes/default-304/icons/x16/folders_exclamation.png deleted file mode 100644 index c41051fd9255a393166bccb994eb554c3d9f426b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)A$vzHeRsteRSgl9~k`f)3H8Ls0j+1RaVl1wj#B4T8FLh`JQftwV$z%0rh5 zuSR7N6qOQdt3^lZQ#^{OQ>!<8iq{WI(z{j`u)uq5GBC=z+1cFyh$WbM^Fo>DjOg$ z>|cEM0AFJeHFnU{yBC1K7{n0*M4tasUU+_o2C-F5)ir>+3iMyfqJoOWgdw(6LL8xU zBm;3&4kG9u;zST@@y=n(KbZTNp=s-Ze&;z8sDf$*5YLbCIdg+}eheqJCW2bQJI8Eh zhK{aIdXGFlYL&jKf!HF2e46f^XDQ^y(ow!eP`v6P1 zw|JGRa{In3l=3mwTAW(qxQG>#2*iOl(ibK-;dP0Tkr9f8uecy$WhK2%S=Eux=Ls;J z8*RP!BE#)SwtHiWW}v>Ui*LDCJbE}pw)_g3>&Rx`;AMAJdGP)Cm)WHklau53$;=U7 zd#JOK2z#40wQbg5hPq&xgNLp%J-G)WLvCReDSyRjH*s7<)I1%$r9(9pDFxrlobK#t zZEXnVNF`QTjn9)xtddF;Xxrjg%uiI6pL}3=XOH;?{7Nnwf9=U-KP?$ZR-l*Hwa}H# n%J9pJlbJccky`?_^GwOPx_JN8`00000NkvXXu0mjfr8+Id diff --git a/interface/web/themes/default-304/icons/x16/folders_minus.png b/interface/web/themes/default-304/icons/x16/folders_minus.png deleted file mode 100644 index 435b57b4c96359c60215fd936a1ee314c43ef89e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 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 RK_mbG002ovPDHLkV1k~T3Zwu4 diff --git a/interface/web/themes/default-304/icons/x16/funnel_pencil.png b/interface/web/themes/default-304/icons/x16/funnel_pencil.png deleted file mode 100644 index 7c2d9b54516e0b3c3158f29f388ba38f6dbc5680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 662 zcmV;H0%`q;P)@Kpv$BuG#hiUbh~NkL%`YPd`c z6-&0vKU0QtGKY$Y{gIe3Xox)p!RYDR?_6&(YxUBB&*gCL`F_sf_q&$>(Ep%5JRXm` zq@={FD2kVeB#q2nole)G*Xuj-^78Imt=2Z1&34P-a5V9LPjz)QNqz~uJ3Bi_CX2Xi73M1_gG*5f~~D@*xvpD-hb^6fxJN|6oTLH$I#FadU|@%+4&e< zUEMr?iP6!wn3-9Cc7y!_m&-*`kVqu3y1I&BFvzD*aBvttpP%Q8SX%mw&CRc>!0mRc z;fF;FuNu-RxTCx@a!>=O_R z@?{ZYu^8s&Lg?=w#mLAkB9RZ!ig?25bW(3|F(o*hNx*rMlEz465d#Bb7#|Nq>%z&p zD+N?rTPp=;<3fx@gecD>kfT7hQFcLV<7ro=nWkR|s;Q~TZ?fB4(cX?XLWER-*=(lV z++51e&Ze}nComd~YIw>g&U3-9r&1|YnM_^JiK=$Lrp#kc&~WvT8h+g^0;%L3SS*%S zmY(X7yZ#|)(F70D!%y49th++FU@#acqd;(FHEv2l#kqrh>EVuMs=QRL&|d{|@IN4F z4vY=sNxSZ2dbrX~bo^MBTJX!i2@WuanInvex&7){Bk=tb9<_*tIw#fhnvu!ccUqc2 ww%{mphACz4$=CH4MYyz3G-zuUMoG{A1hfu=@H2TXkN^Mx07*qoM6N<$f~1^4lK=n! diff --git a/interface/web/themes/default-304/icons/x16/funnel_plus.png b/interface/web/themes/default-304/icons/x16/funnel_plus.png deleted file mode 100644 index c2b772282c2fb51d6bad561ee202c0958c87d7d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmV-$0+0QPP)rL(9pLYLh?Z{F{r;Fqy`a1(O5935w%gH9wLNo;IQFJ z35Lr?v*9#{^G=iDf)NTrHZ}-)?CIO@+^$2nRSzBb-19q!^ZVR$e?Kk(p#MRB_`RH%O&Yh{xlIL?Rd;pTOwoGmMSB z;P@qCvA0-Q_z2|&tpbn7Lqbri)le)JkxVA}?FmkNjj5?P$IDn*`GSp&ZCT*;dZ|U= zbUKBgN7SHHDj}UtV}AZUCMTnqo_@!|0#;Y6P-<|@?RHaxW&yFFM-(xi&tq{hg-|Gl zX!HZJ+0Rglc$@|FHv#99ko0G>%Ls?xV0JbGr3)u}{dO`uJxVmwO%&-OnlSDw5TjSL zQFK9R<0& z>GJp65VO4ghhR_F+}E?_ref8QJM zKOnd%1YDN^deRxB$DNYEUOR(EEbli7Gz@<%9cC=dz|v9)8jWU9SzG8{$0tkm1ZcQJ zqDKdbB`q}&EjYrQX8M@>%rJk-d1c*4K5c}qXbW`hK#*><$%0>wOo8inTC3s!0000< KMNUMnLSTX<i^@% zkN;o4e&heHUB~|)Jb3y4wQJA+KYRB5KTtlKkO3+n7u>jU$9jE?Z zzWn4r)CKB<3}65npaSy3rAwFoFJHb9=z>fCp>okNyXSK^xEj zJ)i*$1PxGES7+em$_P`|D-7Q{I7UNK4{Gl{JVlI7LDDFKL5!e7F*|i>(01SO zG+R3;@4#1Z`bsvM%Pm{OKfu7tx8L(Jf4ot!Loa;Z@0aKMJkJX+BO>-c7_Ve9$TI==Vi>%Xhg%|kjxr9|13zQQnw0)!t23c zK>2)rk((AyPJR%;4h=VW;QgZ@kw}1tyH zy8fA_r*AA-EEWc^Lo<7j5e30u@OB^&cnVflir*Ryoi;Z=Hlop)X8=1i+{Qj+M1kM$ zXFi|riX=r}scN0Jw=1;2->1{lUk2Er;RX-9$cO^3*9(?Zb&obSwy096Q?dB2SF5!N zV26eqJn$kT3OpVUxHC65|3TBf(A3nmH*UB4g{tZVutUQQ9(a)v1$b;W8*@6HNtesD z>~J`)Vs<(|`49b0W(^*A@t6ysOmae;D6re@_ju?fz&_SFVa`Ql%movi3mh-!(m70? cc_)zl4ck!aL=vxG)&Kwi07*qoM6N<$f|2_RlmGw# diff --git a/interface/web/themes/default-304/icons/x16/gear__arrow.png b/interface/web/themes/default-304/icons/x16/gear__arrow.png deleted file mode 100644 index 97bcdde2d51196d5a71940be5719ada572890969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 704 zcmV;x0zdtUP)xrp-5cnIT&WDl03G2t%!ydpXzF*Ri^~ip?55e=V?BEJy3> z>swb=R^W6x?+eq7#l-~>?$mgrhu$p(6%`faRx}!g&*w!f7Q^7+;527)k3?qTH+tyZ z$Rr9(CX-ZFR;IJt&pirh} zTtRQ|>&c>`!e@j#HQtgwW_}mw_4<2$zYilLpD{Kji%$xpxVX4EH8oWt+^O+K553F? z5(NbX1r4L4qZk?*0;i%(prqtbV@gVjM7UGi>|sWbD9FppJDHoC`+&Gy?LPtm1p@=0 z0tUn3hlD$|+8$-?SZjEp%m@+%IXO9!PN&tj3siz#0`ap-2BKE0t3}aM!kt>i#qNp1FTjpVuR=Q=y;ntvlq}dL$Pj1+d;Z1t mGaX&(vz;NerOmmKk$wTf-}toy!X%*p0000OtD&uZIRACD9c(+Klo?+q!51T4^aeRW>|q_76lb9C>2pz zGcXEe89CjI&Aak0w|Qr}bhhNCZV(yd3Mo$SxpSe=w=Vqdb2#TY&%M0dO8|iU58_Ry z(~;8BQc_-CPAV!YMAhr{YRbtq)az&H#T{frKv`K?0X3Yax*c_Obrqt~D6H?H=br&3 zB_#*z>gw)AA`z&mskux|XBHMd1A;a7aE2cAZV1q7waD2}C+d6B9o0`MfYU7lirwPa;@j4`=8>FYe^!<;4Q>^Ye>n z;{wvv)j8|;^I$eVp32VN`vAcjdpL{xaOZD;QmMS?c5`62+rZ^w>60cPCnu*_B9RaT zYp?4%aDy5cwO#`B;tnMipin64olYlMtyVzg`S*~UyRVU97=oyjiYCuUB`im}VRYaq zI2|^?9ZD=9Gc&U|BO{{$X=yQj^musa?;rB0R0pmg&&;*{pzj>~TIq#1uZ{>Os%0kJ zp~M2x($a`rF5jV4s_w9?8-|A+5C{mcwDbcO7r(=}y$ZfA+y#Td0O7f-KW%17kF%GN zQepuznG9)USugbU4T8hr2BWbpG&bgkQF|*5(Et7>G|=ysz~b~N7%=S=MxHQ->^*A% zsi~>RF^%T1iQ}drD{J@tl$4YvmgT|r+yK+#RnaM43ok6S!262e9b2$GWMUo;cGCkA ze+YU>rBafVl%z{ePHs+2OiV}hau#4;7DFhYf#9S{d;`?r|Zj+^9d=PlyuzDY=t3WZJ$ z4Glfo-rlCc!NJ>Xy0W?Xg8+7DxWNPOo`OIi0IrrwB}%0hsa!5oEEZeE)b?U=t#*S4 z-g-tY@caFuySv*Kjh?@o%VjB>U842%B5iDZtAQOFZt%d1jL+v&3%a_x&aiMDOijI9 z%jXrEo_<|$xsE*n*rDO3`H=Zt;PH5Fq|+&ypZ`n?3o?IGj@)kdm`EfE`++2N^~!a5|m64u@kHOiWCE&14jso&A*Y zdQaQ|*rDO3`H*4M0=wNVY&Kh~$K!n{%W0aMOVG+nnYOleYG8+k8$742*4A;OQM?gC zEwETDU{scuXlCXkB@$_xoP1GQT+9=A*BkixzO9|!Iu6r^BS-0}PPfV7^t2GqYXvPW zE#O>F&)HY0)H1cTwLdnS&G%(lAu!(5RM{CApg(!WCF&o7AH7~Lj7DS7WHOC4H#Z-` zEEFpILch}my*@K6Ny;@zs@#;M)e#PYd)hBRp0P6gT7?%F42Fwb^Z;PjbjHQ(w{vDh odk6e9G5Z(`bKoCX>t1BUFSu3ICqy-97XSbN07*qoM6N<$f+@x@q5uE@ diff --git a/interface/web/themes/default-304/icons/x16/gear__pencil.png b/interface/web/themes/default-304/icons/x16/gear__pencil.png deleted file mode 100644 index a2906ec07b1090add0018c48254e5630c4d7bef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 zcmV;w0zmzVP)PJy_FC|MGyoHwaBCpqDXN*Rp>-5 zSOwbjK{J(&E4tBi8=0iGWQq738~F0|KX+G|&|4RN`##Qh&iTU_5wZV4`mtKA%x1H( z*49>Lx7(%Za5&7I8#3nf8@$MXBLyujE$6x6CZ8uU_xJZHkw{Rw2G2hWnwy&~PN%bX zZ*Py<+S)p}>GsafZvxn%;RX-9M+zDn8^N7eEJlIAGR5O@@_M~LFc0?4%?;@W54>_F zRbV!oSxrri#^Jd9C>&m;)zuZ++S;V;?Ozhuq2UG(yvQsGLaM-IGSzb79&o#dHloo8 zjg5`2m6x9x0NA17cHl$iu)tt2+z$o=G&lE!78gbSQke95eUCz+U;sNb+~D~-G)VI* zRa6v&TB$&%)3y8kewvw?AlXM606R3?JRT3ZJ3EQGx@cSw7NmmG($a>K zl9C6Yzu)yU6pGNq#OILFSosiOmo(4ggvDaaoXKYN?@Oz8lb7sYD(_3lUA#Jk)NNhf6Z9xKTxaHpj#AIXncH{e7+#L zT(4rw%TWT8AD<;AM^a&TZzWY$oEYW>?21a2D#**r15I^x7e@kt?^ITHx-U03_o*mG zXny()xw@1a2oLv}sG+*>1H5u3Re(>aRI=>sY->(VPES@=mKHO#A-Hf#hRqU30E9Vr-nZtq%&T)>KQ lw+Wx@wSp~8E0Dd&u)oX{+#oQOmhS)n002ovPDHLkV1k2fP>}!t diff --git a/interface/web/themes/default-304/icons/x16/gear__plus.png b/interface/web/themes/default-304/icons/x16/gear__plus.png deleted file mode 100644 index a94a6188cd9b71da1720b817526d6eaddb3599bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmV;g0#N;lP)Idh5}`z}DAWhb!a@2{ zFN#ks^Fg_SyD;Y+F3IV#xygba7w+Zjf9~Bvqn;Z4_I;f1oO9vAWkkgO2l>zCaN&+wH!<4gGx9V&?OC%H?u&RD%wc7ofhm+IpD_cR(;Wy&a25 zG&?&JZ)$3s0NA17R`enByTE3%-4n$yEiHYb)m4E%X@i=Zn}^kEH3Qh8;RX-9$Z(Vb ztJQjcWo3mzp%7t8(k8XEoEuW9R19E;cGQCmM=7YUukWx}EDyoh*!XTFBGLT($B5m2 zJ^-*oYk%)P)V!?TuL#tJk>Mx>b#-;jY&M^?+3cf&AkyOEGHq?8=-}X|40dQ|-Z|;! zkGrIrJ|XD_O^m&+QVL8a6BrVNb()*|K+DS_jgP-duC2ugbj)}T8)h723EJt#_gkcX zR+Z*qkxf-i$_15`mEc-?`_;GM@MmghIQznAG(Hvti9pE{W9CZ6Lw~|1jH2>E@SjGb zVLF}8rPu3+%gV}5VaDSb{zAWz##a$hjTj_Vz>sO&yF_f%Aj&*7Oco0?oN5k#t;`Oz zT5T^c8Ufg4J)qyL*|icIERV9&{E4FmRxBvtlymr-VKx7xzw{03(?;1q=~N-ZegQGD V-%Zp)jc@<}002ovPDHLkV1gYRP#^#R diff --git a/interface/web/themes/default-304/icons/x16/gear_disable.png b/interface/web/themes/default-304/icons/x16/gear_disable.png deleted file mode 100644 index 877a66d6a4c947199334c2b8b2960f48df8d09be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmVbH4BM&KcmdUF)slt_i^bv<@nkZ2 zPo+|Epr*%cqr>9`l*?s~Zwt4YP_bByJC37(nx1cNYtK(WsZ?TfFWhK?a?F^(t3iyO zZ+@>mKLPoC-pb{2F3jh1ZvK2Wo4pJMgE&yrW46)Z@dC2htjc6EMxjvPGjhaJ;Y_&D zP}93bgBFh$kW40lBk`UA;buCWawnIdYmUw=gcgq%kVquJs#GeUvNzM|^p{*7f$I}c z(_@APEgmm`ClCmza5!v5qfys1O@mct*WmA=LCfP0*cA?iW5EF1wx1%Ahzr!4zHp+o nyZ(S3VNW;^j{X4iJ|4W^qt-ZtAWwi100000NkvXXu0mjf`3vJ9 diff --git a/interface/web/themes/default-304/icons/x16/gear_small.png b/interface/web/themes/default-304/icons/x16/gear_small.png deleted file mode 100644 index b0e969098528eb9f0f9185357b2e02a9edfb801b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmV-W0k8gvP)<&CND97z;OHWOtP&{&2V08HS_fDA2nn5nT}o<9 zsgRJ#ZXLsKk3;En7Y951oO`|l-*g!fvA-NUECJ_ycfRi*1wn9u+~-1p=Xop)!@D?+ zN89&h+qQ&62gfcHxUS2hD0*10ziBdgE2^sc&AP4$9J^3p+xD^JI9KEG^JkvtRF)+n z(ZR6`1(s!9XIVyRno?1Gkt9hyWRfHVj$J4)P4mPsjA%FQ=-}9e0$tZx zw|o9Fn|;t=@VJ^z->KifU!j9z7YZ~@W1Y^~6X*Wx_I=M9$-iiX@5J{ye!o8j#Ab$hG_Tit z&z#L>tNngo?Q}ZoU@*AG-mcs2CYQ@abC=O*Bta0!ZnqQ0mV3RP+G@2_K02LF$>DHp z+HAI`3oI53`Fy?###ZnsGPWgy!SJQsZl5D8S*_OSQw4&@8 z>k0pWvtqHx;cM8}6Fz_oNs>7H4~|IZ`du!UIeY^r@EZ6JS%FtzhL>Q1C0OLI3 wg73fuKfw!b?en~YRd}P7u4rY;TG3s}Ex&!L<9qgzga7~l07*qoM6N<$f>*2NCjbBd diff --git a/interface/web/themes/default-304/icons/x16/hammer__arrow.png b/interface/web/themes/default-304/icons/x16/hammer__arrow.png deleted file mode 100644 index 23ee5cfcbf5b48e873b373902e5135e5d156181e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671 zcmV;Q0$}}#P)-Fw%yWQY$IKXDJ{RXtzfC%k#xm?~@EOsp(k57fe;UQcf$AX>zQvkK6iR^a! z*<3ESQmIrvCzHu%KA$gSu~;N#vl&R!u+?e>gTVkjJw07G#Z;+OV#Q*SrPJvJyrXQhD2vVsO6bc34*zs&O%jV|h z7+sZ0CD-2Gu9L}RTNkvnv_N-v_b85?!>BJg zS-I^Z81HR>>HdcVmhgBDbvQ3KeDYP4Ho>|wF)QhyyX+`8KbLy z@=ZuL{`#LV{YWcLr<20p(C{A15FEaqP2i0@5f41!`=6HC#5!ZN#9vg;?-(1*Gj{sbA0w-b;W&<<0$+cP1jo``Vh!3y-e)A@Pa2a zf&Ous`IZ@@HJ<&N;8P?Lq3{nhi*_S=Lt4=;>Oo>8lJw6kA6j5c5}H{O+hSqd+eQWB zhzgz~EmGJ1o&%@@$!n#p!jmJ9wtMa_3wwvp(W`<4KLMx(6o+r)x`_Y)002ovPDHLk FV1jd%I^zHU diff --git a/interface/web/themes/default-304/icons/x16/hammer__exclamation.png b/interface/web/themes/default-304/icons/x16/hammer__exclamation.png deleted file mode 100644 index 7ad1cf51594b3bf858e2b9e40e7c7dc9f308cbc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709 zcmV;$0y_PPP)@illHn13&rJ|4&V%*LVD}pIK_;5Jid%xd%?t2gHb~_|NK+YmI z&k10EtORMYffemfD({nwniMS9?`e)p_g>VL;0N1i;#9 zsV0-@xFksvi9}+tudi>QyuAFR!C*+!>-9jaYc44%fx^N<(CKu$aEkU=EXJeJDED|g z!&ffYUtyX6^9Oiz%pGP8*Wz^0nl}gCV%Y$_vxm*qkg#xm(vjN9; zg+d|j^?Etg+}vCtCnslLW@hHb0qN=KpwVdRacl{%;zC)F$z+#&KHo<)3mF+1#Tx}E zR4P@y+wGQc)Oyj)s*(Q77uajEsw-$jRK%!cxYEHr@X=*Y%ld!Cq#e z5ZtpfnfWvlayp%K!jfhWQ;ZCFfxu#-k#s&iQNzU- z`2o^jKl~eT1Bp8v4%)Pg+}y8X@bUp;uX@>?sduMl--k{7`A{7XOL{Ji9-bwg*2&z4 zd=dnK%qvJQi6^WKJl#z9W*{ptHEH1SNWtm^RO69@eE4x%fYxd6*V@`zTKtI&B3TIi zAzKD+v!2P3{4X;fcJrC2k}u6QtX5(&uyy8X2kWGOR!T;mA!g3OOz&6YB7-gsJPv-&`~LsTNR>*3mQdg^NN~4YF5i$O zX{}HwP&S*TbUJ;Cc({ZEuIKZ4so8A4P*rtbmgOyczk`Ac|5HHbYK}}Mb6?l>qv>?| zz13>HE0szQlF6hqkw_3*8BV2A6pO_u8jaq@F7_vri7_6JjZUZYF%pU7fY{P7Z%q`% zIcKq0Yz&7(qu=ivqtWODvq!;TkOF}Ktvu{@I|+h7Uayz1ZFMjh7~O8y;IrTFSA0I- zhR5SMyTIjgQ8*l~W7|4zMa5XL*=$dHz1|mu6}Q{Hc~*fC3We(Jc3a0*>kB_^aLH^o zGq`Y7J`0~TO*1Uv`LW3*INw?peh7m`qrofu071mZThnt8SKm23gJC=#=kPJy3*qB% zpYiRy?1Fcj0rjTIKKwyyRgX4*t=OW!bReIbXL2 zUlm2+@Go=G(<24jSPA#8S#6s;_*SdcIQ$#l!xi9v$U0mGCtLyttigGH%V2|ZT(ARN u@WFh*LG$(8glllsEL}ItE}BJuOa1`!Db`n#o_BZv0000U=X}sFSy%`~BfeCUYyB&E^t`#AUocf&twB1i;qYraT_c znR>mx(dl%)=kxiOkx1m6)9I8r91dWNm0d0u*laeiTCE4Mi(I?irma?s7K_Doi^akt zz!)jB){I7D4@oE#N;et}TB%fMv)SCl+6BE{4_d7j#$IBv802y}s8lMzwzIWbjh0F! z%1(_&BdFDClTxYNIY26vg4t|NVcT^aC5vT2BobXOm&>0}78DA_iJb!E27@70C=}}0 zYO3#%$vH9c_)8!_PZE+H=X;U&)oPXYLq2}APTB)E772OP(3 z%MX#yf*>&YH}aenPvMrnScC(Evg_#ZNBfpcCYk&PSwr?BY(w_kyFzZ$A0O!Q0$EQ4 z!H=~`WEcC(hzKDp;10q9ULi(AkIW#`tbU0ng}K8dzyc8ovU@A&U&vq1L-fE?UKdaR O0000Xu*ladMtyU8} zIvftgZnw`_t=5AB%w{urJf0ldZsAjkkQJRycduTre}P%CSS-s21xT~Av$;y8(n71b zeUIiiq~Grg4jktXgLPF^#h&?`f#~gVq6ZR@`|vV{Ks`Ikd<``7`8>bjJCMi)^P6c7 zC;?R)IdDYX2kphhMK=EcmuUtYUs{M>V7r!ROzp&2Ro`Y>gQP}(oto_wj zXac>NOZ3F7GUvA!#Bi?ZsGV#!%jVzUJ-|^D-w^ap$AAeO0Y-Xsbi?-9EikTQtpkTR z;4$EU55NsvgWq!ooCGHZp;IIqUeRsC1|y;on&LztQgl&NR4~NfiVERD_7bj3dB|YBbm&%xf+$Kl*B>Be z;#ndT43ZMNl+ZQs5Ja&Q)AtcwmTlbXg%6|e`2D_*gA!qxOeQK63V$dTixO-@B$vxk zB9T~#Mx*;k6h+Erv+L~4=X05_nM~$_V!>)tNjx5pN|LnG>-Ap6VzKK`fh>Z$e=5L- zDH4fXvfJ&~X0w?*olf^UozClYI(;<|2xxsi9}!Ma6b^?e6bg~w?2#9I<)U)A{B%4X%l&?TVK5kc#R0o+w_9^$fy3e8N$z&L z-S??fs+rH{AJ=NN7p+$7Q?*)sCh@386o?*==U%(rp5Phm8Vm-q*=(n+R_jH)ui-g7 zu~;mrb@>>);qS{~-dGk8LS#0ZH}KopW=i2Lc-v?+WL&>#G#c@6fzfCry2a_y^oj8c(HCkst{BMXU7yK9)))4)4K3 z`pe=XwOYM+{Rlo+Disd@gy;01>r1^}=kPCR@t+fnunBrN1slNg3c$ynfa7qC3+@0H sw7~`E!3k&K449Xto6EA3%c4ceZyT$yz8|UnT>t<807*qoM6N<$f=%KGzyJUM diff --git a/interface/web/themes/default-304/icons/x16/hammer_screwdriver.png b/interface/web/themes/default-304/icons/x16/hammer_screwdriver.png deleted file mode 100644 index 27877af5c4c42a4f6951cc377203032978d874ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmV;+0yO=JP)96{9=Y7xM1RFDt_Q#>Ne+KLKvpJb*WY-v4j#NZ$_U+2z5~n ztc#XZ?#9Gy)S#ff4rz#86uT-W1%)BW>Ho+yEq&nk9^Uhw|L;8SIppewY42|xm+2ot*vCY+o`d!aTBVkscG?eJSyOkcoE0~2b!CkT|+}dm;8SJSZ8PF zNxWMi$lNACsmWwg_Vo0KhK2^Jt*zaV@NQX6O-(*c)8dIl;(H(vc3AK( z)lyPYA|jE9=JWZ4#bTkdvNEz-t?N`(RhiJm*wWIHTwGj~Q&UqfD=RA4t=(VB@ynx^l zzInEUuY!*q9UUBA1=o4Qh*D%!;O8$9^8H7~di z$vsHchKD7>uO^5tZV0~i_xE#n4NQXlU?126GC(HK0sUE`Yj+^w+ZiW%JDw6;1}u0A x%-|3(ascd2$qcD0EAJz^c^i^0qBBP^@drlr`KbO9z5@UN002ovPDHLkV1gmaR2={S diff --git a/interface/web/themes/default-304/icons/x16/heart.png b/interface/web/themes/default-304/icons/x16/heart.png deleted file mode 100644 index 7e0f0f7b41183f68897a402995d436e7d6bb1618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmV-+0*U>JP)6tJ~bS|W-(QThE{d;VTw}ysNVY@vh{fhwgrq`SL zH9Cq}`nAm#g#(v@M1~onB?NwWz5IP(fHwvQd3$(xXI4=nV9V#*K~JA;cswaMaOpA8 zp`gjMy6N}xm+tPrB>VgMV@u1=HQ`%d-<}y9xb%=nd1Np|WcS^b)>hWh+S)kU)s_9+ z*_lOMJd5@8?81Rd_vJJ05iNY}?M*E;H?vNtv61I%YWS(k#nYTkcj=tZQ|3nMIq8Ln0ItmJ_{kI5LwZCF{uQ9$o*3 zAwYC#s=PcAsjkkf$lKnDm_y`cRfU{D23g%J-hi&j?Yc@de!H|ZzGk;)K8Xn4TP&Gd ziW0{RnPP`d7vUGiC2)c0azNe|H=DCDA)qJ;^e{u_7#*=l`B_I0q0B{s;8HHm_cQ z3i63qiHTgNc`@Vh?wob^nhI{Xg*T)dpv2M}1YmcL-2q%(~mThFQpy1FNH{8Mt0Le>{XpDB>8cj|{4{J&a+A}jZ zr!q1&dAxsZHamNZ8*ZVUUZV|Q@Jnv4b2uRZJxpsj03( zl?wal!hac{CwLbY=4$lvvU0;MJl*w#K1-{=|FktG#yupLqltq3%=AS18!ebuV{w%g z*S3~t8=y430-zrDi0T0Dw)pwYk3~edN9k@O6mFx~qENUmKKQuawv2eD`I{}VX;Dzu z&m7nQYUuBJ2vFVN<1=SdD&3P5RucS?QKSK!!b4g3ZYOrv7!5+Y&% O0000CjHmTG=^EnI~&m||D zm$I_hnx)m#bC5Nxg<1fv4nV_hm`P5?k4Z^5edGu(rll>{3j{sPyi&Q$=Im?J3Wb?9 ztcCjk&b54g-&|@c4#mc9G9@PBfL#8$pG+kr{IkXy)d;4#p;5U##`;z#5Tg)3ZZcu_MnJ+Y`iCCl;Gn!&{62G* z&Mn}V(G2WY`|COzxP2Y}FJU@vB z{T|f!?w;4waiuS7I1c{)`I3Wl{*ThfDUmtPyuKm%X&Q^dNn@z(3D|Yg7=~|}-E^&0 zoZPYH5qIKEwn+g(3)8u;Lz*4d*$ElWj_<^!1(of}jOn(|wv=%djvEMw57|XRncO7M x6szFVo%5h)N=f-e7^uDsx_ehZTXPkPegOd`x^w;uVVeK|002ovPDHLkV1fZTZsh;~ diff --git a/interface/web/themes/default-304/icons/x16/heart__minus.png b/interface/web/themes/default-304/icons/x16/heart__minus.png deleted file mode 100644 index 0c305c305d538c344818e3b119d271c0d61a382d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656 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 Des)d; diff --git a/interface/web/themes/default-304/icons/x16/heart_small.png b/interface/web/themes/default-304/icons/x16/heart_small.png deleted file mode 100644 index f2ae66f976401735faa8bdcf42e6bb6a833c4da9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Z#`WcLo7}w|M>sko>_H9qJ-3j zIgJM^RGAM4D%de6IsZ&|NK!C!WS(YVAX6pOH%U@4gU$c| diff --git a/interface/web/themes/default-304/icons/x16/heart_small_empty.png b/interface/web/themes/default-304/icons/x16/heart_small_empty.png deleted file mode 100644 index 6e0c58b8ec7eb82c3d4a8973d6ac99fc6aa3fe31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`hdo^!Lo7}|oxG6mkb#KnZ&?YM zBut=Ed z++cIw-}iD1qs(phMxE0UGRMUk;$?mu-v5EE&-Ze7(xQz%K<_Yky85}Sb4q9e02&@; A!?8y}LGRutCx2hV z&3$3@>ea~~KYsLo`0!!ik|j%$2^uhuf#LM)q@;h>{QUmk4+{G7^5si^pt$khzki+P z&6}4-(12+S44W>wxqaAeWb}WPygX3ozZwv0-MxF)XWF!BkpvCsV_=Ay#m9H$xPig{ z^@4&R13;!&%$++ozOS!OkDvj)3=9md3=AFf`T6gil9U7)pu1|-s<779R+rx1UIwBJ zXaVA428Ic9I5{6JTC^yjxVYG(rKN>|Bm?q+ID&y;W<*4UZ+?D01JMSIz`Ote81%QU T!f4PJyBprcF5!5`wf@*O#bFFfxzMghR|{~ z5Kuy6aVAF^LJG{taAq0?AI?Y#?_6smx1bkf2~RKi{i-~YjP*TJKpL8uRbbXRI_ScIiv=%NTdmddOA2R3dU-tBuE4dQM{X-H z>l__);lQP3a*G}IL<*nEEt(zcu0IXdWSkAg=HP05ds1N=>{2rg!? zd|`To=O_CW_4(`hL8*&7{QG6eu6T|Px^VQfM6i|ZOReCU310X-st6Zs z{EU4OR1|6)F4ZfqDV`fFH^%_%&ZCF{E$Z2(nQfnBYZ(w8R1J7&M2l> zqq2ggSfo&yLN)Ux!Lp_{9ce~dX(5^ap7XR(g!JLZJ@?%6KRn!fX(3&X+fv*Cw#TJAK=Bw4! zuv#8STyrm16MFf}yB<{OA~OYI|1O9S?itI=WpJpgRpOd^2V!HL9v;q1)qN<~6r_3K8t@tL6$SQYxp`$1c8G0jj6gMNWwh!C# z?;`1z6%{r>ge~h!d$g3cGl0&dhOq4UPa~KcACL^1HE7F=LA>b|PLBX7FM-7FKXP6J zK6&jHehqXm+LsEGHs>x(k79muP^wGzM{|}6Nm*ssnqfqANh^X+HX*RiioGuY4_&iG znckx1yet1pIq`mZn3=%B=P}8Yx)HZ^ffCo;Q{|iC|44+B4E81A*_nWv}vgumC^Cw7{2Xe2|>X2Pb;#F-KyH@5bgis;NiM zXy&ws2U3Qzw7`#1D-sg;z*K(|N1-vjk)ztwrx}{13}tCS`yP=fh5aQLmv!%PMx*BF z+Rc^49Mz-k@%W+62lf3aNVAloEbL&nIALoEs_Vg##;Jas8*2N{>|hgW8-sA!@Dx9` z24itj;AP5C7Tm12L;kfO67^$RgY%iGm2Jk2*z(l$-JB;5Zdb!LHC+tW$iyf&USdnUmOEU_TNF=!UISp&_wzW2w2qFd` z^OD#k`ln$8zq6k~?giRlOHvSaWr?w~%ncVOATE4@pyGfuI% ztjD#*Nlq2vf)y#|sBPMZ`e8@Z580#fODsQ$R=sb6WU+>Zs_-Dp@Q3K diff --git a/interface/web/themes/default-304/icons/x16/home_minus.png b/interface/web/themes/default-304/icons/x16/home_minus.png deleted file mode 100644 index 138c898a02f0c36acb99765dec97afbf579f243a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmV;D0&V??P)vR+&R*F^g z62<+H#Dqv4**8&=$P9hsZ=%S>4em^X7ncvwKnosC2u%G+n6%ejeAIQ#Vj&y4sL zk9`BTmZWjp`E;%bBc9I5`G;GM;3eopYCJi!wiVA!1bKF>PpQo|^5fG<{L*!ZYmCwC z*#u=RG6T7flBd$;3d2?wKOBGWSYKn?z zw5v%#jb5rQ_`#2ly<~_FN#Yp%yWj}-@?l}22#$5X7Eq&iEVt6A&7oT@+9|`k28iGRR`VyInF_F8@m|*(UpGX0TJh zW4BxC1k{c`W-`4u-F)TbG<-~whS+xg6i0pBm?<+VZgF~m=0@KB*Jw{G-8im#PI^5( zlcZLr@Y=>IuSP(;{qrErk97+j)wk$ckh_2yJ!?-HnQO|(Znu-x!=s=AuTYvC?vS|j zB^L197iMrUVdc^Q60LxRR3>G#)B`o&)Z?wsHDbNtQKK&X&~iY_P-mc^kv0|ycvr-A!m89N=RP*HbF}>gMv}Fo0>DU z)Re8D(llu`Y*f&AuZb{=46@?780yRP(Fapk7A9$VZbYbz@h8ib0D56?7vTo}&0}4a zgc-~t7 zDWw7{f-)pi`dBGN5Dc|eMQuZ^w2;ixeQ&!ECH;7qGiT0wxXcW>5RsSQ?c_vS!ADs0 zn@(u6(?xnZk#QqM390rg?uk5CUJxbRy;WPwfEvB)Cw7~D&W$s!0>MfPqJ{Pw)zv&~ zc`TtuufV9U`|{x}SD9jS1%kg9#0ZZXDl27hr1y!08oji{M84m2na^cx$rlLzTwoA7 zu9lU_Kyywkw>PO0YV`2TXfW`>=)jhQ4PF#4I2ObS&uYwOIcV+cWYy@;Z$@V&)acWNeMh00dh!=V;78lEbiGeN&q0#9D3ALk-8O$PsEEc?4uPCMBlVr`0_4CwVkA!1C zZ@(>}cJwiWS!9r<)#4O8{k^HBC^dUwVt{Q!FaHZOm_-IziuCoM#*@il`aU_xvm?Dy zcXK(P+OCyQqj&h}Ar5<}<8U>gE3G1&TvD8guH+>;LXBSN zy={DSrhql|TC39FK~(2XRCUbYko)7)Fn<$AgiA?&+p)rdpV)RkHhLCq+qL_T}$1^=z^Pt%H34tHTakE_XHL4 z{4_6r9+z4&L-~#=LPCw+W;KF+MuXV3NHbyofsrL&A!HNL%^gG*5Ov8qMQIhv>{`*& l8Wfw$0cFA2pmZaH>@R2e-;v;1CBOgx002ovPDHLkV1k+%NOS-I diff --git a/interface/web/themes/default-304/icons/x16/home_small.png b/interface/web/themes/default-304/icons/x16/home_small.png deleted file mode 100644 index 07b9993bdd648b14b853725b6a172cce5f1c2818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU}X1naSX9Io&4kfe|u)t8Hojw z3g-?SP&jzvgaYT0OFcbS4tv;K+NHUTTe1vU7!5D7z3?(L%8Rm0K2|RfEAaC9h9y=8 z%pILZ4)PfX&MnOi{r`U6&A;+4?mKq>KmYMkW^U(pg^UJ80r^?iZvFay;>@T2vU*Jk zQb*W3o1c7?QaE;?AgHxgUJ*i5FS^ zy*_%P?F_b$j*k>7_pn(oBr|rTGkuf{R#bP0l+XkKyvB=0 diff --git a/interface/web/themes/default-304/icons/x16/image.png b/interface/web/themes/default-304/icons/x16/image.png deleted file mode 100644 index 8de223155b08b68464e316d1100f3fc1fd1db418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523 zcmV+m0`&cfP)Qspi@CR67 zV`8hiLb5P3(|!`g9XyCKIy=46GmOo2AmiK zB5P&5KilW@>^p!<%X9|J6LJ)g;V?22?}=b6)N_EuSwPGgU!-SWr5NcEq;<$=p~HstpO7_@G6FW6Fzmue8JYn^O5yuHy65{MQVKWsmj3QOinfaa z4s}77lYm+QRQ4q>FN8uS0eHSIbWchV#WAnmKVmUsapuS*<3khZ8kl-AyA?pY1wjO6 z3am6laf~Nr0tn)m+H#FTTYZEZHsKW=k&+~vhWoo*+E+*u&vKXg_~5r#3%rq7p#M1Bp? zv@O2iuTB6o~u5f?=SlocVv3{05 zt&EHO;NWE~mvjGRn^C!VLCf`&0k&H$hEJa?yN4?*-k)9bSKiD4m_R4s?iQyyy)?X_ zlvABv%1z$8Lh@;R;QMagrv}dBwY+zq?>r2I5O)p56M)}eVB)JMAqh$V0000k(Q2 diff --git a/interface/web/themes/default-304/icons/x16/image_exclamation.png b/interface/web/themes/default-304/icons/x16/image_exclamation.png deleted file mode 100644 index 5ca76146b2a9febd7d9e1924a66cb5f0844d4d78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P){TMq;tS$SXZP$AGeR z_9vw8`^l>v9bM~bU+(U{Abrmh+8FlS5Lg280w4q6`e1;VojYkkst9V!z}IlP!QgwI zkgn^JHHP{vf{=t*7>XR2T!3(1u8e@WC8$e6eK{<7kTnL^b&(m@6w8#OJQdZU&GV|rkEK2^(26;61iLgD26LD}Hhq}VAwC)txp#VyR8T!&sZS`@K zQkGOo314ecWi14QK|-Mrkw}F6e1~{EMk4OeXuqK<)lB>O9=bZ4nEUx0Umr#(B`l?s z&?|H{#^C#!r6reO`V|QqWOj<)-d^1F4^Rs%&kmxL5^{24A`r;SqwjkADykSJKis3F zB*E{$Lkv8<#B^qeL_EUW_+zFfr=^J1)SR`V(d25THC4`UyLcphw4u3rYu2AJd>rq7lVRPo&IFw7GE7Ln-A*rIgUd&}m)6bzMBqBM1Vb zC?rW@k|d_tjA%4M;@Bq$syM!bHbc~Y17Qx#*;y-;ZB`ByUHΠC2`~ z)~Kx1WTA;23h_^wT3UfRwXzJHOhx_l`z;S8(m@~i@bbLR^ZCB;3P5ZGvEhIlc6*e> z`E?Q{uG?(Mtg~cSWLhkmrR8OUis4`hgqFdfa!{5+h(zQ)h_8i2E95-`M;Fv}g6zny z$S|8V3rkCA>*3-9$d#7vw!yUqFf@UwRYL0X8^PHF!{6cUILMCdij;~9t#@$|!_yAz zoo-qN;Q0zYW6<0W4}0OsJ9s$+?7{X%#2ssugc0IBRaZLMC$byCTC{}NH!CcW+7BxM?~&pP8PY)RKMY> zV-TaujkUcIrz0HicoykWXh(N9vMa)Ly7Y06=bwP1Igg0D(?X)D18q$=1vVSj+AyD7 zUaG{@@B-P9U9nH4y7YB^p3#|^HR=Db@nWrKe6aB$?V>c8i*E2P>a;V-dcHHIWb37!v>W+`4Jsl@SBbN?0hzlA17 i;mAC#2sx)(d*L^@HH#<@Ms$q;00004+hYA|b;t zBr%5m{ep~yLJrC9%a2O^vRqzTN~O|i9^JX}&%>O1JV)awZ=^j)h}KRx)k2*7;&2EYb70RO)ob!Yr3WXc5RDRMS-=6tQOTmrzE1181X02h#Z5Uq%0vM3PQ0~MG--|uvSV56BR{a zoG?lv5WzvrKPVy`Yl?6jMy7eX??-pjkF%Hq&*GlfC@E!4y9FIm}U>xobgP(xOIV_hKc5Gm6#k~;H*({sRL}|WrgQ4j;5}z|n zB=dYo!M6o0mlt+yV9oCS5PoDbtgbymNz+Nn&$n~vdKagA<6Ied&6CNb7=^!OE!zZMg22$q773CY7mZ?AVNuFp4GKnT1SMs<3Hu?6YE={!q>E~0q%>fb zB*ugl5`jbwQcfe!Q z{F}JH3M%)EnVPmq2~F-l(ufnUoGsY6d&H>-j+#wPkNK6$vF#cJ`=RkBG~a?lcj3|# z7@NlW;>0Uw3(D%ltlNG+pqg}Ni8 zG8xK`HPCtcDwDGbqMy^u%;ktD;rjyC7w2VcL2>O6#kGS0?Vss1tD0I_-+q|t-m~nz z(#O$(Fc-&P@F+HCeLw%_4Z==I-LNUC8zGrWQF*YRnw|j~&W+M`<0Z$3X1P4^gFDfz z^~H%-&K8tzeP}l9cq*~5xX9P}`6VS^oOtDI!OFF*rl_pLlm_}HDuPq^b>MW2{F}=? z6R(^t@Xaz;j;Gb-U7@O$4`}=Eu9ka&`~o{GimKd?D&bV`|AHqy>z+Thpy0o;(1PFN Wi(L;kybpE&0000sko>_H9;ta`v z?Mbcqe@{)#++pA$x1Le7TWl%w%m4p3BnUK|dTh2J;n|rp_v`=vL=YPlh|6jUT_y2FS^#AQ^ZvU%)IMMrmKa(#5*qjIPar1tEy1o7Xv&iEA)mQU= z%s2df=Kr_Y^Z)dB{CREfA*0fNo#FVIGk?PO*Zr;k^pu;84XjV${WCGer!OM9xSOA} eR|l!FGc$0vyuPP?T4pZL%M6~belF{r5}E)~T$|Vc diff --git a/interface/web/themes/default-304/icons/x16/image_small_sunset.png b/interface/web/themes/default-304/icons/x16/image_small_sunset.png deleted file mode 100644 index 3c09828f0bd3ae8cca54c613d9d670107f89e282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`w>@1PLo7}w|M>sko>_H9;ta`v z?Mbcqe@{)#++pA$x1Le7TWl%w%m4p3BnUK|dTh2J;n|rp_v`=v+rJ}@r$;|m;D3GQ zVv8AUoy|`^N=>+SfBx66-{1e2m0b3JeeTsC|9@ zKKEPR{-67-?tl3`;Xn5mcHR5`K0fIGeT$6W5H$_;m6h*K=imRQpZ$>SvFKZy|NZNp z{@=f>{kgq|j7tA?hT~_>{0ZM*_qYDjQ*Jhh-3srYi77sP5z)on{G`1)NR6GDfw%La VPD)MnM4&erJYD@<);T3K0RW3{gr5Ka diff --git a/interface/web/themes/default-304/icons/x16/image_sunset.png b/interface/web/themes/default-304/icons/x16/image_sunset.png deleted file mode 100644 index 3d54135b875cea20ad63fca5250be9990a6e5ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481 zcmV<70UrK|P)hjg6EkC(#eqDOIe0ozo(_|TB4p%5$y3>3 zPDqK!2&o-x?ZLK>|M!1z;j-;t@4kJ%_4*(F^=ANBII*x_Fu1-h=V}QtIqO?pZAFL= zS=MVZsr`WfE;r+XiVRuSH9xQR`u(`t75{Chnq@C_$$TH3JbeqfP!`f&* zPM0OPKS=%U;V=!4N9lOJ5aZRF!%y1jPKGQ~O-yJUUN7oPOVKEkVZ~Sk+esGR%b5i4 z)&jWgwFvlC{G^@kWXLk*$Vj{0?M9hUh|0`N)Rz=trn?Z^lZCKs6ywQK&f#9}lNq?# z1^bN*AC^3jA``kb21i&GGM!_g73QlFZXpY&*tKA zF$HAEvTB2&^UdkRiAnIcB>~P?1hAUpaC@AXm*+iX&| z?Di_&)qPYYe%NNQWNPGFk=jFaXrBHmE@?HHC~Y#8!nt0cq7S$*kiM(=-7pL^*#L_V zaLofWNAu!>4u^x?v|3rSAY6+lleqJ08w1`HY_q@^YpKd%KOOq-@-W)}E zqL9BAi0<3208GIozHV-!Qm@xBa**fp*;BZyEyaf^HI}E<_~Jc*pUV|U#4h67Vi{IE z$3?euW(F&<7}j=nP+C`~XXGHyX{8e9)oQfYp2T2BF(%C#{D`)2br+%^8}MnmM0B6g zYMly=#y}k^D!RnTL7vh3*5zjw|#ClyeI-SG-0000K#=8 diff --git a/interface/web/themes/default-304/icons/x16/images_arrow.png b/interface/web/themes/default-304/icons/x16/images_arrow.png deleted file mode 100644 index 1b8a94034c32e228b390df28025b868a93a6a346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmV;P0%84$P)}Qa-~MhT!j0l`H+9QWI796A~pZaG4}18D=mT|r2`*+_rUjl@A+^K0YLr-qA(i6 zTrioWl)M!n6<#dU>wj{Zwj#6)*kXD1RiUI*t7YT|Lm?cj15)b&S;NxIpfmRYP+$b~ zeL(vlz;Y}v6jYkcq{3hzg=+N~e=vwkFBZ^X3&H3D?%M$~ow~Qc&0fGh4vcyMmSg$f zyyZHb!8S626Pg;7neL&vZv>BBJUaS$wAy)C=(G-f#*`134Fqtiwzgo!-mQI3e4Smu zjNcEgs;V&T?QYrd7sTObmQ!^)VIB>@J3o(%^75jvcmJb!yzhv^uqAeh=dt+Ey$SrQ z%^2;9r~5d;`(nEj+WsKE%+29Yaq(HgJeW_;fjv;>C*$Kw2_||Zn6xG0`$Q@NzD!IH z?SrQ`0X01{IAR!w;oUT*78jA6on1_r2lLq*6N5B~1PX3D8Y_38TbF`w-V$nE4ewYk zKK1OvG1DY&O#(YrF3;Ay%T4Q(lClW%U_NbE)(SkSi^9|EQLt!480-?GqD6`Hs}GT; zYDTi66Im@huF+q)t;#u&pm>u*mI|%b&J|3U%j}++#u)o?Wz)rBck%x?4tmuMgj*W#DjxY~#N{W0rh%#?`60JZK z*W?f#H*vItu(g^JO^Nvz5$T${s}47~B4l?sT0&UC57>R32xfd(MF0Q*07*qoM6N<$ Ef@G^S-~a#s diff --git a/interface/web/themes/default-304/icons/x16/images_exclamation.png b/interface/web/themes/default-304/icons/x16/images_exclamation.png deleted file mode 100644 index 4e6f454e078d68bd91e97571183799b2a7750974..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 zcmV;w0zmzVP)3V&X~m>MAx3BkL5niTe)tg)_G45?Bn+eki=viTpf(~E(=xNdK(T3-t!&wx zV)Y zCL=(5w9gI5RjEjJbu~$q$&Su?y*U491{FFVlnijY8&I(+?*hs@fbI`~Wdfi*+W*O0 zDwkL5%x3H_D?nyV6>9ZnG%{9b3|7>2ThYvB``{?XoxrrmgF{6{DGT*B2;q{c=VPcx3`I*GR2B~=+-@XfWgYW-8|qhKKobU2bLc!Rp%~Jx zhV^MU%&lSQ)da!)MmBSS*IamglJ~S*jOojXt?NB4Qt*9@MAd@?wq$#eAqs_-HN*g7I+(hM8dW zwQa=INH+U#3C0E`&^3lL`5C-Kb{|Nn2lXjU5A<^-BM>s_A~eXB;8|?|hK+kMU=-n@ zS_)(DHuS!VozyCL<*ijb9-$u8XT<6J4URjn)yvn=I4kZCBD_8`-a_tOw-i$g3#P!cj{sm^C5|8?inh42(I=7^9qH zTjp$)t283nK(}TKFSM=E$JD?TQBya^*wcCc;wVCxbl}H(4m{^M=f?oB|ADpG?Kv(x z9F?4ttDsW2*krXXbBebjn+LQgPp=9k=gnq9lgVarunj0T0*AYnW)+`xJwUx3u=)Y_ zI6yhd3k7ic*iv~Iqu_uKa59XQ4EBl=nF*Q;q&$63}zF+TsjSPYis?gz5Dz@e49(+M=FJC zgP|ek{r2JJ6_Dokl)L#N2xlaX_`(9Jnw!t$yhE-cObp2J-cz{5vqF3r+K%X}9f%AT z@v~g;zTytT9LnJ9{5%e6wPzW5kk5$&dvQZkijOZ9hz%<+?c0T4v2vsnNAP`eAEvxJ z1#j2rD5eq#%q}jXw6<2u$b)>!WHMAJ6lked;+}pthAb-lj5l)YtB8N9!{^~Wg7qbh|w!wi>FE@%moG0-Hg4n za(WoM%gBR#jE$lk?dL==>DHs)v;khX1YO(KAX!uM51ov?VdOzRWj_ZC~QfZO9+A#6QxWn(AtNb*&?kdG*)xIkc?`| zTxn|#mzyG)i{v$7OdF2)!L8G(_Va? zn?q)Kd11i&ZOf*=5EVGH+#ORt^x9sGr>EnJSS$~C4?K&(PP}Q$s{>>*G=_&e2=ib*IR}$)D?bq*x&)Z$5#Xa`2fj~;u;4j~FT;D` z>WzcT)rAU$0$#5d)lw<4gu+_FJebcO9uG$a0+eO$#6#IGbgG2-<}Rkz6>yK`V#p*w zk0Ax#$;;r!#dSm`B;4H?AAgEuNTui9v$N1ut>b8uhr)0#6vmn`44R`bImE;3mIxT? z)^NkOr4jEBC#@0_LbgzXNlH=Cg-?VOq%+4;FnxBWuM9p{ocRS4?it=#lq9Ge*gdg M07*qoM6N<$g3k;;k^lez diff --git a/interface/web/themes/default-304/icons/x16/images_plus.png b/interface/web/themes/default-304/icons/x16/images_plus.png deleted file mode 100644 index 2fe20dca552af201c6718eba1e9af72046c71d63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)RX)(@Z0h4QgL4ywJ9WrAxu}LCudj#-9G?FAX9jr5Ap@=fHEG!;b(U{{yKv7~)(p z8jBbz)<6;auvV}C%~_@uu~k5a=IO6&$tA6pB8|pkIMfUjwgN{r%Ui{wPx=gy9;0D7V$kC zMsZ`KEbjgGQR)it<7b+?_1p!MFM{C00wi^H)p2i6Zzjh2Gw^;OeVJ$J_%NIW|I4lL z4P`R-4A%Rq#RaV=ikbO&9G1(^6Y4>IN(=JQB+bLb3n8XPg!pXB#?PrjL_#Oq zbq7k{T);N-KAg0k!|c)$@=8kNgnCe){Q?1w2!*IG-i^+NJs8%B@FQ5mSYJo*V;Me; z?8UC91t|ZfK!Q3gz!!-WDLFZ(2=$;o<~ti$o-}jN*TTU-I~Suvd`yoCaLkyB?OGmk zdk^4vumVKGd&km|(m|*P^=Yk1j?;EA87jqkm{l8LwQ!KtvKa?wB!5BLwm1p(pgw_6 zXhlvB%8=8UkK8UXvM0qLx4BLhC09+T2lZJE33a@HU}7i8wM|aa#34)xp_9ar#vu47 nm5KL=be)@2C#s1&i7ogAIe3HDe!9er00000NkvXXu0mjf>QyNn diff --git a/interface/web/themes/default-304/icons/x16/images_stack.png b/interface/web/themes/default-304/icons/x16/images_stack.png deleted file mode 100644 index fe33dccd8da879865e0592b2015e633986344d6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)=&_To)$YzQY zHyln=booIPm==VeFA-{zUWlJ;GWPTRA4{CCr0Ic&^In|ydH68^>^d-AcQNnW1rc))K@&wT`fLDX9;zUH7`CMg?Ce7tjd6+ITQ0Ai^bJ??EJ3A&+#l? zZgPI&;ZMESiwAaaCeJ#VJD+&%%B+T{Ul5&__&iJ7nWL@3e{U?(0-y_;e$a)z< l%BN14$n8Joi;$iD`3OjacuCsVv3URh002ovPDHLkV1g>^23i0B diff --git a/interface/web/themes/default-304/icons/x16/inbox.png b/interface/web/themes/default-304/icons/x16/inbox.png deleted file mode 100644 index e93b4bae815d07eb5fd454b10402851f837eacde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)yNGLHEmP!^{S(Joj z5nYIG5G^WKc6IyqJ%XYYf;n(D@0>G>8HN!ND+X5d0bv!-@2Gf_0tYS{v}{AkH(ZQYM;|=B6d0_duvw88IB?ORWoxaR?q~gW2R{LwnJ0Qyo z9JpxEGH(lKd-3%=pV+&|rLRn}KdGdcO`QW~>3z6p&@zvLv*XgT@f&M@9e~+S4=r;y zagHayk?!4w6!D;mP90hb4L9b18TQg18nnzQ7cV`o^wG6bmm&3pe~|57T1j(VZqhIrGp;#Ca<@2oCDiEV17PKPd&3=wULh!q2qS&gN`Y{!4>kghe% zQb|S4DJrH-D>Y)(Km@B@skOZQdEP^6)?A7oJiL7G_j}%p_hSIqabU+D;MVi}xSlVT zxPL^7$z@{&e60IQq-A~dE;ig|{FrP&V5SLMZ*17|2)q26ZN|@OD>f%ASbud7CG@D7GenV5T27!t}*mK<`~kdDt-esF$vrKbi1wQ9J{*&(3}Wyv9zz0Bhb zpIWjOKXjJk#jRBI-cAb%WhhGyxvW>q3E%swzb&+1hqLmG%v7Te9-(L-)Z2NdEIH(| zo@}n2mi8z8#tZ)ppx)m(a+&KgCw}cW!sn`z@eiBuPAtVp{l$GyudaIvI{P9zyX+u` zT;|ABbge$W39rMji~NN_$g<5rSc6<0PehQ*#B_!0%hM_>*-L{`*64!DJSKCxqyyS# zJ~XTX8p}A!ujRaE57QI_pPiNXC~YQ;|bbEDK&xxWoEV^wXwCl#9j0000*zmka9tQ#rNlMKQn4QM$1{@~jr$9U3gZx`iLFwOAQ%z{-R^A?DH{I(i37!}W+f zzYc1sW%kp&WKy-aH*CEIn_7l9_s*n5Gc-#Lwd`pTpErB+h%4B65tggDaA*orq8XZ{ zhFUgoN?bYLcw)x$@I1ON9YxROoRnyWW~rf;^%RQrUwW0HspfNNS7gPF+%Cd|zHAkj z;UI<{Y=z}U8fcapYFTH2xS0;^Z+)uct2byY#fWhyVqaU}w;w>%`TL-$W#)Xb@pGRF z0drMc*rvuiV+HIr@&t!A19LBB_!;ZKhp~KkpX7lWYMDtUdi1fY8a`8HLi`i{5gXUR zH<*FtkOp$O9Fc`9m^7zjq3Z&uWk#vU{Qhwj+=hyzrdp+#wH?CJr)uH1V+hTi#oPY< z@OGR8wd`(=$l`BTz$=_=GS0Si1l`5(y0bCRuYh|x6VqdvaGCZ%cT8kuWfD%OKFp0K zqb=lS2AeiVgT5>TJp1BrKx@Dwf%X2Ts4|yp6YjAMf-QpW|7xn?%wFfN#jrmO;rZQ& zeN)C);&tv=>~7#%*jkq~o3Yk9rZv8e9g6U7%OR?Jm+&7bIz$pg3l))+hERtfLL^!+5^ST5G7W?T3-e%VwAo@& z5|%}@5G_Jfai~SLX=6?~h~Pa0-LRS`2!05ua`iez+#_ZEqC)+e1hVwXoU92v3v+cHf!` z9qKAPnrTjmHngRNT38n|m6u~B?gvX3uJ)IsbEGaI+R&C7YGI{;*Ks>rdwykXM{7?h z+ImF^(T29vPz$ztp6?3+5W0;b~ckUb7;^=TPIBp$#_&s$G3KV@mstFRmJe?r z6LK`_VvZ{jRVMiQ_z;LEO#=t8R|-qO%K9fks7>~7{03oiX#B6AI4uAG002ovPDHLk FV1jVq%clSU diff --git a/interface/web/themes/default-304/icons/x16/inbox_pencil.png b/interface/web/themes/default-304/icons/x16/inbox_pencil.png deleted file mode 100644 index eb6f91962fb888a431f7e491735cee4fe7cf54c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmV-20?qx2P)|uAu}hDNm$yi3zs)(Wv;t#?|CWFxd!2Z&&@gC&w=MW3;^2-Y|9H`)uK33 zEm{tD-6F=e|_%_;xrDxYb z4!JCHMl4QBdj}Q=n-F#yFmcOE(rh01NvmR0zyHSNnk9h;s`#Voq zOYmu5(XXcmg&^xM7kcPu>j_FFn-)-yX75AIh%}l2NkU*dPci>VL0$+-nD^UM7Q;@w zlxq=jm2H4}A3_$~yJA8*orb&O2z>iB5#}{$`aVCph*@v_8tNBjkQ%*!;k$c~Ua;e` zS&OK<2IMkXr}57{uwnXs?LSG%286o{Rk_!>6VaPGkV7uJrPYMq`K)-OTs9k1vhsvG zyH&Z*wF_gOGPO?*xy)S5JDrDlJR7aYdD83PUrFw$K6Nizv zVr3TXb{;qCnJ#0V|HsW)ICp|Sw4LS$O#1AB--X~x3jFbT5dZ)H07*qoM6N<$g4f#q AhX4Qo diff --git a/interface/web/themes/default-304/icons/x16/inbox_plus.png b/interface/web/themes/default-304/icons/x16/inbox_plus.png deleted file mode 100644 index 5ac374579877c18ea550ac186f751f7d02169c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmV+e0{s1nP)7K#1I?0xU|bpHRazvus_!xR30IX>n8 zx6?EJe>*c1j=!Fq_W$$IN&i0{?EC+IZ`Xg29*|y!-3crvXB&(*z1-gNe^-0R|5MXb z@M4e}kXn!)kY0uzaV)`C`aMoQSXcdjTXVqw{XLO*F-Q$aEl3YYFT>VY=HgqkA}(EB zQuu#Et=IpJb>4U}NDW9WNDoLa!^UXlnJ+d~K0h}%>;H;UCon!TG4B7FnQ15(BnFcQ zsRii)>19|K$vhVnXvlbTgD-{wATe}xAiWH$!kHI7+uZQ~?y7Pyez~jt|AmEl|95wU zqF|6%!e+PsIx98*N3OK}57GnD%djkjY3ZZ&HUDoeD~4lm6k@?TOVt0TyekFMAUznu?FZ`I6umtm?m)3)0yO8;L6hAb|u zJwy4wngg5{I002ovPDHLk FV1met?hOC{ diff --git a/interface/web/themes/default-304/icons/x16/information.png b/interface/web/themes/default-304/icons/x16/information.png deleted file mode 100644 index 17ed83ff28cb6773380582fc33768ca81573b418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmV-?0)zdDP)uhFV*4@g$tiJ<@cS`DRRSwOrEif4hvKyn~8Ahkd}*bMOCwb;Aa zG2`Z~^zL_`il=?~Q#AF*FxCX~CfGieVdh5S&_{rNKJ#Yh<)K||9tGN5gJ@fp37*;{(|%%3{aRq&nfl7XM@Po|Mepf7^L~pqem!WAgmQ|^fO2g!T`D18LIAk?^-6` z`fr+W1CBwO-@bi|A_l@zwma^D^dJn7nJ&qpG-roJ;;k>%8PEP(r9TB@kmh&q-og1G zY!G$h3!B269Uwgj1Ei)hFiA}E;#Qe^+$`zgSNr^r|LuU-FzP%Q+d=sz2@k$-6` W0uQMylt^v>0000RhXG}shWmSusMLH3PG`sL?CeTB9>>nk4u|GoFu3AyI6BB7 z_x}fECX>nFcDqL?c>Qh-?N66bWDjv@_Kb^&#kMg#JUl`!HT;3%;$oseT6iLn2x>d$ zQPH)5*5?Vd4er4?um}6IU6ggK^WEm=28M=)Jk(Ij3&eJ30a!)CL&sAYP+UhDJuRtG$DFt`20ot|wN9bwMlcX+OJMNrhT zjF%(dFflQ)N-fjrbk+2?np}R=K8&EyCUCTk-=WZtM!oobL zWm>J)E(ijyReeU){a?7zFbAde3(gxpO40&Cp%Ai)J|xL4_i;B62!L9q(P&ypRFzMm z#Ic4;))`!|1UM9nqL@4r%8DR&{eC~FWoos$UJ#a0 zJ3So$wM?Z_6^@O0*ZN=ikyr5*`L-yoHg0h!-re0zo{5VVANmG-aJxNg)Uv$1yfY?~ zxp#4K6*uc9aivB;!Mz0XTM|4@B=%?Ga^)g-=H`}QG@5#;WjQ%HEIT_}-`)MlyS%)C z>*Zc#7JY)MF^ZhqAr8%SM>|1Shs)LDrG{FTo}SJ!GBV@}g`%pn^TD_%#_(h?h~maK zIGH=Zp_%SPaU0~2OAWR39g{dAlgZAerKQ!V)%h<*M<+Me*MH+EbVoaK$ff3>WydAb zBoq?Ll#~>$TrO`)O-=2R=sTc`?r2AjMAkub{4cY$7I9p;F!lfd002ovPDHLkV1k`; BboBrL diff --git a/interface/web/themes/default-304/icons/x16/information_shield.png b/interface/web/themes/default-304/icons/x16/information_shield.png deleted file mode 100644 index ad5f1092c8f714c694b58a4cd38d4b9c7bfc9c5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&` zZAepL6vv;t71fH$h-s!s%(SL+%_*d0TVd!*NEFFLvb9o6UG^%71QNX%C}akH3B-!| zK~2p~msGM(8C$plUsm{X)hJ`P&<`4jr{`Sn?$vzY$IdgJVS_-{|h;$_+D^wcDhE*seaygIP`y?{IC^_qfu_d=pn6bC6p(!BbM} zhqThsNrm3w+CnqARZ|=~Qi1waZ+ZRirQ%0Fp{V8u z?#(Pw$0-)b4zzX_RI`hw5-+SK@c!Rt-SRD>BNaroJkP24I-gqTh5!ch2iTw94yqHa z5N+y!$h0;doDb)@=BU#w6{ud+nXY`EMbT&(0A0>oh(2Wpx7!UKj|ZYocCSI5(Kkz- zTB%@PQ+a&0YutFz4Y67Mpw4{9gYwYOkob*gvil+2&^=Bat5gv2EHyZxbZ8J+3)v@--zz)-~wjRkqSZ^ zh-}Z3%DqWlqlU8YkW@6ygEGf);&*cK3@8&jMlp+yR1i{6WXif-Owj$;Dx;G%TDfI| z^$+OsKJgr-b4n?<9Ffw?Vg|G5hz0nVjVi)yJ{Qhxs%TOuA9`al27VpC`4Fxr5BP3YJ%2pR_5DqaE{R%si39+^~00000NkvXXu0mjfygW^B diff --git a/interface/web/themes/default-304/icons/x16/information_small.png b/interface/web/themes/default-304/icons/x16/information_small.png deleted file mode 100644 index c5b7e49cad5c34236d7cc2ebe7348821ba742773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`7d%}YLo7}w|M>sko>_H9qJ-3e zHM^%a-b`4oEpVRc(c6GqqAGq%7^7p3zU7zk%&Y&(c;f&38^1m^ueke9S)uR|&xIIs z^Htv-vj0Dn{lE0jwm;<_R{!p+{=LIK!6J~&V5QD&(SVY-{pD^x4zw9 z_~M^ENb7|8=J%C8eQ}?>Ve|j>@%#VXS9x=$K6k#dyyK%Ik_xtG=en03^nColTRwh& z-QW8fA0D~qP5r43mNcE(IC1^O=83z@3pQlOrYNw NJYD@<);T3K0RSYxdENj3 diff --git a/interface/web/themes/default-304/icons/x16/key.png b/interface/web/themes/default-304/icons/x16/key.png deleted file mode 100644 index dd3ed88fbd664c734cc83911452837a5478a36b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmV-H0>1r;P)U zFz{pCkMs^&cR&NpHWMX;Xe1DcGNR%@1=yO*Fk;ybE%e_@R1#Z=qQaZM8Tue;)t~?O P00000NkvXXu0mjfF6j;L diff --git a/interface/web/themes/default-304/icons/x16/key__arrow.png b/interface/web/themes/default-304/icons/x16/key__arrow.png deleted file mode 100644 index e9712f11cd0e8120b2ce39246c3a20d90dcb8c25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmV;+0yO=JP)EQl3)=n>!KSi8<<&Jma{J{LrE9mEW=hNPHl-W)M6r} zkxdIVAq%wy>e))g$)vZLwF;LBA`ZLg={#ZUT~P;qJm;L}e}3n{`vM{Y(Vj1d&dYM) zd7)gv$>0>tLvsc7DDx*E5eOZ6c|u>+ddsAvK>RXnL=P)O&xKliQ{J4}1T@)M!`M(yJMX2Uvhdf*~z&+t)(15*5g(o`YdR-eRXN2~BFE5@Nm zr_olIfFss@IQdeG-R2#PGR9N^r1%Af!w`He1+rSol(w-Ry?69!4muvHanPFLZMv?o zQI9g|`aIZG`x&-Xx*_VuV1NLwCPPr+LDMjhe+lLf{-TuxRI}3*QPCyC5L4!&TbbE|NHzBMTTOuA zN)kwEBf*<)-E4fW;XMyBBIMY8rfw3kVjPjy3d3uSUqIu?b^u-cPZ~);HLlJzRXm2M z9YRcg^_yH5;;KtMEI>dbaSOm1C0I!Cp|1dA)Vk5|%vMIw3t}xIsvL;4jyTsI@B;o( zA(#_(bSpG`v>TAuM&)WqK_rLj2@uUKU!KCJ}R{^6jKQwEp?ToSwp0ulO`h- zA9FsleB@(Jw<%0zc{}t3Gi#)rf z$CVqO<=7(iGw0uQ)aOO+)7MH|&CA9V?8-l?q>L&_1UnG~T3tVk%n{@%x*84&Ot{a9}5bpdgA# z)+c4_8o}we zu~t8J*U;H}Ig92ODmmf13EBdMeqT z-fEG2X(neeI5-#=r^So3r#a`Z;9(Hh(nNxZuH-f9Ka{g`#&$35(sUXEkI#IJK|`~P zmgXI0n*v(byaAH^1u95DRhGg$Tb1n9lqqa}boe4RHYDM&@eCUKedcNYu9UHV0$P{7 z0AhSWL4s*rI%b5j=I)w<+Nm)=G>@DTUO?46avD3UoU~0P%zI0~-vSOCr?68{{&hft zyjI9FS?^e%%iQcIH=G@J#npueLM6tuM`qPBR=g$Pe-a!y&L^EA6VScR0WGK3meOZX@CSCK=}{;`xKjWC002ovPDHLkV1mM0S<3(b diff --git a/interface/web/themes/default-304/icons/x16/key__minus.png b/interface/web/themes/default-304/icons/x16/key__minus.png deleted file mode 100644 index f381899e56a9efcdf569cfd1b31304b8737cd5f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)Dov1v6|IMs1tJc6=yc9)i`xzQ!RP*d_nhzVbMNn7KtymJfTj2A4kE#R1R$bl0ikF}G>uSlG2KJwMTcv98TQ&V(+Bphgz-Hi^yi z)1BGZz5}US^@7b~64o=ketEMj^*zy$_6?YGgt8Nx_wy_2rgkdoY*w;g^XH{Fty}HfhC$lpPnw%{k5xphgyS8imSuutr*( z@!~h>8csbqi}64ePKOTR+=vNdzP%D>+(rQk+&(BkPkCP8ItoQj12jf%=;QB)ZP}T@ zW=uXlhLa&f_EEbw&OOc$oP|4DfQJC^fG7yyN-ZpR9EJ*_KO?o_UmJvA{DH@J#4B_Wch2S8%xoltfwZE@oNewWkc=K7fzH zk{Yhd0v>gH04$XS%3qL?VzRRV@1S{Tx8 nfD?4TgV;!{C6>uYRSA9pZxo3b%WVkr00000NkvXXu0mjf&E7Gh diff --git a/interface/web/themes/default-304/icons/x16/key__pencil.png b/interface/web/themes/default-304/icons/x16/key__pencil.png deleted file mode 100644 index 13774d4912f199d955deadacccdb8959a16d8fc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmV;<0x|uGP)L~VuPmEMO&>x$!Q;!mKIv!W(!*-_|-IHl*P;o z1#7O*veI%kVLAnsCP~YZ=0(c_5nt@0({ub{e)PbP=kT2W|9A1efQaxiUkt4UV)o7? zR&X*ng|pDCpdDqF17-!R#UM`Xs@iHB>oxj*ek?)1$Atb5Sw45=MjP!Y^It(@o@jfA zWpnM+w`y#$#QDn7!@5iKE4v%bTYTevSI}7|uceGVR|LVh8JiK*Ws7pg2a5ykR+aZ| zDl=I0Yz;wkTlqHcZ}<5CWjHX$z`7v8qjMt5U%w4&E=!xMPBD8hw(M2Se+DifWjK@t z=WY><@bbK%GL4yqVXH7T`~U@?6@T;<;fOmQ1HJh;;Wgq!PliAl4rQS_B4VMSIE5v+ zYBiq8p(_04xq}1G&!DR&5eMx_IM%60r**G~G9@Vt(sVIP1?FQAdQ%5kj?!q?*A7Eq z=xq-6K0AT^c3t4P$fpP$iR< zJ_b-t3ucRRG?9RAjPx#07*qoM6N<$f+>?q Ao&W#< diff --git a/interface/web/themes/default-304/icons/x16/key__plus.png b/interface/web/themes/default-304/icons/x16/key__plus.png deleted file mode 100644 index 9e3fe414526fffa10cf1dc32c1cb85784435e525..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 704 zcmV;x0zdtUP)Ord<}A&UOktf-fYMi%6Qh7ej-B+iyPW8w%cnA&143|!VQ;Zg>Z zJ-Dc*MV637+5+_|s5C(uD`^ES4MZIF(CM7JO=MI*_;AkeobT_$eYk*#@WP~ofhMK! z#;jBmdcqQcdo}Mk^EV(O5c(UG1tT3h9CPE1z8@cK7?8{ucxUhpw{Laujx+xh^wcYM z581almp^x6zx}AMO_w}sD^DElv2OP*OkBaiw#`n?xa$-Ui!A7_RTvkhTZ3=K;jw-Fb|^dZg=5Q{8mEfw-T&LU}PrUU1t7Myxo ziJqc)xih~sx?d3TO_?$feP@ga3VgXko=V0v`fV*i@ z?zfW|3(r>sd|u=d@;oA-KLQenl=J(b z`|Fq$sk$^J|AfF)VV@@FGgXh{K*KvY2gBqS4Ad$XYAv>FC-HbNQQvx!Ya m8W9JEcoFm}Nv_5OS?~uxAD8F#yY`L%0000B?6g)7_If+mxbaXVqdF)l2)1wjSFCc|=qT1+N?1QkJ($)W}k1Ql%tlYfTY zWVD*y`-~GDc>0Bh@8>@6dk-9^w%e`RF&d5jm`o;aAuJ>;$nM>I|DAsigTX)zhr`#| zY-X-jtB7-9P`9*@JhT<)_{ zsoVmYju|_)f_A%|ko&#Y>zSQSC%q3HGi&FtpxJDGZ#J8NWaALb*s&Ef8V!9upMOdA z3tr*Dg6wC;j;)|xuV2+_wSau@&vLos53sD0>6o!|OrWaO>P5L+_LNGcv~?&3r;$h%k{T&RKN)agUU2b1RnkZnQnKE3C@H|!4Z$g5j=4lhM`G!ZOzV4 u2^_+WuIs*7ESA1sx5CzabW8osK+kg)hNbL*cOu2x;r&77Fm5P8Q#xs+`g=@{K|BugSM8|P_0ay`x z&vc&Wx^3HUB)#wZPZANhJKTLJOhgb7BoTp`#ev>C%nW8W1TZst?>C^T!yCK>5YYv+ z)}X2(ptW`Zkp|3s0kzf;FijI`t?>qCb~lJ@psH7cQVQIC_zv71r4*!`Gng6kJP(hU wa|SKT^3BYjk#H*8l(j diff --git a/interface/web/themes/default-304/icons/x16/layout_2.png b/interface/web/themes/default-304/icons/x16/layout_2.png deleted file mode 100644 index 41266b2aa2ae3989b68667904e68723e50d43c16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmV-40n7f0P)~W#p3(RHNh{HH-K~x>;_kRR03yP=t_Q7zh!A6>jxl0phk#rwu?NiajG19(0H`Xt zR^sm415!%+u%wkJ28amLG+hRW$QCe76Dg%rz@t{;?yK|HRF!cYFB_=p7Lc2(s(NaL zs;U^r@!Y`7o;sqL{WW;pH>Jcp&zCnyDQyjgVZhz@KX-SQWjSai+?`< z+i_xy2d#vv5<)=Qw*6Gqx7_dyX7(+>3-Aim+5CzX`1u9eWI{-;5X=t%0000G}vPxFI}bM6Y@ z1LxzX@B42I!|)|aIOkOMUx%iY0uh0TZ1lz$%=4_WQVIYp0%lf|ju-$mIcG34n0b># zM0mwEf?DftORw0Wz!-y+lFC*=N(r@ARdB>s!LwJ02r)*LtpY8{TC0v=twoISxC3TZ zm&nZ94xY_fYemjkWori^1c=D))*^ywnp74-SOngC5E0t8-7Tt=qB8IOa*?j{n#w-*Fso2EZGD3xMWC{S4qPB7YAp)=GDdZuEu#0000 diff --git a/interface/web/themes/default-304/icons/x16/layout_3.png b/interface/web/themes/default-304/icons/x16/layout_3.png deleted file mode 100644 index 5e8ab93b4f022116af971cd3bcefa5cfb7796027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOpUP)W z!D<8{41nQZN9IsE*Fqnv(5Kip^Wal?EcE1|ppIkG+pvr*xSQh_4M{{3Lihqcc`bhM z-rw{RA%rRO-rrnn4OK-|0WijJ9LJQk)^M#gL}W@vivq10t+{`mJ z6fnk6N|~}+E3TA6?|nEtYwlXvT1(D(%1SA?YhqcJq1{K8a~?Yokzrwv?Cjuvw%$9n z)+x(5<5Ehf>iNE^%D(SYmQupS7_ru}uIss+*4mWC7%|(neOqfkUipe5@@s%M;2m&J c-aml9f2fYGRQ)ECW&i*H07*qoM6N<$f=FzCZvX%Q diff --git a/interface/web/themes/default-304/icons/x16/layout_3_mix.png b/interface/web/themes/default-304/icons/x16/layout_3_mix.png deleted file mode 100644 index 89fb017e5d75c36620260f08cbf7c29a67cc0b87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmV-W0k8gvP)-eT1#z@ZjOmH|H-frDtO6e&0U4i$W5CXg1 z?)};knxl~TS(YNJVP;IzL_3Zn-g~;PTbn2%MRw^SjpK;hY&Ngn`=@)pqN;v6 i-~o69+JEj(z}GimXEufvW9TaY00009$hzQIK zs@lE6zW_vZ18S{M)geHw^#+U>F!K#4r3?Y4X+kMw+`!EK3`ROo)!QKF40rFo19wNx z86l+vX2v|v-6f`!K+CdxG4sdBFPPa60eA!O4j^>qF95$U8+@B9O|8OM00000NkvXX Hu0mjf#Y<@K diff --git a/interface/web/themes/default-304/icons/x16/layout_header_2.png b/interface/web/themes/default-304/icons/x16/layout_header_2.png deleted file mode 100644 index 09f6832bd1ddea06c32634ede6c14b17d739c9c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmV-K0lWT*P)b>!3`M_a!9!861#+kYoqd4hOobOu0(>fu1v+UcAUP7r4n|!&QJT~Qw0x0IpCn|4 zVR!{_z`ppfIp;&$w(onYopUFfQi5~tv1F zjffCJxa)w3X24}~RaFnQP*oK|2-glo@h<=~&knrzP}ODUs*3aZ zywOUbs_@>!j^hX-LS5I(a8gPe?bZ;-afE4_=8cG6_WT7A`7{8Y06YV*|E$jdzP1K#@vZWVvL(bMACI#mKkI2 zB7${OsA3V83cED3n;K}1=BGnNF7swk!4oXfH# zkh`R{&bFYnhI8)R0W)VGk(sv+j`}2`G{z&A99U~1BD-0O2$p5ZGHdNBFpeXXQmCqG z_fR2(EE~shok(5RZ%V0`tABx+f2L{rEC4(Kcm_~j$d3SiMda@v#9=RMy3D6P00000 LNkvXXu0mjfQ8<8U diff --git a/interface/web/themes/default-304/icons/x16/layout_header_3.png b/interface/web/themes/default-304/icons/x16/layout_header_3.png deleted file mode 100644 index 64a48ca7ddceb2a59ad7d4640bee17b2d357fa94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 zcmV+?0oeYDP)W zv5LeX5C-7iiKI9#?ZQ6P!PR+y-Df&%QVDq~%Y&;d4%Fz3*M(zcSrf}oXZUqct?T*$ z;EHqWTbEL<^E`i@skYYMb

q+WVOXIcLBab7SUON~xuk%FK0HmM$~K+;mC_%nT6$ z01y$5m`*7{M8M2@v?JCuP)Z@j*kvgt=ollIxjEcx`mr++A%xInF-GXejbRv?xX&zv z&?XR(=E0uXp5Xu8n0X)BD+?h&d+$+e-RE0t#kOr-=Dmk@&Vh(9j^q9~Ip;2O&OuGn t^hrdQGk-xueiVQ=0Pg_w!TJK=_Ybk%fmCTsJ}UqK002ovPDHLkV1hmFgeCw0 diff --git a/interface/web/themes/default-304/icons/x16/layout_header_3_mix.png b/interface/web/themes/default-304/icons/x16/layout_header_3_mix.png deleted file mode 100644 index 22e67bd80d927341198e4cfd840e768370eae380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmV-o0iFJdP)dhi3}d{62VI*L!QcGp_7M#B*EqYN(rc{>OfLOL`6hN>h*dZX;X`& zR#kOyF-DL?&KUq;t;Jt$Dt^wn7$b7dAUSMKX;U!?FvcK+@DyN-=>Z`Gkh}w^DvU9+ z098c@p$GiF%~}iZJ$;IPXJXs7a81*|T8q_cHJF%E8fkM6 zsc9OR?RNWat$khc7jn*@2EYcu3jp`ed;#$F4Te@8Xn%v^!T92hdeYH? zgq0dx$C89}o>rba|M^7i{Z$DGnx~ESt@A$jIfRwjJ9Cy1-|u~^n;Ms@c>b{9i@Y8x z%A<3%@XYOPCvDDy)OIPwO>=Ea3;?Q4lrXZ}mb;pZZCaDUgF>05>#{=)Haw}6^S`VT zdwpe7qw4k2o8M~}C!8#ldG|YR*0MmLo@uFnZ*DuQcJPw*{O$9%$EO<1ukT*=(09(n SIys;R89ZJ6T-G@yGywqIe0Ed- diff --git a/interface/web/themes/default-304/icons/x16/layout_header_footer_2.png b/interface/web/themes/default-304/icons/x16/layout_header_footer_2.png deleted file mode 100644 index 22b7d59efd63f846631d39fe8521c822e5711df2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmV-E0m1%>P)1sx5JmsUszO}23G8ir00&b00QQ*{72ZnVQ@ISJaTAb)XT~W^67Q~;-SvQ)ubDSr zA4GlMzXLd6Uwv9;KGb!6+%xUHZ|yWq@ZPt30Mj%9&bdZJW@et5c@~lRbUK}BTSr7@ z=Uih`N)QpKDgeM3gG+6ze*0`n391Sa`MccGwrUeVM2Ioo1rX5!h%rJ$t^jN879hsB z0M^@#F$f{tbzqEH0GG{KmOb=@EXxo=xOSkb4~3|z{|<-<*4ndh*4nKMLI|L$s+yuG zc723#9ASrHK-YCgW`1heT8pwQTgvnN!x;0n$APMT5r7u}uK?_m^9P)f>gvem#j2O^3Z?6KA0UKc4P zthG_L8pJLsrJ_$zO2JyYpMaU8LuBS{0wDyn)^`ULW4{SRp66AXriVYmIF9K1{#_5l zfV!?P-ur)xwbsb8>1y<;&3o%=|S?(}w`?1mGEfKA`sit|5f)A4ri495Job Qf&c&j07*qoM6N<$f=5+{IsgCw diff --git a/interface/web/themes/default-304/icons/x16/layout_header_footer_3.png b/interface/web/themes/default-304/icons/x16/layout_header_footer_3.png deleted file mode 100644 index d97d175d410ed78b1b797745c10a473c820cb049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 zcmV+<0o(qGP)1sx5JkV_sX|=13G8ir00&b00QQ*{6?P@?sayuqxCux?Gvjm%S+QVy$~XF-$AHYT zES~^wxHjL!%(uSp?^n{^`;l_a@ZOJC3UbbXb8ZlkotbxL-bG}e=lKwG&JC1Of`~v> z0RYxooMDtwf~rD99%^S;QDBTgjPVdlDS={)5Ru~XQAW?r)>?!R4zU;`=y_39RiXQe zg%C;uRV@zoiaiXBF(9IU$2r162rymO4NcQr`Uu;$f!1}!G);GAJ{2Y+v~4?@x~{*h qwI5duRQ1OIcmwbbfKKKa!0#XW)IyF?bV(@y0000QrSx0#LZC@sP8NSK4 zWo}%Yv`FJmjos0|b<+=+`p&-d>_FeNvfZ+)SMB21vgK~x&yN)y7Jc?iyirl>uiMW) p+cv#n+Oh3YKc#;D6EImFKk?>4mL1C@EP!Fg;OXk;vd$@?2>|88k|qEE diff --git a/interface/web/themes/default-304/icons/x16/layout_join.png b/interface/web/themes/default-304/icons/x16/layout_join.png deleted file mode 100644 index be491fc6370cfc0296b69f67cf4117dd15e7830a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0cSP)UDk>Tz!~v)f1*sxh7mnB7&F)Y{ zi5xtR#Bbm1(`deyR;$%LfNLmu`M!I?g^0*2mdoX%3}n98%B9Q~TQMO7hzLaF%uYn8 z>z&HF+=LL2Qc?v~RjI7YP209eDIukFHo(j$!C%(pCqay{H&oZVL3ZSW0wRKQ4TuQF z7**h01Jg7OVvMT5`#qQ$H`8_R@#pgl-tP|rZ3AY82qA=kkM*=CIJ8GF&N)?(Wf_<) z+O~!Fz9+EOg4qslkW#{EG#)(SksIfndV?4vtSwa5<)$o4h)Az%5ka08D(iBy*=)ef zu-5jDnCFGcx|}AH$&8t=w4QGtzApa8^5^}H0E__?01W<@J%H*Lb}b}@)5S2P00000 LNkvXXu0mjf83&*U diff --git a/interface/web/themes/default-304/icons/x16/layout_split.png b/interface/web/themes/default-304/icons/x16/layout_split.png deleted file mode 100644 index 986005ef864f6705a257b71be88dc70a347b57b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmV;m0ZRUfP)2(*7;6TjTE>ECFli7}#7$5z7{&~GPY_mb9HwhpTU%LK7zzW6#UNTtCX>lA z+_>AljQz6z&--3DaE@FD9(ee8--pBbp;D=I>>+|MZe3o)mE}BBu~-!R$4cFN^P&Y$ zg+f8h=X0LTW*X?u%ufz-s;7KDFQ(HePbL!$bcfgP9OP6_xm-?+$73E2hZ^X%Q!gwX zCN`-Vp0e4jK+*5_HPCIIJ+gGzfQ+envMfss1_SPNIvVJr@iLD_BOjcOj43;0%49O4 z+wF3z)zUz>x_{@t7xOo=C(|@VyWM8TaWv4a?A`k}kxxLDPe6}M>2zA)MBBDC(5)Rj zuynm%&(D~uC&Ms=>$+U4)ilsW<4-IdZiTXf~T%uh%uu?Oc3ukW)Q{!{L)iBqD;?y|j4|8%O0=@>a-W f$z%DSU{B}=zHbr4>CbOi00000NkvXXu0mjf(Y?hc diff --git a/interface/web/themes/default-304/icons/x16/lifebuoy.png b/interface/web/themes/default-304/icons/x16/lifebuoy.png deleted file mode 100644 index 2bcb23d54859109bd6a05c79305771132409f502..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU`q3JaSXBW51s7qF}YCY*#7qc zn`hQ1u&c)N?>@6k`W~Ahf7_+p4{~OwnjgBVcX2g3Y3z6<)M)NHh0k@OWk-Rd1;<+f zuaFJ@Vip~A+1|=Ady7=Z>h1T_-}MT~RaVS<{<-x1vy@yvmzR4kZJ4z1NqAOx(VH(B zW-aSeN^))-`okXX`o7Fe`$5nm@7+72*XyR{+)8dyUz~jSn$@Ak;2(7^i!QEs9i9C6 z@cXuj7M(6d&;HbKK0Nv2#)hqZ2|c}zYiBCS_4|u=AN_lO^X9a~iW@dB-s^MwyB%-S z<)Psfn@I z)vw-u92>Gq%GByHKzf#MrjgJm~eUF0(KRv67NDHh=T&$eh!v+pVph zEM*deSn#^xap>G{3D*t!>U#QSy|_N{Tc{#fr7kY}1m> zQg3OkZ&|;p{^hQUb+Ka0|MqNAvXP8UWxm7qoBhhv9YSMrSkHOQ`&t;ucLK6V1 Cd`I2@ diff --git a/interface/web/themes/default-304/icons/x16/lifebuoy_arrow.png b/interface/web/themes/default-304/icons/x16/lifebuoy_arrow.png deleted file mode 100644 index ab33a2deb2ae3134df17174fa1dd9106e70019e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmV+r1MmEaP)d)QeALPPCEQBmX!E8X$~92z`ikVOYw-@pq2cYnoT*j_6sp+jL| z_G+n=)Fmd8C#={JC--q^@Q^_koxp%-ES&3HP^s3w8;$gpOyW}FN zIJAow+B^j}r)Zb)8jnuk2=O*KX`Dz%m|4xsqfV#OZ8Dk4G#ZUOFaQos+x>ad;-WOG zc5MBM-Y^h&h|1nHl5sC2WRQIp=jZ3C%jI%UD-@1rLZRJ|-SG9K`SH5S@?rCc`4P?O zpQFu-lq%|<&lc2Gn0+r&ubxD+i%BICNrla3TUya*D9_I7t*oS{@6OW31xoX$Db1ex zi_0^V%FTn0Kd-X?*OFR-f<_0#;-yK2;>XAI^q&RVh8?B;_Ris4%jUtXW6+4fJer<4kHo$qtY z)E(&Jsscvh{CDE}JGWgTvU4YhBy1On1;C-DoHzCCRo`%Ei%+2(hwd*S9KDe!^_TVl O0000P)Ngeo~^YA?X-~YVlJ?B7I6#&ywrd%ck zQwmcwlRz&cJQUWxUW(6?>tp_d`P#bpNCuqa63Ok=P||4Skq#8r*uxom(CZI@1Gq&6 zTCG;R5gy*Qqfl`BDwUnq*LzS{V-IKOL9agq3&mg-iNwLs&`{a#?ymWFWhHgx=2Dwd z=@r)4!x?(eiwv?DkTS-WW(f^#cez|^dwY9yczAfdOCT^d1q5&?tg(kP^q?0RWHBIm zGLcl<($Z%4OG~}5P$(>6+ar0%PAIIghcon`7a3$RKwvmRn(X=c4p&|t)d_{hsHi9j z_+VcEU=L^LK`%1MVgPT3M_xLLi#>MstbIX2TwX*3Tw#z_LSU-@Kv|!v`A$pCIf`Cn zko5*k@JP>APL9V}SV#whgSjfP81BTy!KjkJq|U3L>4AV&r|H4|vL=ph=4X45@dpUr zhmh7)g~Iuxpny&#BpBs#xgwyI$gM)yp4?i5u$Yx zQ0rr3mmHay)MBx$7ZnwiWMpJWFktjD;SYBNb=$4AZq}ntlZuYr3U}yEL9KriQ#xgk z_B=4~4LjCWR#vFhYF(d`N{t`G!no1Xhm5mrNk6wOm6YYtjm3PbZ$4q~uOT=6uTjyN z1(9qh7Kub{T-C%wL&IU{@5~{a3-30)H7qijo~mK`*?nmE10TBBkHT459{>OV07*qo IM6N<$f)Qnf+W-In diff --git a/interface/web/themes/default-304/icons/x16/lifebuoy_minus.png b/interface/web/themes/default-304/icons/x16/lifebuoy_minus.png deleted file mode 100644 index 7af080733fbf5270fa79088da28885084ba6fd90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcmV;-0yF)IP)| zUr1A77{=dkY)f66!U2^$UCfKkIS<|qVqPp9-3@l(C@&n|xQU{Ipb!&We=aJJZWNgm z6ou18gfl`RW<)5F!YXg7fuh?&glU~xI9I3d8E0ZNc*eu?KELUIOD?>SlEqEH5vQ=JWa8KVxHx90(|Tot-7Y zBf|_Gbishd0_Q6KX=$VJu`J6wM@L6WB9X|>3qoo}r%OWc$S^|(T`*v=!1}J0UEg!N zKOB#YlweU5hxqN0ruY{Gj|?+(&;|0bvpQ9FulZmQ!KvY5^0(Re(* zyYKTUGCylR6e=lJTdVx?`~Op+6)t|hZ$|$ZKBuYb5R49m<-f(!A@;g+vrNfPLq?Bv^d3R6@o{G89Kac0|ORU y)o^qE^y@r5OfCLPWUe|x4G=uC)2}lauzvwZSfs{oLXa+$dF zTq-WJs#tG8D8wGJdCcx-8D#KNJjnBXx(hR(9Z^5>^O{cq#x+311~0)4Sm zTDrAXS;>YI6FtpJCApcEMMgOY!DEJOs=S;H<>hTNyPXYC`YL(}FO%rw8Ix&ky`qAB z)M&g$qfuK>P(a)qhTt)KZII1AFDhc;aG2Fg(|&aCBl*!obZN=0iOkHY)#762^Z5c* zRaG@+vso)HfN#8Z(&6qu9SH{-SglI6?8ufp5D!t`YaqGLB$6TinVX)TW`4gv@KvYt zj;Ew}p!er8W<~hXZB3-}kT4ELyp5*b5|Yk;NU2aL>Rm3^{F2$sg8V!}jg4%za`c3n| zT}V@59LC>wOtXEd3~}k{Vg)lj8zREMW}qnDgf+s0d0}{wQxug14N=mH=mVvji6{j{ zp}B}~K`4ZVh!QERuZwCl(M^%TW}O;3t+)3XXHqnH#>4Y}e*d%g>>M)DM+jFAmy65E z<>1QWGA@=;6$Gzj4yEH#n15ik=eC&5fpT9Vy|SXG!yy$NgW!>2h7P*PC1fAI-%mUq zk7Xl0{o!|~)3@8-A7O)odk{P_%+NtMxdg^JRZp`qn4X^Qip64Uzk7R`>~gWq+S-KR zkzs}ox?sR!fn$OHw4h%9NS5W*ot+&vGc&V3VKn+jQ&M~oJTlDCK^F{IEXaFPNUv^I zR=(Tq>`cIdAhh$_V;kaM5Ii!>&_NdrSS&Dp(9zLIQ&UuKY-CRwY0D) zjmFn!v5;#81>_|MA$Vk%p@S}%Eq$=!bZ-45MZHDX#Kt2?w>ape9-BZtcdueByRIKm=t!goEsV6v?H0H zi{1LM#Dg?mPqO)iEM~L0%j@;7g(Zo}{H(E_o`i}9kFfHMv;RrwPWSIW%F4fG8Bwce zCk0_`*>3;&rJ~{&bfzgcZtl*EAG)NMt*a*(889r-0mHKWmS&DfWh56%3|exmL?or% zrR3a*NZjs&Wx)Ud diff --git a/interface/web/themes/default-304/icons/x16/light_bulb.png b/interface/web/themes/default-304/icons/x16/light_bulb.png deleted file mode 100644 index ff6feafc907b8b69bab4173d9977ee0e7faa87e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 660 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 Y7co^N^|v~Qa{vGU07*qoM6N<$f~s#l`v3p{ diff --git a/interface/web/themes/default-304/icons/x16/light_bulb_small.png b/interface/web/themes/default-304/icons/x16/light_bulb_small.png deleted file mode 100644 index df440bcc74bf5ca510ce80d6a322722cc2fa0223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmVr1|mV`YTtj2H&2L!%#<(0aNlB;`VPfTLRL2Y)|NlmSl!hk__lfV^E!3 zF53R$MgRSYr4pSD@eFDt8344A0jLRRz@+;i8i+}Yh0xGY1|1!pv{kEC{paT9p2EOD xrUB>AUnbuGZ6IJ|WIP1aYeBLB!yqq^f&u3xz442_FmC_=002ovPDHLkV1gu=Yh(Zb diff --git a/interface/web/themes/default-304/icons/x16/light_bulb_small_off.png b/interface/web/themes/default-304/icons/x16/light_bulb_small_off.png deleted file mode 100644 index d28c98ee6d56b57059a411d12b5c243e48dea6d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmVrV1*PnbkGJE}zrk0i# zKavdS?(R+lX+C=6&F&RPA8*LZ%S$84fYQ=Zzey|hwy!+;X#J8+2fJfpVn}mAa&oe4 zZb5O@h5H}&W#;5%hlPd7l4L+cLb@eok21<3{sgS>D1Yr zo9>S;%eFP$R&%rFC?c|%xrVxMv*|)D_V)aiI|T2#^uPz+_l4*C;|Gi}_#b~=f;PH}I+-MS|aqnslOd zVJ&`_t<5XguS5-7h}CA7iJSubU+|g`d?q~j*1gZYnrvpv(QE9-yo$wVsu!PiN?hWy zvs-`>L!Q8h0b$gD_vRuuqKjXyveegGEH_<{C17qA!16%Y?>3bLro$)Mbof-p zZ7c~6Jj6@(HiRMVAKbv;BY^@asth@HeV+Spn0YO-cXYpPZ9%lPB8aN4=Lz)GLsoAC zbj*Zzr-DPpQ*^HHYlK1yWEc0AB8bBc=X7Ct>^FyffdMF)Po@AIC${~bU?_#dLd+QxhW z_;%L#4=$barj#F0M^y;xA7g&bsowmq{cAVAH^WhJi`LjtmUyC%9+_|m*RWVar|tP{?w~?4U|;GCL~vAA->EFF^|U} zJm;-A@Vs0CEyWyYmE2*2Cd4xCIEmwqQ|pGt5NmrWyBb$IrKHO|t+Gu69c3H^m>|Wj z+dt<1a1;l$q3>wEou)`-bct8G5QQ~bF)I5jQ2z+L8Wd1D;W)Tp?Ft^fB!A$H$Z-tP zkNJS)2433a#DWP#VLo(!NG1xX9)ciLQ|MfP<4eN~)l%$+-qczGBx(f&vJN5p*@ zMqU&+dkmmF7cMqD@gJ;^v$l*B2oAa4r3}8-$qR%ph^}w7O(6gf`3kpiI zL3iN<#LyfhoRL7XHBee>3+qD+l+_JxPg2V$0viK+DPWC@f<)SfkpsdR2_-xIV$;k0 l&z0C{P1+Kk0NbLZ@EZ(LKnwMX(Ifx>002ovPDHLkV1ls6Mw9>m diff --git a/interface/web/themes/default-304/icons/x16/lightning__exclamation.png b/interface/web/themes/default-304/icons/x16/lightning__exclamation.png deleted file mode 100644 index 52b49c7d8e2f87853ae63c5aebad277a7a81314b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmV;*0yX`KP)DO!lHp%!LR1DZDZm~kF9bLaPJA(DsO<}} z)EuBBsNq9$E4DTBc6b)R5P-<8hVBIj2}p?+cX4x*PDDxGN`b>bJd;mOzZsqbFr-lx zkrK$W9pBf15C8#s%c{?XvZ)17&52}6rY6HTKNfj#P196lx6^$7kRb|z8oSfq>M5$I zvQqQVY$aHjy8Yhg1pwUHv#{Pnw;%-i%B#DMD8-2GsDP3TEuFV|2ndq#PjWRnz9~fh zfe?Q*WbYlkdZs$7$PC) z(kMFIZVcAe2dPFAaG7?s{(WMlIMB*mu2PRT(A6j;y14+jC;&*Q04OM>TD(3_nZusO zN_2LfW!I8{nzPP}m!F`tqWzc@q+f98f)@ZX841f$U`)07%cy@jx)|MD|MAmT-kgI- zdq+n{kVcaM-cr4IU4zCZ;g{@;WxG&oD}Y zM>)p@#z6J~MqdMrp-n1cL}u1zOp`oynxzfUR{S=)fu7zGxb!qk)AAb*^91K;-3NFc zMsdzU$5xyr#=`0@W9TohEDAYk45qP-?ado7jcu4l2Ei(CJ!2Tq3qH&Tp#AX}M&3;! wQ(vRBc;f3ap;)4T0=XwCfg%J7fT9$+-@q3p&RB{>M*si-07*qoM6N<$f?AhAb^rhX diff --git a/interface/web/themes/default-304/icons/x16/lightning__minus.png b/interface/web/themes/default-304/icons/x16/lightning__minus.png deleted file mode 100644 index f5d04caf25c843ac2adef4a993a73fa97bd716e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmV-}0(||6P)ZKlnF09#l5Ft&ZIlIi; zbeqm?-pXuS^D9suCMDZp6<~hSZJ`7=7iq@-S-#;P$&u5H@%;F zvxg7a6t8H1#ZrKn9{g*-SOqDq)zB~z+!FUa$Qh$`m2o5J=(0ak3qY+TpuYiv!mP>i zyl|`y)4H+oEM#lx^4H>Go=Kcb0!I%3)Rn>U)?3S-)t6)E#S+NL-vDr(UQ*HJOyXP; zpx>&RQn-0r4fbP)U^ngM;*4aI6=XTdBJ3pnsl-G^U_AwVdw0SKT5ltp#TikM)jvZb dA`_SQlOLMg3V2VZm}LL}002ovPDHLkV1h6GG5`Po diff --git a/interface/web/themes/default-304/icons/x16/lightning__pencil.png b/interface/web/themes/default-304/icons/x16/lightning__pencil.png deleted file mode 100644 index e9eb9c9b6c90cbbf29c3eb09ef9b39160a42e8f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 zcmV;j0!{siP))lN7P~00i_${8SXofBo1kkWp%S_f)D$Bu$OGc}*qqJ7 z)||(*IS&&Fr`f=uG*q-z3Tg*!X5rKGEjMQ_ANa%jy}a-5gO3je5Thm#_2pq6^1*e(}P2@n$_m1f!Pc2X!537sm8 z95i6;#K^@#S~1YtaxJGJ`q@egpYj$vt0i6L20`uu$^gLM-~YHwCQGq@Orpj@Y%|xR zetDsEeswO5R%cV`_d*uU+p-;(IXMHc3GnmtgV=LEXY*6hBqALu-}%|GJG3;DNIzyX zXl^?5ONUBg5-)ev2+&*S0XQG!0}m4+y7WFyiilY!qYtCk$u^$;^;x0NXH*OFZViGn z7hrmd?j2~U*gdQ(K12>gA4;8-*vi6Fu6X!6~bPrmPp%dK!W(&1HC_wF3Fv-#h{>c`2Qf-0P%hz4|ZM;@#a=wgZMhqHtpdiZdD{~zc7-ChnLBK!~0!P89y zyVxGm_7A`j1>SWMp1X@&m>Rq2#`P}TS~F2Ch#P$v3RZ;snDz5w{{8?16Zt zi387d60p`V(5Yn(J1t4>nelTtGk$){*_Pz#sV8~#qLyO$=XQbK28IR*CwI)Ye|q+F zIu3U#KhpEV8x2tej0*N<=q_?k(8vEBFqH$ZwF30M@q^2r7l~7JE>EtLH`13`&b5Uc z6lSQ8(~1JdV&Et(Rnn37_B{bQ8y=NOW1upYJr&HvNZei&xO5soR|r>ID`lfkHKhA~ zE+ig0D+MT)YoSQaa#DQhD9rp`^ko6;uFi+DS~b`*GvF9KE4UpMLq$PBv{yNujG&Gl zg+jV2l0#%*9}Rd;9D(a}PN5EPJ4#8#!)2Kc@?>7PBCCbt^q*zygg+*N86T871H=FT N002ovPDHLkV1kM}H$nga diff --git a/interface/web/themes/default-304/icons/x16/lightning_disable.png b/interface/web/themes/default-304/icons/x16/lightning_disable.png deleted file mode 100644 index 94e24a0bc71117e205fe220ad9173f07dae7a475..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmV+^0@nSBP)|e;|^Q2HHJZrbxzfpez2jFlt8eN7$AsUazCAnOV6pKZ+AeBmybUJ-D7z{2p z!*7Pe;f2%bq>)HOl1wJa7N#JPNbF*Rak*Tcpnf4d9X-l`Er>>=AA7ytCGrp8-G;Z| zXf~UD#|;dzSnN4q3p5%Hy$O0MpqS6+C)sS44~N4CSVC?S5QD)$TrSrhwsGj~FBXeK z9G3I@{qF;T00{HH zheM0&e{Qu}=g5D!-R`>(tOwFq_Q+kL`B*b*IxgL$0w{EMku1h)gCUH-jlq zDwV`!GQG4~tvsdlO08BuluD(96-)tQ2is2ddi}LZrP@RNK8<}`3+0Og{eOxo0qef=Q00000NkvXXu0mjfdII!r diff --git a/interface/web/themes/default-304/icons/x16/lightning_small.png b/interface/web/themes/default-304/icons/x16/lightning_small.png deleted file mode 100644 index df0a425d5ec039f637315c3694da47c45fcde99c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)cJ_?bN}D9{Rd&7=6yiy zOq2nKRxaJt1{1^j>5SS3RtcVb zf6wjzrdf=;H_v8t0vbY`7nb!iFszu!5VL2w@Wqvr7!IzQ%-{?(gn?)S7IZRz@FXBU zwy=xA6=( zvJEptg^zYzUaQfRMHPpLTdW5y1myP)1)d}iZGC%vL8L&D`& zey8Rrc=r$<-QJTXrfswm+{uqYSx{8iI$)IoNbKe#Wl{t&MZegB%>_~OTSU!mv0-NP zspeD98tDOq-DwE#Q_~4pXSt$YWW9okFIYI5{RUP5Qi`yW)7KoAQKaZww`IJF>|A>O z{%VUntb|VXn+YC|dM3Z70>~p%%=oZ$t53A`W8uDP@&6PtMj9Z+jACv_(aXmLnrvAb z>qn8pvktzJ5<}_(0V=0i2sfdx=7|=r1ng5Be{Uf-iEqCIM(VnK)Eh$|(P#GRI&Q2& zP!xW4qFDm02<1!pJ{Xnu0^#&G^ zW5#z;xZOS-P5dl#)_ZCp`aRTc3t+3b?C`3}mJN&TGd6xTd?}M0?9+ZwaqF(~Ox#zT zQ+Xv*KmERJ=b{iG8ZtJL0n}lmUQK&ZWFj(l^O}e)XTz7{G=>Fi8|uDm>XdCRT888C z_mmL6yWNqzX`r0@&0&Nph)$tTH0}x>s*6jmCt455LZc%?qhDlZ^Z4ik)PG&%GIBS7 zay>2ee(j4J2XdnX4}dlcJ6xmSdXqEAT#T{>>1KfA&cX2qpj+p&D2pn}bTqVE3 z37S0{6Z36^e8`l}&L}kMD{+{`Hx|T3z>6d}fVado?hGyPcUc$T<^BX{`b%7#JU=r=Fs?QRyAsunx;_Z?RY;V(uB??^Rb*R7AO zQXn2zuxB~Shri5sT9-6zbJJ6vlNc+!EHX zmdQVGvJ`Cv@W?@D4`D8jr8LC#yx4l@ut*J%2v(<`#03ky0YkbFH;p#-k^RxE@Uh7^ zg%a*7BK_)rF#?8hz7%gU#x`Y9)$d4eO#Hcp-VPls^96?_NXOCGhpMbwRBpb|-VT>5 znRaK|WGSbGy_}93YmUGkR_ebm4MPVB!ZOZdvHf%x73onWSV6Rae_>|$ri4#~1m}zl z2{N@XEIm=1V1zExSsabMwabYu&EVcfdQ61!Gx>_T#~4Y|1#%>n91af{&DMQTqRgOb zZ*&lpkw>{)5_1zKah0?~>e+ZUyR<>6&Ui8$+*bD*uLA#{;=GL;XAFhZ*;#&X-vI|* zSNH_jgV4ypk>OgAVv}0y`c?nFe3#Q51`vVX-#s!B9oBYJLC9-y&S27BQUzzZY=ZPW et`q6Ee0W;o$?RN2DyQ3A+H)(LB)n8cGW{>_T-+J} diff --git a/interface/web/themes/default-304/icons/x16/lock.png b/interface/web/themes/default-304/icons/x16/lock.png deleted file mode 100644 index 755dd0b1408d8ab02d7e278d55010016bbbbebbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmV-00?+-4P)PW{lfpDFR*XC z=9p+=9CMCq+5Hsp$u(h*#+uVFuY5P$o1Qcr7sNQ`9M`y~=bWTR8T9P3w8WL(^O71* zh`aBiJ{T_1cdJ-XwL>jX@l>o7T;pFIu8=fx>8D>8c%tPpc=agV?>?)AT6FO+=@Nrni}_jT+#B9QeMbnApi6W>4 zjTk7?3hB1*ptxRR7dMO| y(QYrG5hccsWE|K@Ej*K%r95RDAM%%YChrI6P29GW>9aTh0000LK@pwy%YDF`f{zQ3)LE_TreKX`eb_kI4)M*!%5p#FTxUknrq zbhAX*G+H8PL@GjPxW>K3`%45zfw0+Cxvp{cQSmFEL;a4!XRdK?NkFGYvY5iD2fDX? z#w}0E(^(CN&s^i);(fAfgv+0i%7?q|f|GuODscY1OKx)y?NofZ}t z73s|rsQLiA{A@@IOBU<1<}fm(i2>sLd^jK65vVGLvbzIWa zpk&=mD%PQwlbg?VS!{rNcCDmQ3^*Dtz=Rna=3g}7^MnN-yp@=~ugAo71%g8gOuH1A zb1N_($b=YB9X7z-sf71x4t(|_@b@0Wc#j&R%`&)JWpLYM@OQ}&98CLnK%@p`_I_k{ zcu`uZ8a!##kXC<~$XO&TApXBGQUkg5F05~Woi+Dnq~>7827{02qEhk`L%0T-3pVVj zbz-mCiNxGSq<2rE`ZXXPdlJr!XHeWKM!H=KRE2A>yFGyNmq4Z;NFDpliKoE&f;%4K z-`eGj4oX=o-gn^Z)D?UYTYL&w@Nvw9L#8?;>1^0mWW(0HW=JnhBE<`=Ry#Z^Qz|m} z{R)xzq&R9z+erOcQfkreVCHf;J8#KkZSn*f5gF#JkyXvb-v(k+YiE}wD)U0O6eAML qi$o$ixxOVTx#4ltc70ChCgwZ37V~0h)ZP660000?0QNyrEDl%64pDb#em*~L9Ui|An>#PHt0bu_FYmHO>LZ2X5 zSBmg5rHB~G%?)B`MxOKjra^nW@b1ZSD||PSJU`wZwM>wv8F`xmYGM>;670_s7g{op zPHN8a9D+2>$aCIjO=|I*qDY0fZy&h+U3+oslRKfD5u|BG9_=*53f8y*Gp7m%CQ0*E z!LrZu@)?5~+A!Wy5W!hSunds;l`#(F(N{Z?1?#-_lRpC@4N2l|`dL<0dqvUZhx2+} zB(F{jVuPgf!nmHiCbd#11EO68+``f$e4Eo@&8o%w(JUkjy2BmI zLw=9}*)9VHYr-*F7lHAnORzLw#`A_Kn2J<*S{jJq#=ZEsSbz!rei&0l?msoKKK94_ zhzjd#wOAMrM0bv8?n;yQMZ!9ggai5inXVh0L2s2OR&5%nR4S~#O+`Y3;I^v-GwKku5$=X<_S)#z5;qyqP|U z*-0-)13G6Xz0qB_y-V!v!T*VmiGf!)&jNw7<2>x0000< KMNUMnLSTZCKsfXO diff --git a/interface/web/themes/default-304/icons/x16/lock__minus.png b/interface/web/themes/default-304/icons/x16/lock__minus.png deleted file mode 100644 index 1326f4c3bcb74c9807f3e5db28d14b1ca93e307b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597 zcmV-b0;>IqP)7C|@FSEC{QCk>kYH74|!&zo& zO-rY1BjTf!13e%RnfAYI)|GeR|djv6DbB{Hi=|7^sE^hvF3Lu?b6`jYzB>Z)s30wUVNT*;r)0MQg>@HeM>_ktRWTC@G-7o zX37j{&@!t*yw{5H8)caAAHd|`Aw2FcN3_F$Sf>H;ZUZL!3`pEIvEZC{1p%0h(ng&1C=L(c+A$>j$?+$BB*Lx znlt$lTrOIKFPfHvTbghPTDDNozEaVNcRqYeUd30L;?tB1A09O#5wXIzLyuOy4sEM- z@RaCKHJ{!(<+7O*$g@~dvbmVLOzS9MDW!{!t>S#WQCx7DMVE0cjY=ZS&J0^tkehch jyHp@q%0cD`?-cw1{~6eE*@pVP00000NkvXXu0mjf8^aq9 diff --git a/interface/web/themes/default-304/icons/x16/lock__pencil.png b/interface/web/themes/default-304/icons/x16/lock__pencil.png deleted file mode 100644 index 1e6581d84e5a9b60d39ed75ae38d4dc8ec83af51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 661 zcmV;G0&4wuc7z;E`&w0~GT|xA~kN0r?=l_4s^8yjU{{a2D(gp_d zWf-=|2Rs%zTTr$}HuqTDJin#k%99UzDAbY*^IxaJ;fTLL<>rOo6oJT92; zD?jwS^f=ZqTyu}L-)9F8i-2CU{EG&Y#N1l&U;b`Q54&G^5`p2Gd#v$H_eB|=MM~gD z1Q@v_D|iIX92u%lVe3n`nXCrvtIt3vNfQC0el?U!tSL7a$?#T~HwT#9g>uyu9dvYE zknD9vylXe1qc{ZuT;DX{0BgNw$tD7_LIqr<5AC$_+D>0*th6* z9Jy})yt%C`g8UsvsNg782^6n#)Y}ox#9%XhcF^iV8+{X7EKghM{a6k?XxXipyJ~jP ztUHlbUl@sJ*|UCBg1vE3(2^Dn{e~E5G;8pBX$sz`HQ@v;&r)d?E}e~sr>Xm3h>70= vb?jO5LbzZjFA@SWBw>GYEGC7}*c1K(f-c?VRMdU;00000NkvXXu0mjfwI(gq diff --git a/interface/web/themes/default-304/icons/x16/lock__plus.png b/interface/web/themes/default-304/icons/x16/lock__plus.png deleted file mode 100644 index 351141a82640ac9f490b4740175ff6b52de7769a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmV-^0)hRBP)mcx(TYOM_TecxXt1p`i%n78+mr&r{$#VVP_cwf@#IT1=+)^45oXS>^S6P~TQ6R@cogo8oE7YS z61!(Nvf*Ye1gXAeV3VY|&4P^^oZif!9haTBwq(a|3l?0N?ZD`hW?Xon$3?FmqX9jx z2KBf$Uyj_MYg2=uOTyW^6&QA(!nv_C_;S>Q{(cPxhBO#-YH)5ugNswT)CTDi9G@z} zLeCy7xtTTR%aEG6W`tmG=2ZAh$#f4qYCM z8;W7Te286b)v_K-Idf?D!3@VoD68bFSxY&nsFufQC$S51&JGHa7Ncwcq%E)F_xg_f Y7ZAwWaJLF{6951J07*qoM6N<$f?NA1RR910 diff --git a/interface/web/themes/default-304/icons/x16/lock_disable.png b/interface/web/themes/default-304/icons/x16/lock_disable.png deleted file mode 100644 index 7d7881599425646001d03024fe5c8a44306f557c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmV;>0WbcEP)=^UzW?I3{XQu?_`5ot#(Xsv)Mcqi^ZU#C;@;P8hXcmYBU-q&1RGG`8@d8 zZnqDrs(x~q0BUIH!2_?z;l3u*=@jErEEd!Gac()N!w68bc8?xB@QU1_;5!Dmq33eB zFRbZw+FY%*=)rr~U^pBKaEiqEY>?m;IqQq!v{b*}e;TEW9T`U$-r_<4_+G@2@ z;XV9?dc7{d1YYLO1~0rKN2O9pptoABRJB@-a6{qxc`z6}mdj<$s?Fzf8D5d2Y&I*v z1Rmzf1`oUakw|D(t=H?l!HW#C=I3-eDH@Gp z0ylGGgBxCC#COJA`u+Z3C=}9v1H8!Wv*cjTnTtPyjN=H7fyoIF4P0000BnPFx+BM659@oFdru^F~kGZSaP`ZBN~tLJ1gGV~{a4O_h=kBMjl zGPhMRPX=k4m(94mC4%83h`ltQX&KOf0%8p4`S)VU|8F;^{(pVC~ diff --git a/interface/web/themes/default-304/icons/x16/lock_unlock.png b/interface/web/themes/default-304/icons/x16/lock_unlock.png deleted file mode 100644 index 3cd7b7b2986a92e889c55474f49c162444e57496..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmV-F0>J%=P)33 ztytQ^Khwot$_xHsl0wKNh-UvJL?O^PopW&`!D#3YKHS4O_xIt;xfc)-b^^S)At6c( zS4kKsSD>#{F`p@3S4tSGmD$l+=^}1z;Nl+7{woMq$P=;VL!I9ysz1iV&aVvD+~e7n zg2z`C=yj#3Ouln}?)RL0-*`^6Fz-HO_+#i_$j90cSFOKxQ6Q=G~{>r&fh2dR2Bqm z$6=r_2OgB=io1XN7a372mnDVsmfhGwdMhh?h;mUDf%&X63w;o}Um#1Y$TIU1wKCH# zYB{r2^Fmr8Wz*O~_n%Hn-Ml1it8d2qRW}_|Fhbhs#*Fb;owNzYJn}IeUB2bh8An3JWnu^Z&xNy)7cBiF&?y!Ve%+}?PizDn z;}hsg+>91~f^ohW2ALQ&JVJ{~jme2gyjZ&q4Wa<#ibZ2SL4iO}Y)ak)i+m1-YM-$# zbfSI10yMDWT81G+hN0#bjI_N$jW7U@LV}RW=RfiZ&Jro_u3YZ6ZBwB;A`D|)CX8D9 zz~x_pH7_4dvjyL*9GW7PXbcqMbfEZ$hG@M{aGnjtQ6lZbRnf4hBGD5r$KaVW7&SJ* z!CtoKUqqWC37_wJ1zK*kLYo&P;x&iQ*Qqb@#yHr^uRzHAmavy4!U|r&s`d8XHRuMO-%69 zk&%rm(f!jz`v5X-aOj|`cl6Aq^-&q!4mn@J6 z1&0p0dPfgj)Y{P_tm1LLDOn&73Jx7~^^WejsGo=P{C#kcZ%G!&gMvc`UA?1HsbrJO z<*My=o14vLmVBj9C=e(Xi#FM8_KZ@B7ZzH5p2FcUWilB`Bof;XSe8{!r_*GbrtM`w z$z-ysACO#6rBb%He}-Y8SnqT?ytuf+u~_VKC=??7gO5g|wqIKM$dO2-&xeJ0Fc_@) z{r=m5K;VwZn%wpayM>*?koakjj|;o(KXAexVOZEJ#GKm>$KzY0jvIEm@Wx-xtRZ9y SuFc*6000042hBe>zx4it*vw%ot zVd?ztj2}=ADinjCD(s=(4d-#e<%)2naR3iBkK*ChG0dy#U95Z(#Ew}+DhuO{Nhf%z z%-p9hzAD@r{OPI1k7Z>`cXD&*s#8(|*51J4%^!#--ypCvF-?)R(r0Q(ZnMjR17RGUBt_g=0lUc#-r4 zy3q*i-R1z+d^@dtkTQBUmgJcOVczpKlaNU$$DUz}RfI2n7WNr-cwWG~{35gG!|Wv)K%K zy?%MXU@&-0CKD)?%7{+|$jQlZM+ZoIj7DR`k330|IOv(5pU2_h3Djsbmy(l{|C_R} zR;wfa$jBQ^OG{hfs|a0EQc`U~LPASoV&Zi&Yw5P0SVN=|TJo#od>yfx2P9dnCDsuc nghsxtl70TGTJ|`@S@xxWy(&!Ysf%ya00000NkvXXu0mjfIW9{f diff --git a/interface/web/themes/default-304/icons/x16/magnet__exclamation.png b/interface/web/themes/default-304/icons/x16/magnet__exclamation.png deleted file mode 100644 index 723c3b861fdb7fcce8b8bc6a7db1bb6680b144c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmV+e1N{7nP)U(!d7s8Qd+wCOaryibXF4~-(Ocy6^T)Tl&c0Sz zQ(rri6Tta*fuf$V`k^HK?0jxEeoskR#hRzX$yZ6Z=xoNJ_NZBN3)7q17;vBlmZ_y{ zzug;doz61gU_!!DX>jmVhKGm6pz!E_UZ`{~e7%N=iHSHjTCmttx~}tGGm{YjRj^9U zcxI~OQ(PRD2L?{11KcxJd!#ug%a+-!;)H3$6j+IRe9i1B7k%)+h6M`UM zd%JOs2TxB=&}cLe5D>7sK&@71g@%TLLZJ{n4M0#(Q2NRO%2^>HA)*%_xm?a0vurjS zc66A~+uQrBo0}V~JluPEd5ONWvlo?0j^*d z8UJ||u|fQR6gCn5#Ad=1klov~4cz$|<{07@;N+grln%=;$JZq!_j=vd54<6p9 zxeZ>1Lj0_|i=TQr{-E>|yaQ^QXp+h(3lH(c*SmME{3sUq)6h`!USHqpNPBxtC~4a7 zUl_7d!U#P;*`U09{7B>d;2=--_O9lMZXG4sAzUJQegh*DZa3fA?rn|}t&gERE-$!` zvO)FhiQ(qrzyM#=wAv{YF+zf9xrrwk$zp&6Dz#9b^ErNzO!8UiGyjS@qU9#u((qyZ z>C(9^19w}f57~pf(BIFa(10u`@gyTzvquvx)W`GzeiaTg{<8vPL5U|B$(lX=83t;3 z|2|fM0AGOyWI>518OfSGy4gZ~+neMsot=CY8juAgo@69z_9&Cd=p+(}e63dFN@ane z&!AOmZD1?#!ymEu0nnlUfFZg-59kIy`{<*i=B>oKz8YkvVXCnl?(y-VT%0000< KMNUMnLSTZmJt?~Y diff --git a/interface/web/themes/default-304/icons/x16/magnet__pencil.png b/interface/web/themes/default-304/icons/x16/magnet__pencil.png deleted file mode 100644 index 83894aff6dc3bf5a6830b4df311e2ed95460bd4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x127P)NklITgNE2_o$zV5)(>Y)JTKd8d9?tVT=Y9G3;2r=d+$V+s)DHp5 z2_G>Vf^|82&Dq(|m!59>CdA`8Asnz}LHq+DhF;pOOKXj1H#Ryh1{u~oWA8#%mc2eN z?-F{wI3~o*{|nTELJTe(cdo5B)#DGBYZE-1uidxan40<~5C~wg!EmD=pcs5qW(Meq zFY>aNRy{TNp{y*}la{tz6%*rUSkJo)g3qrdVPLft9R|aQR;#u2QV;sW_!g@xHr|$$ z;N6szWjDapQveAqX(FM+E(RaAZVzyIs3rb)ccK_Orcyy4FX#<3`?a<*I9F7J%_^0@ zj>|W#RCqMj7DrD?fSa_styZiFbm)rdz|5{ z(u2-0()WBDeu|63%cKcNBI@h{So4fM&Tv-gfz#=f$<57m`~7|#9-czd=L-u9fhjF5 zmC4D;IU`9Dj*ri7@-7!M(b1qB_H{a)>`zX<#@N`{O}>UOMny%{L_|b*BO@cPkXb{s zL_$mKAmYid+Tt6Do$>`Cv5PPey9s@0wk_oITXiAN5X!Qz`U9JGK-qF2~DO^Jy2&v_?#`5K5_+6gDX;3n^+|iq_R43#<%+P$)=hu!w~# z*Q59#NI?w@;t#dx1}1@838F81GvwFrcRbs09r(bP-}l0KI0uFSAj1nH0bqIw&_=|F zqzdacZCs8*qF4|S7?A;Ogi0veT8Aox3WRY(y65$gkf1g z%=X`aDX!7Pza9?GFZP_nU+wK#j@|L$wjnoGJShKraG?X&MXevGEFfx)K#a=FGkV3h zJGM{%4tL|1*4C9rm6fxdMq`R`-Y#C=^QRT_fg!Vir&LynO?4ele{5;Nh}%6I0=Rbq zU?bx`TJUO9uXTBIp98ndG+;?@;UWwa2^cJjK$OZV$searu1q#H;Z;dWouwj;0K=MZ z6<12p@v{o;VPo3RUkEe;@EEd)Z=rU4U0;tENS|LVDzN5T^C1UTb(P}IChfwJt?QwA zp8?<@WD%d*4&a2(hdrbT$V0Hl8O~;Ua6gCm9N3Rgwu3sZ>sR5J8r1(?-kH-_r43G|2 zS63^(@<@`z!SLMN9FC1mqAbf74Fu}tr(Un`)@rpkbvoTG zGP~(kPSD>1^tFJU{LVbzNo?Q&Nfo7pgD4|p^;V$z{H`|D;|yonm;M2ga4TiDf|(Wo O0000Exh`f{6YFNB@F< z!No1BIN0-sdrA<@g$FL@ecqFBX*?d2Fr7|mKA#5`i-o}y7)yb>feenfLq`jOv)Qb) zTCIM!+iiZo-+uz!F+&FD)PlfdGAXUs>(b$HNHeJ;(#YVz{a-K~4qZm0k+EDZe^`8T z94FQ9_rFcktOMLJLk0(~^k^^`2!+jN^Tm?U>-F;GayiF@6gkY0!GSA1;y|!=yWKlW z54BpYu8O1xVTKG2T37jsW4AiTf;w!+|S3YPZ{h ztzJ9kvmgcsuJowYY6%dYn5fT!C>*%bqh_-yKzL*#J_{mn;7X4gjfP+|AK=si$(8H& zNY{0;EDPWZ_lzbBG);5y{DB4sE;{JCCmaq_wOW-oNI*tWj#`2|0S7KRaxR&>Y&Ki0 zR4O*eWHLp}m@Adv@~j{^T$LlEb9D(qRNSZ;vNPs_x%N0g$^QT;JgZw_d`hVR0000< KMNUMnLSTZ-bsko>_H9;s?nM zJ&lcttjx`yyx7|86zn*T)+!iIka1+5#w5D#*~44a%6ea(9)EVqUV$g6`G`Xi3vUF+ zmbXz(H%>49DEOZH#}B<`gAQIH=97XZ31$~gZr?oV-<5*G*mJ1~8`u&Bq*d4^DQ6rA zVQVvlA2%zxU0_gDT=-^l`ucz3f`XdUCQV8T2nk7H*z_=og*PER-9ITYF_ZP8 ojEoFVOiYYMlCy&5<+}_F!P@Op=hgqe5A-&Jr>mdKI;Vst09tTyzW@LL diff --git a/interface/web/themes/default-304/icons/x16/magnifier.png b/interface/web/themes/default-304/icons/x16/magnifier.png deleted file mode 100644 index 02e7e67f81846ff7dd79d345d918fe1116ea5938..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 622 zcmV-!0+IcRP)!LN=`at3!d9VRKK0X-O*Vk7tDmFf4-NCC1kKA~D=+T>RXP>>Vd= zE{Tp!NCBy1@bvV=hMgzOU)#6)(u)IEAAdRy(+tDco_snneaVK2AaxAR&RB86w$l&R zfDFKe4_CW2vrwY9Z8(2(M_ zYuEqR(9&+7G=1*U$1mOg@k$L1&00Z0L2WrXIR+F1fEu;j+}vw+ z?AY^PR8+K?g@r{6h(m$65{TQOG>9+8$H&KjVgS%~i@?C(wj)Q*{8v;|>H#WJ1!4wV zn2U>xfrEpC0cN{TLPE-fix=CjWKU!t{{R3007*qo IM6N<$f}~v>iU0rr diff --git a/interface/web/themes/default-304/icons/x16/magnifier__arrow.png b/interface/web/themes/default-304/icons/x16/magnifier__arrow.png deleted file mode 100644 index 65cd5c532d7129c8044d313954b7760b06ad39e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)*PA)7Nc}dfcGb?>HhL2B39}jxH1mkw73oTrM|3lAUwQ>YOxt=2o`^%>VrD8uEBee1WhuF)@*~ zBLF_CI0(6EG`8a8lvG_+O~ae%g@84%`e)>Br{6DsIrZcG<%;)ACNniQHWqCOfWegP z?3_C$Qx|5l+4mR>MhZ}XGN3zK-Zxt}i!rxq+{vw;RB?2!%>cMNkD@MCSgkf3AAkHY z44jOSTt%nK2kW5GMntOL*_6f!toLC|YS>eS?k>}4w0fs=0&_TLp26@rI-QPAlyxJa zVQTJy7vtg~j4usrD)nFt`!+%aQx1$t4SOomw-=sQ!eX)R!|-*ePlGg&3=%*bI0_C%DGh^Z7L21*&5nJN+iFyXdB1u+ax$n58nsGy@mgbZp`nOkwCE7S^x{K^I!{3D;Ch9%*@PK$Q$%+I_qq3cqyz^n4r|Y@?(OYX<$*Ux^Vyc*T7cPrgc|q5tL? z35f2l&}g*v4#y%+PtSNn%vopBSg7AfQ3EDQ=XI5Y=A1Iz`|<{MI>gv9CI~?v<_PXV zK3c{6d=Tg6N)5!EN0B}}eFo~>a3`1cdL(#}$%>o+>LPO%4|N=%VGg?eLK-2ZxrTZ^H<}mKMp^pW-b(9_gScF4_ql6=b!_hTYUxRdn pal)A4F0x0VTY!6L)L4ree*@oH%uFu@MTr0a002ovPDHLkV1ixZW%d97 diff --git a/interface/web/themes/default-304/icons/x16/magnifier__minus.png b/interface/web/themes/default-304/icons/x16/magnifier__minus.png deleted file mode 100644 index a6bccdd05a04e836429c68e6710747d0865c826c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 657 zcmV;C0&e|@P)w4hr zd=p)G8%wQ>7s>@Q>6MA@zL&RXj_7n1Ifo|`19ZUuj7HP1XpX4W>PpV~rx*Q&aOo33 z`2FW>kmiV7F0Z6*n15lJ03{4k( zzL6Y{$GggAvn61M^U#q$+fOi=RaaOn@|2Lj1F*Z?YCV2E5D4W2f|{EM9s*L2U_T-E z5e}82>xJD-PN%CY68VyAXgGQg#bYcK#S8}N!6p#ea5!?M=sKbAfj_N%ZZ4B+Y}9#B z)-zBn95v92oh~C>imublHoUK%%jI4}`3$a)Ks|_|7OLSOQ~?Ke(hh6^CLO?ry>I~b r!@m4A5B9)r*abUaJ8aFDS-|)MAxDFl-enuX00000NkvXXu0mjf7EU{> diff --git a/interface/web/themes/default-304/icons/x16/magnifier__pencil.png b/interface/web/themes/default-304/icons/x16/magnifier__pencil.png deleted file mode 100644 index 10a668d4f50db46c5a81516f2dda345ec5a7c164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmV;v0zv(WP)+35R6&s(j?%>shM{c}6^ytmEvrpcB zI|srb_Kp)bmqf=Vq=3{hczSwb!_E`tukG7?>BWJok3SuUX@=ozPd=TPzGTBhkU9ou zXRJ73+vx{uKnCE#2QNL@1X9OfXJ>~E=kL4navw}Fx(k5#?8)12kAl=OSXfwK!>N1D zKiUY@d={Glr*1so0aC|cXlRHHdrqFaV#dBJuMXdT`QtU&kOd*4l zlM{o3g9F&+_Q>1MKd;@sx$$OMdBwT!-@pHNl8{(5pMk** z#Q>m2EjKs!njJg#{1+7!ZDwI%(E{R7Ag;7CV_7<-f$7HgXO;gI6cjpzgoO0wFaQC} z0HEy_fq}toM~u`YZ0UUhUtu3L7J!5G4Atq;&9~W=VvGd z83482Cm|ta!o`bs|Lf@)Oa*E-W@ct)SXs}2p}Dh&!NtRdg#oCB0Sx5id5eH%^AeIDT2`FC_i2tYhGH!_XW^@Iz kxq+Ayh}of+35R6&s(j?%>shM{c}6^ytmEvrpcB zI|srb_Kp)bmqf=Vq=3{hczSwb!_E`tukG7?>BWJok3SuUX@=ozPd=TPzGTBhkU9ou zXRJ73+vx{uKnCE#2QNL@1X9OfXJ>~E=kL4navw}Fx(k5#?8)12kAl=OSXfwK!>N1D zKiUY@d={Glr*1so0aC|cXlRHHdrqFaV#dBJuMXdT`QezTrOP)T?69`6Em2cb6TvV5 zn5g7|h7_+|yZ*n1mUjE3>2sGpe)0Cm+s{9*g&oRxBe6>R9cPvJSwTTTZ8GZ~*=5A|fKv0@R!hUP<5DNn_&<_lJK+MgM!#0~CgY_Ik gF54_1pBac50W!Fd%N+T9`v3p{07*qoM6N<$f{S)H2mk;8 diff --git a/interface/web/themes/default-304/icons/x16/magnifier_left.png b/interface/web/themes/default-304/icons/x16/magnifier_left.png deleted file mode 100644 index 7a8557f4cd64d7b480670b2dc01f5b4ee0bceaa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)cW63U|Ckx+O%jLXzf3WLi zy7($nSQ@WxuA1SN5G^22S$G1J zoOoZ3Qy&5$U>K%z^lg5a-<;eiU@|)wp*{pcU@#b5w}VgaMyE?}KF+U92?O#AUsJu0 z2ZPjyKnQd?otm-QPLEE!8_IoNUKcR8_${6Nz$KhbhtHc#rhW89i^T#~s}<~a`>!i# zwOUZARQqdn^%rjS1RoWO<+1Ye_ZhCV81H@1|Fo{I{#qy$s+i5@GidjQ0Sbizq*7@O z@}qO;GC$H>uT&~8g~O3bW8)cDFa+Q{rKsTO(rI7!A_@E|+vGrxM#fs5rJWE&qSwj-E3CWQX zZ9_ZIF0>cvkRBbtkdrc*>?&UU2+lRt05OvCA)EQ2EqvHkg#RtnpzUZUzmX_@0GO~{ UfG)9LbpQYW07*qoM6N<$f-}7%WB>pF diff --git a/interface/web/themes/default-304/icons/x16/magnifier_medium.png b/interface/web/themes/default-304/icons/x16/magnifier_medium.png deleted file mode 100644 index 7dae0e12239f84486d6f536b136284a3cf3bb60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmV;#0XzPQP) zr%v2{a}*?xVSt5&1st23n+I+=dTl$%0GMVNK5^~wRx>lRWUK}NHG;8`k&$I(L;KXD zH(wun^yb@HnC6!seq8S8oz$j-a^9sI_m02$ z^yBJ-r>_n*wX{ta6BA2PRaNE0Wq>HqC7FBn9RAPA$yvo#xTIn&Mt4? zo6kOBrR@cOIUuuB~6RX3e_)Km$^NuHd({v}CZdvchTr0~Zjmva-4ZaVZeD0dXP_ zJA(K-cI^9aWMq^LG(ZfW0SqiGEN~3e2*yCR5Rk4te*DsZpf?JE21t`?00>L5v9YyY xzy9PuFbqn`F#v=W+1c4URa8`hsGph0#Q@70C363%4hsMP002ovPDHLkV1f#L(9{3` diff --git a/interface/web/themes/default-304/icons/x16/magnifier_small.png b/interface/web/themes/default-304/icons/x16/magnifier_small.png deleted file mode 100644 index 08fdd8c61ccfd8e4b19eb843b2ba7acba2af60dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 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 VulAr^vd;hj002ovPDHLkV1g7_KuiDt diff --git a/interface/web/themes/default-304/icons/x16/magnifier_zoom_out.png b/interface/web/themes/default-304/icons/x16/magnifier_zoom_out.png deleted file mode 100644 index 8cd83545dfd87572956243e2a3872539d660085c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)YCdS*GqHj-X4^wn#Hu}1gBZ+Sx;#{}1~nK&(aYI< zD1svBLUo$5#Mx4(+mz{=(O-?AvqoCb(lJW_3S_c(0|Ut%f8$FZcf z>q*>&*YW<}0owDPB8M-I2vzA zZCzf6**9bLe@%YMm2(2oq{Gnd8^SqMUH_^Sig+6$-IMd9p?E4>2(Ldjhb=gVDz(o_ z$-EzlS#cPinL-QcrRjk{Vi4yLU-P^a%0y0@@kuzGOfSX$m00*4eA*we;T)W z)5SVnV~5@DW_UdQT@Ht{gD*57bqiet2B6)VM`$fqh;pabH8;0(d%Yp1re^PbC=1za zHe#_@h*x{LNZwUmUXDZ}ks%nQ8Kv@I50o{y_&?W5_+Cv}S(y>at?<4FR09F11QlRA z*aS9!HMj$ogJpOC2W$r0z*ev&`_2U$!FsR`tOl#Vifow;SbqTej2*8F`69u6QtR{pfM*K-GVZ+qL3OAS{xmnoLn4S8X8(645TCwK?n`QEH8;a zuh>nmT$QiyJs?~n#Pqx8exDx-1=bCNN0Z4+kUTsn!xe3mRUdp*9-=T$XFqd&1{;J_t+G`eq& z$7~FT{MqU7Z8oba#&&+M!GTLVk%<4>vRIcZf%j&UZ!#HGXU)NZOWtt!pesApgf^woQ{YUFUM6p}v z9@XVaFLDxI7xk^xQsgTY#dK`Xz=2DffxvM^cEsyGYZ{m2gjpbiEF8GB;qjc_<#Jq> z*VW`3&jYe>;L@to>0NWV&K3bKNm~&d!umgPD0kVv@dqGT@c9X^;-dfn002ovPDHLk FV1fpWwk-ev diff --git a/interface/web/themes/default-304/icons/x16/mail__arrow.png b/interface/web/themes/default-304/icons/x16/mail__arrow.png deleted file mode 100644 index 43451749864a8e641910cff2ba40a22234492c77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)8F=lD;$;|J=Vj8SA)*7J{LYGODWc$w7eWdm-Z(!nWR&=U2&oWZ zAtu6DyeQKaYr0p*oO8pbPB!K7JO`yAexV0`Jm>t+|M#B5c?AG*9mKUi&^R!VEh)Vs z*`nTREt_*X@o#q*mmTb-Ls!)H^_7Qqb}-{`AQ%oKc5rYm>|rk*y5gN= z&(5kmuSSQiFf}#349PG0Nqk-A-;E80=5{NN*ZI~J zbgn_=;6ey=MOIbS8@D{2ue+e@aLSY7c{l8Y(c(}%sGmULunTP-Ag6l?kLr5*MMiFJ z^*6g6F8R8;{KqFTjC#?$3_PC)@_zlt{2NGpKdFnP^mNmm%*>jzxR?K7?tby7RgzfP zyZZ2>3r0J@_1(v%twN3jNwOs6B5oJ-YZ*TP<}G7;$&q`xaU<=iNHBJH-ZXUCWSSBU b?W%qV3IojW&~;5x00000NkvXXu0mjfy}C)?!T`<$yK8j%Nn{5kLY{NDHBIfnqyUZ6c6@OWaP zMR4^$X`z9!v1>D-5DFU`_}7PP*ekj@;To=Ghh4feI%=qh zjdVT_yVt8`xmw+k`WklFrEZhydbw6ZadQ*DG8uexyVd0PdbaPe!!C6V4|lIuD#(hK zm}okUuhY|N*00&@kKl7&M11Lmy2cK>)G;{NlM^QS0Bmys+Lz%HHZ?Y$Kd zxASxt5($LF?e#1KC*hyHg8Z^k{C0%ZpaHYCX2>xM*rgLXU7ywCfh?w*5a0Mu3Yc?r zA-329$)|w*MBg)6;4XBF(+FBaS6)Iib85gXc1a$b8>Q#5JJeHrNTf=1QCSL zFwF9m`1!<4pZLM)o(sa`AyRqa$GIQpckbmp9svL{4`l8Fr=gIUviVQU`K1A0(vx8Wg^VNo0ory|Wk z2VLUu`L@N;2s-^fd^VeKn@X{WYbo+GbkHRmUa#YOFaUu*33;p4;3kn^an>F>=n|{P zv(us#EA&~&d!qr5xg11dF?cDL892v1Je%a9gDzQfyLTI+2)rObp;~3##h5LXARLV{ za4tQ=Ty)SSt1j1Gg+A$--h|!7_*$k37f(4nMgC`*4t!`ylQ#vib@0@?kEP)nApKNCt9?QnxYVL%Ae#<+{~Ypa86vH z5hJyxopv@hGc1dl$r*my=<9vn&c*sQ5^sHap5OaCpZ9%xehdJ65A59s7^bHSIhAju zko_{2txcx#8DuC z#qDhopW6$puj5puLPu%oPgd62T64uuJmb$Ij)OsLIh|P8*nr#b7f?=nRI|I?_}$wJ zG&f^XsdTfFrlzk!NrEpFg6I5POqZhL%T)D;!=vjUy& z+Zlh>9>0mEOY!jHLSXZH1(g5Y|Apn*Tu6RB3~g=L+}#DaEVs7yyO-Zi)3y72aPgbu z{Bh1>WiC(1#=$JiEscU4a#^}sUB7Cz!o#QQ;UlhIMkjs+O z(#n*XnGNyC$p6?m(4MqMa*HnUAgdsCIJQnM<12xa!ucSlMWg7(%|3ec3bRJdie>eb o|L%(m+Ruua#&Sh=g*tx26Jj>O*L4#W&Hw-a07*qoM6N<$f@hNzg8%>k diff --git a/interface/web/themes/default-304/icons/x16/mail__plus.png b/interface/web/themes/default-304/icons/x16/mail__plus.png deleted file mode 100644 index 9e7e259dfc19351c2a443991691b243cb5d44d54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmV77{>2}%_+%(nt$LFLsnujq%4nxudGjw^bCsRU0JoW2(KJMT9Jl(GVknbSh{=o3uT(zR*i&V?t%uMT+ z-;bNSJA8JqmJVGRn4WfA-QL3O^TCWpk$8Me32RtOhpzmdnsUU|LFoD#YhJI;SR(N* zFKg(~mG+5=w%Ef1qWAYWxxB=($D@<$m%KisLsyzcN8A6$<1p2e$WbVSrOi#9srKm5 z75m6Y$Cdixxq22kjzqAryNkv3b?l#>YB=W}&ysa?=t}+2P-i3-gJGIDxVX^WW%`0a zxK>v+oO7>cr5S}w6|lRVphH)F_4an1t0(QLo7i3EVK}Vu1_GMo+PYAVX0uNx9lBEG zban^S?dED4fkC4#MiUkjCw4}6!oq|uCMH1QqF5LtexM)~Or=mL;Ufw~0r4Y#4%&&v zs0ArnzS{z=*w)rw+iQ=~7Orsc^Z(vJIuN2>^5m}X`#f*iLc72gO#*XsJRJgC>J-?r zSzs$>q0rkUR1)+}Gun|uE;ZD$eGVMwa=Cx_RBOgv?S#ws8 z@5nFIo!C=oB%iA^qa8Wq<{vo3f0TH7k2Oi-l{Pg#s;JQs_d9RjFiWOHCG$tMI+YS?O0#x&<<|;A0n~(7>=1y zP|GfwOqWvYBJ7ic5Iucd?1a3~ip1yAgC6A@MLa)d+F&HpH*D5Op*l{#_6MHv`6OUEB?U8fw{jy}nveRb+EH zL=!<+tw#9lO%Nw;;0p|p#@E@V3;12*po|=P`)q?;4002ovPDHLk FV1ie`JQx4~ diff --git a/interface/web/themes/default-304/icons/x16/mail_open_document.png b/interface/web/themes/default-304/icons/x16/mail_open_document.png deleted file mode 100644 index c9277d472a810915ac01dc115f22fb2586c9096e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmV-z0+RiSP)v`^&)Xu#7V2%Qu zW6fmkJO4)kKJ0_-LT`PcE9~u2c4voD@4AM%6(tG=CejPaK+~VNu## z7aS+J;<~|bE0a}eWZFU-d@)xl9bK}%PQz1!1P89T+TY(<+21E6p^zsWCN-5hv?RQ? zMy_D6nuP;bT-NJvmw5C%o;*+B=0Lno$qMg0<@Zx8ovvo#z!evJd+*@sr#J*6Jm%{_ zfL?J}W?ViWIp^kRn%}~5JbsXa16QJ>Wg2$K00000NkvXX Hu0mjf2$e7| diff --git a/interface/web/themes/default-304/icons/x16/mail_open_film.png b/interface/web/themes/default-304/icons/x16/mail_open_film.png deleted file mode 100644 index 3174aab5f884639d6872e272835ded7fb54b7da4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmV;n0!jUeP)w*;GlTI1z(JRvkzq!ZRlDE`}6$iYQz$%r(ylK6{9=UC`J1#oZPx#F}&gjrxKA``u zQrI7!7FMejToGGT?y4s}&^I`tt9PQJ&H=5d8|5YkA~vhsbm+2S%g36JT4lV&VgX4? zh+3$8+zm}_2X5AMpw##lMU`zxy;v{Jb}cM~(a3bbY+sO-qD)UXw)8cpW>;v$AeMo?Z;gV-1~O76RG)!@Q8eJ`@KPMOTIZh1zBE*rMu zWJyWZ%=|p2W@j-vF^t2@yFL3t8Q)JwEhQcZft{AOo@3b#_Y}ksVf`T0X%nW>i0EWiL z(dF^L>-Xckw6_xOaYlzO8@3`oCnxvY^fWv^AKncN$nW8aiQlr)VZ&DJOHa@HDxGfY z>x0Yd#pkiHKSGBt8@6I=Lc)bMhXY@vKX@l6{|dTn*ow7bVW)zkq6+^9wnADei479L c{|Fn^FA11@tN+akw*UYD07*qoM6N<$f-rkiGXMYp diff --git a/interface/web/themes/default-304/icons/x16/mail_open_image.png b/interface/web/themes/default-304/icons/x16/mail_open_image.png deleted file mode 100644 index 2ac1a42b1611368061e8e4274c067d033e494d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmV;X0$KfuP)!}cW=^={{BYe^xibN+Q(VuCS_#kPDG?iRTM79)L!*w?W z|2#M?w#?;ZlQ6fblU)~c%^Fi%rjzNW-_GwMAz^#?{T^ijmI(Ystr!Q z8M*AbN_BJfTNrwCCsx+h;Oa}=B@OO@UHa3cqpPeQ%r7rP)6)ua$Yn(h4Y!gzJ6K#= z#A}ZSP333d>OYR)n`4N$PUCCf0zz+3NJlr>?HG2u5ex@G4!P`VUES??GKtvcCc>+$ zD7 z4!JB_p(tJ2*nk)gW8CYN<{&@re(cSVLoPd0TwE65-ADQ5%!ERik3@b8WhhGyx$J08 z&VB3TBtGyRLi{)W4U{E^Ty`)cqu@|xX664tF5@GGlgdf|N61O}4!U)y7K@rtHvj+t M07*qoM6N<$f&=b7i2wiq diff --git a/interface/web/themes/default-304/icons/x16/mail_small.png b/interface/web/themes/default-304/icons/x16/mail_small.png deleted file mode 100644 index 318490b36408923bf4a7b200b38a0cc144cdf78f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ydu{YLo7}w|M>sko>_H9;ta`v z?Mbcqe@{)#++pA$x1RASw|JV&-mA&7^C-bt={C(Bm>)-Dz{=fh4 zFV^D(;&Tci=UjZ}W5i*BcxE=kKdwybP0^Fl*MG>-YEnuV>lv_Rrqx|JUE% z=U?VnGrXaeaNxHq2O$efkOQ7z-k?^6-cG1 z+HBG*U;h)hM-F-Xs<>p|YzAtf(V&}noJzGCb$h)pV2*p_kQW!6IGya!W@Ec1({`JO z@`6B~P>AxC3N<^OA?U?9zef)F58gV9#de!clQ)qdcQi_;S6AeYMEX6i=>5qg30$Gk z?b3$PxHGo*WjIWQYL$d`o7N46-LbuG*VmLO6zHYZqE)?qZ)|U;&qv-^jGlNe*J?Ek z9`J!zwpgT#KtQbD^~kw`L3%8g#idIsm6pK+KJdzxO62DccJB4k9e+$z^q3F4SJZ0P z%<{4hOiQI}3?A@-7aj@qKAWX8k4LPdbL8Y2jh-b@?P)?$vUz`E@sh_ss^@v1JnShXMtJS9a~$qWYDMH#D$6;cRYDOomzade|U zcoD{M(58)D%rnPKooP7PVZ)|}=_YeXPv3JQD=cbs;K$4Rz3+L>`F#R__#cF8XlR?e zKA%O>Rs|OG#oJ!*cdkWKDHKX2e39{gf^+V1pIwsydC z&bh~ZGvJ=zFYc(Su=VuZD9fd+VIZh!$gZxUw7Izrd-Gh*xySuqyqzA8`hIQ>;h7l( z5(x~9jv_EQ`K_0gePnhPhEyn4D!AI+-Cni#+jtzgLIFm(48`rXRqd^YLYU9x@Ofhc z=Q=w(s`mDek0YE+Vo~;|?Dm_29`vDCdU+Wm(WqH}*FOjwIIk|j6U&;RjjgSAK@a-S zE1l0HA}?$>9L9vaOjhHTuB1W@gF!+ zz`&obG+T>ujG^V|}K`5W#@2YRuWmR58aq00000 LNkvXXu0mjfa`6og diff --git a/interface/web/themes/default-304/icons/x16/mails_exclamation.png b/interface/web/themes/default-304/icons/x16/mails_exclamation.png deleted file mode 100644 index 552882964faeab652bc946d71093172140147c4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3vGP)J!FMH)nOBN1K{48kJ2h+1O7s1c_0#e_caMnd{pOBtqS z7lW)Ao7K$iY_#dzjyq>+I#RY{n`@uUG5YsDCo=5=lrDZeJn#EI&-?yf4gBc0FV8z28KXrFSFr&HA-mrN!?m&)ZZ6bd1c$)Hp& z{{gMjKIJH{4!GXe$6C6(Sz|}Xxgrn6QYkq6e#90QkY8L}f_inG?^BNQE4&S6bN6s0 z0%tf3TOfc=yB)UC(H}jp)Vm}JDXx$!m2kSPtzpgHZ$?HCPp6S87IDI8Y+SXsTWCet za|8qSCQQcT_);j~Xmj)VRe2Bk1c*W%3SXb$t?e*|#(bFJ`9pgB1x6m^LtfGOdAt?` zwJz^Pu@j#q1Iqd55dAuYB#V03-uikyBM-kfvoB${Xzts(G#W-8 z8 zm5E(YB0G^!HmQ}6-P;uF1I=STl&#}z6voe{h?5{_{{xpOPDMJnI=FNa6S%r?IhG6)Tv^_Rc6X6TrSMzFKL+=iW1hE~L)x8AVl$FS%x!KWesO`!&CNZy&VA;XHwW~3 zz4FoRmezrRcWDhB8wUKVt2jPCN9y|e7WU@4?lZ^y9q*2j5%ubr`duDA7u|xt!I*mq$qcvx5cOZcMSPZ9ES9sms-IlYr zcYYqhjSU=VUt_nw7kbc#UXha%d=G`p`cTi@#L^Oeo}HOPUp6<}g&y>wS0oOjh<>&w5weY!k&*RUM?rVrdY1(1%`pB-X7+1mk|cS=mq5)nTf<9N#J{;VdkS zj*5g`%2$zLp$C2F^&=X^zW(n2xGWa@YHGU2pvbb&gFf^+y1aalajO;m6&3hgR)(&E zg2P@tNE{+VLXWJ|Q((ScL^>56Vt#o_iSptJlq&hJ{u%HGu3Wz1kGL$I00000NkvXX Hu0mjfDMj^q diff --git a/interface/web/themes/default-304/icons/x16/mails_pencil.png b/interface/web/themes/default-304/icons/x16/mails_pencil.png deleted file mode 100644 index 63a8507c015b3f4bf049c9da2f3bc7dfdf8792de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0FKLt$-T}_LaRihm~^=iURy(QYwI7V zPw%87y;xuz7+_6iGizvVy`A8qB}IYcbYf|B6|v3DG*pW|e%ZYbPBG?_$Qb8~&xzTZzzBNT~1NhDBhGBsrF+dMG=@8~Fg zR#xJnM)NXj->6}iyD=x zjgb%XL%ssxFsAsy-pVq*@?%n_n)*NdHptd8#DCq#>4Jg}c|}DpjujSOXH^Eno!=W9 z@P$I+NR+TYo#Y&1WjbBs0{17+&EfmvB7FRJ zcjI!8;NzQ1V%XAAf*W^BUzJ`v&(d+OwpK?+@~^BQxW2vz&w>-rxuWp<0_Rt6ZJKDc0@gRsz2;2xq7CZdZa&+pU-xnILJA{Ih6s_mFK*xx|mbG dU8j8SioZg2xU0@?kEP)_e3m+c7zvp?M_x=0?fcy{gWMJTkr-Or4 ziiQlR(l0*h??2?ecVz|fWD-Br`ai)w=Qz)=>Lsl`J*3e{Brq{QkLdO`();_z;5qx8 z_92_u03 zUX6}oWOnu-tI9mRybMDrB+_Zr+wBiB_Wm$4gGf9MBbCCf_I7i|-p=uHtVJT&+}%Zu z&DNZ;w`+0|p1C=EQ@PS&c_{Rt550mL8+h;a>UvVX^Qi^r-d;iN*gd_ptgg-?^q>#D zg3&0Z)rGzDc<@vnG?ZptSU+(1Sko;w7;z1cMlIyLDx* z9=?l`p$c4la}_r>8z3+81DfuFZlMQ#=(V`Mjy3hWzf=6W9M{4%$B@o5KA{JFzHDtF zw6k*}w?CS3q0fZ#j>{$)?A9K0qzH_(_h7l2)1|~(L>?9oi{YD~dyxtxQK5H@n-e7R& zzEGfMw@aTqVieFYgV~{EZzvR!^LYx(GTmmg^iV9CK<_-6qQ8Emg{XT8^e0vim!>Fd~v@S{e412&;&SdDl)uInRU<5sA#^lpjj9wZITJ?Ai z81{gxRBZn5Y;|e0WIWpn;HcNJi9^RT{JEdS)a=y6xE^=JwCF=O50iZax28_{jV3(k9nT-_2)`ZGP2q z{dMS_byu_6n-4Plt@|HgvDi7h^w8sv8gc<0Zi_pPKkjf*;%Gm-V{--Dxuu&o%r{rq zP!}ub1XT03Ok3_-mF=B7|5)E2zrW+xvhJzr?KdK#jy!#u%JP2Q!;`w^FD``6E!Y{; zQ0slbjRzWLkYAOG&pzwz^vXvvFJemCBh z9lh+fxUp#GpLme18*b)wIqZ#dUl=eUT!OEC#`)($>vkTO1X&ffI`re7sI^J;_3{6- z+T7jU;WA>~t{4Zib_mzzp+(GsCrme4vJg?d7`u1ke(Ink_#rgT~L191r?ESDg*CH;yEHM`o6WeBTZ|(uHShJk} a3?~$|?{8eBxdND27(8A5T-G@yGywo~%o=?F diff --git a/interface/web/themes/default-304/icons/x16/media_player__arrow.png b/interface/web/themes/default-304/icons/x16/media_player__arrow.png deleted file mode 100644 index cf012c86d84ea366b143bf5b65e231b20cb0cd6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmV;t0z>_YP)jZ9(>^O-ski9zxQWGqmdCNlc`pu zOXS*rAg7jh%wRBZ&L`V= zR=yjW{k5=kwM&PP%R8pi={VO5g#yl4Kg00y2U;HHp}4h(UU?OcRae7)sTKX_bRdUZ z-m#934$h5SE(eFhfoL>}d_IqjjSXBC4`@Ad2!SU?c;AeG9CCTbv|25vH=E7=aloTf z4ag?L_#^}n4EjM1xx8a-ZEc*sOeO=n-7dX@-|xrt^fW9@dogOgkM|$m!8_ptIpp$= zX*3$n%~UFdSS58#zOQARrtLV|{%cD=RCA$K&XK8;5c93p!t?aPYPd z7ra?K&jVsC9I(dCtgfz(DV0j%&iwp5CMPGQUqy$kuC7AwE8=kuxUvXz#(p#S71(z- zEHD~1H8rfhzJ8eQ9}ET&3WbnPr?IxShQ6@~S{{6adN=^(zywsTEc8)ePmf=a_Xf<= zSBO-JW60z2WatfMW@fhJu*C~S2-snIwN!C(p#N9Pc8VxuGTG_M%F25pw!g9ccu!o` i{;asI;jEP!YJUP+1v<m$f z-UZ-!V4VNgec)H;+-(5qoCCl)cXeT5VLpnY>Ep9U<#`@TsXrDM7e53Z8dz(O?+Z~B zO|Pu1Af=?=?~^16KYuXKJzsJ(F-Co6iW?t)HEpde92ZGr%*g}B7?zq(A}6L$s?F|h zn}+YRE+p5UJI7WMV2r^SOM+y{}=cdYUUwg`BOvh%p9h ztvE5zT8|`nROg?r@ct*Caj)MYePA)hptbfMi(swg@bHkewKYnm62)SX_~3vazxjc) zv(M1!IL@50qX%VcSex0p9ZxZ-Px|jH)MOtg`-wso$R0zWmr4&jjq+KPdTw*MjVf<8;nai!q z*>sO=x;Khot;JePu~JL{PbDsQ}N6jjoT8?!wJN30%Ht9 z2nvM)S^qCmX&-y^56jET^gB(;pZSngA{VCpo@; z0~^MeuK+9<{jzhEA zq}6Ki{{AwRkV88bVRmMUyAPjDYptW*M~;Z}J`fRJeV@dMO%Vh&s?{3VP>3zt;l{;r zzO}-L2qI$j1P(Z`MT9H<2QnE4-}mvn2^L>MWHiCqa~|o@%ZLbCYr7|)lKYM2DPuk-HBThf^eG#ZAnG2M@FK)@Ce zve|5(gPTuY_s)qp-3*RIu$59Mr3i&WB$G)z&jX-Ztx_(RyY^8^{W}8@A(cwuc^*L! z0O0#RT5F2MVqXSxrBXkF)*7ufuImy60o&W#J^QZf((Q|geJ!77v|jH==sFM)Y}+Op z-Jh4wOG~u!dG_}9ux*>$g~H-+r*qxFrc=`@3bgN`u`m2@xR{iviG{oaFJw2F4g{+vZoHP##k1rvsZ7 zFa!)I5{X;6T<%Ufoj!BiG8K!(!otGB(@LfC9B5cT3`h`N}nFQC?*4A*Y^8?J!zvJY?6v|pw(X7nH@%(()E>+{^c@xMX zS9Gkdu1;`0nM}fNw_{;p0jX39ySuw+lrN~RJcg+*3q}UIK@Pd1V@9J<(40sl{# zO*s+~AKr(j;PJRX4!P8H6&EvRFc<_k;_*0aHXEOV%jJUK??>y2LwM2o0B_yn7#SS{ zIpn%?a#%=`7}M+Zf?LsO6pM?C|Ad?twc7SolE#9Pbc$6~RS8-nkqGAJ=lLgWZf;_4 zZ;wNJI-_S^uNRG4?G!pXFd<1^rqk&Jx0jcfF*i5Ie-(ur8yg(j)0zLB9lgE1$Ye68 z$;<2RXRL;4wOYX)dc|Nc$cIPa?CdOu_UWV>Z=5=0()UnWS~{&zD9T?ld1*8nL0dQ+ zhR^52&dv_Dwzjaew8V*j9EESf$m4;YO4Ob{Y%eS*X$FBnfHQ2r4E*>E$5RcaCwusO$RU@SUoBI}lx1aQ y)n;dBx63>h$mg(D?~5K$?RWlm-cBwx)cyq4{V7hLHEuTm0000pMn-M{YXMs8WfbXE5wh7V zuImzpApoA|p|$4Rrz=dZer5jX+{v!F_+3HT6|~l9t#KTOFbpY`N-ccHaVY*Map=e( zkG?iF_;CiqtD)8Pfbmc%jJm2)=|0KcQ7V{UE&}3!a!!&VrA` QHvj+t07*qoM6N<$g2v7}$N&HU diff --git a/interface/web/themes/default-304/icons/x16/media_player_black.png b/interface/web/themes/default-304/icons/x16/media_player_black.png deleted file mode 100644 index 4e7d7189e4583c517711457c449358017d75a2d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU_9aJ;uvCax^<$rw^N`<>tA-> zCMBlMWv&t}KO8dWU9@jG)68+}QYJzATuq!f|qo!YPiW9RiP> zCa3Yrh^~2O#lb53>Hz!fz5Dm>crG{h-ERxiKGVGa4|hEOXQf`Z|G(`-4+Xh??}t5n zv5^O4TZ?w~M6GS}TB`Kwh=cte=jIub(nnu4`L|q{%6jK`lHr-$809^m`(BocKGxRN z;pIJGVbk+=Nz>C8Ixm1Kwk*1+;k8s~)>*ZXP}l9Zk1i5h;N$zKq*(5Eb@T$~aIp)0 zE=v2Ey54b?+?u{)m*vr;uCgUBPBF!tyf>IqaJ>wtdFcXHUcddX?%i!ti=d#Wzp$PyQ4e6f% diff --git a/interface/web/themes/default-304/icons/x16/media_player_medium.png b/interface/web/themes/default-304/icons/x16/media_player_medium.png deleted file mode 100644 index ddabbf5a86865f2f6af0bedf45bf5b4754663c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 569 zcmV-90>=G`P)6xvvc zAc@7Yw-T_37nWO>WS{KpScDBE#;CvQ@#f9P_ZUX4tgHZ_l`$}$@7J(s=WG=HpbL-!x+QMc#Mb; z`222g9AJ#W^E~?fK3Z!4CMPF}$-HiT>xCyCC~E{0gWh%5D`SAX|1KIDz>+`sj7-F z3<<;VNY7e}h%`lnD2mW|o)gD0ola*zNs?%0X6B-ZFdPo?JnwJ?5y5dBk|c@JG~G|r z6cIrIUEsXqICEO-#eeyYWm$d_k*~lv1)KrS0-FCz3FN;3DP>7Wd~xTd00000NkvXX Hu0mjfG$;;C diff --git a/interface/web/themes/default-304/icons/x16/media_player_medium_black.png b/interface/web/themes/default-304/icons/x16/media_player_medium_black.png deleted file mode 100644 index 7fbe8d6a8d43b232a7c7174fb67cf1a86e605779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmV+v0_**WP)I&Xd>h*dU4u|OX`*Pm0KSa#wKxB0V?NVG8(bW}98;u6i zdtZ<{xW>jy18X}Mc;U3;xyyyul`xvc6zI^^6@0AM>*#j7n9XJ|3UBTyCt#+rNv-t#nE ziuU?r9PaJn?YlQPIXwd%x+?d7!K_lLpin4Cve_)+@wkMuI;TTdS8!e~myyfmkVqup z^ZDTQdL^8B#vL8Hx`H32QVE$%W)Y4=A`(@?9UZ#5f}gx%GMR+i?S|j)mscm8dBziQm!N0QIyCF-|&4Z4d0v)QZ)4E|dz7DF%?giCxp4u?a+nP=S5q00=j^5G!( z9tws2rqgMpQYl2EQ3L`331^;hM~ChrES?8~HNm#vm*8dzbm%g}tjQ*@3m)AQW^A{a WK0kbT8{@?Q00004TE{4&wk^Lj%IVraW%=jq2Sx9SbAZ}%V#s1 zH!22azEJCAzua5)al`WOm9PI=iMY!DdGPT6f7|!p>t+iyHUzLVhjl7){%3aHxhuWR z;Xt|ibZvXh>4uwj{&e55*!lZ)#=8B_j-EKicIcr&(nblTi5;irPCLBgLJiCFKKbU$ zWr8IyX4x9rtf`dLm|Adi_OYqyp>t%l7VlN>f0xGXw|(2Ak6-!j>?-2~DSP-iGtM?9 z-d#h)$!xZ3WZd?+^^e-=G12@-6JE^0jbXd%?eGAF(7(a!6=-{sW|?LP8>^_OKId-weFi}<*( zAKa`yVOm^iw#%Kbzv(>a==&y4ul-($)WRge`+R&CGE79y%qetlUw2cOnR(Xs@~7MH z`>6%qx_^9n6z{wcuY+eK%RvTSyuN(qi}NWDCftvmY=7_gTHPJfrolDpO;1}De(LV$ z&l>OEEZDTYefcMSWtgG4xlR@`D(@y;-)m{!?*2*l_U_#)!d7#oodbqzct+tuRLHlakozLdfTQBX^}J4xHg~?>WD+_ckkwyUk9MvnJR6 z0Uf7w=FcUZ)AG@&@Ygg##nd0+jSgMul)c9#bc6~i1Ofp>A`yf_A!|PDSczTLtI%9m ziQ!U)A$6i|Se>dL{VR0nvia4jDiepv>i>jI)lcBw0ZGr$0v!MV002ovPDHLkV1kPW BANT+O diff --git a/interface/web/themes/default-304/icons/x16/media_player_medium_pink.png b/interface/web/themes/default-304/icons/x16/media_player_medium_pink.png deleted file mode 100644 index ceee74a3939194b5a2d9a520db65254e8ea72c28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)EDoTzVA=3$qJ}?vg$rVsuk>AqA4q2WXMAvIfzIA_YOB5Dua*y0F;7YUZ+O z+uY_FGaP}VC}K#NeT<^!LUgT~IlTz>>--MBS4Gi*XS}@c^PC+O(vK(-*6mhhRKMOR z41PZ|0;ki7WHO0#I*mf1fWyWMsy3`g^!#r4dM<+wUFlSxzF!FDP7nX~0!Q^4ydNLM zljl*y;}OuIE1l}q_X?qz)+ihf2Rt4RB9RCZi3D1#6}Zvaj@a-ZeEtCF(3MWz*6W0! zspcVkun(9_wng#fZqkIa?CH>zPIYU0ga?`9L8O}QA#*W~pR)@n7KY%gopgZ7yE7@H=f4q#~DmJ;wGHAC`H%R9(=j$q4^#tiBs>JHq(( zIg5NgZ^D^7-ssR}!`6H%v?Z!d+ti<^x%BmQV=pFbcaS<2K<4IS6VBZ6Mu#pNd6pVf zZc!_2C)L_ei(2>eZ_uI3X0cTz1{QNiw8tCXkqNr$51VMTc4(h_7o7kdYmC=l~ zFozXnkYiDu*2Pv7QN+Bf3_obl)t=7t+2LFiMF)QH@V>w2eCOhmK@lNCB5j&+jrs?4 z+DuQ*SjMLVyPVf8{U|l}{Sofy&^0|dZBa!nB@zjwQYj>pNjLX<7NOl+i_ofNi1zLT z9lE9`r!4AK(?0AOevZAD9JHP-!+)%Z!(IjBNz|h9jorUp5ZkdDA4=1BswOctl?5HTrYA=% z>dBfe#9}dwj*cRm%_5h}A==b{%fmx>@bE6ucQT+u*YxC|MLqI&Vq*Drm&c(9ih~zj zn9ZCHUDJ~Ri@LvZH!=+&LL*GIv|2 z7hjuc%$%$;^MArSdj+Z9SrIy7cAsmM6JvxsT^^)vjmk8T$S{%0G@G4iH$Qu4OxEU` z8T;?wo;+(#oJ@=`SL=gPqnRsi=B&D#xBB+mTZ!$59hYBz$z^J}*J6j71ka({1r{M& zqe2&73|M{jQq|sTA1k(epXqaK-jyd`9zB@lpuix%H_rcPQs7iC*R4@!*X@nanR5R5 z`hdxoyPLEB)Y;c;sxq4$x-cMMWyqzx?VI1ntiKMGtg(}?xj4aV>6=|UWBe|^47vR_ z?D5BlzjgN^MoX=~&VB!BQRK&pm`)d`mnFCI4hc`xgP1GB*Z#4>#=hlb%BNiipN3k^ z?fd&_&Xwtm7CU14{g!{e`?ToqJtjUqX1Q}a&fDDWxV@|V|IB|38~!$XOCFx~0~q=Y Mp00i_>zopr06px;q5uE@ diff --git a/interface/web/themes/default-304/icons/x16/media_player_small_blue.png b/interface/web/themes/default-304/icons/x16/media_player_small_blue.png deleted file mode 100644 index fe169fb6db9b9597e451d9449c6217b7b614a7ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKVC?X8aSX9IeRQ(7w^N`<>-Qar z%54{Mg^U1!D;gY^IOOkkUHZi8802Cl=**J)Bx^mh z<#e{#9~R~M-^$PJV_(NGVZXxv{f#Y7N)I=-?3?%TiJFyyA6LnHC??PzGna4 z#K(VSZ_k<=zIwy!(#@OF&c#_Bo0>4;O}m%s85`R~yXl9MHg@>leX;qf)9$o#8@P7#B{u$>|45pt|ie0_%*7$>eYdxtZe%FhDD{U`~8A0 z2*1|)dk7-^>$mHjcg3&Y@i|}2NN1|+3YRYbR5|C>+2Yi*bM}_>toC1TF}M0rk?QUy pzS!C-k@id1RrwzO`+fck^XVV0k;3x|3V>0=;OXk;vd$@?2>{_j)=&Td diff --git a/interface/web/themes/default-304/icons/x16/media_player_small_green.png b/interface/web/themes/default-304/icons/x16/media_player_small_green.png deleted file mode 100644 index 496cf0c40d67ec6d2555c258e824739babfa3a7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 470 zcmV;{0V)28P)b6 zc~nbNniifsZ}Ilhq6Z(Bb2#7Sy~Ps%#9t8qe}QVUN~p|LHEDDiQbSj$CMt>EnmoX0 zcnf2%E|}xHu)OcVme|McmmeoTx6;YXo?AL}h00Vx`X}CYpubsy;ogCPr!|-(+j#zo zA(cwWFtg{D4qc%fDJO%*uoK;(IrLsHqVH}6-sBCE-yg7soY0(Dq?4IFw{++Vegl3=m){QC zwF?^$Zs}xZ&n+Fgd~y}l1tvvp;a*0h9lE?AJB>O`UWTY8_uqe}Uoe7smV-rF4Z0dc2}Sfml7@wqg@HjyNrB-d zu_jN?xuLr>B>edE9M12#Z>RuJ{(|!V3x3|?Sy@fwxN2iom#x!R57$NI^cIlFY|itHqbc)SXi>j*wy9^r5a ztyTx6(yP9-2WRH&(xEHz6j_f(Z{cw4!|gtX-+zu~^Anes4gHaNaAwXf9l9c0$rcM% z>n@zm19&{AC>HBd*08hlB)9yapPZSqONXvvFieun{Cp7>%QkGbJxos@%46hFtu~-( zS|85L*`-5QQPnY7V9qkM+jF|iJK(zrg$nZND#+z(`pKF3?*em{E`KAcI=-f=6Q_eQ ozDAb|h6R%_Iv^(9{r5l94?OButnXQZ1poj507*qoM6N<$f&{qDWdHyG diff --git a/interface/web/themes/default-304/icons/x16/media_player_small_red.png b/interface/web/themes/default-304/icons/x16/media_player_small_red.png deleted file mode 100644 index 9b3159354126dc2929a20950e945fd057dffdf85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw{7P)A#8-`C1I^BDC>S3`n{d zN`*i)6^w`=6J}F5ck*7(y?0vZ9aLyB%%T?#oU?eI^E>c6rd%#l%Q)0HH4DrvU|=4| zRLOoS!-PgBhs@~kSf*Gkq9TYYjxk6>J&gl>T<&xUzW?NKeT%4cgx1xuxbhAF4NrBx z@8fwMB7%r;rR^HsZ(h@Ix2tkx71u4gQd zPa|#%?&JtT7?N;mlLXe{TZ_ao631K}>}Nlhr;y8Y2`J?9>_30R^(PPTttH{~_;eFk zOK?UIMG@i{no_CC6T~q@QAA)Z#}@?`6CA9p(f)Lhju*pt>szD;`e=T9pM&?S_-6&d zKN4(a7pT8|gIjYiD+zvo{=#N<0b?x*r%S*?AO;*&L=_Ri{yJoJY=+jMd!+B&#QXMx z!iNpQ(jQcn67cb)Lp1lo+cfl4(;^Rcw_(ZvDIg7Kl}!u*&;0k__!qkNwUc!(*pmPN N002ovPDHLkV1lC;&-nlV diff --git a/interface/web/themes/default-304/icons/x16/media_players.png b/interface/web/themes/default-304/icons/x16/media_players.png deleted file mode 100644 index b7d7f6c71d87b5ca0d6bb8b6ba6f582feab62f56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 669 zcmV;O0%HA%P)Bot9-41^sPI|xmXk!<4FKUr(cO&znQw^%Vm(jt#RtAhvURklM5ZNkK| zKZhW6!W?7F)e2=Uj78gF!DQhWVlbeM? z;d8ZGMWs?X0b|?S+gMpyLA_o_I-SPw@Gu2mq`>8JkvlA2SXjW~;vyoE2u3blKzBzw zf^M@E&CJYTZEa18#6Svmq`={Dkh|q_8P3NUT%Y}kt5Z7|X}<`U?g}0S++eQ1zaJKh zMdEZiDJV*TNRZ&(-k$tvT({9^;J&dN9};tT^YR&(8yg#g$K!#~XyhwU@Kp-TW-}Sz z-Q7hv97ZCMKr)%cxIu$=Z(rd>{5hDjTCE5MgD@Bj@-AAxNdcctFu}>WT<*Ux$Ekrp z06jfDFqupge3t^fUQh0cS3o9{L8(;2;o+f#cgC0-7#M)fW`jDwU$Mv-2TW#(kF_`LJ00000NkvXXu0mjf Dq3$nC diff --git a/interface/web/themes/default-304/icons/x16/media_players_arrow.png b/interface/web/themes/default-304/icons/x16/media_players_arrow.png deleted file mode 100644 index 33b68542881863063216ce2803230b6747da0b50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV)}$F2I2ID#{X5S~(WE@^gNNt;oZoZK`*M1{o~x{^WTZXC zJfl3JLm2%%!*S_?qN1Wdf-$91nX*_cFq_Q>pdMv3^N%1+vPi?dy}j`Hd~mzn7#J8p zUtb?=HX9SsOu9hCW8k?(n46nJRaF%UJ~Dw?ttRSe*y(h_<#NH{aG)mh z6bf>(VAU#^sI#*ZQ&Uq+#4jYlDif5KmlJp6@i7huxcjdvscpscpG7CM~{a=DytfdrqJ zK%r0&4Qp#_u-onMdcE-b{b-P#!}$BR7;+DSveMF0SglsbWHMIsuYP6%x;CCh+8hdn z{tIQaRoyX;D;)t8-+WAhEhdmkr9=~d3kU{-SYKbq{{B9LYU)v@(P&U;^W#MVxZFMs zp+uiNqp0UNi9|xQgu`J30s-vp?I9A0FsQ!wY5~`JmT>XG7=(r%7=0VCZvlCYZ+?nx zizY5VKcBciKR=I|nHeOLNyK6?2Gtd><9PN3s9OfAB7bR#0ixE)Wlkg#abmIfA$=;{ zGi~14*{^oaZ$J|UPTw9`%Dg^!gO1^3c6N5N$KzR_ot|W2uwo@CoCS5uy&B0V@^g!hEgC9wDCMWgf^NvQrP4^s(!g}Oye-| c5{?AF0JTsN$BUnYD*ylh07*qoM6N<$f@%a(hX4Qo diff --git a/interface/web/themes/default-304/icons/x16/media_players_exclamation.png b/interface/web/themes/default-304/icons/x16/media_players_exclamation.png deleted file mode 100644 index 7ae760b68dadc9b95beb3bea5f5e4c33f753711b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmV+e1N{7nP)jp4A| zoiSqJ5&pHosJaCp0IYt$4{&L5aq)v72&PZ797Pe$<_5E~voxD2u3y(D0Iu)*(`##M z7=}T&+hz5mYuriORG+T!;g?^ty}eB~n)~{p74unz)rIb)g(d~BG+S+1sbCaIBPcJ=6=O2NL_wml`aQWqr87ut_#3xP= zN-1V$W{#it=I7r4FkFCx=qH|-yhz}Clqa9!{N26N9Vn%6U6)FwLZwo{bzPK-i94%I zO<&@*tKTs>^$g|5{=hW(Gi2k1x zhTY`iw9$SDptVM8jg%6{ac~?5DPv@3m5iU|_x25b`2Kyu-farwk0furLO5V?UPMuZ zlv4EjeYDo>?Cjuq9-ilM_x2K&8Df}sutmsAS3bkBIy_oX;>pROp=)m&6K1>J&f2zp zp<1nu=W@B6l#*7fMXS}K{o7ZJoNF`WMA#zclf}27_Y1ZelS&CQMaMFL$5W|P#kTDW zfcs#KufBTl!f2^KY#3;JAnDq6(zPvmM{^Tf?JiO;{USn`@5W_G4n3$NL7T1A$ zK!(#}8+ZoHSVw>R`udogn*+Gt-`{^VnM}s3)#|ZM!!Rfoiyf1blg0@^DwR5bxQ^q* zbGaOjHw@-Vu%RuH#*RRoUb#)#*MqT_-Q53TGQOzOsQ02e}Dg&0#if~ z5mQ76f`H}aWfm6~DNBiRw2dFXOhkm8ogLEYG`0E@BbXvWPfyR`@@_wU3qW%VhzOQt zAtGq4(ORDl5D^+18*yD1fX&U#L&>&nv$3&()|%SltwF$2N*x2F(`i;#RsiVi>|}3m zkIms>u1!xv?c^(3(+`OZygURPNK;BtUtbS^QVOj#UsqSTGcfS4AEK|u#;#bt?-Pr~ z%u1z#)*8?A$YlO_$n!k3)<`zX@c8(yt<>I8f(4(f_4V~cYiq0WJg?xoZbuLVtgWpb z7TLBzRNY)o6iv&Y37OWx!5oD-~Hk(7t#@d`R%SlLLG0f6JKNtp%0wFb`XiX%= zHECkL6d{C8*v67+to6V@Hso4R=C`UDa36do5sMuz+VPs?kPNx$C0|V&m z>x0#5XN4%qE>RA(GO zes(4-dNmhyb#-BSdYX&agCtnug7Wfm;z}eEfwt3+Gu`XRZCOHf=0WJ>M{&DB56YF6 zmZGGjgrn7JNf5duih{rrgk@!Ag?}228;iwoLzRy=u3k*OcnZqZ*4DycFhHeJp`ox4 z{i68YD~d`%tyU9_%gf8?>FI&X<$~MoM&rrjc=d7&&zysxoJOO8#bV)ti$z61M+e44 z(aqP!Xrh+`fxthZ9NRtGThDPpB9TCDTH3dMLC^>ag@U-wwgA81k8n7Qt*tE%-6=*n zOZ_R_@5n$R+J?NmJfx(gtZV5L<#IXEGCw~LkH>>}JdTBh1rFUQ=5s&6z4raQ`Bq~( ziWSnIto1$L0<#e}=jP@xJ3EWb%}s^?fK`NCB zIXOA4G%D?xUS3;UMCuHJo;4jxBAtfVmz9;(JUl!c_Ika1;M1& diff --git a/interface/web/themes/default-304/icons/x16/media_players_plus.png b/interface/web/themes/default-304/icons/x16/media_players_plus.png deleted file mode 100644 index e29e49d58fa83f22f8473b40b768608ea10ea491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmV;@0xkWCP)d6$y1snoRL}6j!PrKa?bDIx!t}k%7CSdMM;Fk9nuD4FW;c$>3$^|BqiKvZ6 zqsz%;5?fnahoIcb$_hfE5K^fWW@l$%v)M@SoeK;G1JO*)LqkIt9v+6z=R?i;vnVad zgVUtpBDdR(@$qpk5(biBl?!w_9dR#_NI?HAjGKMCxYE9gn!Ix`C@-Pwt_f7Ds;WXo zMFmH%*OMT|1ww&vuCK52N27Jq=`=djrT7~3;^Vtlpju;NBg|$q)M_zR zEo*CQ@OV5327{QKoJ5PN2%kT_$J@YbP_44E5>BTRDwT@I!lxTtKxY$ZrOA;<2jv<1OQ2@9wg3PC07*qoM6N<$ Ef_hO()&Kwi diff --git a/interface/web/themes/default-304/icons/x16/microphone.png b/interface/web/themes/default-304/icons/x16/microphone.png deleted file mode 100644 index 5817a1cfb4c3e28889a0b91fc388d85319a81058..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)z+3nKC1^mKkhl_9`C!4BO=b@@%+K(^KpSd!1(a; zd4?aXp|9q!4{+-RUa$8~I2?Z4>-7fpdY!u6?f`4(|1EGh9IHGom&@mcLV;$p8DZx0 z`E%&2IYoif>Ev847iYCv!FDE-p}}B4nEifVp3vbVhrFVIy(7n7702gHCexc*tw!;9 zoJOOOJWHh#L5GhV^8YH>#HH!=`ggHdj3h}S%toUjPw0zF-TbS-@Are}!{LxbQKa#B zOw;L<=JUCH50lA6*5M(I_K#^gIcZS4-DY>t zq`kcyZEd|G_{brzC@`DN;AtZ9Q93xt)6Pzmve|t)KF(7vw@=aNYdSnE5Pam2R}>hH zMvmusi^cNbeYN`KXQd)iI-R9dDkYx=Yv}NiLtar}Fc`pwPN(zmyfMDJoA}!4{P=Zt zc0rg}Lx;b}DGTsuG#XB;)neXeJW;FF9|YkOVPXw^;mi5;f-8)xjO&b>02_~vM7dz8 zF>WxfF*eo<)C==2<33QSRFAM3bEz@zF>c|&%Yxs_4c|`Acwx2x00001Y0;N*PR4NrKEG#5i%w{vf;V`JKtgHx?`ZT8;<&y{k{v8?rs`U3+ zPEO7phrhCPI^dCW4 zSs8IN5{ba=c4K2>1Mzqqi9|x!Lo5~(`ZTB9PF_F|sMTtses0c#s;Vj&3Xyl)0!tAUIKA(@@!5jt$htbs3jHZe3@1nltuSKTsT;by=%k5s; z7UbpS5w$%%PduZe7PPjuVQ6Rs6B8B;509X&tsP@yRw(hOk_nF%j$Ye4m zl}hvT^DlJU?XT8tHaASBAq)%*pz@&;>fQyYdV{}?)|h|PSR?5D0`P|eXFG$OAjr(j zBo1a|WN4&PnZB#5=e6Je@#pI5CbX7V;@&z?8v?Gp|I6)9z{z%BKoHO+7K>SGYAV%J zJl91c(S4)wDI}`)#bdhX>sfU#KODX`9w-=z;PN{l`_@e0c)f#53J&n3@nrFwAV@Gi z?grIlFTMKN;u$ZH&W$Y`x%z_RB`hfr@nrMl@|+`5Qc^1EFx6yFbg|JYE;THPE;U~} flv}~l&eyO%Bc#@E>#yP`00000NkvXXu0mjf5It&E diff --git a/interface/web/themes/default-304/icons/x16/microphone_exclamation.png b/interface/web/themes/default-304/icons/x16/microphone_exclamation.png deleted file mode 100644 index 3e41bd421e9854147e18695c8cbf3a47a73d9205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmV+e1N{7nP)OzbT{PyQO@1Nh!c@6;pqEIOQQd(L{ zDk>@jm$t4O_=ER2-`Pt;b_+^MN>0?));5Piq3FoS2n2({DBk1zzXFLwvXdIS-M(nC zSRk290;bt)Uc~vX9)${|QYn$iWTddL5NXis^$?9l0W%y9)5JNRV-NdjsDOJ%!o4a! zJ`oCq4_q!6s8lLgT3VuMv)KUWc#b{nr`ahe!=>fq)oP(lSp=-}9JDJ1y;p0_k~CCMTwILQ`~3kba5#owVqy|MA+YQexSS4n)0GE5 z){HQyKQKLGXZCUsgbKuBG1B1i_}A*|?{NR9gW+K}1OfqW2VSuDH^QX53VtU|FyoW0 zP7N}p>^p`aRFI#ak6iEUeBtZsGec9;JunzvgUMuu?(S|FczGJWuXaFXWhJaHKT1wo zGW6pnhR3lb5C{Z>&*zIoqBCty=h(8t;Q^h_02+-3jJmrp?Y#&;p6u*w1)ncawYGMSv+VpvB$9wJ$K_v3pX*ZLkQ9dAH$rIcJj{J8 zTKD!c8n=;Qr~t3b%uJG%m4%tdagE30wHvg}FrYd3b$Q_e#O4d=6JW;XMc_B@XPpK{ zoEBto?Bh7ZaRfnuwMP!Y(PPO(R0xU4Nl0$or->}EM-w(Jqe}~T9EUkhaTFj7!&Ke6 zlJV*JLnfkrOy&^H6B2yYLT0<461L|VnKX8gu0NO~>Qt>J;gbLW002ovPDHLkV1jy9 BYa;7{}i^-7YP`9a?o0XRt#gN$731!&KZD7{p|Z)+LHytx>ZWV~1K0h^J7|DJxKL zI+&81etIxlcIY5j2y=1)4l0+Au-v6r(u@`>dpZ9tG&;NVB_hUrFtXAte6B856 zZntaiG}i+>ut&Yq2cA6|W~@8FX0u(Jo10rMm&?_3I!&cgsfs=7-2p%ZjE#+T;z%SC z2l05E>h(H7W3ku)>Rmp82pAt9XJ)gR84L!nxW2wl)oPWXl}be@>gdAo22A48R4Uc$m6a9B<#GhgWHLfgZ(Zu- ze*sfdQ{ds@;UP(qL?Du|@zB=R z7U3`85`8`&&CJXY`tY^<0uf*`nZSHLUl0MweF#DDN!I0 zB(K*iPV-^(Hf^dkfBpUaKR0Bu3LpFi!i@Puz~JB@=v69}R*gpMT3d5}E*5|M+TTAT zsAuT%??1D%)Qy*ihyW~wLc#j_`k=#{dvdw_t^d$v77{ zmpE4d2BT3)1hi|MAAL!+F3;;X8E TH;2|R00000NkvXXu0mjfCKy0p diff --git a/interface/web/themes/default-304/icons/x16/microphone_pencil.png b/interface/web/themes/default-304/icons/x16/microphone_pencil.png deleted file mode 100644 index aa41af61340de9aae7a8057866905ca524eb7953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmV$iuHn%xpEuBIS#t6x&%NRWf5{$;)Jl*r#6u0QY=Xbc@bI$j7@3{m3h+3^aL8H-- zwzf9O_4K-rAKasUy6zZ~YtY=>T-MdqH5iFRqF%2THa9n;xJUiJ1`Q1jr|EDyojZ$* zi;zqv0i(@k+d)02jy&hMw1G;cB8`oWL@Jdcy=Jo+qR}W|+}hgWBkGvPI;{5;7n2Q2 z(+2F0gk2SnPbw-Z20R`Q==FMt#bSJPI2?dF=CKazf3oIWgBBcGNlD4G;o)Hj1OkB3 z=kxIq^~_LP{xN86ZABjJ?(Tx$?}z>UeMlq{aCCIU&mkU<^E&3SZnnHU+n}kb33<4@ z9Dw%rc9@x&0lVD}_zE~gqtOVRot=PrtTR_u%JwMzutsS;Zy=Y;5p6IS;tgD`kFdJB zhEE9L@H)8NUfuxnN~Q9tRw^BWkr8lE8srURG8xkA_XiKO+DGh1I=q@bVx<3+|Dp-}k3I6VeagMvM5p3u>C)~rxSN%qPZ2pDG= z=NKXc4J diff --git a/interface/web/themes/default-304/icons/x16/microphone_plus.png b/interface/web/themes/default-304/icons/x16/microphone_plus.png deleted file mode 100644 index b5776f47d05a652d50dc2d53228e10b8b794ffc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723 zcmV;^0xbQBP)&U}YgVWm!UD)WgV!2t57IUvG)gh2K8zcfS9(d(Q<#1dGM;2b;|X zcDr4FX5+d{KXgz2)|?D%FR)sz2c1sm?YX(RY&06hOeT}1d-DHVP*YR0mGhxcXfYTJ z;@a98k_G~SMe?`hIJ}^?wifE@>Y%#1nrQR+e3;EDYQsMT zjg5`Om8GR6lq3n4mzOc0&*S>~I^V;}$_n>sPPxrIhZoe>*ArLc@dP>?4(#pi#qsfR zq_03r6h#r6nwpU2l-ta6c!Ak$CS23gNnQ{RKgZeGm-GoSm3oDdNR$`QoO0UsO3>b5 zv{Y;qm`o<3O_HWpU9J}Pk6xUbieWODWIKpsfByiswqC=NA;&MJfBz?Vwnv1gr2szl zMnP3o6>+h*G&z+-F7Y(BYp&kM@2!`?VR_!8FIK7I}e2qak*b zl$2O>I=!c}v-?FV_5Rz!!YY!M_2_??KcB|!K+o|>M@bZ~T3;svq?cZ%PX=PD5H7QcqBUBF5} zE>JMa7>5`~h=PKGb99(g_P{0tp;>qfr-Xhmu_Gsn;5YJvw*!YNMD_px002ovPDHLk FV1kPuRiXd@ diff --git a/interface/web/themes/default-304/icons/x16/minus.png b/interface/web/themes/default-304/icons/x16/minus.png deleted file mode 100644 index d59994cfc0c651ef5606ac6ff0a048df7dcd3f42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`OFUg1Lo80ey=0hm*g>H6VZP|n zvz#^Du}78{D2SirWzxL+LuQ{t(5k|>N~v6pW#*T57;sEC%=()k5%=-Gfq|yd8qefZ zIi^dDo#$Q3`6X&t*T1cJd$(-+>$b!IuRyQB?9gn}^P4*&%3LyLxz*b=eUr^UVJUq) z@LZ*!&*d!++b0Ko>gL~~Zg&5R{qMiA+vmUZ&k>5d@JQ1C{}c6)KTD5muNRMDxN|aU Uc~%;qGSIyYp00i_>zopr09#~OIsgCw diff --git a/interface/web/themes/default-304/icons/x16/minus_circle.png b/interface/web/themes/default-304/icons/x16/minus_circle.png deleted file mode 100644 index e0d3938c03af8d1398569fb95b5bec0b7de72bd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmV-A0>%A_P)?I$PC#G$8%yDMv1!c!Z+Nx=l}ov1Vn`QQ1~nYz!DK7eggQG z0mg_Z5ii31F|NgmTK1F+=v;HTbC3t@gZqIh#m z`#U7TTP(U?(-PeSknNH%^Kh!YKV_M zfM5{d%K*U25Wp$JeIDZ)X+9BN_E-aK#0Nqod~Z-w)Y{nl0Jw_Y_t>)R761SM07*qo IM6N<$g8x+o1poj5 diff --git a/interface/web/themes/default-304/icons/x16/minus_circle_frame.png b/interface/web/themes/default-304/icons/x16/minus_circle_frame.png deleted file mode 100644 index 8b1654ab9065964cb01dbd42006c32713911a175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 740 zcmV-Q5+Td3AL))Z5$J zM-I71FOZl_CcV??9Hrpv< zvl9WG4nO$&ubv)}R7VGVb#>w{7Tbcu;TWTaTBg_QbF5aYeS15Bw`~?g&1QUWZ%4ef z^)J3zEQlBkqO-ZViSF)hJGD%w(`j5TS9s;YeSE5|6)*Ur)gH@wLj&A3HE=ubVSau- zOfA!DwHN7Uy}Zq5^YDB_;|A@F*t-4`niuh0;>d^?E;pTBgxxtbV^A zPphjDs;|ev!2#m&ID9@Ig25pF&oQJ@DeUj>i_8`limu!32DMDBR$uXYy_l-3ghvn% z2n0Z%kBf=t3Wew{EiHjsCI~{O-ygtiTN{>3N-&+B{a+U3@;~mf8`LtDN_B2}dS+ws z<{iux7sHdAixn>Zizj(`czxqGoX)WgYFSlPmBM5)5BYpyOc{)Llb??ue^>!7ALSK) znB=Uj1zjobtV}mJczq@q+`@Q$10Hkv11Fq@W;&yt-yenDer<*tYMERv zXGKLtQl(OPp}+s?vq&U~cXvlIe%^v%MZO5lbQX#1fE;qEp_X1JI430%Nr6lzvk1bO zTN4v6V$tYN9EQ$lM-I8vq+6E3k#UrqipvmWK&D%?mGES~h+T595!a zA&j-Qrs?bs?>NI*?&yLUfbd7JcQaU88Vw3UOzG(O^wsCXL{}HCc|550_hY=hU8Q|& zmNH3~Ym+;=zz^{J%fP_SMqeL(=ePXj=ke;v~OI9mR3c@OPbio+_(?n5G_?gX? zePlM{Lkj+jWl73T&|kJuT7N*z_?A_cE m4SFlojY)CLIF+!>_!G>`0wT00000 LNkvXXu0mjf8B1=c diff --git a/interface/web/themes/default-304/icons/x16/music.png b/interface/web/themes/default-304/icons/x16/music.png deleted file mode 100644 index a78df8c2ac4a97c80f9cde1ca6b514063d7878e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX5pP) zv?u-N0kS_6G{Ab^I|l3dpBZeI{0HIxc1!;=IIV!NO=kaBAkF|Fwp;j_!Fk1>|3D0( zSN>N38o+?p0MqGD9Ds(L0^&bF{2xSH&VI$9_)q*kDqF%TO9u`&<~12GFe0|bCr3JaD5Vj&>r0%B%lJpcpN VLA^=%%kBUG002ovPDHLkV1jeG!#4l` diff --git a/interface/web/themes/default-304/icons/x16/music_arrow.png b/interface/web/themes/default-304/icons/x16/music_arrow.png deleted file mode 100644 index 1215fd2e9b7ce34cdb1ee71ba403e7dcf49f284b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0Y}`c__*}N=Mz-XKAI{h@eh%r#mJ>4X#GXZ14(B9RD21`xK2th ziwg?e*W=`FPtx`q5a789+R^>1E)BuDH8@6|a7^Q6ol`XyFrJPi?d+Zb^E1mkzgeB< z-csp>etD~|MFC0W@_Y5Sz;$)Ff+f$G83vMDLZh^eh4$uG8ei0frH60p2ks7_Edof- zGnI-?KNn(^T_ZU7cp6pr$H4tNIkz2u!oTq0v|Gp z!3dPVAXXpkMRs*ly_{ziI4IZKs;xQlKo{f-l#T&-UjWkQ*Y~Q#kJaR^^OT69Oc@E02r+yTqQLghLp}6RE||=e6)p&)=~PlI zjn&FqLP>YF)b%jLYML};G8axZFSNX!&iR|MVe7z$bI$kte;@wf>=Gb?vxN0e7ciM7E#bqCp3)or}_P(`_Vs=f%Ac@VrSfrWIx}}-@Fde z@?S_mieZ80bZPl?NEEc(g4+8=u*ZV$WhOmj+(sloZbmq82e;5XD+=f%u-u4EmFXB9 zZ$$=kA0Xtnug;kkl*JTWsJR5nIv=Q-rbTj_XQ7~d35nJI2xTOIb%F|GHYjR6B3bvm zc_bMimI&mYWBCCm9)^JgkW{3P7U&FeNUs=-#HVhX#L{<*SkxIn+DAE0J)?uQ5(UL- zfPH%*s^XIm!ZxjKCcAzdmFDlb`*JTP6jxs4JhDVVjFL%I+G3T+b#vo-HXl>`9u{j}Y2)`g#wG|GA5EQzWUPXi5sc0BKQ)mr6 z{ANVW|1yas!Hx9OE@Aroo}!6LMk0wJVI&9w1iS;bdZc)7$4b`#0000y&wv&X+k4|b2G`Yp;n=rfCD8`_ z1!6yf27nY`!TN82quSNfO6X#2G!0F45HOPk@0^JE!+GH#8wfl ze)kc?&*-m(8DM#jk#YSoMn(q)<0%gq%x6AlFrE2{L8Jda4F3nwhBN*%Xixgj17v>& z@pms~WC#ffQOUQksQus2@P8vC<3YFq*7M#mSkM2=V7uf$2>-WR`k%pR1%z!f`@h1B z1&$267BSj;d3oi0|Ni~Io0L@Fd#Q#CG~>9%v*}8d1@WwK3^ve zM}B^O2CxAtji*8Qx$E*5|6>pR{_nTx?SCNuHb{JBJp+d3&LRdEZwC$rxB;v(x(xgo z>poe`di39X#{K`|h1>u02DIdW#Fy7GsG)0aF90S!WCMUefyp|fohf|wC#LXOPnpb< zT0uSoV#E3b#)<#G-26YKmT^B!Gd2SRfLIC(mIUJeX}*l>%HkO9V4Bel008ETx}a>1 R{+a*)002ovPDHLkV1f*64$S}n diff --git a/interface/web/themes/default-304/icons/x16/music_plus.png b/interface/web/themes/default-304/icons/x16/music_plus.png deleted file mode 100644 index 69ca7cb72de82c23e44c837f10424e5369705b30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmV-20?qx2P)>F-+KNWP#07y?h^-|ae%P=raQW-)eUBXI#Bp7C;KTF0@ArM5^F0Sdgx!FSc`}0- z=MHBE3I+6wZ+*Rm=2x2rFzp7CF5s!NV8A95`fq>?m_R3nmOirnYMI&c7YsNVTQh@B zkFGnsk;S*{zg9%^9?zXs2=-XS7;vy})eI^R=fR6s*X`6huAl2?)@LDOKxJeZM<1-f z-TV7*NVGh>Cf?`n&HR+Q^l=n;={5$`4t+*INyD#XacqEeNVH~{P&G(4_BpAw#hn6z zV;Ka;bEr>{Kn*VlP04M4Do$Qo;=C*>jH;<=0Mjs$!@1-JG21##-m>vFVB!FfaH*Fw zw@6g0^#K2q#j_mpp4nhXv@ZS)jgxuom*r8X!o#Z2@%<|4UhDhreh|{lQ(x%Pn{^7! z{vfVDNx$M^9}wFosEz3h^e@s!@sZ;w>z>J;8A(xKc!3V}%#ppl|AzFn$5#YgFIDi+ zp$gThdeS`}ITRW3T7unCOJ_W5=^RD{DjEJ*6yeHVAZ$}T3soeF`*v`M z_71)yJSH4w_%DGsu?Ka0lba<9t`)1A_E@!mKUe9jz^M`2vj6}907*qoM6N<$f+{`< A_5c6? diff --git a/interface/web/themes/default-304/icons/x16/music_small.png b/interface/web/themes/default-304/icons/x16/music_small.png deleted file mode 100644 index 54c1417abde35cd9e5b902927b761d42ca8de774..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`(>+}rLo7}w|M>sko>_H9qJ*@- zF6qAi%p0vbd^;J<8)r;cVb*!}x9#EoB3*NS3BUiQlU0~SqV^kigfxDvzxe9?9*1AH zo@^F6e~&G&f2-g8Zp#1vy=niZGhOQUG(EuBAw4JT&p-Ynh3B;Y|C*H25cd4(`F+xM zf7mbm_g!wE${^(wrBiTB|1Qsw`IVExML#cJuY9*baEdsC(A_%~cjn3Y0-ea<>FVdQ I&MBb@0CewFp#T5? diff --git a/interface/web/themes/default-304/icons/x16/newspaper.png b/interface/web/themes/default-304/icons/x16/newspaper.png deleted file mode 100644 index a6e3bf83fe83c24076b73e249383e4347f34f4d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmV-50?Pe~P)I07NWnR zq6PvYHfgLZ>@0#{BlrS&18X0_R(t{R0W1Snf>_xFM8QIBynup=x9s`IENiNS49xEA zT+W>Dd~5W2Js5`Z4ZsKf&VJnQ_u1`s!|U~edORLXe$;BU&hz=yNxrQn?TqQP?RJal zbo%`_(2Nh0NP@;j0y=?MyI!w2pU*g*PG~e59V=J1W zK+H5v$J>*8njG735 zJ_4^tY_V7%7z`qnN?|-6>l>g^{Zgr<>*;hFN-4TfcXIg?0q zHt>AZ!Knwu5?#nZVwqD+$X1F*cQT;y=lYYO%&FmUh-5OU)n;dJRW}%Acp_2UjhsOO=C=J5#K=z00000NkvXXu0mjf Dp|kx! diff --git a/interface/web/themes/default-304/icons/x16/newspaper_arrow.png b/interface/web/themes/default-304/icons/x16/newspaper_arrow.png deleted file mode 100644 index eac7fce6e2e81f06c94d220a4526781cb8f014e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmV;n0!jUeP)p5DtgAm(+^J#zrD{cXyFUBrrWat&*G+*Vfjm zB#}r2V`F2=j2dc%)oLYjZ*LC+0|OWy9tI0NDP|gu+6Z!-`__v znN+Y)n*85MJRV0h8dX-9Cb1^HKmf=@%%*7Z{UG$Qt{H$diz<65SpeDd3bn;(a})^gF zKp>#fJaLCn<{C#;O9DktKjQwUG#tNxYYm}H(W`Myl$Mqf$vA+P>jx-4|Sc zpGM^m;Nl~1=0fEgP3WswH@Rmt8s%vi%uSgq0f5i*#dn?5(%{lrIamI+wV?c6wBT05 c07*qoM6N<$f;aR$#Q*>R diff --git a/interface/web/themes/default-304/icons/x16/newspaper_exclamation.png b/interface/web/themes/default-304/icons/x16/newspaper_exclamation.png deleted file mode 100644 index 04a39d4957b5ea81c86acc521895890432fb0388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 705 zcmV;y0zUnTP)#`Z*OmNviFRWt^2s8r!+J)P~%MB_oD{MWHJ&u zF)!Ww8wV|a}#=`3qJYt!Qb#MWy@#fZgwvqou;u n8v!K$w%eJ=1AY&A;GgN0%ZF1@9Kzq?0&>E(R?QZ5s*e*=z=UyUO&X4YbT;G6DYd^hEV~U4lYk^172^u}C*JH*&?$K+8@} zPJlE(^Vw{c&^B;XN|Q(=LWM#>ruZfjd=@5W z;@^Q?%pdpm9zGy}_}&VW_X>rA{|nGS3xhZR!*79Zh_R9QhbaI6002ovPDHLkV1iG8 B8Yln& diff --git a/interface/web/themes/default-304/icons/x16/newspaper_pencil.png b/interface/web/themes/default-304/icons/x16/newspaper_pencil.png deleted file mode 100644 index 3d1813a77c2e743e432e51696f551113aa69b63e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmV;e0#f~nP)D98s1W?2kd;aWM@L5}m&-UjJjCAK9(Hziu)V#FVzH=MT3Q14D$G{~Tqxx6 z@i9uJ5)KXyu)n{L-Q8U+-rU?op-{la#s+3)X26I06=rQPGBQHs$;k;Kkq8orgf+8ed;Gi~9`!GH}j&wTBwWL-!olYXF)hhD&JaW05PI6srx7&4+OeTZ* z`FU+djkm2$2#3Q#8ePfrh#7Z(>;TU*nx4<`BDNj96sRw0P+r$?w1U+FTfR_mMB&CNn|b#)P0 ztJRQ7r4WzD!9HTKm`<~>uz*kDrkbx*uw&6?JuWqOq}2@`CVu!{M+t357yPB@6^69%%7|68pan=$pxr zsG*imi&{LZudkOkdC_s(Ksk@MFK^`@-n%n!{TnsZ(%|l2z;lbq=x8-r{SWjj_$)*Ty8lWMjiQzdv^RpG%6=gI@S?@Bhy|hjY)pVqjoE3=R%H){*DL z==1r6$Kw%hw_6B)=*XR&9c*oFVRLg68yg!al}gCx^H^J3!|Lj)B9%&kdv%N_23+XK z?d@$;DixH=Wvs8SqgX5|@yf~ya=9F`*(^e#5IDGB$EXZkE*FuzySo@29mUktlrjkh zgBTkd!}Rnt{C>YO85$Zo!DKQ?9U*#pdWhWH+dDbJSxI;tYN!=Xr;{jyuC6Zh_xB^6 zPQzlcz-qOkv$GT3-QCJW-v_VPi)b{;wWL-!91bG)_xG`|uz>mbd6nd}*k-e-B=LA0 zu~r9$7%cR(m}z*NKp>!cDijK!hFa0l(LvmX;LkgGr7%nVXwaNwjZ`cu{(T`k&39=I*;DAzE8oiL6$uh(scooSX#vn3$MQ zX&Bl3nk5`EQ`MDy~1oZ6Ui5r$z&8f4wD>rqJ4gV=HE~LLwu-> z3WLEQG)&UentJkIO&avqO|W6z&V>Ng~Ixm=vX;oty(!$K1Ks6L<1a5x-b zzu&`dw}bV14a?;c=JPqsW;19un}GM2#IFEycDvmlyAP|6HFi4WiEnHF+)mbG#YsTk}j7E9FIq8 z<9|ueIgvjYb3N^*TAnVlhgo(P(%8lJ56AWHK2jm&Xv@MlN#RHJ^csyV@98wCL2SQ$Ff^Fd{@f`H^*_`nZ6PLNl1KGcwZn8aCiv7&KIU{ iOh4WbIdgvx0{#Hf2ERmAZY`q#0000EKlVNA71$Jdp^(id0uk6-Q;q)NZ)rg>I_tN zcXyM+;UK%+PFyJHk7|E^A3Hlc*xug8*47p_Ha3vU<*>TCiflHEcsvgNPg8kXAf0=9 zdOj{JEMRnW6yxLLn46o!;NT#_;jrBE^YfUPm;fJLth&0oDn)SC&ePM=@cDf3`~5;y zRh7~Z&!YDB_M~uga})V|9_#DtSX)~|CX+!ro&M8#a&i)hL_(ykt*uH!WV6{M!O+l< zL}!V|z>cpLnMht6;C zCi1AQtyLN#HXR)uVQFbeQt&=la(X8`7C+_V-V8c^0%q3_+_rQ&ZoOzHV$<>Qu|(sy z=6&?{_sf&@_4T3Qa~gN75mdK-#f^pl9(_u|`W?9TW^Co^yO@b|Oc5+EFAFF8IN8a4 zPZsZ2fG2U_!R%jNCV|VZ$0B4f7*r~iLL?HA6fEJHc^@MqBT%+5ZtBjA;guKHKcr9- z1uC9;XD>egVxqFLvg-2ka&;C;jU6jjLcj%6Z=}@hHdQ?H6QA>%3eBbeQF71bI9J^{ gTT){;X$i65H`aHzCfM2LlmGw#07*qoM6N<$g4{4olK=n! diff --git a/interface/web/themes/default-304/icons/x16/newspapers_exclamation.png b/interface/web/themes/default-304/icons/x16/newspapers_exclamation.png deleted file mode 100644 index 9a09215d82998e63cc75880e25575ef68de1f5a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmV<60w4W}P)JS9tDWX$(h>o>Gb_z-A64)Q1E}{otlpO}a4n>HEN~2^G3MqAjX=rs> zY-^i3QaAUfnZ)bZKZlv&8pAo~=HKbJ-|q=SBErFkAMeZie4g*~{1^=l4bkA>Ac^y; zKsf*v{r&x9Hk+xZr-x)ABVH;S8yhGVizpNdSY2Jk^71k=nG8~?6c!g3p{gq6cY=!j z0`5F8Fz`AWjbeO!9A2*%Gcz+79v+6rtHO7?b=&*u;txrtoL#KNWTj}Q&i zuhQ0Q(ykY_Tih5PN%pxvygq_VQIn)32;UOpEOoubp6gF&aJp4vb=xEu<*2%1^= zqbSr+=diG{XwXn3u<%FrOW*rE&uB=8;TK+fzkK;Tujl=#I9pU?O8 z@bD1Z+uPXP-NpX?J~lTuv9q%y?^3CRR4N62bg}YyJVp@=+Ieqp51~*9;c!?mo6Sl? zJd5gdI#SqZG;nowg?hb?TCIlj^K+b?o&D>aPN#8ja3E5L!=W@p%gf7>ARdoPbe05z zK`G*nEP3q8=!TMPadA;;h}d*{dyDJqYZ>EzNw{+?7L)O8Hk;BAvFYya4o;^N`Z^`z z%*+ht=H}pXxkR$Gv;?o$i(D=zDR@Wo^YcnW#HRcEdmJAhAbPAAt|j^tI`m$>EYo4TU%SmWHR7|axue6c${c7ibNtIog@_#K?AI8Ut*wpLwBpTl}?_+&^U9N0xZA}h;pPE8& zYz&dfN%%)b5So~P$6)yNjpz%pi3KMoC&J@C`gh{f#T~tur+g;LlF4LJr>CdLX0wul zB|J0lBbiK!#5+BWPotx7Y0-kg@cSLn&-X+>K5~Mgp`ka!!^3J&`21TUTF}_(@AFLa iLi1_>UTU6GpWqKrs-K}Y+bE3y0000~2xC`4h~LFPI#_fO2|{+zO%R0GtjvLy70bgM$O??d>6zN?~_*7h79f*x1-WB9TBm9>@IrJouib;G%&fI~dCyyR@`~si`UO(PCw{+Y7|ts>w4mGjO?FaJ$_?MMZ_u z5YM90>9h!Uc6PA6y^YPyO(c^^tgo+QZEfvuaxfUg;^Ly1S}Yc&A?oPpkOsrU!&041 zoKB~RIFU^hlhvQ-`|%p{?~+){eHiU*Vx#o9A#xh>~wT=1gq5w z{hU(KWHO_om^2tliJgv*j}eQ-5RFEqNli@+ znwpx#gqzIG&0%(SR+9Vr`rv7AhrR%(!4RN^h6Z(Va)Ll0fa&RJ@IqP4a1$P9XlMu{ zBO~}3bHQvj%bn_?BHvr02UJ&Ar%q2#vAn!2EqEV%;o?qstkC2;jD35Ebo?b+TU$|H zUjFJuVIfg%ZLK;xJA=pLk+82F8Qza2B7S4Oi*WD@j7Fo<5b2s? zu(GluWcHESN#d7Ri%UiP*;WEm)g516UY^R$&3%-UlS9N#tE;OBg+kJTO?YPBhyS|+ zzE6L|@2y6R`RphzE`Cl#w=_414?D5rWjuX+y&tJ4UO&4QxqmO)l1a|W%A$)WTXR!$ p`x5Y^($HUBYN$N_{V)0a{08DGoLxoFL9qY;002ovPDHLkV1mV)SLy%& diff --git a/interface/web/themes/default-304/icons/x16/newspapers_plus.png b/interface/web/themes/default-304/icons/x16/newspapers_plus.png deleted file mode 100644 index 5f5747bc884f420211f11bbc53c0f2a881535f34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W^mP)bYW3r3WiDBF8qiM zgcxk%2Y!u-Q>HFdoL@{595UF3-}CF&dkz>vP`>c+!k_>Qzw?YIL?L0X-iBKqna5yZ~ z*48Qw@hob8e_sl>wziPZ=aJ23vAMa4_4Re6QmH?kW3d?K=jTQ0cDt2^sI|3K5)2Iu zNpzM3gFz|cjx0Ir%IJoYtg*3CX^7ZVC={@_wjB zT|AH3(9qDJG(>DVIXS`d^0K7heX!*GPIxSS%F0j;US#cZYq`4hu8N3Fr>Cb9jo+I0 z(c9ZAPuA1ZBa(;T>tG7pN9B(Puw)c&cUPmRqfuRiOK(fo%2OuL`;s_)C?)z_MtrVlu4&5u%d27^y)2rc*Trr0=CTNW1G##j Ucer>4d;kCd07*qoM6N<$g7ZO0B>(^b diff --git a/interface/web/themes/default-304/icons/x16/notebook.png b/interface/web/themes/default-304/icons/x16/notebook.png deleted file mode 100644 index 1d5e4e1300719fd124709b0c58f080f4c3ff3de2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmV)u`nJ{2~jkK#Ky|X#==HWLA2K&U}NVMuUy`W zg_=#WxsP$)Wk+xe*AE`Tx4iH0WOgaCw?|-ke}7OIbD@1{cbCH3+qAf~WkGmg<1aTF zT&Pz0JZ7*_F7sEZ#Gl2Y#ZffM$Os+32H;}jFV$*nO6ek=;SbZ~_iUEm41-_OX+AtY zW*p>%j-LVZo14n`RVvGu$t*_`8EXhk&Tb7py-D-V!NCuGK3`BEK*5a-WxP_abD>hP zhQK5v>P{2<9b~mff%SD|;^scb*LOMo%jD!b&B$tx{A+83^?gAoKBL>+ZdB7}8dnh+!%v>1qxJLreD6Aw1iW%v_qQLLg-FbGE=W`r~Y z+aM@nmWQhY35GM5y6L7iw~Da#_wE1Z?tR8yTZ8n4>)`u%?wjj-zLyzoHb&gB+dDX# z9XNb@a*`P)CYau8EyL(V1#PxeLMorfXI~W2Y!<&W8T?A8%Y5*7Kr@{Be+uZKf;Lkq zK;ohKp9XC+oHA(J_86z-)6 zUN{_Ew5Zkn97eGIu`xk+u2@7Wmn)Z$NsO!4n$YLatjICl$cW&|(pmzGs|jppGP@W7 z&59h;S}cN|JU7VjB~l5QB>5t1O=z(+D{`#MY!>wTzDn?}OW4VTW<`#vO(sEak^e@r zpb|1kbBkJ&1b?Pkkz*H(MuBc+BZ=i;68|%~IkgFu{U_QVy|pULui2UVHpV&)2Eo-5 z|IcJWC1jH0_oCWF{W63nVc?`?A=vtORdwvaJY(&HgMvPPC~Ay!$UhKH!kyql?iw zqEN6C{B{MxDG=2rnx}5G-E*Stt`p6MX|z5MpmP@3-{Wu{(7jVpUdGvXP%a-rAG|CzpG`pLcZfwV{v-(eU9mAozmW!j5q3j>K W39SD3AWoYA0000VXcQ}vNSfD@1e)RG{82zJ>r_P( z2`D@?;R)i0qTqWdgl~ZW7W{q;S*@T$bDW%wg1XL5fzBz1@YxrFB*@h>P3Z5?tjIBaTbtnG)buJQzpUb4CbmgG zXjbG{Rcou@(i%62@+DFUnW%h`nI^PYniV-#-qIqdcF!ts%_#VriGAz=Y$Io2`_KlO z6*;DDZWdH0`DY{xDj|~yw;&TG5`_2Dd8mF1ytXn_+-kTga_pSRB+z^3RCvCs$TV@- zdm&2(B-B306ScT`zxd&WCIchbS));KImN#-Sx^a?#QD95#G`P3EJtYh9!g6~5nQ~D zesi|@dGw z@{OxtENx!br^Zf|1t c`bzfb7my;Tw){==jsO4v07*qoM6N<$g7^wPr~m)} diff --git a/interface/web/themes/default-304/icons/x16/notebook_minus.png b/interface/web/themes/default-304/icons/x16/notebook_minus.png deleted file mode 100644 index 208b707c5728f0255067477227b2de1dbee8d627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_@5P)NiNzp<^qbg<1$a+90?<9V<56M75A4<5q3yzk-3xgQ0WmkEScR@#K_3cMVRL@2PZ zK%eI4O$aY6e7SO&Glc?wJ<(Xp<@j$l%YO{RWGfnFWQ5v(2H?TMmn{}qm(sy$g70*l zeYA8P^qpMjeEdu2N+!sv9(l*d6@4Z7jIh8Em>6PVH%ZAe zvZ_ZN!Jxu_c9rJS%QROqK^C1*OAFE4KtR!7mhTJ;41q~r?uFgNkax&VI-L|DId6uB z6dz*O8IE12*>1A=u8Y688hOptU@}`(bt&bYC8BA1-QG?fzaI?Xrj^A2L)1RNs@u&* zXXk%>mLZU!SFNqoEVt|YCd0sPvLpuK`o;&uB;asdg`_+N133<%#_914vvn{8`%pUp xMau}k$f9F)>4o5O)YWxYyWJn31G4C#dk<{Co+=b<5e)zU002ovPDHLkV1fhS0?PmZ diff --git a/interface/web/themes/default-304/icons/x16/notebook_pencil.png b/interface/web/themes/default-304/icons/x16/notebook_pencil.png deleted file mode 100644 index 207c1f07471d711d7c7c257ee2a75477a8f0672c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmV;90&)F`P)B zL&9dnBC1sqNSZTsZfeJNs zmnz!Jy z_Q+ilb=qu}boc`a_ychio6O8UgX@7o4G-I^aJHlVmae**%$1cy#~K=_#$;kT`KINC z0S}S;_z`@Gx6bW1KN>g*zt;us9V%-RVMJOc94-^f= z-E7$p&deYmo+BzZ3%W-~1ue5HQT*(WqHj5(maxf(1sUJZ zhw+)mv&m_zwUYn_ItK>@Etz~C6Pb)!!X^@T|yzG%z5zIlmUexz!kMXYy_? zj65rHVDIY_v}Va5MN8xoHi^?BwI;k+o)tN`*4ry+Tl}iv!WRX1GT~W~18Yx@pe;|o zkuA7{O_F4xHHpzP&x#y0JDmb)IT**KKpeL+x%8?Xt6$XN;o&oHj`uf#@ks-~MTbMs zUZDTX7F@z68M+sLo1E~R#~T~nSUPqjpc^{?Fj5Y1p{q-9%O6UhKNLr;$(3md4eoO) zmw(!Dx9d=V!d@6Icfl!(1dJ*e1PxtOsD-*H zV(|k4N*bA1lWH^xX`4hdPG%n8wzqCYSi;G0|fN9>P$PDMoWrY7`pyuFu7kQ&p`IN-*Di^I`` zfpGi^p_q!m*#-QkNqpVig)FHv9rl14{Yv8?khYY6C<@M#Nz3Gd z2Mo>4yCgL0ywk;%StiSIri z^jxkoKra;VbY|uiLnIoaQ(yxLG5HRvjdtbF+g?Qe={WnNRrbE|@ll3IG(_k4JcFZf z2F*-1yk2B^vJA);i+JpEy=I6+Lv%{~7bGOl#cHEn`P1e$;wclcgpOF!M7PuVh9MFS z(FsL$1S2|{nS9yVL6L{Zr^^1Ir{~?R)>b0X5FPnl5>ny@X|kJ$a#w%UNQkU5BX?4-Ts=^~+C;~$*9c3w aZe0V_x~L^)fKn*{0000j{tTL2PcM;f?K_q<$DVw%g zfnFG76q$*EvbiSnV^gQwSmoE|KHTQ!uXBd3&1Nq=od2KmzQ6b3yi}vpQLSE2b?xmW z-)sNpn37F6_@K3w?zgm1Wpgu8azGtdX)>kZ)m7Mk`QeR3uowzqet8*R&1OiC$w(it zX2H!;=WGym_Y!O_FGi*pV4j-8`~H5&l0K7>9FU@1t<`G3Tdn9eTHu(UhbI`stj`B+ zS670pf`Z!&r6~Ux_x_{&!7vQdq&vlA)agY7TxM&8w=a zV2DIRbjD}=7`6McnMwD+03P*vP}ITCIUc}SmFfmVBpRX<<5!T7NHmHND<+$W^4l+c z$ZvDvxeM`nvPPphQT>WYG(^Yd48ZCLV57+`{UmapjpED`BeH8hBLCe49?t+r)!!UP z9u6rg~W4GjPH9m%C%YfqS3KbSyWQPM4S8oNxs>Ac&17 z#V?FFrS8GLvNx{n1#PC|EfdHy0DDV2OnVA7MZ{~@p`4sMVjv;1RvDQ|lo1=LvPY5M zI&`=PP$*vy?zp5^?!K&%^R!=)nOVFuE35K<$eu0PD&5xHmxJ5#nv@(u67UDtk;YxJ S8X;Z)0000 zT}V@L7zXfH$gYg)#;c%<612-w=%R}XLI_GDB)SkR%8#6xN`@h+L|}F?f|NeI(3tqq zm6bsWQCgc=Zp_VX?#rp0W9a7Qb~ZPiPycu6aJCLS{LeWrJm<%I=+VFcwG0kY>(CJK z{r2-Ek@ElKcynJLJ?QPF#-1Lc-36`UZ%f<#4?zqx2{2F2_#Civwmod{v>(a zV8Fu4N>btzA1Ig0?}!l9cXx9tqwzSnBqWCE$elyO$(>l;L6o((SBnragE_{zAPn{( z(n-{YRg5bi!#sHvF8dou8ymRZ)+Q4nVg_?Ign&yTVh2(*nj-Or{TLg)jG(U{dQ~YF zJU(1$YN`<-Vg_@}3n7>sA*7S2e-FTDNv8mgFcYDS_YBf$5(&aG|=q?p#$B5i^)$bxN=-O4uvWs6RljEJMKA z3?hQtR0-q6HI&`Uf0>n?O~ef5@bBW1xYz~nuPqVY$<()7uxn1kV>tnjITw<*DRFXURYyF-uQIy1;OK$8yxRv03L5vO xR(4n^Z`nW3dET07d;Nr_dY+PUCvTt8i$CG&!!A^*fiD06002ovPDHLkV1j-WO6mXr diff --git a/interface/web/themes/default-304/icons/x16/notebooks_minus.png b/interface/web/themes/default-304/icons/x16/notebooks_minus.png deleted file mode 100644 index ec879ca27c1afd2f6038c071d38e756c2f5f1f84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)TV-w)4Aqx19hVqt;CJRXww+V^#4 z;0!K5o13HI*;#VU%n+Fa#(0+^GnlVb5c-orx=_GjE{CLH;H#=aYD}wjK+S@SgOPX^ zq1X|E(KP&f2T*qt__($PSyE?O%>fO{Pu*_!_dozE8$N`SNu;t_#5E1>rKLLd-rh$H zH7NhsPM=c#w7v;tC)QxH6-i@gYRbV-br_G_E6>FmTo3cmT&gMW3yqoy}izxrl#;aqSquEq9fNOA!VM0%)@N5$Uhi;eW!Ry zq|%kHE)tzz(JTjKVP)d(?#Gkn=IC=G#SGuUTjF)W*4g=33?xKWg^`(*7_pIEdbsyu z4?l)$jMDLHIoH;9`@G%m`XAE6y_e*N9#gmoj z7qc?ZK3ED%ZBFLLHZ?aJ=A6!bx#|4(oEIIN%>zH)_u;(f|NJ;FJ!xyBr|s>e?&u(X z-#A|oRBXf1$9g?IY;C35mKLJa0JV5>Q&1UOU&r)Z2!VJUiz_Qwh(__vW&`&GIhg}C zEJU-?GatdUcNxyv07ifNVVm-ytFI4S+!y4e2BaxJ(&=>l4hOo2>~JqEU?~#8d@u-| z$&^H1UVcwNY0ASBf&Y|04UWJ%=}j{k^8}#OYO4e!ErXRtoXfB|0#b-|d}=}~nd~&N2J5T}0}hFb9c+G>s%$V@;QkxNfXxNt z%SJ%0hEXQ_Nj7%m2KR>{zFOY^i z-xk6((TiiHrT2GbWf2wE)G&AWcX3EU?1J~PY2x+tz-%g!hMzsy;VdXV^k%PIUb{Ot z_XZIirjuo5bf&86u4^_T0wPE?`6V|0`Q2G*_=RfEE*Q4AeOVZVU(u?`z>2-muR zchc9T214WLY%WB})f2Bb2e#Hh)?ux!h#oE%?;JjU>d334@|OAsZ~C66ebZtW00000 LNkvXXu0mjfsS!4( diff --git a/interface/web/themes/default-304/icons/x16/notebooks_plus.png b/interface/web/themes/default-304/icons/x16/notebooks_plus.png deleted file mode 100644 index 70cb2f49448bff2ab967b892294d6a0a3916d19b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)@I3`7sMD(r(_MvlMPPhF#=f%c`vj={h_vJj#|M_tqdOS2lPlku7!(t)% z-u}PLH0?swqrpLXFfc%E{ryCR0UcbW$uy^PIe31@5#8Lx>c$4bsT4lh?T{W*T{>Xf zf}73$U=p6dI@~K!IF}=^FNH8RH3eDHXQ~SWij*Ik&E_vI7ba#M@P)%zOC}MF#b6#C z%~RLdXke&F`TIh2hw}K$9Bhk$B9nQ46#AYX9Ye}6L}|{w4!bL=gxG$pVb-~pSN`m9 zz#9tXO(J|jQ&(3DLuBmh6Kgots}2Amqd2(8tKOGe`zhDbC-C(ExOA)A>DHdwLHM3moroW#lZ zYG@<(xn6);r@MRf**PN75FNKa0hcd`Mt17HQIX200000NkvXXu0mjfLq99- diff --git a/interface/web/themes/default-304/icons/x16/paint_can.png b/interface/web/themes/default-304/icons/x16/paint_can.png deleted file mode 100644 index ac2c4a3d19ac3403896ff00e1a5cc60357ecf1d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmV;30(bq1P)6G}5~cZpBgqs&qCg{MODIekBk@~A+gJ=%2bGJcSao28pc0MYIuU{ztigzO zqOpU5CE`J&6WIn*Kp1lDnjrOh!gVCd1({vD@uLuh*v(3I&nN<%C`}8V$L6zi0<+MN`uo7HCp^&IlDiWJ%9|ZXQ{w`cD*KI1d+ii%)_)Qs^XBtrh7aK6Mx(*YrBVs9*(|KDuR}UL z1M~CmVQJ|TRI6>c5=rF76AWB?S|8_ShG7oLbnLmgH-N_qv$L;Rd1a*x4D%a?hK3#m zA8Z5il^i86FMnjm=60rXz5a`peLmlyLE00Y^DPA^Y`YLzlE;O@=Pr3`YZuIB^F5o*HsE%~|CK*%zr}8Xx;C zMfwo6SS$`;NP2a3o0VlUSqjS&#BZmN6Ugz-|8k@sQP2P-auPX>oX1JVFepQz_xSEY i2NR;{NOYVti0%&)i=CTg&ubL`0000sp~Q`v@N1P;O(4?o0+2v510G#Jnw;XPnZG#eGCynF40Bxy5KSB85VMii(OH91aJu*=$7ad_Eu5-JU}?`+lIN z?k$8&CetAd219FARaJ>pDz$RC+`g==tP(Pe!C;{L{Cs3}Cieq+z5Wmyji#B%$z&4j zb~|9V1tZHCsIIO)Kx%R#k$^}fLI-wt6C~1w1FHW9Qu5Bu4lM_RK{^l!1Ymi216VAU zi^t=sG6que_V#vK_W68tU~KFqjE;J7gaV;Z`0#3X^yiJ7sTArVuhoPY% z2!%q>)8hn>XA&kR-a<5*gbGuax3P6#yaoaiT^sgF9=wlTeEJ!r?Ne}havcUK08RfQ zbdD_0aya}QluD(ova+(2oD-qy1px?1HU9ORGX`*d1;Dbj&%HGOb?--5S=j=KMA9ag z%Vk=v76~LxC{Ox?09@Iy0}0w@-G!|)q2tZI@DYnUUN*K4rcVH69dj@^wF>y`-z_dK zmJ0*|l)4xNTEsj(;K*=M+Zx2liU7uNMy` Qk^lez07*qoM6N<$g74l;`~Uy| diff --git a/interface/web/themes/default-304/icons/x16/paint_can_exclamation.png b/interface/web/themes/default-304/icons/x16/paint_can_exclamation.png deleted file mode 100644 index 51516bfae5d84046b9d00c1662d60a1dbf8c63f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769 zcmV+c1OEJpP)T##)ZKsl$AuFsu*Ol&}z?MzMUs64S^ALMk>e zQK^}JD5oicXrY$r@&%nvv!R*OO)UKuobLU@7Uk%|!?_>s^E(I5h3xEX2tiCnMn-`~ zqbZU~rKh5!qv2oT5^n>0LIq@HW#y-(r9nbM0!Sp1GCrRVJRT2d6$*urdE+fyt=xj# z(lvne^z?lgjmGPGy*@@Rmz%=E!YUbtiJ{Fn91aKs0x(ti{{$o_C+|b6)n22r-|t7W z*^I=^C&Y#fNJ&Zgi$G_e&xiB#^K8K8rjLeLNPz0U0Rh?T^|JEV*ccno-`|f;=Q47+ z-0JY~a8<~FfV{rG9+W#eI@o~b=2o=X>?Fj4VzId5N~wE0@4;quFd!f=PSv7wP>&x5 z@8Q6}09vh993LOY^71NdYI=ojZN2Dr`!O-yV$ZR7@Z#N-oS^Lax`Cb0zVpNBH9ho>iy^1oKtWcp)#Oic95Xo}ku)L0fVX;rk zz+q!f4|hh6thmnM(ri3C0j*233ViQSp+O_CMny#_L?RIc4ktnf2aZ1~J18^&bk#F9 z*XU92#-a>27Ea)v?+#lj&Oym;T{*`=oFjxt!XW~ez#~Ku_+ZY5#->UbZ@do^^%dZ> zmM{y|W@e2-@5OoWf;@~TNC`q#0-)m@BZz+k=RLe0r1>i~00000NkvXXu0mjf6QpJl diff --git a/interface/web/themes/default-304/icons/x16/paint_can_minus.png b/interface/web/themes/default-304/icons/x16/paint_can_minus.png deleted file mode 100644 index 90edf3f90b16ffdd57474d22b89604d013c159bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmV;X0$KfuP)fHkv@N2C9)JDL#d||tb>QRv{l0VH9Ee0BP=>ltD0J21 z@$}hjwo_)a8TQi9d>4dKE)WifdpkQjp|P-BK%#z(k3@(sF& zHUNUb;64I@z_qrvwmOHy(WBLBM>vkFW0T2bGN`Jmf}VKkPoTZMeIG3?EmxRaDwVLm zzaPo%CF;ut{C@u~#F>l5BCf5i34!hHB8v=Cpy{6hQQq3x668!KBLq^Z6fQ1)L8VeT zs?+J3$_7Mvb8}OYXJ==Hz|72RoSsfngh!*%c>m&1?)#;O+oMuIlnaG|B&XA993LOY zY&MI-!*QINdW(s~2h8P4*c=>8b`A1)VIbcn$vn^RlG(B+Cto0KD~^p#2=e@V26_G` zy4~*E9XD5y_zZuO=jPrE%NA#5az6h`Tixm?`E%@@xSxH`9{faJ^tFN`SwSk=zW78`JGJxdluV@ta z^8A=pke8P?&~CS1cRHQ*UauDn_HL+jJYk@={%H&z08GXxG61l8hvN#5EVURX`I$e2 zOG`Y`*}qj&Q{yxk3?L3!wHFk%k7Eb)KH*tOR1!LcLgBBds2E;YSP^8EN)@BS(?Q>k z5Qm6^JO8VRYC^*TTH-KaAx_BU^79lLWw3jCcX9_Cq2H0%a;${$H?OLkP&dF&qyPW_ M07*qoM6N<$f{`scTmS$7 diff --git a/interface/web/themes/default-304/icons/x16/paint_can_pencil.png b/interface/web/themes/default-304/icons/x16/paint_can_pencil.png deleted file mode 100644 index 536f926d38f570c6b453aceb38ba7758f339ea15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmV;*0yX`KP)Dl*%xn)`z&eG!YdHX(*HtIbJIPlx?v7u*DK#R^nbRyLNEl|gQ9E~KWW@(P6lzzuavWw$51AR;)kw9W%A~?Ile*+~YB?l-hEWAYJa5#)E zmkWv8NXUvAu-Rq$yV%8MC@$~!wdO!oPFVqkpy8IFxjl8AsBji%$GJMg3aez1oHqVm?(7LymeUi@G% z;HTkX^mw{)WMm2_CSGG85XJ&W+hk3ffamXQ)-YKR1SU^UPvfZT79!8%qm&fv?Hv;3 z*;zjd!Y|Cv&u=Zgwt|Fp*e}0*)lY;zj6@=MqoNweTHQ?E-25rZR;xAJbm2Wx=x=du zY-})j=5Y>2zTU>Vx+d)G9AI)F5MuJ_Qa2p8&me^k2OSdU$9Ka_9_%`S-Us)Xyt?`g zO(s)IQBhGgofA#o6ADt`teJzxYOdbPbE{E#Xn<$(^71z7bh@iXqcO{3v4C1v3rF-1 zDX7dE~CoUr$R*Gpf~Uh%QO81*92${2`SUp#KWj zfxp*r;4Zgt#wclzkB|4v&##DbLP7#hhNqM`M+qr}!vq;YPDmywXb>B0+{~#=u9}=P wyOObEeAB%(%)iW-3M|IHNM8o~FwxLpv~kfEt}UWJ;MX}9??N3Nc(@$SeV%jR9Ps&kP=aQU$8*(U zu?%W7nwHwyTG)@F{Wh?pRKV-?4s>^SLu+d*R99CAWilB^rBa|@rBVqOZhQjRoS z+XisE-3M^FT-WS&d$Ufb3&`d22_BEvOgH26`JhlJATU|@7wGKlJU~ZB#}z6U3I!Y) z8A0L>5cDMjPN#DZ+|K!Y9yd2P*+4Frr;$+-F#k8e$vZnctQ?QW*+4WJ#bojuibSHR zii!$z$p9y3v)Q7&xVXp$=I3AH++2i27*wm(cQ1{leqFwon<@r4d24H{D92(k4243N zNF;E4d=h78-{8W+M@*#(*zO*U^o=sudneOZlo^KEBhzDt!_SahD^5>8W##4NI5Ny1 zY-?+~)pc_n315Medt-iVe0v(5?|N8yY3T!dY;I>NXEMK8+2L>)Ocy^Rg0sv~ zf&|7T$*Ob{@`lU5udJ-IvREt*lE>3U)~g7I2<5x~O9_<(84bt@hvA&?75If;curwd uAP`JZ%F4=m$l8frGz8_YM32)zQ2zxDlbzulCOJR=0000O+`>3N?l? zi6-4I=>0Naw^REI556>cAZ-`CZjGrHjd3wT+Qm$U# z_f$XE#aaB^?hhYZe4vGYRDyfQ{w%P-A+{sI=J}k8GxXKf71p_2SmSV@mBoVPjy&jn z=K*VzJXoFJf~MLY)M2~$m@%dcEE~dh3w33o?dv@yn@jDv(9UK*YvdE78&?-R0MO0?9GyD_H`85S4u1`BODK+pfutb7U46@w5}+6URu zmt;ioMJjKwJo4L|M!44bBw(=OnrTfl->sW2`&CN6XVe0Nh{A3VYgZwwc?En^Btycjxp4u5nup#xvEPA?rZf-TcMMM{)4)GX30H+pa6YCIlEa;v=mGUj3y(CJHUzqo1BfYq>C~cmPv!-cnVliM0GO;}k(ZR;DD8<7pt7 zl=0R^suMvcO@Oi2JVRjYO%l)r(~1;*r^x41MbN(LXa0@ z1K*i!LE2O&QW|%L%=JD_#@L#XF1TlhY|&w4Oc&7i*t1n)@t@4leq==K^mqOVJ6ji+ TTlUI(00000NkvXXu0mjfJne8r diff --git a/interface/web/themes/default-304/icons/x16/palette_arrow.png b/interface/web/themes/default-304/icons/x16/palette_arrow.png deleted file mode 100644 index 4a96f6cedc85d6d1084473accfc9636ceb75cc82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcmV-81IPS{P)I@~P#MFLj1N}aoeX9=Q{Z_!xNr%3U zkC9#phI_=&6s?3hc#@Q6tl0wFs^BSd)0Lp+ukG36Uz*dt%_#1kh0y(@mKkw`oY$V_}rLm@mv;$qPcVN?DU?WyNU?h z%Cf_=vT%IXp2s^?bQjGYC8hq1;!8`~Sf55=c{o7-puZ^foJJ52u596aKe4k@O01I$7W45dSEE{5VT!NeZ7+ z*rX72n+l?adR1{Smx#tZZ*)u~m;j*x@O}8x5hJiTx;?C+LzS< z>}}zW9(X z9T_oQ9kJC(`d`#+!Skw(sFKglrSIncE|^J&XyXx=8@4jZtM;{PF)Wp0NFss3)fI!r z3ut`cgQ0F2K6go>%U=p@=r}peOyLAhrJ>^$mW+^^;f5cv$F(>f$v}XSl+mi-IX}m6~QZkfId6}>e`Hqe-pV;&3 ztRx(FQk`Kg3PW$zS@fu5+GzF=Q3bHd0ps~mn@(we*iSd;t3C&A{u}y|97JZdAUxfK zl*p|rlD3(>(2^PU+NM(s)h7G5WCc1D=;eYZoa~2`>+KqUJTF>^(;4wds{D*I`cK$& zR1K0SV3$*FQ&bei_qn`}26ZPlSdv6jjTLgC)m-d>fu1y6y&*)PQiIh|*@zdfso(^5 zltPxA7P1qRR8nxzy@3;?Zl9(-Bjk~r5##G$Ki-AW!CchqgRnd904^QhZ_V~+6YOCc zBuVRd9ES@c-0I$y$;Z0XM`1`<-*j!~^kRML3|n890)Bpe=E!_itE*r`4YCwHeICAQ8iG zS(f6!IXq@D{;?~W%O|{;Qn?pXl^nn{Xwn=$SXx%2waMMS0oPlbmOz_5xo*cs#+wsx zdrbT;nfW`ZCz)H#hI#LLUM@h-3l|L9V(gv6Y?$>nCz(kn|EetlLar-FN_qk@{0r{> Y8#*c_OnIzbQ2+n{07*qoM6N<$f}5nEwEzGB diff --git a/interface/web/themes/default-304/icons/x16/palette_minus.png b/interface/web/themes/default-304/icons/x16/palette_minus.png deleted file mode 100644 index 2d6efca893c965765a62c9927c97e676d89881d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 786 zcmV+t1MU2YP)ZS|pZ?J;8(+7rTv}#_xBNyYd*?9|Z)yJdW{n(Vi`{VPRkh34!@a z?%LX5#hOXWF^{RkVOVt*RQ!Enytn`N0y-X&G;Gh8rVh^d=YRlM<#NHw;Xsd<7c6TE zLHCXURwEBA(_BzA_<)?bgO4+gWPy7-(@vIx&7H-6o< z#zTFn2aGhcU_td1zR4a;;Ou=QjU+@%nu2wcLS$Ps<1bk3%?EP+m+sbAkWe!U@s)#+ zmvBLf%FYvoqt&c0CWX-2_bg(x=9)`mH$SkSEZZt2pR;m-OH|Nep98^3G)#rxo(R5`n^xtuKrZoe?Gg{$_unSHl)>tsU;=p}40yy4jbir~W_^`L|F0R4xA?r5oXpw8FYp@|xVo};aE5SQdJD3V@L z*rZ;Zv|^N{f}x4CK3;p*{KCy?%@P#_e=9;rOJ)hoh3q)uMu|u{K`F`fr?m6^DJo2v z?njaET+v6)PGn$H(O5DpF07*qoM6N<$f=$wAuK)l5 diff --git a/interface/web/themes/default-304/icons/x16/palette_pencil.png b/interface/web/themes/default-304/icons/x16/palette_pencil.png deleted file mode 100644 index ee11bf4f4fb32f1ee5503f5705d851f50ad12ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmV-31I+x1P)GsAsfdrl&?&s%P0z~wS$`EU@z4ed`u)smXE+>~ba8@dXQ=SwQc%(^gjo5v3y#S}*{a z5nk2g=^19uNJ;SLIeDt4`;qrZ=_UQjHlbrLUG}?_{?5omT0yzJP?*;a3R@2dd*C(f2ZHkT=uWI9vj zonp>}N)q*RN_qz-t9WZeWj-r)IYt^foE6FVo^gT7cQvKhW(L$|mWlM~j^l?Y?|54( zH^rW65ZY4;u{-s?G?|*F!|9RKn3E+5$2kjh3>`$ebOHU2T^l7vTP1NRF)WQhdJLuD xdJ)epcL&g3q(lC(AjpG~MEg-TSG~3$_yyWo^|JWV2O|Ig002ovPDHLkV1iCwc7*@{ diff --git a/interface/web/themes/default-304/icons/x16/palette_plus.png b/interface/web/themes/default-304/icons/x16/palette_plus.png deleted file mode 100644 index d0032fc45b769461defb8f1487403d101b82131b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 820 zcmV-41Izr0P)|s3b%K#ZNnt6q5`svntSmLnN=qv=ywJrk!xD?MO)Yh;xp3vQ)Kc;q z=G55C%e0lwybMXjP!pXcuDoP;SG2eHjG_w>K`;C`yx;krhx5-N06_i+DfeTNN>mlV zB-QA7Ad`t~m4Qqj6oGCbA>yG6Xdk|3(RUU8%wGy9Jlu(*TK%k_4SIM$zndG3X7c9d z+A`)w)ZFo|22XgSItVKM>H@sC=H~(nTrM|8T4#+^a=Uw-oM4v6gBdOt>Np&jY)paH z7p^d)je_X`9w>{pfg(Vkj~QdSz_KD>u~3uk-!R+qaABe$85(SDL2Yjj<(8JvlMoE! zuae+pi9OUma|C%d2Qn#+*NS!C3WA`>+#EXMPyaY8 z3xUFPE9fW


=y@KJuX2eVg*%!d+9G$zlFC`G!9KdC8u3}LyQ5R%yj zNnuB1 za@&P65MfF2r7bOVLHaRMMWTxyN%b;T3}b<>bT_Qcg0NoU_D-)9|` zB)KxA^&*cxO~K_Utvm+$OStphc^AjmOIFS8)_TJ4h{QxqXDMVxcWhnB@V@52NQ>Xg zsNnBqs8DUJBSX3&bjfR0tYJSh-l%KiyB$FIM(sqftd#_@GUx(5wDenv#a~6US}b}u y0Esqi!F?GrApbme_~V2ux=+sOt94I$$N364fcLDK%73*00000Nkl@lIZ2X`%;#mDB=nDqhn2vG@5K`D z508#eN}-fOYmG66*4i3j7}AX*u5WI#zOg|%=>4b!w!3nPPwwvR-J4D(1jf*8wFtwo z6x6y}+ubfVBY9E@+=#>ykG6Mr5#D1OjmyLp+-Nqj-m7{BuAV`=)naRBhuPT~N-5-$ ztQ2z5lJp+usBCLn4^iP9p)s(&&PAG5B2vmy48S?8r*=@(4z%?ir8P|{5kg$LzD5ur zrNnwq;m|dy7Enc=Q{*{oQA9fo|9S)Gvl%)Fux`bH^;HkbTT6a%K|GzJjk!cFvWz0j zP^Am?F9+IL%dhbmgg`7(u3&_~7=vAH;bqVB{DA;4!@+>_I4+4&E>fXXiG>h&=g0~S zz^hLl{q3jc;3GV}Pp4rFqSHY@MUYYbJg*8O`4v ve!j|AJU(O8KjjWE5e}j)CMP}x$pVrz1w1(87+zq9PW4S<@@fr-?`%DMFoI>%RoE- z7YhbP02HRUW1yq|`lD-s@Bfo2BM~NtF5D^ADm3LYOXqUrG8tU0(OToWE^a=L)*7A9 z7i+DV{aP3-3rsB*O1OVvbQCEiQc9Fk*tSh99>;MUYLZDB8ycvsug9IATq+AR*H|UI z+}+#Tlg(s^*fv$M7>?r<1(hnViJBUklGburU{6w%@Je%A8^RduXmmGm2aZ-%5f~#Y z9)uMS60sQRmKJ_&ZX%_`Dv_nc+J2H{3}HyQZ532Zl!PIUZ9{D>p6ixHEXyj20fZre zq0&L2(t!$$K`KR+Wg&#vHNI#hf@N6*#!v`R6;ee&7JQ$A?-NfZNjT0Qe_(j2i+L|a zy7|)npH_l`=M`@)3788=7&v)@g6W{s8nlaV*S8`rU&0HgJ{561Vk$KTz$ zm&tycd8%LEpAbL{NI+#Ye+&E6$W4RjA-_K2zqm0DeX!I!jYn zX(xi(X<=+s#HcZ*Fv*#i%k6INX2&9Tn=4Fto%p1H)HXNj{J|_+6c2Qs_XoTP>nEMrlnDh8fVa z6smjh3q^Eg2Yx>_tH3I7jJ0$itueHcgvQbmaTIm1LVfu)rLFrod*K14p55r0-PU_5 zRlTQDlvxi^rN%J-{W}PO=pa?Is4WF-y2!-D1b1&%$XBb#!BF-elpl#}%A+RKmlJ;zU+!7aQ&=$u-q&#W55Bj??mW$cAzdDRwu&m$-n z34(wi2yhF__@O}f(|FE2Cr;ibua*fnwLDh```c|s1+W?DyEM$T!7@8H4o>Zm7#cY? zxT(^oU2IBFIZb2XApi?=jr!!PZ;u6#2LeF-IeFu^xB(pe+f)jHRf?Ct018X|%>SbO Qb^rhX07*qoM6N<$g7AVs&Hw-a diff --git a/interface/web/themes/default-304/icons/x16/paper_bag_minus.png b/interface/web/themes/default-304/icons/x16/paper_bag_minus.png deleted file mode 100644 index fa334ae2ba9905d86dd5aa72e113088b9ac2f5e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmV-O0=NB%P)wLR40T}biZq4X-=J$ev4h(}TU2ZSPc7U{|QPk56?kM<}? zOIp!bYn0H`ZFZC0o$;{AZi66w@R;{z_;nxCgJH%HWNeai_J>v9rzuCJ~(`@J5XF_bG6 zeBaLqwa(XSz0Q@I?BoQOYhn@~E-o)4oWqn#)4(%vsaz&?P8Bt)^a?) zDFDoVyUl43WI!p$uK2#&;m-Q)vw|)F&DUF7=+D0#8z11|4Q5NmAZBL~fE*W6N`+ck z;8p8wHgrPJ@BaK_PucwnI|8@}EZlGMWVyk$^NixbF?*XkJO>U1Pywn?wC0?a0Ks2K WX2)C~hq3_x0000O4or)kRHr6&)1`8n;VqqZ?5Pyn* zq85sXAW94Bv+F(m%QNOm)m-MHDA?9R-y$nGZoAU-&}bKm70?!DY6o*q{K2sjCB z=Ks#5hRXm7z4W4?yZ7{sQ&F}0Po*?XMh1^wsK+YSjhx|^N|Zd0!1wWepCAYb%4K}t z$1j(cV&7-{W7yX)c>XD@^WMp!A*7T@DN#ycSr(~u8r!yM&SY5I+DglsH3SnQUmFG; z%|@M1ZQHqXN73^zEsJC-g>BnQhDtSVr@5K+8Dpwp(3TN(KHbsPh0q!+k@!`(f+vzm zBCRDrdQ79@czFg+Dn)x|C-a2@Qc8@vSW1jqONQ3OF~;U6n$nEMh&0q7iDPWbBGb}> zGEGd=M49GtB>-_uB4@NEXY{=Y`iwA!8dRh;QYn(Qjh#$lS{71Dgb*ZZM&G>!-i7U* zT>}FL@^Dr~%Pq*TS|zMjNoO)Rw*AKry;AU(nNkklR5)eTNBm_YSb{2w#tsr6-w6jTNmBL1_3m6Nr5jzWe zAzFweMlhlnTm!}+o4DlaW$(RvA7imE7aurqnE%Z1|8wR)Gveu04S;}o;3)q$ss@$- zG^Vv;;Mm;4gBwW{{gbIO8CGsxzTL@nYPx&U_dL9Moxu0;eV-r*2pSE1-^Xt>TDkAD z`6)iz6?nE4ckoMdma=V zhtY`%zVGj<OmMN+H`ll2&{ zb81JxBneR%;<+x`viitzv&k#(3$y3W^JMqlftN#Bnx?-3ohAu;wHgS4XonPnMX}18 zxCRK^#Kkm?Xlk*FVNJc;gVSSzB;`_O=orBQ(+m z{+eS*MIMpn(@o2r(>x<*m?yvu-Ir0P5 zWK9D@o8Qdn+ZsEKhf6R1^ns?@ac9;!sS_t31!=@h?+UOZ00$^QuQh)i^VTAXnMR2< dmYNHI_Y*F!=p0e7iNpW^002ovPDHLkV1hARBo_bx diff --git a/interface/web/themes/default-304/icons/x16/pdf.png b/interface/web/themes/default-304/icons/x16/pdf.png deleted file mode 100644 index 691c39335cbd395f8257130c88b4314f3e7afd79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`W^7<;W?^RHY+>wXXy|I_WNhT<v4~Pj*wm=R%;iu*SQ+p9GS@#GByD%^?Uh#Bs45_#^ zC3v?NbD)52XXgX~9-+xMI?i7*da!td;B5tspG+G?F1l%Ny>Q4q`4gj%u4vPOtx-GV z7d+zDPF~bKOCb5i_tNiq?@BjwJv#8_%(=V9#cA)>w9jbz-`#F$_c~BRB%rGP`EvQI zT3eqM%{;C(mFs)(N|A@2I&9O$#a*VUEL!zyz7_|Q=km)-^ge7_b8nfN$0Qc#>ns2I z&QuZNOfiy-y8k-QFYszxx$XSpua8-6<;lt1dT-hJo10%TUB2;AaO={`!Wt7fz8==q z{j;aBaaraaqqV#|4#MXu8OsIdSKrd%{Jml4Zg!JP_y21 zgSW4npC`;WS~>IML=TbHtylBe{0vs-T{Jx+{=k6!{9)!V_u^R8)f}Uu6ZM#y)P(0P zxcUA+{_3GyS z^7us=o14u!pcKb~2pzMy^f9pYhJ8 oso9h7^!HBs^wspI_dXU0hUc#eJp0@xl!MAVPgg&ebxsLQ0RHm!ssI20 diff --git a/interface/web/themes/default-304/icons/x16/pencil.png b/interface/web/themes/default-304/icons/x16/pencil.png deleted file mode 100644 index 69810272887e7c7059e8a83789743d0b0272eca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmV;S0bc%zP)aTWDN)3YgO%*K=W*b)av^F_vKq}rLI}BVpqARwdK#tVBt=e2 z4$H}bnm-q=F7tDkrRqvy-za;-%~h!ztt@%LL;rLMJ)tuR+@ZYRSIhkYO)-UxxO-(epp zgxBYa2w36VKsaB(4zJI_P@fQgdiHG`Eb5+@$+dy zogekSo7fVX+nq+XgR-PP@6_ywM5i=a81sugG`BJ?o3E+33Jy!$+bsd09;gFqff}F+ zs01p2a-a-w0wsU|s7b#h8f!%dx`0lg9q<5dpb2RB3s&cZN&&|&c)|&w>YIlj00000 LNkvXXu0mjfIXk+i diff --git a/interface/web/themes/default-304/icons/x16/pencil_arrow.png b/interface/web/themes/default-304/icons/x16/pencil_arrow.png deleted file mode 100644 index 91efbde7c1da01c6ffec6b91611b6678d819691e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 567 zcmV-70?7S|P)Qa)BwX^0Wk)^H2-*B@&D@KfR}w03=iC1B1H_6JY~zX-@4bWw4+7g27_SeFnYuOV|y-r8#KIdIpF2ukagyOLO3) zwG4K1p3ekoJ_DpmF9yW`Y?@0dO&D}r zFU$lgJOjeq@vF{6uf6+!!lVEHL42TG48t6t^A=Pv$jzKp5l#^M!Z+2cG-?AH)aB#ekA=&$Fw`{^tZSE^{@j^8zt9Z}if0ItTy%=Z#r*mfN*94k!lBME^7V8COY(Fa`qI20*L} z#9BbC2E>X$40H>FB*;J(o00{r{bz;aO~VAlu4z-vU;iU2ind4SPqEYj=sXMb9)^wD5Q z1_1VEMCXas#VlDlolcV|ib@y2NIRF?9ZUR8?zw~Io!9Zn#Hc`nV(C|%PFL?>Z{Yo( zfUNvIVIyVOn7n3#p)H%WP^r=UJ3vhqZy{W^X`tbl27*U%^?+RYK_gDeeduRYGa!p< zK(2h_JiL6>zozZmoM(pD$Rk|K0M3d4wQGlZ@nBruAO5lEr}vS4VZN4n5IBDXsL2DZ zs2%Orcoq_uQYMp$Qqvbwd_CevE#r59n%rE6Fw}{AqJt&U!nA|fn^R)aO!7dX#QV?h zvjDdhz-xm|9(!KxeEcK@ePuITzQX!XeTdKQVbj!`s@aKg13m7y(s;C-qGLN}d7tk? z;~BsP3)a!ROy>@x_p}jfsw)s`EeOFD+%X(jCr!n6Q(P&{+<@1(QbsStJc;k~Z+!K$ z(m|F=?9gw=Dt2f+qkxg$eH+_ip~5f8cg2)^yOkE_?3v1mNgI<7o6*hx5}7NoYePN? zY+l0H#wcbKS&xJ7?nRK@PLMrLhDz;z6yo|>WVB3 zK}<}94Zx!-G+&<0k|}Gl|T%r1A1XOE(7pso@K?r01QAd#%cgA&Bz*Y8h}gl zLRn1B7zW_dJP)XO83V&ipyD&=7$nXx2dHR41%uq&O5WOcchmlFTV(PArnxtqfnf#% z7@zqb7xy0>gTxsobWm!lv2c^{(piK=x#poC$ z4ob#7&#o@}pA*Em%+ZiB7N}kvh{b?d1c(KJm>-CFftVYJIe?fAh*^M`8HmA|=zoSk z<0>f;#y}w30El&gSPO{NfLIZTL2i+R8YqBd5GxQf0RRWbFD6}$UG)F}002ovPDHLk FV1nyYyrKXA diff --git a/interface/web/themes/default-304/icons/x16/pencil_plus.png b/interface/web/themes/default-304/icons/x16/pencil_plus.png deleted file mode 100644 index 9cc6e2d38db967a2f45f51c099b44b3f5ae5f1df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmV+g0{Z=lP)3_38YHNxKT%Oo5J5pLwA7xKB1!Qtt~=(&`vK{qML^>T(bf^srw0L6VtRn8s@0034BZ9-;?(QC+5(yl@#A}Y z(ZrNfsg#JvfG-+w=5x;|uNmKG4Ls_?sJ-%k??LcMyF}fGPjI2#UlH z^=c}J?=_W~@Hre$2UyAD0l?encsjsNZkf&oHj97_53p2V9bhL{Me=}H(c=NO^5P3A zh8f+cRspv1tQ%M^1XewIPck56HRkC7w(?9a5Ge@rW?j;8-7C!ASdZ|gXb=@kBe@@v ze|p94O2efo`$L()T%JT%E_~uXavd{+py>e`6G>eRcT%)prP1zoLRIe3ZEAx=X{VV1rQ_EB{m5e+~sS&6;qwqTqp*bTwcQTHDkla5+r06sK00000NkvXX Hu0mjfPt)S} diff --git a/interface/web/themes/default-304/icons/x16/pencil_small.png b/interface/web/themes/default-304/icons/x16/pencil_small.png deleted file mode 100644 index 921f23bc92b7efc9ba121f4b5fa2c93bf61a1e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmV8xRr_qLOc6QTxB4;r~WP z#)Bjouxk;cy_c6)&iC)%|GP;^_04Bsa3k6Pkme238Ml6aR{38^NvT#yNJwuE0|Rkk zfUJ3H9pgSc>hgF-JD6sY3>XG^fgB6~DZh7!-E>i@00000NkvXXu0mjf_%>uG diff --git a/interface/web/themes/default-304/icons/x16/photo_album.png b/interface/web/themes/default-304/icons/x16/photo_album.png deleted file mode 100644 index 27747ad29df08c1ba11d82dceadeddaad8a9dd29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 zcmV;j0!{siP)W^0?+iP~ z7;pt(@!Dg8AV31~MfuCOvA(vZNkI2~AK&+}V+|zqN&wPYl+o#F4u(F`QhSWja2Usj zVk<`ag^f4%R0KdY|3^itg=$f(kS-qJdRQv zsZ_M>TSrKfY&N@B#{(gb+-R&yktenN50Bb}CAu(Km)++*?^*CLD<%0l7)Ap3ftsLJz+cTUaItfnI0ynv(`4ey_qmxpjp@}?icB&I zfDD45L@9-)X&kT6|N94qp^<(*v+(xw%sZe8$N{zhUI9nDOy+iare6WcPcDOi4=e)d YKmIBobnb6%IRF3v07*qoM6N<$f{mO(jsO4v diff --git a/interface/web/themes/default-304/icons/x16/photo_album__arrow.png b/interface/web/themes/default-304/icons/x16/photo_album__arrow.png deleted file mode 100644 index a2572e8dd37a192fa51753ee10cda6096715b129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmV<20wev2P)BcrhARag6304E=|5iJRmAIxJYogPi#DutsI zpKg`;EkgSvJ*aK!qCXoXF&Ji2u|+za7TUiAwryi6#oharAWA4I8c(#Uk}36Zic3m3 z{4B-0!3pU0FNBn&QmN4dw&P&AF7MuaXQ01;8MOxU8Y5Iqui(eWK0c*0tXMjkqgUQ` z9z6Br=}<>UQUdZXfrF(KO-&gfgAjsaFE`QkVg^=r1p~t$Q8LS>jk7AwUe>D%%9lwA z$Pt2UE{BkkC3}+o;;ubPv9P|3FN09%fDJtV2`ksd=iEHswnqZSNDkb=e)ex(HY&b7 z;YQBijv|DhZy;^QRWAo&|@#3%pAb!#yI O00001v7@3}WOF*Qw0m^2l|#u~JkA~TALN_8Rrb#SmQx)5B5I~7@I4<7A4f$=W= zRwh|*Te_bh03Zm0aS3QjDICXPWMrfXyie==di)gAt<%{G3xPiY1aS1snS;#%N-2a8 z;!eIGlum=XO40E*gNh6)81 zh40hVzJgdJg5yKf3e%Bn!%>QAwJIc_d!C2qdDLZ$y@yWD(q7%!3BZR}r-!yziRJ=?%n3QsAXU21FK0-;Ucd{H5{;cuSaJI9N%&isVJw(Z#luIu6`#kCs? z*}BCh-m0+TF&t6H_u4THNj8(gw5}rLPRix7rv2Z*^*kKk=gFfn&i>$adYm84p8 zX>D6i|K9T?<7xNq)dNE-w{8A?v`{E&fc$FU;V4CKZY{iD0b;00O|Hv_Ib(PCxDy4@+~H>XVJi_Usw>& p5SghpNzH8GwGaflhG!Z)_yVd&Gr9!XqGzzY}7fph-nci?}7l(G+qTtDozv-OJs z=KvNj+{g1gBoMhfGIH6k>ll7NLBq)WP#{1sCkMkYFm#>9-rhlgwzf9H8;U{*@t~)t z=fugvPg{;(oQ%a*y8D}~@_hgq0lWYJFXkfX{VZT-U`6R}=S@0I;Ct^KN>YU4b{$R~(=q7{qcR z*9Z_PF2hoaWHKov;By=Y$8ku@0?u3<$ii-}sma6wxcU4QrQ1W~26Fgmn%M-dQaDQS z;Za$pMQ9tL2X$TZBvJw5YawzLmQp-gsAXf$cb0uFLz;&nzeM*;}X6+!)iHV8V0J^R( zNI?D}aIlo3t1Ag45kfFMI>*d4o0Tz(*>DS|rlt-COtW%htC$4jCP6BlMo7t#OAA>J zd^y-kcYDL{q@ke_s06q(G=v27O&_>x3HnbT{l~(2%kzvs{zz&)ZA+K0hGiuHB*diW zd3j1HG)<$W*!TYdv6i@?G! X{IeYLt#uK800000NkvXXu0mjf+;}`h diff --git a/interface/web/themes/default-304/icons/x16/photo_album__pencil.png b/interface/web/themes/default-304/icons/x16/photo_album__pencil.png deleted file mode 100644 index 6be3f7b429ba9f1c9bab2b768079654543852178..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 749 zcmV#+%2h^fP z5UpyFSs^{37n8Oq%P>cJOfoWBBje0{oZBXE*`@;@dN1^E@O_aihEYm=OqI8U|t0^lMfqL^v44G)>GvfZDdU%K(jyjYNMt3L(U; z*4EaR9fhC%yFN7-kN?<$0T|Wh@@i;^^3Zdt7q4Vq zIE>}OY%@efQ3;k(WV2Zz0o`#N9LFIq=dtI|*%{ak%a-}Q0JF1; z;3|cq6z^`A_!6Q0Zas)Ke+jDXupI}>b$Qd5U?M%2<*@(_O;MIqE++BzGe7&! zaCCbeu{CRYrh>t@W+d`b0`d=mgQXPB%~>Fe5Q3q;ucVXk{Y#FfmhD{V>iSr-Ab0x7 z#EM?swvm9GCdlRU2r1ckWYmAS$F|6rn2L}O=p6AU`N}*{QYm4+5*-v|8 zv>$%P)l&^rYURZHUyqEWdmaPDKo*!3Ko3x}#o+6|pQqbm)$Vm-JTpQnoANT_9)mAz f&H^rw0!DuUoDn&B_UMbs00000NkvXXu0mjflgwP8 diff --git a/interface/web/themes/default-304/icons/x16/photo_album__plus.png b/interface/web/themes/default-304/icons/x16/photo_album__plus.png deleted file mode 100644 index 09d29a3863e9e6a3dd98f6e2e901d78cf6ba6f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709 zcmV;$0y_PPP)!&}*VzUQ(ci3fH0I~#HeSJNR;d~s&$v&P6Mo5c5w%2u?uVz_ErnK%P zzP}{!Ljsyo3fs1c$K%<7nTXD*D}DIO2-+YD+yD^3#ap+!vjR#fgb>u$)&lU!2;(Y6 zXP-t}A%d&*FoWOA$Y^8YgBnqOK!osygDx+*@Y@n#P zn65YH>GRI;Fxi8Ul2j_SlE86YY|mqOXq=zPHEgak*x44QvbvmaBQw0^JuOXp=o`2_ z@$&M>HN!9x5|DohTx_LiZ%+ehgb<7kO>k*Ez|gEBe_a8y-YlM;nVLK{d=#IU1mqII zLMDTdlBS--3I~opXd`;yk9lX@8Cv!?ZwGjB_c;9;3M~)b3o!Z=Q$!sZ=+QK00000NkvXXu0mjfxbsCr diff --git a/interface/web/themes/default-304/icons/x16/photo_album_blue.png b/interface/web/themes/default-304/icons/x16/photo_album_blue.png deleted file mode 100644 index 5684ecbdeac0ceee228cda72305b2d0a883f614c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmV;n0!jUeP)1vF=iKqm+?nyGEJgcqOiT<0tA!MWK}jxj(as=fWiDE{X%Pgiqg@eU1PU#L zRuM!NQ4mp)khDlevL-FdEPux9ICJkk=d?)2B%}i$oWsZaeh-KDGlUS`KvK5dsNw%- z1h@=v`AjKVYXp!S7#zG1wk+&$n5bg+rR(9+UUa1>I?4tJ>PYPedI1dJ;+;F)1p}1AFbwMJ>jCgrCJB_H zv(Kc=fxHh}V^A7}BeifSsmQIYm;wk%DM3o&j!%C1GXN@>XJ}%An#gM!tC}c|M)4%X z>iuBY{+sKq*G< zR~96Oxq8*m&_2yvF2d-NLv@*l>$)2W0^i3|iieMO(RR|Mv_xT-785Q`;7(2BDaF3+ zii10H7$Qt2li5fR_&%PLyc$^8LHue(0vaA^a zh&2M=_wbaWy*&$LF${x=;jhe1hnN}<*nUhAPb8jNmUVq`VS%XQAXd`|Qj*W-FofV} z&&)q5+}R3-5M(kLGg({9$j}f==`;ec)^f1C5^$>L>OW$wHQ{iWw{M0&l*E6{ETz-T zjgS9{ver7TltP#$)w`ND-2=t<807*qoM6N<$g5{GuE&u=k diff --git a/interface/web/themes/default-304/icons/x16/piano.png b/interface/web/themes/default-304/icons/x16/piano.png deleted file mode 100644 index 061578628950c0b092491d8c0a81ed2e3e085e4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmV-e0jK_nP)x)hv&8&Gipid=y@Qj|6o%|=R@Dm|^ei98hG)q=K2 zNWqszPx|s$|68&%Gp>$8bSzERYhIbR8@ud9uXnu%<*_6r9?`J@$;CbZGP0>?)Q6}OeVJ3 zY&x!1D;x3)fvuS#z{q<~+qU#s=C@x6j7p4A2!R+Q-usRr1cv;=a)AfDsuE+Q&(rC| zkYD({`;|adNhuLR=%}g;`Gq9`z#+zHyWP$%A#f;2Ol3+cX&0a+0=@J5K qGs6K2-1Ix0p$vSOS#tmW8$SV!=H%pDTw~<`0000$S+pXNs_0OV4w*%qq(g>A{|~{fcJ(WRbjVf_9159@ zN`r7C5#bVqwulbxP>lEH;~a;2FEK98&^#3|#t;-X^fB zfW>mTe9>Bq5CSPBQc8pn=}YGv)>^E!Y~9?Vv{|BBtx5m|$RG&NTI2gZnM?-X_fbkA zrNmlGzuza0W8yd__aH~m3x12=>U27;SS-3mqmi;+ue(WpLZFpQ@sv{ZdOb#&)VQAz z@X`TVYoaJZDV0)d%_KizGC%>!7(*0AjB+p-Fv(B&tM_OFV+?T|qqRT|aDr_v1ocB3eA?RMM!jVrZX_h`?#mD;X5arM^z{PH~%kTJ%jnaAr{;MjY+LmXSa zefh{x$1GmU^XB#KS%0o@#{)`X7;aW7m6u@{2IKs2X6gLWje_5uJ4vRH$7Zwa{D8~X z&&k%i@T>p~kR8o5s`WAGf3(Hq7oLb1!c=GDK@Vqqz^nkB_I(X+OTPLu? zA)XW4-*b8DYqh43a(!xMW<&k!&pA9e0Oy*Y9zI0~vF=Y#ZvgxRuWb^AbUfq100000 LNkvXXu0mjf*4+7I diff --git a/interface/web/themes/default-304/icons/x16/piano_exclamation.png b/interface/web/themes/default-304/icons/x16/piano_exclamation.png deleted file mode 100644 index 108cef2838b9f46d1bd74b13ab5ad6ceba90276f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmV-20?qx2P)hbgNTRh_^gMNC&fno~&5LlSX2PWI@N2I(3MkjXiYeP_!Ezy6h4WvWJ#E zMcE;&yqLD4GU(VkqAVf|!b)tiFo*PO{!?#=&Aqe_K7Rba|NFi-Fbn`YjM$+IjI(N} z`X5?le@%r^wqEsqb%;)o%<#SSw7qt5QK0F=|DwT@G zLZN_JJ}2dPL0i)_xZQ5l>vfC8ViAA)H?E&T_2ZmLnkmN%x}(tuE|&|6qFAI?EWcU9 z(&BOa*jY14Gv#=}_INyo!{LCcsupEg2KSZf3Ucdn__?=%-0REcOgUaK&~+WHRtvM) zKzmcduJ+9QE8ho?j5!Iroeg-w&U89Or_;e?GWmziS{B`!Q7~AfSD|g)#8&wlE}Ro~ zkJx_~e2T~8%Ql`w|Cn~04Btoq!6w$SljyT4SxHUaw=VMJa`pk`My3*$nSJ-g}ytO|l~U zw*J#}I*qMXD~?8^l7qn@R{4p*Q%b2Rr6`JmMW$Nz6M#+PL-ed)%!VtF$V8FTI-U=7^?ilGy%Y?b1qIMllT(?ug70w)QvIa&Q&!& zJL7FQl)C`^Zd5k?cU{io>g)C`FZQ)@NlKsXt24yPP5VAU}s0( wkH-kW0IQ2TE$bXE-j~i@!n=kC@$bL!1L2|V)bQOiSpWb407*qoM6N<$g5OxT)Bpeg diff --git a/interface/web/themes/default-304/icons/x16/piano_pencil.png b/interface/web/themes/default-304/icons/x16/piano_pencil.png deleted file mode 100644 index 0f1de2bf45b9ecaaf7e656f2ec2efd443795a3a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 525 zcmV+o0`mQdP)GI#=}@f8Iiv~NK0%W(+`DzU+qNFgpUpo>1e_wa5AMQfQE=RDx8e1AQK?i+7K=q#`35Ox6x2JN4m=(Ys@1B= za=8pE-yr4Eoa+URZnq1U%LPSIOv{m$5%PEO1 zPImV+O|$D}7HBf9pXxo2OfU+J@5PcE&-rXLL&>*IZ<=_kDSoYloN>rVzC(F z@i>ynBvPpqWLeh3XWsL@?a~H*&pjbfTrL;fZa2JMF9Lx8LZJ}C;V>eRh{j+r2*2O2 z-FrM9@O$nF!F{9AfYa$jp-|A7&1PY=7v!E0RGZBvBuPTCSk#%zQm_73u?VA;j)Ler0eQ3F( zv?W7B&Aypb3DNF!$@a7WrglEG(C~uINuu?M46TiqH1b&$d;zrU+ufQ@rwhSJlJMrmbCmNi91huf@Ma9*Fg(xvUA!}zZGPt%&FKg1!Pomimzgsc$HKsHGNLk2q#(7xMH^d~L4vjjg!}_)QP8$c1l=HnXlD`B zrbPv|D?%j9af;}Mpi+XBl#M!<^BunyW2*=;A9#1~^YDY`F|^ifMpbN5#^?#oX1~$* zKjxM+_vH9IeMe6YwiXJ74Vi7*=JDNINEO1w#00J9?r$jI)umok2r>*o2!RlSfrs@7 z0j>o>2x=A5F4z{h)zF>+Q$Vvnix7e^1Q~=Nr9?_e=dL_y&mkHStZHygSSmwFfvAF= z=}M3+SN?+#q*4_E(=>UJJx_gY1AQHXq`Vjr6UrfI4YpYc@v1><6Cngjtq}+zuq=zo zx06iGPVsqunwCs6>G)P^VhN(QOT=vHO!~y*9=Z1h%c{t!CV^!b1PZFk3bfWpDM=&}_`Xjx8pCm1q_ogl5(H2z zYQ8O&IMR{i!J8#sdj~12HG)3@V>bu>s_Wv&9Pj3fkpIQv%rwu(O6+gT@bps~&W__L z`7>W>;Y!yQT-U|-eLT-Y2m!#$)*%jc?&V`1wly~r0HX`Ar?-odFAKHCg#+SxHW#-4 zYcMm1&um|=X>y&V{aan01+0r(B4sk%*JeNue@0000w!iD*)&v~97Jm-io4B3w&>{H_H87|J{ zNdM1rcaleHc8&D#x$&M-skEnM!!XD^yod69$Y!(jT%O#M!TalH@qAFe4^m2`l#D$| zAtjhPRDAFPNSa{iVAeoyJ7^NR>}8~s_&%tL4@xPNQuH6$CTT^ftCa*Hm>LvaD0?6y za5z~tQf_s=;)C+MDuJeHyq>#4sQe>{$+`S}|%Au9l>{^$H;b6%Qh=2VoeZlp-FFW7{@$bupq* z6Qy(r1&zTpsRM^dpP!`JX<{q)oR9$5+adUE@b2!|KXnzpPgD42qK7%Arlz=k)gkbU z$k-+o4^&~h+QQADCQQ@BwrwoSLP`k&RO@Ft`UhCum?87*68Z8B<+2NQp3NdcrP}11 zTN5vL^74PAw{!?=@It&L5?wKMZTmq}*Th8c z@%9smWQ{`@U^%BLu0ICgN4~iJ>BGuXvD>MR4#LO)cY=UpyS{RS>@Sb`z>-nQ`fvaM N002ovPDHLkV1l7oC6fRE diff --git a/interface/web/themes/default-304/icons/x16/picture_minus.png b/interface/web/themes/default-304/icons/x16/picture_minus.png deleted file mode 100644 index b937caf91468c67383dd37d56b0460c0eccda8c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523 zcmV+m0`&cfP)5t*Sod`2aNdU(-g7+X9MjYcQIhB8UiUujdc}9YAiu zj3Lz!1)xJ%T>xKTsj`iTU@fTJf>H{l6c^78Nt2k_k}!6leb~$3hXI*^vuOcRS+Sp6 zP{tGveBWoYdyl!}r)geTr;(H?`H)#~4kEvRBq2EGBO(}c=s-jWf`Hzq9$VX6?DW5~ zys$)CJ;||hjoC<33S!c7f)1+$L4b%94srvY=i&Q4Nq&veC}QwU)7mRjug5eR5%qe7 zYBiypX+H0lxO%G42}gOdM;J3UE%5=WuY~5OIvh#jbOX%p5xS z1^DoI?XQuwHZ~Zv+eiI7V7T*z`F-Zq?yyMV;pG!(t*KNhBuRpZ90~ewdfd8n{del( zB2QjCi@p2ji|<ufz)#_p6_!m^DVEqX>u-Fq&XY!ttAQrBrFx5k9a^XanP`#0;{C0GPS0vZ=pf}nmZ8g!<5RS{C$6zo}9Up*Z zC3SxU^dfG6kn z&X(=I7cKYTs;p&H#;(N>xeCo_R&sVMDv4Mk>U4o3i)O)~2X`m&|0AxYH# zq^+Dz6!p5%!f>5=Mrot1SmQbHG(N=0ViMpM)k+HEcQtBb~EM#7Qt>+=V z0nC@d(gvlsz%~H(A&gyZw3V6|QSC+XxLhu(d%n=v`;|5Yt&ic(Gr0N)F7`o7KMcNu zS00RAZM2o+YeaRGCgOIxNk5T?9*5`er{U;F@JwLrYNM?jjTY5& zz=YT9Wy#JsB6HKosL7}DdJ}a$9kllKVjmd5@nVFhZ(X=2e8#Re+REW5QI7Itd_Er$ z+fK52*BN39nn^oiWBaLl6tq0ynB9r>ft$F_0>V2|$muUa8*OF(is=_jPEHcDuZhjY zS4gd}ky+i1x$YtP&4X0foYXizu1+m&p*KwBvc7u8*s#MIQ(Z?p84u+DBW z%Jx`{GqNF!sNx`xm=}qNDnx`cq*$0zJV87x;9m-X!qjJ0vI2A^r*Qx7c6kU#kil3>{sGKEE4n|8ZjHiWCMk hO71*mociBC-vGm$Qq(Y!RD=Kk002ovPDHLkV1g(BBQ^j4 diff --git a/interface/web/themes/default-304/icons/x16/picture_small.png b/interface/web/themes/default-304/icons/x16/picture_small.png deleted file mode 100644 index c25fa6f928d5f9c7c2ab5f2fdcb85e77143ff412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmV+y0qFjTP)3wWku64 dzw1~23%|6<;TY;#`q%&f002ovPDHLkV1hyzdaeKf diff --git a/interface/web/themes/default-304/icons/x16/picture_small_sunset.png b/interface/web/themes/default-304/icons/x16/picture_small_sunset.png deleted file mode 100644 index 5a35685fd2f5f30ea253e72206687975622d979e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmV+p0rCEcP)x{B#+mC2{sI8?%lih9~TD6<29hmg5k{L$B+MCTrUR3 zmo|w1zqC;tOoPNh@^}qsF=jaP^5x6_9T}$ouWi-%|M;-x{|^tG|35pa_a7tfxFi3v5CuMRl0JhH7 UW+j-!R{#J207*qoM6N<$f|&_>L;wH) diff --git a/interface/web/themes/default-304/icons/x16/picture_sunset.png b/interface/web/themes/default-304/icons/x16/picture_sunset.png deleted file mode 100644 index 0d59a8de25e3de673947f0612a1c04ba5546de65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmV<00VV#4P)puR%*cI}%6!1A_$w@x1a%4mMP3j>F{uw=-j4{Jb3A%nqgEGg-srHfP#`5C zN$07aJcXE&wc8B7cW}<3s(3#pP*sv7;lut%zI;yEJV;qyHkRtf=`%~LG|pk}7(a7I z819oM3933G$UTS%&N((VG9a6@UV`vTXup1mCGhE8LGMSTzTyxOat}825M#v5*xM@( z&CboiKm<1j@81^mx{)-B*1aNrqp|&BeQ(G1az$c!yCY-edwG$_7l9-$dS*HfyK7l@HF1U#KTg|xD32)Gcf(g zz^uCOz4IU(4&!6D9Yc52znO N002ovPDHLkV1kp0^}7H7 diff --git a/interface/web/themes/default-304/icons/x16/pictures_arrow.png b/interface/web/themes/default-304/icons/x16/pictures_arrow.png deleted file mode 100644 index eb641240890a4c5bbb41df516bccfa842a889a5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmV-q0-ODbP)cZ60S}y zlh+I7*?1*m9c63C!Jc}ow4Y50ZcpO%Cc|z#xSfMJDIY(-RUsNNA~2P!?DcmS z(DMZ-ZJvvr)Yg2sS-i>1$b)>yYgF8}hOZ?ZeqSaW-6ASl9-_K$6$Q3V)IJWP{WEYt zd>P2UwPa=FK|bX5FAS4k(fScM{|2aj^@qk)Am_%S%*ca$+!a}nYWBfbcL-1HC75!S z;n|f^7#lQg)V+U7fObL&@Tfj`?S2%F=JxfqvO<8Ca(vT&K*P)k@faAh zl(?U*MBOPROl&{&xEzus!FnzU*Y>f3fAy|Cxffoq7abRpaV3@&EY^E?KnGjRYCJ04 z44==37n&3lN3nvr-j3GrAl_Tn$~aorz-d2*$uD=&RT&Qd?_cr+h1*yG_uxL$D>@C)nEsxDDJcV@B@{m;J=AJ7Bv%P)i5iPZW4(jm7lWQuc2N--h$>#u7Q8EfO->c{yeolXgRwd?S+YWdTAHBjS=`fl7ca(Ql5aX zW6n6(nnQY@)d>m2JSvW?AaOo!z5f`OINGR8W_ t`oFn%ooX23T#RMZXSzvtj#)>Qe*njWUk4&0k17BF002ovPDHLkV1j@FC{X|a diff --git a/interface/web/themes/default-304/icons/x16/pictures_minus.png b/interface/web/themes/default-304/icons/x16/pictures_minus.png deleted file mode 100644 index 6f1e1ce0f021ef1821320efdbeb575fbad2128f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)bE>sAkH8B(_V&d0@1d1aH8?=?6wA9i$ z!qFFo_CX{;SO1%d7eO|NU5%jT#oW!{@qG_C8xc-A@Pil5bDnd4hXBz3KwnzY=pMC^ zo+*;2U;~k-HiiCuyaOxuFK>(FB(H9MSV!bOtD-jNdw?%T2R|WhW@>+@RRFVGj zMhzm72%3F>V;X4p10Az~GYGgAfe&Ay_9Z9zG;c16`x^4#Z#w~Z(_xHVD#xTl!;>}* z6IV1$@x1cPjc7EAH(gc?o4H`8-jD645R1jI*i(;N6+i`O?T>gPSC{c!Ee#yz6}1G^|b$Oi=% z(KxY(XVWPY#JiP<`WY@!D~B;MMHx`Y>^?(V1sl!NGk6VAq!a)E002ovPDHLkV1mc| B{9XV6 diff --git a/interface/web/themes/default-304/icons/x16/pictures_pencil.png b/interface/web/themes/default-304/icons/x16/pictures_pencil.png deleted file mode 100644 index 86ef9e02b9185e1c7aba743b7122ddba29597f15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmV-#0+9WQP)1vtL@P^5hxP$Qv}Bf;c4E?pYm+D%`w@OXWZA@FV1Y|hixDVU6tZYTp}{OG zbwuJcKe7)pE&O%S!=9>46L0bI$$T=Uj&X(EmUaB{9^t z=}7ulc%FI;ME3kB(yX%*)3;AA3D5Do{N~m}M7I4h(&Mvx;q&>Hgy(o(E?}QS4lU6Q z4M~0H_rdS?qu2$Q9s(6zKxH>z=>eKYfS2zfKj%4~kMU+Dzg>p4=qle0ThTV$Db2z? zlZgA}BJQ3M(ZSBsk8B7AgBZG?#nnBmV7cDyWw{82LKwNI$CYeWuv~A)NfDv(aZF{T z;no&mCdPZxlNQ5Nf4U4mFM79~%EPGB2{bmMQz85!?!kSySIapOV;x!e^g09nH<|eU zQIBsQbnL92_qJxETCYMl97a>YF4U)xm$=8%TAl1=(kf9`v=tAUw&S^LCw_b>MkrW< z$w4(f&ko~>O^I;eGBoL_0e#YncUDcJgX%L$dRA8;w{|xtMR8wWgE4n9UUep;&%PRO z2ad_hwkl!n$brP;M6{8iAd8A5{zoH`NL;=KMlmsDkeA!7>v8EIc}sH=C_3iNB)w=j zjFzKHxK8YVyCMg@Re2b+$Z#KxanNrS_wv z5=}9(A0i1n`Un;t1l2-!5JRwaFm^Jyd!HAQM#Pj}xZr{3=6>Jn`v?I24>WC0p{3hO z>Qdo64ObC$nif&N`kk2RIGz^HabDhh+d|~6kf={j?m{>mP7CKaFAKzT$Y&;MD<}2Y zxjl$PBB%)fj)y?QAmAJVT*H885_t0oa?d%=r+AB!c%Vvy!TKHWR&U1LV@C8l6x^>@ z(04+?fS6|P>iXeG6U%w&CY|4PsF{LK8)DZ|K>8 z#sxPtH+AvDt4O_EzQRZB!9MIY4rQYj81AfxeclP`(S;nGvS$v#U#)3iEX@NGM&HB08R=x7SJAgq>~8XBSk2ZJjiSGh&pYH;lwii1Fe&Kbq=nq$eQh`WhgoBj$`gPrj)?Eet;N!vLeIE}V4=APZAJiEo1a^@JjaV$!Kr|X< zB9X|fBuO4o6la6MAS(#MXW$NnyE@q*;6Qn)SS%`~QmLHHW|dGV6!7_c>|X+^T&-3q z$~2$PQ$RPE%Qy%Wk*Z^Hac7&SWw)nM^7i$C=(>3fVD|Kgi{B z6y+tBWf`M@D${V7z6pY<%rK0@ZnrnS!ad5!t}Z|EJiVQqG?i5dDyK$9 z=!Mg1DAxiv7(m2wAn^F+_kWWME*Fgxa#%0hY&Ni1ET4gM49Ix(*X8Akk$gbN(LTUj zy{L~GIK#jxA!`Mmf70d4i3wHS0*G${xK{9Rz1R>~z`!aY+_BXfPmPa1UvXUJn&VzJ zuq^<%hroRF&(wkp%mXa018hqGCn12HF@R~@A4K|*KBODzK-x5?Ne?t5R_)LSy+{vY lL%NVoq+JtRHMv<2yaSqdyw}C`*sA~l002ovPDHLkV1i^o*IEDo diff --git a/interface/web/themes/default-304/icons/x16/pill_arrow.png b/interface/web/themes/default-304/icons/x16/pill_arrow.png deleted file mode 100644 index a5990fa7290e0f5ff030acbd400b12360e62884c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3vGP)TRrtUStGKor+_tZduwI$%q-@gS6q-cQ12MY6Knlarh4B_v5@AKt%W-q@`sT zm?Bm-i9{m55e|oyp-{-+^Z7heYGMO^RaU&*^sbQd@ zoKB}P9*+ww%MNI@+PZ@9V3P+fNxZYVIbq8?S>(?*zz^oM#v{?a%&{lN}wn*xkJ)pSUqSb23;+ z=pKIIy2d}kv0E8{cN8EzWtZ#gy3<)BuNsXQWtitjdd_J`O88e0#l7?12TlqsP#{B3 z|1mbUQBNK^?_Tb@Hk+l(iIz)G66U8_^nOAVXSF-c!5jr%G0ga?#j;kFmvlNwo&boR z4lb2$=MaY%5HF;Dapf)IA=hjIhA42CVb~XPc{JJE`|UN$ZoFaH?+*axcmS?df5*S? z@^nH(d_m`#;bFnk~2u@B&-7htjnKu_m~i37xbVz6LPqRp)&~Mj{ek)Be*YlN+eG;%{;BZS TGMYR200000NkvXXu0mjfE@>fP diff --git a/interface/web/themes/default-304/icons/x16/pill_exclamation.png b/interface/web/themes/default-304/icons/x16/pill_exclamation.png deleted file mode 100644 index 07a2af521906fd92f55cdc959993c9cdfec7bc38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 675 zcmV;U0$lxxP)Sgh!I+72 zA`_*Vm6U-PwbK2qO}FOsQE|gXQ>L4-fu#8D`z#I289@)c_#GbJpXWI|4E=`~4UQ1UBmG>Kf#7 z`GErm#*>qi==FMej^nDNQfbbCN@B|u3!>2|QrskwNW^5{KsH9R88_AHJ+W{60R}%@ zMV&_6BNmH`MIsRheh~rIni5s{U?_7V|pFiv!X88mJ5TQ8A z*jYM<{)~O4r5KXQaCXX!e*3k>t&9!ly_Y?%7p&6xoPhx5Xn+_tG@8U_OUu4^MSc^< zTk@7xm-LyMni@>Sv?<54JoC7X9VP%l8VJy<|Ili;_QkceI9kF!`)$RG>#=*ncZ=U< z?%=04Mb7sFjC+CB~yIwP}}a3NHZeFNcK2%SUw z;8EvDH?xRao?L$U zgmno6he!cAvEw*7MheZX&_O)J-K__gz@i7I002ov JPDHLkV1k2tJ{AA~ diff --git a/interface/web/themes/default-304/icons/x16/pill_minus.png b/interface/web/themes/default-304/icons/x16/pill_minus.png deleted file mode 100644 index 8d31ac27711e4b5ecc2956789d8c0871a50a85dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmV+<0^9wGP)<^8Xa*a--4Uka?w2;hLuLY&NR}0)Yv?-~Z17Q#qf{^J1}B_j{ zDDYe^rzwgu;dDAp3&y~jnJg%m%N+8oEXxwOQJ~9wVS%5kYFk;7B!}H@C&5+0Psm{1 zkdJ*n{=?;JD?hVZX}Y(Us06vp*Z|IrR(WS|knar*U6Y0Qx~q#;@qd=ZC;E;85UYp7 zzt899ZpcS&H_tHkY1C$O7@~n*u#18sRzHhGF3jYQjD1G9fbiE=mWbZdHVVElHh<*v z9UJog$cQc@kXa;hzeD(RYKpfa?&&28-Y}+YS}d8J;o(0AigNKyQBFP(ZL36H7q*-cx;1RHa2jCvK+jKgf3mel3EX|OhA3OwB m&2cW;#*Sl;6Naid60000!7O6S3gYx=b#;T$ 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 Z>UW!}lf+<+%9a2C002ovPDHLkV1nLjIS&8; diff --git a/interface/web/themes/default-304/icons/x16/pin_minus.png b/interface/web/themes/default-304/icons/x16/pin_minus.png deleted file mode 100644 index 19a7dc00786edda7304591f9fdf2365d160a055d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0qZWNo7l9!WK|wcyU_{$RLyqib365sbMG>Jl243uDbr-n{5&K*p zMmm?2UCClaL6L+9N+O0$veZCX6v05M!PEb#Gd;C}q60t9$9w+&^SFt$L zd%G0d+T>G5$3pl5(Wr)SrXH7tf_sp`3&SY++SMhq&CT*E7?g3W`*u~;$T=rmF1Q3& zwcw!30f-PC8bZljYpXn~t(CF5I(b-AGkKZlxQ0@2)1lYI*uXLzUO1Y~W_73S@y14( z@cShn2oy1c{ytaucLgTw&*gISrfJ5)hH>mVN(%UGkE*M61B(dQZvDC<4I74`_NG#) zQIE%S1birs_!Dw!>D~qT{d;*1>963Cmy!7+SE(d0~@t-T>=iEv#|Ib#qt1a#-qw bb*B6c^Ts>|xhF$h00000NkvXXu0mjf7k?3% diff --git a/interface/web/themes/default-304/icons/x16/pin_pencil.png b/interface/web/themes/default-304/icons/x16/pin_pencil.png deleted file mode 100644 index d54642081131d0ac086933c8bec185d5ac7638c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmV;R0$=@!P)RS7 zFx-%w1&OuFic(6UBtn+bN=*vG2!v4?r~d=rvPMvJ;m3RLy!-#%d+sF>q5py2F()yZ zT+0NV-$5;!A@ zq^(WnDl28SqC!4bRVBg~hz7Buv&w3vR;$&fwAIhNEg`rAdNH8~l5Y(S^1h%zUOAl- zMc-X1DFe;;cf-fz^?EIbGcsxfXL6nS0Tm;tvKJH*?F&Qlp}bt4rKiiV%_jFPmRKv% z!P^1Oa=BcG;_^zV2qe8K0^a zv)No@G#b;Ct6V71f;}T6BXO-(>+@zpWOsCQ4C-{c60iaSx`MvjtsH%L(j;oQ?g-^LGj)VHlo(iXqucGigrXZFty&Kq zCreiyKUKo#%6O_YpK{D=DQT=junxgIyl(<&U;|ixYCoNp*{GbY=Eu8oXg6xh!7`8v z76FYSFn~3{H2+);R)Lj3N<17c-pSkXz7#A0i|512PWcBC5>Y#oEm-aV0000P< diff --git a/interface/web/themes/default-304/icons/x16/pin_plus.png b/interface/web/themes/default-304/icons/x16/pin_plus.png deleted file mode 100644 index db50e1cef1e68547b2cdebf178ec59b288226350..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmV;10(t$3P)*c7rSUiH^O!yvSK!) zg|#gyyOPC`vsTEJ9Fh}K2S?}GplT?T&?q<&qS;&7M~Lfm^U#KFH3yxA~c5#kPey__8z<5?l1 zQ6WtKB4~Ln#Pm0}o8Q`Oyll5~gy_jQ(V^c3!?IN{i7$GSLO2U&=RklzIi38{Y~~fK zl|OfPGs22b3LX_vI1*v@c(UJJuC;V~`-_B5H&Y0&IvjkH=qXx%mJeHUf`>&cF)0ZK zIXgJWnSlZRGBmUv_7ly?5GwgLur7E2qIh8jk{_d^{Gq3ZUs)`?gmd53YG?l}aUP3xz^+8jYq8Y=MBTaG+en*m)yg2v2q^sGN6)zs{9Le`MM2k1-NF?=lA91R?u1PRXSNV gPyO0)**FkC0n!ajs9ic+%m4rY07*qoM6N<$f;mzmM*si- diff --git a/interface/web/themes/default-304/icons/x16/pipette.png b/interface/web/themes/default-304/icons/x16/pipette.png deleted file mode 100644 index 4e52abe78c4a068fdfc13fe23f6ae7235a5be83f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 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 oLHNc{gFdmWP)T)AZhT-D zF5K1WN@_u*j36~wMcW`l+u(qWGm$(TJDE(Hx#yniVrGa+e(-VcIrrQH=MkJacMgCc z2mtWjW34TE)hVaiaL!!|!|?ZHGU@5bd(YyH8>lKFJDLEF0b|*8`tjoAFEP~J(0OSJZo^3x&td z%+0;!M22*p}@T}(Oe(MknBKF)561OXyKG9FKfNW^g1l2joI}cG?CdPEy4pR@U24yIpR{_IgECw^Wr-Rg;|0Xvp47K6w4uXLrXU9lB$5?(jo}!V?}6 z&iif&i3H~C*>1q6AJb};xodcom*>7u7!je>Znwl*`aRge(X4;T;82Qs<43-_@CIw! z*NG123L?B{ErD^)efwdl^zQt^!WG~@i_>2J2`@D~*NK@mW}bbYfpCLVYC986q>hMC zj4WKb)cLbo{bSwQ;YW`iy)U2Qt(*2;9LXwE-d zlSr8i4V+MDAvi%q^ADlZF`U!sF#W0NPUrk=QcXMX;of_`=X~$sa@kX>l@aBgojkNJ zZf}oQx3*@eT3V8xG&P9|O{NneJyavpXxP2-a>o8JxPYYMUj5u=vwxYI+O#{J3omT8 zJ~V7BwOGnfzfX048I+jKA!N&ez&QLTTt1(x$YfHb>vSg%4RF*DSwX5&sbD`CJQC6k z-Q9x`VNdG)B0rOt3E2XSVaksRTF=c)I0SyfW zJNx^0-u3m>namL#bp0%dV-3R2q%hW`~3GVZf(Kb%1Rgm>FLlT5`kSThGv1ljg2FOnX!77 zq1P*hXJ%ZDJw4#Thnihp4x=M34!E?mFy5dElUG&6%C*`@54750GMHLg3Zp|VhgT61 z@ERvjM@22-{~IAHX#$L>vm(*?i;0PqpC%{WZZuiI7ylQ^f1REE7AuuzW6wG2yUq^c w407pIOiY46EY1-~B!$OY>jkG(gvc-`8qM@ zByvs0tXyEE;RmfHv&|(s9m6@D4qqNM^>puJ8%oxNALpL)Kj(ig7d_Ex5kb<^LqqPO z&dwxZM@OEZz5UjsmX??@wVL7A{XN-IDaw*a5ISJM!f^0iSgY3?hOO3h!|3Sj3%$M{ z8#akGnhLDvkiJ6(J7O_H{Km$8RI1Xg z-Cdx1dtqaH`$&lX(QF3y%F0rPNR)qDC`714siY~cuUAlb%j)LlKOy?Nu`y^d7`h*F zI7!cwlLH2!B@GR)*YK9*^>tV_8o|qE!}8qRe#AMc6aCH55GBpYQTz-F(hoBjSIA~U zaNAcHkWo-zrYH(hqoQit5K2Xb3dMQ#z<}nJ$pjuO%zC{v zj?q!tfJBnp>;@R@yAG5~2rL#$91#%_-;D6duc_f$oX(}T{(f+8Y{2y5;$K)M`@p0+ zM-Nw*hfk$nJ)RO47KUhpJh_}ZGCApJ>gxj+{wVvx!Xd`3dKl2L>0xd2Wys^R>#t>A zK#{Sr=q549t*TJ0JC)%27330HN0T>HerN|JRUzjEe#z!A*W(u z&YVq8e>ONV;dEk?S^VRK_c{^4nhm<~=C2kbe6ibqFxl)PJad}N`3+8D;*Lc|riLaY z6o)1zmifVT$hr~oJ?;|oC0)Zh>BIH-KXd3e$}NY=f8m2G00000NkvXXu0mjfV3cUo diff --git a/interface/web/themes/default-304/icons/x16/playing_card_plus.png b/interface/web/themes/default-304/icons/x16/playing_card_plus.png deleted file mode 100644 index 800aa726eef4d2fac60de57884cbb6852ddd1b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmV<20wev2P)?~r2xcEN>O-W748jjaFQ8PQk)WtyxmX$^Hq2%dwK1Gyku?wO{!@Zew=&G|D6B1TzI0>0Y%i)!$R+s z8cnjWqoY93-hShuN)=n7RtNZWUr(M`3^^hZz#j%D3AyAhe6H6UzD!K48q8+f3%!1T z7`9Y*b=4647VZ1Xph~Otk+w$8kD!S`MAGDnto1B;^x-YzEJ(s*ci?_o!0D{8g5o~H2`0!+@-m> zd}DhXnciMp+uYn2s(-Lp(7C+4lv!EHyD1a`lqwV~C5?@8hHP0`Uq2A4zaJSvmBG-R zArK@J_6$Nwo0{JIAX_}EtLW+PM|Wx}dgkVKBgtu<>TidJnCz;m((7eq!33b2DJf5N zI*WH>16?aC=#WZrHYR2dn$tSfYdbqfukra8uk!gof#QaSV7@|8tTh@LH+iPR>qUpd zfioNqehUj@Bh6|3_SXj(syXcm=#FZI?nnStI6#qHeqKE|*!9Y2L>I%L&FyBfn$4^M zjlNo<;R^EHj}SDGCQwK08u04txnp+w(#wGXbgr%8%;KUSdB$Q)XiLPz-bvQHMCXD01|$SUN2i4(C6$D5I28wRC?{elfEP3k8G)~V&%rNALXJ!tIGv0D O0000DG>(U7~)0f^%(R= z^bhR1%YhMWjVK6WblcS+2-%HDSxm>OdMNu4; zN`VU{%W(?red+!jdAqCPNUKIvtF-LwOS=S%u99!L8x1; z)?4G~6|4t?!P9cNOqooE^7%aRYux{VahCocN3UQjm&=_clSzulmE4rA~NUcw7_4$t5zJb}mXh!?E&!~D0D!3Gw1 n3;aXB>6ec6%SQS|mnHuI9+bz04&P0#00000NkvXXu0mjfneho4 diff --git a/interface/web/themes/default-304/icons/x16/plug_arrow.png b/interface/web/themes/default-304/icons/x16/plug_arrow.png deleted file mode 100644 index 347bfc6e8b7edee7df5ae6e4edeb2131ad620792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmV;L0%iS)P)rD*C zUKG6vBI-@F-VHTr6>DQF1MA(O2%Bb!|#4~_x;@S<&L6uIK*NxH83zh zC6h@-KA%q)i$$hXDpBiD|0C${?^lJx;oSUu9dOM?qfx3*DC{V3A{CmZ&)ICY;Ywu= zv|8;b%d+ZtJWh>_jQmq@9;s$B86fNQbPXgD$(UR&KkD&#n(DL)YeXW^n^YjfMc z+-^5G91bFRySa|RU})KYhU2(jE|&|eRx2o#DxhfzFpL6JDh-j$VV%pJot+d;v@PsK z7Rcx{Cb!}AQ%ji z&@#sjt*(gQJX!x-`Unu41vvHUFWL71hp)aYZw(XfAS=k}y>vI#m3%TTy7;(E5QguU z^%IM5vI;=I(egV+VPgR8W;j?&c7ZK#v!sNG9 zA#y~D974#4?pl*}2u#^~dwh4R0%JOYdjYch59Pxg>8&KuI{*Lx07*qoM6N<$f}UwI AAOHXW diff --git a/interface/web/themes/default-304/icons/x16/plug_exclamation.png b/interface/web/themes/default-304/icons/x16/plug_exclamation.png deleted file mode 100644 index ee67f1d92aa8c5fed75fc9cf256bb190f3a33bf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&_gst3JJp^ zHHjd>GJ-Uypt5LcE|g{Yo`y0k6Cy?w<B@Jm>kJ=YP2fZLm^PQ&Dko zF{-MnlKOnUQ#{XS27^KL2lPJ%MMXt&o6S}`K0XUXPdgkA6bJ-1G|&^mB9W+qW!d_0 zcoY;0#d(HdvRp0~^85Y&G&n|hRb5>TRC{}eKr9wFNhFeeg@uKy;v{O`laiA1+Uxa# z+wBH&n3@a;1OjhHM#j20i45xV^YfRSPA8bnW+*Q&2l`C*BP5PzZJa~~on>WZUri!0CBSS$!0cf>aYBI7ij#8;in16udxSs}t0n};ID2a1Y zC=?dLFwb#L(CaNwQeveaZC;s;=epXmzI>kZ(RYZB zR>I)@w9u0dta*I%uK`Dk^ai3!9OsGaUMV&|x`8jxys<96jp(5JUJXQs^I*7NwMh3L zT*r8AGo_jEolx4-hM8ww$)TAs7N$n_$Lmz5Mh?K!TiZgkj@C4vAS4r#2s^r(ar;c19ch&n382oWa1Ma-nRU}6i+kQ9@tNpmq5NP=XD&CS$>2}L4wlM(}!WG#xi zbETmFqDyI{;Dypcp-6F4x)KTn{d`YJN}UeYf#;mV%z2;leKW(@F_+0?V(E06)$8@q zR;%@>+wDrdUXKl7|075yla6AsIKQ^GNthp(%VpN-bdD87KwlKa`--A0^!uyicDtX- zvh1u@tE}B_|5NY)d}=nE#OI}@6*8O6&uuo_&3HWiS37!Pm(gha(r7fOR;v*z9XuY z$VnE9{Q#%a1K|xWS=T!`1vW~h68U@q@_1zQ={;b4+)ra;J|5lxNe70kMzG1liV~*D z$!YTYr)g^H4g~^{-xCwJ_9V&mQxGnG$G*8I7~X?-8o@KLrK%N*L~@kL+~cQhfo~5P z+kU~=k2hE&v^?Z3W3Pu{6;LjhB@hr_6rT>+QD2)G0;fb-xiI0H_DQ{W^x!3Fb!F#j$2%e4UuxCZ!#zB-VO f3}oj9qJ7C9!w2i99niH{00000NkvXXu0mjf&ubPW diff --git a/interface/web/themes/default-304/icons/x16/plug_pencil.png b/interface/web/themes/default-304/icons/x16/plug_pencil.png deleted file mode 100644 index 378e2018f4bc8e1e27ac0060eba78f71c013aaa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmV;X0$KfuP)2=?@xIc4PpANX+KyyyEl@AIDbzz4>}9Aht@ z7>zcc&j)XxGjQ7(Y?Ml+g1){!h{xlNV`F1i(&@B5lgYpa@QShbI5maCf-vs&dbQ;Q zZnxVQ3}@(l-Ehf%3iqh8;LMx&Wa=Bb_G+S*#6 zH`)^JB^K#8@l>Z7J<>rQK&`f^fXQUVrl#Y3Zn50XXNX)V6vDPP5v^7m^(k!9($bF2 z&22oKBi!W#OFS$|4(#aY#`gAZ?CLs=qUik7+S<9Q*PB=5@&i9;-7suZ_lRY`KY~uD z4?Ug%zS}bKm3Tv>3F~%YKkt?90uTN2`v(gn;ej1gX_zxjtPwY&h${Y% z5&MaK#2%uO*iBRryNJT2NfyH+gpn{1TB3pA2YsX{tt!g)7DWZgU)!hq0rH@Sb^rhX M07*qoM6N<$g0uBW{r~^~ diff --git a/interface/web/themes/default-304/icons/x16/plug_plus.png b/interface/web/themes/default-304/icons/x16/plug_plus.png deleted file mode 100644 index d541cb63989f5807aa3b261739e24b7667b090c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 631 zcmV--0*L*IP)`#H~-a{vywq*5t_!(k{C3ghK+ z`Oe(joU&G{K^OQRK`+yhHABXpuj^kBofKA!{L~1G}ckC*FQ3u zOxkQV3zbUcpMo1ivs5Y}TbGwtP$rW-SE*DN{eFK>ok3xpSS$VE^|V$Nlnpy=b@FQLWaXL?T0_avU`p9h0n6o!cUj2xy{x;Q+D8MmL$v z6w;zxuHHkdHIVQElWY!pbBOqqN~O?jwxPjbqMpV*CMGN>dTg z2)0<*;c%hV>PCyjjZ;&X(Ps1fo}9eYRw{Mhk31f0Pq*$Nyb;ym^%%g*(H_AwVw>YK z=<&ob61mPs-6qx`$NvWNBRjAlT#J3pBL(XnmPQx5VUEC9EXG1Dj>~seA_C`!0A7sL z?K@YoA9mg!W-JhG;#x=TJ__(uun6;lIz#)#irszZyf1u%u~Pu0LS`t3gsZl5Y!LGuf1eK3%1-udmbxl>~o3% zbjS|3zY5lbOEEdU#Gu$>50&-*w7XzgJaxcjpJth@1&YIzyv z=I0@X)}HmoR$vIqPQznA*FW^J-T%Qb3sw?T$LlCJssRp!>h62F;LQeM=v+uBskueLFoCYmA zm7VnCV)h;tvfbB6#w=KL5-nJm7iQyB%2_@qpXM>N_N+IO312WL%)|oaxya?j^BjiO z9(G|1nxZKA%Bii1@9kVmq6c->FgJ(f@b_sh}3id0000GT$2fhp`t#pT; zzZC@8d4DRjdQ}@+y#}G5Q|mx&^w*^3n%kX1@1F%iYgCX%^H;Pp-^bzf$|VEynD>!y zm*Lcpi`wSM4hb`M!4proKQXABT)qHr2yN6vrP58Ot|~kt->(C0j)@3vo1S(qL`r(p?L@1YHcQ(F-L|8Ac%@6w&RCpbbY! z*r-s{iqOft)^JnjX1dszL&W(9`0m^9JUNl*fe)PLobTuSF08V$l9|nBX0=+G&1PeE zyZwN};m`_P6}Ytx)moZShO*?4%XTdg2}5mTV`J0w^z{73#s=2b);Ls8PEO7@G&D3( zhO+-I5Lql1liTg?A)zbe!QF`mDEVH_p_+QB)GE5WyL%{04qs4FQ9+an15Z32hh^kC zbU$ox{Jw*#o-Rz8cxR?ykm=^=+)W-^&_oKB}Jk%*(>TNTRYs$g5Wjq-&W zWDeDqUpH}S_8QMDEiIwGzTQPHGa8M$(b3WHbN_2-$FHDlz8a-dW=`g0?zG^X?=qf^ zy+nV1f0$gR*XwKOwQ2_IU=RYuBL>cyuR5gDX(W?L}Q;91de)Vd1~>=H@02em=>wKA#WdGL1%aBNz<9;jM*oq!^Mu`3@O*cTYB` zBojv=8Iu2nYN1E7U~m~O*CQ`EPPkV|Kez&?>kbXY2t)@n2tUiJ14#Fm%S*bVh)Mj6VIv+c6I0#X5mz}c*< vES*>^uFKBOZV~9%riFSmql|!Z+u8dE-OUcmNdhMF00000NkvXXu0mjfgdcE^ diff --git a/interface/web/themes/default-304/icons/x16/plus_shield.png b/interface/web/themes/default-304/icons/x16/plus_shield.png deleted file mode 100644 index f703e928baa807a9c60389e140bb46c4964b35e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 683 zcmV;c0#yBpP)(|tf@y%&5&JG9FjHK5zzuA6brW%rpT*7TXZRiA7>9N}iPc^f&$L+7!| zV~er5H@nv~ad6r(M~)iMsULUDHZL}OJB#+<87|d)w4-vUKK%6r*87}TH+>rG{mw;l z)PRS=TiaCQ!tVD+aV5(6w_oG2FOZ`KJP-zJKR3)*zBz;nJ6yFGkH;|@jiRx08yY&c za;UZpSI;wNKn=K;f4};}k>4aHlSzz3A{Yn+Fc=JCC=}v%S(Y&ti=ogZp}D{87jxRw zfV+8@EyKIy^4I&&@Asq6=UY`yBoZhNSa3tvW|=vc)POsAw!HR@!QxRX3QwdoioCK{ z;3`FJn;0ZV4Y;Yx*RxQRp%y04Y;8LxSn%W*I^Eu zzLcThkvPh;mAl?kg4%X5OuOW$0oQT>uB?JN~nJI=>T3Yu= zlxc_WGDi)dQZpO-htkj^KQOU`LJz$3+Xn^OuR{8)H3==uz{sFu2*<6}c RSMC4+002ovPDHLkV1nb+Ny`8L diff --git a/interface/web/themes/default-304/icons/x16/plus_small.png b/interface/web/themes/default-304/icons/x16/plus_small.png deleted file mode 100644 index da116dcc3d175f7b5edffee92fd32d8075b46c38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vproLLo7}w|M>sko>_H9qJ-1| zgYb^V#8wXG!(JC>I@GZFH2-iYe8d}}apu4VmnS}_c3=9hAazFlR)eLJabwr{hJqKb zxBNFS^O$47yo_s3VU64udD-S8oyH5M=c_sM-PnZYljey_o)jIAwZ+f1IBYtj#xboj4fTgTe~DWM4f3Oi4S diff --git a/interface/web/themes/default-304/icons/x16/plus_small_circle.png b/interface/web/themes/default-304/icons/x16/plus_small_circle.png deleted file mode 100644 index bcf7272cf1b067ceca8b1af3b511d8a0ee1b3211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`M?GB}Lo7}w|M>sko>_H9qJ-3e z4K6K>iAz_A3+OXHS{!hTTg7hFKkSqIEP3Mp`%2|s#`mp`aw`-*;+dhn z<;+i~7wNYb*D3t{|8?8V|K>Mde~|>~3TEwVGMQ&v{q6r!@9F>U?<#%$f3bW2Kj)*J z1`FErXTI>d`QGXEl7q8auX+7_9iw6^-r1NQO?Y;e!-EP8TX{?fgWP;boFyt=akR{01~rq A#Q*>R diff --git a/interface/web/themes/default-304/icons/x16/printer.png b/interface/web/themes/default-304/icons/x16/printer.png deleted file mode 100644 index da4d0ec14d2d60469e7882e487098288e274901e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmV;K0%rY*P)7Ta7hP0>bd?u+Q5U1DIWw4p9M0Lo32PI!a7?_|nV^)^)|wj)hHMHY44fbg z1r`4wsMKOO+%OUqy0b16B+^YrkcB3QLw|kmsmauo-otYa=X}raeb09|?B)14%i)`t z&~a?%aML?F%G|@lCt&n258+2Pi}c<5TmS3`e8K z+_6~NIjp|9S55(00fnmom8qm-tORM<^&Lc;#?7 za1rE?OBu>CyeP48DX5#4S2`4GbR4SEeX=!Oakw`!$lcAxZkxRONqS4fg zj*TBn zF}l0M2nKr*2!!+KJEoDRO+6aTi_pN0cNxLzsNP9EGsN5d{R_Y)JaGr zl3<$uFx7!HUcX7B_w76sPtCa9=!UYT4_`JnK~B!6EaP>RbAu?UsdT+>0yH;LqzEW29{36I9H&?#_5uO(JULT!000000NkvXXu0mjfx-T}v diff --git a/interface/web/themes/default-304/icons/x16/printer__arrow.png b/interface/web/themes/default-304/icons/x16/printer__arrow.png deleted file mode 100644 index 7c9e8ea1f96e438a018b60fa174ec9359c091b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 735 zcmV<50wDc~P);7VXQzVF zA0Wc&auIWD>kfoH+=lzUz7Bq61+&Y`_`I|vcri5vwnm-VGoYlUWjpT2>MCXz7csrC zfOqrrc+2w`7#{~Kww~{FhUHXN5{9!_2uVvzBl^-(Vr*<=3`=Wk_)2%(KBTq3|F84e z*@YBQ=H?1n;i6WnNjArk!iEOJPdeZmJ;LrG>`mBlSP$!EnXLhb=#7%%{Qdo_jYcE> zhxM>tmSI_#BRxHfHYxTc zE$M{BF$&FxI<&X<`&gF5#l_{j-EOqCwIMt_9BOqA6pD;}N$!lHo(JU4H>h~x0n3u8 zs3@byGm4%bH}djsp{mLWhocU5yHk*2=|+P6r67WHA@ivZ_hx~s_a`CFEOQZ&NMs%w z8lxX(3|g&rk4w$(;rImPP60Pw|5G##L=^P#Bse&@AS5KDg7Ne7bMW+sNwo90+sC8s znFr^L^*GISAnay0V$1`GZT3O+3OK2I{N;FT#v?*2h&siDB_$PMS8Z%=3f4C^aKYln zSq~7D(J~o$t=jM>`@4>WhLU5^(b~Ys$lC`woNV$2C?9+bP(92#s;m}rzW^x@Ez#q_ Rqo4o)002ovPDHLkV1h|gT=oC} diff --git a/interface/web/themes/default-304/icons/x16/printer__exclamation.png b/interface/web/themes/default-304/icons/x16/printer__exclamation.png deleted file mode 100644 index 8b5cc29f005416c9272772a309cb5f0cf0191d62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 782 zcmV+p1M&QcP)MRk_uk+4ch0$7lGo5cHmDjKV<^!- zcq;4ah^(e&3&I}S5r1D_huLby+{y}OmzQl`kBx!7qrA2?$gQrnC;qXzin*mFOj;}$ zpP$DEvl$(OgJ6Tb&(Lb!Q;LfTBUUH~iI0ybBDtJMD=Qhv^4c1{(pBx7)adn_P9!B| zQ6x4s)t0qg1Ofp`5{pSzMTO)SZLmm>@OKlo6LuU{!)jS(qrpyk6HAF59UX5;rBeJ4 zt6{Y)!?J|W=O2{GWGV|?Ng|OTKR+KzrE(jELIIUZWvelnOvuT}QL!wEj*jMNG@2@- z(TK#vL}X`YLnIO*IXM}8{&|Fjg(EO92$^X|@c6bX3giLk>N3!U3aeO_@OZqCrluyt z@bECg!^3GFl7PSn=c!o$M@0znF5 zVlHfoixWbp_Jn1om^M#kTZS6#QdL~Lrv{0+>p{Ph} zqba?NzP5AtX;Od?f-j#W80m^e&nq2RmT)*6Sx-+t{V@Fy3WeL;DfGg`+hk0P@t}Vx z#n}50yc^-6yIFwa-W)k`c6Pq%;^I=sI5;?{&Gd%}D>9?3-Hb=A_wls)C_Yb~!SuMF zZ3k?g9`{G%11D1`ckfO5jO?de8TW{YYp@%meU~sZ8i0i-*6@Uz(85v?pb@98@r~eipc=;q?FwK1M%iLD+wFD=>Px# M07*qoM6N<$f`CG9NdN!< diff --git a/interface/web/themes/default-304/icons/x16/printer__minus.png b/interface/web/themes/default-304/icons/x16/printer__minus.png deleted file mode 100644 index af5d449aec33a49c2b1d7e3dd4d22eb613493a08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmV;k0!;mhP)v0LhT$#@ z(NOUtL8XjgI586EwRMr;MdGm$WHFP(q5t0J)I^>79De6;&ing6&v_4rJscipQM@A~ z29EU@Qayu%%+=q207eh@A^eO)AZ~7AWn%+h!(oXJi;JK&PFhTZ2Yr3}5q@oLVP$To!4 z66BCe8Ok!F(Rj|~a(P31lFepAV`C#c9#0Hzw;NusS8`TYSK)Lzy_99e#l@o6iG@4q!-;aTT0i>j)z+|d|!Ep0f$m#Cx#@N^xD9hApwPSYnBgV)5 zsHwS)wl*JHS~}6(?Azn{MKxX}D9fd;CM8w6#wTS$O(Kd^C_C`eK+gWJpET~Amgu6*fyhu-nov~1z zO!kei$YfKD*BQE6Z{^GxPpQkV9^? Z{sL!@66zGw71;m)002ovPDHLkV1h1xNr?ae diff --git a/interface/web/themes/default-304/icons/x16/printer__pencil.png b/interface/web/themes/default-304/icons/x16/printer__pencil.png deleted file mode 100644 index b1a382aaf58db3db55959197d91124e78343175b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)X8#2(r+mj6q%ak%2B!_o^vQSkBr?(Rs0ViDHJcZEm$P@q_YWvSnUm zFvYY*LMTJgFfuo&i?S{p6eLb0$ifdM3jRCiwO3}V9{9a*p7Z}b=Nx#+t^R%@VjCDx zP;~#`n6R1!0;{W-U0%l5r6qw^)6-ykl;dFoOfFX_{Li&D%q}is zW?=!J=I8M-5Ww)%6j-tSYNs={ytS1uc#DOQqM{OCg076@n{#R4NrI<#|%u)umsd1HRKI{5gc(ggu94Se7~BfL(M^NZ}(RBkvmw z2K*0}VOi!dmnfCW17@??wm?tP>-A`CY=qTn4Z~uwz-F@vnYp<+7>!07b4fu#fz)od zKlc0mP^;Cbudjzrr$bp;8I;Nkkjpuwr^}F-ByfA0J0zVj_x* zOK4E>SF|PRbg&G;U=XI_E6Z0C5^j^Uw6toE$AjM9Uc|-4L8U5(LUB0^Udy55&S3=S zP0(t!a5x-bE=f*KHcU*s#^9g_RaG@;YjdKd#ewE#=QeG3E8()A6699n5xDyvVs!K^ zm`kKmsd;Q{5+fs%&}cMa)KtphY>E-&rn-alCRu{aU@nnJB-f&&qnj8J5fLo``oqYZ z189E{fa9qP?f16io2C=+y?Fwb5%bI?wDwUBF=Df`>kv}jVH>bAgXfR3@Wnrhjm=H4 zjF|uJZq@FX7_vVlMYA_4>4pex<5K>f4=2wa?G$?~!?I%i0#p7N-_dwwp#T5?07*qo IM6N<$f>h#Ip#T5? diff --git a/interface/web/themes/default-304/icons/x16/printer__plus.png b/interface/web/themes/default-304/icons/x16/printer__plus.png deleted file mode 100644 index 4608a84025ee3104ae1a9baf49f5eff565107d0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmV;+0yO=JP)-hgaG*g7 zQ+z>CsmU-@jKqyTh4mr9BJrveS!jYN`tO`uimyHJyKwJ${?EDRa>?V~Ub2Jl>(f%^ zV_b4}cN2SO=RSlz+=KhMxd~xy4Rfoj_`0$pdNVx@wnoJr8t~BT-HZFRzK*%&Wqev% z!pDULd=LZ-PfdXpTd(qXV#}MF2*WuXgp`z&5OZxUv9`A}mX(bSe51SW9n$IZ?Mf{x ztENa%MTM9ZFM7S6lyMxXZfmprrUQP^BODyU-h>^8^{`%+*%=T*Z;B{RB9T0?TCMmW z*28*PhGmIPr;E1R?feqm$zrjfuC5MFr}Gep!vUV>#h&^3dDv_=o@Gg4VWGn9c6ZFo z%)nqUpr)n-P=$jnqBEiD}d1=q!%k&$t_QGEx?lKlMq?Ee1#@nA3r zjYdPm9P;uCpi*Vi;MILJnrmXu(9ml%H+#lemZ;TgLm&{C9UB`%VqzjnOK;L9?U7`B zJkC6ef#O{%dU|}bEK8J1WtHFWM^{%D-|qFfcFxmLXq diff --git a/interface/web/themes/default-304/icons/x16/printer_empty.png b/interface/web/themes/default-304/icons/x16/printer_empty.png deleted file mode 100644 index f1a0095674818d22d5274e0a55df4eba6100723d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 493 zcmV{}A$M|Mil5MG!e}%er&1|=2RY-8?yYPD9U(}5reJWjyl@xkR<wF;}%3Q1Z= zAh7x+i+%#mzOHGwsvrIR7SCQio?V51ZO&%n|o+9UNop>Hk&Pb zclXF&%p;=F=&u+LP|M6_^RC5W*(VGJL-FS30jm1M2cLCu5^}~qwT%BvoEd^&*f5z) j2j4-?*w@;B{~F%_@lY+%B0Yq300000NkvXXu0mjfBc78aJ?qN1YzFbv{@#6j|S4e;~x%Y6R)`Twx6u>W;+b^l9COaE6@Re|~U z@8ACqlE-U+o10til`B{N8yg${_x1JvZ((8m-_g+p%ufSCkUU-kY;A1|H*enjKQ}k` ze{*x^|N8oNpiA2Sr={imU$kh^e~>(01AsP_?cTlre`I7N2Hw5<49F#AcnwfcP>7e7 zmTq8XX70HB;KBd1w{QOk(I7rZ93+p|0H7iUK|w(VX(y)$aa-F`7zXjd;z0R9o|Ff~ Z006Wso$gaaPDlU%002ovPDHLkV1k0gm3aUF diff --git a/interface/web/themes/default-304/icons/x16/puzzle.png b/interface/web/themes/default-304/icons/x16/puzzle.png deleted file mode 100644 index 8c23fe16ebeb1b8f3d0680d3dbc7de4c212f7eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 681 zcmV;a0#^NrP)a>`}Y{~YSi549Ou^&BnYvZ%4dOG^QSIUru?~8{X|hP zQVuYx77(Yt^<&HD9z2%mMjmVs?Re;28#aCDz_u@a*qZG{&KY?_aGSV8l7zyDqaQnQ z|6=nB2i~+`_+_1LA983+_{9;Ob4GqeP>_t2i@NtGG5o4=g@bQf(J}1Iz*UG5AtC{B zIR?XaLl7a-CcGDX-M#aN(f@QGddGL;_NgG!kRaeM;JS0Rarra`7wYr07s|bDxtf_U zs$(^%Bz*=|4+AJ)D_whoL2C@+B_tTyC~B9EV`!nlxN7iqgxl+Uz6RZ+TXng=Bm?arto^o(>#kRK z&-+oGqnpk7P#Sh=lqbQUBLV}Cw85Xfs9Fl3<&3P+aEt(6rKnX?7U?IMNJCDIvUFH) z1E@3UDFwJ<7ZuApPLC6$@xK;!Wn@9s?8g%hH0H7&w68vRU!#PB zG&S=C!pmIe|5aH$RFrgmLQQeXMw39`Afd?JVw| z%vrN%>Hu0^rF()J)DmZTxz7Wlju8O3rv+$Q#Q|<-{zv)p>e`> zuoE*8p-yQBN02T@jAYFeqG=*yna)i2 zXtO(Z$b$NgSk$%0$Rc{;QCT1O?*_FBJJbcxfQAs3GJO!u6Pfa=rZ-l4+c9W(8i(P7 z+hywqx1qjsqsPBaDRJ8ND3AZ`P>FhJKwa<%ACUMwWtq-Qc~|e&kHw;)b(2R~8Q_Eh zV2VnWQ`;QvF^t8bev~#FjX}Yom8hNu)T*seqaK&7o>|0nJo=X_C2F=4;87@3NV-Y- zN?t;PMxt7Jn4tnl_c|5`a4Cp|&1^-XLcs@^y#vfV*D-4L5^91aDCX|~fVx0K=$`>m za6-v+t{4m+iu6#U=p7*PoZtHh)j^V6PapabKs1RbCdd}Lg;OetgA&0`fJfh*k6*5$ cm+H-b0MBWKQ8xX%Q~&?~07*qoM6N<$g5(}^?EnA( diff --git a/interface/web/themes/default-304/icons/x16/puzzle__exclamation.png b/interface/web/themes/default-304/icons/x16/puzzle__exclamation.png deleted file mode 100644 index f6de645498e674ed901fc2e04b3150f952e25f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 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 diff --git a/interface/web/themes/default-304/icons/x16/puzzle__plus.png b/interface/web/themes/default-304/icons/x16/puzzle__plus.png deleted file mode 100644 index 8bf14aef5e736c61ec4b32f530cbbc3ea665d715..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 758 zcmV| zZAepL6vt23-Ra!iyql&e^fDJUvOa9K@mj|3NvJ-y~3r; ze4#Q6O+r`J2PuQ#vAC^KgCdBaV$ePeKcCKXcdt-g_;Jqp-*f()`|w|h znP6(<^_Z#wJjnMG(*)C^U)6O~gJB0BU`KwRL>|>zHO}WmI)0tNmhWBI{_{BUTGP|O zExSz3j1x!%QO{MK8{N%|RL7c9`#*JHRje_^Ya+ejD7}a4xvcz01O5xwVaUOo`~(Yp zA#;jqJwo~&Vu-eci&h!JR>mp)R))}TOTd6_39jWPsEKh39=qc;@0(GYaK&|vkkbZX zE5L;ufF27g`nn0BH)rX<=T5Bs(29GbEyxEeSpavwuE*-PjadJ&9qVFk`lph?fDPb` z382d;!%>mJx$MNAcTKo$zGj*2FKf~FtUPJzGb(N#$9xKIl6CR`? zM!P(K;;nElXgj;N$_R=D8C zj6ZO+zMu2jS)+~V2CYHCj9)-gOZs64nyu6ke4QmM9 z76qF58351}&}{<#XB6?fAjO<$nOc>kL0L19dChel;gm^H`{|)e0L6rx@IbY2S2$)= oIM5~p3E)xJbXL?E#;M=?2MbJKs#Du#WdHyG07*qoM6N<$f@y(k3jhEB diff --git a/interface/web/themes/default-304/icons/x16/puzzle_disable.png b/interface/web/themes/default-304/icons/x16/puzzle_disable.png deleted file mode 100644 index d39db2e72f3e66e9f5782cf67f21610d038c6a5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmV-Y0kjLZkh*qm5I-QOfkH<#L;0ow6 znvKte&1TyU?w~=x-!~crHk-{4aK^~`AA?*jcgLXH?QTs*qY(+L*Xs)mA2YIMe>fb9 z!C>%z1JdjDC^AE=!@$nSntkf1zhlsDx7~QC8<|WdDhy5$fA4zK-58WgCDCX!cJQ`y z@Wp@v4!}q74Y;VIeru4==S8tt6!m(Y(BKnzZQx+BSo~}@n<0Yyf;#GN3`n6+;5IZk z1^Wh$udlDwN~NMyt5s9ETy_HmwGi2C)(n#Xk-08cHXBgb=ViAMsZ{C;g3qhf>I}J# z75~V!pBp&DcELm ztzlLOUDvt6$#S{;id?VNYL}>=&1SQ6ltHi8%XSd86aBZ~6*!8;VjB8FXqskLRW(3l z&W%2VLLm*q3J{E}<#tcFStJsHR29N%wF-;Hvc>6i3cue^gAC?*IS*07*qoM6N<$f(l?0w*UYD diff --git a/interface/web/themes/default-304/icons/x16/question.png b/interface/web/themes/default-304/icons/x16/question.png deleted file mode 100644 index 2a55b01d538d8a0a0f6141ddade9c1c480899c15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668 zcmV;N0%QG&P)u9_GcAT2j(Q+Tz4ke5Q#zn`zzJ@*8%$;!2pYygD8CC* z<>N4RSV7UKRoS-~-=lX!on{s!3Ofj!ra{$X2ajhCZr*l5@!kn2mQOKA4%p+^VFiUZ ztcsHhiR#18pme_jL@f^){C+<}N%KrVEPAGUE>KD5{LW$4O(lM^5oLkds;0000WfW@c$;X9wHc+Z>ub9?z1+Vrifb zb^kvg(Q377yWQSP!mIZI)IVB8mU*5-vt!7Qt*uS;^z`&nmmGc|J3E_569Y#m6hdj^ z915C(sC^nnUDqD0oqI4p{)xPXRi3S_1<~Ez?I4F-rdF#@n9XL}`g#b)`Wciz*g$p1 zE(V>yark-i_7{qq|8`bZR$wxjY~-@c%uJQj>0It~%tBZ94L4ghp|Pysc1HjYUoK;C zY>OXwGr9|-ErhHZAD;J4V|aLYnOv5ho?cA9Rb_Lb^j-)VCV``>`~rEQ3-xW2@Or&y zX#b4(j6o>Nrg+!uoddZ{rBay%LBN%wPbj+c9oH&mAv28QwE82Ab>k2OA6^emLwaKb z30WVIobTjax7!VJnNq2&r7y_yN0DO*;DTWa=k#t)Fc{>V(TpGLWCb4Hb-7$1mnjsA zazR)`iFFjJ>aUO$`wlp(b#e~xWX3t(otSWgTqc*xGy3}n0v#`0NGX^^s%Zn4E7v*U zaG3M&oj9*|qOH>jyWJ5Wm!+hnoYZP{tqTjwxL!7bOCm(#q$HM@n3&nze1E{_3*u`20OGU8Ag|m&QsF#@X4+9E2&=H!S_a4=m&L}$ zvbeaoD5+Fh)Yy1;$nW1mdzS~8~ z`mC>SWNmfz2M$9!%BVwKa`s&oArd1Z6_G_oMyjHsqN<{!qnkw9_GzLWWz-Q#*molS Y0I8xG%UKpoRsaA107*qoM6N<$g6)TNX8-^I diff --git a/interface/web/themes/default-304/icons/x16/question_shield.png b/interface/web/themes/default-304/icons/x16/question_shield.png deleted file mode 100644 index 71f274c9f3db1354f2df6fe1f06ad28d2e4751e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723 zcmV;^0xbQBP)` zT}YE*6vv-;E2F%)WzFlC@Q_ASkml8y0o$}_` zWbx}&xLdOVXL81W&|Tx!4KtWE=mkMYN3TY^#7iQK=Dm?!=5qy;(|2C-kXAa)$gBJf z3HcKca-T0kPQ?ObJe~%pKSpr z%B)Wioi+f)+7Do{Sm0qrANVJ%)c)V^eEk_SPaG{CUgY>c3bJ+7T1 zWe{Y_&MDd{6a>C?@t#r5Bg*Vi2)q2*MbM=_hWjom;|m-JZ5qLjAn>W(FZQW@PyhS1 z=xgH;l{v=Xd7k0?M#8U*tYH>Ag220mh>pA}JsQ(7p)B|XF*$P#r@;9gn>!EE=(Y*W zVn+~oRTGi4>JaBq{?1R;ZC4fYo65q!5T5>(ahlF?`TVADoXL(E%woqSz{lsko>_H9qJ-3e zHM^%a-b`4oEpVRc(c6GqqAGq%7^7p3zU7y(tbhDET;czJO9kDm?f*GE=2$SBTtC~p zs`kf0m7MeSvio)a&$q4qc3<`H9rg(pfoujVb#99Wl)UX<_kZ30>3Xrh;;-&~zrXOs zKYNA3M?4eeo8MRZ^u>MhhRy$jSAG9y&SCW{{`T_|?h`Bu**yG3I43 zdw^{xpTX4Hq}WOyLQV2s%ZHh^1TuOgpR^#nE**iGsk4B@t zsth4Cf6f4yldCJf>+n2|FIAPYGRAOveSHM<0WRX0TAt_Aby1y?i^^I{p66zMu9ka0 z9f&HS!T?p~_XE`Yl0m32Fvj4Q4g8E~f+~3k+$f3i1V5 z>_PSqgPJPYvcWt+L@IkABGrKK%N0VQL7M*g8AX*WO&0)mm?SvoaL!o)>Wv0LwJ-&6 z&RORi!z7te>QTgIyWO3nsjjtJ#}BWsg*i!6-E6nJ^(gxOn2G@+pt-uey=xnd^^g1e q;mX$5PFc#^+spfSdhmXp-Wk^=+=L?l0000mWdM{?mw-Xw6)+W{ zUq$34JKNT6tm^>O<=KG zbG6pH`&I;NZC`-nIB2ca-kPh!aCc!vFcA(AVefeWH|%j>A{;2C2zwobzlq9-ppEGd za2&!g>;VM9pMa<7Wwhw{@7jGCKC+$y(7}Us)kDG12)KKs=Ga^E{HtB%bGS zvRP-fR3#RR(QLI~WQ6qSFy)7<8_IDW01!{5IF--e`tJL3B%8fmYc%%N-0W*P_eNx( z@ceyZ@?IgCy@mo(K>BbdlXDV@qwUSj^+Q8L7xvTG`1N@?IC$J_Z7i4%PnUrDFMS(J U5cwPrcmMzZ07*qoM6N<$f=aag0RR91 diff --git a/interface/web/themes/default-304/icons/x16/receipt_exclamation.png b/interface/web/themes/default-304/icons/x16/receipt_exclamation.png deleted file mode 100644 index c96861c968bf919eb118fb7d283f6c1876956273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmV-S0<-;zP)1v7xVN;u1r>t9VgyZu#1JLM7@155Coyr5LBn9;pm8@q9GIBgjm+SHguw_5 zByLPKPBJhs)WlFQ{Nz$Dw)gzGK!Jw#OWu4r-#O>Wb8^JQ>?{C6h$p}mU;!9v(2LHw zZyc4h)?%&27?YhC9-dlVT^(xFjWOBdJJwpn`1JHK?Dgcx$S3C<^-2iA`jI>dXsyNRnWvSiF06By1_n6C>GJ@dsxdGP41^G!sTt&jV2J3C>nH3|F|;`;6}2W4-s#_DrJP6%w8R^_RK1IrP6`Dv`c^OB)_44Kl7&I7;;!Phu!-d?jeju(9`p#f5il zSJv>`I&W&tuu=$_pPwfTL&7kW7DxpF#yL_!z~Sysgx$i4H4<{0$3q`TdnGcNO1q!T z+|il`GAtJPwY0?6=4O-c`}F5>qv;@^KbITb|1(R{Uyo99lZ+n`?TnN0BQpL0on04h zD8(xQv;*06U*Dh%f=lH>A)oB&xnC|6@^4?*$-a*L){6C7nx!sPtk)ui)5#`P@;u^% aNB%$Oc5(vGZ6h%N0000*SCG3$i zbcpm=Oj@e)EyY?*347!W9U|Y+k+fXmTXN;H686X$Iz)?yhtf*EUKbz5q7wGV89GE- zBqFWk_%+k{yb|`v$qtm686X;9~&Mf{udC<1%uLRhJWW%Hmig^ za#5R&lHBbaFcSz!YpGI6JZ3V#+wD(n9b6EdkXzTK^>_YI59#zT z2`*Roke`nE5E`&rX+qOrj^6d~bnO?$Ngaf<*o?eTEY;N~vn!obk z`1tm7q44L#9=S>Gz*MJAWMLyFyWQJAHn!7aHcxk($Z>x3t4E)x@_oT8uyk$!0000< KMNUMnLSTXe_13ij diff --git a/interface/web/themes/default-304/icons/x16/receipt_pencil.png b/interface/web/themes/default-304/icons/x16/receipt_pencil.png deleted file mode 100644 index af6dde02f874ba478cb401cd4d303268e331b255..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P)$^~t?RBN$=%AT0D@n$cz>wg`$I;`Y$Prny>Tf4I@yUVIt^J|tn5 z4??!RG&6dTA_gJ!RAA9mFcg!GH5haA&bjS$&c&ZB?An13hxLbX;igy-zlWdQC?P73-eB$X=_ zLwL?!T?Sxqd|c31u2xao*)fFY?1{_^j|ad%HYVsV(J6)PZ9{m@9{ZoHR`@JQ0KU;t z!ObF_lH1xcgy-zNbh%)S!ukd`A`!trzFfxNg@PeGXYYAyYv+n2y`Gn(GoXx&2nKTW zn(2Jr5T0LC)o`GrBZ%QJ&PY-Mu7*Maf3{S@U%8wiKUe4QqN2n!O+%;I{FwfM6E3N$ z;8updb2Xd&C&{I^n3#2;wxOcMVhPH!+%^GJ7lwuew^PL;u4FR%_`diCKg6ASIP$1* z$$j=vkI7^LeFKNzF9>YVMJ=b(f3fgm2H(dWdN?}Kjn@O`p7dVngcEi<+_BjJOwG-3 zT2Yw6b=rVQrc!$Unw-avv*-2jD++)4_72%&pL2V4xTy(R9FDtby5&Zj?f%;4rrzh` z4-pHCdbrDT{29;LW52%m>C_Rc)qAwP{Xv5)_lQpGsJI#uC+)|cigosAy=^xKe*jmv Vdhi>(z2yJ^002ovPDHLkV1j)!8Q}l` diff --git a/interface/web/themes/default-304/icons/x16/receipt_plus.png b/interface/web/themes/default-304/icons/x16/receipt_plus.png deleted file mode 100644 index a3a0912c8ad929a8eec7eccffea0cf794ead8cfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 494 zcmVBtWjmaw>xO}<4KKFah;hKe&6#$GeH-WRjD_}B1zo_au z2Vq475g~+7T$q|#Y&M&dSsFqpcJ7D>=Kj)B2R8F)disf~GAN8O%r7s`0*jrs$a~-2 z7ga=LAi!FS_ud>{i@bB)iKr4X9H7eK^8k_SaS$>b7-Mj~4%{E2399%I1_P|cIoAV7 zlD`32HBiMR$v^-{r64JQt-?D{1*b&Ge>j+XKgaXZ%X>eg9~V)bVPCLGl5jALh~PsQ zIO@9%ZePE34yU8UX}A7y&@YAg`U4uRCe~V7p#`x3Y@lpLNgN;9#>TfTPE}3=u;X{A z+_*Lh@b<+UqT1>z}cjcmMzZ07*qoM6N<$g08RSg#Z8m diff --git a/interface/web/themes/default-304/icons/x16/receipt_shred.png b/interface/web/themes/default-304/icons/x16/receipt_shred.png deleted file mode 100644 index 2e3c8f114ccd72d733e9c9d08cb8038555d895bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKVBF~G;uvD#-`cy^+bK}unEqCg zZJypjXK$umxN=E>UfELb!1_@BfdXq|Knj;v z*P^7fS1)bY<9E1h*ZWgp@&0q6YQ2qKqk~f7lL*V;|0^b1^%#0u^&RDqw%-ss|NO7% zO760T4?5jAZ#TsMYHn2eFmZ98L_vI<&^I~$(rR1R2g)G%T{{%s+^w5mTT`paByahu zgE8I0C#Uwq{w;R)qK*ABrAHccMU=M9zN@!-`|Yj+?tNBC3C0pCGGG1LL!)#dW+d2I zD$0odo4(vhF+9)YhJQgjNZ)~7_x&xr&#LV{pO)YK)vEf$^WvhTvUWvR1evwv_&0tI zTfOmfh}NH|wVP)9Jo8((<1pCl%KG^?Y9BfVD-`_r^Y7fbNhdeN6oQRwxc5>;=Vr~m zW2O4xdYetxfA?6ogTI!$^az99+Jg$ZGtPQ1pLjwv{Ce=pBXyS-?r*WNlahG2;@H(! znP(p@%5+vW?tNJIrJZvW!761M8y@JbKEJ2W?RSTry>WRbiz3JY5nq3^?!A%` zpf&sL#J3)tCG)?mz{Y@hNq@^*@BJLskAv%wl8e)_N0pfPd+R; z%xo4bURHEfYp)0w!~-*C%(^5d!?)r0LY4_9pR>xY{4e6~D)7-i%pU$kZ@-4Bd422WQ% Jmvv4FO#tU|&Po6P diff --git a/interface/web/themes/default-304/icons/x16/receipts.png b/interface/web/themes/default-304/icons/x16/receipts.png deleted file mode 100644 index 5c72af536a0d78c210d7a8f291e7e6182b158697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmVgY3-yqaN5NVjxG*LQZAfaY=%)2B8}a4bKA*9w%Qz&l7m_+DcTM$ zD^U(CnwB-$G;Q;Eev5xk3~zmV{(IlIw@;0HkqB)>qqMoVSDX0#xi>61W#3kB;vDx# zKTu1)*TZ4tVp(H8pR?Y?Iqv;@Kw1lhXk}-|Rh5g?_jj&HdSV~v68*}RM?$$`ki29ww9gkk1?CN+llm`{yJgFu(yz zGc|Yr?2K=po{X}xKf1c=k%+(m2Q1Ch+~~;(-(<5!8TogHyxw_<2n=w*(oD_Wjm7xB zP~fXfrZ&-l+r1zWfdLL!nyI%mn zHV?Kr9LtRs%K&C;Z|@WlbrBfge9^v`-??U+jauw>!oqB_T5I0~1~_18W<73$$@KF9 mS)Jf$-ml!x)!f}}Jn#X-43op%`03&R0000H%T8iVPW8fH(msxgNUq=5j5S>f|Zt1Te}E$XLKP*gBsgt z8_Wp$plC!xFm$=V!BAM_=3-+gD>s>J^WQn6-k!?pfgk_(Ip=Wr@$izx>m{qtN4Nd{ zYRdh4?F3`s`p)%I`Z7oAf-3xd)8i4k!RMsKVpuPwFLQq`V20doy6$v#S9q|pwuUmJ zrqrd+&|h_ViF>I~z`MCQM3YGrOC^m`r2@0V(ZkR`b)Qd8N?<$|Lwt%>ULv%z-)l_xICMGbyxTulkx^8f=k0BBb(Ge|GQ`Pl_LWpOx zu)fZqE094T_7%s?=F1F`Xo!wzshX;;D;Pv7pT}v>JVsN%8SesGEH2lvp$9~wAv&U^ zYX0EHlaFY-H;w()(87^hFL5>y$K3>Q$Tprlc;|zjL_>7a{L_f$?{qv)!Tt%jFaw;5 z{N&m!u%|ybL#;-ma77e_*>w7s?0NVeyG&z=?WSkpnl69%s51`TG$8jKy)X2%xuJpf zwYOi*@MCRjZthR;!>K8C>DL_Yq+0!>@PW60CWn{D&yd5#)Kvl@K)-R_R#!*QS=9tOk62=t7O zO3VL$o!d{T>HNmkmap@DAb)@q9d{26aV4-U5E>BjuZ z3g#&J@_D{a!C$%b5OZ7<@s-bqu22Xw*=(U~K9AagfmRCs$(Jnm?dY*x#M;#x`iW{ia(HcL0rUxI$b*jzzpUv zOU{&YC#H-Tc&Ejj_z*w2J1`g;$GuwZX$pWD%wg8oM53tJ_cT74*oVo;HB>5_A{5IE$PWvHLb=2J|udW7Q26Mvn z(fFg$KU%=ow&OVW=I9TPvk@O#y3qM{CknP5;*HDY*0NIA0?eS!%%{`HdBfqt`T|qv zc-Dvk?=JMaw@CtCzq<~tV-@zvyCn)>Mom-G*$BO?4GKlqXL@nJ_mW|q@L^^H?eK~(+#0000IXH<6M~YG|E)FCq7Y=eUhEWqD4duYeK?%9YCUbD{=b)q{gmSPF z<-pLiXxhfK&Exs}vR_Y#U%h+w`+mQDd-WSRS5|1m
jRb%4)YpqtY%6jf^6Z<%q zJZxNGB)^B{7yRJLC9da4 zgpaPS*z5CgG!`?9B@*mdSZJ5%Pwv+7F$V8nTyXgP-7Ff9vwdd9CK0Ira(BI64!*vc zMMPnpn(B~MhHeh3E5o}*E292@JB zh`;~`EX~y1wZlWcd3rJn$a?+Ypj{#Y101k4Q*%9gdwd-TnEB=3sdhNJB_c4u0ZTJA zcWGyb@55of^!ts8Ds8r&{<1P6Fu(yzGd0&;Q^T{Vsdwwe#m3w$DdG9FG~Y7O9DxB2 zSemK1lNL+xt+|=MH%)X-LP0%AT9T=`_Wb;VQKHlDjYE*0lS74db-j=Bv9im{`)=jK z>4|mhR}fK?G@z18j3>`hRMeVLTH2qIl~rlX%*-nNj(s^-fW!I{T<{5w)usVA>WFaw O0000|wU55xfq^nACsm$4$%8JEklRq{IT`*Q$s$LE7vJw4VuZOpH) zV~!A$`@BxTUv+7SZ#k91iAV%P^YfU=W>vEJJUY6&FB9-j-FK6d9QbKw29s-RDw$jk z?Ok0q0$BCGx`9v#6RWE#DYCG1c3vR>Sc7#~OVku~hl4?kudJy2B#Vn4Povjl0$>f+ zVJ%Tp)O|BGg$s#{$&ysW;Sc7#~OVku~UyhIC+|rW5mv9*0dcBBlH@=pn zk3cF+BWsD8qOPC5I2(^+NFK!JeSMftr}0!xP2d@T3C_2+GFO)~ncp-EaR0@~2+FfV z_~F$FOfNXGt)l}CW^=n;uLm$Yos2zBx&=)U?)!%x<5N#@m=8Z_*%_UdNAXZY!;M{K zWdQXK2Xie(KMiYcCi3k)K6$inkq_T*E{YyIy5ss@gW=}xs;Wx>a1iQjHm2!EGKq{F zi>Voz3u0jKq@wM0Nu%u!FjgD@D6X!C?d9d56l<`~B3)K#ZEeeUy0}8xE@+1_DP!C1 zlBo487>!2&G28}|SJ diff --git a/interface/web/themes/default-304/icons/x16/receipts_plus.png b/interface/web/themes/default-304/icons/x16/receipts_plus.png deleted file mode 100644 index 662ae0413a354f0ba7b595747111f6a2f97d3805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P) z>n4%COQ(OEY+tDH74Fw1n0w`z{CdVvT?92Q7ml>I-~6T@Yi~XcSI_YoV8bzk{_64OjLwH}_RJou0~cI8K`H+}Cr5;olX3Z)c)1d#WoJ`~XyU VrWAj}3hn>^002ovPDHLkV1im`8>;{S diff --git a/interface/web/themes/default-304/icons/x16/receipts_text.png b/interface/web/themes/default-304/icons/x16/receipts_text.png deleted file mode 100644 index 6e395e3b896bd4541175c0a13ec9e94f402f4f79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmV+`0@VG9P)P@`Ixw{ug6Fwh(nwuM{$id3h6_+J_Vju4% zYRHvKeAz;Qzel6|>-d<9rBba@rNS<+cUYo(xobN+7#!T)dU{kM0s|bd)*}&) z#N+(!;NS*#X?vSv>9i^-l5DZaucxNoNJLS5;roqUqc~2&FA@d zDy1gscRJrmL|}je)}kClA^F=@<--|V|HcMC>FfKDI6qf2Evhb??Y+6Rl?V)Qz|xsI z_o>~!Y_eFMHTU*@G_|z!V>Wen4-!!afdP&|Gnluz7ORyW_w*1J=EJr&^-N%Z1D4LL t$9-Tn-@QOqJ2*P8A-B37b#~S+xCR+RiU4?C$Z!Av002ovPDHLkV1iJx2L%8C diff --git a/interface/web/themes/default-304/icons/x16/report.png b/interface/web/themes/default-304/icons/x16/report.png deleted file mode 100644 index d618d9fa0d3e80eb29a754e8f3e222f943f9ea43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmV;^0WAKBP)~6zDgm zcc)RfMVbI>9a|)#<|`G<77C_#?%Hvom=Y%hm|=tWuP?m5|J2baz_IN>;iLd31vonz zO!$0(96jEfrkUcoebbJ@E=~zB!v?Rp9A4dKbw21JZ5uWelj4kkGN7~@^jfW9jb1rR zm(1{-8z|$-h0@nv?kA%#0_!jamtEnzyz{pUJ!Fs!{S)u>`~nF;Fqoymi9P@T002ov JPDHLkV1lMT%oG3s diff --git a/interface/web/themes/default-304/icons/x16/report_arrow.png b/interface/web/themes/default-304/icons/x16/report_arrow.png deleted file mode 100644 index 340dbb49ae05d59e59c91aed41e9765701b74b34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmV+|0@D47P)NklT#m{6VTfq*whA7u0Sy2QETxdYM- zDMpxJ+F&i0!~9alK%;BeC+v_MQk*cMIyOa-v&AA(npW3fEQO9x0>}N=7EdU**->A& zd4tvUb<8ZR8C(q~5ljN-hF)dcA1&L@KA5dFxZv^hr0MZ~XEM7e6U(^tbU|miJBcgf zDn`Bow469|f5vXw;8!}0>CY*hb^Ip+-vH+v(D|{ZZxJ}9yiHUa9BOOxXXuqv^x8Y! z8k@z%!MM&c5J7uLh3x~--2EcaWP7MLI80jEX*R~rv-kgU;PQ~x8Uqe?j{MngarJNQ vvPN=*9Q&Vr*2m8ptWQ2Qblh`q?KJ)cF4IUnR=7pi00000NkvXXu0mjf<`)Fa diff --git a/interface/web/themes/default-304/icons/x16/report_exclamation.png b/interface/web/themes/default-304/icons/x16/report_exclamation.png deleted file mode 100644 index 98359382b1a722497e2bd6de71c0ca5a156a0858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611 zcmV-p0-XJcP)@wn!yU^)$So(ew?OkHT z-7oAS#Reyh#+C#<-p^$69}5eEnDgk7_;DR{3`_oI^f{}N$}{2gxKq$>5J@C3?TwKr zT(1lW`AqQ5p2dsjR?L1pfk{_g`t=jx-tc3gn6SIHwk=72Ax1A=@GY!hS~-W%+$jXT zNAnH%8uT8+#6acSmk)(Hes>Q!%&OT_c7%CKS**g!lyV@w95{sK`GZiSw*1O{p4=aG xb_u;apn~ir`~KJ6&hC>bEe~!n&!gMS{u=}GQny(*5!UTlMjCwqdEL}+Eay5x_^NtzWI6EOAs5Xdavv~a=E2QZ+ zOxq@8W)>kJRHlD^UP=}U7)z&X66ZskL&%2NDS?3=je3K(R0^-|;tDba7&nZ_2HB~* zO#|ytHGOvbRDvGwRhAVZV`I3h)8U?8k4v2`xYz_qTE18V@T)d>NhI*{CRVYc)nRsI zL}8giDh-+qhB=vDIYzJj*Ot|aKJoS5UUX3dM|sZ{!e13;R6DJEkH*M!2SRL002ovPDHLkV1i{u(K7%5 diff --git a/interface/web/themes/default-304/icons/x16/report_pencil.png b/interface/web/themes/default-304/icons/x16/report_pencil.png deleted file mode 100644 index 8473dbefb27d5aa6954adb8e22f26ca5f54fb440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmV-I0=@l-P)FuxAe@8LPEgM>O3V_d<+`rv%e5Y*49I@oBl(MwJ3aW1|o<1;`X2w=|Har#%(A zrL?xz5ltU?JObenae}$`NyZIU%VoU(l5e9-&0LRMkla!{yj5ZgoHrYs3Ix0=9mtnT z9ntjR$T0Q~ZhD>O{LTx`t%eO&R26SOD{U0%8P01?*lgRrVrmL^IiFi^Fy!~k`AP-Z zVzDDXmSeDAv_qu}Y!*xKDq}Xo27d|#y!o*5AB&3*@hoxz>Q6t+2h870Ce!ZAtYr>+ zJYzXp-fu-|Bb}bb+`VJE`9h!vJDk!|*PbqRvX>kG!mnHouij;K5{U(W6;gVJ+?adXQrZ0_%$RA|dt+IEBQnI+6ej_c-IWKMpJ!g0d^euyvdElsnD*u{3T z>ufK3*~*ZEXHZCDLgq^E5tdxnw6mJ$pOmfB*mh diff --git a/interface/web/themes/default-304/icons/x16/report_plus.png b/interface/web/themes/default-304/icons/x16/report_plus.png deleted file mode 100644 index 49b99950cd9cbc243d30b7216973160de73cf961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmV+x0_pvUP)@E~H$LDHL+Sg;v?N zOxCO`Wwurk#iU3!>}2N5F+a@Av(I~E$T_n-_32!^=lP!Rd4ahY==#|h*?6U~hdq5t zY&IBPT9WV;)4Sb^tdIR5z&(uQ_xsV~@u1u7##AbW{_|Ud6a^?-3Nj}JI4QvS7ytuv zbDxv6m`Elw;^z*p16eoQB*2+Ah$j+wbfy_3D4=7b1DQer3I!-n8Yq*Ka-6;ry}QeZ zpSQ2KBa@kz0B73ZHWtH!6V)I_&Dy@Vp&$uf0$h4pMn)VFdO?jwGvep=H9HC)g`WgC z(*`$@2<{z+3^e+Urqw1C?7|iSEwgNhoDV?fg~YTfQZ>vAbtM)NK#UqrABiRKNi z!(se=cwNaigCm6(E`+>AK^Y5_kqQL+r3Vi7X`PJ3^A-d%N-S%^>>k3v-NaaEemY>!j z4CjVnG|vZ}IeG*BBjr#Ai%h3wSQEiK|Ly*s{|nOe!4e;jPWpek#p?gFZOwQwNDoLa!@K~d=2?DB8-bkr zUr*2Y|Nc-vNa8+7j1UItWdJf5I-MCA3Jn<+Us+NJHhFV2^9+#qL{CP%7^H?_X$UjJ zhA1$e4RZdgJ)QqSY>*fzvuriDph8KaH z4+1LEZ1c=3gK+5ewxZuq|}lxZmtGr+Kx7$XBZP!(om@KpzjFAipc z;gzp|&VRI__CJUX6W0{Q)Qkee*cceX#ld*-x!D>2AFQkXKi8jWJrFZ!5Ymk7oC%(c zdtL)w@N7%te-IlaMl6sAVxv@JhJ|g;497tj$esrjQwCyS=rBkCu`m$x0Wl{KvjQ;_ zvH=1>ECs}pP{lwGF^B-M5D@bNF)t8v0Wk+uGc&RQ0Dde;z9%tD>;M1&07*qoM6N<$ Ef&`b;{{R30 diff --git a/interface/web/themes/default-304/icons/x16/ruler__arrow.png b/interface/web/themes/default-304/icons/x16/ruler__arrow.png deleted file mode 100644 index 446046130d682bb899b3bec2da33f334117910e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 669 zcmV;O0%HA%P)!HJ7b5|Fi8{>{9-l9W`?Q{SY5?-j3@HKYnm&5SEK`*@ zfcKzuVTM4z&w=kdD>1l3Xd}Q@X3YewJ{RM!%AOC1T=f^;N=iUrn~)}yr13{Pjv@D~ zEplWo5%GdzLbKa7S5 zBCm7Gx+L~5B3ABO1^%i+c*aogBQ2Mp+ktFCM`US@!N{^lh+3(=FRL^pQHV0YEMh*9 zlR8X41apYl#7sg_f zJWffRJkqK%1=44Xv;({IM1@-+PJlkltSPBQm5o}V$2hrG~ySY?PfO0o9jMx`>Z?S0=X~Rq07D&tOSf zul*&V(HW>epaRDX%!f?aK_=p0EaEgP z7Xq58_3gH(m)z;~AHhr4pUI^BnurVQvHuNt9Cl99(7ns#-lfmT?2BG`6n3)IwDD%S zonAaR;#~fn^W<&MPWk!TmG9556zW{6wd76@y|{JAzWOE8CD)GC`Ul^hUXt=)t9N+@tAyl(#?Y@YV$!av_NN_LCaQn6Nwf-dE~Giqux_*%EBHD z?Xxl5hULjDFS$ zrth5>*3`H*DiQrsRGW)w=LEVoDBF&1N4%pB&xqEpYMT_j9js9*m8D9BvOuw#^by6s ywOm=JtPPs=hpNklk+v+5_cX!tc6#vdagWIgo11qL1RehxGhi}>qEHBLP7;~j_mls!6l zWxAQOaC4V@?q^)VSH3Oy{Y4PJK5m}W@y?@D&Ya;aT-~l|`xI-yOBJisjV}+*;_#^g zOx&oO7S3=Mf?K7!3nfxFEygB>1Niw~6K{;M_b)gLB*1GDP_-JAk;_$T<=&l|0Q)|( z_$&T`9O%y#(6d4U=&)&^Yllh;w?97MMb_-`Yi9<-)dK8xJGAEIt$QOx^q~+Np>jE- zQC@});fGuG>fH!_9|%wp4&GM&V6)kl9?s8qqsN2YLfnN&nI=s;x6cp6I_>wkrO9xA zyVzi{SPmwWNh~rL8ruMhVD}HG5%KcDT7#3|cp9H|cabPz&VD1Sp@UqC9Kahi|XdU~8!qB_MJf zvcldYP*}WP2CY^LC6F4qa|E0*i-C{SL89*jvSzQd7M5j(E6bqJxDc|&Vq(qSwGgT| z!6Sxrkh~=)ouU!HjiRqc+%Gq)Kb%F(Af(I!vk3#SfS6CvgA4B61QMYW|{HO~PQaCNkX(r3v&W`il z#v!&QQkz>!WZx|`7k{0WMq5Z)iS&4$&)xT%)Q)ex?s-4&@AEwO`8<7*@ajlZ>gcW1 zeazVmKJmikn)u^J=~X|OB>3xXJN+1pk?7w49q`Dj*GNOd8b|U?yq3nEU!oqbZi>f+ zx3Wd)#e?no#h*!oUN^3$?=PeD?OBtplh+T98>L5jaeIsN%BMt-u2wHrFTOsxKz*l| z)A0R3R-{LI5nZnZn%8QboTSG3LiFWvgS<$I_b;RuEKpzOfPV>$!B)ST+_lXa62H;y z$cogUZKD$%TNM#G{z!K{i55?`{bz&wXugd-VAp&b<5g@weSBD_?#9S|5aJ>319`xW zVjx}u+$>2)&dY1rk8g5XT$AI=f<#-s=Li?I6j}qqjH#mJ;_sMcW4ws&q4!-UsNJKr zF%S@$nl6kL0j{5kCG<$8i!ZUd7?O^nlBSVJKuxMx{SsLeDVJVr-EUj9GSX~*O3aq2-&0%;un8EOc;lincfzs4MLZF}@ zXC{G%sQ=(IqLi7LDdr1-R}9_|CNo?KUIr#&Z*DVuIsMqj(LX^A_zl`yfC{z3w$=au N002ovPDHLkV1n8hH;n)Q diff --git a/interface/web/themes/default-304/icons/x16/ruler_crop.png b/interface/web/themes/default-304/icons/x16/ruler_crop.png deleted file mode 100644 index 931fec6529061b6d74d1374d5f58fb0b63a64b8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)5aM*sW$v26vK70|}hxIGOU|O2-I8z6xn-g^f z_&eT$-|wH5H7Ci0X9&*%^lmch`R2HL8UE^T!ok2EY;!HbpAWn;P5P?v4B=UT$VQ`* zG<22g13zeU^i~~m&AsZSV5yZo@7OC7a*yz=JOIMw23*^qpZ|8x#DrCauDM{fuh!w{ z5`gXs13ZNS!WFv73BTTHM6L<<077L3bgtLgg)g_y;KxWUa?L&Wask1$IviLG%zD0Sa1E|uzvZ#3q?xUUi&Gr%HX7HY6_w%~NBgvqEIx#k|vL7-SuT9dt}@%{B` zWnXX_a0uEEF6PAts^i*Zk_!4mxqCmaf& zM6*D9#XWKaF0Rs)E5o$;w(}4Ucb&jTP22ui8%pNmla}o=VRZijO!k~Yo`J?9p+tsm z9LLv}4~{FmYYuY4cUKR~nxEwv;9ves0k!$UtjQC1GufI0BmIBT4#Iv4YgW>!C*ibCU~#WIz)uAg3wwEpq+CJ zha=9<2Z(sO-F=pqU()UF6UQauI7O)tts}IKvDW@F@ftu~T#OhDMmVRa*B`UL|DK(l zHnX!&n4f<}9G4gjzT>?x9R9#st8N46Jhx~aqg24e#6uPqme4vtDLvjNC!bkac|oW1 zVXR>6fl?7c5D|tkHTQ9=|YOi$0Sv9Up=QoZrO7y}RlL4?*3ySpF% zn8LZaC1z%3F~$S{VXxPtQmG_i7}IRd0}7=S-YdXgr||b)c<<@=`$@mwM*&aMG+oqM oSO2Ao&be=wmzVDpQ0G79C&AJ$NexqpWdHyG07*qoM6N<$f{+jossI20 diff --git a/interface/web/themes/default-304/icons/x16/safe_arrow.png b/interface/web/themes/default-304/icons/x16/safe_arrow.png deleted file mode 100644 index b9dd1b512c0f23cad58ff69442e2b7fd1623c66d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmV;v0zv(WP)g}(GkcYmuaiMpGPW{!sg~C^m;wk*VjP~xlFBA6ZewIB&MgQvA4H}t*x!UVltT^iXto)3&$2AxhPt&u}6Q!16j!$>58iHQlsVlnBU z$K&PQe23fZ;V+N!Ju{Y;9B6NEhs)&!Ipng6iVEUUI2@K<+}_?se}6xs(S-D0szzfU zrlw}Fxafkx(1GP;FUTR6m6w+jEul~dLqj8QI9%xMeTB)%83Y1RsSXYf^Yrb!10Om% zy5MvMKn}S~p->Qy{r**Sb{hF1H_yU~)>b|0>gv$eX5jKy%+Gt!Y>7ktZWjYzq9BJ{ zR#sLUK*=*9bFnAdz~pi{Veoi1 zcvz-9R3B65O#_X)z|F`Xo+N?uPlF;WEG%R)nXJq27vb}TI3iY7!o2Qq!l)lu#WjN) z3QkGO0DKM1V_QCu{2&&K(M?}c;oL;X-z24;F#S1hV zEr!D(`_o^jhR>OPVG9v<9Xt%UcW=zyyF)|*-R=gnvuEjcH%N*Rdy2pE@@pT`sNEvc zyMWj^2cSlyF~i{)?-kAFAvQLya_Q0v2MIi!#${aX!jN$z?oOA!g_yC~u z+@W<5r6MYoy_`Jx7FtJW6{yHpOdWWev**5H>B|{bFaHSG*g3Vkf>H&ds6ZSSNz(~R zr3y)slIZK~+m{lB0n5wFV?_)Gm)KX~V+ihI2twOTES<09?$2|%HgA_PS+U5cV8lzM3Q7qjnu z!Ec*05Ra%gqNa1au7H_xxqM1%U4Q)YKKaPJd-}}b7pGcDO7KkVf1lCdTLA9d9*us! reCsC#H2>>qE_}wP!14e2tE+zlXqQNAJP)FMcv&bdQdF~&ofwU()=sT%+`ga9B}meFW5{z|%5s}VvF0IRA1#(Pf)fqK18x7+=r zlQd14ot>pxt)i;tR|47H-9=UDbUJKqZvIhuadDB!$w^jLR!~*hSN7f;=NzhvbB-*_ zNYj+%<|CCf6hETdd5Gcz+oe}6yTd*i*ws4A)|&N)H|IOo{d*q~S}QLmq)P$=^9 zBIfimDzs2qB=Vbh}+ztrkN=6&^gePq|#B-EL!T4>1~yv8b}| zz;;U;A!7FX z`ubbO$FI<6JjZ))#@5yj2t@Maa(S#xD3$VnLBt>;bne_n-@fLU+vVA`80fJ!p;j9O1Q8)d z0rqn6?(`^kpFaCJ0`RHzW^D`R1sEw7i|33nL;n)R5W?r3ot-BFRQQkj4#@N|Er8V= QD*ylh07*qoM6N<$f^D@W%>V!Z diff --git a/interface/web/themes/default-304/icons/x16/safe_pencil.png b/interface/web/themes/default-304/icons/x16/safe_pencil.png deleted file mode 100644 index 45eeb426bb5c3ca8f22da3ffdd2c8a9ed1b22d63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 712 zcmV;(0yq7MP)0;9pZJc%YWy2yNOm&FZ_5oAHVaQ^M6@eTN`U{Z*Spf|C1JS zS!-)6ap&yp3@0ZiMI0X=7jb%e3UbJ0YPFi^%H?ucTwMGove_)iA(yFCD&p?Z(Gl!+ zJM#HFGMP*fhlhuVMx)T{_1N6p1Uclgrluz1UOJt|{QNu)4i2!rz5QD(77OC>IBYf> z$RU?CHZ~Fu_V@Q;wOWx%r67tTTrL-;rlzDyV`6D(30kdInj?o?*3i&EJlx&g#mvkM z_V)Iqje-#3xA}r#P~e^4@HHz|R(voR3|%E~@($z)2VP$-C=SS*IIu?hHm0Spg6$L#C^*4L9# zHJitI`YwKhFhA6Yw>l%x-w&ruCbIhadZITHS>tmizA4DFutTTQL!;54ug}P3HyjQD zjt?(*23;r=3bDSO0G!Sc4{ViRU4+;167ODJ zLLvVM9UZq(Q&ThARZ+oMZEY=~_xnW*4NdUSKJsU*b2i}jZ}GsQ2)JLvJ*$x9r@a^O z-Zlwx$Ys^l)r3(Hws=^UA|}nfn49>~dA$E3h6lS53MD`exlAsXv-0xtfk-5da5%<^ zV|6vb>n8*~PI#=>C3$-EDwY>4{P)Hs$RU@$Da*)f_j337vs^CgMWqxFB*+B*gwFNlGH=fgT@ml41`i>YiNjxRD`-s zS(hIRIB!&JY!mBj-n^N&^L=l=H#01eNPsbR3&2_YUu%rV;}unO5Ee|Q(@TTF;K(Za z|94YW6{%F}z8sH6Bl4`*>mirRohWrQ8il|yNiZA^$#dJbDTr7shHkfe>`t1^CbHQq zLZJ`@jvppq{eGWSFAM&*y`txh00MlN}J40;IoI ztHJLNVtM(6$QpuS7^3o;r~?P*DoFM39jMfi6e2h{FtN91hy`O5izUS4ccgbZUBYy6 zUsOTh5ayHwvWUM3Sf^u(OeW}bg28hrl|Eo~HH(><3y4InNs`Cr64vL+$bYXA0Xs~< zyIor{Gp1l_>NMu(uZy`N=6vF-#wOyo<5*i+L%??M##Q4F0b>p*ibH61!tHiYNP@&Q z$CGbQu|4<*Wu#z#xG#P2ZvDZ)J)BeNctleOO#1Tq^&{tBJXOTS#3eay*)7c8n1%R4 z?_RwPt5k8X*Q-(HXf#6QkXgrLlKAr-T={evTdz0eOuMP0_r^l)%XR}_?L4gt>$<+c zIrsnT4Oolp-t^-6>D}k`UG3TMk!4x$ReF|U@bW~jsN+2I`QcU=3d>toUt)d;FaV#( VMH}06a>M`t002ovPDHLkV1jPvKAQjl diff --git a/interface/web/themes/default-304/icons/x16/screwdriver.png b/interface/web/themes/default-304/icons/x16/screwdriver.png deleted file mode 100644 index ad69f58c54334b0073b0c854be3dd0f23af32ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmV<00VV#4P)$0dTGTNDHlc&SS-dw>zx z+9fG4q4rewx(XeFAc*ZZM0#!3z_-f|^L?{B3mA++ArK0MkVqtcB1V*OI2`*X4p7`B z4`kY8g4Jq;)9HlQ>qRgaL^K+OqA0RlF6&&b)I=YJG`S=927y2zfMhZ$i^Zbma=9e6 z82Wi#;^Iqk^Gm?v@gN?L%R-@`@mbb(-XZxq0h`T+NF*XvRn;60hy3)-^#T@)1%AI@ zX0ut%Znw*ChgK)h>UO(jCX>Xkc}wEj78 zE5rmNN9CcR$5qOwzyiTXMvVg3LP$okPl}=+Q)a-IGZMcBE`*q3+@zCwz6cI6V9nuIwkVX&Dm6~PJ z1u1J?VB$kF2&G`1)D=-a*gcD2&_fUe@%2Ai$!IkX{P_4Tzu);d2lW8XkahU`vDs{B zZf-6_6H$Y~U=s=j_6mXbq`jmB<>lpYxm@sgJO~5=Xl!hRs;XKpmy2x~lbUJ6{xdg0MD||kmmP)0v4u>OOoW9~7%JCCiw2_P#!XEd z`Yo5%_z~>=j5R%<;5+pS?!!+C2XrCo?g6@t$E7jyh`Dsh>S?iP;JFZOjNHkE!(UEQ zz6*3EoU71qZVG|(9}|>yj!MD6m=GExsjsRk2PiX8w?Vyt6-S<7<-N3x1UvEiH%42V(H0In>rUPjq4lt7b z-q9hiQRZ3~BXG74qv6V%srYLtw?CC~)7UJr2`Ra+<0^27!tjsIPI-y)Wy%|8eh@5P z1r@so6N`5Z=my3OycZ{BWK>FH&OHU)z$4>p_fXyk9H(a^i%1z+Xmp5~EU>injV`+{ zrA6s`Yz`gV%r${+K-*c$t-uK`EG0F>MXE?8srVHwGu6j>=ZCvTP5#!coSVqJpR&;% U#2-VKGynhq07*qoM6N<$f*Xh>p#T5? diff --git a/interface/web/themes/default-304/icons/x16/screwdriver_exclamation.png b/interface/web/themes/default-304/icons/x16/screwdriver_exclamation.png deleted file mode 100644 index d35224afdc82e7e29c4c6ddefb98f50b985b4ddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmV;M0%ZM(P)L$#nDy6n*sFU@)|L0ykUp_MbU zAZt!t&5WA%$KjpZjk<{GDnV#q3kMUFAd1s>rZmiDUik5G&ON{1J&eI20B9$U!TLw7 zR)gE^E`^g2Y&M${N(Ig%LWb~{mqTS`CFpcIFquqHQ&R&DhXVvb5OcX4qocx_fRCgZ z;>$k*R;v}fUay!;CKbJ2FOsrygAg5-i1!-=j7B5W*4B#gcwC`1msg%g#K?aFRaI4B zx7)>7ET(9++M>LffJ&tTi^U>Fqftep(X5p>5!h}p7{qWmtk5k);RJ&GqzGSc6sRNm z`bBYs%Osp8LaXynq+~!wG>-zvED&IP3dgbHZFKA1rCjhUpQ*>VjR4NNz%*h#MIt$u zD}RIJ7XU4ZL3GZ_N0UF7L+o?Pp5$w3fSiH90`Cw-ibR(Lfen#N0rQ*7ST-Ks5?q|W zlJ|H#ET3u0^L0FgWkfMBj(CA0!{6)b*Z|3c^yO!6gjcb*LEoLt9e;%8k@iBQ= zEAjo84^{&)#ETS({b+1t4@suImdGB2=RLG}A3NqgoLZQkbg-dl1DjNAOqsAQ@O}Os zdI6e982i=S%z8+^N3w^aCtV0nyYS#xzgn70A7-;t=E4p5oSizrUia;g_Hj@5viHJj&QG(&=qambl#JX?@Pp02$ax1rI2=YQm6Eku&EUJd8@EV~x(K{pFA|A_)HKcT`~9+I zQQZV?w;R!DRF=zS!{_tK2b=C9=nsWLvQ#P=oI;}A=^)6Fon0x9oZ%@uxBZwv7h?1n z(9N|q(|WR{|9-I8NpK;=93=;h$;qpC3?Bl8Dtq=E;kJS^AtWW`zp83h7^YyfVmB7M z34RK(KuPsFmos^rzR#NpzLG8A1DkaxR=p|Egjl9T`?s`Ye&+|)3f9OAWb+pNI-50} zSao~@Rv0+>pU<10S@^>6)V+V3I zagko~g!B-BX<*J8Wfs_A;T0Jn0rHZ(AkS^-kS%*^i<*)fI~mu5Q=3n&00000NkvXX Hu0mjfmY3m> diff --git a/interface/web/themes/default-304/icons/x16/screwdriver_pencil.png b/interface/web/themes/default-304/icons/x16/screwdriver_pencil.png deleted file mode 100644 index c745d7ce8a588901b81636139306f141c7b5bc7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)9pv6pkcDwm;yNn_CpZ26}U9v1T}h*%HCsjUb3aL69jO($a=t7(|dDMkIk= zl+{vc61XWyqi6}XtLmnUitYwo2!kNLen-u;t@MM3!+G~T&%T`<90M>)A}C#UyB!@J z9p#7;JroK>Q7+IWg0G~fq5@8*6CRHT_4V}#27_p6X@RcmMxjtp+^TO0oTK!CeECNp z5C|Y1j~lsMF7Nev4JvCVc*4!E$-Dmq{C+>$+uMz7Hk;?YDX*=^WPY1~%jH5i95ynU zOun|Z_K&=ifX!xurfEhhmCC!_?p66HKl@DHknIAMKA+D>CX;!dVpVoH92l#s+fksC zJbh*u^S@>PVL>bwGXqCHiA=o`36%{ji8L$#OKNCHnOAP9H0AV!nD2n+qNeq!L_*Do zES3b`i*z$GQ)p}ZK0-MS45ruRxp6rji9{|Gi$&F3U48oj(7YwEEMhQ{TG4eiOPPU& zxlQu)sLU3>^(a2fzN)G!-~G-10)NjHMqU&``0kZ$rdAXrhKC0nsvUvIwPI6X3_K@9V7ZIERy6;lH z1PpUfM-CAWsUhlYt2}RPkf<3X`^et)&}!rtStj|+BG3Do00000NkvXXu0mjff~yXJ diff --git a/interface/web/themes/default-304/icons/x16/screwdriver_plus.png b/interface/web/themes/default-304/icons/x16/screwdriver_plus.png deleted file mode 100644 index d8fbbaee3ca0492e5548de3b373e6a15a74017b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0SL(GU+Ipp+U(Zn+4u^cXE&v|c1o=%GC*6pgls zKZiz*R)~0T>&2iD*J@7fP0)e|iFgnMLB?;gt+g6W7ap@S%zK%g;4pwIb+-^6r z*=#!oh@MO)2hc8XRtPMU^9~0*9uES60HV<-5{U%T=`?g*H=50+qRP+GECEK z`2GGhc_RUr%Y|4hW>l-yhR^3)FK-~=42Q!;rBZ3|6l-$M31qi-3>3)y2Zk~KOAc+J z;0DTM)&2fs{FehQ3D_G-3Jc9)3N z8rucl2w^Z%{i^HoF=Yn&Ck|@%#+!S9J1*<==MkyK*8KOt3n9)i^5k2gARkhm<1f#t z@4ns*O!t(y*;3>_>2meGwXOoD5EmFRzmJZ}GG(rfF@nD1TY;(F3hU^{lk!j0I%a{3 z6rTSm7UeC?971h_k}%7WTahNsg~M-$VpX0mD}*p8+m&Aw+sffE*zE$=;P{H%@3bFr+OYqfK+Z bSw(&Vt_kXj9pj*m00000NkvXXu0mjf4lV*1 diff --git a/interface/web/themes/default-304/icons/x16/script.png b/interface/web/themes/default-304/icons/x16/script.png deleted file mode 100644 index 672c3c92e31e891258b13557310e998b2acb0571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX5pP)e+By0#=L>d|-dT9_68iHtZ5R`Ci3Kwy34eTF@ zC}@$=L^J$(d3oO3^Arac@gBbLnLgj=`#!vPaFES{NvcqQi*i}MtW?-MV0Is@1&6tu zoUc}|49>Yen+YM0m$Bnw(F;52v=#P=vNIeC>1!Ilsnu?GGZ`;!3|q;h71kJy_*1JT zggoWKsT5!dz-A(0h1CZGe&1*aAx}AT=3l`JuKCbx3L$S>@QN!w;;JIZ+ZMcy$Nah7 z7DC>(prfk1-t7t@Z(Hy&neb+>CxpCh!2rMWJ3f>M@_!24iULwRZgQedr@W7AiXcxp zbLQu`WEs|@QP_yZ(weSw6>kwio^lARg~PuEi+(?>DvFdZmF{%I;9nRLF~eWo6^WcK z2ZLZ9r&E%GOQFyiI&NTr2s(R=T|0d~+TBI7RIuXkc#akVf%AEAxZU`2u#E(0_8W;k VXemZr+s6O^002ovPDHLkV1j<~xRn3^ diff --git a/interface/web/themes/default-304/icons/x16/script__arrow.png b/interface/web/themes/default-304/icons/x16/script__arrow.png deleted file mode 100644 index 462eeecb7236952691439fdd8c7c4496e046e22b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)k?ENhl6OCtsY)%r3Z8xY&xZrQbJRqwz5|NsB_`xhq$$pbA*OYQGh zVQ|XHLB?s{fs(I3f5wSF{`~oW?zU~4-3kg+KrUv`4G%}gX-~g=`G51p3!E4v4^n5I zn8*M$gn>ajG!z-9J^b|P|COgtabl1>NF7WMh5?U(&b;>Q8BPq6$7{e7pc8KZor(*C zLZi|0ivD^WU^` z-aMny*$ldQQ!owq1dQi5z<|PrW0pVuKlADT|K@#{ADB?H^JDlcIW@-wRitdc=Z22Q1cnx)(bHVARuOG$spt6!XWSA zk@NGGJ>oVdoLJw$KY#n5 zfB*jf0vZCt#Y->!cWplm#@6+_|C=wo`#FAUb!mKXkCs}KCtc3V_nzrczb)R zTCKj!WHNiA(P;E7v>XSv1I77LGX z|Lz%_JzhR_HTO;ckkqc#AU*G}Nenn}zrBX80fF}w#bOaZzkft3k(!V`&U+G|a;XHX zUWa4ba9vmMz8?^*{U?Zy#PHeL!LzLuG`sH+A5WyDMBekj2ml<*LbuyJd2?Z5juSy} z4#7E`)?4`AKKx)8IyEsje;bBqBN2CFTExsri5UW51VNB^6heADlo@BVm~2g|`Abnr$Zu$xH8dQ4>Y?7TER*v zB!^R}!xkboe}9E=PM4{^Xw(dIe!mv=lfv@HhmiM115YxU^n4&-=Eg9&w4_DNSF3ni zEDGVA=VrZLAPIogq4j2+n&7o@zC` zE0u(B-cwMn*D?3XCk8!p+5bmjxpOCeymkX4~n90i%)L4jhDycmDtp|6GskQjNv{0000< KMNUMnLSTaP5!ToM diff --git a/interface/web/themes/default-304/icons/x16/script__pencil.png b/interface/web/themes/default-304/icons/x16/script__pencil.png deleted file mode 100644 index dfc36a7808fe64b6eae7ef1d46e57d2d96723ca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0NChF6T0ICZ;^HA-!Gl;l1bV2nXpVZY z=28k4G{k5`tB2wjUd6AdO${+=ZEb1OG~3uD<4nWC(sjXs-(}yt_kX+lhciP%pdpWr z!r=J0_u9mS@;}h-NzezJ9Uk_MOitdYBVx5yGlg|JOt}z^wn9%htVdBvTwGf-Wwlbl zu~aG<7#L{f#&Ed5UyqV6l`uU&Zwl+Y=aFTg5CCUipB^P!EaHcJ-W1k(PxBZ8a#ZtE zpkd zvr9{+e9UC{83PCy0*dsXf76HB z&g|?{oPHQYwQv;=c621HR_l>FK;!WFKn#U6E|xbpag|;}PcA!!FO$7n=KFWM(SN!t zYInOq7Dd<^o7W5b{C+qP42CP!Dwe5*#$4_NzIt?`VIJ$one-I$9szqjo<_i~_IB9g z^NAy|*pq6#j(;eGS^o7IUq5b`AJEB}^fRo{RkumfrQOs(8;eC0-OZhymr27q1!%lY zMG#AAjK_NL$Jgg9W3Qszvb42@xHx+`z}nQ(a(;))b!9uG;i=%x_lJ({zpXuMayaPz d!coG--oHhJU6e`p>)!wX002ovPDHLkV1kKf6mI|k diff --git a/interface/web/themes/default-304/icons/x16/script__plus.png b/interface/web/themes/default-304/icons/x16/script__plus.png deleted file mode 100644 index e6a4934519bfb0b09c7c538a67628e709347004f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmVHB#Dxmn0&3+#p^q{QBosCS$K0Xr6l>dqgF$^qQu$-DK5BB#Fbnq zwM&Uw7&bCA!x*#UJge1P+cTc}UH#AbJ^$Xf2Rf&wAcSsa2F6!cHIr*=;(wso7LW?M z4F-*IV`DCWi2k1+E-a_Z#D0@0AL{jbDdGo(uGd#CFFqfdcXqa$hKBN4V<_(EkRm$X z-theXo(s#_T%}G2BmpSWYNd#Fj|Wd24lXQbbD^Cu!41_sbvn7QJgVT9DxOhQ9xRV4 zxO;y`+rtAFmPZx1yk4|FJ#k@qRKfG-Cpz8kh;$tdV(DH3%1wobnG;ozF{Ta|c<4Vr z(uayf$#yOFJ&$0lIqNFMk_KQ_0OSY)C|g@Y40yl4@r7zi={caAw`ziDT_VOVWZG%j z3d@Q`U?)SPf$YXc$Zc-c`}}_NQVS_%>(y9y*A@oMr&xo6q=EuS7X+ozV%hZv0{BG| zDgFC{SiT|zQC$ltn@+ukS-BPFk?ENhl6OCtsY)%r3Z8xY&xZrQbJRqwz5|NsB_`xhq$$pbA*OYQGh zVQ|XHLB?s{fs(I3f5wSF{`~oW?zU~4-3kg+KrUv`4G%}gX-~g=`G51p3!E4v4^n5I zn8*M$gn>ajG!z-9J^b|P|LQ$^zA^7IG0>Uk?%zkj z*PcCtV~{*v1D*h#xNiUc|NAdo0MjrG;%`53;y*|puK~}$e*J&x@nf7AB#+mC*WbSV z-*ose3O;=03K;J`bLKxt9WEUjD6tZMKBGL zM=?Oo)|Np%AOMClzWx6F|Mr_VDEK4L*)R-}2dRVU0Ru5hO9mMi7Y2C`kDQ->{`}u{ z`ZO4yzHb%7 diff --git a/interface/web/themes/default-304/icons/x16/scripts.png b/interface/web/themes/default-304/icons/x16/scripts.png deleted file mode 100644 index c36414febbf41eb43d79abcb865d2b2d0e329511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 518 zcmV+h0{Q)kP)Z+NiRMC?ld=m7%NpfI zT$ml_a~dP1q?1Mv@J`LErE!!cw7P3sNX!gvZBozFlo1ger(Jfp~i=o7X{DJ zD6YC(hppq|TAon^h{}|{?Y+9feV;GQ@#Q7ny}x7K(2%*oWP(ns^)KK*W$E-3&jSIx zPX!Rbu&Ruz^2N;!p85S42!$~C@u3WmFSy8h*N=}1xVG+c;cYmamj+s0M?ULMdjU-6O1Pk$=}&$v8?6S)EH@0L*zku zPY+b~_5y3Mo~$Y=mvnUO<<{3vGdUF%^y1J&G!jKn*wO-}U0phx!*RriMphM-H3q{x zHJ4=YYf#YKTuUKStjC%n8Ol7A51A{cs%k{m%Z8xL6lc!=0G-)Bat;4vYybcN07*qo IM6N<$f-kV*nB0jSz!M~r~SiF|vUe0*aXQ%v zi^Z1U3%@Qe%lNUjhI?M`=qal;oA$^A(qwLb;tz%33k0@!F*k?k$_ljQ<+l9FN_M)w zep~RrWY5F|rXmr1*%WXXL8&5&$#3T8@j4tvWN8V)>Z)8IKG2ZzKEz@&X!gMC#pif@ zgKvq1vVii!e3KNKJscT+8w_$`ezi$?oxS{N^X$ znEZ)L!{1TR)ZLTc;AC36LoT2^F;$w}=lA1pG6~Co0H*+)y!9@szx&CY*Zx*6pgb{E zq;+%=hC9=!==q4^>n~CDYyr2UfUa{osJ%8-!;Y4gvdpqFcFbtB|KX=lsuYtihMS9k z^*wNLcALfsklFky$PVcB>_|z;afjReoGuNeN@?s5;ZW^UK~pyz+*{oj)Vmg7ngKL* zzM!UdsD|w?EX?JSt908^>9h=*ow3{Rt8;RUjIqP&s@~bWNkDDx5A3rHm=9haVoa5l zW!|IHH7TLW$l(8q6%f0M8+v!2?+&O;kIY=cNbnErk8&oWOb|B!0000 diff --git a/interface/web/themes/default-304/icons/x16/scripts__exclamation.png b/interface/web/themes/default-304/icons/x16/scripts__exclamation.png deleted file mode 100644 index dec43e245ec83ed4f987e0fe031122589a8003f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmV;30(bq1P)_bHPsSnkcTrU<_ab;g~6Ny z!BJzTg#}Vs8`R8nZtb=tY4c?*S!*vgrv5u;G`$x#y71$<=ef`M@xO;d3gmKfSfe48 zS}nP3GLfdPuEq7m_I4@lsk1@9A4&~p5-1uQrPocSmIVOG`FR1XN9Wb5=4Nq5!CAeY z6jfKNV|36T3JI8*oy7x-<>~I48Zp}=5bz^Ydq>~sD69_0A}>Zp@I4a2Hlg$&T|BGzu@5eiigYTb!LKrM+nyis+9uEfGZgA7nn21J&g7gb(vUsk^Ndc_aYO&y3 zFqk3`i)9zEcy79h59>Yb?#5S62baA9zVS!d1uPzm$%pj}Jr;NzDnvt_@P0f7$&re> zi~<%f9hD#XN$)lIxdzO|%(R|Ioo2gEQn{aO+$R+Z*nv&ZgX8lv9z~z^03tu`L8(+C zJar2OU7r1|S(HQA!xw}T2?Xgs^YQtf)1IL@NPxm%NE3DE~P4iv#$$S^`bVCo1cGld12v&Oq{M=WxLyy!?kM3Fr)1T i`Czz7Y-xFBr7&S>`I*t$Uhk_Nz9T0W&uQn~_dVy?w*%US2524{f;O8Ch9wC`S60672NxEq zX=YY~zHjHArOj@ap9SOIlmaWkw^^^z{4){!5m2cX8k6!|S+! z0ESa#RFe^W`d?p_0{H_EIq&TDRsqi@-EO=L1irWrh13O{=cP>|Jeyuy zLqFB{<3*|h&f`oGp3QA+V1Pu-)5nLpfb-;3G1;}Xh0pY4<}DJzLW99VK(|(_6mXuL zDkd*^Joru=Y(m0?1aQ0vFatUD z^^m9617~rboGK=dCnpEPCKLX~NfOXhRzg;7ZIQ#}+T@o;P8E|o)6);FwD>nRE=aAY z(2}H|-?nHhrhsRS7Ry9Raj}7ZZ6=Xoq|0EO5k7;&{QUN$($WDn5_5CuzXDyH4BlfD Z1fOk0RTf9UQIP-u002ovPDHLkV1lCT^F9Co diff --git a/interface/web/themes/default-304/icons/x16/scripts__pencil.png b/interface/web/themes/default-304/icons/x16/scripts__pencil.png deleted file mode 100644 index 616d55501021a2f43480f52ce8c5a62bb573a60e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 622 zcmV-!0+IcRP)YC!(XnG7azacN(H3ZJ}xkAmNR|NejK`t_SFl9E(FdQc2Nb~4cP z#XGND`M>eZ893f`>C*p4pFjWC4h>B+h>Bux%E>_(K*-5U_U-$B^yba~kD&$tF#`yL zoC?D@oqX)ZjsJ(QUHgCY#f$$>zkGokP^GQSzyLD|BnWce)o0I8Fi33r`t|?szkUtI zFTZ{T8?aeSjNv3BBdP%)=UoG8LdGDmS(`Tfe+qQXQ>cp)?d&@4F*2?{#>nV^VgSf_ zAZH?Dkl4H}TmHWW8U(_(9zOh^U}v}Se?!Cnjf{*3Q49b%59U;4CokH*{r@MR%}*Zf z{=aVH#{b`eY&R*XzWEFcZYTzToCk9%vXhtX-1+~-Q(!D?_4@z)S>=BPUEQrhLPC0e z3=F7Y@bTwQxKm*mB(`=--~VIVyuq6L>cyWLS%{VbwMqgpH-oIJD}$1^H-nnLf9AK} zzrjvL#?PMY``_Qf{{p1Bv6%gir43&VP@^#r8v?NygP^%NgS4}=dhen|+dzrt2hb20 ze)HlQ&}JX7&Ha^(N0WmYf`FQ&pcvu;0W&jApdm$|)b{t^KNNgoTjT%#UvB>IC}X`8 z=FSie)WFMt4%n2HW7u_d%dlaf^#3SNw&TVcj44oOOQ7oq06?crl2(&Y*#H0l07*qo IM6N<$g0ZwRL;wH) diff --git a/interface/web/themes/default-304/icons/x16/scripts__plus.png b/interface/web/themes/default-304/icons/x16/scripts__plus.png deleted file mode 100644 index 00bde07451603758ef41f4157bf597d8534c1e19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T02oS<8$g(d_MA=+U2hYTQ>FVHM^{#?mzaI@< zT~bDD{F+YdSl!&DC*km$Q{COw{EbeaO&0bSk@N-wwVK-ld$yJ^#aaQQ?<#jA`$wX&653XD_vi^Lj{3@$vw|4K(Jgd;5;=| zn|$W=C8{55QE;Us+B6UL7=wI-- zG={RKCLD4&j`>2NcYJ9$RZC9XjpEzZSqzzD%<<%DQrCF2KZw%C#u_2H#kVb&&+FjX zS+{%GY_mB5RKi>Gv2wANaK9vqhh_)?V5+LRQdC!W*9eoK}qitB9Z&`~f{!6%V$}p$H=C!9yUR6napR3L*tBdMLDo9Aj4{ z78^pf5Dgk6$weeYq7pA^V*J5W37V>eWIFTNq`M(Y7an$ZcIN$_Z+D@hqXS-#jzah3 zB#cQCOe`)Y??;TrMyl!5py#hdbGm>xO{JOit&t~(FhJk@Ho>2tIl_~wJ)$2uRV*^bN2QF-G;_A*0`fqNqva3s1 z-O~dv1_%EI{7>0vv!T=H!@%DF0vJ|JpsH-Al`T#uI>;z^d#emcTyT-~zR^my?QLA9 zf!)(nq5NrS34Q11f{RE*J%IJxM@LEaD1d9zb91;G2%zWiP#CEOu%6j&N4v)(&J5QK z77O}mJ7?iAh94f(16a=+3@YH-N0SNtS66rv3gPc)6rX9edIE}?nv?;ox8iaMT>JaD z?sg01d8-xgX^@H0i!N+y8_LyaKpgS_);qYoOcEe%u9?=>Fcy!C&-qfX|B_W+uBFjD z;t3SBw?j#1C$JXlt!`}zSby*MSSaVWw0zI3sv2f8ii>IEP)pPhxsX#|4+X8Q&u3<5 zfAUY0P?am^H8;Pf=KK^M4YKR%Dk$U~>#?Ss6lEUDg483Uw6r&&mkyaS^E7q-4?B)E U92y8~(EtDd07*qoM6N<$f(Azh9RL6T diff --git a/interface/web/themes/default-304/icons/x16/shield.png b/interface/web/themes/default-304/icons/x16/shield.png deleted file mode 100644 index 085880b4b9401cd0e69cd5c0123e1c90ebb64090..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmV;D0&V??P)Ql}4i3^f2o~`l;!j%(m6S{-w9pEHkj+AeKnsDAXcB)L zy@?us&`2#+JBgr!4m#)>$ebbc^c>M!+c@;X!}oE{`@HueG629>ES3o-lWB6=?RLiD za4aL= zYPH%Yhbu4`3~MM{_xpY5^?DPj*=+trtJQ*Tw+o$4ht6ws{uJo-`d27j)oL~PAF%L> z9Iim8(>-rA8skc(0yFT(qtAv&Bnsj15gZ(ZC+G2T3{oj}gw8XrK&#c-ve|5##A2}s z@pv5e_d^pY6gomN0*8k&loMF^754VNw9v6~1saX!NiY~Z$7k}EMN%x5!eSOqPO=aP zY@MU?m@81L)l#qb1i3|D*h*Omy{)kD^MsDj9e~%>hrBd&(2D>q-^#ZV!Z diff --git a/interface/web/themes/default-304/icons/x16/shield__arrow.png b/interface/web/themes/default-304/icons/x16/shield__arrow.png deleted file mode 100644 index 9b6457ec2d8a65ab09df12850a46f96aaecbc3c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmV7=SWEhf%C+MxWG|cbW`AEcoDt5-#L!byy(Eg_wjz;^PIz>0Dv-?Oae_! zO~TsT+)TB!w3H(qN0gJ<-**a7Cj$ht*(|eIEKDR4StF1=&PodB{{)OiqaD%Vp&Y5e zz18J%dGq-^@19rPYTlHq!UFKOiz1I_F`}j#>QSJ(J>=ppsud&+VJr3 z5bnq2@UkcH7a0Lt6+{SS5_K+`m(P$){Ps;YWf_HHZ~ zT>BXcy@hai0~+UY@bEK0XBwcD|3lwLfJ^=FwuJzBWHK2gm&?x~4w_ay9U2-*MWYF@ zj>MswUHnmb%l)my`X;BD&Vp$N;DTd$`{JFby%3NfrO0`SL{cf0O7+FX#e*i3HB2CT zGApyqq^dUn${06)*6wM?2vrD3kqYE8q9zm-6=_hqhxC&@nMtp(+!@2OU1@EP5uYLl0TZfeW?}vK+B6#JMS?t1!qEeVLGmW*|wCNr5C}rB3H{ zn{K;vn@-cIGt?zD%uU-Y7j6_K*`No(2k~@%_qyoMOBX(zALsl&-{0?EE(HKoad9z6 zQBe_BOG-+p($dm2q~d@y())c+0_yJof?BN>X*3$G+wJxc$QpZx67zooR4UbFM2W*x zBpuh67=|&&VljwDqhL0hS?p=ajO-zM4;((Au&}Utette&US6)#YPEGXo6Q}GMD~}L zmw~Xcu>shdB(t)zGTrp_beK2@A5c(GP=&&7I2?vhD8xyNi;I8Y_xm9j3_>6fAaxg= zYJ?9^DwWq!ihI3Y_#ZGZP8@^}P$(2v7Zw&`Q&Urr06!kNHZaT}^z|8_x3`b00|Q2| zTG=Q%R}elRFE3BybUK%bI6giOCX)$zdi0#6*Bek|z-g|ASym3N;aceGdhSO@jqm}v zxw-jmZEd6YaHk}s{(d8#Xa?gT12c97#J~1|*KrZcqI&z{pc3oe%z zURYG{akUCUK_!fh)-i8_lX5p8HL`XJ=Bz0`cQ1W95gFz{;5J^W)B2ofP)3O?^VCG>X9er|#3LqD*Pqv`3(aAx72MZ6o*lp0kh;43j z{@Lccshf&UGTQ8t81673J?JrE*LH}Wp67iPDtG7yAAUcc=lOi!A3t6O02r2KdCX=r zzuWD0W^8P%ADQUTPqja1x-kC+5LT;IX0zE`>2!LZpflDkbo)I47K_D=7_ccv2Jk!{ z3WcJrRtuWVCPbrA4r?yz(G1OY93jADGEE;G9Mqgnr`P3j&BWvJbfeMuRjE{fsMqU& zwH);v4u`i;DAdS7gaD(_IEBJ#tyY8M<6~Ybl}dk6E|=lx=m@ISD($D}Od~>o!C-id z(n+ycg#Q5pPsl-pfYH%W&*9-=E1%Cp7koUrHiSa!5Dc!u(o&G$*Ve+YwZ%2jd4LE3 zBO@cWWHMPHF_XzaBocwe#bsVvUS35p1S>0Hl%p890fE5#GCEd72pAq7zU%kD7QGODXNWP)`CCo7I_yCnk#VD1^K7~RtR8CX+F8x%?9HM5R){_4(dZGno=(v!7vJt8c$JcmDfxvAFqKB>L(@ zk(lq^0GAl)LoSQO;;Ryg#3+?Y=U8?;MbMdQ)Wewpn!SdOulokLB%Q`>L`#T7A{|OE kkymu?))5tQrQ!25p;oK8 zyRos6X=-XJMB1_xQqMASh5F1?Sy|P0mR(4&>~-ev079$P@^w0$J{%6O5maOE+#7Q- zgt=_;;ZCJeaCmqKZnxWyJ-v0bSglg2`qSw& zsD;868^he<0_yAQJGQsC_gY$7y7hW}kI&}|9~>O~N+y#)?C5^_-X84k?s8Hhk;t*NZiN+>0!VheyawyhsS|WMkW7G5 zsl1QU@y5mm{LP2x3s|yOakA}sIRw396nab!k_o7-t-TYE$5XLb49>uh2R_$0cqhv_ z+4`gu-i{A|-R=ah*MEr4Z6p&=Q&Xc027^fwBasNWTrQZJvZ15_`1uVcMoZz{Ya_~T za5&z>#KhzmbhJn&pt`#HrrB&>!UNOOvtYB$;_Uzi$B!RWfz>h$PNx@x{V+ct1fy|i z37s2ACO{^WiQ3xkS^WM0%*;4*Pdbx4o&bs=eD!4r1XiK7^{#~+xm=zJsHmvmS5{W` zc|5+O|4Dv-6c!d%QC`P?B6LK%=L diff --git a/interface/web/themes/default-304/icons/x16/shield__plus.png b/interface/web/themes/default-304/icons/x16/shield__plus.png deleted file mode 100644 index 5ea1cb9c5d2f66ae26cbd8e21e3342bd7303df05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 730 zcmV<00ww*4P)BAg~Gy6NjaxHK_MALf3vj2*#v8uH2Ig$z%-|P%4$Ap`qb! zcX!YH@^bu$6bdClH-8`MU5zaEy(hqbFZqUYhD_9qvjK%dL1Z#nbzNOupVQf&2!+;v zhr=Hs68QwHtDoWW#C2%>X*mITcQ(TY=pz&giC8SIMV=}Y%C|#9qxo1Y4e|IFP>Ewg}6xMW5aB$LT&oc1;5?OABI+c(U}fm=A#R4+r!zBMTyt$Wk;K_4fOHp0XKi{(+eudYO?0 z;c!@lLLnRexI5hMf%QMwqlaE*WI-?(6oEis#qak&S1J|fa5y~F-o&V3=8hUY^fDt0 zcqxh^oKB~~6ooDtF%O+#K1Wvn=00000NkvXXu0mjf D-oWSf diff --git a/interface/web/themes/default-304/icons/x16/slash.png b/interface/web/themes/default-304/icons/x16/slash.png deleted file mode 100644 index f941cff72132c3895512fc7a426918704f8c6c9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 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 N002ovPDHLkV1mUc`osVL diff --git a/interface/web/themes/default-304/icons/x16/socket_pencil.png b/interface/web/themes/default-304/icons/x16/socket_pencil.png deleted file mode 100644 index e38a0d142f11a93fc408f61f77863b4efb23e0a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)f6TmL0D$=ynExV3 zCX-Aml{zCylAjRx3x3RE2cZH{6wT>$nrpRM%4jr#!@vw?u|v=Wf*{yrSr&)GA@uwG zLm3PPkjv#n?8M`7T@Z~%-OXmR*z5HGal74MoDZ7S>-8db2)cmh`I&CF+tD-)kYF%K z_eP@uwOS1-l?t6HibBuTYPEx%rKu@h5DJBS?RI+?!$>$BhRw|ac~u#**^d;Q8Rw1X z;?MlVM1GxRFH-@>aX#`1yQ-=}sk8;LSPW$O^KTfl)zu8V~_12=O2pYa+6$?_6x7qOZoCC4eyqxX?f|%MVRwn zU%`&U;m`$EtJUmqI5|mrt!!_1z(CV}fciB9nU$-woD?p><45-u%wmV23&=WUGMT0= z7K@({FgSPC98N48DPeix9$UU}{%8y{m?fRlSTqF32qy?9$5{+8i}1Yyv3WMjd6-*c s&oFy@T=1s_cW$!F4{ozApXcDfK3-jSK!!9bM*si-07*qoM6N<$f*alzVE_OC diff --git a/interface/web/themes/default-304/icons/x16/socket_plus.png b/interface/web/themes/default-304/icons/x16/socket_plus.png deleted file mode 100644 index 9854d70a03a154aeb130958e006f62343d2b7591..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)JqUK=+d5w9SU{mCR~Or1&fQ77*cNN zpf@-a96E-A)U&C?KX9?R(^@&%d$8cjbJbs z%rqPhA)n8Sn2E>ZW^|agVa=+gPf+p^?Ds@wHli#io*7qrWu%_%z|(@?C*BFW4w$akqDfel<1?%kjs5!aAxfbg->J5 zP-X$o^M3jYV^vk5QmH~L76V!S{EO*Xp->!ShB6DhUhj^oYDTG~K(SbbM#Et1G@Na} ze+)O@ZNP)|K#)en1|UQaMC8@GlH;mxYC$iDH$|`4P23U0c zoLPIj0b8BzKakgp$L9Z;kZU%Z?Y_g|2vEV_%|BWAFt_Xciq^i}gSkED7xL0oCa+vc ztKc$qm0F%@ccHZ0-~d;8UL;W$u?jB!-MvJ}GkcOewH>n+&$QqN{nd5e3n=kn00000 LNkvXXu0mjfzVZ^a diff --git a/interface/web/themes/default-304/icons/x16/sort.png b/interface/web/themes/default-304/icons/x16/sort.png deleted file mode 100644 index a3d410e0e206b8cc837896448fc4ddf1230abe36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 zcmV;D0d4+?P)6o$XH2o8Z}Yw6M;S=*(zkedjZ{YGa;SI2CbOa>ji9lZh(gv5w{D1w^P^PUEY z!NMmz98S*rK7oKLj$@T1$sME7NR7v1m(iHm>lyTjNU2AH;c$qO<^W-0|5q>=3|hSS zjIL4?1zoRK!mQtrM^6M%6#03cPcN4XRXLx}H|jU!(Gx)!h8m&M>0}J@=!u};?`u3f z91g}HkDds6y`DZEkF?wEj6ohf5p=siN=7;eZT~6%Z wjKkQ>3rbbN6Voh@Z_LL7-phNle4z+_0Y?dpyq0CpSO5S307*qoM6N<$g37)h0?_LMzu(U#fwXw?e){=Opi;2wMXRw|Wq%`9)@)h~#Kr#m?R*dyOwk^vkJhp1MoSSppywXpda zZ#>*W-|jEu9s#i1?V?;RV?Lkn8|S%40Bkm!C>D!IKeBI}=NVj`Q3j0Foq)>2x|15uFN! z0>m`8Pay-<{EDG@#XL;r|*SLu8bUlk0@O4@7(N xeuC(ThFpZMb%6}F4=<6+Jq)+c2iq@H)<2O2VuKbmtFZt8002ovPDHLkV1mTs_W%F@ diff --git a/interface/web/themes/default-304/icons/x16/sort__exclamation.png b/interface/web/themes/default-304/icons/x16/sort__exclamation.png deleted file mode 100644 index 9f7aa3160b87ead9060a9b31d4d6aef28d2cf507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3vGP)FK9!gR~6ITsVBKJ37UFXx`$?{^Lt+-^5`Jf1y# zJ|Fn~eicPnet2^QzE5-4si|fH>vKAt0KEoyyS?2aQ84ICW|F{s1T4OGOa8 z;SE#4%jx%qU^Q6Cfya;IdEcW%$+9e})oMrT^*S{g4V4K@?EM+^DwPV+sS9k|MoCCs znArb&LA6><@Wx=`&~CSr+wE3j`p=L@&%K~rE*qoKsJ+>2DwPC6 ztJNwnbBGWX5<2Z6Yp9h9KdWM~@MuQYkSWk7cjd3k-Sm3Ytcw>$=fuwc5ksP!0xz zy>7R=_nA)1cTIDBu(xE=v7*thSE3hERW+d~iowL8>2xYPosPtO4u`*gG8yT|f1@UG znBwvHkw_$>GWXeFK88Xz|6onOCwv2Mow0Lv!*1C<)0yxl_IFHS7cBh1FDCu15Q}+- km+bn4EAKq!eV}{6FW?k>zpIF;r~m)}07*qoM6N<$g4)8-vH$=8 diff --git a/interface/web/themes/default-304/icons/x16/sort__pencil.png b/interface/web/themes/default-304/icons/x16/sort__pencil.png deleted file mode 100644 index 1bc1fae69acf397fed9a91b0c233924dea47b663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmV-E0>S->P)o(3Bj*S}I2;x{ z)Mzy3I@R9er?>yY+b?h7Nj7a>$~gi+zayH>Ce~`T8K>GYe%!lbhPNpE^V^=e&-0uk z0Ks5T)a!LDm&-E_cGnR9oZ!}roA~|s^=O~xIY$8KF+{amMS92?0D#Y)+{dq9(i8hU z&p86%^Z5kdY8b|u@jT}UfY<94rBVrXT|YCP=NtiWI-QE`$oM|b z@jT}UfGo?44u``-#JEbOf|{lw*Xc8!=bWM_0MvlhYMo%QSY%?p4Oi}`XKXeb*zI;0 zu5;u9xk9dz>xBLf#GrD2jW~#noQJ6;k%htGMRIwLOM~-;!3WLt7kx5Rp?_ZCRIRF3v diff --git a/interface/web/themes/default-304/icons/x16/sort__plus.png b/interface/web/themes/default-304/icons/x16/sort__plus.png deleted file mode 100644 index d4e7fca1e0d5fdd20e2025e03bb703e2a086deef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmVPnf#48=g3!E5Apr*=OKHHx&^lyL($ahk z2_=Jr2riC-Q*=mn+Zc%C%Y2a#$j9-V(1s*bdN2Gq_r3Rd&hR1{jUpC{O-LjXNG6jy zQ!?c|osnKR90o305Rb>Dq=+Axa{ljvNF=hx2PaeG27>|h`+br*{ZI1J8!iZiLe6rz zoayy?G_Kq2j!gfPy!03l30)c>%kF8eAFv&}g0e-(RR|L!5_ zF~H?=sY<0n`F#FT>!0q^*5B8(@%bT1&$e?9a5x;!bUK|Wl}c1B7DsZq+{n|fFUaWqii-yGH3UePapkxOw;gwDFqHg)3gaD zlSya8yOBAg=Hu93Oo=vnl6w>}nay$!)?L?FZg2 zfR~*2F~jEA61%}H7g)u%IgFR4pYWIu@#^Yu!9R?Ney_)pVgvvH002ovPDHLkV1k>w B^DzJb diff --git a/interface/web/themes/default-304/icons/x16/sort_alphabet.png b/interface/web/themes/default-304/icons/x16/sort_alphabet.png deleted file mode 100644 index 92c4a9cf417626875a2b1f40e2e1b5c0b3e73d49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmVv327o>+oZ`W_!6S6e*b3WawTUPf6tpU-qUoe0yugC995$mjFk*=+WGJRZr);czgq@8CyH3No3Df@#0s z{~P#`lY(S2sc^X6ZmHR9Qn_5FTCFDfLN1pRu!DvlIVp(8<7&6t(R#f$NvG3S8gx1x zYBU=18-C=ZAR3LT&1OT3#e(>`D3wZ4EEW@enY~_*5{U#2heOfuBPRvna9FKYE4&yA z27_1gLN=SFR;y)d_>q%>Kp>#dIv$U4TNH^zC=?1&yWN&Ez-IFM{Q@-n$Vq|E=Tr0f zoJOP3zkwe)De!na-fp-1J)KTzGMShR1_Kl8IehRVCk48$zq{RTFQcq1mrLsR`-ExV z!H=92u+W@N=M@fzLucgOU_#qHE|=@~TQIJB=81V@KA11Y!zg1ye==^y#XKNnEx2PI mjpZ}*dV?2Z|7iT76#M|vm~cz+=ra%i0000v327o>+oZ`W_!6S6eq%>d_M1;&*#0<=|onJ$D@gT2S0LBkjZ2eOozka zX5dFo3X;jB!r^YWqg*a0l*?t&zciaoIjhxbqTxqQ3gYp&+VA(Y*=&SPr$dcK!_-#N z>9kDvk&}XGG^)1SEiIQz>i7GUNF-=98i|g@Vlw%CDV0i@8h+%YARG>>^?HpDL)mPW zTCJ8`TL}h(R}+5Zq#zIoD6~!{6C9G??-!td;m4&&BtoH3h}!M8JOy%6;Pd&^VzHp{ zcziSPBPRtOkH_2Xc6+ngjHc76$#6I{v7W;RKXOu_>-xLf?e;Rt%4)Tu!C*j`_8t7l zNdXJZ>2zMAt56ovCz1P7tnTDmk8*LLaJ(k0H$(M1Gg3<(QUvMJsXxFj-HIJ79Tc%B zYQ)5VNEL4Hc?}^Ig#6Cq+fs=zch8VVPYT|Jcyv=KYg?(%rd;+}=kq?n=g1+Co)o+( z%Ii;|K$~ut+*XU6W|PM4Ho2M1L6ApJ3fk;gXS38xBxsyWN^ox*#zBxrPYPr7 zXt`X526^3qy)Gn!7PKEvVAC-@vW9L2TQm!C*j` zyJyIwCk4DHu~_UMkw_%Y$Zvy*eK(`3>fgWMT}R9bbHQ9OH;m4h-o$>*XpG7nqZAYf nCh8rYGUt0Z^UkB*3#H%};!HGUrLScM00000NkvXXu0mjf1Ix>k diff --git a/interface/web/themes/default-304/icons/x16/sort_date_descending.png b/interface/web/themes/default-304/icons/x16/sort_date_descending.png deleted file mode 100644 index 69217fa5337e8e124d1fc1c8d378d87aceee28fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Y)-aSX9I-8;e1n<-J^`24KG z)oU{}7j2zp=j45xb*oI1!l`Zxi`&m$y-4f6x8Rba#}~mlcbV*+1Uar(YK52o`tm1U zZ=-mtaGlNfAAkPa^RK*{H~F!}{}*MupX_?KbAiFe*^*yo%*>d);PT4_OH>ZbxUrop zYVEa|I@=api`1LGCqhT!@*c(hd15BBeXDKc_8%=g^V%hF%OQxE6mM&QMB7S7Ia}Qo z*I#qRpG(_(MFFVzN|veV{PUGYGncSce%Z1hYV9fojvJr%faOB8M4$e)`!@s3*(1PP ze=2p}v(I2NUN{G66`DvDKG^loBv?ui?5eA{V6}4bbgy@#kb8j zMH3fpc(gkr<;lg%Ow(Wd@)S$l!FM{lu9FAi))P+UZ2T_fd@7$-&A4&)%-#j8C)2}k zi2Jp0KYTUK!`4eucz1#394_`la*|E5ij!sdTOaevsDAhP)ExDJ+u6IQ{NbKSw!kQ0 N@O1TaS?83{1ON(;#4Z2; diff --git a/interface/web/themes/default-304/icons/x16/sort_number.png b/interface/web/themes/default-304/icons/x16/sort_number.png deleted file mode 100644 index dce9aad5387c062b9c562f75afb934c028301ad3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-W~P)`N?K>fZ4g3M_gE~TCHleTJ45LqoFmMO@mQT>|PIYM5Jl=3hMPbLW&Ip z#r|(WrBVs;Vlm3i<#M6(`Aksn9sI~iLAhME=JWaBbUKlnQ3Z}#1 z@G$TrCk44&PT_F3+flpSrc$XSvzu;BuP$rY1NF*YP{YtS|q-ZosolZw~_>q%>a5$_Miv^9x_>q$WUbH|UaD&h1GZ=X{ zQ0!ihuIqo_g8e)*ugoX&#r!ZPqin_g%>)^pc|pis@WlA-%QxoZ4)6B8-~K@<_ytyO VbD24WXTJad002ovPDHLkV1hHN<$VAE diff --git a/interface/web/themes/default-304/icons/x16/sort_number_descending.png b/interface/web/themes/default-304/icons/x16/sort_number_descending.png deleted file mode 100644 index eadec7c7e2d352ad36fe815fb8abfd8c172b44c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmV<40U`d0P)`RE2`Zt1wm0+Q*SP6nwYN3TTwl+S2oj!pGf;YUO z2wqOkoa`>^VnE?zcK&~6#09llt)|uM^&6Varq*h;3`RlWy&3d~NYm~OG#U+*6bA?j z|L;JxS`D!YGs?~NdZo+dLQwA=^61GxrBVqm7K`Eed?q)i)5*bmhdg>RP%IV|LdWCr zVUR~p2J-p5!r^|ur(Ul|<#JgR-lo&($hqy2M^6TFxtuy24z%5FsZc1~s2leg^61Gx zI-OR#-HukP6}8)K%49MEJajM^IL}akJbE&aOeWQ4v%!lI`u#qoQYpvVBoYbd8F}<% zARdn^tWKv>DwRqUi^Zth?TWX_X0sHHMn&O~M^6SKk%(F@mo%A79tL^zWWY4dF#pcs zd_JeyZ00Z?j~(3S$RUrO3>bzH(sez|C^zf%nnt4$LA`g#qbCDwv_K$mgU{zP7Ku#*_5W~mJvjb#-fe-T4XTIw zi}T-EstW|XF54Zo{`&4@1Br~o4=*H%h*V!|mJ!UnwYaHnfB%FeX2*^HBQLxx@!Dh2 z<5j#j?q$(V0h8)xc}vZV?YGYr?VK~`e7aY$)m))X=07G*X1ZP~>T~?Dq4@`8b=I|E z-VYzv?f)-+|2yj$kiglrU|Bx)TW`yDHUjmpxc*wJO9^Oqd5@cNmWkA&8-~naWm}_s zbGJv=%(!!)e~w7V>d@9}H*?&kdbu8WQ#tRjyfBZOBWAngvpZH^OuYtDnm{r-UW|WURn^ diff --git a/interface/web/themes/default-304/icons/x16/sort_quantity_descending.png b/interface/web/themes/default-304/icons/x16/sort_quantity_descending.png deleted file mode 100644 index abacec96033f65ed210839cf4f8153b026d43ca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmV;h0Z;ykP)bW#T$^l|hFL!2Scsw>41;w8AAV)-+_NZVu93rIHKv3*|7W8_( zGA}lx(nL{2*Xxy_*&F=GNkO;Uwb$$QEDS?R69hp*_69$4QsBC-g6VR(dKXOvgY&O;Te5S+UkQ?}slLE(a)bV(v?RHCzMnk|nnM`DcVow7< za#B#Q*VTT%$A`%c{K!c`tyWWL^?jeJ)vAEG-EPYa&EDWgP6{fOirQ>8bhCtVh@N-~U4VduCplPv(pHVJt?)iv6207@c`RC|&Tx6yxI?^YMW9_+E@( aCVeaf9K6huQBF7T;L1R z)_Cm}|KSTa0z_Ob?{#&`%IwwH;C|}!9_@9n+4>#}JUe?~|DW)G-4B>kQm;)+Z@eA} P^dEz#tDnm{r-UW|bEA1r diff --git a/interface/web/themes/default-304/icons/x16/stamp.png b/interface/web/themes/default-304/icons/x16/stamp.png deleted file mode 100644 index ca9475d3dc362d1e422533c0f2ec52e93be276a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 585 zcmV-P0=E5$P)USY21Do|f`uK#Lp>`S)L6RtY;Hc7k84`XhRFKikTHpcY#=dh z5Yeeih#=IV4p9xF4nahaK`G76$+maj_s3=@Md*Ro^WpP+Uhnte(QYm+X=Jic&=tOe z%w`6FrrpTrwbW#*pG#&cPNr9csYGb*a z-W!b$)|BLWjvbz?!9QF0w<~z3N1r(!kedeSf zkWOpCxw+QvkrA^}tKsqr1b6Z=toYsCo$yYNK66qqkW7+5Rc)p1ZS=1~aF0%6G-6}m z@6O3PJ^IW^fhUn5t(~SB+^AL&d;tu_zsI0c1 zTU)sH8kj8t=eyex@fpY@BDj^F$JCphJ3ac$Nx|8P3DVZ?@q~U-2VVP{i6Q36@=Gy2G_^0%AFp4=A__s zIINuth1!l8hV^Z86Sv<14^+v_d*F^@`YmA2Kz^SFZJb!(>b=^q(`5*W&xMuhgw=X4?7%@gG}Y0U``77`XBxP X4IhPM3d1uC00000NkvXXu0mjfU)vyD diff --git a/interface/web/themes/default-304/icons/x16/stamp_arrow.png b/interface/web/themes/default-304/icons/x16/stamp_arrow.png deleted file mode 100644 index 28e494064d698b204c58791a06f65c857664de86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697 zcmV;q0!ICbP)B-9o4 zsIZt(5W4f^J$vkjazuG{I}@Fz*BgHY0x&)W%ASb=wF-t4xyX0)NK`!sc+VdDp&Zds zn~f=+5zXJ{=5WdbG<$&~8HupylyKQCIOFUNnqC7}MajiC zz&U}c*N>#8VI(&`K|;+PsQbszEQ&?gv;FLdhLW{f#`IJC!K8R)|J2kPvIZt#{{(17 zvFhb274LyK>yU@|$P|iLSxSoehbY;sP*nasqcoR>_u3z0OTOE`tL`omu8$%61+dj{ z+Y?nhsNsC9V8@2Y$h3&~c+0vor`^Bp5fG7c?QQt(;<8OU)wJe>%jN6NjoBTpu&j2E fn3}M-RO#CvK%Q7BkE`be00000NkvXXu0mjfH|SRs diff --git a/interface/web/themes/default-304/icons/x16/stamp_exclamation.png b/interface/web/themes/default-304/icons/x16/stamp_exclamation.png deleted file mode 100644 index 6e6cf3062fa65153ca5f1d0983d6fb0227f83013..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725 zcmV;`0xJE9P)L({7cD4e##L{Z?zKX8+=KuZ*1(yric829AjFGh2_=O zisSYA3?DZocH%c}vq-OK`ZIHAPd@Tfj$j(InNa$8vv++RNiX2%e7zH@+m@}FpgsA> zAILGLGMSjVswy-#Cr7#B^WkC-{3IJ&p)r(i%>?bqM}Eo?EX`;nR9@cfURy(IFZ?9u z79m%sMOt7cr9Jt`AILG5Qc^;MMk|%-MXwiXJ8;#(3z8F|x}1bmV}qajeRUY?Pe8@p zsE6ba0+Cpp?gj9_tEEs?dv zFPK?gM$I_z=o3&q3bcO#aDuo~jSe!0H^8<;auUQntVeE8P7CV)hDG3(@ z%{Pw+r9;3yUUFv`DC1PW?n2kIcq~rc0Amc(qZ#P$I55!DC_33~;|0g$azeAfFPP=O zJmq$8V+jL&sc?;{F*0-pPoHQp^dSm^_T%o(dePnIRuOODPb`y#i6bMm^SorQOqRE) zUuPX?t=s4NJaz(;PO1L_(n;qLyle?}bXY`3DIdl;9261~9W0gVwrg?Wp8nxi`{!pS z4q;~eAUr?xekDfilJD(iQ4QPvc7=!krPgw0sw-voouK_MZlM$8eNg(JZ*9N8jsmskD+)9|(|+pVIt!X$kQ;;LdyC`di?^2l?WDAKVQGaklrg zv8PA>s?D}maG;|@?Qd_d*y(WiKP@ie;%nfhlw5fOToNwK0K?iI#H}_wtgJ-5tnB0M z;^G+zPs@K8Q+wTR;{Ptq3-XocGnq}KC75-&HgQ8r_!7!ux7#e$)q!tPvcqog`E%aW zb##}M%wN+q1WHTi`-_TZ1|=Nk8_2NZ6cg*wfo6w|qnoKu{0S+<7M${HqG7-Ito zwMB?n2qBgQM$|=A153?_QZlfj>6}deJ?C{ZcTsfU$Kkx^_dh(m?0kPeBOHFe$kF{z zk7WpUuD6%9^!17Qj*e>ZDr{-d{i~BlKII5z@980`*Z7iHU0eGrF^BwUjxnp(%Nl(? zQDe93BU~yP!8!x;sBZWFnK`s4k9^7z%+lRW7$W>~cy$#eqmVduI{@QV@5W5fo;>oS zImV2goy^qLm5^OuZwN&qD0>WvQujSroNXI3L3{GZch%Lg=YqgkmD^1i!~Ak^Wd)T_ zAyL}kK!eSSs_0Ce_T-WOBq?eAK)K6BB&ZAq)6Z}irg5P589z{31mmd^RJwa5&b$C< zPhO8oRq#O&2F3*;lO1-Xmb`~Y$ykzSvyjc$_Fx;OzvU4 z)Mhg~Qd5&C*J>@Zi;KAY2DrtKTzd;#;aq$ToV{*`r(?eqzSOjHQd69Kbe~emYSYpf zJ6KUcSbp#q%=5qeIT(y%VtN>lhO(uw-XXY}htUVe-gln~H|yEi##ES8A$lbJw4c4I}uD!c!Rsw${bIb3Y}Ti?8i+ pd0giOgGTV%%7jCE6XL#a)Nks4KTW*CsB8cL002ovPDHLkV1mK3O_Bfr diff --git a/interface/web/themes/default-304/icons/x16/stamp_plus.png b/interface/web/themes/default-304/icons/x16/stamp_plus.png deleted file mode 100644 index c3de4596947329410f695f2853fe9162ec1c5087..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671 zcmV;Q0$}}#P)Q|n z&M?$8FhI?NgPNM29vj3v-rQ_mYqG~a=NM{;L>SwmI5G>1i~nTVVPDA+`TF~*J{;B@ zX=tcP3#sB6mKdIZt$XPAF5o+R>~oGGuOu<{v}jH(ETHl^WKQ0X!_nElvNL>Vk9{Ra zcEk5mfI5y10G6qqXDI9CZva6l&T8sIy7>?=8-PvPb$q^lEY-Dl^&1TnRGKugfz*wS# z)mS1=#&f0|ZBODjJ>o`2WOqUp-4&+j4x&41qH>>)asL#}UuS0#`UpH218#i)9wo#d z_c~EkaTu2Z7f|rn0LzpQo5G^xZuU|^soPD5T&`TL(dhj=GlT1If!m^_>mAS`xHbyx zxp@#frF>|Ii(#C!LKVs$72z0#)DrEls$#s~#TQJ7zdSxYy$Wr#2!=05S3!MQG2*Au z>+>|l#lCN%WV>Ep|MxUM^+0u1J-+YW0pur&u&!g?lxLhG`FU>JElk*2v5(kyUXSlJ@Db4=bX>?z;j{z5dp;G$jf<| zoLM@j6mKkf7u=P}>Z6;p0CCv~d>m8QEllotg^9b?e9}tjRd_-F~6^#3f`j%UUx$bXXv1dnRN>Y zSb7OO>49GVhkEIoSVuGQxeiD;LkC@D0iNMI3I%2@Hx&&YS&as(*?SMNr|hTEFV!>> zs97~@$rL(iUpZA30H&@r4vh|O7UJJ)XxP6uWj7WHHe;a>7Rpo7Y$Y9iP$-~-E@rZh z<~YDW2VCN9#i5z;oeM+V+_bS1nh~sLoI4hH+qMuo=w=>{v5B!=e-j2rbQ^ryHn5&L z28UU1D`N|*>vZj4#Th#2${EapN^VrKpW~@P a8Py-irK@cb%siF=0000iC@0PJlabCks)GW2&-#Kernu`wnc>m`)&+~B33%61jID3o%uE8#6 zEG#*r8JdOWD#pwUncads3yXB>wdQOCrBlJc>v|g-`PR*i6gpdV>RFgsw4uDL{S7gm zG-xAvgZ3OxXRH3Ve~Hj~j{)U<2HGDmqM7mHiJ9@D2|81ap8dCg@?6GvsGhjD%$bUC z)>w$D2DcWf+4DkECG*T4A38&IlZFJG9Ee9<$06Ond{A@)JW5iby#B7B$2csS{cbA8 z>Cp_F9!W=2Z>*WAp=&rbm_oEP9Q$--Rw4E5p&6Q`1yGjBu$4J%guKvMsp}FBPYzzi zF?|&F>%y_8I}~{?gnW;qswr?-cH2owy);9!)&i)`WkDfk-5aD16?%2JQL70+UcJwT zS`}!FkxKf5%M6nGCFiD<=Vd6RrD|w7wG5OP{AN6AX03r!< zf{bpVxnPSYfHcF*?z&PJexh$X4r#sT6cT4Xq((iT)sJ}oJ>rRXe~ABx=#|{gfpvu* z01&4^w6b=s;Z3vam$FQ@OOg(e-f>kAeJ+c??oBTFA&ASH_p9i|qi+#iFFxhgUurbp zfF-OXtP@>_(u$nrn(Rc79|?jzL|aW*MP}ceB#?Vw$o{sY4bdf{TJ0R17;VXd0}a!c zkRQrLg+Zc|BM8Xei{M7sK-jdx3AU{XifwW~l{&M`H!{JJargy__R$eMWp0810000< KMNUMnLSTZjg;mu6 diff --git a/interface/web/themes/default-304/icons/x16/star__exclamation.png b/interface/web/themes/default-304/icons/x16/star__exclamation.png deleted file mode 100644 index 46a204de975b80fa72eb1e9103b65cf4121a7ec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)r2y77{{OU^AZ@ovY;25G+$(vkm-w}1WUpo3o1s?-4{}SKqAroVhg;a=)APe%Q7`B zXKD)Byk&0AnNIhcTXSa4%eLHf*+@fr`km=SbJ2kh=Q+>$e!u+A?}5yl1TLK>pl2RulM8L-JfR`LnJW;Vi9bkKX+^fYMe;LVFrRWX(t+?UgcjU~lKRp}y?rWg;in@X z=PhYCKm8CLrmJqgPu|9f!INm{+JhsigkLf-PftD6O9Mb6AdEDFIaie%(5X{im~u|s zLaQ+e$8>zu4W-*($P`BF(4~sLK?(AWkwC(&JM<+ zR&&UWMiGIdnp3}*Ts3G^#rG@g$O+Fl*8~u#%pve13vyUhtYcKS50{C;0r^&RS_H`F z^KowC-dy)i; zDcY+@JU5x;fN&mwIL%E|ohVQ{`(-yyvO5=L&jQ${Vqg3C@Oc~_O2D^`DLABwLru@Y znfK+Skek9v0=E(m0~9`h1wsEM3|cQACjDSCA?8A^qq_VnI;Qeq~ZbO%0+S{Vfgbb0!AUg>Bk~6LZ;) zE!e_Ifuh->bhV<5vo%=X(>23QR79=l?S1CiaJuNg#d*&C-1p6U4hI^l3CNESa99&^ zN@U5-q$Xh16M)`(B*Flnu;7+RoQ~dTE;b;876PxkVr&-rvz{P0M|Jcp%)~t)FU|8X z<1xRxT=2Wg1e~M#V*e7M-$=k_BJlhn(M*puk57*^jpK|O?*3bVJmpD-y*s^cF5E2uE8B)+&$O=V1jvg5U;kIF_H~R z?pe^c=XcPzjlJ(q_A1-y!11-TJ3oc;8^{#<3E#4y12F>VA_ckG0Q%YpyB@Wy62?F0 z(-HU9Ig2h;FzZqTK2Q2*MlPp|(Xx{0AwaetK&yZ=HuF0Fo8FB-TI;wWT@92Y%0d!Q zO!#>n}nl?$Co? zF@sr^k7>D08$y+zFg0M`RLE6wt3@j2g!VhL&azltN8q}wvZ`#dEiWq1MYx9ybb7hXq z&D0Dgna=Q*Ldt(@wz3b)HN{QBWD3IDd39TAzVN{LpY!~F+d1&y4ugwl84R_q%LO+} z-yP2x$Ye68kw}h>Gp6fhEOBX*=xSKE;GrA%*tqOTrPBR3;^J~JKOf&P*6l4I`g9CF zwRqVpbnbgc(E0=a0lk_fq@<)=bGclY92_jK1xQ|1K=f*t;brMoV}@WgUJ__c;pPhV z)@8eeVzD?UC@3ge1$@>PbiQO@c*UTnktyb;%V*}Ml`~x$rt^fAxvcZdN&lqdv74Zc zzu$ia1pm9C18pJi7o1A8k6p+1r~cEPaCsg(rLFkq(!JW(<4a$v$tGOIo~Cf5u&RhT z8Wn7Ctq00H2(7pWwJp!0%nqAk-sLRES$h%A{wl<-`dGw2WB9r<3{Ac1e6Ii}zh%wq zRAMt_C`$!UQ_Mu_Qqeih<3NL{|Ge$@&$~Ej$wdA{D8C(ydfibpf0p8aKEc-T$j?A7 zWhm<@fERKR=qg1atty{7%ZSWj9F0d|(@-(A3`d;;SwZb=xg*i*`#Szwcpwm1wkojYOMSvZyX$-Q;+D??i|J zR7Fc1X|CQZ%>0nxgz>A=jOuEcm!LBKV^WWu`&4pD#r5?{Ll@&TdYazaJdDoCaCskn7I)`~?xas@0Sj RqzwQ7002ovPDHLkV1kB3X378n diff --git a/interface/web/themes/default-304/icons/x16/star__plus.png b/interface/web/themes/default-304/icons/x16/star__plus.png deleted file mode 100644 index 9f32f79793c36577d461d9be42499c333fc02c34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 705 zcmV;y0zUnTP);WGVFWrH`3`y`VCToQCPl;l#F9 zn*}ah7)-QUl&)^j#@!Oui#VNIxs557R&+Y&wvDNa4*a;!`Jd(8F7dU{dXyjXZpAUZiZQqlir9IEeJzK3f}ZaS;G#ldqN;}Bqu$w&Vmi$RnK2= z<1x3RoOL@+v80aVi~E-ZgZC-0JfPskL#lOlsx3G>r3{jqWaR9>0|-y`RIc@L&cJ*? ziRSz*$ZECUkDDd$d$MnP%G(BF8vs&c)aBncr6Wlau%Xk>_giFVoiqcbf6M} zPQ-vlh{X)xR@e0?N!kYbx!1M(m)Er!zjp_IN&zbC%R&X+D^X^LU`F=!EW#qgq0Ufo z12*LWsO20xA9bX&!OvUKgd>06s7hsfR4J@PEBswNS&9||$`uSmR!K2Hdo7%?^a$N= z`&WJGtfz-nbx=;&b0fu*uN3^;&?5M;ZA^+l!Dl!c`P>a?Od3YidKEe}ibQ)u6&Mcg zgIzciVEDK$R9pf>wmj`yCcYiiEVqRn;sTGz^za2Ab)PDr}Yje;UB^cRSNA|fu-jkxs> zxNs}}1y{Oo?@~Lj%$0HM!UJdC^SpOpl!Cz^IUEjZG#dYLqhZXa9ds#^$xJB}3JVe= zYs}?vMQ=8MTCGO)dR<^?Hk&HIEOI#d&fEj2R4P-d)#_!Z(@_9sksJMmAeYNgsZ^qJ zxhxNd!&iVA8Fog0AprS&-okJ7P9~FkfEk(51C&mufB&P^YJGC~0$?`o1tiO|Sy7bt zR4Vm77!01d@W5PaoM?#W2RLxiK^GU0-|t_FL?UO2L_%%1+aKfc_=@FYJ;<IiFz@1%y z`2I_jPzY9@Xu3p99Ruu!93vf0me4X2a!jy{W3|aXOu{)oR`6Y@J!- zSwe;#9JpEsU0P-~nH~NpzjnL*&SWy}@w0_7Gh56yXS>+Jfva_v{{Yqmz3TQCaUK8w N002ovPDHLkV1iv(9X2G;<=7C4|@WTeflydf@ZsxaWI!KMt-bC^&nHf?<19 zB{rKa2SFsEPzV(j6#%^!D#XzlHEuDRMa!cx0v?MDuzu-!nUY zfdn!f4#ydlN>vsOXqAwvy9^yYHwAB|{hIIJg00-#L<2V$sON(3WF(M=_Abc_1Oi9u z>gr0wV(|%vVG>CIjExj+Zl=Z78wvfMp<@5+$BW#gm*spOh6J_~i;Ig{0|Nsm6$%Ag zU0uCfCX-PZfZqYQrJ|v`jZU$*$C$jM%(QzfmvfEoCxOj`&*wX=*XtRzTAe7D%K-xr z5ul(`O~GvysNFAfgYP{V9D$QejEsyNs;sQcuc@hls;a6#0Wuv|!{W?M^wSA%&W{Q2 zPHyt;9unAvHqOt_rOnX zNFatRlP|#o9cBwa9v=tf5!+BQT8-Ak#>TGC&d$!ogDYFQpFEWQ3DlRgnW3FPjsO4v M07*qoM6N<$g2C=c1poj5 diff --git a/interface/web/themes/default-304/icons/x16/star_small.png b/interface/web/themes/default-304/icons/x16/star_small.png deleted file mode 100644 index c1378cfe49a4639124b8f503bce0c538acf8cf47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmV-60m=S}P)uHMz8^vPy;MMe3%?j1{__( z$Z&E4W68~T+aUV`C0w{kB`g# ze|l2+|Ni;-PxCrCj)LUz8Zfh&kzv&oCgZi!nGQX>ll1@AMbG~?&U^m{@j>DsdAtV9 zZDRmo*_BhdE-kc?bEffh0*J&vU8k8h)ClaZx-u{nG&`ibBe=Tvb)&qWF9F(mkxEEA&UuFPEy00000NkvXXu0mjf$#Z*Q diff --git a/interface/web/themes/default-304/icons/x16/star_small_half.png b/interface/web/themes/default-304/icons/x16/star_small_half.png deleted file mode 100644 index 6b1cb6d2c5415db202be45b0707b30bcaa37f1e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)>bRtmPxVN`At-ZZnIxa2_zZd4VF@Uh_%Bfrzp53|eir zS(lfW$L8eZ@B=Y^1Ew`FfUv`oezwaCyIC*P6dINRHO1%W=f?uQpa8`94VYTb0K#cN yyc&r0tMUyPqNAfFfPN1HVq+j4>`8e*3;+P~R-uVcm+1`v00002*2yOu3nbOj<|H`JzmxNIL0fe>X;W`;vyPK}8s=7=u50+(JxL{R?BOl8h| zomV{rK~9AO&teYm^K#C2W{8<-5vbXm(rVF$WcwH5$Tk{8ra8qgknDK2!Q)|`KL=Nm z9DnrA`2F>W-(FJO?QStLlK8g*yv*1g4|OT!q;w&r3|r49Ja{_b-eZzGolRyZ!^lb2 z{DOMjXV0~6dDPc_ENQpbeKalfAR$1tnouNN%a8?^b4#!j90ytDQMD=*`>u62Ie$DzalTN~Sxh zFlK_m;&yPw_)a{#$jHJ`&$47SkqDorQepEiAPZ;a(vl=1S@|cCiM#0U`~`T9Z-_K$ R*`5FZ002ovPDHLkV1kd!y~zLo diff --git a/interface/web/themes/default-304/icons/x16/sticky_note__arrow.png b/interface/web/themes/default-304/icons/x16/sticky_note__arrow.png deleted file mode 100644 index 2488b94955d79991d653da2dd18a8f099255d5cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 561 zcmV-10?z%3P)feoTWp#sT=BE%9THz~VrY+0*o ztIOOlCrXX#rC|2Q*h7RRhC~SI^xjqG?zi*XJU0}lK?gn@&f)w0aL$ha(EmWg!zD&W zs7`Qs9o(E98X`)iO4tIy70ZlaaXyOQb9V$`{F=RmpECjc`0htGdjXsgxR(j|ute+P zye3LvQ3{EY3S;^P=DuCW?ALaTj-CPXDmW+DXA1@gZQ2UP11#hst4h*ouT3Q4cq|}> z1_l&Kd%=haL2p?Jzl6WTS=pmxQjv5Nj7P=)uO;D`a8~vx9#ZWyXcz-kOqyTo{~{J&MH?Nw;P8qhQ=GE4lXc73$+3aWU$9(sa9t&Z?)0G)fm!FN^GN>BDh- z9G#PZC};MzzV#BX%1VWTLB~VnQ(#HyCH>%;98P@3)d}F_d*H~MznuF3>~4OM;r=#3 zRYQaGrr+;Ot>i%S`7f@GdB*l|kFZmntYv0$TMyI|*fY&mxKUDY#y z_syO_{ZjYemUGV`+TaPP6}7>P*u9%-1I7D4SRPm-1u`hM00000NkvXXu0mjfW%v#W diff --git a/interface/web/themes/default-304/icons/x16/sticky_note__exclamation.png b/interface/web/themes/default-304/icons/x16/sticky_note__exclamation.png deleted file mode 100644 index e201d16f6cc5fb836711cc56757bb5dcb6d9b29f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597 zcmV-b0;>IqP)e!uz6j96>=pW%#;3jiYA z20H(te{C&!V<5`wL_5~f)!&yLHpatR0|bO~4{I$yeitYd9;li;ANiCqPzz;@Mr#kP zJ%Yf;_cflUsaC6OY^*VG?&+{GTnBpVM=+*do)S@r2oNTU#Wrg%mzR0}=>x8N^WNOt ztJA<>4Iq&w2BBHR?0{rWW-!LbbzN3hUry~-K`b;2*6t1on=KeaeZ|pw6CfgpD8TH1 ztQ0@8vXm#;-iy|ofUQl8h2jtr^&+fDvsRwvNY5QA%d=o`BcIY5YT<-t*#W7PzR}du zjqA41lsHbKrPFG#dOM(YgzXTpl;*$EnmWaeTUnahPS9lKScl+r2&j<}&|1)18p2!H z4k?$uqnuWZUm};wu~z;`JbpA4XfF5xsOf3T=%{6Vodh%>60e6+`&cMU;I{Xoit<#E>J%mG>_3Xl$H|Sr%%-9(L)Nn9QJibn+S`2vQJYhYsP|%0O)_9Y_`hM67?#E z{((obnG8`nU8N>aj8u#mcDBR#xphx5gYTP@`1U0T^K$@&!T=*M@_J}SmRn*kK)Hyt*#`OJ5xi`9FG+w(82=S zjF$D765MSlk(0=EBrBcVX(mdg*v41Z=XUSkOd>mxY{A3yl$9WnV4E8iBVJo#BZ(|F zJG3vl#+=AApP+c0ZEjYKgc96uDtZ4Z2w(4^C-8caWL~CNjBRdLjCqvx2Mr~~*8@n- zU4dzu=ybcsG@?$5MA+sIN=a0VNL@+s%_Xd)I$(YnM0fYW=PsAa6HfG(=K8$vk8y8*hh^e{{?$ zx8vOlFC;4+dt8e4{(k2~AmB{@&iI&fIXc0gqEQfHp1pXMkDu$RANU2eT0{!jmGrFu0000a>o_d{}w#}=%w+l&>AFivv83ni&kw@onUSYt?_)m2R~UN9mo zm@g}lN#r|{RXvKwHN`~1_*DG=WfIwmWL1x1F-`H(GNbkq%SmLhl2tv5Mm5DN%Z#z$ z!=;jwTmX_)J&Hs$#T(09Lc#c0R?_?B9=yq$Xb;zAdcscX(w#)1kfwNx{4y*vR950$ z@t}8i5H7tTTQ%QE^p0t1(MZ=FLJ;{l3l`2v9;Q0s{p>E%m3;(Pp#B$^(=^-YCppc{ z8qLf&7LiXtB&A7~AUl!8-dgbB?#}&l&{Ta|`aB1<4GdJg_W3Fj7jgT!^Sf)JCMUFg z>p;V^nx8aQo1w?mb0XkPkc(-$lHuy@rmwA#`>f-n|2}sriTbPj^yEgmc*~p5UwWB7 UY$FXimH+?%07*qoM6N<$f+~^svj6}9 diff --git a/interface/web/themes/default-304/icons/x16/sticky_note_pin.png b/interface/web/themes/default-304/icons/x16/sticky_note_pin.png deleted file mode 100644 index 6e64b83415bb618b7bb4e4bb7c9de54a8b3331c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmV<60U!Q}P)RFB^EdTTqe%R~J(_ zJsF4JJAwS|e3x3@1Bdm@>X%wn?? z0^Nd2=qCEfBv+r^XqL7?S@uLcE}7+4Iie*? zC3?AD@T-D7P?kLrjY?*%U5TkH1`Q>8xmgOJT{!?{*%Oh7WZbA8sX)k3qL*9c9iVy$ z%CaXyA<3w52^HA=R`MmcD`9mW2W8n4R;v`jU=QKz6hsUqMw!kMpe#A$YM;d-g~!vg zhiV#~5`vx+)80(irpcZCG$>0Be|?I<(NWX7(`ico2FjB2>55*3S<(MT%$f_}Uwi<7 Wa#;b1#Rjeb00003eqednd{{tCta9836gCSwW#l;1Tix5dzNJEGO#7YRpvlg||Qd3IF@gp!W zfobEhkr+_}p#oa5rFX?5M_=COOJ5QKF(x$m^v!+W=lSH-h)6pR+U)ERb935Vrt=@v zAU89kY17k3oDeYnaxq5xg)sA)_VOl`a)b2e_cK~vZX@iOno|NiROs@Y2$zCfGO74$ zkP1KgDZkl6w%x+n7$L)4J0X~wI;IW!|rU?byKdoNyU)ZRL^r#vVE8h``5OX09^Vf#2`ztFJd61_C|{6W_99sw;V) p2n^;z!~)*fOoAD12MyP~itV-zI^&ey67Z&Wbe!Vi z4{+Wo*lcP*sDREnWud^bq)vP?`0b-q;(3*f;jpk03QSY#Cc)yd!YG^M;;W!cC@>7E zmjouF<0L1cnlhn4*CiF<67fmTNvKXUkwDW5V}xsvgeIYN=uMJfjx-Yq`u$={mW$Ra fDEou2{B^+{ww>yUicU!J00000NkvXXu0mjfY3h39 diff --git a/interface/web/themes/default-304/icons/x16/sticky_note_small_pin.png b/interface/web/themes/default-304/icons/x16/sticky_note_small_pin.png deleted file mode 100644 index 67357e8a7d53f5831c6275fb551c23347c6ff275..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmV-60m=S}P)6ju+=meW#7`pro?ti>G9N^_PogfL-!slRf_$2*ccT8LSOlMZKPImf zxUSIR@Bw4%5^gq&cBue=R>3Z~12d&yFcA7KXuFfx63B>Q5VdV0^6p0tov!fk`gY*VGGIX z1(K-*rg`y*^($DyoAAqA=9y$FL9Le2s@05hD$M@DSN?Uu0U%4^+8Y!DfdBvi07*qo IM6N<$ff|KCX(vYP! zORQ3m5}Nn=lH79~l9#0Zz(NlkxIfPQp3k}W9x*e{V}-3P0YHT3!1e#czc*uB74p1= ze8-F%5AVNQR~=xcz=-j9fSIv>(52gb;U?kR`8lTw6L+eC5C()WU^E&s90mr1K$c~k zoFqJY@M>L^r@-B5393^(C*t_BdyJ}5Ehi+IXXR!LK(BYi$IqXLqGydx=j}b<@kBs! z0T06R(h+8cs!=n=`zioyx7Sb|5=9aH{+r#u5qNNPeq5naPWai2P*wI163mQBsZWx5 zR#z^fik}LEFcT1&5!B*zN@AwtHC06FgfJ)YJHglQbbwW}pCzvWp=2=|4@K1um z{2k=JeC;Z5X);$t3WP9w{y$2{394~Qnt5t9!OS6|fJ4NcE@5K>8Vvy`g0On40vKkO z8GmyF^pr>lQUuuCG+e7?G@C}65goood5s; diff --git a/interface/web/themes/default-304/icons/x16/sticky_notes.png b/interface/web/themes/default-304/icons/x16/sticky_notes.png deleted file mode 100644 index 9940a558172ee87da276965ba9edce614d79f673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)n0-~9~X>477i21umQC!fd0fGKewM7G z$T{KcEU+lk4M#V{DZDOBV)?;imgI8NCc&Vr5&e~~E+?>b@3EM?l@&}Rq-CP@82yxs z=i^wqn>RDQARd=i2>?y|VX0Y*;^*s@rKD3ilX99FTgGCNmjGZ5)@j!ECX8U_FIg!X`Wpzll&;utrE{ty52gsVrE7#IQimCRFZP-;~x`XvqD=DgXcg07*qo IM6N<$g7e_Y>Hq)$ diff --git a/interface/web/themes/default-304/icons/x16/sticky_notes__arrow.png b/interface/web/themes/default-304/icons/x16/sticky_notes__arrow.png deleted file mode 100644 index 6451cfe6e60edfa498f691954f955bb7444ae7d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmV-Y0_%pknzY7`>fMAt$jL}p+VjaCr^A%gVpvPLnof^12w++6F=+}3PM znMY@^x+n-Yt=2)5j0h}>W~n<(l%lL{) zPDLJIxBDq-E`(+)4_}_z+cl2Xx4>q5-^aBLXPZehLyul4JI~u$5B57tUeM= zR5Yp<{uimTsmXN3;aC>^7rdvfe2+J^;So@7=}fHL7qD=N%+o5Sf>~3FvO1@G`HuEP gS-s1`B_stu0m+|(@(2xXg%2;cLrQ&yerK=Mfn^g?YUl<6q7oK2iyrO=)6?L_>74x{Cvz6okws8W7TsU@BS*lgWhC zL=D1kjzP5=>_#I8h=%AO^BfClTS3T=$VG(TmLc`+D*v~{GdPF7&K=3>D+W8)#UvV{ zgG>jqx_wnh3;cbh7z>_7VCXp9FD_x|<59fV4kaBHrFFMa*-WBgwHj>5cp)KTBA+8O ziI3J`(02eM!BRy0dvgY|M*REG>)fb$tja;&qoRrm!(Fp^gL^ek?;FMfTJc4w#7OclqLz-#B5=piBp`ic( N002ovPDHLkV1jDQA?*MF diff --git a/interface/web/themes/default-304/icons/x16/sticky_notes__minus.png b/interface/web/themes/default-304/icons/x16/sticky_notes__minus.png deleted file mode 100644 index 0197d57db5aa5cedc435baf5e20cd49664ed763f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmVsx!WS86pch)MmX6_LuQ!^S4uJOOXL=j zdD)zKoBjNLww*ScmvZWJI#1u{`97cL>41pvAK>u-Yim*DJ2q}&%->M7x(c}6z{(1e z3j_(7j)-QbaB!O50#u=q(n^QIC3X(<>lrw>dc1U1Z*eL2@LbUh1r;P);b|GRnU3w9Hz$h>Zf^MQBqTyw*GT9P@KvIuGqz_kAW3I*g zU>=;Lc%k6Mh-yO|Er`fishQi^>BH^c^BnE4xrrCO@PqU6@cf_O`y2v5{{zKhL=zJm z$oJ;`BIDhL`tflhT_+kFqw)YjicEXa2w^?@41d=A__f-PpWihklQ$qWrheN1xpT2& zJsaf4N8I=T#!?^FGF^zrU2GkK)R~6TfHGyCF!O%?EKJ~fag_1WU+J8M=(2j80MlIz4xx6 zt!kD;tIXANbhPmh zRh)gS)2nGU(XI5{cBGJ7u(VxQRM1kca%!19C0eE6vQv#VHz}vByyg4_f}mb_c0knD P00000NkvXXu0mjf{h$(k diff --git a/interface/web/themes/default-304/icons/x16/sticky_notes__plus.png b/interface/web/themes/default-304/icons/x16/sticky_notes__plus.png deleted file mode 100644 index 6152db1cdea0e84a35e06ade5749d2aad7759f58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmV-50?Pe~P)p+s-9>jvr4e}7O)v&U2?cdqLx=*ym=c<~71eOdSV{Bb zguJRQ+WKchiXaF|`m>d~v$EWt-gnl);cORO{P@ntbH3;Mecw4CiT?q~BrrL-j6VOF z9~1&>;F*{JOcNL%M`eMcq0n8jVq99d&R_FkE`A%}kFP;yGAF5-;90Xk=MtV-S{RXq z!?JLQ)|ZQ%|JciP`iNM^sJYOxvYUfE9PVTId`R^WTkS_Y_T)7 z933_K1wb`ar1{Y`wRg z{zv;5i5Qm!Ks8jSWW}Z6M%5Bke)71D-n*^z8w^maLJgCEloqJ7@Q=0)4J$aJvnt4htr= zL{0QKdMA3Z`gQzfJDYl)S@blfw!Pay9m||=9F%_%Te`X&eZkQXpbKZs-N%LTsy?_F(1efgOE00000NkvXXu0mjf DRb~@L diff --git a/interface/web/themes/default-304/icons/x16/sticky_notes_pin.png b/interface/web/themes/default-304/icons/x16/sticky_notes_pin.png deleted file mode 100644 index abe78e22c570347d7f211f3d976e115708df0373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_@5P)d zE+TXNx*&V$mI6QXLfBF&TJG$G%x3KpziUDAk)ov~>OIeop`3k#y~!>tdcClpJjTJ^ zE4_A}e+${eTou%-#^cog@5I9K{ve0?@O%3?);>SQg!K&B%m9~+LH00Cfxljrn^%AB zJj8CQ4V&ved|$hduU|T_ljuh7;3dv-A;e-d$dKr2UoK7Jc zRYMGsXoyb!@4FkS22oBWd^&uV3!+k(!R)Mh%@B!(=oF7aNdFwbZn8(Kny^vc`q8Sx z7pL!0Eq+2IqDC1a(GZ%;hUip_5&qT* zr^JMf^2U1WWq6udfNd*_ArcMIsTSw>gbz-M2^;0aw|0H9gi(qk81&dJEnFZPqJvVD zH%>VvCTx^LAy0aExFKc;1U#es6PrmiM5osL(J8qK*OVX>`$Ra#g-I{sVLBJR|#iD&YVC002ovPDHLkV1o1#1j+ya diff --git a/interface/web/themes/default-304/icons/x16/sticky_notes_stack.png b/interface/web/themes/default-304/icons/x16/sticky_notes_stack.png deleted file mode 100644 index ce4ae9bf3d715f88d6541585a42523fc3b350ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 477 zcmV<30V4j1P)gk**Vbsy^!ov*Qd*A22cLw5dfJ6eI;WBY1yf#rJ0$hC;$3p;$XIA4Ue0`9MHeCVp>| zJCzF_n%JO?YbZahV*YVS(|mC{tVsNR!A<~#!wL(Pq7T2`HtRxaR<-#oWl~P+^$Jb` zfO~MCN^y^px0*uuBx-Z|WQYPp6h&d30N@_nrz-E$#I|OL+MGHzVO92{%cTG|j5fN2x2E-i{`-YIGAls`Pf~8#n&|;Qvk_ TSv=Cj00000NkvXXu0mjf0S(hL diff --git a/interface/web/themes/default-304/icons/x16/sticky_notes_text.png b/interface/web/themes/default-304/icons/x16/sticky_notes_text.png deleted file mode 100644 index 2274943a9175318bfebac0cfdb07eed75d2bb936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)yGi~WtK^e?_wlQo;j-AsnPXV0N|}y6)x=W`E2W|S`fObuFmG- ze?c(`LpVr(5~ZLnc0qR}YH`}+qq;D=_KHWG;hcDtR%_3?4R z-M_nQgAH2|4u?q%ctW$;)hw%nbUKa2Vxe(;a&oE$e|OKYVJp-Hk?eLy>Xv{0@uY%+ zdx_cXM;JyKS67yMh7DU02n0wv&I`XSy4`12wR(f|^Qz0X9rp|yw!-W63cuekA0L0I ze_*A)#Pm&n&#+<3=Yz-N3Hp3Kc?dRaIl!m9Q{Eqljqf)-qLx%6rrRt40000|6p#nn|VB* zK7s$EK5E(Q>@4A88akcMU!j8IY3_W5b7su4)98N!GXR{9*95c@ P00000NkvXXu0mjfb?+s= diff --git a/interface/web/themes/default-304/icons/x16/switch_exclamation.png b/interface/web/themes/default-304/icons/x16/switch_exclamation.png deleted file mode 100644 index b2e8e36badb2caa4e62e6ce9fa025d9189a96267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmV;20(kw2P)o}gn3inus9bg84@lF9x9;$E!@bT?s?uo(1-T+_9zyMM+CF8vzVrdrfHa_NuSgA z_xAzteSa_+h9U8IoVmF<0OsfCX*3#0d9b$Kw&`;NLATo_in_GhHn#1MOeRUE(*Pus zNs!B=jPFGH6ma{OKuURdgpg*lO%Q}=nt>34N~Hoo`os_^<13dY9`LPF0_EVYjx?}s z31}FGMzJ%QUDw5R-9tEjm;^!yI-L$3r%i5n zgR}X|Oy7S^W+YEfe#G-^)pcD|DJ4=$6vaT-6X<$^SZs*V(J|`vIvdp`vf0zI;*Q6FpL<65odDp8e3Z}wrfjd$H&-eerEaIV|KkN zn(1*qTb-D`{!&p_R#vFhYN)D?W!**7j6udm95TZJnz2qy-KAhXBdOb@hIUAwh{nT^ zs|t`eO>;_B)%5W<|KyQ-@5asim66f7Nw15@+`(zQ0bu7xr@i)R^SuJ3fdrr(7rZF) h6qxw^hXPe)?I+>eD~)?l7RLYp002ovPDHLkV1m47FeU&1 diff --git a/interface/web/themes/default-304/icons/x16/switch_minus.png b/interface/web/themes/default-304/icons/x16/switch_minus.png deleted file mode 100644 index 8d2e7d38c8ebe58593a39e00074b4461f06738aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 zcmV+}0@3}6P)1wSnaze}mTN2$1P@GMEjfz>A%8$N*dJJ1UUQZGb@>Ox$`l6&S14i~Qdx+H zDFh4Av(VGx$ldL)+nwE6i`;EYBL)Yi8NTQJ-j{DatEwvg=g7fefMr=n!1fK{{+C!^PD`-DT;#Oa7dPAf4#%u5Un+9PUd+IfYzEI2uRbE zD2j-p=vr5$6iO+AARx;!)|||;tQJ^9v)PPZuXjzL)9K**K0*k5-)GIq<#Gu?p6B&r zQ53kYOSjtv;Q08M>2yk(Ue+!aA#1J{Fvd`phQ%Tz3?n?xqtR#p;CUWdR^a;^D?j#? zK$@nj2n81x3$!i}!a*s;`T2RBUu%uyY^ijPdM*Au?Ke;@{YmLie3*f*iwZcDVDoAY4jg9A3(th|j!{r&6W z4j!`c@o^#s93zp)NU>NN)6>&9Jw26Z?VX>(d-r`bPK=nCn1oubHct%}gHPq4om2h3SaS1#gQ3S_^6eE}HQKR|+pGuQ+ Tfu$BR00000NkvXXu0mjfq9Z3) diff --git a/interface/web/themes/default-304/icons/x16/switch_plus.png b/interface/web/themes/default-304/icons/x16/switch_plus.png deleted file mode 100644 index a81d6c36bdfaee9963f459d80d8df35df9378015..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gPdP)I)w;*r+#E8Qj2gDKwgzsv zC6C9$M6Fgsp-@nCT}OX^zZ%4NKQS?Z$;pq3rp<#JZprO-Gf}NpkJ#jC zJ62a$72ZdqZ{__NMbo~38*XV}V1S8oxq?JO$LwqZ)6<{fbUHCUKCbXS6pE;4Y<^w` zH{6oL;b3BMaY+tXP&7@4%jLrM_O`Sdo_Wsa1V~XI$NZn(|)p8EKKC{Kls}sm;1IW9-l!h7RQCbE4cl=Zy$Pj@+%pQ zMlzetVtM(e{0AEHOVswcAG6`|Q1_0~O|>3=ajHm9j>|uZ=$ye|u$oLJagamLP82&< wE`e8Wxa9#R>5SBIpvOmFlQ^=V)}6-m3+*+B>UMykY5)KL07*qoM6N<$f+ChGumAu6 diff --git a/interface/web/themes/default-304/icons/x16/table.png b/interface/web/themes/default-304/icons/x16/table.png deleted file mode 100644 index 9deb778b8b0dcd449c20c1ebaf4b0b75a00a2ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmVM@NO8&3O%NpDzs68vTN|m8Dr9nUadF6yK|}-xK{RM2 z7`0aoil~THiPe}A8}lD;a{Nw&aH9|~FPz~F&*9+}<8yO*nXV$E7o!eGH;O#6V#IFm z&dAd88))9ipvjX)qgzG&MhbP#1Zq}d__!QJ^->tR#Sp3%{-bjK0c6Mu^XzPon#p7b zY(ZoPCIc!a?w?@2OJeNiWx#Uvh#!|Be7|_e4v--$OfxgR$#gnrU{E6Xbr8U~;>XXO zTUb0d7;*dX)pZT?`X#0%0WxGo|MYZkTvc-hliq(w$*zs-@G!5hDhkMu6`fO4 zeUVfuXTX8&voma+oWOm2jLoAXDCg%`_j=*n-^beCUUq;CSygI(EQ8;~I@K3gn^9SpA>qEmzn3W5YHB#;pC(1emgiXaB%-`0p}=`>}w+G%ug?!3`vxc{jO)i5NVp+%Va9c8)Ef}b5pOE3bIMa4} zNq=rOgBW7jNsXpGmdO+hXkcz}5ib@NU~)P!<8Z+2c4NwBgTZRWq{Si(5JN0Gp;mW9 z(&-X|IPb+FgW^sD#1PAlDwUm~RBBCwm%RUOKn$_0Nuf9$OeRYVBD@!e4Cr1mh9G$q zgyxwO#1PBGU0u>ZBC)2yoXaH`9J=L()(_#{cZ5MKtCvd8yo<+63_`sBjAGn_16SYR z@J$!?^gqS1u_avb0!_Tv^y==g8i_>ai^cwGARb$V+5<@Jz!B@O$X!5X_rxmO+Rz{m z@IUH}M*o=3yEfFSj6$lp!S35jIB4M?yF7y}&3$^dQ6xHEQB`&BztViex5Eg~t*CFm yM=ay7oM#iy=6_{F<27Ab<8@nE-B9Zfru-ZBe%Z^oe;4}z0000K_W8% diff --git a/interface/web/themes/default-304/icons/x16/table__exclamation.png b/interface/web/themes/default-304/icons/x16/table__exclamation.png deleted file mode 100644 index 7a5d0c87efbb26f2eb72ccd52a5bb4677dcfd252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmV;M0%ZM(P)m{(1;--1wpJ#%~~c~wI(Smb3|B>1eQn`c(90| z#ESiEI-ReZI=AUu>eQyTmeaYt)2-Kid!IKNTbTzR`0(R<_aO86ehfS+E_$h${oh18Q zs6$<%YH2Cs(rKYUAAwL%7v^y9`%mb;B~df`yFfd=jN4OD+?rez3aCR}QrXm0o?KhY zEKoS(xH}X^tuur>%sjOAS!irQ+_26-Wtl>iDS%4jB&b7OQqkC0zQS>t1$C|;Nbxxv ztJ|HE4NfPhLtRqR&~Q1PN@W(%fbt6fdQd_I@BfS z_4Z^jK`w^%^T_RJfm7zppg9R?wEyY-ze~hA{ zA}j>!Vf`pah+PJC$w{U1+8oQ~EQs*=4>Qvp7_yx~G*}Hn2*0gOqC zsWAyAykcPiy%XL;=r>CszbJk}wu(gO^2Fks>rr2`jT!FR6AyjahmcFaOKt79vyzt|47Qb^3mkmrzs5nh&qGI32$D5JnA(!=y zjWx%3sN4iTuE$VekD}ZrqV#tJCDss>3jq|)`%y6Cg<{Hs50ej&Tkb&)xlA`Y+9Jkc z@dBe8@q%HOh@smj7;eJozxrRGKYPTtQxAGi?&AgIkju0qBdy_RG_gP}_%OKR!hqn! zkM(Ql?N{itU7~yC9J=LGe6{|CcIgD1J>hWD0zc1E zXn{0S0XgKdT7%(>I}}Q}V1wtE3&tA7#$u3xKb+yjPfArkzeG^MV1I+wIDL<7;sI#-}EJLBF%PcPLNe6NnKQc}hC+D4z aBYOr43CVJp$QpkD0000yK&S6-~O zm5kg9T8gt|Zly~$h7MU~Ze@nc{BP>h_nt_!Y#00B;hcw;-~0VIhiUrzB|OKM840`8 z+bhE|53x*TFvtqL?0yIAnkb;bkw?8fhpnSo)LGKl@-m6dFA~^fia|6O#YW?IYj4z z1F18PtM9|mI77HR@fm8zJXH1|&f5Y|TKza@`2dA^4#W`4TD!VhQn_5wpu_zQS>8)y zo0=-?ubfU0Lo7Si*?BUa%@z%4!T9Vf#ylR_XJ+tvdKylj4_3DumdQz&T`pk(F~qVX zI$ditlPNPu@Ln1+DC-6Tf=x}h-rRhH9n@-1Mbhad4c_wp$G~VdL$A>QJdbK>eC&W) zeL9> zz&$tXF!=nA@E3?7maP|yl_CCR1F_gY@%UY^JQE9WAHUf(JzSg-Lo8b<5*=PuTYI5W zWQSIdAnt`$xx%+?-@1E$&xvLHRP(IiSz94E+E``U-%!<9VMa{#FV2YAQ}Tj(ng9R* M07*qoM6N<$f+#Q^sQ>@~ diff --git a/interface/web/themes/default-304/icons/x16/table__plus.png b/interface/web/themes/default-304/icons/x16/table__plus.png deleted file mode 100644 index c1a918d87fee20225459eabed0d61ac4ca5f0c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmV-S0<-;zP)7vA)X>)4GbL#iO8rVLWp%Jx&&p7nk{XP*eYF=tc0CL2QOX*?O-5M zfd?^im@(R{R~w3`h=111)?&8yf4$qc=l2NXUC|03`0#tbhtHQUFY6r|(sPVEM9=OI z4z^>5k6hO6@w69tIQ0Q&nJVIhzW|+2M$?--j(M{<`YMh3(G+S&641PiL;d_a4h?UC z9CDe}?Y!+tfdNylP$(@h zNJ%{U7)7rX!Gozy*!>&m_Jwh0G6d_y8g6@6VHsZmIpngA{(e(NmP-rzg5QwmS;^$= zY*~ISNg#(@cHQN=nat-)3#cHlw1jsH3-Ha)Elr4z!tb`WOy&C9( zcB}Sv9pKrXfEw-Xt?`7?CRMUu34=GUCQJ#{#2a(oSJ`Ps&X^q?x48a aj_Mb^bI1{yO_t^W0000H>IB@I$MYrLzfLd4_I&l)d?yu1S!-E=ta$M*KhHt>hTcwJkI5u*{2cwGHw z>gsf!a|qpNZ-20z$&@sR^Q_@A7!Yu~^|MANo4cfesinmdO{dE?m|0)PLNJKwl@)k+ z_VJqtqQBnUe7?S>hUl8b@-UK0l{AR)tRY+Yca|-PUVIGEMYGwul}wgxFzNTJ0q(^` zjL*+w%;!@BL@z#us8UgEQGVggMB={@z4$6+jYo{eTSu#_Tlb6j4pmf;e21B1jA0)f b|LddQ!Hlr-=)_@#00000NkvXXu0mjflJy-4 diff --git a/interface/web/themes/default-304/icons/x16/table_delete_column.png b/interface/web/themes/default-304/icons/x16/table_delete_column.png deleted file mode 100644 index a8721c36a9526ae95257128706d21387fb26f035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gPdP)FL!YC#V;Ir zz76tIjsecGv1=7gV}LgU20YoS;8CiKhss}odou@DEQ`Av+YBH-7lh1EZt;#Y&~t;PKZq%5v8gSYB?} zCl?k#e#$YxHZpQuEthKz2=H-j4RetQW>;1aT3^RZIE?9~B}|1v3?M({7;xF^9mtkS z4Gr>g*R>jtH|zu;Kjj!;@px`zc6XZ^tR@n8V>IG@cQ?;)ELLkke#$Z6;_&dztzxmE zL00ahXdnQ8OAAl^jsWDR90SaQgZ5OR(9|F(zx|t{Aev4il1yS={u8|c`6O@~ponKjj#(zpd?(p|f-7e_gRyOizUf?)3D4=6RdVRR5lG43KA^ w)B&kO^*SSj!6k(6jttY3cZRz62PsE@KbB_Il8Vkxk^lez07*qoM6N<$f;jmeTL1t6 diff --git a/interface/web/themes/default-304/icons/x16/table_insert.png b/interface/web/themes/default-304/icons/x16/table_insert.png deleted file mode 100644 index 5be705b7cad78650b83bb4defffd8eb5b36152b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)%pu7Uv0bz>sD)t^1g%`O?=NT<1pO1O+O!ZvaM40=k>V;B z2`1$vnqR}rMxpf1l=qzTzAf&Z3uOdz;9b0Mp7;4ZyyuvgGc%8XJk6h~s=f=HbA7L- zrd~Izelb1$3?T5%p}@pP5K+8Wyce8nl;WJ=eNrOI=93F}=Ku(-b4FAF!^Dtb{;M)M zY!ESshq+Ji_@*L~)a)vVD%Lpz5IAd%PX{b)Dc8fF_;NjSe9)uVJ;940B0RjPczCKo5FNl;n?#7?*mx13m4z+kUOTLAZzCdf zw6#&l=lNExqN=DW`QBc<2-e!_X5j;YjpH;zg8;?`2Q$a-n%)ytu5I1AT)T2?{z-77zdv*PytBh- zp^){fr4qSZjyR6{hYrRGYEg8CV6$9C(!B$$r(0?CqDn1_l6O$8RDv)Jc{3cP9_>Ki zfB!)khEyw+0Kjw=i%(m+y84>^Oj4^=B#Pb|pc6O;v^Jv$j)D4br8h#-o^jiRFUNwFyi1}whlCM&^(C}=?Y(ilogwGF6IA*;ISrkjFUbWueR z1w~qFX{fI>sj&|VC8kM?#%gNJBxz!j<2~2T&@mh7z~P_&&N&}vW|Uh40~VpntB?hN zqB#5e8?lOOIj1N$Jf6m~xI5tkj=d}6=<5>9-rqR+w(Q ze6$GqnUerVUtd$PT$TWL5)yE4p@=()0&d6u0-TXFI>RYk4=qXn{me;#y|=eHUn=Ph ztUeX4z&G6VeTDOF9GzpI(J>l@V`Ls}!=GRu3W0v+B%rmYr#V+F>J9FG_>O|uHH}VA z8ur2QanR441YGLwZcz&by#WDlW@j-rGXw9`6#R2@7zqY3JTZYGzh46AXHEhxxZSO( zeBRI?BX&*G(Wqf3fPUsA;H=AaCAqXz(O^0j!=abQbp^v=y#f8qNxGLGY|^t4d`c10#4a%*W#Is zp+QpY)Yb=kv18sOr*=jF{met23YTw$#@=uLmdhmCu=z0CBAm+AOqXg*I+#I-qRx l?1NC4lRM9spI0$Qz#sfW)S{iC{YU@+002ovPDHLkV1o437NYf*&i2fIj+hk_lVP7-+9A*h3tEmI`esHBZi;35jsgAk<llfbF;}YNiBd3IsN#M8Cmsa9LW%^Q#>K^xFX z1(dmHG7U1uPBfuoc-v94qgfba(Qz}itp7U8s z(tsOl&E4sB`&^bPdmy@%Q+x>{Ht)Z;7wc@{=-{|#-#N(Loda)9V zp+qdcl5#$31Pp*4oSL+qN^y7up0|B?7|}QN}`LwE`q$Oby7ssENM%WTt(&K!aO4>I=xUx zG4q(Zqs}(xj?Rsi=7vt^4z}5R`ra=#BE7H=e*AgieV_07F-dnfd)C#JfSYqT?i`XF zI^cQQ(Glk^4*Ah8e=L>D`M(#pwi4pl-X7|f!l}RHS`R^@@_=?|cb{`{TU)2X zZpTZd88U?lwMrveRC+WkzoJoXLXT+`a^niZySorqSKt3H=YEX_p=cBfE*Jcf2y$hz z2MOnEvp|+=50|HRkv<+l+He@>2ZBiH^W#kKChy#*Qo-PKLchEW-_8z1Qt88lGX+%n zzz3ACMIc%E6Hw~h;se%P&6pUv0=J_9I)?+^a2PjAN**!tAfI@H+nN9*+BG~;uApSf zjlu~R3Pvng(&fVEZO7b{5L%lNtHB_y=jG)y@*tmhgYtPV?@3G=4E#GW^A2uH5q^bw z;4&A$wk(H-yGav?3K)5iPrLyID9mO|8I90btr*kI;>)L-*!I*wC=|lulX7&HB+brppI5jQ6>@*tms8cZ7W z7#$G8X%fS{kd1+lMOe^hL9fnSANe4tA8r>27IX8 diff --git a/interface/web/themes/default-304/icons/x16/tables_minus.png b/interface/web/themes/default-304/icons/x16/tables_minus.png deleted file mode 100644 index d166635372033dbe7963cfe364900df9a76d9cdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmV-y0+aoTP)ex;)S&hyrh(MH${KVDw=KmYUm4%5!fvHKQF6Y1R} zaiv9iXn=EXc2=ezEgs79VV%{=zpgf!h=F>efv3?Do_s4}JejF`=A$Y{J;t=BObDPplu$788rAy>uw>`#pPzT@q75n9(4C_~vj&g$uD zvojLGLm>=%A|+l^wiim!!@r5>Ct)aNM55Fn4puaav4?t0000S%$G2T|IOVufOpHmqP1Nz}4|nSyD$ zL@Wzp(=D~!oc}f)Q`uIc=rDiUUz^Ok?|Exqp&r-+7cUv%N2hKi9@ z$cLSv9oiKGi1M~JR-{rD1cE`-&3T}A2k}@4=-UiHyZ#do$G+pkss}RT3TTIRcR80d zH@6MV&7sm@fpTaDbp|tD7^l!^m_)&`?|?G<1`nW}_JILxc)ghH>cY3297waXYZ-ZvPpH9VlMAwuW!y6? zqI7TpcRo5$+-Kv?Ejk^vLW@>~0+7q`GBR?Wkq7yN8dOX;xhK&-J$zBxXMr+}=;=$d6^Ql=U8fZ5nCWa9QqN2o%Ljp(tIPC;iGQ)ZHI8rf#D((`B1$2is)+`<^#80*ma09}h1)@BjP%J|=H(XXo46k_h)= zfs#d1Ob<9`T3Qku$085y^2Z8|hJRh!)I^lV=jU;AEP@*!!?&s&CIO;~j=nlnkO$g`=#PHhx0~gKT&@ml`+%N^&q1^?} z(&pw?-RLN;=9^srZ2}sr2a&lsl-Aas_%G*YMkB(p7(TdM z2t=bes#c4W&P67mz%Y-UeRJ5+9YyY|2)4cmVY4=XjZggCS!*z0*y)7D;ec;;79xeB zJn2jUDj#@&axx0J=U2cf=L`>^owlAH%tRs>93O{Qn0sWh3Pv8}lW1_n7=(Oa5~uYZ z$a>v4`PKzVr-M5`>gs}NYzza!Kbi=Iu&c7NijfETBpN7(yxfy`H$2Se8?%`^7d=0K zZ5@T!-zUbDaL*NqB#b=BC((ccbap#>tyUOEM$k1h!~p!(F<&)O>eqf=otG!g z%+5Z@$b)=-Z$O>|HK4g$dk8sC3$XO|de6SEC18!KES&1}CPp6Q^QQ(BKn*rM*p9+4 zdl$fNWttdykdHeU{40lFmLun3K2k5Qac6(Z2dl|2ajs@GF!CUu#gKAtr8CR91?<8K z6H}!#A%xLcF0f7@>z|0z?y|B}6RSvTV3H*~;3xMUr-8vj+_(S$002ovPDHLkV1gcb BFxCJ7 diff --git a/interface/web/themes/default-304/icons/x16/tables_stacks.png b/interface/web/themes/default-304/icons/x16/tables_stacks.png deleted file mode 100644 index a7e9e871655705422889ec073bc36414296f80fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmV56?Ap&WuxuL<98ggi8h_-4q2x{tH5<${cE24}Rp&?pq@IXaF1TIp?%C2^i zt|mwYQJ8}%nxdj_=R0-im{H;fFCRag^E}_nbSo=tYYI_*OoZb1p(nr zp$ljeKyFsn*XtQ$#X<@g^&skR7Z5ZU6uP07*qoM6N<$f)@7Npa1{> diff --git a/interface/web/themes/default-304/icons/x16/tag.png b/interface/web/themes/default-304/icons/x16/tag.png deleted file mode 100644 index dcc294569b1d019f79614ff7e2d9792cc62c8382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~OrP)cu^tEE;&A;;1Z z4XmutkjF!=)m0i@TO;@S`eX1mijV<8$1(gPkr12P+v4Na7V*jg?p-I4 zfc+;1!?Bo%#^d7K@v-={yDRp*-lTy0xdn@h5+v_p7z$oqit}jnO2XfS<8WVDUY7nA z%+1M=^hPn{4~In{5>ZJw4)^T~3;ZFZ5_C;Z%aHU%Fysw|gzw@)CE+;Se=|EPr=wm8 zIwmG$NczGUIyyTO--AJwgyV4k_0*J{`Bq86i?J~o6301)4o*+SVIZKAa2)Qxa=Yd1 z$EIh)!#YTm5Qg?nPQ_Qn7yL9|eLj_h<8Z&( z>C~m8);2bhs?3U_GdUdn*%FS!=iG;cs*Fa;Sz3dE>N`6t4OZ(wTEcO7&*$9#U)=)t zN~)_H9+^x|mhf6qQ}Yz(#o#_D1O?y@$OE@i_ij*XQwH>T8jYnuum6D6jQtZJg9=az iG@uCF1^KCaH-7_7v-a7{gCijT0000p~_}Nb_c0Y^E7B)2$MX9Mtr}VW`CXMk$6^ z34;*&rmjM|C|@;d7Zy$XKy*6i)Xl9NozAgly=K1faQL6+`TzDl8w2?3iAzj`%z^?i zx3xi8XD3{CI>FlA4cB^lpxWiyMLM@axyzULXJyV2R(yEGZXd&sj|*8<2%#fudF7LDTb{(ijQ*9SZqz}{K_ zIjQ(N1%r_Yh8GvnGckd$hKF&)>scUWV|Sa2@t7?d|e^ z0S<>ikdiQke8C|4Lm>%->#$$k)WjbG62O_dI)NaiAqshCXK`|VUIO7d?4NCD5MouA z0mhmdfgq(p3XRRo;CLV)fp8u6^$kuz*YXT>%}*is#=~C#z0D>N#5_l#&(qWR)$f-; zxDNZ;)`7=IZ%v4ro8!jJmQmPO`xZb~S*ak1WtKuCQ&TwV^GP6FhyCNWMg?6GJH`-s zW;Bl&mjEZq%P#~d^nrewkCT%U2-nG|e(>@@?U0+oVp4%iG~Dx`;|n66RrWVV$gx-y zTC@4$N(k5Cz2^3)@A@bD^4=lphyJMIJz|=*PlUAebU0X8xH~;RzbppfI(+8+R`Zh% zS;-@j#cz<&<-xo`L_U*eNZU#34KmrWWVQMV%^W)KB?+XRq-`Ww{E_mmgp-{^@rN!I{k|9X Y6SxpP#XzCRVgLXD07*qoM6N<$f;2NocK`qY diff --git a/interface/web/themes/default-304/icons/x16/tag__exclamation.png b/interface/web/themes/default-304/icons/x16/tag__exclamation.png deleted file mode 100644 index 4b0b38afe9ee9264cf983cd729e0ed367d992cd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 747 zcmVzP%l*cspTB0 zV5n)@A7oIWICT<=TK>(n6#eF$+uWSx@O0jRqnY`_!{L3;InVbVzV8G0Yx(&4!pYcJ zP?VQLl3ER^S}mw*Y9PI?4zlX&4-q#v5aVe+78wcg1qF~$T)de;KqRao;yP@xGdLU( z0ar3JL6(#AKY@Tqa8X0g;2>(7o86H~*g0HOskRab2>B`%|8lvoO|Qq+_I6;A30Q6` zfq;Nkt~R9nB7hmxPVO^74`r_7LzAT+7cFk|fbVMZDFD#-$~Xr>FDw+UkLnRz&CV8*B+*XIGmDEjYq5AF^EMM2`r^^dYiu1YdzYBd&*OKK z$xGr`b75n3fX+OV?~qERXqnEkbiVM>bTn|=34rs-$#*Q&JW8)-+-UTYuyO9^oh#M1 zi3hCH50O4toE?^9@4GVJif3%I*=NA%k>YzlD!XzyEg@%SVmT}KUx&n>-*b(GMgVC{|a!1C9 zE`V=&!c{WC4&neI+Uf6qcDG3MfMOKwkEYy!T6H#jd71;gmARnTD1CkcH775(d(e);TLuf(4@pyO9Yog1V`|HqAj>c~*%<+eNyI>BSUMVQSv& zLTIoXp_?wc^s4OA3lTFyA~)yUbn~n>`ue?V8=aGR;NjzY-{1Fq=j9xtzn(gSfi8D- zkuo_+eKRxkJQ}6I>@2;E#V8n$p9K$e+^8MC*xpV(BO~M)AKyzL0naZXL=}FxM(5kw z=+59EIfsV+Cy;=rgaaQJ7e#b#uDr5@>vSs+*iRq7S}cms>+9mf(vnzBB+3Hr?=6T#BuE|>5X$WCifvV`N%&289Paz3rlfxb zV`DNTk5q(GxtvJn^BM_{!+r0>1YbfL!ToSphNL%-P$HWZ$(-<8a^G*=dP1HPDPROAz!6}moU8i{R96hnf&+mS00000NkvXX Hu0mjfkGWHKfFL!c(CzYtM| z7uUcIU@#;mc7{SBG#ZVzSC55Ln*?gY8m0^H#>UX?^GQ2PxDF2hATBQMs7j@341IH8 zze{+*l88V}lx@)Pk8l_VMo014@G$Vs0`5tI*w|PoI1_#Po>Lf! zxW0~|jSc)XGlL`J<2dE_O9Jly5#(n_!`(Y@R+c<*?HlvYyurZQ8m>@0S;B9^acn(3 zH|;K$8fvq$;COB>m`V*$<1|2ns4M9d_e`*4==nLEo_?>8a2#t_*R8VdZZ$~&3LOr( z($oZ&mKG>!Ytxjrx0g?Tc#YosI(qjB9PDqv#nn|w!g08Ny`w`z5>N<=nwvEwDG$=n z*QF&K8GVV}Erm!4aXuKtb*gj!T5Bsm1QdeHPN#+>wiO!svao>Di;I%vdmw=RfsksksI!Ns~dElKRlG&D6gho9%?6_Qn|bN^C(y;hFOf)japAg%nWs@nk?nxs$j zaduWA;W*qsUtO)0qaMr20mU-d?OMIfRz~ck@SKLjV8(07*qoM6N<$f@=jx`v3p{ diff --git a/interface/web/themes/default-304/icons/x16/tag__plus.png b/interface/web/themes/default-304/icons/x16/tag__plus.png deleted file mode 100644 index 8014448ebc0dcc2bc425a3da2a30cda8105ad29f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)aKtKNLdXUY!TSHwaAmlqTOlU7hcrrGbde6GY&3=# zSiT57)I*Oxl`CI-kVvH>bbp+iZf>>F>740CcbONyoO{pr`}^Gc-2nc&%F4^(RAVF9 zhlZfd=Yx(w0Gy+v@NjGl9*vJ5AvKriLh)qX8?(O{_KpCMon|Wd#@GaS4R$uy1_UBG&m#aKe8XPWrBF0Iqd)i3G8)Qt0dQGJcQ6BoMB{ z{@y^{8+fG*lDzOz0pPC&Fm-mS3F1glXg(6bg=ka);X3T=pIFrJLJ_p-3`vS$Nu zzP zOIRx2!(p8cPFpNTb!Ky00m60onfF!o2LPT{c)?W>WNE(Xv2dT?)3uXSsnlrd4;l>j z8NyRpTYHA~^h-e%X*Wp@kL92CEz}^*kDKRqFhEA4*MN4HN_9@I)jptUq~{uvNIFE? mPf~$NHUc);G)@2Jxw1dA-x`#EIrIGh00008etl7;;xVO>;^ecy_dV#G+oAY{U*pt`6oT3SJ_+zN4#6VhF%kV>fF1aC%o zA!)Q~H^HuA7h%#xFxtpWC}PtVs2H1V_4a$$_AzbQfrrC6zxO;l@7YI`H;Q#SI$Bpp zc8`aehKK2n*GsOE5xO@zO75|-ec<{kPHTq`)zr|{o*ruG?=K`!K*KL)&LKng=sQeLHDkC`G)}}&YUqsQP&=)Sc z|3DGX?O+qoWzQA=2K)-y%bsJ0ivR!s M07*qoM6N<$g1s;;!2kdN diff --git a/interface/web/themes/default-304/icons/x16/tag_small.png b/interface/web/themes/default-304/icons/x16/tag_small.png deleted file mode 100644 index 69e01163b72e57d3a48088f904fde740389fc2e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPr2P)S7cJ&IZ@+&1|M}-n zupuCqfW+|{kkHYg4>TnE3y|~d` z?j6_=kV`<~5e*G$AQ$2_z_+wi-KV%X4`v9+B_KXf+yH0@13?3TiWwZz)75Q~lM6tG zfM_7!03=Sd0YFU*(oRmA;K-w6@C)$8vkQd0o0N)A3R10=0i~s-t07*qoM6N<$ Ef@wf}lmGw# diff --git a/interface/web/themes/default-304/icons/x16/tags.png b/interface/web/themes/default-304/icons/x16/tags.png deleted file mode 100644 index d06ba8bcc8ae628478fdee10c8bc84770990de8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)W_e&tFPAWlQVzI7{BFf^=M z1;#)=UISEtIQ<{c8W08n5Fez8paEs`=c@t@$@l}*^!xAM{|4dVMIb{e7A~wscM*mG z1v6)=0u9Od1=R5M=g(O0y3a<-n^ygE`37eEv2j;yMSE8t*Gb*=Rc00000 LNkvXXu0mjfMuP$$ diff --git a/interface/web/themes/default-304/icons/x16/tags__arrow.png b/interface/web/themes/default-304/icons/x16/tags__arrow.png deleted file mode 100644 index 8647dbf2ce6559b7c87fee71091935e6605abc9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmV;b0#*HqP)tf*i&`2u%{CRx)gA!A$BYRu7W@W+<^`&7wASS!1)B_6Prvse_gioQ8AI zY_npJ(R&y~uvDxb#6Pn!5!7_kC9`IybAI4bNA=K!FPC%fJ)isGG5}!z6LzMymMIz< z*u~aXR&F-4>z$qKMo$l`vD?{Qr*l8%@`mKzaX8q$zCJEk{}mv_T=|L5P-sz2L;nO+ zTdhKbsKPk(V{HvGN=mc@xoNZA-f9#DxMr~k5u*Bz1K(CxAruaC5CZ7CyX{+zHUZRa zZ9;^oLwM+4S%IZch=Y(xRYynfjNiY>h%6(3vX&MxLdsY0V0L*Kz6OIFgiKT>(^KE# zVw4e?asYXKeL6xag4mqKS7rhM4nii%=4OX?VIj(hOe@;kg{-KiCLJM~C2UU3&jVd1 z2$`I%tLvM@-c}v;)!sOf>2O$%g!SHMh>y1Va-Ui@Am*-24 zc|f0Mdd+f;{fwQ|Xbws%E34KaWRj!RJ|FS%y=xqbtz(ec_};rq>HH*rF#!*~066SE)HtkQw04U`EIvD1 zB#=m|Q}gp>8;xWyXP{{cpzI?+@zC$+MgjKS8gSG6HjDt1h}lDXvP5!x-6&aUewV0n zjV7r3hxq56gITr-C>#VxD1Y@KzM$zG0eF~X%wfzCOeRLWGbu?*M*NhNQ&{iCB*e*| z45z&Th?DmY#!3wruouJrv|{*t7Mqd5whIK2-j2e@7G6P@8+Qdyl*jdc0ej?CNZsUr QBLDyZ07*qoM6N<$f`fNB$p8QV diff --git a/interface/web/themes/default-304/icons/x16/tags__exclamation.png b/interface/web/themes/default-304/icons/x16/tags__exclamation.png deleted file mode 100644 index 3d0e27f84832c73c8294ae59d2e479a5d455164c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmV;<0x|uGP)JZCZvDZ<$9g^FwX}%P`mX{har-B|hT*|$zVuH) zR&A}6BuXD$`mwx>;Ry+9mOQAhf3&`6gWzsurIaMf?{vYlw1i%tPn57Av!+J3zG#gg zxvWe|l4LI(Iu;kv<@JgZE>UTuC&#LAq&F6)Ctip}T$)-@A%(b{ zoG_B4yJ*uqH;4Q%OSt4petye1?OC0(INYZ|kG%;^-x4w9xkh!fq~rj9Gq{kEamPUq zj|l>f&(4YxE{V;~ZZ*=HW#gu1oE*+TpQjc3yDpg<>%)^OYNDaC;XJ_E^z?&KX=$nz z374ExtJ?-FmfuA-fi5Y~C6r-&d_3Bx@|<0-{Hi-!C0hvqx(xJHLk`8osabMNp?K3b zF|k@SWPFXIUz5;j$)*1maAsJEeINFBcjzT&J~xqo$1a%+c1A|Z0_5_nkeHa*l_I0n ziUU2#Xf#}R4;iBI{ku#w^q<21o)dGQ8YS9~4HD6?g$N*a6MJ|LlFLtW(Uj1QZ*}|3 z=8@BA8jKJNcs30l#g4WeU$h#@aTaVNf`}tT1aX)M-5wYi^)xS_*U%a4vKnP*9SuQ` z?V&g`Bi(z2cCDluHXDBa{?Jea<#o@XYcu%#7k#2*wky7rKmY&$07*qoM6N<$g7@}C AZU6uP diff --git a/interface/web/themes/default-304/icons/x16/tags__minus.png b/interface/web/themes/default-304/icons/x16/tags__minus.png deleted file mode 100644 index c9692628e973a66c8c514593ed0d4c95abd286cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmV-Z0<8UsP)l1RnpvF$`b4=Ar)zx@Ko3 zNUTW=9UdKt>veTbmOP)If1xhQ5IpsGBuK2kG4S)?KqQh$MZ$tkpUyI+67T3y7YjYC8FPMeK}O(vo{ z4#(BX*4DO^giB0L=bKOAa7GcA+GSZkqtj84h?W3hnDA9gu9?kFmXyo#+m-e8w4(PG zi}2;;g%+~2KVxVm#Uhc19dyB9pn{4DgVt#5DygZdRTsU|XhOeaS*USC!t>{V7F+_C z`Ceo+-cA+qy;-Y$*Gu#fd^l#c4>S>ZS&##Yz)f%q+yJGyg@u(|q|xc_VtoZ%1o_}R h$UUCRqO<9Nw4nJ?G(rmmGI^oZ|-WBqXG0 zG#Yq%kAs%ZlTg*w1=sufz|`Nr0?pOEy?!$ca@=!fGO?26WTRTGjtLONAbG3E3KHA} z$jpq0xao4a7|-)XPdYh;R}hO_{KFU{=%IOal^|#Z0Fg)}i;j*qy1rGghqt-Mt?kEj z*V^0jJ$UH%@-j=(YV{;3@8~cF772pT&``)yZa8AD=AMzH$Fl96?fWqMxwORG9*-a) zL0MZ{S6~s8r>BFQ=RuptgW-na%q>&+2uX$?9cR|bAwfbVB^FEfl-=%EM3ta67(iEB z3uo)=W#<|i3P#6* zFvke1u1J1AIXlbjPA6M%yH|<|nwu{bn$5AGs;WvvN$~5;yLt z^mJXF1SKE{jusckWfT>a_#{-q>-7)bTCILXPTW(e#%Pq#osnQaUOwPqz*~*qty1Yp zav(Q%;MK%LP!W}8m6gTOoyn9+@O!pOr4XKyA`O$vuf}I*=L8nfjHOAE)Kve2-e)Zm zhU`Eh=p7}OAM_Q`dskZ8A>409HX`ehb>4Fv322By_9FX`J%}tMGBSgTHi^ZVIPXNZ lBO+uA65>6#2Jk2U#b0!CC^}bm$GHFi002ovPDHLkV1i0pLNNdU diff --git a/interface/web/themes/default-304/icons/x16/tags__plus.png b/interface/web/themes/default-304/icons/x16/tags__plus.png deleted file mode 100644 index fa7b68516c5b58a2745a346bcaf19e575e4a0b56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmV-{0)G98P)^w!q^IlLdb?~(`Bw{;q2G+%FTFgeMR@|l_&ARe zLlz&VG8wj<&59B#>7AUMiKS9`MO67q&}p|fqQscN2l15^_9dMbB~+q!Iv+^=ua1TDZxlWBizPfzcLgi21E%}?J(qeVp$uOgyL_A_|2BLu!`fQMB8I1Kn#>l?IM zGf9qibUX`%!+AxWFZ!57*cBlP;zBfEif~9RBBNcQRv+6aqFrKLx)MqClFF zL&!m-v0N^1r6Orv-6=fpMs~u3iZ`IqP)W_e&tFPAWlQVzI7{BFf^=M z1;#)=UISEtIQ<{c8W08n5Fez8paEs`=c@t@$@l}*^!xAM{|4dVMIb{e7A~wscM*mG z1v6)=0u9Od1=KM2@t^-c{`>(O0y3a<-n^ygE00pg=T>H=5eeS>QvK#+FE=la_TJh-JI}8_rT$(*~swzWp zb+tawklar|LC00M|8q^c{NH}X&Ho^mL^d_8y7%S{hKoQhP3i4b1BDrbPf1DM2cTfX z>6iai*S`24wEM+>kV}H9s#f2A{TjnXAeY9rwyMDboxwFXSKTEiCm&=;_qC7zK`!ws zDq3^t$rB70fm|9|TdM{ObW<-c1_q#J24JXa=mZBBfebN^i(7x@{(TG=fn4faTB;5T zGd(9K1{5HsrNtm@X{jY(W>%)*?;nKjA`lrN+7>9z1H@cF%nrn?P<@OHP>viB8v(H~5E}xq9;dXl3&=&>ii&PPzAO++0I?7d j^8zs^R38%qrP&z(eON2chu=%z00000NkvXXu0mjfsKEwB diff --git a/interface/web/themes/default-304/icons/x16/tick.png b/interface/web/themes/default-304/icons/x16/tick.png deleted file mode 100644 index 3d89b351515619a1342026edff245f3dbbc903c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmV-F0>J%=P)(dauEUs z%mm{3LJ$lwOaQ29L)yFY|3LZ-5POhf02{+%k$Hy4oS#NM%=#byvfww6e}-5C7#S7_ zw<_!~z87#K@xS-gm|r|A1Z3`Oi` zxR#5(U@YS}0_1Bl$T2Zs1IPw|Q~=$_AP>a448}}p4Dn277_^x}fqYFMRsv!vAO)?oku N002ovPDHLkV1mp9^27iD diff --git a/interface/web/themes/default-304/icons/x16/tick_circle.png b/interface/web/themes/default-304/icons/x16/tick_circle.png deleted file mode 100644 index 26b2d5ad86831ec0c067d7f304112ed25548a5cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmV-+0*U>JP)qn$VRiMl!ifXg7&ia1`%n{n_l=L$ZFuW zCT`LnDN1kDi3_=viS@cVr~--iGI`5)FlQ70jj zdk9HTUbuLYbVVp}inKx8nBfjHn5E923If*YX7OmYR|&2Tt3%2yeUO6puEidup6)R7 zw}OB@?U94U>)Jr^1_Zwk*MPJBm9S<@9gs2mdjVe`=f(aX*R=Cr2jN`q$~N%yeYpx} z^Ov=qv3(*sX2Ap(>CAL1XO=EO_d;+Rxu4%)^PK)X0Bvvm3OZ)NV>Z^a6jJ^3eXz-~ zcfHV-_QRx{gi@&l<#HLqZ*D@<({}L9oKVp*3&wX#^mYCCd%<|6WvUCfs1JmhP*ooJ zcpup3UW4Xjr;d(U@W>&Z%3jdNS0^B!&qJY50AV%+Yo#?qewK@YGjR~uq}RZmI;^8( z7Cf}aI_6HQT*_z2#bUAg^4v-W*c26CZz1hb(J>3gY!PR|tGF_UfSvYM?R?smE?ltn32M*DlY1g={57?L9b(#LzY%Puttr|0C7tt{b?lurI(h#T{wacvJ z(YR$=GE0T!S{$GDYnD-)j9GNd0z9o2LN4wIFt@Fu^@&rlOD!r}@aPEMafUn07+FGU z3hF3sN(bQ?fe6eUGQ>=gFtcEQcbwslkRz16=xi-uD28(9Y3Uz2?Em4>2) Q{{R3007*qoM6N<$f)({Fe*gdg diff --git a/interface/web/themes/default-304/icons/x16/tick_circle_frame.png b/interface/web/themes/default-304/icons/x16/tick_circle_frame.png deleted file mode 100644 index 92282dca54b60c527f860c2c08ac0ca53454775e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 786 zcmV+t1MU2YP)dpB3$M-XLXNe4=xB1$196w%j-pe<*P z(2+9nqbQwCO=~%wI>*#0DiU_qKXCQlkLE`Y{NU!kuHW;#2QSOb&1HJMo*4`VW;7aE zUS3|9$z)QCTot*w1m^>q%-qobpqva+%Y z>QMLp3nYRd=*(tw3kgk=7Tg_qfYi^~9GYpjwzi7q=H?dalEW{^$;lzo#K5w&v;<+` zIyB#nFfHCj{>nX0-a;`hjvIKkurQCt#zqS{e1MkjvC+^?jGig_G}< zX#Hh_$K%25>@3pz1uO;@x%_s*3R!zRq_$Wb>N?K54u=EeGL=eo!|k4g$yS88p0ix` z`~BN5fAKjWwZ}r*zez-of_I08oFJDemCB6vcH3Ni-%}j@kbp3|d|Re}LfR*a!#hNF zC{Wk?1ZJ~kj$D?UoP1ai4D}NeGdTZFi^zTjWWDj5a<3>&?hxJ=$2;TWlhEshdU9D( zQW8r{Ow6pQd1RZKnuoGU4QX2>q}FIiXJR)QiRL@X+-^Urs~_6PA(ur&M6j5cm=L*K zUQk(C+v)YLp`rH$bZ-neP$%QiOgpc471W_FIposWC$e86ksOi9WJM~~g;!Q<_k!R5 z8@r($Wz?ZAIa@9Z5|N3>Ma~2V2Wvt?LW)B}L#sp@wy2^VWz-Q-Y&k)H0oVWt`BL-V Q761SM07*qoM6N<$f@@-RK>z>% diff --git a/interface/web/themes/default-304/icons/x16/tick_shield.png b/interface/web/themes/default-304/icons/x16/tick_shield.png deleted file mode 100644 index bfdaf4e79636301419a37e12bf0c592bd8688d50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697 zcmV;q0!ICbP)15cn0Cq-? zHjgp9N*&`{Vu1BTUh}+tCgqd?i1l&t8rL=6H&T$oS zd2Vhl_T{0O5tRDbmj|PyJM&Q8tW1+50&ZziRZYq6oZ+HH*B8D^ z0Oo{jsEhB2Z`eGkab*0IW|_#Ko@TV;H*^cI zE`TQNKOh}4R9R4@sspRaslJmOB&cVz^Lz)8v3eW#Z$QH8VmG6hlMDyI3=XhBKkwJ( f00j&kIpqEYxBSzauehT=00000NkvXXu0mjf)gDR! diff --git a/interface/web/themes/default-304/icons/x16/tick_small.png b/interface/web/themes/default-304/icons/x16/tick_small.png deleted file mode 100644 index cc72367b2bd351e15fa377d8d01a9a917c571677..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`^F3W0Lo7}w|M>sko>_H9qJ-1| z1OJZ3L_UG@LMaIm3TF;%h-qm|T)M*Wu+~MBPdpK7j~Gp!@NfucJ4jt%NZ!Esxz)Cz zZH{MM_$PT6;q(JM2aN+_co+SRSN+5OIi0IYAl*U!zT{=~y#Et3+v@807bv>0B}w|tDM!^89QjT}#8PWl0p4*xF3#hx=uco-s!7G)ZKx8?^r OmBG{1&t;ucLK6VQ^iEI! diff --git a/interface/web/themes/default-304/icons/x16/tick_small_circle.png b/interface/web/themes/default-304/icons/x16/tick_small_circle.png deleted file mode 100644 index 37ef5cdfab0c1baad72eeb465c6d02853ecf6608..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmV+d0sa1oP)eZ`Y%|dIX{tIkU_zV&!&VUvkFP1)m3#-no`Y*Ue@-N>3 zxzEhK{1-st#2L`c!@!Ws=Eac7x(tYqf@u&RC_YkBBHaxD08Hb;#tu|ZB>(^b07*qo IM6N<$f?CpXr2qf` diff --git a/interface/web/themes/default-304/icons/x16/ticket.png b/interface/web/themes/default-304/icons/x16/ticket.png deleted file mode 100644 index 543ee24206a64a661fe0f25d970788ae6c2a0402..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmV-i0;BzjP)c^&dn7u|6pVr~+}upN}v8|9W}jKgbXee{od+Q3j|2apv#$Pyc^^ zcJ=?y7uWy)e*55ms1`#SNF0a_@EM>6#MwXJKKg%V_p1Njo?d|%^6EC&5Rgki@<42e z%>XqZ&iV2B{{K%8FZ}=f=;Hqq+m|5>0lEa{9gsQ{1E%J=ssjzl{r2+C|M&OK{{L|Q z9NdsY8yCP00fh-j-Sm7nbz}q7fjIx`^PB(Q+&=aH?VZyYhU{H4`#&g5K2-ToXCWye*U&80w=; zOzR?z%Rq*_x^?RR3!p}1LqK5yk_W2O0vZDLvb%`_0~`P)8LGkz%qm0m%biqMxEdXsu-I$ qR7?ek<$+iVh(&;yA8HWD5GDZfC*wg?wW&}50000^k6u>Vv>%$O?sH{FDxJ}K{iPn77q=gl&m&F$8D%yuxKFjQ(riCGjWK{ORl2F45 zl0+ZE57CEZq1fMNn>pXkrrTQ#!+hB7L>arE8sknNL=t{EY(P5_ zyhu=}j%39e>E8rGRG<1%L z|0NJ1NmF(ca4&0M(yX76*m|52>V)o*5O)F*lKlPC089+Efy2}ejdj|233lRo4&^Np z+)It|LrKb{wHLAr{e23eWOAT1kJh2I@uK?NO*T|X|#7$0hf;SL>`_4RHgG!x2;Dlr;L%>Y=; zNlN-vPQlf=`LNnP>**#G>2%vrsplqEd!wBG;SX#sVWR=u^#s0X6HF+eVJwoUejpr*7 zFT~R`zN%%D4!|>B+su!-a$>fYEu~^400|9Rzg#H~{q7Qx?zWbf?yXQOH3$SPfZg+&-nEfD* zI|xs%9D<_6!%&iR6iSnYP6QEwPxr;wj+oAAo@oUL9N^wrUw9DZznp+aIQ`3@LmCNu z3qi(-9dJkF^EUyH5I#3Cgg>?INF{XtEFt*61U$l-*)cUv56W<6s10ZJy(n}C5q(bB z{4aqsA!0_~kB#q3aZ24fFVS_FB(xKHPS~=Xz?pFF$8Zl$_O+m)UxHj^@gE84#C#o^ zXCcUn@^>MU$SG|nj&(QTcu(_!w3&~hFhsxSuG>#TwRiSM|_C+tg z`N~w_Mu?dlXvINU4Qk}IOC$p=nW&bZ$2nseD!IK9?llv{zG8p^DPh}UC;B8f@Vy$< ztzVZ&hLtQTYL4NkDq~tG6ymrldHmZ;tNfZW#+m?dJyftY>A2@5D$yzHaflQymT2S! zSXUwFn^0Xv^3kHEJscY=9of&%8NaF$A|S<(5VF}TUdX@f>tub4O3a-YRB|l4yO!&g zh8fzV0r;jO4yBSkD5={y@}ZD<`0gpgnEr*`9vdKJmjgr|a85K|ht4GRlzq;pQafp{ z!WX+_o~90H?2-wv`o$Xdt(ftq^;QHM!a5&U+n`WyyBkzOqd0BlM+N7o({{L{R_TgH zeY`1B6zoQAc@Fc43Rci!f*Zkell|(DKo6UA-uhL6u_vK8_a-#wr9x9)8Z_poK|_8z k)QQu9dz=Amd^lwN2K_5GsawXqvj6}907*qoM6N<$g5m;QHvj+t diff --git a/interface/web/themes/default-304/icons/x16/ticket_minus.png b/interface/web/themes/default-304/icons/x16/ticket_minus.png deleted file mode 100644 index f82a363f8ab926e320b50496352fba86f6a86ecc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmV-}0(||6P)%f9A7A|c_43AlkRc%c;;I0m z3{VB)%-`>y{{Q~$>i?fFuK)l2_QC&9Erv9ZI1n4)Ge8Z9vwyyQ^#9E6RsX*|y#g`h z)orjLAeVsTf!Gk60ct>;^W*jX|DPUS`2YFQ#s4R^FGCmtbP3EmAay7POwDsu2O5(5 z?d6^S@9&-c|Ka{QxFLr&E`S>X3KNjJ>G^Kz$OfnbasJomH~+u6ed_<)JEt)W*}G=; ze^8i!)J@8E23ZCPgPt@y4WJ=~pPyd)|MJH1|F3SIz-kC6OhD@T((N^1UIrPU3B*O8 z9$)$Y?CO#K&#xWDY6vJyKN6~n7GzisN<_`E<|Q8=Ui|;~(!u{vuN=l| z2q;WI>U!O@G#5$oGpqvY17WZM^-(6Kb&v zabX}90AgMs<^p04AZ7((W~g2;LllTLf!J72nmx>0o4Z|AjLjP=rUJzBKr98sB0$U! dH3(z~69DPo^yowHX{7)F002ovPDHLkV1lwOAZh>r diff --git a/interface/web/themes/default-304/icons/x16/ticket_pencil.png b/interface/web/themes/default-304/icons/x16/ticket_pencil.png deleted file mode 100644 index b795e5f71f773a4558d5ef59530de01c1ed040c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 751 zcmVW_kH`AmAL%%lfplwtV59`=wF zEK&c6Kq)k{#4=LUG(}U}bSp8nTxM}P=gZ9n(uE)QyZ4;??_v+q_ps88eXJ}~BS5r>jLs#xy?ngrLgw(3>8UdtQlYYddrT5c5F$sWNA+Mfw8PZ!dzc>i2pS2~(mmp16*xOPvq**Gw!94P z8A&Sg9coK2Y`8WxG5~LC%3xC8_E%!+<|R}KK8{1yTLr2RN0ybsLi2R?jU;KPRKTZ} zBA6IxfyO5#vl6Vt($0;Po$>6_q0Q{7Hi+dMRj|CoFi}qOy4>&a3lH=C0KRoWZAmPQ_rK#MPaoX`nhE7ykJ~On z3F8GjHyo6>#dD$_+Vyf68@Iq3?2iw5V z{sM+N8my8p-Aypk^BP8bo8iajKA^m;!&}6bmU+Rs1OCUy`deVIwGQ-c^>a!ljXgkl z=MVaO+0INAu!gZS(S92<_WPbBiRnWV4C6yv3C)D!m?uFA-|`MW4`y8$WNA@8n^HBh zQwo9oWs+Dbp_$M<#wC=ekgZ~Ku0ZJu7PZxbB`DXXTiT(S&^b9mET#DWmL1}RxCMz9 zM@Gw+pCt+Ha-mBw-Y-F1kVVKs#1U~o=FPn2Kim*6#MgV}f+&^L>7sDieAUdI09lQ= hBTMPWoe`15?hkTt->WgRh9>|3002ovPDHLkV1mEJW__HR1W?@89`_ff2v=1XE8CEn4Gd4)*C1R^gEy+HVtn9%E4Kgg28Lba3 z>7}P0qKCfFY+A-*vR zTABlcoiH}0CBpfAS#Yr^JCs057=HLX$TOju zCOETe4be-lWFJ>N%M_|4soEaCV@S?+%cq{QBdVF!L0wBoqy4NiF9qc$1zoF`KL zC6EyX<6b+OA2j2b!{V2CdIbsJg!hT%p#(Bw|JNZKj`qJopS=@X?>GLE&`ko*;ks#p zx}t13Neai@eK`EC9Y5JRrX-K=U7M0{Pq^+<@dkOYKu#2YcJ|j}@hD=4^$t*}BN=64PIB0!}&aP)6 zCESyxwToK9n&Pc+M{I=KaR3c50H=4ZIyBPXi36`6p~Lbdq=b9Ibt044y8B}(!p%4{ zm}32c6ZvT?Dt4qEW{Kx*8@lLVu!MV(T(#i2s6N(82h7?bJ@PDYCB_JJ7|L`hE01Ya zN3tZd&axzM6YdG;MHiy2>zsM`J5U#87XF0{O@zYDvhu)lxF;MR$WbVvCejGi zk!EIzJp%)4Ax~ol5l)EJis&u*>2oVt!gIPbDwFc`ScoF#z^RCi1e+3}GNPU0nUiOQ zg_uYpQkTu2tpjgC$pGmI*hhC42Q2+n{07*qo IM6N<$g1kIEUjP6A diff --git a/interface/web/themes/default-304/icons/x16/ticket_small.png b/interface/web/themes/default-304/icons/x16/ticket_small.png deleted file mode 100644 index 01dd7bfba41e31caf786e1cf6450bd11ece201f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmV-I0lof-P)& z{12iRRr(Wez`Rl)HK5|GU+z#GaS@`hU9;FcH{r+TPOd&yL;yU!432OgIod@80b^rhX07*qoM6N<$f@VL7VgLXD diff --git a/interface/web/themes/default-304/icons/x16/trophy.png b/interface/web/themes/default-304/icons/x16/trophy.png deleted file mode 100644 index 747b6b1562ecfed69e35164622f58b3c4e0e2ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 790 zcmV+x1L^#UP)^k7{=fK7Af_qus-;$28z)|u`7Krh}39isAKeS#r)#Pn8KNP%V1-_t3 z<7e4=Wz)**P8K?i^y^~*P8h}5-w=oGr9vEd;e*yze_ZyJ@eY>RR-b9gLUjU9vCw}X z*)>~oL>$m}y@J1(PCuk9u>UTdG3Cxy-f-&3i{K=(aPAcqOm<7~Q)4`~tAzNa?oR=E z#8f0XbXc2(vy=sSBp1~r_b^QuvaIbTrz|xY&bs-&LY(T!#R2U#>?jlBP`xkCwEJUK z@)ljI+{yC2!PBah?le&r*z0b(9l|B5k_1N6)5vl2vr9HA_-W3=!R8dytA#k$cn0S> z0??>9XzNk9jjIy28Yx3rDgbdXK=yfX%{m9^Os@^<;1QeUE{?RNp`l!elW+Y{U+g|Y z9x=pHhO(;*ATtPny|O?Yx>=(y6OE2_-bCXQA?ga;M#Ui;HRKUP?79W%XBQ>7CE|47 z^x4?W3fQTgv`5~W0&iCiPV8kHCjq3#0rEVV!a1NxTrQwVlw9BzJz|KZ3}siA^ayJ_ z3UKcj02^grb&8;Cs3mpr5fyO`W_DT-dBhOAW-S%C$UUH$$uQlUzcR|hnn0vI@`(9o zLF_JewL{R{Ee@J55jkT~zz!^r+=ox1-LW`)4?c?7kK_?U?CQ0FX&aMc@@_CxvVbPp z3w!g!aQN|698_M$_jiI(ljMoju?LVCVwW9hppJ3`!~aAKu}c}d-&efG URXv_&pa1{>07*qoM6N<$g4)4!F8}}l diff --git a/interface/web/themes/default-304/icons/x16/trophy_arrow.png b/interface/web/themes/default-304/icons/x16/trophy_arrow.png deleted file mode 100644 index 61777f7ec2c4cb19e6ae27b05245b5a5402437f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 881 zcmV-%1CIQOP)1#qNG1D!TftUUd4{O zRENWsf%aN8zP1?9)pQ7LRy7`$grdz9j8At$@T6!e-j~hBhw?d&`oq#oOyEn#?GjaY zLq>;Tle3-g#`F2Xe!R74@TfEj)j2XWU-W^a${)S!hUlU8t}34n&eG`^r|hqf4uT!C zGDR*Bum2PL(NpUO&Jw$KPNyxst8klhjW$$B%~&p6;evP8R5V_TMs=dcMFPxuGPGS=fKN4x zV9B1+U6<|Fo*Og7!WqtT0ciq>)XT_KwUiQBu8Mhqt=;y$XuY`|V!jOTZur5R<=)EI zcn|O83}=5AQ1TKY_R3OC$Uvj{g#2Y&?G9K@%3#{>_EHnv*SI0vQyQ8OOAFJBD0K6B zQbb4oD@a`26X{O5V0vX%!^#9~*INE>de#fQ*O69{)u5?+n`vUoU7|Uz0?nF8q?t>U zHj_x}&9Yn|K8d{oK8f>^48$N&{|w;OL)R44Bk29orm@p_678Eo#75aSFF|^%rE&{a zWoBWf>U`%ERb|saMWGmYrV-jF0E5K|>N`Py3&!fasDef8XvpjtW#2+Oc0C4^HXz{k zuf*I3q;ZwvPeJ%Nb`1}zuxgfkIVyL7e$i;;D<{D}A{mpz55Ya+Fx*)6IM#@TR$xSA zu{d(|<(?DtVHw6UDtGh<;QtI3ULO_^KBma&Dpj;pC7ZwE8$64`bAeno{TSy8|< zF|FwVfy4#h^p=O$%g!8GcI9EDGaE0xWtjT22)^!Y^f&B;&k~1czsKW&=_`zzBk-hk zgWPjYd4mh0sO3mN*0eisqU^^YkNBJ5dEXg4a%eEnbP!Ux3is+FA-Bii^?BK$g`TPQ z$O)09D@lsdmjh?P$Gme~%}CV$6TH*Y84Zyoe(&;0*NLgBpM$LVJ6TR%0=p>${_Y$M zHXnkdSK)sBD}gu@J(Vd7t#X@cN@Pj9i|uaJhPxiwvt+4clcy$QspUm~A)Yu-;GX#h zSTCvIZHU686a!=Gd`r7F$TQZoUN+}`;u2ZnulwFFaV%M%qI9^bca8Ma?wb~Zr#<=j ztL-ps1{HkG-{P5dGaRK~Ogl?I8__2%aEOe^3IS=h6J>u#Az9lfozrMHY#*BToWfAY z5!fqK@ZXMx+Z6Ql=6N=3)G(9i6&aCzTR@pxiTEokHSzDa*eN)bKJWg`Z<*4eDJ zEK)Kt63~VaM(b7*X*Lq&t|iJ}&q-h;Hu05U6Rw_A_{JY<{IRjI@O#t!9o33ri;>OZ z(3>wej8C(g==2&QzRFRC!^$r2ois>>Fxcx>O^$ohz}xW9vj_HHmC~)tY;9}BzXi*+ z;nc>lPq+(aR@qh)j0f%n{Nai~eO)qK&NXm$t{!dHv$KsC**}Io!TcIuQd_rX>x&Zg zQs_2+jH&}mU@rRz_wRmt4D6?mi%eYHAPECh2o%Q>Nui^#BhG1*^pERKAql4#;> oPX9!sg_-2k9i`tcP3?_ytv=>~67~xs@B>w< zmB=!fH!r`=etamv8NC>Xn`5!7oQtE+ebL+zfE(-bI7j1RhwnUPp)Q^!TNy4w za?JJ&9s~6KFTu7>k3Uit$bXkF7;+YC?r^##5lm)YIP;PUX8SVnV@n)%DY*ElaZNzi zXs0^SvD@6nU8F2XBblgHsi$E^Co*@Hoio-8T{O!>g*exrgQMzO*j>TJ@g_f9=nBBv zq@9`$DaZJ=*~_fX-fy5RklVG(3S|-$iEO>$N#xYP(`yzg_&y-Pv9@H?D!FKCxqwUE zfvA@qwe-slPbuOZ^pv426@WMdApJ79i!OnHCME@YJbl*#Pg@%EI}OO&}-Pb+O;gaEp&Q34eIE^w84LK}&0elUM? zl&d%nxWMQCks>156vP}Lzi|xO`ozJ@Wjq%w4%~;8k%zD<+5>Z4c43B-JxcaEpwJHH z1O%iJt)IY}#EHZ?$qjTh1W+Y;<6wRmetCQo$K==XU2X`f61}i4<_OXb?XEMF1sf7q p5)a?qpp0?`-Ty*6w7bsO`~>Dp)7e|{F5LhC002ovPDHLkV1gC$e_j9p diff --git a/interface/web/themes/default-304/icons/x16/trophy_pencil.png b/interface/web/themes/default-304/icons/x16/trophy_pencil.png deleted file mode 100644 index 3990eee8ff826309501eab568f5f11cc441f50e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmV-x1C;!UP){QKPHm!XaA}NI=51 z6W#K$qO;Csb{o^rmpAc?L5h9#G1yuxz}F80(b61(v-P4=4(9RZz%j-`#c7+uslFVf z&wQ3HBEa_l1^nS@4@SlU{dcj|bY;BkymMP-B*~B;AdgwVs4)XyHJrj$r2ya5{0?9> z<|&PHXtOj4#u*EWC~~k-;bZ!uPqnlb>@Zg)yJ#nSv+-N!6@0BZgKZ@O9HisMlnUjgJK)bu(au|tK#_hB0}^l32a z@;wJxjd}9cJBs@Wscs>}cWwZr>;<4*=1apDs&yrzq2cz6Xt*mt?M;s%Y1n*q<`Kdd z3WY09czGqEM1uDTdHPp?WcRfAmqbMSQJ02B8bEJtms7azHt`7v2smc7TG5ZkyIKg~ z2isN?*y;`--3}nz0+8uPb$|ey#MuBgi44A%O=_$k;?T*-DT&MFy63~3CG!T5ZveRA z3qVIXNR`0v7^iJ&J#`GX3i#idwcj-fSbYxnyB<+-C5J4+)ZcT z$!#7o`1(mQDhq|^V;koIhr^kR0~}sSzp)OQjMBZ61tJ&B6)s1W*cB_Ki>Kk7bBj=& z>O09i%sY3@qgqPEi(du$GO;JB45NL?=R>ZfXZDPFn0JP;`vr3_+r8-Z@mK%=002ovPDHLkV1gu_ BomBt; diff --git a/interface/web/themes/default-304/icons/x16/trophy_plus.png b/interface/web/themes/default-304/icons/x16/trophy_plus.png deleted file mode 100644 index 7b351302796d82195d726328699a235f1a8195c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 858 zcmV-g1Eu_lP)_E(^-=OPYvit%Mr0uE|par9{%_B96Jx0X;GY7Mh?UE{9=&ctL7wZujFIzt#GuqMdIXoMKafHYYQKyS-6(sRQ~hT z1tiCOlrLm}*8d6q=+Oy~W`W$ha>P_)v`hXT}> z`VY`G+CzJ3hGu^kKyEYud1am?&P}ba5`Gxeoj^kkAGIZ`K1gDxs}l}R=LO}sfp^I) z2+nnduq@Yq1=-sj@J zaBAj9H-$$J39#EOBBa$psi)#^fuB4OGz50IyLf7pmzOQTp!b4*fOE6hDZ#!a6+bJ0&aAD8v5N07R+4hr2JCzwWpF07*qoM6N<$g2Ew*LjV8( diff --git a/interface/web/themes/default-304/icons/x16/tux.png b/interface/web/themes/default-304/icons/x16/tux.png deleted file mode 100644 index 2e6d9d85143278b2362a0ac631ad8f5b217f1536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmV-}0(||6P)`LP-Tn5vGZ)fEdf*G^9M1im-}&7V040UO^Xx9i z@fkr7;ug!gW5v!D++>Vx(6*=FtAlc0lJ}-4h?y| zUg$$rvlJDHL>$%Cn{+_0!cWMuf&d+`xmV@6nxZX-kb+|+ohG)8pWEfBjP!lzr55SOjas<6*a7EF2eGIJEV?*Q$o7CLA-Lt dEtbyr;5RbBZKzRs_OoDWsxb)KAsWrLs9)1C6YeZ7SxBS&HH7mZ@betf**~wvD;9 zEzQtTno1UFnoP?YMxUfI2*HKqrcAxR{z{AlnMEHSI9$%}Irnn7egORbhZPTVqqiw* z`Hbls!mUvAX;AX$E=eS-`mY41A{j+@M08T0#=u>QTPbwZB+`)2-9m&B%nPduG(sA5 zR8UQYYJ`i>aWRR7bFmB@kEBhlDyZRZMu(;xMhJ}K-oj4uOLH0hn$55Q? z?^95p&Yqn4{s~ik8hq=zh7s#|j6Jym=hzU;IeVtw>vPxp6x@`A_Bsb2V8Y%6_d7F% zWvO-!nQ<>8-0t%UJA|fn!TWO!Wu!9@aNC7S)2 ze4{*&-wnr?X;{ldu#_b)u~@$v{fWSY=V0*epJDRqHZBt|1=ckI305gPsTZT;ZWzab z0tX;}17yAcPCf-HUIMQ_y1^FoVG~y?r^Ra4dIe!AT5(*e8chT9s2c$k{RBBZ1X<4r z(pw3RS_o403n*=;L{K?X%A%7)ieG;_M0FC!u3=TgES0HRwuLc^ zJU~@i&DwH W->LPo+T1Jv0000 diff --git a/interface/web/themes/default-304/icons/x16/user_add.png b/interface/web/themes/default-304/icons/x16/user_add.png deleted file mode 100644 index 6d84550327293a4fc45f2ed5bde73a0c333d31d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmV;m0!safP)zr z2@NVRXGQ)9eE)=*H%5HzuZP!h4U^Ar!#_C!B6si1SgU4BP(fqH{z3oyc1#aDF+WOB z*qPivLg1lFFdXy=yQQ|xQO7k_q97K(hb;*Bo-)jTw4w8IEClhnPk18p)-?q@2@%Q_ zx8+5MJ@9>=g`+GL_OcWPI)6R!3lT{#!4W>X#1)#htrBogIyQwRITVq}gP53_N81!o z>;v-N0T*5Y=X(IHvlGQe1=RJYAip6Dh)WJtE(;FGn$r?b>){+)g2@XMyd{x4Kq9-3 zL{=9GrI|pLQ;BE3CX9Y_!_cpR+#tY_{P0>v@S!|8NNLofQh94JPB8!_HM(jAM+^D5<5ofERxri7KE>(@XeRA> zVU<^_xqH%FrpScWFMQGCIet>d0zc8YAdqJ+%4(xg=gww2(~;gU|G`F}F4s`}q{sdj bYv}VoMiHX}-A0R000000NkvXXu0mjfnFKYo diff --git a/interface/web/themes/default-304/icons/x16/user_comment.png b/interface/web/themes/default-304/icons/x16/user_comment.png deleted file mode 100644 index 34405692b2adc733b3e6eaf47959a739916e7e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 zcmV;j0!{siP)g|LFEf(%Pq}tY81Ml`LaPK`IchNl+>A#FyC_v z)2VYBgbKA3L``!xXHw2g8#*l0aQFN>cj6+s>%fnD&f)xj&*3?j2Y|N~QNEr}si*v= zzy;kDAD#vjgNMtlD>E1Bd9dr|BRA+Y@-m|rHaED?NOB=}?{m|S3BUf2+) zs|=jg_e;uq90z7?1Yc-y>N|mHo`LZjgR!p+Ml2hG0`(yNdjq!mG_CrPhR5d^jMDJ1 zg%#Kxf{dDXe}f4}`P=TC^v-%5y4!Y3mbcFKfR$_x_9nwKj6=%V1Nj-gR2l3E#l`I? z66`}_N(MxEI!DK=^dFp}r5|gKHQgWm=M{>BJUcb=3+Pcqp+I;Lw*z-Te0(SFhWpmg zgXX!#mCfKPC1W$^6qH8nsh%;Yu{_j-_b(oxUnRp(%Oj*@Dn=@GV{GszMY^?T&dHS! zLFzKrJ#1=}@VNwk Y0N#k)bQ(-0DgXcg07*qoM6N<$f@5qp5dZ)H diff --git a/interface/web/themes/default-304/icons/x16/user_delete.png b/interface/web/themes/default-304/icons/x16/user_delete.png deleted file mode 100644 index 95792e2bd515fe3eb5d6fef3112cf34cc6b8f1c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmV;*0yX`KP)^k7>AX)q>HU>jS7tAO3K2%sGlmawZAOqL^9AaFH^CptWYfPNn%P1LoCzsHiovX znO5T6vdGHBS(XTWs8Oy6qlM(AsGVPD`yd9QLI)ns;f3GxzK6qc0pRjKEL%(s*ji8~ zcApg_#EMf(Yg*CaUW$IH4E#w9gTJlv+-h~T0$goE_J%|v#Pe|c3wm5hT1 z8dTFzsmuWvS3(82aFmBLew?XQ1*L(T&{dTWOQ#xxwdpt)BtV8_2htc3k`Hm`wApg^ z6$Lf1!k;tWKVa%b6~6Xf$EcwY=JuX-|8rO z=hP(2E$UJ)q!36i=A zVjmJ*E2_ju<`K-amw}9T!KTl^P@3Eu0SzMsR3qRCB=$5cPIR&EyKE&Engs9{O6!+Q?-3*-86GUnWB5Dcx z=-9;6f~D(M;dWYgBTm74tt!Wq<2|oXl*|Xj_d`KPPgp|h2_dHI5&;^Tz32if<+GB7 zZiZ!9dlQy@;C107F!0x$jFvwmShaj{7wfTcfmH17#EfYP2F- zD`iuDLqw*BG2)#Kam9|XxN9KWaUa^sk}=6=qqiys(N4yQbv=UX=S>lDhPYOn;Hkf3 zpfbp0PCfGpi#=tS>bM6n_cr7&bD@xnz=ICfg-9^ zx1#?MW(S&}8scba)U6dF4)_@sU#GhmSdhE`eokRt@&v*>(#)28n9{J<{A^S$hkhC> z165GVnsun&H$cF)#dm4S=IXZ=OuxPhmGmh##=0S`iBRigV|R|e5viVbjMNF)#4@-^ zUT946)X|>j0)>o)O;tBkqc)rb4Abuzf8-#j$1h`1mIPU$8)73OQ@37WFxg^bmY0CyY92!PKv*lls^dZ0c1wHg zw@}N&urd*d1?@>jN-kiwB_6^!%eAe5m}RL^wBJEML=7@Jl!zeu&-EXLy?Nzn;Wk(m7Gt%q5Pg}>sK06k2Xe0B z#Ko5Oo6)I<#SB#uG>RE5mz(G4KVL5fGSQ-oA1^%b|M~GeFT6DXYW|0^MfyO! zh1E*a9$g)rS_&4mWc7qXZu={NULn2Ob6AoO9GAjhp!=uSt8}qpXEXQ;*TEV|W*{;q#aukKG1b(Cmeyfy(z^ zJG7&!AhR%qUz2@Up5m~a7{t=6FjDggxYQKhhUo1T1rC)cmzsV%3b?9qj{*_C4cb>Je_rh~}5e^li6Oc>Aao`R!Ez9!cMc9s>$Te;$HovPj7 zpM1i&&sYLK_5tSReIOZ`+PAAjAUim)g`98BFz}siKra3f!mXzetRoOCLlACo$n}mO z*l`3TL$Xw3@79tD$VGN^9OK@06&7%+$`{>Fdd54ShNg&d12CjbBd07*qoM6N<$g81_r-T(jq diff --git a/interface/web/themes/default-304/icons/x16/user_go.png b/interface/web/themes/default-304/icons/x16/user_go.png deleted file mode 100644 index 868ed2889b67e68dd5a75d061add3a5dd4918804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 740 zcmV5uN#v0Y$>?IJ3hED`VjNuS{PobNYv(f zL9fF7c$e`lSFqtKcRP3|H>pzH@qN4wE7R>}43kPc&UAQKg)9ClV1%eB)|{54 z!<;@$zh8nTI~?llFf$wVitKzA63?0PGoB=I!K*ltX zru0E-vnLW8Pk~>55;^S`&^lIyOzl|&RoWPR%4im5fpcViMBsS|v?J?~PXVdJCJ6gY zNNGNeClfVzq^~vy)nigf`!dluEP+tThDQm-=u&85K}_U0uFvbTP+hM>To;hg3Gknq zkU;Lc5w7S-Luq#kiaQ0!)A3QzkqG%fAz~W5;gCzL5>sL)(?U-Hq67*Q^)7?g21Kh( z;MF=oGb)90q#TVeC8!^|O-hm>8z_K4$$_1iczZ}h>?PhbrHb?-2P2<<%jgl;5B@U~ z;z`cQ>=9gb1Ob&c@G7GrR^f@7=Xr>4X2Uh#^0Tdop!~eTtUAf+=8YojV-Y$z)34zJ zE2wpu#co?;1!~vq{8a{~k7C|A&vNZ@V*pq=J0{8So=v}TGsuy@9L?SdhKShpYySth WZI9i}(5{XE0000oln(1K z-2sDwT_n+s&~docs@oXd#X!5;jKZh)doP5+a77mn?}6v}@qc)E>j2dKkJi1s;4t3~ zpW2N`M?D5k3gBzs1=g&)|5pGX>xxCR%@{j-6gO2nFzP;nz77H0(gR?f){zYXA)^?h zwk8aa&<)ce5^g}8ISgONUKm>UR5k>hKi-JTY9Yq2XfVQ_fc;n_t{R(RZ9fR6Z6`+h z&TOv<7*y_CU3`8Q#rG5V{`vvtANAwwvujwG9Ya*J|L3QN7q`>|Bpj{pN^_G~E@ZLt zaf)b~?o0DixZ@EOYF22I`?gA@((HJk6Xn7^tbTb)welf@$$?IY#o{NT)91FW3s5SR z4Jwt2Q>)cTrBdkW>A}PhL#5GZ=$%fdfw6C6YY$DJ2iu7F~f~f6`;%S8 z!n~Hkyqdxs&BBb3RZ;|W|ZFeBB!929ophn(3ax;&Gx;&u#Khwow9puxgR6+zAPtwt4Uc>V^rM@U!F z8-p&N9<9mTi$%j-e1FryurQ(oox2Yw5>JlC->%)fsvu2CZ;GwTQHB(;G34liv@{5f z*G@4k^>tG%2rk@?v*j7>skD6S3PGwuu}*95ki^RNW8ilKdTkYGcqc@)F%8lI0mM&u zxHFQ0$FnkoiFYBQMA)3%Si8X`NUkd^PHH-i7PE+9DR^^GfU;-tDAHd*es>hI+e1+? zlmtmX9|>|U;w!VNT>?`c=ht+X5Z8Opp|qdJP~3Ns8RvCHBCCyybX5@e^+%DZ35KON zAA^~`KU{)WSACsUorn}1!7W273C56Bqmla{99Ohl(nb(T7$i^mIA3`XHhlqxv;CYd z!Dv%TjxopQC%-Nb(bCMtaycwYJn%Mm-i4Hpq#~DAqO&*_@Z&f3I&a5M&m8_`!27|KE8IhZ6)K=zmysa_~u< z&QVUlRmp<$1`FSc2hWcJt>&DM8IAWjPYwBu;vla)@4Km6tv~- z_&GiH7A}1&zUv;t@$mqhx-*!uD$!lc^9(f?ga#BybNB|gK?#Sk1KvTBM#a=_6A9`0 zBxArUG!~o)e|Rpz_Od7uKBEkCBb^N1fv3=x?m=z#-tjxRr#7uBXcQigmS4=!Sj3_5 z*?VEA+J`RDQHJH(V^L#-UX$ggy_e=6;;s-#aFMUrx7GnuT41aJ_>c`~j)8i% zA5=RZRL@CJpPDdQ9gYVVGG8?09p?B2WMSr`nfq)&UqVyN1ksfWs1revu~=x~!YkVd zsw*A8)XA{ltVZ1OF9IrVy$LlSR97_iew+1sao+06DnauuP804{c7sufFy>p zR7YV{!odj5kT?>in_Q~1FlqK(*};^_Hep1--}o>523McHZU)3qy#N3J07*qoM6N<$ Ef?0Ynr2qf` diff --git a/interface/web/themes/default-304/icons/x16/user_red.png b/interface/web/themes/default-304/icons/x16/user_red.png deleted file mode 100644 index 165bc9cc2161236edbb1e53c44015458e754e00e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmV;J0%!e+P)FZ_Sc^YHS900{XX0$ye+ zWu^JTMKHwkpxYD%b?ic@Wa6uTB~YtUiwsm0EZZVr<|r10LmMB4w78{E?NyY`DbTY5 zT;PH_E~NDm4vmnHeH$adtX)jz6levJq@^+sBdr#6RvyIe4Sb}=E`cI;8FsFVM45Ki zf}nz`J`C@&XB660%oFbh!pwZTTlQ4ke1JLyn zXsQLSRDe{R12GrEeeE(x_bYs181f*2Dy>VTLj8iaEsT+*%Ya9Bd~iWjT7VKGa5^6- z$Oeud0J&5GcZmr<(`4kXh(7BV^q!2GaX!ogPMrWOMLy0H_|Ez)AUgw4E8$j3fGicp z9v7l3Cwkg1cxQ+v<4=tsN^XU!au6;^JY98%K{We8bVuOkCh&CsA!p%gGr^X-iueWn z4M+8M{mS1noM1GC2F@1;WQ1nmpcwQP#!Pb=)2vtcY*q8x<BS+!W^7|W3W0000OEKL5 diff --git a/interface/web/themes/default-304/icons/x16/user_suit.png b/interface/web/themes/default-304/icons/x16/user_suit.png deleted file mode 100644 index 44d0db7d5a9cc7ffdf9120004e35c2102149505a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmV;o0!aOdP)tIE%T2}n4sA?R7i3UG(nT2RgD48i-B7a`P_RNEWky1rp4#|V0;yP3u1<-9Au$Yk3Jot5GIj{E8C~b@H_iH6E9!~!U|oAK!Y{BgwiK}Q?2$Z$ zwUMKKfu^Aa6lm+vS|~toRy;&RGgbS5GvzPAm$yHTFR+Dg5-^KgJM!ztEL?RD-SlMm zBa#h67<5fwN|J>XjT3r@55n3puuHm0Zl1-+mDzXs1xdwLUB<(4I6R9;(7M3WxgpT^ zVKyTP^Vw-gt{MQh%!yRPFw`BhxLiF%^79(1{DK)()UPF{5`=9Ax~_S;NvLsdTHKTaczW^mAlDBw~ZyG>CSr6`7 zJdid_p|Z<|#EL$w4(i}3K1})rzUDi`G;!$XCF2O@P) zKq-aR8l}{fipV8!#avnIe~KSKX18~V0wi>0+TW3d>|_66Vl&GDBv=-`aG zyP-cMkvvf`GjT z^C*>w$^sA(tndI3tZZ?AbB%{_i?<&Ru}w1yY&05E&8t?cV*n8uKOQOG^;fa1V^RwX z?E7~a3_M7U0Vj@ z+9I(aNE@P(VNA;&^qT38jQGy$oyYfmEo?@IS_mFEoO9rOzw_Wb4y6=(5hr_;Jp=T3 zJRStj14t=RN+G4pQz67Z_OIS^n5LPjs;bfecJ3qV|IcRqNF*Y3rIhA!xwttcNLlMF ze|&*TZ{VzM=AgHQGwv_=d_IEXD_C|4Ycqvqr+IMEhY&*3cUEnmyG6!)!;ff`?+X^H zZyJDfI?c6{#YkD08w)@Pfu0Qj(lu>#wbs#Hp!4$W3=vJsB~DCC)Wfs)Ll`ZcJREtl4Twgg zBoYZKD=TSiY^0>5BnMnroyX;H6KK8!z|~W?dHimWj2uN5LVO5^!_7hnIyyQWp-@Q0 zVzInmx4OQ}tQjI=P7>_7OaJ%-2kxkjVcbG_cXzpu0P1WmPVe4Y;znw})~ uZS{s@x94p1disIOKq;^e489sLgMR=cDjvp!qP@+= z_xEUL2VZLs$HV6tYWP7U5@B?56FXnT-YsJ19bVjwAR?wZ*tPH5Bi!^SmMn|Ktc@O< z1Hf?{CN9T3)zy^&W!0jlJq$zl_AhY!1Zr~~B_hdqJl-QB^!N80v$L~0l}c4!Uvm)q%Ny!n z-KMbn8ync(GI1LNu5p-eoF48N_czv$oeH^1`BH3WT^3hOaq{}UaoBgB89qI_lS|(+ k#W*9TUe@sV%B1_?54Ph_K1q%rKL7v#07*qoM6N<$f@~rfeEFr5@BIy z!$QL7C^};3ziEorn3;B}?X-CF-kZ7iSupy~&Ph(rIXB<=&Ua376~}S-AJfw5^abEB zfRqx)agb6ja3RE!_{Z-msZ^>E2n1As`D%*!zhW_u#bQEp97lD#-CTI)&65MiU7}CJdZQ?*Yi? z^IYClij*aP*8&hipcM;%eC<{`Hm_ojuF=)gOH5V&0>j}j<+6`Jwg=VQ%;>jgxT|)f z2_b$r7bLGUE77!RycHEh?d?oWnc)3R&>EVikeHyf?kK+CR57byoaL0$^nxqgrwN>vu5qaR6PhDX&<8x3YFl!K$)Z`X(!p{z|H9bqm1B;%nH8mA;SeQ5bzUh;($4zVfCXc9uu+S;l_A`!fYw_-3yulT#Fy#!(#=z?-9W*J1Hw`B-!)fhncfGo6mRm zF2({ZS>Z^BKiASwt8Hrv;<&9yE;Dibz?Jt)CKv4&bVhQ}R~}?@00000NkvXXu0mjf Do#0!r diff --git a/interface/web/themes/default-304/icons/x16/wall.png b/interface/web/themes/default-304/icons/x16/wall.png deleted file mode 100644 index 8a1ea1684ba6f9bc95b388eeef259f70131ca071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmV(YRea2{drT&GP+4&LMpvp3w6?^kR9NUsRA6hgw9qrEl&ZZ!ABxN!+9aEd!m*tE+UpIVsBBQ-c$3Jk zP^mNM^`XdIWwb&4^dUu(CEC%6k2KAYBopoA$j3vPB1;l&gQ(AFoxJ!aMl_Bz%jqJH z$B3d!&9S<;iDQhTNLwfJ7?q2=!nUAn*Z1( zE$^ml)Lv%rVykH$U|w~r3e$WKv+)jQ^B}kN_RZg{IyEQB1NPY}=aZjdh)dts+O5wB z!wdL+sI^+wLdSVIU@M&eKKDEXj-&0@cHnsd9LLpawfaKG`HK;I#rZ%UlFc*tvs=!M rU;p;}8CAepxX+HIwq(n>Pc`QidSKO!PmUd#=#C2419Rs_kBMSLI9BeK`8ZyELWRY zCQWVithm-_yhg3I29~#NY^!I5u)MsA#l*Xz@1ZWzOFMS-g!(<V@Q1!Ltfq5U*lU$4V#n2ybu>)V(NAfX&_1ddD+Y?yq9Y-tVHi~uixr2INMpq?P%Rc6eUvJM`rH$Om;f_A zdC4AyWD0_i#yHQTwU!ibLKFo|@)3wa!sesy3G1iq&9S$YN`|#z2CZz*a}wCsm6l2l zyKC-YXRQl-vZj?G%kzjvucMXixe$Z)NP}FKZ5K)#IDPjsV)JYEIy+0eoI4)lr?Fjl zI1HY@0zP^fd~Dh_JUW8Fowq3b0s=Gd5E68D!4x^bakVG9j*6-}lJOhR^#@Q@9p`e- z5s=>C#O+r&6nTiy<4xp$!0x(_kG>#19QW+LqCk@*$JAH^ilRZ1WSpveL*_d$@&!2i z@vrDt;NY0~o9yGbymd)qJ1^I{%5mPOjPGRpXZO&;7SkD2wvOG~MDPQ^=3PgF6=FSZ z%YIAGzw8+*e>(CKU}INMzSun5-oqU}Lv{xj3cCii_ttpcGbr2r9}7z0g_?pZCjbBd M07*qoM6N<$f~k}vaR2}S diff --git a/interface/web/themes/default-304/icons/x16/wall__exclamation.png b/interface/web/themes/default-304/icons/x16/wall__exclamation.png deleted file mode 100644 index 96e59b3234b71b58bc0cf3e19d095ccbce374d16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmV;M0%ZM(P){odn!!IOO7=YK>JLc0PqZ2CWd zzD;|7TnMdqXy}7KIQY&NLhBVmV^jCX0byAdmSq75!X^ZA{LKU82xI=kWkOCOHur5~ zppc`Wu023j%7NurEVi|3kqpmO)-oX+cP_S(AHqpUqFFo|csX#}w(af1EX@9^0N`--IIi2ruca`Cb!MXx>a_RqB)lOR1{S@$8Qn zh5`7pI4I>8;}hc~;#0_LHt~sZzJB>cJRWDwc8QM0kXAL?< diff --git a/interface/web/themes/default-304/icons/x16/wall__minus.png b/interface/web/themes/default-304/icons/x16/wall__minus.png deleted file mode 100644 index 4f4dd35be97337fbfeaa1b923095ff31f03d8eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)$+x|Jv`Klz(wC+7rlz$UxR z`QTHxi(}VS>f5i;?H<8(yNM4E9>Sl`oeECvpnZt4jl)cWht9aSK&Aw zEXz)~g**6NDotrH`pIr_-VukylQe$goOA8-*wW0kAL4WW`qv{yLnf}YFel{y(_FIm bs=xCe0HpAY_Q_7^00000NkvXXu0mjf%f|Tr diff --git a/interface/web/themes/default-304/icons/x16/wall__pencil.png b/interface/web/themes/default-304/icons/x16/wall__pencil.png deleted file mode 100644 index 4ba4414a70fafe5a3fd52e3bbd19dbb98bf50692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3vGP)Xwa%%0(b=Zf;|3Z9@byb+s|_xDMnVa+>)Xfm0FAZjnU^1Va}KY3!=WD0^=2O0HHs=iZ4wNbS#7c|uC4OFW&TVYwl zPQ8vswQB1jN-^pt)z~snS})n=lsF7y9i`H$O__^h%P_EBD%rY;R7O7cxSW`SFgkJ9 zddl-L$Z{N`l7zjr`NU%+5;7*FF%*V|@$u|AT&E*T=0`c67PpnlhPh!0d$l!BD-ds2 z-YDCm$r#k}DIgj}-r@Xa9^lLAdIh=MGlW79u~%DjISl=^j$9>Yd0vrl>&|U7n@vaq zS8kFt@lCQ*oY&qI zi&)h(+x+Y!6pJg+w4$Y4h~P!$jMc0?=|g%UWaXUubk@oFyO*j8T~Tb4BV$li9g32J zmXWZcp0}Ex#`>@rAG30S^J8o51m{`vkVY#nKf2Ai_igvd_74m9oj*i#c-Z;#!fE#x zk^j-Y$jsq3b(lK$iv=A^`1KW;h~sl`kX_ri-m%;J&w-IEj#o1Q$EBgczi;>rXA076 TSt>y_00000NkvXXu0mjfAPgd!q**o) zx0{I7Zdt^%3217L_UOfvN1+}(2nGLw$C)8n0y!9P;Kw}kzVpt85CG(V5K2Q+%#${r zNn2laUU=GSeL=nc89aAg?5oZT>hA6ywzqe9L8Z|_LSw3XD9tza8*p2$XT5Bq(P+VS>z?wu ziTy?cE!XvoQko}pgc?rML8Vslr1UHtr-n*p%cG~VXgUsRm5OJCQiIT-Kdx#iaI^D| z#jd6^P}MAE6$PDMT6+OaQ!%g1K~qygkox27PZ?h0U#nIfcHt#DS)A8&@LyNmsd_}M zeTUDo2ZBY*+C;JV3W>xsbh0?BNm%bK6gP{)b>|jNy}p2nHL zpeV~w5=&5$i^BBGJ%p|Em^oZRxI8ZU?12SxMw03uY#Upq=}E6Vhi$)uY1+b#jY*s? zjpLks6?cB$$Jvc5!oY*!?<68gpWYez;C+o6jf3W5p+5$upnL%MW`E@tRr35bJ;prC_`pok(B6>bm*oy5UG zaT0Y@ZnKX5EwA@U6H4rG+Q5^0zvu3STMi`A4mis~8FT}6ngs+~kCQ>@uW*y~Fr;Jy z8d!N8o8L#Z%J=F#B_EkX%f0yJ#mQdM<1hntGdo4WWG$?xQJ1yZM=s$N_6MLpE34F% zO3dBD9BrI*vD***76g0=N-@D)q^J0`U zNgF3!1Rc;1uFG3@I_6*`LmMYu%%pHpNB4-ShMXb)M{+;icAxV%(D>gRjY4sW P00000NkvXXu0mjf`mCY@ diff --git a/interface/web/themes/default-304/icons/x16/wall_disable.png b/interface/web/themes/default-304/icons/x16/wall_disable.png deleted file mode 100644 index 12b9dcaccde83fd3bb0ed010d702bb21bd9b5bce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)z=NadKaU2~(*`izjEb9Fz#>b`oDkOy8lW{ zO#S!`5ai0uEXjRZR#Wq-xw-p)Qbzh`ApcoTan`f^!n9{Xg3QGP!a%Tp(V|uV=gwUU z#>u(qFBWZH^ndQUxnRsJ&%6k)0sPEdmDNRM|I?Gw|Cg23{m;rT_!^s@_$n|W^aF@y z7T~JDYk)K}^X3)Pr~fa@E&M-y`uzWsC(j1s!oo^0pP5;39$o{an3=nQco#o2=Qd_$ j{!LhL>mX0c17ZLGIa-l$grZ9Y00000NkvXXu0mjfT_UHz diff --git a/interface/web/themes/default-304/icons/x16/wall_small_brick.png b/interface/web/themes/default-304/icons/x16/wall_small_brick.png deleted file mode 100644 index 7293179be7952a688225f246dfffb7e08c2e782d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`*F9YvLo7}w|M>sko>_H9Vu7TA z>y$(_f%%P(W=?jMG&u4>%D}PZ;hD2r{`?QWbm?F7jlW7f5=j-jF9g$O?7VdI#eWv> zxBnf!NlLJNbbO>xxrc2Fr{SEP0<*u>uiSgDUZB>>OsprdW`a!|vlNR&+PUple()cD z%jWfe;!lv`kWYqlEQKV#*4HN}NcfwF{OCW!e)6&Df{y8l&s=g>{=ce~^xx5h=kO1Z z;w8m~b8fzT_J4nL=o9;nd#|3c9W$`=kXz5#xQ560Z-m6T2Zt1XI?kKIeuROc$8g$v U)x#fO0KLfI>FVdQ&MBb@0QnAgE&u=k diff --git a/interface/web/themes/default-304/icons/x16/wallet.png b/interface/web/themes/default-304/icons/x16/wallet.png deleted file mode 100644 index 2632217942d22dfa0ddf6ada7dadddeca907459a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmV;*0X6=KP)*5Nhz^Go!m07|d&dFsgVnRsZdB z%!o&WCFnIN#kD;X@WN%ljZQUgb!+(Ga&%?$0W%sP?0!xXp)+R{?%E2)!u1Xn`Xwa> zT5|Aeyao>k^cd!wNcVR*a|$0YsRqJsryIlqn!ahti{NQY$C2E`2u(6zQWD<-XBH4f z^~B_!f-^wIK)gV)5<2I8+JzD-9WXx7PBIF^IiD(vR>35!O+>PI1!$}LK-#Y5EG)g6tAup{pLwcE=K$Z)!6(K#uI#O zcc3ww1cft+2_Es~rK3xp)#c-{Z$H|KlGWO~oiG`+;GR7dy%i=Id;r0nGT@4dn0RyD zs+z_Fc^L5QRR^QxDd?~!BT}*p&o36>QFRW6qFvgH@RbrYEQg zxJOPvw5MrCGlxbOif>H9R2hL|WFDR0fWq)NuGL+@LvOZv`$gwd*2q`b2X`WgB)tqc z^x(^n=C6Qf7ATwkB{T=5d3zVE33AkBhMimN8vXTK4A7m5lFoKlTYK`3 gkku(e=wAYU0`181Rj|VD`~Uy|07*qoM6N<$g0>$X>i_@% diff --git a/interface/web/themes/default-304/icons/x16/wallet_exclamation.png b/interface/web/themes/default-304/icons/x16/wallet_exclamation.png deleted file mode 100644 index c6e0ff708ad69420080133903c3c8118e4cc93b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmV-;0*C#HP)fPo7+|L8f9hC5|j<=Wy9 zK{ObxFM?G=j4UZ6Fj4V&of^Z+4h0vohz;qTAK%ybtgVkm1F7%2IDiA`(yr}XbHrNFZ4wIUy`8r|9p4Ee~_Muwm<_q&B6E#Nb*R7FIK$0*zy00 z6eAQo8RP<6hM5elCJZ2a=1fQE|NYe-7I5$%5f4{fv|H=NU|F;#{|6iSM@_z*|5JB=wfjC+eXh4ZN z0|=klQ{f6$05W|+tQHFHc9;I2tI39fJ=qz~cyj{7pht*-Ay1j%49Iz4lN0rD;^oN( z{|j_D!0JGHfG%KQSjNCGa}Eo`*Hz*?|5u1|Be13@*hQ<-jKOga!&z#~z*sQ+pCG|- zMv5J1z!V0COW)(-{-fh=CWf!x96)E{z*g)GOMu$t7@8Ou=GHPWTtvqW3=H#t3Z(F0 gaUkYr81UQ(0A#2m57Sj-D*ylh07*qoM6N<$f(`5AsQ>@~ diff --git a/interface/web/themes/default-304/icons/x16/wallet_pencil.png b/interface/web/themes/default-304/icons/x16/wallet_pencil.png deleted file mode 100644 index 0094fe55005b6fa4f083ff9fae70951e3c678c6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmV-20?qx2P)qj6L5M~2)NN}4ijYr!xC zL(3^5h$)C9gh4M36&Zy60lhDRz5I5b6A4m`h6g@eF86+)^W_`@K$}6E9`K}?D14G4 zicC<1vlMh|axGko&yT9(`V#UYTA!<*oZ&15iZr=8RE2jv7vuUkcokz_2R;m30cRe& z)PVkcP4dST^TIzZw4B0(FL#3wH*isedY#0i?5n_X*SWvU+%Cj);|X1xH(}i1Q=k$( zc_hiqAtt%vVq3|&EdqeyVnz!^JWnuzYOB2;z&^UcMWy6MD(I>Z;XM=-8b?ovxv#1j?=$?@bAa{ ziUP!9F|-}uhtbkB44mDAJGQMGoVSqlY*T08&mbnb-lUO<>AobyzICF$#D>Ak*%+^J ztb19P1LLq&H{gtFK(yOJ A1poj5 diff --git a/interface/web/themes/default-304/icons/x16/wallet_plus.png b/interface/web/themes/default-304/icons/x16/wallet_plus.png deleted file mode 100644 index ee68702740af25dcd1aac8a1982b575fc0bd12c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmV+>0@?kEP)Xe|g4kPaMV(w!m_N)6ZI!>y{nytz?^*KMV`ZTX0h4%SEO zF;qy32J%QKY4LsEso$16EAZ;t35--F>$xY5u;g`M=28}(G}<}11m1KGxM?S$R{CAK zXtARlPn&b~#$a70#$3q=oXf!5u1dVTT7(5YL|LC__3<3glSM++JhsCYOoH=%3T7LQ zhwz_CLi@4E5N9obp)+Hdy)Dm5%WzsyL#4=2XA(i?m%j|1Ae9t znQ`}Gx6>!AsQuxAEs%&bcKYs7-SP`hp}zYa*E1vd7V_avAZ4{kzA18#^G=P&+`CE0hFsWvEFBhL_1yYBsoZk7VvmHywmB7*zI-;3&`&hCHzR?{bi<1 zJ6$i&*W^;ERF)*^*=#nCz!|2?xlDhJo8Ke0qje~rZV}srhcw70lWEatGy+`XedXL8 z6L`oHp^(C{S7F*a2DH4$t6X-C>fk9ypkV^Uk6h3mpCwf}7K@dwR_h0q4F&^jEUDO| zLUxNkl$Ne4#xeOfZXsgJgD5^3(|2COSU^bh} z=Yj606Z$f+eES;2s)XT(Hnu<#JIG+^`S!01m0YMADH2sa;&KntU``!O-v!(IQ!4g1m1eH+I5 z?xEp~88hVk{QT=`wHn|Roma`*M+g)BXc-F7*f-!pc?s|;C+3uLX>lIJ1`skPAS#I$ z9K8-q$sUhK==J(PEUQ#1xKp1ke^lsi!8C%+2mv3QudCgVT`rd_)ALXFr5w0y-<{eI zd_EO2P{p6w+E8T{_h+oLzqp# zcrR`(+wJz$*pYrTCt{`1ziUD9ZPFCwTzZ1QY%1Gqwv>Fg0kb~zZS$`#+*+xqs1Pgj z^(&me4`LRPDOXihrDQ{a{98-nBL-=8{+ghgSorJ^u|bW*^*7y^E?ceEl+4B9PDHvJ z_vb!VE`6FlA)bZZVmf|I#3zm}ah>1uz5^^`A&4?Pz@WI9HmREf$HH!}0_i z6EjD|XzwnG-}Bx*M72WRN8}NE=^6)SBbpzJUkk+I7oAvJ_R5i&l~jvQTd<8A>?aNq z-t|~W6cAc>HFVN-o@#A`n7 z%S#(k6bA5fS|myvDy5?|BoYh`p%775$+m64MaE5$DM7P{ZPP`NEMo8hK0v$3s+3YH zT0|7Bwgnlbt$m1f*OE>DfI|0$t^(~YerFt#xp`dpac1t^@8ryc`om1cX{HYwHD9-x zepohB>e(LC$&T&t$!wSsi9}~C79(BPNeQ}r-r~r&J+`FE{aR6@g?yL{!_edL_+&I1 z4ciTl*14H+IR5+VQAMiUFHP0L<#M@VS=P@`C^SUx(cSIS*2TC-uXtehDV@E0!2|aV zZU_g1!TCTSK=cLg>vsB@>H7hj$D0^?g&vOFAz35v+Z`Uh-9@ECriKY%96m~&dCb*t zp-`wqB9Z?R_WS+xY_Z+`sC2N(iZ{=hHj6Z|Fj))d^Laar>pz;Nk0Nw`@9 zJDf_Tl<*wv5Ut{Hsh;dB;bbzYg!|y-h0;GXt|$9)u2;gQX*PT?S$AO>zqE+M^_HCp zuE7IWxEs3Q23&WZd*KRnfCt*(GT47Z4-CSLQ~Ti-=+1QV{3dA730I-rX>#ctEvWsh Trel;300000NkvXXu0mjfF{%Mv diff --git a/interface/web/themes/default-304/icons/x16/wand_pencil.png b/interface/web/themes/default-304/icons/x16/wand_pencil.png deleted file mode 100644 index 1dfa9452a0dc64a0dbda40fc2b74dc1b71541764..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmV-c0;&CpP)&$&4HAPj| zAf}XBu@({IHvY8MVtNo1FCIN8;=zmHDG+bZd22~_yQvR8=Di2sFf(r#0zQP&S%g>9 zE#5vv_^9cqJg&|otUS_LxO~nBkw~N?7z~0aieM6ryqQIRZ5}lq`T2gy0fmeY6h#q3 zq0qP_Nj^P6wT$f;B^G~wJ;`|F=Zj}ra=l(>nx=jBdcAw$C1p3VH2bgI>J;|O-GtSr zcd+NMf)?5BcIRC#7r-+0YvkQygbx)|7iXyKOK@UjKkzj|d^gHN{hjb>0l`uMF-pAV zF*k-yIh)Ngzu*6d%TA{gCX0eTRH)oT6Hjg-%#`3*VZ0@0G8tW_{V#{Z0XL}hA4so7 ztpV@P$iX25W7+9+x+(KZS(ag{yF2&|@!5Ms88%qDoJyrk^0o5_(P(t{DM^}O#Ugu- zSldueCX*I<=>hhI!{Jn;(O`pJUDu}p2HVPsM53)+xr;9vKXc6E@l4q5_CUFv9FNEU zE8ouJiqbFav)OD=UN6UDF_T<43Kse5X&4xm1rP+GDSNoAs;WsoMDv}?gScKEkgP+q z5yuVkPNI|8Q5wT5tp0^fUclNB1r)m5Mrr7A{nRT_nW^k`indv2D5tC5t3l7mbR#2nr%9 zgeGWc(MA!b+dO9axbSiAIdi|mxp&a*7bsp4c>TD| zhbe)tnk2??p(gP0sbu!{RX-w;h$9pVK~+^)L^JOuMc{KyXdF48C@Lsq{fI`RYB(Go z4F-dL*5qyvve)Y!_jo+Od%CZgPtyWlW<+ehN@L%`P~R!=>LV7-a_`A5=(7TACLjigHyp=C zL`%-+^F|;L_{Xx_?Z*9U+vKBSrX(!9cpy+M;!EoZY?Dbs#QQ53jbuGV?*{mh*2 z6)=yT$z)nG7dtLGftrGwm8~lcHdsTeDxw%ev0C(*r+_CG-kw3?c=3drm(d%H)B=04< z2zn(r8{g?3*nt~6zq@`PHYk3hd@~{c<9^~OG1iFP#34d$Ovm5%5em-Oo?yiG17~ez c%5B7^|IR)SyVjYj6aWAK07*qoM6N<$f@F9OJpcdz diff --git a/interface/web/themes/default-304/icons/x16/wrench.png b/interface/web/themes/default-304/icons/x16/wrench.png deleted file mode 100644 index 8c01122da620532336f7742f6d524356605d469c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 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 diff --git a/interface/web/themes/default-304/icons/x16_sprite.png b/interface/web/themes/default-304/icons/x16_sprite.png deleted file mode 100644 index f64f7ce7cf59c22c636e3e28ee86283436774c92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8569 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 diff --git a/interface/web/themes/default-304/icons/x32/dashboard.png b/interface/web/themes/default-304/icons/x32/dashboard.png deleted file mode 100644 index 240d3a2bad9989406171fe2546b439ec6259366e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2025 zcmVE?(Mn>1K}rfuky0uxz0b7J(oUI9XXcza*L_>dhkeSe_4>ktu4HGQvoGiW zo$vdvZ+%NxYxyLH3qs@{k~E87?RFpE15X3#hvZ$!~7hI5b!lESx@#0Rj!J$e@+L zl>(6^pfpiph@+T-E9oSlgh65GBohC`d%rl+Xe>0~_m=~pHuZFnz2X_@KHvY%#<8&* z_r124wSD~<-x9SWvM56PKAlDj0Z1uG+DjlcX=bq|!*Mj-P8Y2e#X^B0CEZ#xnmCrF zI}FTS(gQAV@sNO)@`sbFR&AR*@eX}gc{sxhl!KKBC0XiZSmlygXr+==6^S!}^a=>2 zsI_A7OBex5ks&gc0Z;PfWtBBI!J|OmWf}Mo^>=O@8F@OaH*2LjM$5=zg~Dc!Vl1#Gqolex!h$tay$qy60HJG1l7zBr z@D$iIqpV`UlBN-N^gBElmVaD<`#!?JB#;2U=l$xg;o*C_Q&X(FdllDz?P`b&SO;gU zf~mKVXB7dk24NS5t1 zaQ=NCNa3N|$HpEmzdOU=SjY|E-T+2|1j;YbT0D<%3m`OcyNNE8>9m`q zQG_mp1Zl*eTfFvQqfx8DU)3E_KC{~MHn!*HXjmAWypsNjw;9t- zEJhg!T>NDrx~dQZ8gDS=(1kiX7fkZ{Vm+R(*ThsDFX&fcJFpv26Y#Jr)z8o#Xh10t zDxWJt0t%;6#(nTQcxo5U@)E&Nh@T3i6JwnOs^o7s2}ZuO%7X zdYhx~E-}{}rm9+OSm!`^o|xKn7k&-Q07hRlp?iTLkeSlp7Fg`WygWa{xUR6SGJq2X zU^0jkP-WbS??G#p7q`E}iP>RP67z-Ie3lKbfbJqQ`wsC-=YIb7nQh#=@8@hN{)tRF zs2pOeH~Y~}ulUN`j6iDeLUwo0@X)zGLS1vk!Z2IBtN7988(6bE%w;L91GkT74(#K1 zH~*Av?r}cvJqyJOkl{L-g>aMu{t$P21uz*RH^7U_Xzqmf^@_(A7bK~`@yXEKG~Q(E zr!TPHLmD&9EcFHdvqGFCf-zY*Jzm$PXGm-|UKq?i+8k!O&j(fz%UF0pfHRlp& zPyqvWhUV_)FeB$EZ@w}IkfyBIcq=PboknC$7+noXv)6GSOGM(MX-K=J0#uhFT@PzP zr0{07%XtR-2f7ec@`m#R=+q!x0vV#Ti+w-wT^_*v z;q5!Jk+Eee3p3JUz981hkn~G@9pnH+9$%z%2v*+O>!PUF${O?lgcT^x5ufQ&J3P&) zU2kyW*eqH8&<6mX`zRyN|M|H$fAH*I-u&u@^;g`oXgl^G1ah&t}_j2%s9qiw|w{!5w$=cD>oH_^7 zb8r-x22KLAzyi?xX8=BYFVt||IBePEiu*U;G(NHQkq5jrpZf}nZ_hIQ$}1dsdAEK2 zt*QC9X6k3B;lvUg?Z8y8;8|e4S1|oYMgE{TG%i^Ahd00000NkvXX Hu0mjf=H1SI diff --git a/interface/web/themes/default-304/icons/x32/dns.png b/interface/web/themes/default-304/icons/x32/dns.png deleted file mode 100644 index 03e63b060048b3bcbb3e3aba8c98bc4a9ee5d582..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2049 zcmV+c2>$npP)Ko^TXn0MCxqc7UhE6iJVjTPzgP0K-xz>VBHZWs)?LuR z5a^|Y1_AZVH#2b*`O0??~aP(usM^_0w{~%nrMmX6=*xN~{eg`m393iWS<1!m# zCJDYER2AC;v1*i5`pjv{e0(3gJFGr zJ;$C}pLLp30kyRNTZ7qCClL1vkj?~Bn*ocJfO0u7uO3+P8$xIu;96;biRtpotgQM$ z-~j;vLZ|aKK2Ou?{@^lI1qTNQSXo)X+%Xi1yMf{ZfF^Sok@FT~W^e#(VvZnX7qF-a zG`s3Hhd}=UtJ{7bT+>Hi%$PBw-P6+(&d$yx2`JeEZZYdnco5idn0K90jwpQuf`fwK z=A^<>CYHPl6twIt6R`O0L^dBDHY|I?!ot4J$;rW*HER$X8w+b|>!T7oG&J->CIAl) z4{~yHCY6m6(?XJ{_!v-jkWkkFEM2t`kr8tc7#Ij=wJlcd2W7W%A}aES*hb=$z@K3N z^!4@O(J?qUh}ElC%U#3I&yS`}n?^3q8Yrhkq3|fMz74eLUBZs@z_aVC5I#E${{H^Z z*jZ62e^={v%M#rAB=;vpM@OT#x0m|+`)O!s2qPmSFc=IN9v;T^>({BfyBnJ}ZQ`9f zkxr-M*jxUU^>W12x=&JmJ&1-6fY&|-o_nDlp&_%#*Vh*=&UUbMY8n;7WG^>k-D9_I zVPS!Sf&#R+x6{Ro7bPHW-n?m)fq?<^^z`7+p+l&ssE{6jQmMSaYEM5nh~{opYPa4B zOgxVHiRB0jok`QDPluD!RJrp#EUu5wGE>tsb}96FJ?-4NQ<6YOM+Yulx`eK-E_8Nw z8o`^Jn-L!$54n4_THVE}=8u?CvqS|4`oA9%5&~~;Z#Zfkp-_nWC#JbZqv?>bU$kfu zWa2e8Hln4a1#N9@MrmzrMN?A~)~;P^B)|zOlhDAb{u9{?kBQmp$M#%hnAB=cKE?RS zC6p5>Xti2HVqzlF($bKfosHbwToe@*VdKV)C@U+&h7B8#pPz3em!6)E%?kA*SS@ROKxVRXlrKQHQlMRPMWQ;p^LWGBhBPl6K5|AN?9Jj&7 zkN0IR11|6>bgiH0E?)+|HGsbU3ixaQ=srhxHkaUeA@1^Whew@|Cf&<1Ch2+!&gEt# z;_B)ucM4luTe!Hm7!xZvIGAL~%AAQyNciIt8{3*!&6Pk!9?||cKp%Ywy4DZ+{4>6h zTm^NX2OW3|s4by(jUD2JI5kn9ACmDdDJda2Z{EBawY9ZIk4R8Sf`wEn72Mq1WDbzb z^oRuuP-J0^-|@F^7X|`V#h`t^2fhCe=*)Yd6Nf=>w*d8g9H!{8o9$F7%%!b`-)Zr2 zadD`rsgcP?m6es)vSkbE>grHmUythQYRbsSFcRS&0DF6TaOlX_OGmE@3!LQlpRgc$ zI$sXbK((cy#!ArEGN2?2NC?4oGl4Tqbgzju_(nj zyK$Bwks;tUZ7dsDy3M(Hx!YRfn28O2%HX$IMkNWgHE5O=r1#+?&;xLu0^;{~Sgx|1 zHnqkqA^t4;-$W!_SoU$9-{N{7Wj7N8%f#tnsb%qbsH77dg*e$^u9Dyc6BEE*1#)u* zd3b<4bv%25+})Uz178r7MiRYdwg?cSll85i)SsMKB3Kr%=;akap-`B7CwGMKJ7CGi zB>@f#=@>XT2ow>{9*6`*&S7r^gS@@?qM!k{MY>?+0Pf50{+|ba%&4%k`vx{PAgw!S zCWA-M1O03T$=y_a0LoJetG_@t4CvA-wx^U>yUOmjXp=f$ZmSIzo>) zp}05pPgXOjyMNf4oe=9{g}74U;yPNR^FpbcmiYI-xcAB{UFO)8?J2MJ1ym|xVFkq_u+~{GxR_WoW^X#1g*sT% zR5Mn!Gqarwk)d5o-LftcI%%~b&$@|?OP#X07kgfc&>`8ukf4|@7 z$#Z$1_kEui{x76%5Vp`}&2j>UGYFf9WpuKHGgNYxM*}(t@{7GE`^Hk+H+nf1ziXD3 z{^3WeIP?S25GS$&+WOd03+DH=p=Cad*Mtr&h{Z&*9JQZ)+uYK1wO>4FsI!X*|5uqp zyiXSCzZ-DeUBgOpD7DS(|JJkCj;rmxV-=fuEj_CX3=&;dB%Z>b%@Go$veUFV{Xa$8H|e%EM2Ja;Jc2DYMP6 zV4DZlzluy&`RUW{F7saZyV`MKhn~6clwqk;B#(Rp@W0D(Wl--};rB*jbB-?QygF_l zQRHTi$aP%>a(L9Q&4SGwXl#+Kh$kHS==yQ9_wrtC>e?i4msftvgT=^{-l?=)fPPx{ z=Pl~E{=Rmf-(y%BAmW1#0uGv+GhuwV^?8+{Cz zd&j>8cP##r=)M4=S|c_ls=d2S+plhuYeSUCjK2y@WPa4^7Hs;^`gsLOl#t&4ec*w+ z^&fVr`pr6Rzqn2HAFnkm2oaH?2Y}!~ScG-vfUO1>wVY>_zj!P_EDRT!_s#3qbN8Km zb7E^*;!w-Q7Snj4QR7=Ch-pazYAA~HTCm5hv#;uJ$A5P;rE5p$KC|`Y%O?EC31XI8 z&^H^iSCY;un?Ahui8*oeBfWNc zkDfZS(NOLb39-BS^$Oexl!R!_k$Us=>8Dln`$9uOobdO5k=zj;pUiH539t_yz;{`~ z+7O-o*D15_%06v5y+w6hwX%ILShzj!^dH6fNlpGMTxz=VQ?vfudPQuE5E=L103MqNCmd;s#+uy!*|HIZ92Crth7m3BOJgwGJ^p`|IYB@2R20sWm6+&C1VKD)aSp zG4*}{>&W*kvtS$U?bz9WF9_ya35UrYC9=ngnDR;3`fxRz|Dn8HUfG`r z5-FoE18K}mIqrj90;Ucvd$;qeH$Na7m=8<=LV7!8ikre{6|@(ay3RU1csQ?jfrYq! z!|2Gd6!~DGu2#!N_8-fXv?g1vQ}t)onDWkYjo2C?GA0P9VCuL=3+5fZ#*;V7Wc@Nz z-p{<6eR7szQLu?yuIT4awA+2h5?q*FltJ=r&wtWo`YrSB$N*!N7v;jj;Z{qM`a0r#3p U*q-cj#{d8T07*qoM6N<$f+U^+_W%F@ diff --git a/interface/web/themes/default-304/icons/x32/drawer.png b/interface/web/themes/default-304/icons/x32/drawer.png deleted file mode 100644 index f94f6b68f13f7d2b0658c0f8af8af72077340ce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 941 zcmV;e15*5nP)v{os9`dFTDj%vwSS=k5DcjJ7?v z`Ch!%A6mMBC+7}CT$#A_p=_dL;BlY$>5EtAMydSy?NUpcxZP*Mm7Pat%OiIjXQV^# z8|T8Kvli}r+%=&x@bHZF4FE1(yFLd1NkT?yAc{f&z?+wgEdaRtNt`TYK(9sL_f+3? zUHHC_AP5iy0es(w=XtPg8$t-=d5$zqK`BL=reKUAO;co92EE2~9c6$QFXA{xr_(8Y zg zHXO@BE(9{pk>xp3&cTX)#yRpL@Km!|#IBiwgKoUefXslLyAxAWa9tOk=hYS=V@%b6 ztbmX-ThC2(Y^M3{?xI77!JxpZ4uT{APES=P_2fJ<3I?3 zEX&kVOes}0vo8vG4FypYq0wl-vMj8utQaYno}NaMBuJ73gpg7ZDg(7s(3f&~PZB?=?~gb+nSmSy;|wl*3HWJTMyjpgNKBL%awv*`7D==FO4L4jcjC4_(wf_A$N z09f1FGE<Ep~F*f`uNd*ray}PLS(cSfLur~KFE*$Crt7$tWz7M=11bX5lAi{~#|EgWLA0H~kPc?Zu9L-bva8?yfgyjc0wRf7fDk4|3e*XrF5p~0#M<4i>py4v9qe;Ru0`39;7|V%blI|Fqe4QGZ{G(8Cr$U4CjGQz$#HxUTLJlX2;kZ}psATbZ(y)k0gKsz zm>4}uYJoxpLy-c=FBDwpqG_JKCpawZ$Q`yP`343g$-~2cL{e%!Zj=FvYA_XnwJi(= zBf~8VLuZHJJobIA$4zB7N~(Y|B@?98gRNOtgh>;Z#M~9Ue0kcS`^AfsSG=?!sbTHf z44gPa5mkUGlwfKN(9+7#PGGB*p{t9*-Yr_MD7PUkU5A=_a;KI-Nvc*c)KYr#J8wm)0<5wcsMj#G>KKeB0#meIHim8j_x3V4 z9Afm*yBpBZ?0|}Zb#)B&^`bQNTSGfo#G5xTWpe1gySfk>nqC_ldl`JbUI&=b1nAm; zHUnTZLx|Ys1Up19V^bl&|UGkq? z85MN~udhDIwr~3#$%%!?zNA5&+KhXR=v_518mTU{l%f_6q{7rQw6%#cP?5GX%L@OjNN;#VDpxX*tYd5Vq;2h>O=#s7nxva z>lWaN2b)n|Zib$_<%G41G8+5UL0yu01(@l6sF!e42f@u|^sVFZb){uJ$hiqzqZTTr z{41#9l~hnb@=U96%HnpVb2G}*s--732{nF4+sbWYN9$Zn?>Ea)h{b`i=JFq z{%Rp6NMw75b-~wn^Wu#guAq%vke4$QS29#oGrr0}O)t{e0JOG>FcW3QWa^=7uVB9u zXt9XmHN(}>(JwfFU$TH%?g<@3I)dEnTifGQ#l?2qpry22fHSDn3=JBwxLRAq{PLF& z!4M-H0PO4(Thys;$`-HLatdVcmwL?eJ;`A&4|;(yW5x>CxpOxyTo;uCtBqQ)MuazN z#H!|So@bs@XT*0xd8csM?YvWjGGSG;Fzwu_#$2B>aB+!Lj~@NVSA=pMl7ay)R2RtY zP}PI+$eXo8;oN4YwFAMtP5TBbECAl#SOHIuR7{x~Rzg#MO!6U(9kvFXF8I8-Az*D} zHZ3$@PTQUEfl)gx9suSm1G|uE!>W}k7S~ME={?WaOHbfA*Hu(lW4@-JEFe8LV#lvJo{_#QU%MaxZFXVPWAglNY+QdGK0fgd7ncRs z=xguy71pC8diHD6^||1;zvR*dJO0eFP+{f5%j=`A2@;P?dh{0Q*#~~)_V$kS3<^qx z=bUYZ$Df#XitpYe$-nZC#_7{=ew@yihY>$wKOFys@i&X~fL;lPhU)+T002ovPDHLk FV1knW)B6Ab diff --git a/interface/web/themes/default-304/icons/x32/help.png b/interface/web/themes/default-304/icons/x32/help.png deleted file mode 100644 index b6a7afa49b744b630166c00cbafc140c82e9cb4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1950 zcmV;P2VwY$P)ihqZ>PjZLW|)6|$0El|WrP+=-Q2x?8KsiBF+HZfJu zR4t-0se?s8EP@Lt@-+D18CJtfK#j1luq^EE{d#`OW1I+8lRx~UJu_$S+1YdM`R@6B z=iJNK|K$l1N@^=fq{YNM#hrgcW|gYvT&i|53gE<3X0h(7WdC|cJ_Uy@(iw=g0T^_+pN^+4`rhLZVoVJ6-+IP&qr}W@w&i3o)s5|jDP^7 zSX(2-#s;6yn}@Sow%}%17>Ao1=cE2Tk&$>vd(^Zlc%sw;%+PTD6Hou9rN!}_Bd5^P z_JC`(T4;$}D$;?C8`0_R&NG~y5zbiqRK`9b_cutFl14=_R&;{?YkT!ou3fVRYT}9@ zN~H?5waq*;?HpFlFl#2?A503uYJPyx?|uDHS<`{`_6OkfO^1nC14J+a!L!${1!b!v z*A=8wAM1U_-aQo(0yX&x+z<|+Ru7?}p%t=HIp4kbWtbToM@?P@v1457=3OW)Z{!^v z5A^_shKBS2dWr2x^a;pq!?)w`h)q7tttF)x*6Bt8XwcZ$ioE!(05qCmsOU89)zw(b*aLFY_h_}zRNHJiF`1@g@rQ`Nw?ZB8 zxdoAMh+0yor7juPSKz{hN}T^!5ni*lQj)89;^8B4QsiWnKvsAi&COkO0v!R+U{I|_ zHw~G$8Pk%RyWo3;vD~36NvQBPK_X+PsVt#YuUOMp|AHSgGvIw>ajw&I;MT3Lk#oL` z_PvD&iIY&U1rq~saYkNlB`*BCl2Er%f2-*fItvUCU4E&R8jw1>`~V5A}fN?@*P^#~zbe=t%o_t5d=I!>MQeq0Du~VKKvBD6VqtTgbh11D8shaQeV8 z1l!qkQ!4)n0lY4C4}a$uA;^r5=YON%e~@O85^Zr!n1t7_W3anhU-pLmDX3dBi_Avq z)g$`kyvGMnyae1^3bX{HEy)twDDE`r*{E2)d&RFY$I`NlQq7#S6{CE7AS6#6)l;Oz zb`+A<&=?j(e)J@2*IAL30d)Tss)|7U$%W)s!%dOy>44vn|4ueig(IZYA&8>*5&AIE zV~IETk5px)msj#;sT4=4)G3dEI76yZ4(I{2esKmFHVkQ2FXFIA0QOmUpufNs==vFU z8Z(5hk3|;^uw4|BMk?&J)x!fna&VASiohq{1!42%ee(x9yKxXgMK1065O?l&<6c)c z1~t@P9KysKc?S#wpW4!0(Hx8|KQt3giLlkH(N4EyEbZ|g5jWJ=R~Ta3UJ!|1m^86; z#*8u3F2dg*@7UYxK^&d!iQG~-ifBFv-BDN9jHae`+`iobx%@7^?o{B=uiivU{1hb2 z3Bs|HIU^v#!f>~z2McU%`4o}ppfK&9c>0$d9rddLW3zwb=QkW@Z-?CUY<{`?HWykc zE9)w9b1RUae+@EOH3|y8L|$Gc@?g)LD zE-quH#WJ_q1(9y9NLuj*&K^ID%O#Dxm|7~ou!iRQb>tP?KtWLrE|)c-th$Y#OV38q zYoUnokiy@=p-li09v;r+a=8Fv+f##Zm_B{nHkmRtB-qKRY?ZSFF+SdSdsztHTNjJ{ zn|I>F`0Yq0J8}6hv7S0;wTlEx9PC>R4Gf6C?8m02rmg($T5L>_NBU!k?yzHh; zOYpaxae9%pb?H)D+lHUo+B62uoLN2B!u+C@kqp-(0zsFs k=Oj|nMgR4E_&+880e-FHZ~bZyw*UYD07*qoM6N<$f-MTWnE(I) diff --git a/interface/web/themes/default-304/icons/x32/login.png b/interface/web/themes/default-304/icons/x32/login.png deleted file mode 100644 index 7e81f556f71b42d7d3709d625e62fd3a3dfb3260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2357 zcmV-53Ci|~P)CXwl!LtMk}>e z+9np;V63Q%fRC7f+5&=>*TN#OF0jk&F3Y}W=RJ4s+}GDXX4d7g#wKmjo1A>-o|~KV zJKy^Na2K%F$N%L~7rxvHbxLQX<0{)i5`q$etRPAt3y2Gj4SPO--vF$dJ({;Z?fk+G z?zrX(w$!zMIl#AI{^}bzxb~NY)e;TLfg%MeKrUW}oATi=y^>$tYx2U8Be&;ZYybai zW(-~IS-G!iKHnI}q1Vy1su1hupBDMAaNQaz`s{{mEBDHxDTrRKShWr5Dz4flc#r- z%iHg)x@T*{@<|m}MMMH+2s&sc6X(xi%)%9r?m_Utwep4(0R$xPOKv)&=6qwBth{03 zw@Y-EUkacD%!V~LU(d~xX8|QB0(q&1_o&Lrr_e{FkkT0nsQ^`p%8GK$G8zw`Wct$i z3flrN2Tm4TBR?Di$pun`q1a_n&B(OzE96JDT!44mrfE-Y&UbRr-@h3J8N z00Q7aXd+W*m2+(WQBYa1;*g7hod72dP8Q{vc%F^txpdkrK8m@(sLP_D73$ma z0BV4(pQ1llRbl9m4O3qmWxqzdS` zNCV9f>5Ak{cv+%Q3ibKs1!lXCV~1Orv1k$)5tJ1}SpA4IDYB_3 zF+;3Nlb`lvVG>Qzh5_mVGbjbggn%fNQlK;-0Gdb3i54bI9FCVuBDolniz8M7*G^+O z7Pe#IdN!76kV-@(-F1#*9kc_{K><>5)^LFsLSF$Q0MU&?G9zGQP^lhNssSV*V#FY% zi)EQuwux<up4n{5zEK4;&VvWzc0kMW0Vlk`EB2-g zAOxJwe^q)uF(FVA@Hh?YBXgq*&m5UizN=`xWXG?eX2WK}#}5+eK1)2(Okbph_QsPO zdassn)kAF4H%jfEY2_93K5K+=Gig~4rC%RBH~#>-)=xoXKc3`}_+}*1J6R;UKpq@j zA(ZWIOBy17+H~5hJ?qM$4v~Z1B0s+W5Ax!SA+l-ZmGakFCGzkC&&rFnp8Wo>$leB# zr#94kA|h1%GXs=ew(*S@nB|8Wj(m(r4#{joqLC>g(FNYx@-pw)H*5)a8Q#Z7BO)TQ zzuuOb1CBI_$Uo*Rmb##lcSm0(4X(&@yFJ;u-xd*(lc(eIS#!#Jb!SFU&%8D0>5B{U zF6fedh?q!vJJQoRMICn6%p@4j1(S69oc^A?IN zBGFWSJ(=?)DKKaAJQ)cSW}Sg z@JP)TpeSEiT_+zWx~4eQ2IW;DVx|x?`FxxYcXHE}V;QUIpexRYTWN|zYX;6Gp}tc{ zOOU1xOI^FD9Q;?^QbzK_jf=SB1MHtEDF8Ihv61Z-oJSkViq`UZA2Z1qdh$wYHlUc(nQn*+Yr(j zA)OTBX(8)rM6-}HvH(79uoihAJo?((Kn|q! zMIGFO5rS}^BAyW{%M?{3bs}l#jeA(#EjD0kgN5TaVdk=BKn0?L;8+48Co z?I&WY_N5PjH?{-eK>>!qBDW8SAj*&OqP+s+m6?glCqI8a*S2(NaQ2$HR8*JZ^MUdZ z<)Ks*+~Fg!5+E9gPYD{zaUkBF;nUaZRPzVBK|S*-!bS?c)L^%j>Xp#)(k7@_f*58s zPp#C|wzJ{dCiodFUjgI3uYBXHhF&q6;$da@ON;RZ{Ro0W;g~jdCWjeMl4xtkvl>%y z;w1cQ3$UfXExQb00dO!MebZJ!L(Tg^UVi0j)^9%AbPCo1?+!#PQ-NtPdMt!0z#q)l zPYcZ diff --git a/interface/web/themes/default-304/icons/x32/monitor.png b/interface/web/themes/default-304/icons/x32/monitor.png deleted file mode 100644 index ee733761f28ac55a35c071025de9d7aa2368c82e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1244 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 M07*qoM6N<$f|we89RL6T diff --git a/interface/web/themes/default-304/icons/x32/state_error.png b/interface/web/themes/default-304/icons/x32/state_error.png deleted file mode 100644 index 112a2642efd7f30452023a28f7322cc58195e482..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2200 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 BDg6Kd diff --git a/interface/web/themes/default-304/icons/x32/state_ok.png b/interface/web/themes/default-304/icons/x32/state_ok.png deleted file mode 100644 index a4a896407af1935b8134e2954e342a9aacda938a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1456 zcmV;h1yA~kP)0@gy5?uGvsx$ zlgO&eK<4RG*a|IPu)+zucP^lS&*UoLwX#a2o=QaY$#8_01zj63<5=;_E;JpYwyoNqw+O3GgbEp(o}*Cr|@(gGfuA^*ri?J)mAn zVbNlV#=hTrG5ACVl@y|jcS70lb#ToJ8lRg^msbxf;FqEh`F#*V+WleMG#k^!bnqKE zFgdLa%}r`haaFQZU9C)=@D_0M2_|DJ(b#eCBF^=<;?h7ndLP~dJ(1{|R!*HzLbpbh zKP{6buen!_l%KaD=5i<^Is|ZNv&5_>b(pqk!}gpZv;s>8e6~Pc?p!e+O1F(KVx5hDxTErZ%+*vK1~Fm9gC*WIfjuYFL7%$_79bw?wJpU z0hcRw3OEmp&j?b*e`5H!fNC;@t0~}irkst3QPt zey|3-oy_a=+su4zlgQDAhhk*+ry{K{4#K`DcyzkJ=?aOZH|*ec(+N7^nqY(zBu7Z0 zzIGa_BoIm_S$dB4TjmdMX!KGvj1D4y3PhPygwlaSI3&qO;lMr=%MPG+Pz;+>rmxOE zYQgS1>DVDnM5=Tf*7vT$vhI0syX^!|=`!fWXe%0+LaKj3p}p}qHc8_<+eO;+udG@G z>+>_=dD#^Q2KGQSScn2yF7gL=qhKf($7IFWbvG5+cT=$Amjw7rJ>V{JhUd^S_zt_n zAXN{%92Th~X42j|59r3JJ81=|OB^b#@bNWkxOUnjMH-94!+AI;--G?~EaZ)3BjoK4Q~`eMiO{D$FfKB{oF;wJ{-P=Ee4l`B#eb&&e2(zchQ1eH?)E_>6wsU$8lmu zFeNT6jz~l(wjl`d2thhxkUb`Z*->LGxoS@aKlY}*vruZ$rsu2{&FXjiW-0QKIbMZh zIj|O)!?)Xu+==bXcb!fN* z7ZlFLnx5t4aTGA7^k1;D$APj|w$#aU(A6ULRUq@j&*+1|WYu2)8@A=?TiRd%0000< KMNUMnLSTZ82eg9# diff --git a/interface/web/themes/default-304/icons/x32/state_unknown.png b/interface/web/themes/default-304/icons/x32/state_unknown.png deleted file mode 100644 index 22c034b882d56bf963b26f316d2e53ab21842cf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2753 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 D-?@v` diff --git a/interface/web/themes/default-304/icons/x32/system.png b/interface/web/themes/default-304/icons/x32/system.png deleted file mode 100644 index 136083cda434d388bc1483154f43a2abb9fae67a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2454 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 diff --git a/interface/web/themes/default-304/icons/x32_sprite.png b/interface/web/themes/default-304/icons/x32_sprite.png deleted file mode 100644 index 5c9f04ffaf5c3b97d88f6f97f0b4653bbe3a039c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37386 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 diff --git a/interface/web/themes/default-304/icons/x64/client.png b/interface/web/themes/default-304/icons/x64/client.png deleted file mode 100644 index 96e74e76cf7e8cefa3d39d4bc5375ba32730d3c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6611 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 b;qCteiBR}~oy1Z800000NkvXXu0mjfJYs7| diff --git a/interface/web/themes/default-304/icons/x64/dns.png b/interface/web/themes/default-304/icons/x64/dns.png deleted file mode 100644 index b40b5376fa076b0ccef987f465c923dd2336e59f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5730 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 diff --git a/interface/web/themes/default-304/icons/x64/domain.png b/interface/web/themes/default-304/icons/x64/domain.png deleted file mode 100644 index 6e2884e46c160400b7cbf93215c80a60be1d4fcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4177 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 diff --git a/interface/web/themes/default-304/icons/x64/drawer.png b/interface/web/themes/default-304/icons/x64/drawer.png deleted file mode 100644 index 8fe3c1bb693b0d11aa9e1aac02b894fc880626d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7236 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 diff --git a/interface/web/themes/default-304/icons/x64/login.png b/interface/web/themes/default-304/icons/x64/login.png deleted file mode 100644 index 27adf0b5e5ec4f14c5f6c5364cb2ec3080ed3a2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6797 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 diff --git a/interface/web/themes/default-304/icons/x64/monitor.png b/interface/web/themes/default-304/icons/x64/monitor.png deleted file mode 100644 index f6fc9370956e29fa0c94422d5d3dcf18b20a8e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3198 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 diff --git a/interface/web/themes/default-304/icons/x64/network.png b/interface/web/themes/default-304/icons/x64/network.png deleted file mode 100644 index e9aa4a22980d781de7a6a80f75c192d93703c55a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5546 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 diff --git a/interface/web/themes/default-304/icons/x64/server.png b/interface/web/themes/default-304/icons/x64/server.png deleted file mode 100644 index bcde9dcc5ca190c446b86ae32be731dc2e712f1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3527 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 LNkvXXu0mjf(BvC@ diff --git a/interface/web/themes/default-304/images/Thumbs.db b/interface/web/themes/default-304/images/Thumbs.db deleted file mode 100644 index 8679961a8d1dc54348abadb5dd70f647d769c1bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10752 zcmeI22|QI>7r@V*3|Hiu(o>mBh6=YR^E^E=MTkhstfVBGL}gA74Q4WAjAtlRR4O4u zMd6uxO^PTY zY#+(6wA;uU1 zGQb4P0hj?6U@kxb(Acv<%06{GgH)frROkU?%mY4N7$2sAxkKuS`M^j{U%0?xXdQ`c z=bywj&#~@J-z^*gGF2}8lvDDb3QXfSB8JD&+DGX$icDrnMZpV14YLES?J!s9g{_}X zebs+fh=O0+KJul6sX!|ARjqxQ8R?IzLcTj){gEFJp#mVNEb0n0CcpQ86cbPkp!q-Y z^X>5c_x_LK1BwAO|L1^XPJj!T2XF)Pfgb=KU;%)JeG$M5pgQ>>6#xVQAwU>d3@iae zfTe&aAO?s7sLV1*mjf#RWIw16r2#6i5?BSu04VQjNY?;zfIOf8C<01=GN1ye0&0Ld zpaEzCT7Wj71Ly*Jz>k1FU;v=H4IwoGi~$qC6j%qC0p`GZzyd&dtsvb1SOYe|M!*)Z z12zHnz-9pD-2y4HMMuC1a0XleSHKN$2Rwjn0Lt$P=?=gP*a_?c(D~^IvIS%VC-7iD z_b0kBR$WaUO$-M{Ws5Fwq8+-1fXAah5F-4M7)T@{kwm7ar(>8yo->Du%*4dZ!p6$X zLSbQIV&!6`uyb&7a?Y7MkDH5wn~j5$166_}Kp7&5kwjwTU}j?G_-dJ`#3&4yA%-L1 z1TZ`WN1)&)t|2?Zk>G041y2bM57$UX&%j7#f(*srp*R8oPb8qLhTMDMcZ^6OvGGf) z(6JlY(F<(nkUAKd%pj;*P{nE7G$a%r%dD{tv>7mxwGCrLJ5hBfENyn!1Lj zmbQ+riRn5s^Ys>%_M08HY;|;U-r==#m-lX;J%<7U4<9)i6ny-rsOXpzCr_PDNj;O6 zo{@PrtMKQd;*!$y7s{?&y;gnw#?6{r&3EqJYiYgzpslC(;jfP#KY9ABZ|K$Q;Ws01 zN8i0idf_m_C$&Cn_9wk4pckG4{~nuY$9_BQG0}kkZO~fO;0iZf2G-H#eUPP4Vy#2!Qc@n;D8_0Zl&bDGc_b# z77Z?a)TGQcmhUY3Bw7QrdX<@-V9kMB$zi0-JMn-vu78=bV)T=7$`*b_px7{J3Htt(iJHWF%F$eg#gU@XOzgh-<<31JZ*G$f7Q2s|?8Z*KE`7qmA`=9jdnQ#BMOQ;bX z*3Ya=6uk)J7MJZ__?jtj4(N*N*1cli?yZ&KWce{YFG>A_!%Ox-t(CwbUo+N#^I_Bb^zA)EzmulG_?SX|{8lrvk*AgkmTu!$5adLb} zD^N5|d|h+t+50`_Y7TqplChXh6@f)ka=dD0VyC5}Ws;jjuDh7jqQAU!=_q~LCz*8{&=A4};DmLq*)g-v5lq|W;Tm8B=rC$Mg%9-F7M{yVOKt2CNtzSKQr!4-oaMshcH!%8$@1M1C&w3NH$_Ep{<`h@GJ~5{{+)WK z%w!|a>}WFG+-i|JDmYNPuX9|N_pwXbouX{(WfCz%q&N1pyl1nct4vrsBO6}?5{n}j za1B{r7Ytq*Mz3LX(Ad;`o}{Jv=F=KM^h1)>o|X+^weBHnd9=pf+BI~GF_=VaB^PCI zOBkFmy4O!F`enO_>K?vF5j`7h@*gtgDpR-3{aJN?*}hE*^>+30C#2>J?}}_Nv;XPG zy!T#$%r-f_@lJXgNo+boaX)G3J8fM#d__diX~Bq*^}dMiqrL4CuNgPyM`b+XHR&vl z*S^zn^oq&-$6goNUYhx-%zx0S*`xK)IxnI}PG5R1-#qq+Uc1Wo3le-c!YdnQwqD7j#7bwi!X;xnmV#7&yd()=fP#ymd}XZ`2<@Sk_FwH~@+<}VWN znrWU`rC8Ii;r20f4_P$8^I%>{VcZb-p6l6#4evYL%|G5jN4$+r3ksl`g0H zulI<4OJUQ_>8!@8vMA-bqaoJk2V*y2HsfMGmYw1;9ajeqg;yL9Thn0EQl!9Utz}#h zyxN$T>LVAGYCmvnt$c4`o)6mEZJT%&pM3Sfh{{~Ww>o$7 zihZ-opQ&b_%oE27F=}jq*r!C zZ@ac@enxyt*9*Sb#1(@FcEZzME4!0oM2gFvd;P;V6FoduCdVw1*1SL85aYk_R3*o! z<+)X}pGBs=hqz>4UA6~dX@{v4E^(CHNbgI3&27yS18dc#Octlq#p?ns)`y<0>SNwf z_VTF5@-ZKewEHfKx*;lZZN&+u_)zZ?3Od96`a}ET1P1rT+Y@=VI^}j~X8AD1CAOpn z2#od)jHNON-f3oEeDx}kFFYarfK1WL1@|4txe6*SmI)bD3-Iev19ny}iq4%E>Sps? z|3F#6WwYJ7{!$zVb|f50h<!e38dkxG7eafgjUT zAFgG%csx<~;rU~1fxA2Clof*L4k*YzP$>djTcq2Zi{BV1kWmJj<{n-!{i`NEiNMMa)wC1LceW#V369_n z(==h4{YK9a`xW`l>=*5meT%^Q!&mQrT0(=#Q|k|CE#zASt$(0>N>tr+*FPK}@6)OF zzol(jS=25~Xy^WyDXndker>z|$NNtmus{&-`BCfC~L2>yt%%c8*_Yx z*~pL(tGd5zZDY{&^F2GLYJLsCFmT;5Nbg2VU^;fE`wC`0onuG&sQi zD{bd>E4iB zpX&W>M;E;dGP$(Q9rIDusRsAQ+@Id^@%Y0YFuDVw6?9ttuF&=l&|wE$wHI9Nr}v|1 s8vNE0Du;F*{<<8k-7m|DLlJbx!Vc#M`5M&V+&~|%zv(5E?Y}Gk0mqkH!2kdN diff --git a/interface/web/themes/default-304/images/ajax-loader.gif b/interface/web/themes/default-304/images/ajax-loader.gif deleted file mode 100644 index 7c4804ebcaec27b830873a1ff4d157f1bde00ef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3208 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 IBfww{0BZFy)c^nh diff --git a/interface/web/themes/default-304/images/chevron.png b/interface/web/themes/default-304/images/chevron.png deleted file mode 100644 index 7ca05879425ec644442a7590157616f4de3eb77d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 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 An*aa+ diff --git a/interface/web/themes/default-304/images/lists_thead_bg.png b/interface/web/themes/default-304/images/lists_thead_bg.png deleted file mode 100644 index c75d17f03e19525bdc5117c08072e4c5d056e68b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmV;(05|`MP);o&v`Mvplj9~ZiI@Q54Tkq}_81^~*D5+?uv diff --git a/interface/web/themes/default-304/images/screen_bg.png b/interface/web/themes/default-304/images/screen_bg.png deleted file mode 100644 index 5cfb14945604c4b43b8cdb22485e1dc1f58b43b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^j6fW~!3HF69GAZhq!c|}977~7CtDOhJ5#Ub=H|wx m#s&npHnjD9oFd^M%ETbEi6vvV&i4wSVg^rFKbLh*2~7Z#x)+lG diff --git a/interface/web/themes/default-304/ispconfig_version b/interface/web/themes/default-304/ispconfig_version deleted file mode 100644 index bb19ac367..000000000 --- a/interface/web/themes/default-304/ispconfig_version +++ /dev/null @@ -1 +0,0 @@ -3.0.4.6 \ No newline at end of file diff --git a/interface/web/themes/default-304/licences.txt b/interface/web/themes/default-304/licences.txt deleted file mode 100644 index 9b810056f..000000000 --- a/interface/web/themes/default-304/licences.txt +++ /dev/null @@ -1,8 +0,0 @@ -Theme created by Martin Henne (red-ray.de) - -based on: - -Templates: http://www.yaml.de -Web-Forms: http://www.sprawsm.com/uni-form/ -Icons: http://www.pinvoke.com and http://www.randomjabber.com/static/sizcons -Know-How: http://particletree.com/features/rediscovering-the-button-element diff --git a/interface/web/themes/default-304/templates/admin/firewall_edit.htm b/interface/web/themes/default-304/templates/admin/firewall_edit.htm deleted file mode 100644 index 827c1c8b9..000000000 --- a/interface/web/themes/default-304/templates/admin/firewall_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/firewall_list.htm b/interface/web/themes/default-304/templates/admin/firewall_list.htm deleted file mode 100644 index d209a4588..000000000 --- a/interface/web/themes/default-304/templates/admin/firewall_list.htm +++ /dev/null @@ -1,60 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="tcp_port"}{tmpl_var name="udp_port"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/groups_edit.htm b/interface/web/themes/default-304/templates/admin/groups_edit.htm deleted file mode 100644 index b5fe76494..000000000 --- a/interface/web/themes/default-304/templates/admin/groups_edit.htm +++ /dev/null @@ -1,26 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/groups_list.htm b/interface/web/themes/default-304/templates/admin/groups_list.htm deleted file mode 100644 index 3fc1918ec..000000000 --- a/interface/web/themes/default-304/templates/admin/groups_list.htm +++ /dev/null @@ -1,54 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -

-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="name"}{tmpl_var name="description"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/iptables_edit.htm b/interface/web/themes/default-304/templates/admin/iptables_edit.htm deleted file mode 100644 index 33574c9ef..000000000 --- a/interface/web/themes/default-304/templates/admin/iptables_edit.htm +++ /dev/null @@ -1,67 +0,0 @@ -

-

-
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/iptables_list.htm b/interface/web/themes/default-304/templates/admin/iptables_list.htm deleted file mode 100644 index 6c65094da..000000000 --- a/interface/web/themes/default-304/templates/admin/iptables_list.htm +++ /dev/null @@ -1,73 +0,0 @@ -

- -
- -
-
Tools -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
-
- -
-
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="table"}{tmpl_var name="protocol"}{tmpl_var name="singleport"}{tmpl_var name="multiport"}{tmpl_var name="state"}{tmpl_var name="target"} - -
-
-
-
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/language_add.htm b/interface/web/themes/default-304/templates/admin/language_add.htm deleted file mode 100644 index 540fc9765..000000000 --- a/interface/web/themes/default-304/templates/admin/language_add.htm +++ /dev/null @@ -1,29 +0,0 @@ -

-

- -
- -
-
Language Add -
- - -
-
- - -

{tmpl_var name='language_new_hint_txt'}

-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/language_complete.htm b/interface/web/themes/default-304/templates/admin/language_complete.htm deleted file mode 100644 index 7416a7096..000000000 --- a/interface/web/themes/default-304/templates/admin/language_complete.htm +++ /dev/null @@ -1,29 +0,0 @@ -

-

- -
- - -
-
- -
-
- -
-
Language Complete -
- - -
-
- -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/language_edit.htm b/interface/web/themes/default-304/templates/admin/language_edit.htm deleted file mode 100644 index 3767a178e..000000000 --- a/interface/web/themes/default-304/templates/admin/language_edit.htm +++ /dev/null @@ -1,29 +0,0 @@ -

-

- -
- -
-
Language File Edit: {tmpl_var name="file_path"} - - - - - - - - -
- - - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/language_export.htm b/interface/web/themes/default-304/templates/admin/language_export.htm deleted file mode 100644 index 40856220c..000000000 --- a/interface/web/themes/default-304/templates/admin/language_export.htm +++ /dev/null @@ -1,31 +0,0 @@ -

-

- -
- -
-
Language Export -
- - -
- - - -

-
- - - -
- - -
- -
- -
- -
diff --git a/interface/web/themes/default-304/templates/admin/language_import.htm b/interface/web/themes/default-304/templates/admin/language_import.htm deleted file mode 100644 index 30289448f..000000000 --- a/interface/web/themes/default-304/templates/admin/language_import.htm +++ /dev/null @@ -1,44 +0,0 @@ -

-

- -
- -
-
Language Import -
- - -
-
-

{tmpl_var name='language_overwrite_txt'}

-
- -
-
-
-

{tmpl_var name='ignore_version_txt'}

-
- -
-
- - - -

-
- -

ERROR

-
- - - -
- - -
- -
- -
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/language_list.htm b/interface/web/themes/default-304/templates/admin/language_list.htm deleted file mode 100644 index d2689535d..000000000 --- a/interface/web/themes/default-304/templates/admin/language_list.htm +++ /dev/null @@ -1,47 +0,0 @@ -

-

- -
- -
-
Tools -
-
- - -
-
-
-
- - - -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/remote_action_ispcupdate.htm b/interface/web/themes/default-304/templates/admin/remote_action_ispcupdate.htm deleted file mode 100644 index 6c903bad7..000000000 --- a/interface/web/themes/default-304/templates/admin/remote_action_ispcupdate.htm +++ /dev/null @@ -1,33 +0,0 @@ - - -

-

- -
- -
- -
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/remote_action_osupdate.htm b/interface/web/themes/default-304/templates/admin/remote_action_osupdate.htm deleted file mode 100644 index 034947355..000000000 --- a/interface/web/themes/default-304/templates/admin/remote_action_osupdate.htm +++ /dev/null @@ -1,25 +0,0 @@ -

-

- -
- -
-
{tmpl_var name='do_osupdate_caption'} -
- - -
-
- - -

-
- -
- -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/remote_user_edit.htm b/interface/web/themes/default-304/templates/admin/remote_user_edit.htm deleted file mode 100644 index 1b7d22a5c..000000000 --- a/interface/web/themes/default-304/templates/admin/remote_user_edit.htm +++ /dev/null @@ -1,47 +0,0 @@ -

-

- -
- -
-
-
- -

{tmpl_var name='username_prefix'}

- -
- -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
-

{tmpl_var name='function_txt'}

-
-   {tmpl_var name='remote_functions'} -
-
- -
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/remote_user_list.htm b/interface/web/themes/default-304/templates/admin/remote_user_list.htm deleted file mode 100644 index a4549c065..000000000 --- a/interface/web/themes/default-304/templates/admin/remote_user_list.htm +++ /dev/null @@ -1,52 +0,0 @@ -

-

-
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
 
{tmpl_var name="remote_userid"}{tmpl_var name="remote_username"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_cron_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_cron_edit.htm deleted file mode 100644 index 17c811ba2..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_cron_edit.htm +++ /dev/null @@ -1,30 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_dns_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_dns_edit.htm deleted file mode 100644 index c308ec495..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_dns_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_fastcgi_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_fastcgi_edit.htm deleted file mode 100644 index ad9444060..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_fastcgi_edit.htm +++ /dev/null @@ -1,52 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_getmail_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_getmail_edit.htm deleted file mode 100644 index 21492e4c8..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_getmail_edit.htm +++ /dev/null @@ -1,22 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_jailkit_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_jailkit_edit.htm deleted file mode 100644 index 19e0416e6..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_jailkit_edit.htm +++ /dev/null @@ -1,34 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_list.htm b/interface/web/themes/default-304/templates/admin/server_config_list.htm deleted file mode 100644 index 1f5356b94..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_list.htm +++ /dev/null @@ -1,40 +0,0 @@ -

-

- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="server_name"} - -
-
-
- -
diff --git a/interface/web/themes/default-304/templates/admin/server_config_mail_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_mail_edit.htm deleted file mode 100644 index 72292b32b..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_mail_edit.htm +++ /dev/null @@ -1,94 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='pop3_imap_daemon_txt'}

-
- -
-
-
-

{tmpl_var name='mail_filter_syntax_txt'}

-
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -  MB -
-
- -  MB -
-
-

{tmpl_var name='mailbox_quota_stats_txt'}

-
- {tmpl_var name='mailbox_quota_stats'} -
-
-
- -  {tmpl_var name='realtime_blackhole_list_note_txt'} -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_rescue_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_rescue_edit.htm deleted file mode 100644 index 031034401..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_rescue_edit.htm +++ /dev/null @@ -1,44 +0,0 @@ -

-

- -
- -
-
Rescue -
-

{tmpl_var name='try_rescue_txt'}

-
- {tmpl_var name='try_rescue'} -
-
-
-

{tmpl_var name='do_not_try_rescue_httpd_txt'}

-
- {tmpl_var name='do_not_try_rescue_httpd'} -
-
-
-

{tmpl_var name='do_not_try_rescue_mysql_txt'}

-
- {tmpl_var name='do_not_try_rescue_mysql'} -
-
-
-

{tmpl_var name='do_not_try_rescue_mail_txt'}

-
- {tmpl_var name='do_not_try_rescue_mail'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_server_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_server_edit.htm deleted file mode 100644 index 3cb684816..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_server_edit.htm +++ /dev/null @@ -1,67 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='auto_network_configuration_txt'}

-
- {tmpl_var name='auto_network_configuration'} {tmpl_var name='network_config_warning_txt'} -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -

{tmpl_var name='nameservers_hint_txt'}

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_ufw_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_ufw_edit.htm deleted file mode 100644 index e0a1ded29..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_ufw_edit.htm +++ /dev/null @@ -1,66 +0,0 @@ -

-

- -
- -
-
UFW Firewall -
-

{tmpl_var name='ufw_enable_txt'}

-
- {tmpl_var name='ufw_enable'} -
-
-
-

{tmpl_var name='ufw_manage_builtins_txt'}

-
- {tmpl_var name='ufw_manage_builtins'} -
-
-
-

{tmpl_var name='ufw_ipv6_txt'}

-
- {tmpl_var name='ufw_ipv6'} -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_vlogger_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_vlogger_edit.htm deleted file mode 100644 index c960fb131..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_vlogger_edit.htm +++ /dev/null @@ -1,22 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_config_web_edit.htm b/interface/web/themes/default-304/templates/admin/server_config_web_edit.htm deleted file mode 100644 index a41efef09..000000000 --- a/interface/web/themes/default-304/templates/admin/server_config_web_edit.htm +++ /dev/null @@ -1,256 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='server_type_txt'}

-
- -
-
-
- - -
-
- - -
-
- - -
-
- -
- {tmpl_var name='website_symlinks_rel'} -
-
-
- -  {tmpl_var name='website_autoalias_note_txt'} -
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='security_level_txt'}

-
- -
-
-
-

{tmpl_var name='check_apache_config_txt'}

-
- {tmpl_var name='check_apache_config'} -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='enable_ip_wildcard_txt'}

-
- {tmpl_var name='enable_ip_wildcard'} -
-
-
-

{tmpl_var name='overtraffic_notify_admin_txt'}

-
- {tmpl_var name='overtraffic_notify_admin'} -
-
-
-

{tmpl_var name='overtraffic_notify_client_txt'}

-
- {tmpl_var name='overtraffic_notify_client'} -
-
-
{tmpl_var name='ssl_settings_txt'}
-
-
-

{tmpl_var name='enable_sni_txt'}

-
- {tmpl_var name='enable_sni'} -
-
-
- - -
-
- - -
-
-
{tmpl_var name='permissions_txt'}
-
-
-

{tmpl_var name='set_folder_permissions_on_update_txt'}

-
- {tmpl_var name='set_folder_permissions_on_update'} -
-
-
-

{tmpl_var name='web_folder_protection_txt'}

-
- {tmpl_var name='web_folder_protection'} -
-
-
-

{tmpl_var name='add_web_users_to_sshusers_group_txt'}

-
- {tmpl_var name='add_web_users_to_sshusers_group'} -
-
-
-

{tmpl_var name='connect_userid_to_webid_txt'}

-
- {tmpl_var name='connect_userid_to_webid'} -
-
-
- - -
-
-
{tmpl_var name='php_settings_txt'}
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='apps_vhost_settings_txt'}
-
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='awstats_settings_txt'}
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_edit_config.htm b/interface/web/themes/default-304/templates/admin/server_edit_config.htm deleted file mode 100644 index e5e239241..000000000 --- a/interface/web/themes/default-304/templates/admin/server_edit_config.htm +++ /dev/null @@ -1,22 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_edit_services.htm b/interface/web/themes/default-304/templates/admin/server_edit_services.htm deleted file mode 100644 index f6e47323c..000000000 --- a/interface/web/themes/default-304/templates/admin/server_edit_services.htm +++ /dev/null @@ -1,70 +0,0 @@ -

-

- -
- -
-
-
- - -
-
-

{tmpl_var name='mail_server_txt'}

-
- {tmpl_var name='mail_server'} -
-
-
-

{tmpl_var name='web_server_txt'}

-
- {tmpl_var name='web_server'} -
-
-
-

{tmpl_var name='dns_server_txt'}

-
- {tmpl_var name='dns_server'} -
-
-
-

{tmpl_var name='file_server_txt'}

-
- {tmpl_var name='file_server'} -
-
-
-

{tmpl_var name='db_server_txt'}

-
- {tmpl_var name='db_server'} -
-
-
-

{tmpl_var name='vserver_server_txt'}

-
- {tmpl_var name='vserver_server'} -
-
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_ip_edit.htm b/interface/web/themes/default-304/templates/admin/server_ip_edit.htm deleted file mode 100644 index 35718ceed..000000000 --- a/interface/web/themes/default-304/templates/admin/server_ip_edit.htm +++ /dev/null @@ -1,50 +0,0 @@ -

-

- -
- -
-
IP Address -
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='virtualhost_txt'}

-
- {tmpl_var name='virtualhost'} -
-
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_ip_list.htm b/interface/web/themes/default-304/templates/admin/server_ip_list.htm deleted file mode 100644 index 4234e00a9..000000000 --- a/interface/web/themes/default-304/templates/admin/server_ip_list.htm +++ /dev/null @@ -1,64 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="server_id"}{tmpl_var name="client_id"}{tmpl_var name="ip_type"}{tmpl_var name="ip_address"}{tmpl_var name="virtualhost"}{tmpl_var name="virtualhost_port"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_list.htm b/interface/web/themes/default-304/templates/admin/server_list.htm deleted file mode 100644 index 078d262eb..000000000 --- a/interface/web/themes/default-304/templates/admin/server_list.htm +++ /dev/null @@ -1,58 +0,0 @@ -

-

- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="server_name"}{tmpl_var name="mail_server"}{tmpl_var name="web_server"}{tmpl_var name="dns_server"}{tmpl_var name="file_server"}{tmpl_var name="db_server"}{tmpl_var name="vserver_server"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_php_fastcgi_edit.htm b/interface/web/themes/default-304/templates/admin/server_php_fastcgi_edit.htm deleted file mode 100644 index 21eba0267..000000000 --- a/interface/web/themes/default-304/templates/admin/server_php_fastcgi_edit.htm +++ /dev/null @@ -1,26 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_php_fpm_edit.htm b/interface/web/themes/default-304/templates/admin/server_php_fpm_edit.htm deleted file mode 100644 index 92cd4a88b..000000000 --- a/interface/web/themes/default-304/templates/admin/server_php_fpm_edit.htm +++ /dev/null @@ -1,30 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_php_list.htm b/interface/web/themes/default-304/templates/admin/server_php_list.htm deleted file mode 100644 index 44e6a1fde..000000000 --- a/interface/web/themes/default-304/templates/admin/server_php_list.htm +++ /dev/null @@ -1,55 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="server_id"}{tmpl_var name="client_id"}{tmpl_var name="name"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/server_php_name_edit.htm b/interface/web/themes/default-304/templates/admin/server_php_name_edit.htm deleted file mode 100644 index d9e88ff19..000000000 --- a/interface/web/themes/default-304/templates/admin/server_php_name_edit.htm +++ /dev/null @@ -1,34 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/software_package_install.htm b/interface/web/themes/default-304/templates/admin/software_package_install.htm deleted file mode 100644 index 1d2d4de95..000000000 --- a/interface/web/themes/default-304/templates/admin/software_package_install.htm +++ /dev/null @@ -1,30 +0,0 @@ -

-

- -
- -
-
- -
-
- -
-
-

 

-
- - -
- - - -

 

-
- - -
-
-
-
-
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/software_package_list.htm b/interface/web/themes/default-304/templates/admin/software_package_list.htm deleted file mode 100644 index 0cb6f47c1..000000000 --- a/interface/web/themes/default-304/templates/admin/software_package_list.htm +++ /dev/null @@ -1,46 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name="installed"}{tmpl_var name="package_title"}{tmpl_var name="package_description"}ispapp{tmpl_var name="package_id"}
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/software_repo_edit.htm b/interface/web/themes/default-304/templates/admin/software_repo_edit.htm deleted file mode 100644 index bd8b23052..000000000 --- a/interface/web/themes/default-304/templates/admin/software_repo_edit.htm +++ /dev/null @@ -1,40 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/software_repo_list.htm b/interface/web/themes/default-304/templates/admin/software_repo_list.htm deleted file mode 100644 index 16a174931..000000000 --- a/interface/web/themes/default-304/templates/admin/software_repo_list.htm +++ /dev/null @@ -1,56 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="active"}{tmpl_var name="repo_name"}{tmpl_var name="repo_url"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/software_update_list.htm b/interface/web/themes/default-304/templates/admin/software_update_list.htm deleted file mode 100644 index 8a3760e71..000000000 --- a/interface/web/themes/default-304/templates/admin/software_update_list.htm +++ /dev/null @@ -1,49 +0,0 @@ -

-

- -
- -
-
Tools -
-
- - -
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name="installed"}{tmpl_var name="update_title"}{tmpl_var name="version"}
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/system_config_domains_edit.htm b/interface/web/themes/default-304/templates/admin/system_config_domains_edit.htm deleted file mode 100644 index 605587900..000000000 --- a/interface/web/themes/default-304/templates/admin/system_config_domains_edit.htm +++ /dev/null @@ -1,33 +0,0 @@ -

-

- -
- -
-
-
-
-

{tmpl_var name='use_domain_module_txt'}

-
- {tmpl_var name='use_domain_module'} -
-
-
{tmpl_var name='use_domain_module_hint'}
-
-
-

{tmpl_var name='new_domain_txt'}

-
- -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/system_config_mail_edit.htm b/interface/web/themes/default-304/templates/admin/system_config_mail_edit.htm deleted file mode 100644 index 013c39ae0..000000000 --- a/interface/web/themes/default-304/templates/admin/system_config_mail_edit.htm +++ /dev/null @@ -1,80 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='enable_custom_login_txt'}

-
- {tmpl_var name='enable_custom_login'} -
-
-
-

{tmpl_var name='mailboxlist_webmail_link_txt'}

-
- {tmpl_var name='mailboxlist_webmail_link'} -
-
-
- - -
-
-

{tmpl_var name='mailmailinglist_link_txt'}

-
- {tmpl_var name='mailmailinglist_link'} -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='smtp_enabled_txt'}

-
- {tmpl_var name='smtp_enabled'} -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='smtp_crypt_txt'}

-
- {tmpl_var name='smtp_crypt'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/system_config_misc_edit.htm b/interface/web/themes/default-304/templates/admin/system_config_misc_edit.htm deleted file mode 100644 index 31350cdb9..000000000 --- a/interface/web/themes/default-304/templates/admin/system_config_misc_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
Misc -
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='maintenance_mode_txt'}

-
- {tmpl_var name='maintenance_mode'} -
-
-
- -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/system_config_sites_edit.htm b/interface/web/themes/default-304/templates/admin/system_config_sites_edit.htm deleted file mode 100644 index 121d607a3..000000000 --- a/interface/web/themes/default-304/templates/admin/system_config_sites_edit.htm +++ /dev/null @@ -1,58 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='dblist_phpmyadmin_link_txt'}

-
- {tmpl_var name='dblist_phpmyadmin_link'} -
-
-
- - -
-
- - -
-
-

{tmpl_var name='vhost_subdomains_txt'}

-
- {tmpl_var name='vhost_subdomains'} {tmpl_var name='vhost_subdomains_note_txt'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/tpl_default_basic.htm b/interface/web/themes/default-304/templates/admin/tpl_default_basic.htm deleted file mode 100644 index f6a63716c..000000000 --- a/interface/web/themes/default-304/templates/admin/tpl_default_basic.htm +++ /dev/null @@ -1,23 +0,0 @@ -

-

- -
- -
-
-
- - 152x46px -
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/users_groups_edit.htm b/interface/web/themes/default-304/templates/admin/users_groups_edit.htm deleted file mode 100644 index cb52ae32b..000000000 --- a/interface/web/themes/default-304/templates/admin/users_groups_edit.htm +++ /dev/null @@ -1,30 +0,0 @@ -

-

- -
- -
-
-
- - -
-
-

{tmpl_var name='groups_txt'}

-
- {tmpl_var name='groups'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/users_list.htm b/interface/web/themes/default-304/templates/admin/users_list.htm deleted file mode 100644 index 3eeee3198..000000000 --- a/interface/web/themes/default-304/templates/admin/users_list.htm +++ /dev/null @@ -1,68 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -

-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="client_id"}{tmpl_var name="active"}{tmpl_var name="username"}{tmpl_var name="groups"} - -
{tmpl_var name='globalsearch_noresults_text_txt'}
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/admin/users_user_edit.htm b/interface/web/themes/default-304/templates/admin/users_user_edit.htm deleted file mode 100644 index 4abe79358..000000000 --- a/interface/web/themes/default-304/templates/admin/users_user_edit.htm +++ /dev/null @@ -1,73 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
-

{tmpl_var name='modules_txt'}

-
- {tmpl_var name='modules'} -
-
-
- - -
-
-

{tmpl_var name='app_theme_txt'}

-
- {tmpl_var name='app_theme'} -
-
-
-

{tmpl_var name='typ_txt'}

-
- {tmpl_var name='typ'} -
-
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/client_circle_edit.htm b/interface/web/themes/default-304/templates/client/client_circle_edit.htm deleted file mode 100644 index 1616dd477..000000000 --- a/interface/web/themes/default-304/templates/client/client_circle_edit.htm +++ /dev/null @@ -1,39 +0,0 @@ -

-

- -
- -
-
{tmpl_var name='circle_txt'} -
- - -
-
-

{tmpl_var name='client_ids_txt'}

-
- {tmpl_var name='client_ids'} -
-
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
- {tmpl_var name='required_fields_txt'} -
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/client_circle_list.htm b/interface/web/themes/default-304/templates/client/client_circle_list.htm deleted file mode 100644 index 4c5a889b6..000000000 --- a/interface/web/themes/default-304/templates/client/client_circle_list.htm +++ /dev/null @@ -1,59 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="circle_id"}{tmpl_var name="active"}{tmpl_var name="circle_name"}{tmpl_var name="description"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/client_del.htm b/interface/web/themes/default-304/templates/client/client_del.htm deleted file mode 100644 index aeb206f10..000000000 --- a/interface/web/themes/default-304/templates/client/client_del.htm +++ /dev/null @@ -1,25 +0,0 @@ -

-

- -
- -
- -
- :

- - , - -
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/client_edit_address.htm b/interface/web/themes/default-304/templates/client/client_edit_address.htm deleted file mode 100644 index 076f4b021..000000000 --- a/interface/web/themes/default-304/templates/client/client_edit_address.htm +++ /dev/null @@ -1,140 +0,0 @@ -

-

- -
- -
-
Address -
- - -
-
- - -
-
- - -
-
- - -
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- {tmpl_var name='required_fields_txt'} -
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/client_edit_limits.htm b/interface/web/themes/default-304/templates/client/client_edit_limits.htm deleted file mode 100644 index 8ce7f80fa..000000000 --- a/interface/web/themes/default-304/templates/client/client_edit_limits.htm +++ /dev/null @@ -1,284 +0,0 @@ -

-

- -
- - -
-
{tmpl_var name="toolsarea_head_txt"} -
- - -
-
-
-
- -
-
Limits - -
- - -
-
- - -


{tmpl_var name='template_additional_list'}
- -
-
-   -
-
-
{tmpl_var name='web_limits_txt'}
-
-
- - -
-
- - -
-
- -  MB -
-
- -  MB -
-
-

{tmpl_var name='web_php_options_txt'}

-
- {tmpl_var name='web_php_options'} -
-
-
-

{tmpl_var name='limit_cgi_txt'}

-
- {tmpl_var name='limit_cgi'} -
-
-
-

{tmpl_var name='limit_ssi_txt'}

-
- {tmpl_var name='limit_ssi'} -
-
-
-

{tmpl_var name='limit_perl_txt'}

-
- {tmpl_var name='limit_perl'} -
-
-
-

{tmpl_var name='limit_ruby_txt'}

-
- {tmpl_var name='limit_ruby'} -
-
-
-

{tmpl_var name='limit_python_txt'}

-
- {tmpl_var name='limit_python'} -
-
-
-

{tmpl_var name='force_suexec_txt'}

-
- {tmpl_var name='force_suexec'} -
-
-
-

{tmpl_var name='limit_hterror_txt'}

-
- {tmpl_var name='limit_hterror'} -
-
-
-

{tmpl_var name='limit_wildcard_txt'}

-
- {tmpl_var name='limit_wildcard'} -
-
-
-

{tmpl_var name='limit_ssl_txt'}

-
- {tmpl_var name='limit_ssl'} -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='ssh_chroot_txt'}

-
- {tmpl_var name='ssh_chroot'} -
-
-
- - -
-
-
{tmpl_var name='email_limits_txt'}
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -  MB -
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='database_limits_txt'}
-
-
- - -
-
- - -
-
-
{tmpl_var name='cron_job_limits_txt'}
-
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='dns_limits_txt'}
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='virtualization_limits_txt'}
-
-
- - -
-
- - -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/client_message.htm b/interface/web/themes/default-304/templates/client/client_message.htm deleted file mode 100644 index 20afdb111..000000000 --- a/interface/web/themes/default-304/templates/client/client_message.htm +++ /dev/null @@ -1,39 +0,0 @@ -

-

- -
- -
-
{tmpl_var name='form_legend_txt'} - -

-
- -

ERROR

-
-
- - -
-
- - -
-
- - -
-
- -  {tmpl_var name="variables_txt"} {tmpl_var name="message_variables"} -
-
-
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/client_template_edit_limits.htm b/interface/web/themes/default-304/templates/client/client_template_edit_limits.htm deleted file mode 100644 index 91f9bd52d..000000000 --- a/interface/web/themes/default-304/templates/client/client_template_edit_limits.htm +++ /dev/null @@ -1,230 +0,0 @@ -

-

- -
- -
-
Limits -
{tmpl_var name='web_limits_txt'}
-
-
- - -
-
- -  MB -
-
- -  MB -
-
-

{tmpl_var name='web_php_options_txt'}

-
- {tmpl_var name='web_php_options'} -
-
-
-

{tmpl_var name='limit_cgi_txt'}

-
- {tmpl_var name='limit_cgi'} -
-
-
-

{tmpl_var name='limit_ssi_txt'}

-
- {tmpl_var name='limit_ssi'} -
-
-
-

{tmpl_var name='limit_perl_txt'}

-
- {tmpl_var name='limit_perl'} -
-
-
-

{tmpl_var name='limit_ruby_txt'}

-
- {tmpl_var name='limit_ruby'} -
-
-
-

{tmpl_var name='limit_python_txt'}

-
- {tmpl_var name='limit_python'} -
-
-
-

{tmpl_var name='force_suexec_txt'}

-
- {tmpl_var name='force_suexec'} -
-
-
-

{tmpl_var name='limit_hterror_txt'}

-
- {tmpl_var name='limit_hterror'} -
-
-
-

{tmpl_var name='limit_wildcard_txt'}

-
- {tmpl_var name='limit_wildcard'} -
-
-
-

{tmpl_var name='limit_ssl_txt'}

-
- {tmpl_var name='limit_ssl'} -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='ssh_chroot_txt'}

-
- {tmpl_var name='ssh_chroot'} -
-
-
- - -
-
-
{tmpl_var name='email_limits_txt'}
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='database_limits_txt'}
-
-
- - -
-
-
{tmpl_var name='cron_job_limits_txt'}
-
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='dns_limits_txt'}
-
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='virtualization_limits_txt'}
-
-
- - -
-
- - -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/client_template_edit_template.htm b/interface/web/themes/default-304/templates/client/client_template_edit_template.htm deleted file mode 100644 index 232fa55fa..000000000 --- a/interface/web/themes/default-304/templates/client/client_template_edit_template.htm +++ /dev/null @@ -1,28 +0,0 @@ -

-

- -
- -
-
Template -
- - -
-
- - -
-
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/client/client_template_list.htm b/interface/web/themes/default-304/templates/client/client_template_list.htm deleted file mode 100644 index 5249fce5d..000000000 --- a/interface/web/themes/default-304/templates/client/client_template_list.htm +++ /dev/null @@ -1,56 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="template_id"}{tmpl_var name="template_type"}{tmpl_var name="template_name"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/clients_list.htm b/interface/web/themes/default-304/templates/client/clients_list.htm deleted file mode 100644 index 18332477d..000000000 --- a/interface/web/themes/default-304/templates/client/clients_list.htm +++ /dev/null @@ -1,73 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="client_id"}{tmpl_var name="company_name"}{tmpl_var name="contact_name"}{tmpl_var name="username"}{tmpl_var name="city"}{tmpl_var name="country"} - -
{tmpl_var name='globalsearch_noresults_text_txt'}
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/domain_edit.htm b/interface/web/themes/default-304/templates/client/domain_edit.htm deleted file mode 100644 index 5a6bef396..000000000 --- a/interface/web/themes/default-304/templates/client/domain_edit.htm +++ /dev/null @@ -1,40 +0,0 @@ -

- -
- -
-
-
- - - - - - -
- -
- - - - - - -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/domain_list.htm b/interface/web/themes/default-304/templates/client/domain_list.htm deleted file mode 100644 index 3c6b1ce5b..000000000 --- a/interface/web/themes/default-304/templates/client/domain_list.htm +++ /dev/null @@ -1,62 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- - - - - -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
A{tmpl_var name='search_limit'}
{tmpl_var name="domain"}{tmpl_var name="sys_groupid"} - - - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/reseller_edit_address.htm b/interface/web/themes/default-304/templates/client/reseller_edit_address.htm deleted file mode 100644 index d58ee93b7..000000000 --- a/interface/web/themes/default-304/templates/client/reseller_edit_address.htm +++ /dev/null @@ -1,116 +0,0 @@ -

-

- -
- -
-
Address -
- - -
-
- - -
-
- - -
-
- - -
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- {tmpl_var name='required_fields_txt'} -
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/reseller_edit_limits.htm b/interface/web/themes/default-304/templates/client/reseller_edit_limits.htm deleted file mode 100644 index 621dfa2b3..000000000 --- a/interface/web/themes/default-304/templates/client/reseller_edit_limits.htm +++ /dev/null @@ -1,279 +0,0 @@ -

-

- -
- -
-
Limits - -
- - -
-
{tmpl_var name='web_limits_txt'}
-
-
- - -
-
- - -
-
- -  MB -
-
- -  MB -
-
-

{tmpl_var name='web_php_options_txt'}

-
- {tmpl_var name='web_php_options'} -
-
-
-

{tmpl_var name='limit_cgi_txt'}

-
- {tmpl_var name='limit_cgi'} -
-
-
-

{tmpl_var name='limit_ssi_txt'}

-
- {tmpl_var name='limit_ssi'} -
-
-
-

{tmpl_var name='limit_perl_txt'}

-
- {tmpl_var name='limit_perl'} -
-
-
-

{tmpl_var name='limit_ruby_txt'}

-
- {tmpl_var name='limit_ruby'} -
-
-
-

{tmpl_var name='limit_python_txt'}

-
- {tmpl_var name='limit_python'} -
-
-
-

{tmpl_var name='force_suexec_txt'}

-
- {tmpl_var name='force_suexec'} -
-
-
-

{tmpl_var name='limit_hterror_txt'}

-
- {tmpl_var name='limit_hterror'} -
-
-
-

{tmpl_var name='limit_wildcard_txt'}

-
- {tmpl_var name='limit_wildcard'} -
-
-
-

{tmpl_var name='limit_ssl_txt'}

-
- {tmpl_var name='limit_ssl'} -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='ssh_chroot_txt'}

-
- {tmpl_var name='ssh_chroot'} -
-
-
- - -
-
-
{tmpl_var name='email_limits_txt'}
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -  MB -
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='database_limits_txt'}
-
-
- - -
-
- - -
-
-
{tmpl_var name='cron_job_limits_txt'}
-
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='dns_limits_txt'}
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-
{tmpl_var name='virtualization_limits_txt'}
-
-
- - -
-
- - -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/client/resellers_list.htm b/interface/web/themes/default-304/templates/client/resellers_list.htm deleted file mode 100644 index f85850f36..000000000 --- a/interface/web/themes/default-304/templates/client/resellers_list.htm +++ /dev/null @@ -1,68 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="client_id"}{tmpl_var name="company_name"}{tmpl_var name="contact_name"}{tmpl_var name="city"}{tmpl_var name="country"} - -
{tmpl_var name='globalsearch_noresults_text_txt'}
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dashboard/custom_menu.htm b/interface/web/themes/default-304/templates/dashboard/custom_menu.htm deleted file mode 100644 index 4b0677965..000000000 --- a/interface/web/themes/default-304/templates/dashboard/custom_menu.htm +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dashboard/dashboard.htm b/interface/web/themes/default-304/templates/dashboard/dashboard.htm deleted file mode 100644 index 09aa15870..000000000 --- a/interface/web/themes/default-304/templates/dashboard/dashboard.htm +++ /dev/null @@ -1,48 +0,0 @@ -

-
-
-
- -
-
-
- - {tmpl_var name='error_msg'} - -
-
-
- -
-
-
- - {tmpl_var name='warning_msg'} - -
-
-
- -
-
-
- - {tmpl_var name='info_msg'} - -
-
-
-
-
- - {tmpl_var name='content'} -

 

-
-
-
- - {tmpl_var name='content'} -

 

-
-
-
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dashboard/dashlets/limits.htm b/interface/web/themes/default-304/templates/dashboard/dashlets/limits.htm deleted file mode 100644 index 11fe0bbe6..000000000 --- a/interface/web/themes/default-304/templates/dashboard/dashlets/limits.htm +++ /dev/null @@ -1,11 +0,0 @@ -

{tmpl_var name='limits_txt'}

-
- - - - - - - -
{tmpl_var name='field_txt'}{tmpl_var name='usage'} {tmpl_var name='of_txt'} {tmpl_var name='value'}
-
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dashboard/dashlets/modules.htm b/interface/web/themes/default-304/templates/dashboard/dashlets/modules.htm deleted file mode 100644 index 03fb8cb88..000000000 --- a/interface/web/themes/default-304/templates/dashboard/dashlets/modules.htm +++ /dev/null @@ -1,10 +0,0 @@ -

{tmpl_var name='available_modules_txt'}

- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/designer/form_edit.htm b/interface/web/themes/default-304/templates/designer/form_edit.htm deleted file mode 100644 index 38a28c4aa..000000000 --- a/interface/web/themes/default-304/templates/designer/form_edit.htm +++ /dev/null @@ -1,79 +0,0 @@ -
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
: yes / no
:
:
: yes / no
 
:
:
: r = read, i = insert, u = update, d = delete
: r = read, i = insert, u = update, d = delete
: r = read, i = insert, u = update, d = delete
 
  - -
- - -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/designer/form_list.htm b/interface/web/themes/default-304/templates/designer/form_list.htm deleted file mode 100644 index 39eb7b901..000000000 --- a/interface/web/themes/default-304/templates/designer/form_list.htm +++ /dev/null @@ -1,24 +0,0 @@ -
-

- - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="name"}{tmpl_var name="title"}{tmpl_var name="module_name"}{tmpl_var name="description"}[Delete]
-
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/designer/form_show.htm b/interface/web/themes/default-304/templates/designer/form_show.htm deleted file mode 100644 index 2a3eff4ea..000000000 --- a/interface/web/themes/default-304/templates/designer/form_show.htm +++ /dev/null @@ -1,61 +0,0 @@ - -
-

-
{tmpl_var name='form_txt'} - - - - - - - - - - - - - - - - - - - - - - - -
:{tmpl_var name='title'}
:{tmpl_var name='form_name'}
:{tmpl_var name='module_name'}
:{tmpl_var name='description'}
 
- - -
-
- - - - - - - - -
 
 
-
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/designer/module_edit.htm b/interface/web/themes/default-304/templates/designer/module_edit.htm deleted file mode 100644 index 2cd48a9ea..000000000 --- a/interface/web/themes/default-304/templates/designer/module_edit.htm +++ /dev/null @@ -1,43 +0,0 @@ -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
  -
 
-
-
 
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/designer/module_list.htm b/interface/web/themes/default-304/templates/designer/module_list.htm deleted file mode 100644 index 1e148f3ee..000000000 --- a/interface/web/themes/default-304/templates/designer/module_list.htm +++ /dev/null @@ -1,18 +0,0 @@ -

- - - - - - - - - - - - - - - - -
 
{tmpl_var name="module"}{tmpl_var name="title"}[Delete]
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/designer/module_nav_edit.htm b/interface/web/themes/default-304/templates/designer/module_nav_edit.htm deleted file mode 100644 index 3b2007af8..000000000 --- a/interface/web/themes/default-304/templates/designer/module_nav_edit.htm +++ /dev/null @@ -1,24 +0,0 @@ -

- - - - - - - - - - - - - - - - - -
:
  -
 
-
-
 
- - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/designer/module_nav_item_edit.htm b/interface/web/themes/default-304/templates/designer/module_nav_item_edit.htm deleted file mode 100644 index 0aee2ca65..000000000 --- a/interface/web/themes/default-304/templates/designer/module_nav_item_edit.htm +++ /dev/null @@ -1,33 +0,0 @@ -

- - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
  -
 
-
-
 
- - - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/designer/module_show.htm b/interface/web/themes/default-304/templates/designer/module_show.htm deleted file mode 100644 index ffdfe9bb8..000000000 --- a/interface/web/themes/default-304/templates/designer/module_show.htm +++ /dev/null @@ -1,31 +0,0 @@ -

-
{tmpl_var name='module_txt'} - - - - - - - - - - - - - - - -
:{tmpl_var name='title'}
:{tmpl_var name='name'}
 
-
-
-
-
- - - - - - - - -
 
 
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/designer/paging.tpl.htm b/interface/web/themes/default-304/templates/designer/paging.tpl.htm deleted file mode 100644 index dd38af8a9..000000000 --- a/interface/web/themes/default-304/templates/designer/paging.tpl.htm +++ /dev/null @@ -1,9 +0,0 @@ -[ |<< ] - - [<< Zurück] - - Seite {tmpl_var name="next_page"} von {tmpl_var name="max_pages"} - - [Weiter >>] - - [ >>| ] \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_a_edit.htm b/interface/web/themes/default-304/templates/dns/dns_a_edit.htm deleted file mode 100644 index cce1af605..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_a_edit.htm +++ /dev/null @@ -1,54 +0,0 @@ -

-

- -
- -
-
-
- - -

{tmpl_var name='name_hint_txt'}

-
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_a_list.htm b/interface/web/themes/default-304/templates/dns/dns_a_list.htm deleted file mode 100644 index 913f628a6..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_a_list.htm +++ /dev/null @@ -1,88 +0,0 @@ -
-
{tmpl_var name="toolsarea_head_txt"} -
- - - - - - - - - - - -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="type"}{tmpl_var name="name"}{tmpl_var name="data"}{tmpl_var name="aux"}{tmpl_var name="ttl"} - -
-
-
diff --git a/interface/web/themes/default-304/templates/dns/dns_aaaa_edit.htm b/interface/web/themes/default-304/templates/dns/dns_aaaa_edit.htm deleted file mode 100644 index fdea8270c..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_aaaa_edit.htm +++ /dev/null @@ -1,54 +0,0 @@ -

-

- -
- -
-
-
- - -

{tmpl_var name='name_hint_txt'}

-
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_alias_edit.htm b/interface/web/themes/default-304/templates/dns/dns_alias_edit.htm deleted file mode 100644 index 2c859c7a0..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_alias_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_cname_edit.htm b/interface/web/themes/default-304/templates/dns/dns_cname_edit.htm deleted file mode 100644 index 5cf86c589..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_cname_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_hinfo_edit.htm b/interface/web/themes/default-304/templates/dns/dns_hinfo_edit.htm deleted file mode 100644 index 1651bcc7d..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_hinfo_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_import.htm b/interface/web/themes/default-304/templates/dns/dns_import.htm deleted file mode 100644 index 7f462ab62..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_import.htm +++ /dev/null @@ -1,55 +0,0 @@ -

-

- -
- -
-
- -
- - -
-
- - -
-
-
- -

-

-
- - -
- - -

-
- -

ERROR

-
- - - -
- - -
- -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_mx_edit.htm b/interface/web/themes/default-304/templates/dns/dns_mx_edit.htm deleted file mode 100644 index e986efb77..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_mx_edit.htm +++ /dev/null @@ -1,42 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_ns_edit.htm b/interface/web/themes/default-304/templates/dns/dns_ns_edit.htm deleted file mode 100644 index 9efd881a9..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_ns_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_ptr_edit.htm b/interface/web/themes/default-304/templates/dns/dns_ptr_edit.htm deleted file mode 100644 index 5d8cf1fdb..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_ptr_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_records_edit.htm b/interface/web/themes/default-304/templates/dns/dns_records_edit.htm deleted file mode 100644 index f7852eab4..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_records_edit.htm +++ /dev/null @@ -1,12 +0,0 @@ -

-

- -
- - {tmpl_var name='dns_records'} - -
- -
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_rp_edit.htm b/interface/web/themes/default-304/templates/dns/dns_rp_edit.htm deleted file mode 100644 index 86697cfed..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_rp_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_slave_edit.htm b/interface/web/themes/default-304/templates/dns/dns_slave_edit.htm deleted file mode 100644 index b6dea70f9..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_slave_edit.htm +++ /dev/null @@ -1,97 +0,0 @@ -

-

- -
- -
-
- -
- - - - - - - - -
-
- - -
-
- -
- - -
-
-
- - -

{tmpl_var name='eg_domain_tld'}

-
-
- - -

{tmpl_var name='ipv4_form_txt'}

-
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_slave_list.htm b/interface/web/themes/default-304/templates/dns/dns_slave_list.htm deleted file mode 100644 index d4458e0d9..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_slave_list.htm +++ /dev/null @@ -1,59 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="origin"}{tmpl_var name="ns"} - -
-
-
- -
diff --git a/interface/web/themes/default-304/templates/dns/dns_soa_edit.htm b/interface/web/themes/default-304/templates/dns/dns_soa_edit.htm deleted file mode 100644 index 386a2ab6a..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_soa_edit.htm +++ /dev/null @@ -1,131 +0,0 @@ -

-

- -
- -
-
DNS Zone - -
- - - - - - - - -
-
- - -
-
- -
- - -
-
-
- - -

{tmpl_var name='eg_domain_tld'}

-
-
- - -

{tmpl_var name='eg_ns1_domain_tld'}

-
-
- - -

{tmpl_var name='eg_webmaster_domain_tld'}

-
-
- -  {tmpl_var name='seconds_txt'} -
-
- -  {tmpl_var name='seconds_txt'} -
-
- -  {tmpl_var name='seconds_txt'} -
-
- -  {tmpl_var name='seconds_txt'} -
-
- -  {tmpl_var name='seconds_txt'} -
-
- - -
-
- - -
-
- - -
- -
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_soa_list.htm b/interface/web/themes/default-304/templates/dns/dns_soa_list.htm deleted file mode 100644 index fa09c78e0..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_soa_list.htm +++ /dev/null @@ -1,62 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- - - -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="origin"}{tmpl_var name="ns"}{tmpl_var name="mbox"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_srv_edit.htm b/interface/web/themes/default-304/templates/dns/dns_srv_edit.htm deleted file mode 100644 index fbcf10db9..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_srv_edit.htm +++ /dev/null @@ -1,50 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_template_edit.htm b/interface/web/themes/default-304/templates/dns/dns_template_edit.htm deleted file mode 100644 index b18d84a69..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_template_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
-

{tmpl_var name='fields_txt'}

-
- {tmpl_var name='fields'} -
-
-
- - -
-
-

{tmpl_var name='visible_txt'}

-
- {tmpl_var name='visible'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_template_list.htm b/interface/web/themes/default-304/templates/dns/dns_template_list.htm deleted file mode 100644 index 7039d34b1..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_template_list.htm +++ /dev/null @@ -1,53 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="visible"}{tmpl_var name="name"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_txt_edit.htm b/interface/web/themes/default-304/templates/dns/dns_txt_edit.htm deleted file mode 100644 index 0450fc865..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_txt_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/dns/dns_wizard.htm b/interface/web/themes/default-304/templates/dns/dns_wizard.htm deleted file mode 100644 index 51d9b7614..000000000 --- a/interface/web/themes/default-304/templates/dns/dns_wizard.htm +++ /dev/null @@ -1,95 +0,0 @@ -

-

- - -

ERROR

-
- -
- -
-
-
- - -
- -
- - -
-
- - -
-
- -
- - -
-
- -
- - -
-
- -
- - -
-
- -
- - -
-
- -
- - -
-
- -
- - -
-
-
- - - -
- - -
-
- -
- diff --git a/interface/web/themes/default-304/templates/error.tpl.htm b/interface/web/themes/default-304/templates/error.tpl.htm deleted file mode 100644 index d75fda400..000000000 --- a/interface/web/themes/default-304/templates/error.tpl.htm +++ /dev/null @@ -1,8 +0,0 @@ -
-
-

Error

-
    -
  1. ###ERRORMSG###
  2. -
-
-
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/form.tpl.htm b/interface/web/themes/default-304/templates/form.tpl.htm deleted file mode 100644 index 429bfd9f2..000000000 --- a/interface/web/themes/default-304/templates/form.tpl.htm +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/help/faq_edit.htm b/interface/web/themes/default-304/templates/help/faq_edit.htm deleted file mode 100644 index 6513f9550..000000000 --- a/interface/web/themes/default-304/templates/help/faq_edit.htm +++ /dev/null @@ -1,29 +0,0 @@ -
- -
-
{tmpl_var name='faq_faq_txt'} -
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/help/faq_manage_questions_list.htm b/interface/web/themes/default-304/templates/help/faq_manage_questions_list.htm deleted file mode 100644 index c045dfbb1..000000000 --- a/interface/web/themes/default-304/templates/help/faq_manage_questions_list.htm +++ /dev/null @@ -1,43 +0,0 @@ -

{tmpl_var name="faq_faq_questions_txt"}

-
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - -
{tmpl_var name="faq_question_txt"}{tmpl_var name="faq_section_name_txt"}{tmpl_var name="faq_delete_txt"}{tmpl_var name="faq_edit_txt"}
{tmpl_var name='hf_question'}{tmpl_var name='hf_section'} - - - {tmpl_var name="faq_edit_txt"} -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/help/faq_sections_edit.htm b/interface/web/themes/default-304/templates/help/faq_sections_edit.htm deleted file mode 100644 index 181364bdc..000000000 --- a/interface/web/themes/default-304/templates/help/faq_sections_edit.htm +++ /dev/null @@ -1,20 +0,0 @@ -
- -
-
Section -
- - -
-
- - - -
- - -
-
- -
- diff --git a/interface/web/themes/default-304/templates/help/help_faq_list.htm b/interface/web/themes/default-304/templates/help/help_faq_list.htm deleted file mode 100644 index 6af928f76..000000000 --- a/interface/web/themes/default-304/templates/help/help_faq_list.htm +++ /dev/null @@ -1,19 +0,0 @@ - -

{tmpl_var name='hf_question'} -

-

- {tmpl_var name='hf_answer'} -

- -
- Delete -
- {tmpl_var name="edit_txt"} -
-
-
-
- -
- - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/help/help_faq_sections_list.htm b/interface/web/themes/default-304/templates/help/help_faq_sections_list.htm deleted file mode 100644 index ddb1a560e..000000000 --- a/interface/web/themes/default-304/templates/help/help_faq_sections_list.htm +++ /dev/null @@ -1,43 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - -
{tmpl_var name="faq_section_name_txt"}{tmpl_var name="faq_delete_txt"}{tmpl_var name="faq_edit_txt"}
{tmpl_var name='hfs_name'} - - - - {tmpl_var name="faq_edit_txt"} -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/help/support_message_edit.htm b/interface/web/themes/default-304/templates/help/support_message_edit.htm deleted file mode 100644 index 06c17977f..000000000 --- a/interface/web/themes/default-304/templates/help/support_message_edit.htm +++ /dev/null @@ -1,33 +0,0 @@ -

-

- -
- -
-
Message -
- - -
-
- - -
-
- - -
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/help/support_message_list.htm b/interface/web/themes/default-304/templates/help/support_message_list.htm deleted file mode 100644 index e828fe9e5..000000000 --- a/interface/web/themes/default-304/templates/help/support_message_list.htm +++ /dev/null @@ -1,53 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="sender_id"}{tmpl_var name="subject"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/help/support_message_view.htm b/interface/web/themes/default-304/templates/help/support_message_view.htm deleted file mode 100644 index 62f2736ec..000000000 --- a/interface/web/themes/default-304/templates/help/support_message_view.htm +++ /dev/null @@ -1,22 +0,0 @@ -

-

- -
- -
-
Message -
- -

{tmpl_var name='subject'}

-
-
- -

{tmpl_var name='message'}

-
-
-
- -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/listpage.tpl.htm b/interface/web/themes/default-304/templates/listpage.tpl.htm deleted file mode 100644 index 429bfd9f2..000000000 --- a/interface/web/themes/default-304/templates/listpage.tpl.htm +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/login/index.htm b/interface/web/themes/default-304/templates/login/index.htm deleted file mode 100644 index e977e0588..000000000 --- a/interface/web/themes/default-304/templates/login/index.htm +++ /dev/null @@ -1,33 +0,0 @@ -

-

- - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/login/password_reset.htm b/interface/web/themes/default-304/templates/login/password_reset.htm deleted file mode 100644 index d6007e67b..000000000 --- a/interface/web/themes/default-304/templates/login/password_reset.htm +++ /dev/null @@ -1,33 +0,0 @@ -

-

- -
- - -

-
- -

ERROR

-
- -
-
{tmpl_var name='pw_reset_txt'} -
- - -
-
- - -
-
- - - - -
- -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_alias_edit.htm b/interface/web/themes/default-304/templates/mail/mail_alias_edit.htm deleted file mode 100644 index 0aa550f9a..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_alias_edit.htm +++ /dev/null @@ -1,39 +0,0 @@ -

-

- -
- -
-
-
-

* {tmpl_var name='email_txt'}

-
- - - -
-
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_alias_list.htm b/interface/web/themes/default-304/templates/mail/mail_alias_list.htm deleted file mode 100644 index 92755ddb9..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_alias_list.htm +++ /dev/null @@ -1,56 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="source"}{tmpl_var name="destination"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_aliasdomain_edit.htm b/interface/web/themes/default-304/templates/mail/mail_aliasdomain_edit.htm deleted file mode 100644 index c41121b7b..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_aliasdomain_edit.htm +++ /dev/null @@ -1,37 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_aliasdomain_list.htm b/interface/web/themes/default-304/templates/mail/mail_aliasdomain_list.htm deleted file mode 100644 index d75c236e6..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_aliasdomain_list.htm +++ /dev/null @@ -1,56 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="source"}{tmpl_var name="destination"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_blacklist_edit.htm b/interface/web/themes/default-304/templates/mail/mail_blacklist_edit.htm deleted file mode 100644 index 493e88b90..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_blacklist_edit.htm +++ /dev/null @@ -1,41 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_blacklist_list.htm b/interface/web/themes/default-304/templates/mail/mail_blacklist_list.htm deleted file mode 100644 index 6dd81c62c..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_blacklist_list.htm +++ /dev/null @@ -1,59 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="source"}{tmpl_var name="type"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_content_filter_edit.htm b/interface/web/themes/default-304/templates/mail/mail_content_filter_edit.htm deleted file mode 100644 index 8dc53e16a..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_content_filter_edit.htm +++ /dev/null @@ -1,50 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_content_filter_list.htm b/interface/web/themes/default-304/templates/mail/mail_content_filter_list.htm deleted file mode 100644 index fda80a6cc..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_content_filter_list.htm +++ /dev/null @@ -1,59 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="pattern"}{tmpl_var name="action"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_domain_admin_list.htm b/interface/web/themes/default-304/templates/mail/mail_domain_admin_list.htm deleted file mode 100644 index 4b26fb14c..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_domain_admin_list.htm +++ /dev/null @@ -1,58 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="sys_groupid"}{tmpl_var name="server_id"}{tmpl_var name="domain"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_domain_catchall_edit.htm b/interface/web/themes/default-304/templates/mail/mail_domain_catchall_edit.htm deleted file mode 100644 index b6b9223fc..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_domain_catchall_edit.htm +++ /dev/null @@ -1,36 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='email_txt'}

-
- - -
-
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_domain_catchall_list.htm b/interface/web/themes/default-304/templates/mail/mail_domain_catchall_list.htm deleted file mode 100644 index d608425dd..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_domain_catchall_list.htm +++ /dev/null @@ -1,56 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="source"}{tmpl_var name="destination"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_domain_edit.htm b/interface/web/themes/default-304/templates/mail/mail_domain_edit.htm deleted file mode 100644 index b84e2d61c..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_domain_edit.htm +++ /dev/null @@ -1,73 +0,0 @@ -

-

- -
- -
-
- -
- - - - - - - - -
-
- - -
-
- - -
- - -
-
- -
- - - - - - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_domain_list.htm b/interface/web/themes/default-304/templates/mail/mail_domain_list.htm deleted file mode 100644 index 958f74300..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_domain_list.htm +++ /dev/null @@ -1,56 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="domain"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_forward_edit.htm b/interface/web/themes/default-304/templates/mail/mail_forward_edit.htm deleted file mode 100644 index d0a85033f..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_forward_edit.htm +++ /dev/null @@ -1,37 +0,0 @@ -

-

- -
- -
-
-
-

* {tmpl_var name='email_txt'}

-
- - - -
-
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_forward_list.htm b/interface/web/themes/default-304/templates/mail/mail_forward_list.htm deleted file mode 100644 index 24a053880..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_forward_list.htm +++ /dev/null @@ -1,56 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="source"}{tmpl_var name="destination"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_get_edit.htm b/interface/web/themes/default-304/templates/mail/mail_get_edit.htm deleted file mode 100644 index 1ba3f9e8f..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_get_edit.htm +++ /dev/null @@ -1,60 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='source_delete_txt'}

-
- {tmpl_var name='source_delete'} -
-
-
-

{tmpl_var name='source_read_all_txt'}

-
- {tmpl_var name='source_read_all'} -
-
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_get_list.htm b/interface/web/themes/default-304/templates/mail/mail_get_list.htm deleted file mode 100644 index 2997bf77c..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_get_list.htm +++ /dev/null @@ -1,62 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="source_server"}{tmpl_var name="source_username"}{tmpl_var name="destination"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_mailinglist_edit.htm b/interface/web/themes/default-304/templates/mail/mail_mailinglist_edit.htm deleted file mode 100644 index 04964c70e..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_mailinglist_edit.htm +++ /dev/null @@ -1,86 +0,0 @@ -

-

- -
- -
-
Mailing List - -
- - -
-
- - -
- - -
-
- - -
- - - -
- -
- - - -
-
- - - -
- -
- - -
-
- - -
-
- - -
-
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/mail/mail_mailinglist_list.htm b/interface/web/themes/default-304/templates/mail/mail_mailinglist_list.htm deleted file mode 100644 index cbb572f74..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_mailinglist_list.htm +++ /dev/null @@ -1,53 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="listname"}{tmpl_var name="domain"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_relay_recipient_edit.htm b/interface/web/themes/default-304/templates/mail/mail_relay_recipient_edit.htm deleted file mode 100644 index 60ac34513..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_relay_recipient_edit.htm +++ /dev/null @@ -1,35 +0,0 @@ -

-

- -
- -
-
Relay recipient -
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_relay_recipient_list.htm b/interface/web/themes/default-304/templates/mail/mail_relay_recipient_list.htm deleted file mode 100644 index 7aeb45f7d..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_relay_recipient_list.htm +++ /dev/null @@ -1,55 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="source"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_transport_edit.htm b/interface/web/themes/default-304/templates/mail/mail_transport_edit.htm deleted file mode 100644 index 0bb8dfaf3..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_transport_edit.htm +++ /dev/null @@ -1,56 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='mx_txt'}

-
- -
-
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_transport_list.htm b/interface/web/themes/default-304/templates/mail/mail_transport_list.htm deleted file mode 100644 index 3f56fb5d2..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_transport_list.htm +++ /dev/null @@ -1,62 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="domain"}{tmpl_var name="transport"}{tmpl_var name="sort_order"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_user_autoresponder_edit.htm b/interface/web/themes/default-304/templates/mail/mail_user_autoresponder_edit.htm deleted file mode 100644 index da6edd48d..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_user_autoresponder_edit.htm +++ /dev/null @@ -1,44 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - {tmpl_var name='autoresponder_start_date'}  - {tmpl_var name='now_txt'} -
-
- - {tmpl_var name='autoresponder_end_date'} -
-
- -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_user_custom_rules_edit.htm b/interface/web/themes/default-304/templates/mail/mail_user_custom_rules_edit.htm deleted file mode 100644 index 78c87ebc0..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_user_custom_rules_edit.htm +++ /dev/null @@ -1,22 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_user_filter_edit.htm b/interface/web/themes/default-304/templates/mail/mail_user_filter_edit.htm deleted file mode 100644 index 694b61876..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_user_filter_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - - - -
-
- - - -
-
- - {tmpl_var name='active'} -
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_user_filter_list.htm b/interface/web/themes/default-304/templates/mail/mail_user_filter_list.htm deleted file mode 100644 index f270944bb..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_user_filter_list.htm +++ /dev/null @@ -1,44 +0,0 @@ - -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="rulename"} - -
-
-
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_user_list.htm b/interface/web/themes/default-304/templates/mail/mail_user_list.htm deleted file mode 100644 index 8e1dda458..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_user_list.htm +++ /dev/null @@ -1,66 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="email"}{tmpl_var name="name"}{tmpl_var name="autoresponder"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_user_mailbox_edit.htm b/interface/web/themes/default-304/templates/mail/mail_user_mailbox_edit.htm deleted file mode 100644 index bb1dd37ba..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_user_mailbox_edit.htm +++ /dev/null @@ -1,81 +0,0 @@ -

-

- -
- -
-
-
- -   {tmpl_var name='name_optional_txt'} -
-
-

* {tmpl_var name='email_txt'}

-
- - - -
-
-
- - -
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
- -

MB

-
-
- -   {tmpl_var name='name_optional_txt'} -
-
- - -
-
-

{tmpl_var name='postfix_txt'}

-
- {tmpl_var name='postfix'} -
-
-
-

{tmpl_var name='disableimap_txt'}

-
- {tmpl_var name='disableimap'} -
-
-
-

{tmpl_var name='disablepop3_txt'}

-
- {tmpl_var name='disablepop3'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_user_mailfilter_edit.htm b/interface/web/themes/default-304/templates/mail/mail_user_mailfilter_edit.htm deleted file mode 100644 index ef053c936..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_user_mailfilter_edit.htm +++ /dev/null @@ -1,26 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='move_junk_txt'}

-
- {tmpl_var name='move_junk'} -
-
-
- - {tmpl_var name='filter_records'} - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_user_stats_list.htm b/interface/web/themes/default-304/templates/mail/mail_user_stats_list.htm deleted file mode 100644 index 2000f34b4..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_user_stats_list.htm +++ /dev/null @@ -1,53 +0,0 @@ -

-

- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="email"}{tmpl_var name="this_month"} MB{tmpl_var name="last_month"} MB{tmpl_var name="this_year"} MB{tmpl_var name="last_year"} MB -
-   -
-
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_whitelist_edit.htm b/interface/web/themes/default-304/templates/mail/mail_whitelist_edit.htm deleted file mode 100644 index cf2aeb596..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_whitelist_edit.htm +++ /dev/null @@ -1,41 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/mail_whitelist_list.htm b/interface/web/themes/default-304/templates/mail/mail_whitelist_list.htm deleted file mode 100644 index 219345fe0..000000000 --- a/interface/web/themes/default-304/templates/mail/mail_whitelist_list.htm +++ /dev/null @@ -1,59 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="source"}{tmpl_var name="type"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_blacklist_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_blacklist_edit.htm deleted file mode 100644 index 34c2249d4..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_blacklist_edit.htm +++ /dev/null @@ -1,49 +0,0 @@ -

-

- -
- -
-
- -
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_blacklist_list.htm b/interface/web/themes/default-304/templates/mail/spamfilter_blacklist_list.htm deleted file mode 100644 index 8a05d36a0..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_blacklist_list.htm +++ /dev/null @@ -1,62 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="priority"}{tmpl_var name="rid"}{tmpl_var name="email"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_config_getmail_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_config_getmail_edit.htm deleted file mode 100644 index 2b3c85a51..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_config_getmail_edit.htm +++ /dev/null @@ -1,22 +0,0 @@ -

-

- -
- -
-
- - - - -
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_config_list.htm b/interface/web/themes/default-304/templates/mail/spamfilter_config_list.htm deleted file mode 100644 index b84a77f9a..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_config_list.htm +++ /dev/null @@ -1,51 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="server_name"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_config_mail_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_config_mail_edit.htm deleted file mode 100644 index 524c9804b..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_config_mail_edit.htm +++ /dev/null @@ -1,66 +0,0 @@ -

-

- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_config_server_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_config_server_edit.htm deleted file mode 100644 index 6cdca69f3..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_config_server_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
- - - - - - - - - - - - - - - - - - - - -
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_other_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_other_edit.htm deleted file mode 100644 index 518be5f47..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_other_edit.htm +++ /dev/null @@ -1,80 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -  Bytes -
-
- - -
-
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_policy_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_policy_edit.htm deleted file mode 100644 index 7279f0a68..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_policy_edit.htm +++ /dev/null @@ -1,64 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_policy_list.htm b/interface/web/themes/default-304/templates/mail/spamfilter_policy_list.htm deleted file mode 100644 index 48d323f77..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_policy_list.htm +++ /dev/null @@ -1,63 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="policy_name"}{tmpl_var name="virus_lover"}{tmpl_var name="spam_lover"}{tmpl_var name="banned_files_lover"}{tmpl_var name="bad_header_lover"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_quarantine_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_quarantine_edit.htm deleted file mode 100644 index 98e9c3e4b..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_quarantine_edit.htm +++ /dev/null @@ -1,44 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
- -
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_taglevel_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_taglevel_edit.htm deleted file mode 100644 index 34577c879..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_taglevel_edit.htm +++ /dev/null @@ -1,52 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_users_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_users_edit.htm deleted file mode 100644 index 7c9620853..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_users_edit.htm +++ /dev/null @@ -1,50 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_users_list.htm b/interface/web/themes/default-304/templates/mail/spamfilter_users_list.htm deleted file mode 100644 index 280e7664f..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_users_list.htm +++ /dev/null @@ -1,62 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="local"}{tmpl_var name="server_id"}{tmpl_var name="priority"}{tmpl_var name="policy_id"}{tmpl_var name="fullname"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_whitelist_edit.htm b/interface/web/themes/default-304/templates/mail/spamfilter_whitelist_edit.htm deleted file mode 100644 index 0d31b7af5..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_whitelist_edit.htm +++ /dev/null @@ -1,49 +0,0 @@ -

-

- -
- -
-
- -
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/spamfilter_whitelist_list.htm b/interface/web/themes/default-304/templates/mail/spamfilter_whitelist_list.htm deleted file mode 100644 index 6c7ff3d83..000000000 --- a/interface/web/themes/default-304/templates/mail/spamfilter_whitelist_list.htm +++ /dev/null @@ -1,63 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="priority"}{tmpl_var name="rid"}{tmpl_var name="email"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mail/user_quota_stats_list.htm b/interface/web/themes/default-304/templates/mail/user_quota_stats_list.htm deleted file mode 100644 index b4f3c1e2f..000000000 --- a/interface/web/themes/default-304/templates/mail/user_quota_stats_list.htm +++ /dev/null @@ -1,52 +0,0 @@ -

- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
   -
- -
-
{tmpl_var name="email"}{tmpl_var name="name"}{tmpl_var name="used"}{tmpl_var name="quota"} -
-   -
-
-
-
- -
diff --git a/interface/web/themes/default-304/templates/mailuser/index.htm b/interface/web/themes/default-304/templates/mailuser/index.htm deleted file mode 100644 index c320253e1..000000000 --- a/interface/web/themes/default-304/templates/mailuser/index.htm +++ /dev/null @@ -1,34 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='email_txt'}

-

{tmpl_var name='email'}

-
-
-

{tmpl_var name='login_txt'}

-

{tmpl_var name='login'}

-
-
-

{tmpl_var name='server_address_txt'}

-

{tmpl_var name='server_name'}

-
-
-

{tmpl_var name='quota_txt'}

-

{tmpl_var name='quota'}

-
-
-

{tmpl_var name='cc_txt'}

-

{tmpl_var name='cc'}

-
-
-   -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mailuser/mail_user_autoresponder_edit.htm b/interface/web/themes/default-304/templates/mailuser/mail_user_autoresponder_edit.htm deleted file mode 100644 index 271fca103..000000000 --- a/interface/web/themes/default-304/templates/mailuser/mail_user_autoresponder_edit.htm +++ /dev/null @@ -1,37 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - {tmpl_var name='autoresponder_start_date'}  - {tmpl_var name='now_txt'} -
-
- - {tmpl_var name='autoresponder_end_date'} -
-
- -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mailuser/mail_user_cc_edit.htm b/interface/web/themes/default-304/templates/mailuser/mail_user_cc_edit.htm deleted file mode 100644 index 089f82430..000000000 --- a/interface/web/themes/default-304/templates/mailuser/mail_user_cc_edit.htm +++ /dev/null @@ -1,26 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='email_txt'}

-

{tmpl_var name='email'}

-
-
- -   {tmpl_var name='name_optional_txt'} -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mailuser/mail_user_filter_edit.htm b/interface/web/themes/default-304/templates/mailuser/mail_user_filter_edit.htm deleted file mode 100644 index a9113c2f6..000000000 --- a/interface/web/themes/default-304/templates/mailuser/mail_user_filter_edit.htm +++ /dev/null @@ -1,38 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - - - -
-
- - - -
-
- - {tmpl_var name='active'} -
-
- - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mailuser/mail_user_filter_list.htm b/interface/web/themes/default-304/templates/mailuser/mail_user_filter_list.htm deleted file mode 100644 index b8501e8dd..000000000 --- a/interface/web/themes/default-304/templates/mailuser/mail_user_filter_list.htm +++ /dev/null @@ -1,50 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="rulename"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mailuser/mail_user_password_edit.htm b/interface/web/themes/default-304/templates/mailuser/mail_user_password_edit.htm deleted file mode 100644 index ed49c1654..000000000 --- a/interface/web/themes/default-304/templates/mailuser/mail_user_password_edit.htm +++ /dev/null @@ -1,37 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='email_txt'}

-

{tmpl_var name='email'}

-
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/mailuser/mail_user_spamfilter_edit.htm b/interface/web/themes/default-304/templates/mailuser/mail_user_spamfilter_edit.htm deleted file mode 100644 index eaa59e950..000000000 --- a/interface/web/themes/default-304/templates/mailuser/mail_user_spamfilter_edit.htm +++ /dev/null @@ -1,28 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='email_txt'}

-

{tmpl_var name='email'}

-
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/main.tpl.htm b/interface/web/themes/default-304/templates/main.tpl.htm deleted file mode 100644 index 7f227e18a..000000000 --- a/interface/web/themes/default-304/templates/main.tpl.htm +++ /dev/null @@ -1,188 +0,0 @@ - - - - <tmpl_var name="app_title"> <tmpl_var name="app_version"> - "/> - - - - - - - - - - - - - - - - - -
-
- - - - - -
- -
-
-
 
-
-
- - -
-
- - -
- -
-
-
-
 
- -
- -
- - - -
-
- - diff --git a/interface/web/themes/default-304/templates/module.tpl.htm b/interface/web/themes/default-304/templates/module.tpl.htm deleted file mode 100644 index f8a26defc..000000000 --- a/interface/web/themes/default-304/templates/module.tpl.htm +++ /dev/null @@ -1,41 +0,0 @@ - -   - - - - - -
- - - - - - - - - - - -
 
- - - - - - - - -
- -
-
-
-
-
-
- - - -   - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/module_tree.tpl.htm b/interface/web/themes/default-304/templates/module_tree.tpl.htm deleted file mode 100644 index be213819d..000000000 --- a/interface/web/themes/default-304/templates/module_tree.tpl.htm +++ /dev/null @@ -1,42 +0,0 @@ - -   - - - - - - -
- - - - - - - - - - - -
 
- - - - - - - - -
- -
-
-
-
-
-
- - - -   - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/monitor/datalog_list.htm b/interface/web/themes/default-304/templates/monitor/datalog_list.htm deleted file mode 100644 index 158a5a84a..000000000 --- a/interface/web/themes/default-304/templates/monitor/datalog_list.htm +++ /dev/null @@ -1,49 +0,0 @@ -

-

- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
 
{tmpl_var name="tstamp"}{tmpl_var name="server_id"}{tmpl_var name="action"}{tmpl_var name="dbtable"} -
- -
-
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/monitor/show_data.htm b/interface/web/themes/default-304/templates/monitor/show_data.htm deleted file mode 100644 index 818208d64..000000000 --- a/interface/web/themes/default-304/templates/monitor/show_data.htm +++ /dev/null @@ -1,12 +0,0 @@ -

-

- -
- -
-
-
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/monitor/show_log.htm b/interface/web/themes/default-304/templates/monitor/show_log.htm deleted file mode 100644 index 271d46bf5..000000000 --- a/interface/web/themes/default-304/templates/monitor/show_log.htm +++ /dev/null @@ -1,25 +0,0 @@ -

-

- -
- -
-
-
-
- - -
-
-
-
- -
-
-
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/monitor/show_sys_state.htm b/interface/web/themes/default-304/templates/monitor/show_sys_state.htm deleted file mode 100644 index 9a5830c19..000000000 --- a/interface/web/themes/default-304/templates/monitor/show_sys_state.htm +++ /dev/null @@ -1,25 +0,0 @@ -

-

- -
- -
-
-
-
- - -
-
-
-
- -
-
-
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/monitor/syslog_list.htm b/interface/web/themes/default-304/templates/monitor/syslog_list.htm deleted file mode 100644 index e3d18cb31..000000000 --- a/interface/web/themes/default-304/templates/monitor/syslog_list.htm +++ /dev/null @@ -1,56 +0,0 @@ -

-

- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
 
{tmpl_var name="tstamp"}{tmpl_var name="server_id"}{tmpl_var name="loglevel"}{tmpl_var name="message"} - - - - - - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sidenav.tpl.htm b/interface/web/themes/default-304/templates/sidenav.tpl.htm deleted file mode 100644 index a5051cf3a..000000000 --- a/interface/web/themes/default-304/templates/sidenav.tpl.htm +++ /dev/null @@ -1,24 +0,0 @@ - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/aps_install_package.htm b/interface/web/themes/default-304/templates/sites/aps_install_package.htm deleted file mode 100644 index eeed54f97..000000000 --- a/interface/web/themes/default-304/templates/sites/aps_install_package.htm +++ /dev/null @@ -1,56 +0,0 @@ -

- {tmpl_var name='installation_txt'}: {tmpl_var name='pkg_name'} {tmpl_var name='pkg_version'}-{tmpl_var name='pkg_release'} - - - {tmpl_var name='pkg_name'} - - -

- - -

ERROR

    {tmpl_var name='error'}
-
- -
- -
-
- {tmpl_var name='basic_settings_txt'} -
- -
http(s):// 
DOMAIN_LIST_SPACE
 / 
- -
- -
- - -
-
- - PKG_SETTINGS_SPACE - - {tmpl_var name='license_txt'} -
- - {tmpl_var name='pkg_license_name'}
- - {tmpl_var name='pkg_license_content'} - - - -
-
- - checked />  {tmpl_var name='acceptance_text'} -
-
- - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/aps_instances_list.htm b/interface/web/themes/default-304/templates/sites/aps_instances_list.htm deleted file mode 100644 index 6f4ab80e8..000000000 --- a/interface/web/themes/default-304/templates/sites/aps_instances_list.htm +++ /dev/null @@ -1,62 +0,0 @@ -

{tmpl_var name="list_head_txt"}

- -
- -
-
{tmpl_var name="list_head_txt"} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='name_txt'}{tmpl_var name='version_txt'}{tmpl_var name='customer_txt'}{tmpl_var name='install_location_txt'}{tmpl_var name='status_txt'} 
  - -
{tmpl_var name='package_name'}{tmpl_var name='package_version'}-{tmpl_var name='package_release'}{tmpl_var name='customer_name'}{tmpl_var name='install_location_short'}{tmpl_var name='instance_status'} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/aps_packagedetails_show.htm b/interface/web/themes/default-304/templates/sites/aps_packagedetails_show.htm deleted file mode 100644 index 18a6fc9e9..000000000 --- a/interface/web/themes/default-304/templates/sites/aps_packagedetails_show.htm +++ /dev/null @@ -1,139 +0,0 @@ -

- - {tmpl_var name='pkg_name'} - - {tmpl_var name='pkg_name'} -

-{tmpl_var name='pkg_summary'} -

 

- -
-
- -
-

 

 

-
- - -
- - -
-

 

- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='version_txt'}{tmpl_var name='pkg_version'} (Release {tmpl_var name='pkg_release'})
{tmpl_var name='category_txt'}{tmpl_var name='pkg_category'}
{tmpl_var name='description_txt'}{tmpl_var name='pkg_description'}
{tmpl_var name='homepage_txt'} - {tmpl_var name='pkg_homepage'} -
{tmpl_var name='installed_size_txt'}{tmpl_var name='pkg_installed_size'}
{tmpl_var name='supported_languages_txt'}{tmpl_var name='pkg_languages'}
{tmpl_var name='config_script_txt'}{tmpl_var name='pkg_config_script'}
{tmpl_var name='license_txt'} - {tmpl_var name='pkg_license_name'}
- {tmpl_var name='pkg_license_content'} - - - -
- - {tmpl_var name='ScreenDescription'}
- {tmpl_var name='ScreenDescription'}

-
-
-
    - -
  • {tmpl_var name='ChangelogVersion'}
  • -
      - -
    • {tmpl_var name='ChangelogDescription'}
    • -
      -
    -
    -
-
{tmpl_var name='php_extensions_txt'}{tmpl_var name='pkg_requirements_php_extensions'}
{tmpl_var name='php_settings_txt'} - {tmpl_var name='PHPSettingName'} = {tmpl_var name='PHPSettingValue'}
-
{tmpl_var name='supported_php_versions_txt'}{tmpl_var name='pkg_requirements_supported_php_versions'}
{tmpl_var name='database_txt'}{tmpl_var name='pkg_requirements_database'}
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/aps_packages_list.htm b/interface/web/themes/default-304/templates/sites/aps_packages_list.htm deleted file mode 100644 index fe9974303..000000000 --- a/interface/web/themes/default-304/templates/sites/aps_packages_list.htm +++ /dev/null @@ -1,50 +0,0 @@ -

{tmpl_var name="list_head_txt"}

- -
- -
-
{tmpl_var name="list_head_txt"} ({tmpl_var name='package_count'}) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='name_txt'}{tmpl_var name='version_txt'}{tmpl_var name='category_txt'}{tmpl_var name='status_txt'} 
{tmpl_var name='name'}{tmpl_var name='version'}-{tmpl_var name='release'}{tmpl_var name='category'}{tmpl_var name='package_status'} 
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/cron_edit.htm b/interface/web/themes/default-304/templates/sites/cron_edit.htm deleted file mode 100644 index 7d47b4e27..000000000 --- a/interface/web/themes/default-304/templates/sites/cron_edit.htm +++ /dev/null @@ -1,68 +0,0 @@ -

-

- -
- -
-
Cron Job -
- - - - - - - - -
-
- - -

e.g. *, */3, 10-20

-
-
- - -

e.g. *, */2, 0, 10-12

-
-
- - -

e.g. *, */4, 1-5

-
-
- - -

e.g. *, 1-6

-
-
- - -

e.g. *, 0, 1-5

-
-
- - -

e.g. /var/www/clients/client1/myscript.sh or http://www.mydomain.com/path/script.php

-
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/cron_list.htm b/interface/web/themes/default-304/templates/sites/cron_list.htm deleted file mode 100644 index f822b89eb..000000000 --- a/interface/web/themes/default-304/templates/sites/cron_list.htm +++ /dev/null @@ -1,74 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"}{tmpl_var name="run_min"}{tmpl_var name="run_hour"}{tmpl_var name="run_mday"}{tmpl_var name="run_month"}{tmpl_var name="run_wday"}{tmpl_var name="command"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/database_admin_list.htm b/interface/web/themes/default-304/templates/sites/database_admin_list.htm deleted file mode 100644 index fda3ba70c..000000000 --- a/interface/web/themes/default-304/templates/sites/database_admin_list.htm +++ /dev/null @@ -1,68 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="remote_access"}{tmpl_var name="sys_groupid"}{tmpl_var name="server_id"}{tmpl_var name="database_user_id"}{tmpl_var name="database_name"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/database_edit.htm b/interface/web/themes/default-304/templates/sites/database_edit.htm deleted file mode 100644 index 4207a789f..000000000 --- a/interface/web/themes/default-304/templates/sites/database_edit.htm +++ /dev/null @@ -1,113 +0,0 @@ -

-

- -
- -
-
- -
- - - - - - - - -
-
-
- - -
-
- - -
-
- -

{tmpl_var name='database_name_prefix'}

- - - - - - -
-
- - -
-
- -  {tmpl_var name='optional_txt'} -
-
- - - - - - - - -
-
-

{tmpl_var name='remote_access_txt'}

-
- {tmpl_var name='remote_access'} -
-
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/database_list.htm b/interface/web/themes/default-304/templates/sites/database_list.htm deleted file mode 100644 index 7b49e8704..000000000 --- a/interface/web/themes/default-304/templates/sites/database_list.htm +++ /dev/null @@ -1,66 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="remote_access"}{tmpl_var name="server_id"}{tmpl_var name="database_user_id"}{tmpl_var name="database_name"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/database_user_admin_list.htm b/interface/web/themes/default-304/templates/sites/database_user_admin_list.htm deleted file mode 100644 index c1bee6768..000000000 --- a/interface/web/themes/default-304/templates/sites/database_user_admin_list.htm +++ /dev/null @@ -1,50 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="database_user"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/database_user_edit.htm b/interface/web/themes/default-304/templates/sites/database_user_edit.htm deleted file mode 100644 index 40e8c96e8..000000000 --- a/interface/web/themes/default-304/templates/sites/database_user_edit.htm +++ /dev/null @@ -1,54 +0,0 @@ -

-

- -
- -
-
- -
- - -
-
- -
- - -
-
-
- -

{tmpl_var name='database_user_prefix'}

- -
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/database_user_list.htm b/interface/web/themes/default-304/templates/sites/database_user_list.htm deleted file mode 100644 index 0a0ea1a63..000000000 --- a/interface/web/themes/default-304/templates/sites/database_user_list.htm +++ /dev/null @@ -1,51 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="database_user"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/ftp_user_advanced.htm b/interface/web/themes/default-304/templates/sites/ftp_user_advanced.htm deleted file mode 100644 index 175b5fe5d..000000000 --- a/interface/web/themes/default-304/templates/sites/ftp_user_advanced.htm +++ /dev/null @@ -1,50 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- -

{tmpl_var name='quota_files_unity_txt'}

-
-
- -

MB

-
-
- -

MB

-
-
- -

kb/s

-
-
- -

kb/s

-
-
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/sites/ftp_user_advanced_client.htm b/interface/web/themes/default-304/templates/sites/ftp_user_advanced_client.htm deleted file mode 100644 index 5918c6d57..000000000 --- a/interface/web/themes/default-304/templates/sites/ftp_user_advanced_client.htm +++ /dev/null @@ -1,22 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/sites/ftp_user_edit.htm b/interface/web/themes/default-304/templates/sites/ftp_user_edit.htm deleted file mode 100644 index cf900015c..000000000 --- a/interface/web/themes/default-304/templates/sites/ftp_user_edit.htm +++ /dev/null @@ -1,54 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- -

{tmpl_var name='username_prefix'}

- -
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
- -

MB

-
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/ftp_user_list.htm b/interface/web/themes/default-304/templates/sites/ftp_user_list.htm deleted file mode 100644 index d455e0d4c..000000000 --- a/interface/web/themes/default-304/templates/sites/ftp_user_list.htm +++ /dev/null @@ -1,62 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"}{tmpl_var name="username"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/shell_user_advanced.htm b/interface/web/themes/default-304/templates/sites/shell_user_advanced.htm deleted file mode 100644 index bad78c81c..000000000 --- a/interface/web/themes/default-304/templates/sites/shell_user_advanced.htm +++ /dev/null @@ -1,34 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/shell_user_edit.htm b/interface/web/themes/default-304/templates/sites/shell_user_edit.htm deleted file mode 100644 index 3cb5d3842..000000000 --- a/interface/web/themes/default-304/templates/sites/shell_user_edit.htm +++ /dev/null @@ -1,72 +0,0 @@ -

-

- -
- -
-
-
- - - - - - - - -
-
- -

{tmpl_var name='username_prefix'}

- -
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
- - -
-
- -

MB

-
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/shell_user_list.htm b/interface/web/themes/default-304/templates/sites/shell_user_list.htm deleted file mode 100644 index 9087c6669..000000000 --- a/interface/web/themes/default-304/templates/sites/shell_user_list.htm +++ /dev/null @@ -1,59 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"}{tmpl_var name="username"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/user_quota_stats_list.htm b/interface/web/themes/default-304/templates/sites/user_quota_stats_list.htm deleted file mode 100644 index adb1e3561..000000000 --- a/interface/web/themes/default-304/templates/sites/user_quota_stats_list.htm +++ /dev/null @@ -1,54 +0,0 @@ -

- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
    
{tmpl_var name="domain"}{tmpl_var name="system_user"}{tmpl_var name="used"}{tmpl_var name="soft"}{tmpl_var name="hard"}{tmpl_var name="files"} -
-   -
-
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_aliasdomain_edit.htm b/interface/web/themes/default-304/templates/sites/web_aliasdomain_edit.htm deleted file mode 100644 index 0ccaa5edf..000000000 --- a/interface/web/themes/default-304/templates/sites/web_aliasdomain_edit.htm +++ /dev/null @@ -1,125 +0,0 @@ -

-

- -
- -
-
-
- - - - - - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_aliasdomain_list.htm b/interface/web/themes/default-304/templates/sites/web_aliasdomain_list.htm deleted file mode 100644 index faab74e19..000000000 --- a/interface/web/themes/default-304/templates/sites/web_aliasdomain_list.htm +++ /dev/null @@ -1,59 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"}{tmpl_var name="domain"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_backup_list.htm b/interface/web/themes/default-304/templates/sites/web_backup_list.htm deleted file mode 100644 index 856397709..000000000 --- a/interface/web/themes/default-304/templates/sites/web_backup_list.htm +++ /dev/null @@ -1,41 +0,0 @@ - -

-
- -

ERROR

-
-

- -
- -
-
- - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="date"}{tmpl_var name="backup_type"}{tmpl_var name="filename"} -
- - -
-
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_domain_admin_list.htm b/interface/web/themes/default-304/templates/sites/web_domain_admin_list.htm deleted file mode 100644 index f363e44c7..000000000 --- a/interface/web/themes/default-304/templates/sites/web_domain_admin_list.htm +++ /dev/null @@ -1,61 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="domain_id"}{tmpl_var name="active"}{tmpl_var name="sys_groupid"}{tmpl_var name="server_id"}{tmpl_var name="domain"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_domain_advanced.htm b/interface/web/themes/default-304/templates/sites/web_domain_advanced.htm deleted file mode 100644 index 87107400a..000000000 --- a/interface/web/themes/default-304/templates/sites/web_domain_advanced.htm +++ /dev/null @@ -1,146 +0,0 @@ -

-

- -
- -
-
- -
- - - -
-
- - - -
-
- - -
-
-
-

{tmpl_var name='php_fpm_use_socket_txt'}

-
- {tmpl_var name='php_fpm_use_socket'} -
-
-
- - -
-
- {tmpl_var name='pm_ondemand_hint_txt'} -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -  s -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_domain_backup.htm b/interface/web/themes/default-304/templates/sites/web_domain_backup.htm deleted file mode 100644 index c46d4e2d4..000000000 --- a/interface/web/themes/default-304/templates/sites/web_domain_backup.htm +++ /dev/null @@ -1,32 +0,0 @@ -

-

- -
- -
-
Backup -
- - -
-
- - -
-
- - {tmpl_var name='backup_records'} - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_domain_edit.htm b/interface/web/themes/default-304/templates/sites/web_domain_edit.htm deleted file mode 100644 index c2d9d21ea..000000000 --- a/interface/web/themes/default-304/templates/sites/web_domain_edit.htm +++ /dev/null @@ -1,249 +0,0 @@ -

-

- -
- -
-
- -
- - - - - - - - -
-
- - -
- - -
- -
- - -
-
-
- - -
-
- - -
-
- - - - - - -
-
- -  MB -
-
- -  MB -
-
-

{tmpl_var name='cgi_txt'}

-
- {tmpl_var name='cgi'} -
-
-
-

{tmpl_var name='ssi_txt'}

-
- {tmpl_var name='ssi'} -
-
-
-

{tmpl_var name='perl_txt'}

-
- {tmpl_var name='perl'} -
-
-
-

{tmpl_var name='ruby_txt'}

-
- {tmpl_var name='ruby'} -
-
-
-

{tmpl_var name='python_txt'}

-
- {tmpl_var name='python'} -
-
-
-

{tmpl_var name='suexec_txt'}

-
- {tmpl_var name='suexec'} -
-
-
-

{tmpl_var name='errordocs_txt'}

-
- {tmpl_var name='errordocs'} -
-
- -
- - -
-
-

{tmpl_var name='ssl_txt'}

-
- {tmpl_var name='ssl'} -
-
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_domain_list.htm b/interface/web/themes/default-304/templates/sites/web_domain_list.htm deleted file mode 100644 index 4ce5d5ddd..000000000 --- a/interface/web/themes/default-304/templates/sites/web_domain_list.htm +++ /dev/null @@ -1,59 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="domain_id"}{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="domain"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_domain_redirect.htm b/interface/web/themes/default-304/templates/sites/web_domain_redirect.htm deleted file mode 100644 index 66a17034c..000000000 --- a/interface/web/themes/default-304/templates/sites/web_domain_redirect.htm +++ /dev/null @@ -1,76 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_domain_ssl.htm b/interface/web/themes/default-304/templates/sites/web_domain_ssl.htm deleted file mode 100644 index 4c27bb772..000000000 --- a/interface/web/themes/default-304/templates/sites/web_domain_ssl.htm +++ /dev/null @@ -1,68 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_domain_stats.htm b/interface/web/themes/default-304/templates/sites/web_domain_stats.htm deleted file mode 100644 index 26eee9477..000000000 --- a/interface/web/themes/default-304/templates/sites/web_domain_stats.htm +++ /dev/null @@ -1,37 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='stats_user_txt'}

admin

-
-
- -  {tmpl_var name='generate_password_txt'} -
-
- - -
- - -
- - -
-
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/sites/web_folder_edit.htm b/interface/web/themes/default-304/templates/sites/web_folder_edit.htm deleted file mode 100644 index 4165ab70b..000000000 --- a/interface/web/themes/default-304/templates/sites/web_folder_edit.htm +++ /dev/null @@ -1,34 +0,0 @@ -

-

- -
- -
-
Folder -
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/sites/web_folder_list.htm b/interface/web/themes/default-304/templates/sites/web_folder_list.htm deleted file mode 100644 index 3dcb9ee0c..000000000 --- a/interface/web/themes/default-304/templates/sites/web_folder_list.htm +++ /dev/null @@ -1,58 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"}{tmpl_var name="path"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_folder_user_edit.htm b/interface/web/themes/default-304/templates/sites/web_folder_user_edit.htm deleted file mode 100644 index 63376d8ed..000000000 --- a/interface/web/themes/default-304/templates/sites/web_folder_user_edit.htm +++ /dev/null @@ -1,49 +0,0 @@ -

-

- -
- -
-
Folder -
- - -
-
- - -
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/sites/web_folder_user_list.htm b/interface/web/themes/default-304/templates/sites/web_folder_user_list.htm deleted file mode 100644 index 2df924f1c..000000000 --- a/interface/web/themes/default-304/templates/sites/web_folder_user_list.htm +++ /dev/null @@ -1,55 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="web_folder_id"}{tmpl_var name="username"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_sites_stats_list.htm b/interface/web/themes/default-304/templates/sites/web_sites_stats_list.htm deleted file mode 100644 index d51e0e2b8..000000000 --- a/interface/web/themes/default-304/templates/sites/web_sites_stats_list.htm +++ /dev/null @@ -1,62 +0,0 @@ -

-

- - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_subdomain_edit.htm b/interface/web/themes/default-304/templates/sites/web_subdomain_edit.htm deleted file mode 100644 index a8b0fe9bd..000000000 --- a/interface/web/themes/default-304/templates/sites/web_subdomain_edit.htm +++ /dev/null @@ -1,112 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_subdomain_list.htm b/interface/web/themes/default-304/templates/sites/web_subdomain_list.htm deleted file mode 100644 index 237cd8568..000000000 --- a/interface/web/themes/default-304/templates/sites/web_subdomain_list.htm +++ /dev/null @@ -1,60 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"}{tmpl_var name="domain"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_advanced.htm b/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_advanced.htm deleted file mode 100644 index 87107400a..000000000 --- a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_advanced.htm +++ /dev/null @@ -1,146 +0,0 @@ -

-

- -
- -
-
- -
- - - -
-
- - - -
-
- - -
-
-
-

{tmpl_var name='php_fpm_use_socket_txt'}

-
- {tmpl_var name='php_fpm_use_socket'} -
-
-
- - -
-
- {tmpl_var name='pm_ondemand_hint_txt'} -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -  s -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_backup.htm b/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_backup.htm deleted file mode 100644 index c46d4e2d4..000000000 --- a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_backup.htm +++ /dev/null @@ -1,32 +0,0 @@ -

-

- -
- -
-
Backup -
- - -
-
- - -
-
- - {tmpl_var name='backup_records'} - - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_edit.htm b/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_edit.htm deleted file mode 100644 index 159830c68..000000000 --- a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_edit.htm +++ /dev/null @@ -1,208 +0,0 @@ -

-

- -
- -
-
- -
- - -
-
- - -
-
- - readonly="readonly" /> -
-
- -  MB -
-
- -  MB -
-
-

{tmpl_var name='cgi_txt'}

-
- {tmpl_var name='cgi'} -
-
-
-

{tmpl_var name='ssi_txt'}

-
- {tmpl_var name='ssi'} -
-
-
-

{tmpl_var name='perl_txt'}

-
- {tmpl_var name='perl'} -
-
-
-

{tmpl_var name='ruby_txt'}

-
- {tmpl_var name='ruby'} -
-
-
-

{tmpl_var name='python_txt'}

-
- {tmpl_var name='python'} -
-
-
-

{tmpl_var name='suexec_txt'}

-
- {tmpl_var name='suexec'} -
-
-
-

{tmpl_var name='errordocs_txt'}

-
- {tmpl_var name='errordocs'} -
-
- -
- - -
-
-

{tmpl_var name='ssl_txt'}

-
- {tmpl_var name='ssl'} -
-
-
- - -
-
- - -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_list.htm b/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_list.htm deleted file mode 100644 index f21698899..000000000 --- a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_list.htm +++ /dev/null @@ -1,60 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"}{tmpl_var name="domain"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_redirect.htm b/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_redirect.htm deleted file mode 100644 index 66a17034c..000000000 --- a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_redirect.htm +++ /dev/null @@ -1,76 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_ssl.htm b/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_ssl.htm deleted file mode 100644 index 4c27bb772..000000000 --- a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_ssl.htm +++ /dev/null @@ -1,68 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_stats.htm b/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_stats.htm deleted file mode 100644 index 26eee9477..000000000 --- a/interface/web/themes/default-304/templates/sites/web_vhost_subdomain_stats.htm +++ /dev/null @@ -1,37 +0,0 @@ -

-

- -
- -
-
-
-

{tmpl_var name='stats_user_txt'}

admin

-
-
- -  {tmpl_var name='generate_password_txt'} -
-
- - -
- - -
- - -
-
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/sites/webdav_user_edit.htm b/interface/web/themes/default-304/templates/sites/webdav_user_edit.htm deleted file mode 100644 index 8dd719dca..000000000 --- a/interface/web/themes/default-304/templates/sites/webdav_user_edit.htm +++ /dev/null @@ -1,64 +0,0 @@ -

-

- -
- -
-
-
- - - - - - - - -
-
- -

{tmpl_var name='username_prefix'}

- disabled="disabled"/> -
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- -

webdav/

- disabled="disabled"/> -
- -
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/sites/webdav_user_list.htm b/interface/web/themes/default-304/templates/sites/webdav_user_list.htm deleted file mode 100644 index ee2b45df8..000000000 --- a/interface/web/themes/default-304/templates/sites/webdav_user_list.htm +++ /dev/null @@ -1,59 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"}{tmpl_var name="username"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/tabbed_form.tpl.htm b/interface/web/themes/default-304/templates/tabbed_form.tpl.htm deleted file mode 100644 index 2890e1b17..000000000 --- a/interface/web/themes/default-304/templates/tabbed_form.tpl.htm +++ /dev/null @@ -1,27 +0,0 @@ - -

-
-
-
    - - -
  • - -
  • -
    -
    -
-
-
- -

-
- -

ERROR

-
- - -
- - - \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/tools/dns_import_tupa.htm b/interface/web/themes/default-304/templates/tools/dns_import_tupa.htm deleted file mode 100644 index b4fad7e6f..000000000 --- a/interface/web/themes/default-304/templates/tools/dns_import_tupa.htm +++ /dev/null @@ -1,56 +0,0 @@ -

Import DNS recods from Tupa PowerDNS controlpanel

-

- -
- -
-
PowerDNS Tupa import -
-

Tupa database hostname

-
- -
-
-
-

Tupa database name

-
- -
-
-
-

Tupa database user

-
- -
-
-
-

Tupa database password

-
- -
-
- -
-

Import DNS Records

-
- -
-
-
- - -

-
- -

ERROR

-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/tools/import_ispconfig.htm b/interface/web/themes/default-304/templates/tools/import_ispconfig.htm deleted file mode 100644 index 7d7b4c17b..000000000 --- a/interface/web/themes/default-304/templates/tools/import_ispconfig.htm +++ /dev/null @@ -1,103 +0,0 @@ -

{tmpl_var name="head_txt"}

-

- -
- -
-
{tmpl_var name="legend_txt"} -
-

Remote API URL

-
- (e.g. https://www.example.com:8080/remote/ ) -
-
-
-

Remote User

-
- -
-
-
-

Remote password

-
- -
-
-
-
- -
-
{tmpl_var name="legend2_txt"} -
- - -
-
- - -
-
-

{tmpl_var name="import_mailbox_txt"}

-
- -
-
-
-

{tmpl_var name="import_user_filter_txt"}

-
- -
-
-
-

{tmpl_var name="import_spamfilter_txt"}

-
- -
-
-
-

{tmpl_var name="import_alias_txt"}

-
- -
-
-
-

{tmpl_var name="import_forward_txt"}

-
- -
-
-
-

{tmpl_var name="import_aliasdomain_txt"}

-
- -
-
-
-
-
- - -

-
- -

ERROR

-
- - - - -
- - -
- -
- - -
-
-
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/tools/import_plesk.htm b/interface/web/themes/default-304/templates/tools/import_plesk.htm deleted file mode 100644 index f72096c70..000000000 --- a/interface/web/themes/default-304/templates/tools/import_plesk.htm +++ /dev/null @@ -1,74 +0,0 @@ -

Import plesk panel data

-

- -
- -
-
Plesk data import -
-

Plesk database hostname

-
- -
-
-
-

Plesk database name

-
- -
-
-
-

Plesk database user

-
- -
-
-
-

Plesk database password

-
- -
-
-
-

Web content backup file (on this server, optional)

-
- -
-
-
-

Maildir content backup file (on this server, optional)

-
- -
-
- -
-

Import all data (that can be imported)

-
- -
-
-
-

Import database contents (make sure the database user has the rights to do so)

-
- -
-
-
- - -

-
- -

ERROR

-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/tools/index.htm b/interface/web/themes/default-304/templates/tools/index.htm deleted file mode 100644 index e1a0acbba..000000000 --- a/interface/web/themes/default-304/templates/tools/index.htm +++ /dev/null @@ -1,20 +0,0 @@ -

-

- -
- -
-
-

ispconfig_tools_note

- - TEST -
- - - -
-   -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/tools/interface_settings.htm b/interface/web/themes/default-304/templates/tools/interface_settings.htm deleted file mode 100644 index 640f187cd..000000000 --- a/interface/web/themes/default-304/templates/tools/interface_settings.htm +++ /dev/null @@ -1,31 +0,0 @@ -

-

- -
- -
-
- -
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/tools/resync.htm b/interface/web/themes/default-304/templates/tools/resync.htm deleted file mode 100644 index c7611b804..000000000 --- a/interface/web/themes/default-304/templates/tools/resync.htm +++ /dev/null @@ -1,67 +0,0 @@ -

{tmpl_var name="head_txt"}

-

- -
- -
-
{tmpl_var name="legend_txt"} -
-

{tmpl_var name="resync_sites_txt"}

-
- -
-
-
-

{tmpl_var name="resync_ftp_txt"}

-
- -
-
-
-

{tmpl_var name="resync_shell_txt"}

-
- -
-
-
-

{tmpl_var name="resync_cron_txt"}

-
- -
-
-
-

{tmpl_var name="resync_db_txt"}

-
- -
-
-
-

{tmpl_var name="resync_mailbox_txt"}

-
- -
-
-
-

{tmpl_var name="resync_dns_txt"}

-
- -
-
-
- - -

-
- -

ERROR

-
- - - -
- - -
-
- -
diff --git a/interface/web/themes/default-304/templates/tools/tpl_default.htm b/interface/web/themes/default-304/templates/tools/tpl_default.htm deleted file mode 100644 index 233b3e990..000000000 --- a/interface/web/themes/default-304/templates/tools/tpl_default.htm +++ /dev/null @@ -1,37 +0,0 @@ -

-

- -
- -
-
-
- - -
-
- - -
- -
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/tools/user_settings.htm b/interface/web/themes/default-304/templates/tools/user_settings.htm deleted file mode 100644 index 6155093aa..000000000 --- a/interface/web/themes/default-304/templates/tools/user_settings.htm +++ /dev/null @@ -1,39 +0,0 @@ -

-

- -
- -
-
-
- -  {tmpl_var name='generate_password_txt'} -
-
-

{tmpl_var name='password_strength_txt'}

-
-

 

-
-
- - -
- - -
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/topnav.tpl.htm b/interface/web/themes/default-304/templates/topnav.tpl.htm deleted file mode 100644 index 4c681960c..000000000 --- a/interface/web/themes/default-304/templates/topnav.tpl.htm +++ /dev/null @@ -1,9 +0,0 @@ -
    - - -
  • - -
  • -
    -
    -
diff --git a/interface/web/themes/default-304/templates/vm/openvz_action.htm b/interface/web/themes/default-304/templates/vm/openvz_action.htm deleted file mode 100644 index 057c851dc..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_action.htm +++ /dev/null @@ -1,53 +0,0 @@ -

-

- -
- -
-
{tmpl_var name="head_txt"} {tmpl_var name='veid'} - - -

-
- -

ERROR

-
- -
-

{tmpl_var name='start_txt'}

-
- -
-
- -
-

{tmpl_var name='stop_txt'}

-
- -
-
- -
-

{tmpl_var name='restart_txt'}

-
- -
-
- -
-

{tmpl_var name='ostemplate_txt'}

-
- -  {tmpl_var name='ostemplate_desc_txt'} -
-
-
- - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_ip_edit.htm b/interface/web/themes/default-304/templates/vm/openvz_ip_edit.htm deleted file mode 100644 index 8b8f34b62..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_ip_edit.htm +++ /dev/null @@ -1,46 +0,0 @@ -

-

- -
- -
-
IP address -
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='reserved_txt'}

-
- {tmpl_var name='reserved'} -
-
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_ip_list.htm b/interface/web/themes/default-304/templates/vm/openvz_ip_list.htm deleted file mode 100644 index 886d4b9e8..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_ip_list.htm +++ /dev/null @@ -1,58 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="server_id"}{tmpl_var name="vm_id"}{tmpl_var name="ip_address"}{tmpl_var name="reserved"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_ostemplate_edit.htm b/interface/web/themes/default-304/templates/vm/openvz_ostemplate_edit.htm deleted file mode 100644 index 6f08d1506..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_ostemplate_edit.htm +++ /dev/null @@ -1,48 +0,0 @@ -

-

- -
- -
-
Domain -
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='allservers_txt'}

-
- {tmpl_var name='allservers'} -
-
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_ostemplate_list.htm b/interface/web/themes/default-304/templates/vm/openvz_ostemplate_list.htm deleted file mode 100644 index c15277422..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_ostemplate_list.htm +++ /dev/null @@ -1,61 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="ostemplate_id"}{tmpl_var name="template_name"}{tmpl_var name="server_id"}{tmpl_var name="allservers"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_template_advanced_edit.htm b/interface/web/themes/default-304/templates/vm/openvz_template_advanced_edit.htm deleted file mode 100644 index 6741ce9ab..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_template_advanced_edit.htm +++ /dev/null @@ -1,110 +0,0 @@ -

-

- -
- -
-
Advanced -
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_template_edit.htm b/interface/web/themes/default-304/templates/vm/openvz_template_edit.htm deleted file mode 100644 index ce356afee..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_template_edit.htm +++ /dev/null @@ -1,74 +0,0 @@ -

-

- -
- -
-
Template -
- - -
-
- -  GB -
-
- -  MB -
-
- -  MB -
-
- -  (8 - 500000) -
-
- -  (1 - 64) -
-
- -  (10 - 6400) -
-
- -  (0 - 7) -
-
- - -
-
-

{tmpl_var name='create_dns_txt'}

-
- {tmpl_var name='create_dns'} -
-
-
- -  {tmpl_var name='nameserver_desc_txt'} -
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_template_list.htm b/interface/web/themes/default-304/templates/vm/openvz_template_list.htm deleted file mode 100644 index 78f102bf7..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_template_list.htm +++ /dev/null @@ -1,52 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="active"}{tmpl_var name="template_name"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_vm_advanced_edit.htm b/interface/web/themes/default-304/templates/vm/openvz_vm_advanced_edit.htm deleted file mode 100644 index a0bf42d3e..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_vm_advanced_edit.htm +++ /dev/null @@ -1,64 +0,0 @@ -

-

- -
- -
-
Advanced -
- - -
-
-

{tmpl_var name='create_dns_txt'}

-
- {tmpl_var name='create_dns'} -
-
-
- -  GB -
-
- -  MB -
-
- -  MB -
-
- -  (8 - 500000) -
-
- -  (1 - 64) -
-
- -  (10 - 6400) -
-
- -  (0 - 7) -
-
- -  {tmpl_var name='nameserver_desc_txt'} -
-
- - -
-
- - - -
- - -
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_vm_edit.htm b/interface/web/themes/default-304/templates/vm/openvz_vm_edit.htm deleted file mode 100644 index 402bad398..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_vm_edit.htm +++ /dev/null @@ -1,107 +0,0 @@ -

-

- -
- -
-
Settings - -
- - - - - - - - -
-
- - -
-
- -
- - -
-
- -
- - -
- - -
- - -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
-

{tmpl_var name='start_boot_txt'}

-
- {tmpl_var name='start_boot'} -
-
-
-

{tmpl_var name='active_txt'}

-
- {tmpl_var name='active'} -
-
-
- - -
-
- - -
-
- - - -
- - -
-
- -
- \ No newline at end of file diff --git a/interface/web/themes/default-304/templates/vm/openvz_vm_list.htm b/interface/web/themes/default-304/templates/vm/openvz_vm_list.htm deleted file mode 100644 index ad0245617..000000000 --- a/interface/web/themes/default-304/templates/vm/openvz_vm_list.htm +++ /dev/null @@ -1,68 +0,0 @@ -

- -
- -
-
{tmpl_var name="toolsarea_head_txt"} -
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='search_limit'}
{tmpl_var name="veid"}{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="ostemplate_id"}{tmpl_var name="template_id"}{tmpl_var name="hostname"}{tmpl_var name="ip_address"} - -
-
-
- -
\ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/!important.txt b/interface/web/themes/default-304/yaml/!important.txt deleted file mode 100644 index ce2cc2df1..000000000 --- a/interface/web/themes/default-304/yaml/!important.txt +++ /dev/null @@ -1,4 +0,0 @@ -DON'T EDIT ANYTHING INSIDE THIS DIRECTORY! - -This theme is based on YAML V3.0.6, Build: 080609 (http://www.yaml.de/) -CSS-Styles can be changed in the /themes/default/css/ directory diff --git a/interface/web/themes/default-304/yaml/core/base.css b/interface/web/themes/default-304/yaml/core/base.css deleted file mode 100644 index bc24d1550..000000000 --- a/interface/web/themes/default-304/yaml/core/base.css +++ /dev/null @@ -1,229 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) YAML core stylesheet - * (de) YAML Basis-Stylesheet - * - * Don't make any changes in this file! - * Your changes should be placed in any css-file in your own stylesheet folder. - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -@media all -{ - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section browser reset - * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html - */ - - /* (en) Global reset of paddings and margins for all HTML elements */ - /* (de) Globales Zurücksetzen der Innen- und Außenabstände für alle HTML-Elemente */ - * { margin:0; padding: 0; } - - /* (en) Correction: margin/padding reset caused too small select boxes. */ - /* (de) Korrektur: Das Zurücksetzen der Abstände verursacht zu kleine Selectboxen. */ - option { padding-left: 0.4em; } - - /** - * (en) Global fix of the Italics bugs in IE 5.x and IE 6 - * (de) Globale Korrektur des Italics Bugs des IE 5.x und IE 6 - * - * @bugfix - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6 - * @valid yes - */ - * html body * { overflow:visible; } - * html iframe, * html frame { overflow:auto; } - * html frameset { overflow:hidden; } - - /* (en) Forcing vertical scrollbars in Netscape, Firefox and Safari browsers */ - /* (de) Erzwingen vertikaler Scrollbalken in Netscape, Firefox und Safari Browsern */ - html { height: 100%; margin-bottom: 1px; } - body { - /* (en) Fix for rounding errors when scaling font sizes in older versions of Opera browser */ - /* (de) Beseitigung von Rundungsfehler beim Skalieren von Schriftgrößen in älteren Opera Versionen */ - font-size: 100.01%; - - /* (en) Standard values for colors and text alignment */ - /* (de) Vorgabe der Standardfarben und Textausrichtung */ - color: #000; - background: #fff; - text-align: left; - } - - /* (en) Clear borders for
and elements */ - /* (de) Rahmen für
und Elemente löschen */ - fieldset, img { border: 0 solid; } - - /* (en) new standard values for lists, blockquote and cite */ - /* (de) Neue Standardwerte für Listen & Zitate */ - ul, ol, dl { margin: 0 0 1em 1em } - li { margin-left: 1.5em; line-height: 1.5em; } - - dt { font-weight: bold; } - dd { margin: 0 0 1em 2em; } - - blockquote { margin: 0 0 1em 1.5em; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section base layout | Basis Layout - * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html - * - * |-------------------------------| - * | #header | - * |-------------------------------| - * | #col1 | #col3 | #col2 | - * | 200 px | flexible | 200px | - * |-------------------------------| - * | #footer | - * |-------------------------------| - */ - - #header { position:relative; } - - /* (en) Text Alignment for #topnav content */ - /* (de) Textausrichtung für #topnav Inhalte */ - #topnav { text-align: right; } - - /* (en) Absolute positioning only within #header */ - /* (de) Absolute Positionierung erfolgt nur innerhalb von #header */ - #header #topnav { - position:absolute; - top: 10px; - right: 10px; - } - - /* (en) Backup for correct positioning */ - /* (de) Absicherung korrekte Positionierung */ - #header, #nav, #main, #footer { clear:both; } - - /* (en/de) Standard: 200 Pixel */ - #col1 { float: left; width: 200px } - /* (en/de) Standard: 200 Pixel */ - #col2 { float:right; width: 200px } - /* (en) Standard: center column with flexible width */ - /* (de) Standard: Flexible mittlere Spalte */ - #col3 { width:auto; margin: 0 200px } - - /* (en) Preparation for absolute positioning within content columns */ - /* (de) Vorbereitung für absolute Positionierungen innerhalb der Inhaltsspalten */ - #col1_content, #col2_content, #col3_content { position:relative; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section generic classes for layout switching | Generische Klassen zur Layoutumschaltung - * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html - * - * .hidecol1 -> 2-column-layout (using #col2 and #col3) - * .hidecol2 -> 2-column-layout (using #col1 and #col3) - * .hideboth -> single-column-layout (using #col3) - */ - - .hideboth #col3 { margin-left: 0; margin-right: 0; } - .hidecol1 #col3 { margin-left: 0; margin-right: 200px; } - .hidecol2 #col3 { margin-left: 200px; margin-right: 0; } - - .hideboth #col1, .hideboth #col2, .hidecol1 #col1, .hidecol2 #col2 { display:none; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section clearing methods - * @see http://yaml.de/en/documentation/basics/general.html - */ - - /* (en) clearfix method for clearing floats */ - /* (de) Clearfix-Methode zum Clearen der Float-Umgebungen */ - .clearfix:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; - } - - /* (en) essential for Safari browser !! */ - /* (de) Diese Angabe benötigt der Safari-Browser zwingend !! */ - .clearfix { display: block; } - - /* (en) overflow method for clearing floats */ - /* (de) Overflow-Methode zum Clearen der Float-Umgebungen */ - .floatbox { overflow:hidden; } - - /* (en) IE-Clearing: Only used in Internet Explorer, switched on in iehacks.css */ - /* (de) IE-Clearing: Benötigt nur der Internet Explorer und über iehacks.css zugeschaltet */ - #ie_clearing { display: none; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section subtemplates - * @see http://www.yaml.de/en/documentation/practice/subtemplates.html - */ - - .subcolumns { width: 100%; overflow:hidden; } - - /* (en) alternative class for optional support of old Mozilla/Netscape browers */ - /* (de) Alternative Klasse zur optionalen Unterstützung alter Mozilla/Netscape-Brower */ - .subcolumns_oldgecko { width: 100%; float:left; } - - .c50l, .c25l, .c33l, .c38l, .c66l, .c75l, .c62l {float: left; } - .c50r, .c25r, .c33r, .c38r, .c66r, .c75r, .c62r {float: right; margin-left: -5px; } - - .c25l, .c25r { width: 25%; } - .c33l, .c33r { width: 33.333%; } - .c50l, .c50r { width: 50%; } - .c66l, .c66r { width: 66.666%; } - .c75l, .c75r { width: 75%; } - .c38l, .c38r { width: 38.2%; } - .c62l, .c62r { width: 61.8%; } - - .subc { padding: 0 0.5em; } - .subcl { padding: 0 1em 0 0; } - .subcr { padding: 0 0 0 1em; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section hidden elements | Versteckte Elemente - * @see http://www.yaml.de/en/documentation/basics/skip-links.html - * - * (en) skip links and hidden content - * (de) Skip-Links und versteckte Inhalte - */ - - /* (en) classes for invisible elements in the base layout */ - /* (de) Klassen für unsichtbare Elemente im Basislayout */ - .skip, .hideme, .print { - position: absolute; - top: -1000em; - left: -1000em; - height: 1px; - width: 1px; - } - - /* (en) make skip links visible when using tab navigation */ - /* (de) Skip-Links für Tab-Navigation sichtbar schalten */ - .skip:focus, .skip:active { - position: static; - top: 0; - left: 0; - height: auto; - width: auto; - } -} diff --git a/interface/web/themes/default-304/yaml/core/iehacks.css b/interface/web/themes/default-304/yaml/core/iehacks.css deleted file mode 100644 index 41c3ee420..000000000 --- a/interface/web/themes/default-304/yaml/core/iehacks.css +++ /dev/null @@ -1,310 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) YAML core stylesheet - structure-independent bugfixes of IE/Win CSS-bugs - * (de) YAML Basis-Stylesheet - Strukturunabhängige Bugfixes von CSS-Bugs des IE/Win - * - * Don't make any changes in this file! - * Your changes should be added to a separate patch-file. - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - * @appdef yaml - */ - -@media all -{ - /** - * (en) Debugging: When you see a green background, IE is getting this stylesheet - * (de) Fehlersuche: Hintergrund leuchtet grün, wenn das Stylesheet korrekt geladen wurde - * - * @debug - * @app-yaml-default disabled - */ - - /* body { background: #0f0; background-image: none; } */ - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Forcing vertical scrollbars is not needed in IE (only for Firefox/Netscape/Safari) - * (de) Erzwingen vertikaler Scrollbalken im IE nicht benötigt (nur im Firefox/Netscape/Safari) - * - * @workaround - * @affected IE 5.x/Win, IE6, IE7 - * @css-for IE 5.x/Win, IE6, IE7 - * @valid yes - */ - - html { height: auto; margin-bottom:0; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Fixes IE5.x and IE6 overflow behavior of textarea and input elements elements - * (de) Korrigiert das fehlerhafte overflow-Verhalten von textarea und input-Elementen - * - * @workaround - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6 - * @valid no - */ - - * html textarea { overflow:scroll; overflow-x: hidden; } - * html input { overflow: hidden; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Stability fixes with 'position:relative' - * (de) Stabilitätsverbesserungen durch 'position:relative' - * - * @bugfix - * @affected IE 5.x/Win, IE6, IE7 - * @css-for IE 5.x/Win, IE6, IE7 - * @valid yes - */ - - body { position:relative; } /* Essential in IE7 for correct layout scaling ... */ - * html body { position:static; } /* ... but not for IE5.x and IE6 */ - #main { position: relative; } /* helpful for several problems in older IE versions*/ - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Clearfix Method for containing floats in IE - * (de) Clearfix-Anpassung für diverse IE-Versionen - * - * @workaround - * @see http://www.456bereastreet.com/archive/200603/new_clearing_method_needed_for_ie7/#comment28 - * @affected IE 5.x/Win, IE6, IE7 - * @css-for IE 5.x/Win, IE6, IE7 - * @valid yes - */ - - - .clearfix { display: inline-block; } /* ... especial for IE7 */ - .clearfix { display: block; } /* ... für IE5,IE6,IE7 */ - * html .clearfix { height: 1%; } /* ... für IE5 + IE6/Win | hasLayout aktivieren */ - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Adjustment of .floatbox class for IE - * (de) Anpassung der .floatbox-Klasse für IE - * - * @workaround - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6 - * @valid yes - */ - - * html .floatbox { width:100%; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Special class for oversized content element - * (de) Spezielle Klasse für übergroße Inhaltselemente - * - * @workaround - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6 - * @valid yes - */ - - .slidebox { - position:relative; - margin-right: -1000px; - height: 1%; - } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en): Bugfix for partially displayed column separators - * (de): Bugfix für unvollständige Darstellung der Spalteninhalte / Spaltentrenner - * - * @bugfix - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6 - * @valid yes - */ - - * html #col1, - * html #col2, - * html #col3 { position:relative; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Preventing several css bugs by forcing "hasLayout" - * (de) Vermeidung verschiedenster Bugs durch Erzwingen von "hasLayout" - * - * @workaround - * @affected IE 5.x/Win, IE6, IE7 - * @css-for IE 5.x/Win, IE6, IE7 - * @valid no - */ - - body { height: 1%; } - #page_margins, #page, #header, #nav, #main, #footer { zoom:1; } /* IE6 & IE7 */ - #page_margins, #page { height: 1%; } /* IE 5.x */ - * html #header, * html #nav, * html #main, * html #footer { width: 100%; } /* IE 5.x & IE6 */ - * html #header, * html #nav, * html #main, * html #footer { wid\th: auto; } /* IE 6 */ - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * Disappearing List-Background Bug - * @see http://www.positioniseverything.net/explorer/ie-listbug.html - * - * @bugfix - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6 - * @valid yes - */ - * html ul, * html ol, * html dl { position: relative; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * List-Numbering Bug - * - * @bugfix - * @affected IE 5.x/Win, IE6, IE7 - * @css-for IE 5.x/Win, IE6, IE7 - * @valid yes - */ - body ol li { display:list-item; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * (en) Workaround for 'collapsing margin at #col3' when using CSS-property clear - * Left margin of #col3 collapses when using clear:both in 1-3-2 (or 2-3-1) layout and right column is the - * longest and left column is the shortest one. For IE6 and IE7 a special workaround was developed - * in YAML. - * - * (de) Workaround für 'kollabierenden Margin an #col3' bei Verwendung der CSS-Eigenschaft clear - * Der linke Margin von #col3 kollabiert bei der Verwendung von clear:both im 1-3-2 (oder 2-3-1) Layout - * wenn gleichzeitig die rechte Spalte die kürzeste und die rechte die Längste ist. Im IE6 und IE7 lässt - * sich der Bug durch eine speziell für YAML entwickelten Workaround umgehen. - * - * @workaround - * @affected IE 5.x/Win, IE6, IE7 - * @css-for IE 5.x/Win, IE6, IE7 - * @valid no - */ - - #ie_clearing { - /* (en) Only a small help for debugging */ - /* (de) Nur eine kleine Hilfe zur Fehlersuche */ - position:static; - - /* (en) Make container visible in IE */ - /* (de) Container sichtbar machen im IE */ - display:block; - - /* (en) No fix possible in IE5.x, normal clearing used instead */ - /* (de) Kein Fix im IE5.x möglich, daher normales Clearing */ - \clear:both; - - /* (en) forcing clearing-like behavior with a simple oversized container in IE6 & IE7*/ - /* (de) IE-Clearing mit 100%-DIV für IE6 bzw. übergroßem Container im IE7 */ - width: 100%; - font-size:0px; - margin: -2px 0 -1em 1px; - } - - * html #ie_clearing { margin: -2px 0 -1em 0; } - #col3_content {margin-bottom:-2px; } - - /* (en) avoid horizontal scrollbars in IE7 in borderless layouts because of negative margins */ - /* (de) Vermeidung horizontaler Scrollbalken bei randabfallenden Layouts im IE7 */ - html { margin-right: 1px; } - * html { margin-right: 0 } - - - /* (en) Bugfix: Essential for IE7 */ - /* (de) Bugfix: Notwendig im IE7 */ - #col3 { position:relative; z-index: -1; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * IE/Win Guillotine Bug - * @see http://www.positioniseverything.net/explorer/guillotine.html - * - * @workaround - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6 - * @valid yes - */ - - * html body a, * html body a:hover { background-color: transparent; } - -} - -@media screen, projection -{ - /** - * (en) IE-Adjustments for content columns and subtemplates - * (de) IE-Anpassung für Spaltencontainer und Subtemplates - * - * Doubled Float-Margin Bug - * @see http://positioniseverything.net/explorer/doubled-margin.html - * - * @bugfix - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6, IE7 - * @valid yes - */ - - #col1, #col2 { display:inline; } - - .c50l, .c25l, .c33l, .c38l, .c66l, .c75l, .c62l, - .c50r, .c25r, .c33r, .c38r, .c66r, .c75r, .c62r { display:inline; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * Internet Explorer and the Expanding Box Problem - * @see http://www.positioniseverything.net/explorer/expandingboxbug.html - * - * @workaround - * @affected IE 5.x/Win, IE6 - * @css-for IE 5.x/Win, IE6 - * @valid yes - */ - - * html #col1_content, - * html #col2_content, - * html #col3_content { word-wrap: break-word; } - - * html .subcolumns .subc, - * html .subcolumns .subcl, - * html .subcolumns .subcr { word-wrap: break-word; overflow:hidden; } -} - -@media print -{ - /** - * (en) Avoid unneeded page breaks of #col3 content in print layout. - * (de) Vermeiden von unnötigen Seitenumbrüchen beim Ausdruck der Spalte #col3. - * - * @bugfix - * @affected IE7 - * @css-for IE 5.x/Win, IE6, IE7 - * @valid yes - */ - - #col3 { height: 1%; } -} diff --git a/interface/web/themes/default-304/yaml/core/print_base.css b/interface/web/themes/default-304/yaml/core/print_base.css deleted file mode 100644 index 4418795dc..000000000 --- a/interface/web/themes/default-304/yaml/core/print_base.css +++ /dev/null @@ -1,120 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) YAML core stylesheet - print layout - * (de) YAML Core-Stylesheet - Druck Layout - * - * Don't make any changes in this file! - * Your changes should be added to 'print_xyz_draft.css' drafts from 'yaml/print/' folder. - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -@media print -{ - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section layout preparation - * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html - */ - - /* (en) Preparing base layout for print */ - /* (de) Basislayout für Druck aufbereiten */ - body, #page_margins, #page, #main { margin:0; padding: 0; border: 0; } - #page_margins, #page { width: 100% !important; min-width:0; max-width: none; } - #header { height: auto; } - - /* (en) Hide unneeded container of the screenlayout in print layout */ - /* (de) Für den Druck nicht benötigte Container des Layouts abschalten */ - #topnav, #nav, #search, #footer { display: none; } - - /* (en) Linearising subtemplates */ - /* (de) Linearisierung der Subtemplates */ - .c25l, .c33l, .c38l, .c50l, .c62l, .c66l, .c75l, - .c25r, .c33r, .c38r, .c50r, .c62r, .c66r, .c75r { - width: 100%; margin:0; float:none; overflow:visible; display:table; - } - .subc, .subcl, .subcr { margin: 0; padding: 0; } - - /* (en) make .print class visible */ - /* (de) .print-Klasse sichtbar schalten */ - .print { position: static; top: 0; left: 0; height: auto; width: auto; } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section content preparation - * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html - */ - - /* (en) Change font to serif */ - /* (de) Zeichensatz auf Serifen umstellen */ - body * { font-family: "Times New Roman", Times, serif; } - code, pre { font-family:"Courier New", Courier, mono; } - body { font-size: 12pt; } - - /* (en) Avoid page breaks right after headings */ - /* (de) Vermeidung von Seitenumbrüchen direkt nach einer Überschrift */ - h1,h2,h3,h4,h5,h6 { page-break-after:avoid; } - - /* (en) Format acronyms and abbreviations for print*/ - /* (de) Auszeichnung von Abkürzungen */ - abbr[title]:after, - acronym[title]:after { content: '(' attr(title) ')'; } - - /* (en) Disable background graphics of links */ - /* (de) Abschalten evlt. vorhandener Hintergrundgrafiken zur Linkkennzeichnung */ - #page a[href^="http:"], - #page a[href^="https:"] { padding-left: 0; background-image: none; } - - /* (en) Enable URL output in print layout */ - /* (de) Sichtbare Auszeichnung der URLs von Links */ - a[href]:after { - content:" "; - color:#444; - background:inherit; - font-style:italic; - } - - /* (en) Preparation for optional column labels */ - /* (de) Vorbereitung für optionale Spaltenauszeichnung */ - #col1_content:before, #col2_content:before, #col3_content:before { - content: ""; - color:#888; - background:inherit; - display:block; - font-weight:bold; - font-size:1.5em; - } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section browser fixes for print layouts - * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html - */ - - /** - * (en) overflow:hidden Bug in print layouts - * (de) overflow:hidden Bug in Drucklayouts - * - * @bugfix - * @since 3.0 - * @affected FF2.0, IE7 - * @css-for all browsers - * @valid yes - */ - - .floatbox, - .subcolumns, - .subcolums_oldgecko { overflow:visible; display: table; } -} diff --git a/interface/web/themes/default-304/yaml/core/slim_base.css b/interface/web/themes/default-304/yaml/core/slim_base.css deleted file mode 100644 index 75596ca9f..000000000 --- a/interface/web/themes/default-304/yaml/core/slim_base.css +++ /dev/null @@ -1,50 +0,0 @@ -@charset "UTF-8"; -/* "Yet Another Multicolumn Layout" v3.0.6 (c) by Dirk Jesse (http://www.yaml.de) -* $Revision: 202 $ $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ */ -@media all { -*{margin:0;padding:0} -option{padding-left:.4em} -* html body *{overflow:visible} -* html iframe,* html frame{overflow:auto} -* html frameset{overflow:hidden} -html{height:100%;margin-bottom:1px} -body{font-size:100.01%;color:#000;background:#fff;text-align:left} -fieldset,img{border:0 solid} -ul,ol,dl{margin:0 0 1em 1em} -li{margin-left:1.5em;line-height:1.5em} -dt{font-weight:700} -dd{margin:0 0 1em 2em} -blockquote{margin:0 0 1em 1.5em} -#header{position:relative} -#topnav{text-align:right} -#header #topnav{position:absolute;top:10px;right:10px} -#header,#nav,#main,#footer{clear:both} -#col1{float:left;width:200px} -#col2{float:right;width:200px} -#col3{width:auto;margin:0 200px} -#col1_content,#col2_content,#col3_content{position:relative} -.hideboth #col3{margin-left:0;margin-right:0} -.hidecol1 #col3{margin-left:0;margin-right:200px} -.hidecol2 #col3{margin-left:200px;margin-right:0} -.hideboth #col1,.hideboth #col2,.hidecol1 #col1,.hidecol2 #col2{display:none} -.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden} -.clearfix{display:block} -.floatbox{overflow:hidden} -#ie_clearing{display:none} -.subcolumns{width:100%;overflow:hidden} -.subcolumns_oldgecko{width:100%;float:left} -.c50l,.c25l,.c33l,.c38l,.c66l,.c75l,.c62l{float:left} -.c50r,.c25r,.c33r,.c38r,.c66r,.c75r,.c62r{float:right;margin-left:-5px} -.c25l,.c25r{width:25%} -.c33l,.c33r{width:33.333%} -.c50l,.c50r{width:50%} -.c66l,.c66r{width:66.666%} -.c75l,.c75r{width:75%} -.c38l,.c38r{width:38.2%} -.c62l,.c62r{width:61.8%} -.subc{padding:0 .5em} -.subcl{padding:0 1em 0 0} -.subcr{padding:0 0 0 1em} -.skip,.hideme,.print{position:absolute;top:-1000em;left:-1000em;height:1px;width:1px} -.skip:focus,.skip:active{position:static;top:0;left:0;height:auto;width:auto} -} \ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/core/slim_iehacks.css b/interface/web/themes/default-304/yaml/core/slim_iehacks.css deleted file mode 100644 index a201c1479..000000000 --- a/interface/web/themes/default-304/yaml/core/slim_iehacks.css +++ /dev/null @@ -1,36 +0,0 @@ -@charset UTF-8; -/* "Yet Another Multicolumn Layout" v3.0.6 (c) by Dirk Jesse (http://www.yaml.de) -* $Revision: 202 $ $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ */ -@media all { -html{height:auto;margin-bottom:0;margin-right:1px} -* html textarea{overflow:scroll;overflow-x:hidden} -* html input{overflow:hidden} -body{position:relative;height:1%} -* html body{position:static} -#main{position:relative} -.clearfix{display:inline-block} -.clearfix{display:block} -* html .clearfix{height:1%} -* html .floatbox{width:100%} -.slidebox{position:relative;margin-right:-1000px;height:1%} -* html #col1,* html #col2,* html #col3{position:relative} -#page_margins,#page,#header,#nav,#main,#footer{zoom:1} -#page_margins,#page{height:1%} -* html #header,* html #nav,* html #main,* html #footer{width:100%;wid\th:auto} -* html ul,* html ol,* html dl{position:relative} -body ol li{display:list-item} -#ie_clearing{position:static;display:block;\clear:both;width:100%;font-size:0;margin:-2px 0 -1em 1px} -* html #ie_clearing{margin:-2px 0 -1em} -#col3_content{margin-bottom:-2px} -* html{margin-right:0} -#col3{position:relative;z-index:-1} -* html body a,* html body a:hover{background-color:transparent} -} -@media screen,projection { -#col1,#col2,.c50l,.c25l,.c33l,.c38l,.c66l,.c75l,.c62l,.c50r,.c25r,.c33r,.c38r,.c66r,.c75r,.c62r{display:inline} -* html #col1_content,* html #col2_content,* html #col3_content{word-wrap:break-word} -* html .subcolumns .subc,* html .subcolumns .subcl,* html .subcolumns .subcr{word-wrap:break-word;overflow:hidden} -} -@media print { -#col3{height:1%} -} \ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/core/slim_print_base.css b/interface/web/themes/default-304/yaml/core/slim_print_base.css deleted file mode 100644 index f371b158c..000000000 --- a/interface/web/themes/default-304/yaml/core/slim_print_base.css +++ /dev/null @@ -1,21 +0,0 @@ -@charset "UTF-8"; -/* "Yet Another Multicolumn Layout" v3.0.6 (c) by Dirk Jesse (http://www.yaml.de) -* $Revision: 202 $ $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ */ -@media print { -body,#page_margins,#page,#main{border:0;margin:0;padding:0} -#page_margins,#page{width:100%!important;min-width:0;max-width:none} -#header{height:auto} -#topnav,#nav,#search,#footer{display:none} -.c25l,.c33l,.c38l,.c50l,.c62l,.c66l,.c75l,.c25r,.c33r,.c38r,.c50r,.c62r,.c66r,.c75r{width:100%;float:none;overflow:visible;display:table;margin:0} -.subc,.subcl,.subcr{margin:0;padding:0} -.print{position:static;top:0;left:0;height:auto;width:auto} -body *{font-family:"Times New Roman", Times, serif} -code,pre{font-family:"Courier New", Courier, mono} -body{font-size:12pt} -h1,h2,h3,h4,h5,h6{page-break-after:avoid} -abbr[title]:after,acronym[title]:after{content:'(' attr(title) ')'} -#page a[href^="http:"],#page a[href^="https:"]{padding-left:0;background-image:none} -a[href]:after{content:" ";color:#444;background:inherit;font-style:italic} -#col1_content:before,#col2_content:before,#col3_content:before{content:"";color:#888;background:inherit;display:block;font-weight:700;font-size:1.5em} -.floatbox,.subcolumns,.subcolums_oldgecko{overflow:visible;display:table} -} \ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/debug/debug.css b/interface/web/themes/default-304/yaml/debug/debug.css deleted file mode 100644 index f0a1304f7..000000000 --- a/interface/web/themes/default-304/yaml/debug/debug.css +++ /dev/null @@ -1,157 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) YAML debugging stylesheet - * (de) YAML Stylesheet zur Fehlersuche - * - * Don't make any changes in this file! - * Your changes should be placed in any css-file in your own stylesheet folder. - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 43 $ - * @lastmodified $Date: 2007-06-11 16:09:28 +0200 (Mo, 11 Jun 2007) $ - */ - -@media all -{ - /*------------------------------------------------------------------------------------------------------*/ - - /** - * @section layout preparation for debugging - * @see http://www.yaml.de/en/documentation/practice/drafting-and-debugging.html - */ - - /* Adding debugging background */ - body { background: transparent url(images/grid_pattern.png) top left no-repeat !important; } - - /* CSS-Warning, if core stylesheet 'iehacks.css' is missing in the layout */ - *:first-child+html #ie_clearing { display:block; } - * html #ie_clearing { display:block; } - - #ie_clearing { - width: 500px; - font-size: 25px; - position:absolute; - top: -2px; - left:0px; - background: url("images/warning_iehacks.gif") top left no-repeat; - } - - /** - * @section pixel grid - */ - - .bg_grid { - background-image:url(images/grid_pattern.png) !important; - background-repeat:no-repeat; - background-position:top left !important; - } - - /** - * @section transparency - */ - - .transOFF { -moz-opacity: 1.0; opacity: 1.0; filter: alpha(Opacity=100);} - .trans50, - .transON { -moz-opacity: 0.5; opacity: 0.5; filter: alpha(Opacity=50);} - .trans25 { -moz-opacity: 0.25; opacity: 0.25; filter: alpha(Opacity=25);} - .trans75 { -moz-opacity: 0.75; opacity: 0.75; filter: alpha(Opacity=75);} - - /** - * @section colors - */ - - .bg_red { background-color: #f00 !important;} - .bg_blue { background-color: #00f !important;} - .bg_green { background-color: #0f0 !important;} - - /** - * @visualize semantic structure - * - * Many thanks to Tomas Caspers for some ideas - */ - - div[id] { padding: 0 !important; margin: 2px; border: 1px #000 solid !important; } - div[id]:before { - display:block; - color: #fff; - background: #800; - padding: 2px; - font: bold .8em "Lucida console", monospace; - content: "[div #"attr(id)"]"; - } - - div[class="floatbox"] { background: #f4f4f4; } - div[class="floatbox"]:before { - display:block; - color: #fff; - background: #66a; - padding: 2px; - font: bold .8em "Lucida console", monospace; - content: "[div ."attr(class)"]"; - } - - div[class="subcolumns"] { background: #f8f8f8; } - div[class="subcolumns"]:before { - display:block; - color: #fff; - background: #444; - padding: 2px; - font: bold .8em "Lucida console", monospace; - content: "[div ."attr(class)"]"; - } - - div[class="subcolumns"] > div:before { - display:block; - color: #fff; - background: #080; - padding: 2px; - font: bold .8em "Lucida console", monospace; - content: "[div ."attr(class)"]"; - } - - div[class="subc"], div[class="subcl"], div[class="subcr"] { background: #eee; } - div[class="subc"]:before, div[class="subcl"]:before, div[class="subcr"]:before { - display:block; - color: #fff; - background: #6a6; - padding: 2px; - font: bold .8em "Lucida console", monospace; - content: "[div ."attr(class)"]"; - } - - h1:before { content: "[h1] "; } - h2:before { content: "[h2] "; } - h3:before { content: "[h3] "; } - h4:before { content: "[h4] "; } - h5:before { content: "[h5] "; } - h6:before { content: "[h6] "; } - - a:hover:before { content: " ( href='" attr(href) "' ) "; } - a:hover:after { content: " [ title='"attr(title)"' ] "; } - - img:after { content:" ( alt='" attr(alt)"' ) "; } - - address, blockquote, dl, fieldset, form, h1, h2, h3, h4, ol, p, pre, ul { - border: 1px dotted #888; - margin: 2px; - padding: 2px; - display: block; - } - - /** - * @visualize inline elements - * - * Many thanks to Tomas Caspers for some ideas - */ - - abbr, acronym { background: #d9eaff; } - q, cite, dfn, kbd { background: #ffe3f6; } - /* :lang(de), :lang(en), :lang(fr), :lang(es) { background: #d9efaa !important; } */ -} diff --git a/interface/web/themes/default-304/yaml/debug/images/grid_pattern.png b/interface/web/themes/default-304/yaml/debug/images/grid_pattern.png deleted file mode 100644 index 55e65e477c61a692d8d9c9cafd4cd986097897db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29833 zcmeFZ2UL??ur?ZuV!?m~Y!R>_f&z+w(osYN1QZCpBi#T}q(cxv1rwU+E4yN0SOL01cB_5H5L`Ub<4=y+T6;> z+~SyosOT{ZOLGI`yZR7_9X3qfP(gn5fFQnS{;Jetl%JHj9Nms%a#y`kv@cJy9^bh~ z^6~MgPjt5{_lk*ag};w{41N9_^_1@Rx!qp7I=2rVkAChR^Vq9)wcjzuw7mrXrJk7A zAvByi7nakwy<*4ifEyQYbE9@AU1iwY=U(%+x_^*e#BJ9p3&@@wId_g*5l&J-mRtk` z&Yq~)UIwACYo*!&sgMq-IDhmJiDv9-kU9nGAw`At%ga(bP_z&chv!%0AtKi)P+_l6 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 diff --git a/interface/web/themes/default-304/yaml/navigation/nav_vlist.css b/interface/web/themes/default-304/yaml/navigation/nav_vlist.css deleted file mode 100644 index 7f1a5b933..000000000 --- a/interface/web/themes/default-304/yaml/navigation/nav_vlist.css +++ /dev/null @@ -1,109 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Vertical list navigation "vlist" - * (de) Vertikale Navigationsliste "vlist" - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -@media all -{ - #submenu { - width: 100%; - overflow: hidden; - margin: 2.4em 0 1.5em 0; - list-style-type: none; - border-top: 2px #ddd solid; - border-bottom: 2px #ddd solid; - } - - #submenu ul { list-style-type: none; margin:0; padding: 0; } - #submenu li { float:left; width: 100%; margin:0; padding: 0; } - - #submenu a, - #submenu strong { - display:block; - width: 90%; - padding: 3px 0px 3px 10%; - text-decoration: none; - background-color:#fff; - color: #444; - border-bottom: 1px #eee solid; - } - - /* Menu Title */ - #submenu li#title { - width: 90%; - padding: 3px 0px 3px 10%; - font-weight: bold; - color: #444; - background-color: #fff; - border-bottom: 4px #888 solid; - } - - #submenu li span { - display:block; - width: 90%; - padding: 3px 0px 3px 10%; - font-weight: bold; - border-bottom: 1px #ddd solid; - } - - /* Level 1 */ - #submenu li#active, - #submenu li strong { - width: 90%; - padding: 3px 0px 3px 10%; - font-weight: bold; - color: #fff; - background-color:#aab; - border-bottom: 1px #eee solid; - } - - #submenu li a { width: 90%; padding-left: 10%; background-color:#fff; color: #444; } - #submenu li a:focus, - #submenu li a:hover, - #submenu li a:active { background-color:#f63; color: #fff; } - - /* Level 2 */ - #submenu li ul li a, - #submenu li ul li#active, - #submenu li ul li strong, - #submenu li ul li span { width: 80%; padding-left: 20%; } - - #submenu li ul li a { background-color:#f8f8f8; color: #666; } - #submenu li ul li a:focus, - #submenu li ul li a:hover, - #submenu li ul li a:active { background-color:#f63; color: #fff; } - - /* Level 3 */ - #submenu li ul li ul li a, - #submenu li ul li ul li#active, - #submenu li ul li ul li strong, - #submenu li ul li ul li span { width: 70%; padding-left: 30%; } - - #submenu li ul li ul li a { background-color:#fcfcfc; color: #888; } - #submenu li ul li ul li a:focus, - #submenu li ul li ul li a:hover, - #submenu li ul li ul li a:active { background-color:#f63; color: #fff; } - - /* Level 4 */ - #submenu li ul li ul li ul li a, - #submenu li ul li ul li ul li#active, - #submenu li ul li ul li ul li strong, - #submenu li ul li ul li ul li span { width: 60%; padding-left: 40%; } - - #submenu li ul li ul li ul li a { background-color:#ffffff; color: #aaa; } - #submenu li ul li ul li ul li a:focus, - #submenu li ul li ul li ul li a:hover, - #submenu li ul li ul li ul li a:active { background-color:#f63; color: #fff; } -} \ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/patches/patch_layout_draft.css b/interface/web/themes/default-304/yaml/patches/patch_layout_draft.css deleted file mode 100644 index 4490d7f1f..000000000 --- a/interface/web/themes/default-304/yaml/patches/patch_layout_draft.css +++ /dev/null @@ -1,29 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Example of a patch stylesheet for the Internet Explorer - * (de) Beispiel für ein Anpassungs-Stylesheet für den Internet Explorer - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* Layout independent adjustments | Layout-unabhängige Anpassungen ----------------------------------- */ -@import url(/yaml/core/iehacks.css); - -/* Box model adjustments for vlist navigation | Box-Modell-Anpassungen für vlist-Navigation */ -/* @import url(/yaml/patches/patch_nav_vlist.css); */ - -/* Layout-dependent adjustments | Layout-abhängige Anpassungen --------------------------------------- */ -@media screen, projection -{ - /* add your adjustments here | Fügen Sie Ihre Anpassungen hier ein */ - -} diff --git a/interface/web/themes/default-304/yaml/patches/patch_nav_vlist.css b/interface/web/themes/default-304/yaml/patches/patch_nav_vlist.css deleted file mode 100644 index cbf29487f..000000000 --- a/interface/web/themes/default-304/yaml/patches/patch_nav_vlist.css +++ /dev/null @@ -1,61 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) IE adjustment stylesheet for YAML vlist navigation - * Import this file within the IE-patch-file if needed in your layout - * - * (de) IE Anpassungs-Stylesheet für YAML vlist-Navigation - * Einbindung ins Layout erfolgt über den Import innerhalb des IE-Anspassungs-Stylesheet - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -@media screen, projection -{ - /** - * Box Model Bug - * (en) Adjustment of width values for list elements of the menu in IE 5.x/Win. - * Note: If IE6 is running in quirks mode, it also needs 100% values! - * - * (de) Korrektur der Breitenangaben der Listenelemente des Submenüs im IE 5.x/Win. - * Hinweis: Befindet sich der IE6 im Quirks Mode, so benötigt er ebenfalls 100%-Werte ! - * - * @bugfix - * @affected IE 5.x/Win (IE6 in Quirks-Mode) - * @css-for IE 5.x/Win, IE6 - * @valid no - */ - - /* level 1 */ - * html #submenu li a, - * html #submenu li strong, - * html #submenu li span, - * html #submenu li#title, - * html #submenu li#active { width: 100%; w\idth: 90%; } - - /* level 2 */ - * html #submenu li ul li a, - * html #submenu li ul li strong, - * html #submenu li ul li span, - * html #submenu li ul li#active { width: 100%; w\idth: 80%; } - - /* level 3 */ - * html #submenu li ul li ul li a, - * html #submenu li ul li ul li strong, - * html #submenu li ul li ul li span, - * html #submenu li ul li ul li#active { width: 100%; w\idth: 70%; } - - /* level 4 */ - * html #submenu li ul li ul li ul li a, - * html #submenu li ul li ul li ul li strong, - * html #submenu li ul li ul li ul li span, - * html #submenu li ul li ul li ul li#active { width: 100%; w\idth: 60%; } -} diff --git a/interface/web/themes/default-304/yaml/print/print_003_draft.css b/interface/web/themes/default-304/yaml/print/print_003_draft.css deleted file mode 100644 index 0363b4ee8..000000000 --- a/interface/web/themes/default-304/yaml/print/print_003_draft.css +++ /dev/null @@ -1,32 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) print stylesheet - * (de) Druck-Stylesheet - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* import print base styles | Basisformatierung für Drucklayout einbinden */ -@import url(../core/print_base.css); - -/* #col1 - 0 -** #col2 - 0 -** #col3 - x -*/ - -@media print -{ - #col1 { display:none; } - #col2 { display:none; } - - #col3, #col3_content { width: 100%; margin:0; padding: 0; border:0; } -} \ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/print/print_020_draft.css b/interface/web/themes/default-304/yaml/print/print_020_draft.css deleted file mode 100644 index 2ded4f114..000000000 --- a/interface/web/themes/default-304/yaml/print/print_020_draft.css +++ /dev/null @@ -1,31 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) print stylesheet - * (de) Druck-Stylesheet - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* import print base styles | Basisformatierung für Drucklayout einbinden */ -@import url(../core/print_base.css); - -/* #col1 - 0 -** #col2 - x -** #col3 - 0 -*/ -@media print -{ - #col1 { display:none; } - #col3 { display:none; } - - #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; } -} \ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/print/print_023_draft.css b/interface/web/themes/default-304/yaml/print/print_023_draft.css deleted file mode 100644 index e005a588a..000000000 --- a/interface/web/themes/default-304/yaml/print/print_023_draft.css +++ /dev/null @@ -1,40 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) print stylesheet - * (de) Druck-Stylesheet - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* import print base styles | Basisformatierung für Drucklayout einbinden */ -@import url(../core/print_base.css); - -/* #col1 - 0 -** #col2 - x -** #col3 - x -*/ - -@media print -{ - #col1 { display:none; } - - #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; } - #col2_content { page-break-after:always; } - - #col3, #col3_content {width: 100%; margin:0; padding: 0; border:0; } - - /* Optional Column Labels | Optionale Spaltenauszeichnung - #col2_content:before { content:" [ left | middle | right column ]"; } - #col3_content:before { content:" [ left | middle | right column ]"; } - */ -} - diff --git a/interface/web/themes/default-304/yaml/print/print_100_draft.css b/interface/web/themes/default-304/yaml/print/print_100_draft.css deleted file mode 100644 index 2a6c71b19..000000000 --- a/interface/web/themes/default-304/yaml/print/print_100_draft.css +++ /dev/null @@ -1,31 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) print stylesheet - * (de) Druck-Stylesheet - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* import print base styles | Basisformatierung für Drucklayout einbinden */ -@import url(../core/print_base.css); - -/* #col1 - x -** #col2 - 0 -** #col3 - 0 -*/ -@media print -{ - #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; } - - #col2 { display:none; } - #col3 { display:none; } -} diff --git a/interface/web/themes/default-304/yaml/print/print_103_draft.css b/interface/web/themes/default-304/yaml/print/print_103_draft.css deleted file mode 100644 index a43637470..000000000 --- a/interface/web/themes/default-304/yaml/print/print_103_draft.css +++ /dev/null @@ -1,38 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) print stylesheet - * (de) Druck-Stylesheet - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* import print base styles | Basisformatierung für Drucklayout einbinden */ -@import url(../core/print_base.css); - -/* #col1 - x -** #col2 - 0 -** #col3 - x -*/ -@media print -{ - #col1, #col1_content {float:none; width: 100%; margin: 0; padding: 0; border: 0; } - #col1_content {page-break-after:always; } - - #col2 { display:none; } - - #col3, #col3_content { width: 100%; margin:0; padding: 0; border:0; } - - /* Optional Column Labels | Optionale Spaltenauszeichnung - #col1_content:before { content:" [ left | middle | right column ]"; } - #col3_content:before { content:" [ left | middle | right column ]"; } - */ -} \ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/print/print_120_draft.css b/interface/web/themes/default-304/yaml/print/print_120_draft.css deleted file mode 100644 index 50ee57149..000000000 --- a/interface/web/themes/default-304/yaml/print/print_120_draft.css +++ /dev/null @@ -1,39 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) print stylesheet - * (de) Druck-Stylesheet - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* import print base styles | Basisformatierung für Drucklayout einbinden */ -@import url(../core/print_base.css); - -/* #col1 - x -** #col2 - x -** #col3 - 0 -*/ -@media print -{ - #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; } - #col1_content { page-break-after:always; } - - #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; } - #col2_content { page-break-after:always; } - - #col3 { display:none; } - - /* Optional Column Labels | Optionale Spaltenauszeichnung - #col1_content:before { content:" [ left | middle | right column ]"; } - #col2_content:before { content:" [ left | middle | right column ]"; } - */ -} diff --git a/interface/web/themes/default-304/yaml/print/print_123_draft.css b/interface/web/themes/default-304/yaml/print/print_123_draft.css deleted file mode 100644 index 42a7de1d5..000000000 --- a/interface/web/themes/default-304/yaml/print/print_123_draft.css +++ /dev/null @@ -1,40 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) print stylesheet - * (de) Druck-Stylesheet - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -/* import print base styles | Basisformatierung für Drucklayout einbinden */ -@import url(../core/print_base.css); - -/* #col1 - x -** #col2 - x -** #col3 - x -*/ -@media print -{ - #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; } - #col1_content { page-break-after:always; } - - #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; } - #col2_content { page-break-after:always; } - - #col3, #col3_content { width: 100%; margin:0; padding: 0; border:0; } - - /* Optional Column Labels | Optionale Spaltenauszeichnung - #col1_content:before { content:" [ left | middle | right column ]"; } - #col2_content:before { content:" [ left | middle | right column ]"; } - #col3_content:before { content:" [ left | middle | right column ]"; } - */ -} \ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/screen/basemod_draft.css b/interface/web/themes/default-304/yaml/screen/basemod_draft.css deleted file mode 100644 index 6d33ff8dd..000000000 --- a/interface/web/themes/default-304/yaml/screen/basemod_draft.css +++ /dev/null @@ -1,70 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Template for designing a screen layout - * (de) Gestaltungsvorlage für die Erstellung eines Screenlayouts - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - */ - -@media screen, projection -{ - /*------------------------------------------------------------------------------------------------------*/ - - /** - * Design of the Basic Layout | Gestaltung des YAML Basis-Layouts - * - * @section layout-basics - */ - - /* Page margins and background | Randbereiche & Seitenhintergrund */ - body { } - - /* Layout: Width, Background, Border | Layout: Breite, Hintergrund, Rahmen */ - #page_margins { } - #page{ } - - /* Design of the Main Layout Elements | Gestaltung der Hauptelemente des Layouts */ - #header { } - #topnav { } - - #main { } - - #footer { } - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * Formatting of the Content Area | Formatierung der Inhaltsbereichs - * - * @section layout-main - */ - - #col1 { } - #col1_content { } - - #col2 { } - #col2_content { } - - #col3 { } - #col3_content { } - - - /*------------------------------------------------------------------------------------------------------*/ - - /** - * Design of Additional Layout Elements | Gestaltung weiterer Layoutelemente - * - * @section layout-misc - */ - - -} \ No newline at end of file diff --git a/interface/web/themes/default-304/yaml/screen/content_default.css b/interface/web/themes/default-304/yaml/screen/content_default.css deleted file mode 100644 index 1852ac116..000000000 --- a/interface/web/themes/default-304/yaml/screen/content_default.css +++ /dev/null @@ -1,170 +0,0 @@ -@charset "UTF-8"; -/** - * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework - * - * (en) Uniform design of standard content elements - * (de) Einheitliche Standardformatierungen für die wichtigten Inhalts-Elemente - * - * @copyright Copyright 2005-2008, Dirk Jesse - * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/), - * YAML-C (http://www.yaml.de/en/license/license-conditions.html) - * @link http://www.yaml.de - * @package yaml - * @version 3.0.6 - * @revision $Revision: 202 $ - * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ - * @appdef yaml - */ - -@media all -{ - /** - * Fonts - * (en) font-family and font-size selection for headings and standard text elements - * (de) Zeichensatz und Schriftgrößen für Überschriften und übliche Text-Elemente - * - * @section content-fonts - */ - - /* (en) reset font size for all elements to standard (16 Pixel) */ - /* (de) Alle Schriftgrößen auf Standardgröße (16 Pixel) zurücksetzen */ - html * { font-size: 100.01%; } - - /* (en) reset monospaced elements to font size 16px in Gecko browsers */ - /* (de) Schriftgröße von monospaced Elemente auf 16 Pixel setzen */ - textarea, pre, tt, code { - font-family:"Courier New", Courier, monospace; - } - - /* (en) base layout gets standard font size 12px */ - /* (de) Basis-Layout erhält Standardschriftgröße von 12 Pixeln */ - body { - font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; - font-size: 75.00%; - } - - h1,h2,h3,h4,h5,h6 { font-weight:bold; margin: 0 0 0.25em 0; } - h1 { font-size: 200% } /* 24px */ - h2 { font-size: 166.67% } /* 20px */ - h3 { font-size: 150% } /* 18px */ - h4 { font-size: 133.33% } /* 16px */ - h5 { font-size: 116.67% } /* 14px */ - h6 { font-size: 116.67%; font-style:italic; } /* 14px */ - - p { line-height: 1.5em; margin: 0 0 1em 0; } - - /* ### Lists | Listen #### */ - - ul, ol, dl { line-height: 1.5em; margin: 0 0 1em 1em; } - li { margin-left: 1.5em; line-height: 1.5em; } - - dt { font-weight: bold; } - dd { margin: 0 0 1em 2em; } - - /* ### text formatting | Textauszeichnung ### */ - - cite, blockquote { font-style:italic; } - blockquote { margin: 0 0 1em 1.5em; } - - strong,b { font-weight: bold; } - em,i { font-style:italic; } - - pre, code { font-family: monospace; font-size: 1.1em; } - - acronym, abbr { - letter-spacing: .07em; - border-bottom: .1em dashed #c00; - cursor: help; - } - - /** - * Generic Content Classes - * (en) standard classes for positioning and highlighting - * (de) Standardklassen zur Positionierung und Hervorhebung - * - * @section content-generic-classes - */ - - .note { background: #dfd; padding: 1em; border-top: 1px #bdb dotted; border-bottom: 1px #bdb dotted; } - .important { background: #ffd; padding: 1em; border-top: 1px #ddb dotted; border-bottom: 1px #ddb dotted; } - .warning { background: #fdd; padding: 1em; border-top: 1px #dbb dotted; border-bottom: 1px #dbb dotted; } - - .float_left { float: left; display:inline; margin-right: 1em; margin-bottom: 0.15em; } - .float_right { float: right; display:inline; margin-left: 1em; margin-bottom: 0.15em; } - .center { text-align:center; margin: 0.5em auto; } - - /** - * External Links - * - * (en) Formatting of hyperlinks - * (de) Gestaltung von Hyperlinks - * - */ - - a { color: #900; text-decoration:none; } - a:focus, - a:hover, - a:active { background-color: #fee; text-decoration:underline; } - - #topnav a { color: #aac; font-weight: bold; background:transparent; text-decoration:none; } - #topnav a:focus, - #topnav a:hover, - #topnav a:active{ text-decoration:underline; background-color: transparent; } - - #footer a { color: #aac; background:transparent; font-weight: bold; } - #footer a:focus, - #footer a:hover, - #footer a:active { color: #fff; background-color: transparent; text-decoration:underline; } - - /** - * (en) Emphasizing external Hyperlinks via CSS - * (de) Hervorhebung externer Hyperlinks mit CSS - * - * @section content-external-links - * @app-yaml-default disabled - */ - - /* - #main a[href^="http://www.my-domain.com"], - #main a[href^="https://www.my-domain.com"] - { - padding-left: 12px; - background-image: url('your_image.gif'); - background-repeat: no-repeat; - background-position: 0 0.45em; - } - */ - - /** - * Tables | Tabellen - * (en) Generic classes for table-width and design definition - * (de) Generische Klassen für die Tabellenbreite und Gestaltungsvorschriften für Tabellen - * - * @section content-tables - */ - - table { width: auto; border-collapse:collapse; margin-bottom: 0.5em; } - table.full { width: 100%; } - table.fixed { table-layout:fixed; } - - th,td { padding: 0.5em; } - thead th { background: #444; color: #fff; } - tbody th { background: #ccc; color: #333; } - tbody th.sub { background: #ddd; color: #333; } - - /** - * Miscellaneous | Sonstiges - * - * @section content-misc - */ - - hr { - color: #fff; - background:transparent; - margin: 0 0 0.5em 0; - padding: 0 0 0.5em 0; - border:0; - border-bottom: 1px #000 solid; - } -} - -- GitLab From 94b44c61a92adcc52feed671f24a09f1f564cc3a Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 17:06:16 +0200 Subject: [PATCH 077/158] Improved checks in openvz plugin and DB library. --- interface/lib/classes/db_mysql.inc.php | 47 +++++++++++-- .../lib/plugins/vm_openvz_plugin.inc.php | 66 +++++++++---------- 2 files changed, 73 insertions(+), 40 deletions(-) diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 12b3b4260..13a8633a8 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -262,12 +262,18 @@ class db extends mysqli public function datalogSave($db_table, $action, $primary_field, $primary_id, $record_old, $record_new, $force_update = false) { global $app, $conf; - // Insert backticks only for incomplete table names. - if(stristr($db_table, '.')) { - $escape = ''; + // Check fields + if(!preg_match('/^[a-zA-Z0-9\.\-]{1,64}$/',$db_table)) $app->error('Invalid table name '.$db_table); + if(!preg_match('/^[a-zA-Z0-9\-]{1,64}$/',$primary_field)) $app->error('Invalid primary field '.$primary_field.' in table '.$db_table); + + if(strpos($db_table, '.') !== false) { + $db_table = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $db_table); } else { - $escape = '`'; + $db_table = '`' . $db_table . '`'; } + + $primary_field = $this->quote($primary_field); + $primary_id = intval($primary_id); if($force_update == true) { //* We force a update even if no record has changed @@ -307,7 +313,16 @@ class db extends mysqli public function datalogInsert($tablename, $insert_data, $index_field) { global $app; - $tablename = $this->quote($tablename); + // Check fields + if(!preg_match('/^[a-zA-Z0-9\.\-]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); + + if(strpos($tablename, '.') !== false) { + $tablename = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); + } else { + $tablename = '`' . $tablename . '`'; + } + $index_field = $this->quote($index_field); if(is_array($insert_data)) { @@ -337,7 +352,16 @@ class db extends mysqli public function datalogUpdate($tablename, $update_data, $index_field, $index_value, $force_update = false) { global $app; - $tablename = $this->quote($tablename); + // Check fields + if(!preg_match('/^[a-zA-Z0-9\.\-]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); + + if(strpos($tablename, '.') !== false) { + $tablename = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); + } else { + $tablename = '`' . $tablename . '`'; + } + $index_field = $this->quote($index_field); $index_value = $this->quote($index_value); @@ -364,7 +388,16 @@ class db extends mysqli public function datalogDelete($tablename, $index_field, $index_value) { global $app; - $tablename = $this->quote($tablename); + // Check fields + if(!preg_match('/^[a-zA-Z0-9\.\-]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); + + if(strpos($tablename, '.') !== false) { + $tablename = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); + } else { + $tablename = '`' . $tablename . '`'; + } + $index_field = $this->quote($index_field); $index_value = $this->quote($index_value); diff --git a/interface/lib/plugins/vm_openvz_plugin.inc.php b/interface/lib/plugins/vm_openvz_plugin.inc.php index 98b0f9f42..94ccf350f 100644 --- a/interface/lib/plugins/vm_openvz_plugin.inc.php +++ b/interface/lib/plugins/vm_openvz_plugin.inc.php @@ -33,7 +33,7 @@ class vm_openvz_plugin { function openvz_vm_insert($event_name, $page_form) { global $app, $conf; - $this->id = $page_form->id; + $this->id = $app->functions->intval($page_form->id); $this->dataRecord = $page_form->dataRecord; $this->oldDataRecord = $page_form->oldDataRecord; @@ -58,7 +58,7 @@ class vm_openvz_plugin { $this->applyTemplate(); // Set the IP address - $app->db->query("UPDATE openvz_ip SET vm_id = ".$this->id." WHERE ip_address = '".$this->dataRecord['ip_address']."'"); + $app->db->query("UPDATE openvz_ip SET vm_id = ".$this->id." WHERE ip_address = '".$app->db->quote($this->dataRecord['ip_address'])."'"); // Create the OpenVZ config file and store it in config field $this->makeOpenVZConfig(); @@ -74,7 +74,7 @@ class vm_openvz_plugin { function openvz_vm_update($event_name, $page_form) { global $app, $conf; - $this->id = $page_form->id; + $this->id = $app->functions->intval($page_form->id); $this->dataRecord = $page_form->dataRecord; $this->oldDataRecord = $page_form->oldDataRecord; @@ -94,7 +94,7 @@ class vm_openvz_plugin { } // Set the IP address - if(isset($this->dataRecord['ip_address'])) $app->db->query("UPDATE openvz_ip SET vm_id = ".$this->id." WHERE ip_address = '".$this->dataRecord['ip_address']."'"); + if(isset($this->dataRecord['ip_address'])) $app->db->query("UPDATE openvz_ip SET vm_id = ".$this->id." WHERE ip_address = '".$app->db->quote($this->dataRecord['ip_address'])."'"); // Create the OpenVZ config file and store it in config field $this->makeOpenVZConfig(); @@ -111,7 +111,7 @@ class vm_openvz_plugin { global $app, $conf; //* Free the IP address - $tmp = $app->db->queryOneRecord("SELECT ip_address_id FROM openvz_ip WHERE vm_id = ".$page_form->id); + $tmp = $app->db->queryOneRecord("SELECT ip_address_id FROM openvz_ip WHERE vm_id = ".$app->functions->intval($page_form->id)); $app->db->datalogUpdate('openvz_ip', 'vm_id = 0', 'ip_address_id', $tmp['ip_address_id']); unset($tmp); @@ -120,20 +120,20 @@ class vm_openvz_plugin { private function applyTemplate() { global $app, $conf; - $tpl = $app->db->queryOneRecord("SELECT * FROM openvz_template WHERE template_id = ".$this->dataRecord["template_id"]); + $tpl = $app->db->queryOneRecord("SELECT * FROM openvz_template WHERE template_id = ".$app->functions->intval($this->dataRecord["template_id"])); $sql = "UPDATE openvz_vm SET "; - $sql .= "diskspace = '".$tpl['diskspace']."', "; - $sql .= "ram = '".$tpl['ram']."', "; - $sql .= "ram_burst = '".$tpl['ram_burst']."', "; - $sql .= "cpu_units = '".$tpl['cpu_units']."', "; - $sql .= "cpu_num = '".$tpl['cpu_num']."', "; - $sql .= "cpu_limit = '".$tpl['cpu_limit']."', "; - $sql .= "io_priority = '".$tpl['io_priority']."', "; - $sql .= "nameserver = '".$tpl['nameserver']."', "; - $sql .= "create_dns = '".$tpl['create_dns']."', "; - $sql .= "capability = '".$tpl['capability']."' "; - $sql .= "WHERE vm_id = ".$this->id; + $sql .= "diskspace = '".$app->db->quote($tpl['diskspace'])."', "; + $sql .= "ram = '".$app->db->quote($tpl['ram'])."', "; + $sql .= "ram_burst = '".$app->db->quote($tpl['ram_burst'])."', "; + $sql .= "cpu_units = '".$app->db->quote($tpl['cpu_units'])."', "; + $sql .= "cpu_num = '".$app->db->quote($tpl['cpu_num'])."', "; + $sql .= "cpu_limit = '".$app->db->quote($tpl['cpu_limit'])."', "; + $sql .= "io_priority = '".$app->db->quote($tpl['io_priority'])."', "; + $sql .= "nameserver = '".$app->db->quote($tpl['nameserver'])."', "; + $sql .= "create_dns = '".$app->db->quote($tpl['create_dns'])."', "; + $sql .= "capability = '".$app->db->quote($tpl['capability'])."' "; + $sql .= "WHERE vm_id = ".$app->functions->intval($this->id); $app->db->query($sql); } @@ -141,8 +141,8 @@ class vm_openvz_plugin { private function makeOpenVZConfig() { global $app, $conf; - $vm = $app->db->queryOneRecord("SELECT * FROM openvz_vm WHERE vm_id = ".$this->id); - $vm_template = $app->db->queryOneRecord("SELECT * FROM openvz_template WHERE template_id = ".$vm['template_id']); + $vm = $app->db->queryOneRecord("SELECT * FROM openvz_vm WHERE vm_id = ".$app->functions->intval($this->id)); + $vm_template = $app->db->queryOneRecord("SELECT * FROM openvz_template WHERE template_id = ".$app->functions->intval($vm['template_id'])); $burst_ram = $vm['ram_burst']*256; $guar_ram = $vm['ram']*256; @@ -194,12 +194,12 @@ class vm_openvz_plugin { $tpl->setVar('nameserver', $vm['nameserver']); $tpl->setVar('capability', $vm['capability']); - $tmp = $app->db->queryOneRecord("SELECT template_file FROM openvz_ostemplate WHERE ostemplate_id = ".$vm['ostemplate_id']); + $tmp = $app->db->queryOneRecord("SELECT template_file FROM openvz_ostemplate WHERE ostemplate_id = ".$app->functions->intval($vm['ostemplate_id'])); $tpl->setVar('ostemplate', $tmp['template_file']); unset($tmp); $openvz_config = $app->db->quote($tpl->grab()); - $app->db->query("UPDATE openvz_vm SET config = '".$openvz_config."' WHERE vm_id = ".$this->id); + $app->db->query("UPDATE openvz_vm SET config = '".$openvz_config."' WHERE vm_id = ".$app->functions->intval($this->id)); unset($tpl); @@ -208,33 +208,33 @@ class vm_openvz_plugin { private function createDNS() { global $app, $conf; - $vm = $app->db->queryOneRecord("SELECT * FROM openvz_vm WHERE vm_id = ".$this->id); + $vm = $app->db->queryOneRecord("SELECT * FROM openvz_vm WHERE vm_id = ".$app->functions->intval($this->id)); if($vm['create_dns'] != 'y') return; $full_hostname = str_replace('{VEID}', $vm['veid'], $vm['hostname']); $hostname_parts = explode('.', $full_hostname); - $hostname = $hostname_parts[0]; + $hostname = $app->db->quote($hostname_parts[0]); unset($hostname_parts[0]); - $zone = implode('.', $hostname_parts); + $zone = $app->db->quote((implode('.', $hostname_parts)); unset($hostname_parts); // Find the dns zone - $zone_rec = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE origin = '$zone.'"); - $rr_rec = $app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = '".$zone_rec['id']."' AND name = '$hostname'"); + $zone_rec = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE origin = '".$app->db->quote($zone).".'"); + $rr_rec = $app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = '".$app->functions->intval($zone_rec['id'])."' AND name = '".$app->db->quote($hostname)."'"); if($zone_rec['id'] > 0) { - $ip_address = $vm['ip_address']; - $sys_userid = $zone_rec['sys_userid']; - $sys_groupid = $zone_rec['sys_groupid']; - $server_id = $zone_rec['server_id']; - $dns_soa_id = $zone_rec['id']; + $ip_address = $app->db->quote($vm['ip_address']); + $sys_userid = $app->functions->intval($zone_rec['sys_userid']); + $sys_groupid = $app->functions->intval($zone_rec['sys_groupid']); + $server_id = $app->functions->intval($zone_rec['server_id']); + $dns_soa_id = $app->functions->intval($zone_rec['id']); if($rr_rec['id'] > 0) { $app->uses('validate_dns'); - $app->db->datalogUpdate('dns_rr', "data = '$ip_address'", 'id', $rr_rec['id']); + $app->db->datalogUpdate('dns_rr', "data = '$ip_address'", 'id', $app->functions->intval($rr_rec['id'])); $serial = $app->validate_dns->increase_serial($zone_rec['serial']); - $app->db->datalogUpdate('dns_soa', "serial = '$serial'", 'id', $zone_rec['id']); + $app->db->datalogUpdate('dns_soa', "serial = '$serial'", 'id', $app->functions->intval($zone_rec['id'])); } else { $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `zone`, `name`, `type`, `data`, `aux`, `ttl`, `active`) VALUES ('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$dns_soa_id', '$hostname', 'A', '$ip_address', '0', '3600', 'Y')"; -- GitLab From 3ee67a99739154fa5fab3a041edabc14415d4e70 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 17:49:30 +0200 Subject: [PATCH 078/158] Added additional username check in form files. --- interface/web/sites/form/shell_user.tform.php | 7 +++++++ interface/web/sites/form/web_domain.tform.php | 14 ++++++++++++++ interface/web/sites/lib/lang/en_shell_user.lng | 1 + interface/web/sites/lib/lang/en_web_domain.lng | 1 + 4 files changed, 23 insertions(+) diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php index 062ed6e0b..8ad815998 100644 --- a/interface/web/sites/form/shell_user.tform.php +++ b/interface/web/sites/form/shell_user.tform.php @@ -93,6 +93,13 @@ $form["tabs"]['shell'] = array ( 1 => array ( 'type' => 'REGEX', 'regex' => '/^[\w\.\-]{0,32}$/', 'errmsg'=> 'username_error_regex'), + 2 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysuser', + 'check_names' => true, + 'errmsg' => 'invalid_username_txt' + ), ), 'default' => '', 'value' => '', diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php index 651b64355..04b0e1290 100644 --- a/interface/web/sites/form/web_domain.tform.php +++ b/interface/web/sites/form/web_domain.tform.php @@ -582,6 +582,13 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'sysuser_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysuser', + 'check_names' => true, + 'errmsg' => 'invalid_system_user_or_group_txt' + ), ), 'default' => '', 'value' => '', @@ -593,6 +600,13 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'sysgroup_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysuser', + 'check_names' => true, + 'errmsg' => 'invalid_system_user_or_group_txt' + ), ), 'default' => '', 'value' => '', diff --git a/interface/web/sites/lib/lang/en_shell_user.lng b/interface/web/sites/lib/lang/en_shell_user.lng index 2ae9b4e6a..c3f21d52d 100644 --- a/interface/web/sites/lib/lang/en_shell_user.lng +++ b/interface/web/sites/lib/lang/en_shell_user.lng @@ -31,4 +31,5 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; ?> diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng index 8c8f90eb0..0478e9972 100644 --- a/interface/web/sites/lib/lang/en_web_domain.lng +++ b/interface/web/sites/lib/lang/en_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> \ No newline at end of file -- GitLab From 19b5e01da02aa2115ee802cf2e43a7f3e58f4eac Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 19:28:03 +0200 Subject: [PATCH 079/158] Added function "is_superadmin" in auth library and improved other functions. --- interface/lib/classes/auth.inc.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php index 070662fda..5be11cb7b 100644 --- a/interface/lib/classes/auth.inc.php +++ b/interface/lib/classes/auth.inc.php @@ -44,6 +44,14 @@ class auth { return false; } } + + public function is_superadmin() { + if($_SESSION['s']['user']['typ'] == 'admin' && $_SESSION['s']['user']['userid'] === 1) { + return true; + } else { + return false; + } + } public function has_clients($userid) { global $app, $conf; @@ -83,6 +91,7 @@ class auth { global $app; $userid = $app->functions->intval($userid); + if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$limitname)) $app->error('Invalid limit name '.$limitname); // simple query cache if($this->client_limits===null) @@ -120,7 +129,8 @@ class auth { public function check_module_permissions($module) { // Check if the current user has the permissions to access this module - if(!stristr($_SESSION["s"]["user"]["modules"], $module)) { + $user_modules = explode(',',$_SESSION["s"]["user"]["modules"]); + if(!in_array($module,$user_modules)) { // echo "LOGIN_REDIRECT:/index.php"; header("Location: /index.php"); exit; -- GitLab From cd48c7ce11e4ca3b2094d6a1fd51dca3e07b6905 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 19:28:36 +0200 Subject: [PATCH 080/158] Added missing underscores in table name validation functions. --- interface/lib/classes/db_mysql.inc.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 13a8633a8..ccf4a84ca 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -263,8 +263,8 @@ class db extends mysqli global $app, $conf; // Check fields - if(!preg_match('/^[a-zA-Z0-9\.\-]{1,64}$/',$db_table)) $app->error('Invalid table name '.$db_table); - if(!preg_match('/^[a-zA-Z0-9\-]{1,64}$/',$primary_field)) $app->error('Invalid primary field '.$primary_field.' in table '.$db_table); + if(!preg_match('/^[a-zA-Z0-9\.\-\_]{1,64}$/',$db_table)) $app->error('Invalid table name '.$db_table); + if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$primary_field)) $app->error('Invalid primary field '.$primary_field.' in table '.$db_table); if(strpos($db_table, '.') !== false) { $db_table = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $db_table); @@ -314,8 +314,8 @@ class db extends mysqli global $app; // Check fields - if(!preg_match('/^[a-zA-Z0-9\.\-]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); - if(!preg_match('/^[a-zA-Z0-9\-]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\.\-\_]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); if(strpos($tablename, '.') !== false) { $tablename = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); @@ -353,8 +353,8 @@ class db extends mysqli global $app; // Check fields - if(!preg_match('/^[a-zA-Z0-9\.\-]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); - if(!preg_match('/^[a-zA-Z0-9\-]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\.\-\_]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); if(strpos($tablename, '.') !== false) { $tablename = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); @@ -389,8 +389,8 @@ class db extends mysqli global $app; // Check fields - if(!preg_match('/^[a-zA-Z0-9\.\-]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); - if(!preg_match('/^[a-zA-Z0-9\-]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\.\-\_]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); if(strpos($tablename, '.') !== false) { $tablename = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); -- GitLab From 93b75676ecc55ff703f920e3b6357dde4b1b884a Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 19:28:59 +0200 Subject: [PATCH 081/158] Added User validation in shell and web tform files. --- interface/web/sites/form/shell_user.tform.php | 2 +- interface/web/sites/form/web_domain.tform.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php index 8ad815998..db4efe34e 100644 --- a/interface/web/sites/form/shell_user.tform.php +++ b/interface/web/sites/form/shell_user.tform.php @@ -97,7 +97,7 @@ $form["tabs"]['shell'] = array ( 'type' => 'CUSTOM', 'class' => 'validate_systemuser', 'function' => 'check_sysuser', - 'check_names' => true, + 'check_names' => false, 'errmsg' => 'invalid_username_txt' ), ), diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php index 04b0e1290..f270de30f 100644 --- a/interface/web/sites/form/web_domain.tform.php +++ b/interface/web/sites/form/web_domain.tform.php @@ -603,7 +603,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 1 => array( 'type' => 'CUSTOM', 'class' => 'validate_systemuser', - 'function' => 'check_sysuser', + 'function' => 'check_sysgroup', 'check_names' => true, 'errmsg' => 'invalid_system_user_or_group_txt' ), -- GitLab From 308c18aaadb730acf2e07363dd9d3783c94b72b2 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 13 Aug 2014 19:53:03 +0200 Subject: [PATCH 082/158] Fixed syntax error. --- interface/lib/plugins/vm_openvz_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/plugins/vm_openvz_plugin.inc.php b/interface/lib/plugins/vm_openvz_plugin.inc.php index 94ccf350f..fd4420556 100644 --- a/interface/lib/plugins/vm_openvz_plugin.inc.php +++ b/interface/lib/plugins/vm_openvz_plugin.inc.php @@ -216,7 +216,7 @@ class vm_openvz_plugin { $hostname_parts = explode('.', $full_hostname); $hostname = $app->db->quote($hostname_parts[0]); unset($hostname_parts[0]); - $zone = $app->db->quote((implode('.', $hostname_parts)); + $zone = $app->db->quote((implode('.', $hostname_parts))); unset($hostname_parts); // Find the dns zone -- GitLab From 14ee7385443613d71f8d3824ae6efbd8340f087c Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 08:01:47 +0200 Subject: [PATCH 083/158] Fixed: FS#3609 - When create a sieve filter (ex. autoresponder) insert null in file. --- server/plugins-available/maildeliver_plugin.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/server/plugins-available/maildeliver_plugin.inc.php b/server/plugins-available/maildeliver_plugin.inc.php index e3799d716..c8fc0694b 100644 --- a/server/plugins-available/maildeliver_plugin.inc.php +++ b/server/plugins-available/maildeliver_plugin.inc.php @@ -130,6 +130,7 @@ class maildeliver_plugin { $tpl->setLoop('ccloop', $tmp_addresses_arr); // Custom filters + if($data["new"]["custom_mailfilter"] == 'NULL') $data["new"]["custom_mailfilter"] = ''; $tpl->setVar('custom_mailfilter', $data["new"]["custom_mailfilter"]); // Move junk -- GitLab From 4f1e6a27ed7712eceade6f17f66c54dc87db5ea9 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 08:39:50 +0200 Subject: [PATCH 084/158] FS#3601 - Stop creating .htaccess files for NginX sites --- server/plugins-available/nginx_plugin.inc.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index b0e18c79a..3478fc749 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -643,9 +643,9 @@ class nginx_plugin { if(is_file($conf['rootpath'] . '/conf-custom/index/robots.txt')) { exec('cp ' . $conf['rootpath'] . '/conf-custom/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); } - if(is_file($conf['rootpath'] . '/conf-custom/index/.htaccess')) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); - } + //if(is_file($conf['rootpath'] . '/conf-custom/index/.htaccess')) { + // exec('cp ' . $conf['rootpath'] . '/conf-custom/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + //} } else { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html')) { @@ -655,7 +655,7 @@ class nginx_plugin { exec('cp ' . $conf['rootpath'] . '/conf/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2).' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); if(is_file($conf['rootpath'] . '/conf/index/favicon.ico')) exec('cp ' . $conf['rootpath'] . '/conf/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); if(is_file($conf['rootpath'] . '/conf/index/robots.txt')) exec('cp ' . $conf['rootpath'] . '/conf/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); - if(is_file($conf['rootpath'] . '/conf/index/.htaccess')) exec('cp ' . $conf['rootpath'] . '/conf/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + //if(is_file($conf['rootpath'] . '/conf/index/.htaccess')) exec('cp ' . $conf['rootpath'] . '/conf/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); } } exec('chmod -R a+r '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); -- GitLab From 12c2a9e2ae60ffc9075111bab7fc76fa36c79437 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 14 Aug 2014 09:09:21 +0200 Subject: [PATCH 085/158] Fixes: FS#3610 - The optional wrning message on form tab change is not showing up when activated --- interface/web/themes/default/templates/main.tpl.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm index 3339d9f3b..e331e441b 100644 --- a/interface/web/themes/default/templates/main.tpl.htm +++ b/interface/web/themes/default/templates/main.tpl.htm @@ -48,8 +48,8 @@ jQuery('.ttip').tipsy({live: true, gravity: 'ne', html: true}); - tabChangeDiscard = ''; + tabChangeDiscard = ''; + tabChangeWarning = ''; tabChangeWarningTxt = ''; tabChangeDiscardTxt = ''; -- GitLab From a5e225d6a00fa21f3fb3a77b43b318701377f0e3 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 14 Aug 2014 09:23:09 +0200 Subject: [PATCH 086/158] Fixes: FS#3073 - Changes on Tab change possibly bug --- interface/web/js/scrigo.js.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php index 85a321c55..229c721be 100644 --- a/interface/web/js/scrigo.js.php +++ b/interface/web/js/scrigo.js.php @@ -438,6 +438,8 @@ function loadMenus() { } function changeTab(tab,target,force) { + if(requestsRunning > 0) return false; + //document.forms[0].next_tab.value = tab; document.pageForm.next_tab.value = tab; -- GitLab From bfc771477f5a60509bf6318d6ee2a30e14412906 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 14 Aug 2014 09:44:12 +0200 Subject: [PATCH 087/158] Fixes: FS#3364 - client_add does not check that reseller is actually reseller additionally fixes this for client_update --- interface/lib/classes/remoting.inc.php | 42 +++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 3fe307deb..0ccfd6547 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -1415,13 +1415,30 @@ class remoting { public function client_add($session_id, $reseller_id, $params) { + global $app; + if (!$this->checkPerm($session_id, 'client_add')) { $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); return false; } if(!isset($params['parent_client_id']) || $params['parent_client_id'] == 0) $params['parent_client_id'] = $reseller_id; - $affected_rows = $this->klientadd('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] > 0 ? 'reseller' : 'client') . '.tform.php', $reseller_id, $params); + + if($params['parent_client_id']) { + // check if this one is reseller + $check = $app->db->queryOneRecord('SELECT `limit_client` FROM `client` WHERE `client_id` = ' . intval($client_id)); + if($check['limit_client'] == 0) { + $this->server->fault('Invalid reseller', 'Selected client is not a reseller.'); + return false; + } + + if(isset($params['limit_client']) && $params['limit_client'] != 0) { + $this->server->fault('Invalid reseller', 'Reseller cannot be client of another reseller.'); + return false; + } + } + + $affected_rows = $this->klientadd('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] != 0 ? 'reseller' : 'client') . '.tform.php', $reseller_id, $params); return $affected_rows; } @@ -1437,9 +1454,25 @@ class remoting { } $app->uses('remoting_lib'); - $app->remoting_lib->loadFormDef('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] > 0 ? 'reseller' : 'client') . '.tform.php'); + $app->remoting_lib->loadFormDef('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] != 0 ? 'reseller' : 'client') . '.tform.php'); $old_rec = $app->remoting_lib->getDataRecord($client_id); + if(!isset($params['parent_client_id']) || $params['parent_client_id'] == 0) $params['parent_client_id'] = $reseller_id; + + if($params['parent_client_id']) { + // check if this one is reseller + $check = $app->db->queryOneRecord('SELECT `limit_client` FROM `client` WHERE `client_id` = ' . intval($client_id)); + if($check['limit_client'] == 0) { + $this->server->fault('Invalid reseller', 'Selected client is not a reseller.'); + return false; + } + + if(isset($params['limit_client']) && $params['limit_client'] != 0) { + $this->server->fault('Invalid reseller', 'Reseller cannot be client of another reseller.'); + return false; + } + } + // we need the previuos templates assigned here $this->oldTemplatesAssigned = $app->db->queryAllRecords('SELECT * FROM `client_template_assigned` WHERE `client_id` = ' . $client_id); if(!is_array($this->oldTemplatesAssigned) || count($this->oldTemplatesAssigned) < 1) { @@ -1462,8 +1495,7 @@ class remoting { } - if(!isset($params['parent_client_id']) || $params['parent_client_id'] == 0) $params['parent_client_id'] = $reseller_id; - $affected_rows = $this->updateQuery('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] > 0 ? 'reseller' : 'client') . '.tform.php', $reseller_id, $client_id, $params, 'client:' . ($reseller_id ? 'reseller' : 'client') . ':on_after_update'); + $affected_rows = $this->updateQuery('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] != 0 ? 'reseller' : 'client') . '.tform.php', $reseller_id, $client_id, $params, 'client:' . ($params['parent_client_id'] ? 'reseller' : 'client') . ':on_after_update'); $app->remoting_lib->ispconfig_sysuser_update($params, $client_id); @@ -3195,7 +3227,7 @@ class remoting { $this->id = $insert_id; $this->dataRecord = $params; - $app->plugin->raiseEvent('client:' . (isset($params['limit_client']) && $params['limit_client'] > 0 ? 'reseller' : 'client') . ':on_after_insert', $this); + $app->plugin->raiseEvent('client:' . (isset($params['limit_client']) && $params['limit_client'] != 0 ? 'reseller' : 'client') . ':on_after_insert', $this); /* if($app->db->errorMessage != '') { -- GitLab From c653844975fb13bf7aaf2cc0dc96c8c70906394e Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 09:46:18 +0200 Subject: [PATCH 088/158] Fixed: FS#3564 - shell users accounts are not removed. --- server/plugins-available/shelluser_base_plugin.inc.php | 2 +- server/plugins-available/shelluser_jailkit_plugin.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index e33162413..67cbee02c 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -231,7 +231,7 @@ class shelluser_base_plugin { if($userid > $this->min_uid) { // We delete only non jailkit users, jailkit users will be deleted by the jailkit plugin. if ($data['old']['chroot'] != "jailkit") { - $command = 'userdel -f'; + $command = 'killall -u '.escapeshellcmd($data['old']['username']).' ; userdel -f'; $command .= ' '.escapeshellcmd($data['old']['username']).' &> /dev/null'; exec($command); $app->log("Deleted shelluser: ".$data['old']['username'], LOGLEVEL_DEBUG); diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index 9cf6fc89d..f0fb2799e 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -226,7 +226,7 @@ class shelluser_jailkit_plugin { $app->system->web_folder_protection($web['document_root'], false); if(@is_dir($data['old']['dir'].$jailkit_chroot_userhome)) { - $command = 'userdel -f'; + $command = 'killall -u '.escapeshellcmd($data['old']['username']).' ; userdel -f'; $command .= ' '.escapeshellcmd($data['old']['username']).' &> /dev/null'; exec($command); $app->log("Jailkit Plugin -> delete chroot home:".$data['old']['dir'].$jailkit_chroot_userhome, LOGLEVEL_DEBUG); -- GitLab From d22542170f179c6de7d5f1c3b1bc48c7678ec797 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 09:57:46 +0200 Subject: [PATCH 089/158] FS#3614 - Check mailman on Ubuntu 14.04 --- install/lib/installer_base.lib.php | 2 +- server/plugins-available/mailman_plugin.inc.php | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index cc22d9e02..9bf84b6e1 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -646,7 +646,7 @@ class installer_base { copy('tpl/mailman-virtual_to_transport.sh', $full_file_name); } chgrp($full_file_name, 'list'); - chmod($full_file_name, 0750); + chmod($full_file_name, 0755); } //* Create aliasaes diff --git a/server/plugins-available/mailman_plugin.inc.php b/server/plugins-available/mailman_plugin.inc.php index e2bd36a8d..acf4eb936 100644 --- a/server/plugins-available/mailman_plugin.inc.php +++ b/server/plugins-available/mailman_plugin.inc.php @@ -75,6 +75,7 @@ class mailman_plugin { exec("nohup /usr/lib/mailman/bin/newlist -u ".escapeshellcmd($data["new"]["domain"])." -e ".escapeshellcmd($data["new"]["domain"])." ".escapeshellcmd($data["new"]["listname"])." ".escapeshellcmd($data["new"]["email"])." ".escapeshellcmd($data["new"]["password"])." >/dev/null 2>&1 &"); if(is_file('/var/lib/mailman/data/virtual-mailman')) exec('postmap /var/lib/mailman/data/virtual-mailman'); + if(is_file('/var/lib/mailman/data/transport-mailman')) exec('postmap /var/lib/mailman/data/transport-mailman'); exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$app->db->quote($data["new"]['mailinglist_id'])); @@ -84,12 +85,17 @@ class mailman_plugin { // The purpose of this plugin is to rewrite the main.cf file function update($event_name, $data) { global $app, $conf; + + $this->update_config(); if($data["new"]["password"] != $data["old"]["password"] && $data["new"]["password"] != '') { exec("nohup /usr/lib/mailman/bin/change_pw -l ".escapeshellcmd($data["new"]["listname"])." -p ".escapeshellcmd($data["new"]["password"])." >/dev/null 2>&1 &"); exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$app->db->quote($data["new"]['mailinglist_id'])); } + + if(is_file('/var/lib/mailman/data/virtual-mailman')) exec('postmap /var/lib/mailman/data/virtual-mailman'); + if(is_file('/var/lib/mailman/data/transport-mailman')) exec('postmap /var/lib/mailman/data/transport-mailman'); } function delete($event_name, $data) { @@ -100,6 +106,9 @@ class mailman_plugin { exec("nohup /usr/lib/mailman/bin/rmlist -a ".escapeshellcmd($data["old"]["listname"])." >/dev/null 2>&1 &"); exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); + + if(is_file('/var/lib/mailman/data/virtual-mailman')) exec('postmap /var/lib/mailman/data/virtual-mailman'); + if(is_file('/var/lib/mailman/data/transport-mailman')) exec('postmap /var/lib/mailman/data/transport-mailman'); } -- GitLab From 7272e49c868f30d434965a59b1dc209925aec1b2 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 09:58:25 +0200 Subject: [PATCH 090/158] Improved database library. --- interface/lib/classes/db_mysql.inc.php | 40 +++++++++++--------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index ccf4a84ca..56d43f879 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -263,15 +263,9 @@ class db extends mysqli global $app, $conf; // Check fields - if(!preg_match('/^[a-zA-Z0-9\.\-\_]{1,64}$/',$db_table)) $app->error('Invalid table name '.$db_table); + if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$db_table)) $app->error('Invalid table name '.$db_table); if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$primary_field)) $app->error('Invalid primary field '.$primary_field.' in table '.$db_table); - if(strpos($db_table, '.') !== false) { - $db_table = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $db_table); - } else { - $db_table = '`' . $db_table . '`'; - } - $primary_field = $this->quote($primary_field); $primary_id = intval($primary_id); @@ -314,13 +308,13 @@ class db extends mysqli global $app; // Check fields - if(!preg_match('/^[a-zA-Z0-9\.\-\_]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); if(strpos($tablename, '.') !== false) { - $tablename = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); + $tablename_escaped = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); } else { - $tablename = '`' . $tablename . '`'; + $tablename_escaped = '`' . $tablename . '`'; } $index_field = $this->quote($index_field); @@ -340,9 +334,9 @@ class db extends mysqli } $old_rec = array(); - $this->query("INSERT INTO $tablename $insert_data_str"); + $this->query("INSERT INTO $tablename_escaped $insert_data_str"); $index_value = $this->insertID(); - $new_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); + $new_rec = $this->queryOneRecord("SELECT * FROM $tablename_escaped WHERE $index_field = '$index_value'"); $this->datalogSave($tablename, 'INSERT', $index_field, $index_value, $old_rec, $new_rec); return $index_value; @@ -353,19 +347,19 @@ class db extends mysqli global $app; // Check fields - if(!preg_match('/^[a-zA-Z0-9\.\-\_]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); if(strpos($tablename, '.') !== false) { - $tablename = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); + $tablename_escaped = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); } else { - $tablename = '`' . $tablename . '`'; + $tablename_escaped = '`' . $tablename . '`'; } $index_field = $this->quote($index_field); $index_value = $this->quote($index_value); - $old_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); + $old_rec = $this->queryOneRecord("SELECT * FROM $tablename_escaped WHERE $index_field = '$index_value'"); if(is_array($update_data)) { $update_data_str = ''; @@ -377,8 +371,8 @@ class db extends mysqli $update_data_str = $update_data; } - $this->query("UPDATE $tablename SET $update_data_str WHERE $index_field = '$index_value'"); - $new_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); + $this->query("UPDATE $tablename_escaped SET $update_data_str WHERE $index_field = '$index_value'"); + $new_rec = $this->queryOneRecord("SELECT * FROM $tablename_escaped WHERE $index_field = '$index_value'"); $this->datalogSave($tablename, 'UPDATE', $index_field, $index_value, $old_rec, $new_rec, $force_update); return true; @@ -389,20 +383,20 @@ class db extends mysqli global $app; // Check fields - if(!preg_match('/^[a-zA-Z0-9\.\-\_]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); + if(!preg_match('/^[a-zA-Z0-9\-\_\.]{1,64}$/',$tablename)) $app->error('Invalid table name '.$tablename); if(!preg_match('/^[a-zA-Z0-9\-\_]{1,64}$/',$index_field)) $app->error('Invalid index field '.$index_field.' in table '.$tablename); if(strpos($tablename, '.') !== false) { - $tablename = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); + $tablename_escaped = preg_replace('/^(.+)\.(.+)$/', '`$1`.`$2`', $tablename); } else { - $tablename = '`' . $tablename . '`'; + $tablename_escaped = '`' . $tablename . '`'; } $index_field = $this->quote($index_field); $index_value = $this->quote($index_value); - $old_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); - $this->query("DELETE FROM $tablename WHERE $index_field = '$index_value'"); + $old_rec = $this->queryOneRecord("SELECT * FROM $tablename_escaped WHERE $index_field = '$index_value'"); + $this->query("DELETE FROM $tablename_escaped WHERE $index_field = '$index_value'"); $new_rec = array(); $this->datalogSave($tablename, 'DELETE', $index_field, $index_value, $old_rec, $new_rec); -- GitLab From f227fb72b50e8580cd5ec1f539ec5749de6dd48c Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 14 Aug 2014 10:31:42 +0200 Subject: [PATCH 091/158] Support passwords in login that are crypted with crypt-SHA256 --- interface/web/login/index.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/interface/web/login/index.php b/interface/web/login/index.php index 951dbaf29..8043280ce 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -197,6 +197,13 @@ class login_index { //* The password is crypt-md5 encrypted $salt = '$1$'.substr($saved_password, 3, 8).'$'; + if(crypt(stripslashes($passwort), $salt) != $saved_password) { + $user = false; + } + } elseif(substr($saved_password, 0, 3) == '$5$') { + //* The password is crypt-md5 encrypted + $salt = '$5$'.substr($saved_password, 3, 16).'$'; + if(crypt(stripslashes($passwort), $salt) != $saved_password) { $user = false; } -- GitLab From 0e73fca2a24ffa6f1ec182563f22b73a387a59bb Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 14 Aug 2014 10:49:02 +0200 Subject: [PATCH 092/158] - typo in comment --- interface/web/login/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/login/index.php b/interface/web/login/index.php index 8043280ce..48d3af652 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -201,7 +201,7 @@ class login_index { $user = false; } } elseif(substr($saved_password, 0, 3) == '$5$') { - //* The password is crypt-md5 encrypted + //* The password is crypt-sha256 encrypted $salt = '$5$'.substr($saved_password, 3, 16).'$'; if(crypt(stripslashes($passwort), $salt) != $saved_password) { -- GitLab From fa029ba07e16cf79f2adc8e049c0d981ec61d18e Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 12:46:15 +0200 Subject: [PATCH 093/158] Added security directory. --- install/dist/lib/fedora.lib.php | 14 +++++++-- install/dist/lib/gentoo.lib.php | 12 +++++++- install/dist/lib/opensuse.lib.php | 12 +++++++- install/lib/installer_base.lib.php | 12 +++++++- security/check.php | 47 ++++++++++++++++++++++++++++++ security/data/empty.dir | 0 server/server.sh | 3 ++ 7 files changed, 95 insertions(+), 5 deletions(-) create mode 100644 security/check.php create mode 100644 security/data/empty.dir diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index d6d975a15..e01a739d6 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -958,13 +958,13 @@ class installer_dist extends installer_base { $this->db->query($sql); } - /// chown install dir to root and chmod 755 + // chown install dir to root and chmod 755 $command = 'chown root:root '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'chmod 755 '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - //* Chmod the files and directoreies in the install dir + //* Chmod the files and directories in the install dir $command = 'chmod -R 750 '.$install_dir.'/*'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); @@ -975,6 +975,16 @@ class installer_dist extends installer_base { //* chown the server files to the root user and group $command = 'chown -R root:root '.$install_dir.'/server'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the security files to the root user and group + $command = 'chown -R root:root '.$install_dir.'/security'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the security directory and security_settings.ini to root:ispconfig + $command = 'chown root:ispconfig '.$install_dir.'/security/security_settings.ini'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 26474c51f..fb6b13853 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -856,7 +856,7 @@ class installer extends installer_base $command = 'chmod 755 '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - //* Chmod the files and directoreies in the install dir + //* Chmod the files and directories in the install dir $command = 'chmod -R 750 '.$install_dir.'/*'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); @@ -867,6 +867,16 @@ class installer extends installer_base //* chown the server files to the root user and group $command = 'chown -R root:root '.$install_dir.'/server'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the security files to the root user and group + $command = 'chown -R root:root '.$install_dir.'/security'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the security directory and security_settings.ini to root:ispconfig + $command = 'chown root:ispconfig '.$install_dir.'/security/security_settings.ini'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index dad3a6a3c..c76833169 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -1034,7 +1034,7 @@ class installer_dist extends installer_base { $command = 'chmod 755 '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - //* Chmod the files and directoreies in the install dir + //* Chmod the files and directories in the install dir $command = 'chmod -R 750 '.$install_dir.'/*'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); @@ -1045,6 +1045,16 @@ class installer_dist extends installer_base { //* chown the server files to the root user and group $command = 'chown -R root:root '.$install_dir.'/server'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the security files to the root user and group + $command = 'chown -R root:root '.$install_dir.'/security'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the security directory and security_settings.ini to root:ispconfig + $command = 'chown root:ispconfig '.$install_dir.'/security/security_settings.ini'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 9bf84b6e1..19e1f032f 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1891,7 +1891,7 @@ class installer_base { $command = 'chmod 755 '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - //* Chmod the files and directoreies in the install dir + //* Chmod the files and directories in the install dir $command = 'chmod -R 750 '.$install_dir.'/*'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); @@ -1902,6 +1902,16 @@ class installer_base { //* chown the server files to the root user and group $command = 'chown -R root:root '.$install_dir.'/server'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the security files to the root user and group + $command = 'chown -R root:root '.$install_dir.'/security'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the security directory and security_settings.ini to root:ispconfig + $command = 'chown root:ispconfig '.$install_dir.'/security/security_settings.ini'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); diff --git a/security/check.php b/security/check.php new file mode 100644 index 000000000..d6518a1c5 --- /dev/null +++ b/security/check.php @@ -0,0 +1,47 @@ +uses('ini_parser,file,services,getconf,system'); + + + +?> \ No newline at end of file diff --git a/security/data/empty.dir b/security/data/empty.dir new file mode 100644 index 000000000..e69de29bb diff --git a/server/server.sh b/server/server.sh index 75253e789..88c30e744 100755 --- a/server/server.sh +++ b/server/server.sh @@ -13,5 +13,8 @@ if [ -f /usr/local/ispconfig/server/lib/php.ini ]; then fi fi +cd /usr/local/ispconfig/security +/usr/bin/php -q /usr/local/ispconfig/security/check.php + cd /usr/local/ispconfig/server /usr/bin/php -q /usr/local/ispconfig/server/server.php -- GitLab From 77edf6ef46c41285e3c29423c0d28e461c52eaa8 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 14 Aug 2014 17:03:18 +0200 Subject: [PATCH 094/158] - added script to create additional htaccess for ispconfig interface --- server/scripts/ispconfig_htaccess.php | 75 +++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 server/scripts/ispconfig_htaccess.php diff --git a/server/scripts/ispconfig_htaccess.php b/server/scripts/ispconfig_htaccess.php new file mode 100644 index 000000000..568ec50f5 --- /dev/null +++ b/server/scripts/ispconfig_htaccess.php @@ -0,0 +1,75 @@ + -- GitLab From 9edea9976bd605071e0694a90d704266c0b7e0f9 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 17:30:03 +0200 Subject: [PATCH 095/158] - Added warning in the interface when a path for a shelluser is set that is outside of the website docroot. - Added security settings feature to allow the root user of a server to control most aspects of whet the admin user of the controlpanel is allowed to do in system settings. This is especially useful for managed severs where the ispconfig admin user and the root user of the server are different persons. --- interface/lib/classes/auth.inc.php | 18 +++++- interface/lib/classes/getconf.inc.php | 9 +++ .../lib/classes/validate_systemuser.inc.php | 56 +++++++++++++++++++ interface/lib/lang/ar.lng | 2 + interface/lib/lang/bg.lng | 2 + interface/lib/lang/br.lng | 2 + interface/lib/lang/cz.lng | 2 + interface/lib/lang/de.lng | 2 + interface/lib/lang/el.lng | 2 + interface/lib/lang/en.lng | 6 +- interface/lib/lang/es.lng | 2 + interface/lib/lang/fi.lng | 2 + interface/lib/lang/fr.lng | 2 + interface/lib/lang/hr.lng | 4 +- interface/lib/lang/hu.lng | 4 +- interface/lib/lang/id.lng | 4 +- interface/lib/lang/it.lng | 4 +- interface/lib/lang/ja.lng | 4 +- interface/lib/lang/nl.lng | 4 +- interface/lib/lang/pl.lng | 4 +- interface/lib/lang/pt.lng | 4 +- interface/lib/lang/ro.lng | 4 +- interface/lib/lang/ru.lng | 4 +- interface/lib/lang/se.lng | 4 +- interface/lib/lang/sk.lng | 4 +- interface/lib/lang/tr.lng | 4 +- interface/web/admin/firewall_del.php | 1 + interface/web/admin/firewall_edit.php | 1 + interface/web/admin/groups_del.php | 1 + interface/web/admin/groups_edit.php | 1 + interface/web/admin/iptables_del.php | 1 + interface/web/admin/iptables_edit.php | 1 + interface/web/admin/iptables_list.php | 2 + interface/web/admin/language_add.php | 1 + interface/web/admin/language_complete.php | 1 + interface/web/admin/language_edit.php | 1 + interface/web/admin/language_export.php | 1 + interface/web/admin/language_import.php | 1 + .../web/admin/remote_action_osupdate.php | 1 + interface/web/admin/remote_user_del.php | 1 + interface/web/admin/remote_user_edit.php | 3 + interface/web/admin/server_config_del.php | 1 + interface/web/admin/server_config_edit.php | 2 + interface/web/admin/server_del.php | 1 + interface/web/admin/server_edit.php | 1 + interface/web/admin/server_ip_del.php | 1 + interface/web/admin/server_ip_edit.php | 1 + interface/web/admin/server_php_del.php | 1 + interface/web/admin/server_php_edit.php | 1 + interface/web/admin/software_package_del.php | 1 + interface/web/admin/software_package_edit.php | 1 + .../web/admin/software_package_install.php | 1 + interface/web/admin/software_repo_del.php | 1 + interface/web/admin/software_repo_edit.php | 1 + interface/web/admin/software_update_list.php | 1 + interface/web/admin/system_config_edit.php | 1 + interface/web/admin/tpl_default.php | 1 + interface/web/admin/users_del.php | 1 + interface/web/admin/users_edit.php | 13 +++++ interface/web/remote/index.php | 6 +- interface/web/sites/form/shell_user.tform.php | 4 ++ .../web/sites/lib/lang/en_shell_user.lng | 1 + interface/web/tools/user_settings.php | 4 ++ security/security_settings.ini | 25 +++++++++ server/lib/classes/getconf.inc.php | 9 +++ .../shelluser_base_plugin.inc.php | 30 ++++++++-- .../shelluser_jailkit_plugin.inc.php | 31 ++++++++-- 67 files changed, 289 insertions(+), 29 deletions(-) create mode 100644 security/security_settings.ini diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php index 5be11cb7b..70c1722ae 100644 --- a/interface/lib/classes/auth.inc.php +++ b/interface/lib/classes/auth.inc.php @@ -46,7 +46,7 @@ class auth { } public function is_superadmin() { - if($_SESSION['s']['user']['typ'] == 'admin' && $_SESSION['s']['user']['userid'] === 1) { + if($_SESSION['s']['user']['typ'] == 'admin' && $_SESSION['s']['user']['userid'] == 1) { return true; } else { return false; @@ -136,6 +136,22 @@ class auth { exit; } } + + public function check_security_permissions($permission) { + + global $app; + + $app->uses('getconf'); + $security_config = $app->getconf->get_security_config('permissions'); + + $security_check = false; + if($security_config[$permission] == 'yes') $security_check = true; + if($security_config[$permission] == 'superadmin' && $app->auth->is_superadmin()) $security_check = true; + if($security_check !== true) { + $app->error($app->lng('security_check1_txt').' '.$permission.' '.$app->lng('security_check2_txt')); + } + + } public function get_random_password($length = 8) { $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; diff --git a/interface/lib/classes/getconf.inc.php b/interface/lib/classes/getconf.inc.php index 45fefa601..7a29dbf42 100644 --- a/interface/lib/classes/getconf.inc.php +++ b/interface/lib/classes/getconf.inc.php @@ -54,6 +54,15 @@ class getconf { } return ($section == '') ? $this->config['global'] : $this->config['global'][$section]; } + + public function get_security_config($section = '') { + global $app; + + $app->uses('ini_parser'); + $security_config = $app->ini_parser->parse_ini_string(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); + + return ($section == '') ? $security_config : $security_config[$section]; + } } diff --git a/interface/lib/classes/validate_systemuser.inc.php b/interface/lib/classes/validate_systemuser.inc.php index f1bbd2bb3..6df3a4589 100644 --- a/interface/lib/classes/validate_systemuser.inc.php +++ b/interface/lib/classes/validate_systemuser.inc.php @@ -58,7 +58,63 @@ class validate_systemuser { } } + /* + Validator function to check if a given dir is ok. + */ + function shelluser_dir($field_name, $field_value, $validator) { + global $app; + + if($app->tform->primary_id == 0) { + $errmsg = $validator['errmsg']; + if(isset($app->tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } else { + return $errmsg."
\r\n"; + } + } + + + $shell_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM shell_user WHERE shell_user_id = '".$app->db->quote($app->tform->primary_id)."'"); + if(!is_array($shell_data) || $shell_data["parent_domain_id"] < 1) { + $errmsg = $validator['errmsg']; + if(isset($app->tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } else { + return $errmsg."
\r\n"; + } + } + $domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($shell_data["parent_domain_id"])."'"); + if(!is_array($domain_data) || $domain_data["domain_id"] < 1) { + $errmsg = $validator['errmsg']; + if(isset($app->tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } else { + return $errmsg."
\r\n"; + } + } + + $doc_root = $domain_data["document_root"]; + $is_ok = false; + if($doc_root == $field_value) $is_ok = true; + + $doc_root .= "/"; + if(substr($field_value, 0, strlen($doc_root)) == $doc_root) $is_ok = true; + + if(stristr($field_value, '..') or stristr($field_value, './') or stristr($field_value, '/.')) $is_ok = false; + + //* Final check if docroot path of website is >= 5 chars + if(strlen($doc_root) < 5) $is_ok = false; + + if($is_ok == false) { + $errmsg = $validator['errmsg']; + if(isset($app->tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } else { + return $errmsg."
\r\n"; + } + } + } } diff --git a/interface/lib/lang/ar.lng b/interface/lib/lang/ar.lng index 2bef4b0d6..ed4bb29c0 100644 --- a/interface/lib/lang/ar.lng +++ b/interface/lib/lang/ar.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; ?> diff --git a/interface/lib/lang/bg.lng b/interface/lib/lang/bg.lng index 09b399ad5..04380173a 100644 --- a/interface/lib/lang/bg.lng +++ b/interface/lib/lang/bg.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; ?> diff --git a/interface/lib/lang/br.lng b/interface/lib/lang/br.lng index 7007f7dec..275be4d1b 100644 --- a/interface/lib/lang/br.lng +++ b/interface/lib/lang/br.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; ?> diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index a48a835bb..27fa49431 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Silná'; $wb['strength_5'] = 'Velmi silná'; $wb['weak_password_txt'] = 'Zvolené heslo neodpovídá požadavkům zásad pro tvorbu hesel. Heslo musí být alespoň {chars} znaků dlouhé a mající sílu \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'Zvolené heslo neodpovídá požadavkům zásad pro tvorbu hesel. Heslo musí být alespoň {chars} znaků dlouhé.'; +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; ?> diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng index dfd1c9b77..735b1da09 100644 --- a/interface/lib/lang/de.lng +++ b/interface/lib/lang/de.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Stark'; $wb['strength_5'] = 'Sehr stark'; $wb['weak_password_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein und die Stärke \\"{strength}\\" besitzen.'; $wb['weak_password_length_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein.'; +$wb['security_check1_txt'] = 'Sicherheitsüberprüfung für:'; +$wb['security_check2_txt'] = 'fehlgeschlagen.'; ?> diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng index 20f26a448..d8a271590 100644 --- a/interface/lib/lang/el.lng +++ b/interface/lib/lang/el.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; ?> diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng index ec309d9f8..c89c97a7c 100644 --- a/interface/lib/lang/en.lng +++ b/interface/lib/lang/en.lng @@ -131,7 +131,6 @@ $wb['datalog_status_d_web_folder'] = 'Delete folder protection'; $wb['datalog_status_i_web_folder_user'] = 'Create folder protection user'; $wb['datalog_status_u_web_folder_user'] = 'Update folder protection user'; $wb['datalog_status_d_web_folder_user'] = 'Delete folder protection user'; - $wb['login_as_txt'] = 'Log in as'; $wb["no_domain_perm"] = 'You have no permission for this domain.'; $wb["no_destination_perm"] = 'You have no permission for this destination.'; @@ -149,5 +148,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of "{strength}".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; - -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng index 63b62451b..ae21baf04 100644 --- a/interface/lib/lang/es.lng +++ b/interface/lib/lang/es.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; ?> diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng index 3cdfa12d8..059c9b2de 100755 --- a/interface/lib/lang/fi.lng +++ b/interface/lib/lang/fi.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; ?> diff --git a/interface/lib/lang/fr.lng b/interface/lib/lang/fr.lng index 613f2a342..c59aac41a 100644 --- a/interface/lib/lang/fr.lng +++ b/interface/lib/lang/fr.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; ?> diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng index 26a98bfc1..634a39648 100644 --- a/interface/lib/lang/hr.lng +++ b/interface/lib/lang/hr.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng index ce9a10259..9aa46b488 100644 --- a/interface/lib/lang/hu.lng +++ b/interface/lib/lang/hu.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng index a781fb597..bc0a5f950 100644 --- a/interface/lib/lang/id.lng +++ b/interface/lib/lang/id.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng index 8b2b810c3..1f46893fe 100644 --- a/interface/lib/lang/it.lng +++ b/interface/lib/lang/it.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng index 04fef3d96..41cd638f8 100644 --- a/interface/lib/lang/ja.lng +++ b/interface/lib/lang/ja.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng index 458b53fa3..b359dee1c 100644 --- a/interface/lib/lang/nl.lng +++ b/interface/lib/lang/nl.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng index 87973f64b..058680c47 100644 --- a/interface/lib/lang/pl.lng +++ b/interface/lib/lang/pl.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng index 84cd748af..48beea8dd 100644 --- a/interface/lib/lang/pt.lng +++ b/interface/lib/lang/pt.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng index 6431e1180..c5234fb83 100644 --- a/interface/lib/lang/ro.lng +++ b/interface/lib/lang/ro.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng index 566f8d83a..7fb0ac863 100644 --- a/interface/lib/lang/ru.lng +++ b/interface/lib/lang/ru.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/se.lng b/interface/lib/lang/se.lng index 41a972f5c..a7813bc0b 100644 --- a/interface/lib/lang/se.lng +++ b/interface/lib/lang/se.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Starkt'; $wb['strength_5'] = 'Väldigt starkt'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng index 4abcf0ca9..63a16ce29 100644 --- a/interface/lib/lang/sk.lng +++ b/interface/lib/lang/sk.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng index 0257a68b8..e7d9e037f 100644 --- a/interface/lib/lang/tr.lng +++ b/interface/lib/lang/tr.lng @@ -147,4 +147,6 @@ $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; $wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -?> +$wb['security_check1_txt'] = 'Check for security permission:'; +$wb['security_check2_txt'] = 'failed.'; +?> \ No newline at end of file diff --git a/interface/web/admin/firewall_del.php b/interface/web/admin/firewall_del.php index c4ea5605c..3fc23fe70 100644 --- a/interface/web/admin/firewall_del.php +++ b/interface/web/admin/firewall_del.php @@ -44,6 +44,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_firewall_config'); $app->uses("tform_actions"); $app->tform_actions->onDelete(); diff --git a/interface/web/admin/firewall_edit.php b/interface/web/admin/firewall_edit.php index d0c35db8e..6c29f766d 100644 --- a/interface/web/admin/firewall_edit.php +++ b/interface/web/admin/firewall_edit.php @@ -43,6 +43,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_firewall_config'); // Loading classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/admin/groups_del.php b/interface/web/admin/groups_del.php index 57b47d9f4..42eed9507 100644 --- a/interface/web/admin/groups_del.php +++ b/interface/web/admin/groups_del.php @@ -44,6 +44,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_cpuser_group'); $app->uses("tform_actions"); $app->tform_actions->onDelete(); diff --git a/interface/web/admin/groups_edit.php b/interface/web/admin/groups_edit.php index 5ecf75fdf..000000361 100644 --- a/interface/web/admin/groups_edit.php +++ b/interface/web/admin/groups_edit.php @@ -43,6 +43,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_cpuser_group'); // Loading classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/admin/iptables_del.php b/interface/web/admin/iptables_del.php index 2497768c1..55371d6cb 100644 --- a/interface/web/admin/iptables_del.php +++ b/interface/web/admin/iptables_del.php @@ -1,4 +1,5 @@ auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_langedit'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); diff --git a/interface/web/admin/language_complete.php b/interface/web/admin/language_complete.php index 67cfb86ed..d8f4bbda8 100644 --- a/interface/web/admin/language_complete.php +++ b/interface/web/admin/language_complete.php @@ -32,6 +32,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_langedit'); if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); //* This is only allowed for administrators diff --git a/interface/web/admin/language_edit.php b/interface/web/admin/language_edit.php index 819924492..7d83b9bb7 100644 --- a/interface/web/admin/language_edit.php +++ b/interface/web/admin/language_edit.php @@ -32,6 +32,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_langedit'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); diff --git a/interface/web/admin/language_export.php b/interface/web/admin/language_export.php index a4c75f3df..44bc787bd 100644 --- a/interface/web/admin/language_export.php +++ b/interface/web/admin/language_export.php @@ -32,6 +32,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_langedit'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); diff --git a/interface/web/admin/language_import.php b/interface/web/admin/language_import.php index 1dfaa1846..d53575ba2 100644 --- a/interface/web/admin/language_import.php +++ b/interface/web/admin/language_import.php @@ -112,6 +112,7 @@ function validate_line($line) { //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_langedit'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); diff --git a/interface/web/admin/remote_action_osupdate.php b/interface/web/admin/remote_action_osupdate.php index 4000d7f26..61c6c2382 100644 --- a/interface/web/admin/remote_action_osupdate.php +++ b/interface/web/admin/remote_action_osupdate.php @@ -32,6 +32,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_osupdate'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); diff --git a/interface/web/admin/remote_user_del.php b/interface/web/admin/remote_user_del.php index e3a383272..b23336cab 100644 --- a/interface/web/admin/remote_user_del.php +++ b/interface/web/admin/remote_user_del.php @@ -44,6 +44,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_remote_users'); $app->uses('tpl,tform'); $app->load('tform_actions'); diff --git a/interface/web/admin/remote_user_edit.php b/interface/web/admin/remote_user_edit.php index 962aa5752..efc4f72a3 100644 --- a/interface/web/admin/remote_user_edit.php +++ b/interface/web/admin/remote_user_edit.php @@ -13,6 +13,9 @@ if(!stristr($_SESSION['s']['user']['modules'], 'admin')) { die; } +$app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_remote_users'); + // Disable this function in demo mode if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); diff --git a/interface/web/admin/server_config_del.php b/interface/web/admin/server_config_del.php index c50ca140f..3a332edd1 100644 --- a/interface/web/admin/server_config_del.php +++ b/interface/web/admin/server_config_del.php @@ -44,6 +44,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_server_config'); if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses("tform_actions"); diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index a47118114..e561b00ac 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -43,6 +43,8 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_server_config'); + // Loading classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/admin/server_del.php b/interface/web/admin/server_del.php index c39b73238..f90bfa7f8 100644 --- a/interface/web/admin/server_del.php +++ b/interface/web/admin/server_del.php @@ -44,6 +44,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_server_services'); if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses("tform_actions"); diff --git a/interface/web/admin/server_edit.php b/interface/web/admin/server_edit.php index caf79ef0b..0adf31318 100644 --- a/interface/web/admin/server_edit.php +++ b/interface/web/admin/server_edit.php @@ -43,6 +43,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_server_services'); // Loading classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/admin/server_ip_del.php b/interface/web/admin/server_ip_del.php index e1df93483..61252c31c 100644 --- a/interface/web/admin/server_ip_del.php +++ b/interface/web/admin/server_ip_del.php @@ -44,6 +44,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_server_ip'); $app->uses("tform_actions"); $app->tform_actions->onDelete(); diff --git a/interface/web/admin/server_ip_edit.php b/interface/web/admin/server_ip_edit.php index c3bf380f8..c20f752b8 100644 --- a/interface/web/admin/server_ip_edit.php +++ b/interface/web/admin/server_ip_edit.php @@ -43,6 +43,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_server_ip'); // Loading classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/admin/server_php_del.php b/interface/web/admin/server_php_del.php index d9c7baf2d..6848eea8d 100644 --- a/interface/web/admin/server_php_del.php +++ b/interface/web/admin/server_php_del.php @@ -44,6 +44,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_server_php'); $app->uses("tform_actions"); $app->tform_actions->onDelete(); diff --git a/interface/web/admin/server_php_edit.php b/interface/web/admin/server_php_edit.php index ff65c7007..f60ae997a 100644 --- a/interface/web/admin/server_php_edit.php +++ b/interface/web/admin/server_php_edit.php @@ -43,6 +43,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_server_php'); // Loading classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/admin/software_package_del.php b/interface/web/admin/software_package_del.php index ff9ab6e5b..31aeb1c09 100644 --- a/interface/web/admin/software_package_del.php +++ b/interface/web/admin/software_package_del.php @@ -33,6 +33,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_software_packages'); if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $software_update_inst_id = $app->functions->intval($_GET['software_update_inst_id']); diff --git a/interface/web/admin/software_package_edit.php b/interface/web/admin/software_package_edit.php index 038f377e7..65555d3a3 100644 --- a/interface/web/admin/software_package_edit.php +++ b/interface/web/admin/software_package_edit.php @@ -43,6 +43,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_software_packages'); if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); // Loading classes diff --git a/interface/web/admin/software_package_install.php b/interface/web/admin/software_package_install.php index e45f47ac0..0fd58816a 100644 --- a/interface/web/admin/software_package_install.php +++ b/interface/web/admin/software_package_install.php @@ -33,6 +33,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_software_packages'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); diff --git a/interface/web/admin/software_repo_del.php b/interface/web/admin/software_repo_del.php index b8effc1d5..630993717 100644 --- a/interface/web/admin/software_repo_del.php +++ b/interface/web/admin/software_repo_del.php @@ -44,6 +44,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_software_repo'); if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); $app->uses("tform_actions"); diff --git a/interface/web/admin/software_repo_edit.php b/interface/web/admin/software_repo_edit.php index 2a6a4f422..6d52da2b5 100644 --- a/interface/web/admin/software_repo_edit.php +++ b/interface/web/admin/software_repo_edit.php @@ -43,6 +43,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_software_repo'); if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); // Loading classes diff --git a/interface/web/admin/software_update_list.php b/interface/web/admin/software_update_list.php index a709e0cff..8bc8b79a4 100644 --- a/interface/web/admin/software_update_list.php +++ b/interface/web/admin/software_update_list.php @@ -33,6 +33,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_software_packages'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php index 3c54fc209..7d872fa45 100644 --- a/interface/web/admin/system_config_edit.php +++ b/interface/web/admin/system_config_edit.php @@ -43,6 +43,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_system_config'); // Loading classes $app->uses('tpl,tform,tform_actions'); diff --git a/interface/web/admin/tpl_default.php b/interface/web/admin/tpl_default.php index b9477f1e3..57395cfb2 100644 --- a/interface/web/admin/tpl_default.php +++ b/interface/web/admin/tpl_default.php @@ -1,4 +1,5 @@ auth->check_module_permissions('admin'); +$app->auth->check_security_permissions('admin_allow_del_cpuser'); if($conf['demo_mode'] == true && $_REQUEST['id'] <= 3) $app->error('This function is disabled in demo mode.'); $app->uses("tform_actions"); diff --git a/interface/web/admin/users_edit.php b/interface/web/admin/users_edit.php index 2b1be7f0f..a405db4ae 100644 --- a/interface/web/admin/users_edit.php +++ b/interface/web/admin/users_edit.php @@ -52,16 +52,29 @@ class page_action extends tform_actions { function onBeforeInsert() { global $app, $conf; + + //* Security settings check + if(isset($this->dataRecord['typ']) && $this->dataRecord['typ'][0] == 'admin') { + $app->auth->check_security_permissions('admin_allow_new_admin'); + } if(!in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) { $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; } + + + } function onBeforeUpdate() { global $app, $conf; if($conf['demo_mode'] == true && $_REQUEST['id'] <= 3) $app->error('This function is disabled in demo mode.'); + + //* Security settings check + if(isset($this->dataRecord['typ']) && $this->dataRecord['typ'][0] == 'admin') { + $app->auth->check_security_permissions('admin_allow_new_admin'); + } if(@is_array($this->dataRecord['modules']) && !in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) { $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; diff --git a/interface/web/remote/index.php b/interface/web/remote/index.php index d60a1c95b..c7ad8a901 100644 --- a/interface/web/remote/index.php +++ b/interface/web/remote/index.php @@ -6,7 +6,11 @@ require_once '../../lib/app.inc.php'; if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); -$app->load('remoting'); +$app->load('remoting,getconf'); + +$security_config = $app->getconf->get_security_config('permissions'); +if($security_config['remote_api_allowed'] != 'yes') die('Remote API is disabled in security settings.'); + $server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI'])); $server->setClass('remoting'); diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php index db4efe34e..4268fc08e 100644 --- a/interface/web/sites/form/shell_user.tform.php +++ b/interface/web/sites/form/shell_user.tform.php @@ -237,6 +237,10 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 1 => array ( 'type' => 'REGEX', 'regex' => '/^\/[a-zA-Z0-9\ \.\-\_\/]{10,128}$/', 'errmsg'=> 'directory_error_regex'), + 2 => array ( 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'shelluser_dir', + 'errmsg' => 'directory_error_notinweb'), ), 'default' => '', 'value' => '', diff --git a/interface/web/sites/lib/lang/en_shell_user.lng b/interface/web/sites/lib/lang/en_shell_user.lng index c3f21d52d..66d33678f 100644 --- a/interface/web/sites/lib/lang/en_shell_user.lng +++ b/interface/web/sites/lib/lang/en_shell_user.lng @@ -32,4 +32,5 @@ $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; $wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/tools/user_settings.php b/interface/web/tools/user_settings.php index 95018ac07..7065888dd 100644 --- a/interface/web/tools/user_settings.php +++ b/interface/web/tools/user_settings.php @@ -44,6 +44,10 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('tools'); +if($_SESSION['s']['user']['typ'] == 'admin') { + $app->auth->check_security_permissions('admin_allow_new_admin'); +} + // Loading classes $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); diff --git a/security/security_settings.ini b/security/security_settings.ini new file mode 100644 index 000000000..0ea46f2d9 --- /dev/null +++ b/security/security_settings.ini @@ -0,0 +1,25 @@ +[permissions] +allow_shell_user=yes +admin_allow_server_config=superadmin +admin_allow_server_services=superadmin +admin_allow_server_ip=superadmin +admin_allow_remote_users=superadmin +admin_allow_system_config=superadmin +admin_allow_server_php=superadmin +admin_allow_langedit=superadmin +admin_allow_new_admin=superadmin +admin_allow_del_cpuser=superadmin +admin_allow_cpuser_group=superadmin +admin_allow_firewall_config=superadmin +admin_allow_osupdate=superadmin +admin_allow_software_packages=superadmin +admin_allow_software_repo=superadmin +remote_api_allowed=yes + +[systemcheck] +security_admin_email=root@localhost +warn_new_admin=yes +warn_passwd_change=no +warn_shadow_change=no +check_groups_in_passwd=yes +check_ispconfig_md5=yes \ No newline at end of file diff --git a/server/lib/classes/getconf.inc.php b/server/lib/classes/getconf.inc.php index c5ca6c696..768ea2cab 100644 --- a/server/lib/classes/getconf.inc.php +++ b/server/lib/classes/getconf.inc.php @@ -59,6 +59,15 @@ class getconf { } return ($section == '') ? $this->config['global'] : $this->config['global'][$section]; } + + public function get_security_config($section = '') { + global $app; + + $app->uses('ini_parser'); + $security_config = $app->ini_parser->parse_ini_string(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); + + return ($section == '') ? $security_config : $security_config[$section]; + } } diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 67cbee02c..3cb9d36ca 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -58,19 +58,25 @@ class shelluser_base_plugin { /* Register for the events */ - + $app->plugins->registerEvent('shell_user_insert', $this->plugin_name, 'insert'); $app->plugins->registerEvent('shell_user_update', $this->plugin_name, 'update'); $app->plugins->registerEvent('shell_user_delete', $this->plugin_name, 'delete'); - + } function insert($event_name, $data) { global $app, $conf; - - $app->uses('system'); + + $app->uses('system,getconf'); + + $security_config = $app->getconf->get_security_config('permissions'); + if($security_config['allow_shell_user'] != 'yes') { + $app->log('Shell user plugin disabled by security settings.',LOGLEVEL_WARN); + return false; + } //* Check if the resulting path is inside the docroot $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($data['new']['parent_domain_id'])); @@ -144,7 +150,13 @@ class shelluser_base_plugin { function update($event_name, $data) { global $app, $conf; - $app->uses('system'); + $app->uses('system,getconf'); + + $security_config = $app->getconf->get_security_config('permissions'); + if($security_config['allow_shell_user'] != 'yes') { + $app->log('Shell user plugin disabled by security settings.',LOGLEVEL_WARN); + return false; + } //* Check if the resulting path is inside the docroot $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($data['new']['parent_domain_id'])); @@ -223,7 +235,13 @@ class shelluser_base_plugin { function delete($event_name, $data) { global $app, $conf; - $app->uses('system'); + $app->uses('system,getconf'); + + $security_config = $app->getconf->get_security_config('permissions'); + if($security_config['allow_shell_user'] != 'yes') { + $app->log('Shell user plugin disabled by security settings.',LOGLEVEL_WARN); + return false; + } if($app->system->is_user($data['old']['username'])) { // Get the UID of the user diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index f0fb2799e..cb222fdc4 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -59,11 +59,11 @@ class shelluser_jailkit_plugin { /* Register for the events */ - + $app->plugins->registerEvent('shell_user_insert', $this->plugin_name, 'insert'); $app->plugins->registerEvent('shell_user_update', $this->plugin_name, 'update'); $app->plugins->registerEvent('shell_user_delete', $this->plugin_name, 'delete'); - + } @@ -71,7 +71,15 @@ class shelluser_jailkit_plugin { function insert($event_name, $data) { global $app, $conf; - $app->uses('system'); + $app->uses('system,getconf'); + + $security_config = $app->getconf->get_security_config('permissions'); + if($security_config['allow_shell_user'] != 'yes') { + $app->log('Shell user plugin disabled by security settings.',LOGLEVEL_WARN); + return false; + } + + $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$data['new']['parent_domain_id']); if(!$app->system->is_allowed_user($data['new']['username'], false, false) @@ -143,7 +151,14 @@ class shelluser_jailkit_plugin { function update($event_name, $data) { global $app, $conf; - $app->uses('system'); + $app->uses('system,getconf'); + + $security_config = $app->getconf->get_security_config('permissions'); + if($security_config['allow_shell_user'] != 'yes') { + $app->log('Shell user plugin disabled by security settings.',LOGLEVEL_WARN); + return false; + } + $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$data['new']['parent_domain_id']); if(!$app->system->is_allowed_user($data['new']['username'], false, false) @@ -209,7 +224,13 @@ class shelluser_jailkit_plugin { function delete($event_name, $data) { global $app, $conf; - $app->uses('system'); + $app->uses('system,getconf'); + + $security_config = $app->getconf->get_security_config('permissions'); + if($security_config['allow_shell_user'] != 'yes') { + $app->log('Shell user plugin disabled by security settings.',LOGLEVEL_WARN); + return false; + } $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$data['old']['parent_domain_id']); -- GitLab From 1ed92e187ae2dfb51f5f2d62c290a85f93b6dc21 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 19:54:00 +0200 Subject: [PATCH 096/158] - Added security check script. - Create md5 sums of all files at install and update. --- install/install.php | 5 ++ install/update.php | 5 ++ interface/web/admin/users_edit.php | 2 +- security/check.php | 113 ++++++++++++++++++++++++++++- security/security_settings.ini | 4 +- server/server.sh | 6 +- 6 files changed, 126 insertions(+), 9 deletions(-) diff --git a/install/install.php b/install/install.php index 108ed05b2..49c272040 100644 --- a/install/install.php +++ b/install/install.php @@ -679,6 +679,11 @@ if($install_mode == 'standard') { } //* << $install_mode / 'Standard' or Genius +//* Create md5 filelist +$md5_filename = '/usr/local/ispconfig/security/data/file_checksums_'.date('Y-m-d_h-i').'.md5'; +exec('find /usr/local/ispconfig -type f -print0 | xargs -0 md5sum > '.$md5_filename); +chmod($md5_filename,0700); + echo "Installation completed.\n"; diff --git a/install/update.php b/install/update.php index eec69bad3..803e47d43 100644 --- a/install/update.php +++ b/install/update.php @@ -497,6 +497,11 @@ if($reconfigure_services_answer == 'yes') { } } +//* Create md5 filelist +$md5_filename = '/usr/local/ispconfig/security/data/file_checksums_'.date('Y-m-d_h-i').'.md5'; +exec('find /usr/local/ispconfig -type f -print0 | xargs -0 md5sum > '.$md5_filename); +chmod($md5_filename,0700); + echo "Update finished.\n"; ?> diff --git a/interface/web/admin/users_edit.php b/interface/web/admin/users_edit.php index a405db4ae..0a14ca5e1 100644 --- a/interface/web/admin/users_edit.php +++ b/interface/web/admin/users_edit.php @@ -70,7 +70,7 @@ class page_action extends tform_actions { global $app, $conf; if($conf['demo_mode'] == true && $_REQUEST['id'] <= 3) $app->error('This function is disabled in demo mode.'); - + //* Security settings check if(isset($this->dataRecord['typ']) && $this->dataRecord['typ'][0] == 'admin') { $app->auth->check_security_permissions('admin_allow_new_admin'); diff --git a/security/check.php b/security/check.php index d6518a1c5..dc930c5b7 100644 --- a/security/check.php +++ b/security/check.php @@ -28,9 +28,8 @@ 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"; +require "/usr/local/ispconfig/server/lib/config.inc.php"; +require "/usr/local/ispconfig/server/lib/app.inc.php"; set_time_limit(0); ini_set('error_reporting', E_ALL & ~E_NOTICE); @@ -41,6 +40,114 @@ $conf['server_id'] = intval($conf['server_id']); // Load required base-classes $app->uses('ini_parser,file,services,getconf,system'); + +// get security config +$security_config = $app->getconf->get_security_config('systemcheck'); + +$alert = ''; +$data_dir = '/usr/local/ispconfig/security/data'; + + +// Check if a new ispconfig user has been added +if($security_config['warn_new_admin'] == 'yes') { + $data_file = $data_dir.'/admincount'; + //get number of admins + $tmp = $app->db->queryOneRecord("SELECT count(userid) AS number FROM sys_user WHERE typ = 'admin'"); + $admin_user_count_new = intval($tmp['number']); + + if(is_file($data_file)) { + $admin_user_count_old = intval(file_get_contents($data_file)); + if($admin_user_count_new != $admin_user_count_old) { + $alert .= "The number of ISPConfig administrator users has changed. Old: $admin_user_count_old New: $admin_user_count_new \n"; + file_put_contents($data_file,$admin_user_count_new); + } + } else { + // first run, so we save the current count + file_put_contents($data_file,$admin_user_count_new); + chmod($data_file,0700); + } +} + +// Check if /etc/passwd file has been changed +if($security_config['warn_passwd_change'] == 'yes') { + $data_file = $data_dir.'/passwd.md5'; + $md5sum_new = md5_file('/etc/passwd'); + + if(is_file($data_file)) { + $md5sum_old = trim(file_get_contents($data_file)); + if($md5sum_new != $md5sum_old) { + $alert .= "The file /etc/passwd has been changed.\n"; + file_put_contents($data_file,$md5sum_new); + } + } else { + file_put_contents($data_file,$md5sum_new); + chmod($data_file,0700); + } +} + +// Check if /etc/shadow file has been changed +if($security_config['warn_shadow_change'] == 'yes') { + $data_file = $data_dir.'/shadow.md5'; + $md5sum_new = md5_file('/etc/shadow'); + + if(is_file($data_file)) { + $md5sum_old = trim(file_get_contents($data_file)); + if($md5sum_new != $md5sum_old) { + $alert .= "The file /etc/shadow has been changed.\n"; + file_put_contents($data_file,$md5sum_new); + } + } else { + file_put_contents($data_file,$md5sum_new); + chmod($data_file,0700); + } +} + +// Check if /etc/group file has been changed +if($security_config['warn_group_change'] == 'yes') { + $data_file = $data_dir.'/group.md5'; + $md5sum_new = md5_file('/etc/group'); + + if(is_file($data_file)) { + $md5sum_old = trim(file_get_contents($data_file)); + if($md5sum_new != $md5sum_old) { + $alert .= "The file /etc/group has been changed.\n"; + file_put_contents($data_file,$md5sum_new); + } + } else { + file_put_contents($data_file,$md5sum_new); + chmod($data_file,0700); + } +} + + +if($alert != '') { + $admin_email = $security_config['security_admin_email']; + $admin_email_subject = $security_config['security_admin_email_subject']; + mail($admin_email, $admin_email_subject, $alert); + //$app->log(str_replace("\n"," -- ",$alert),1); + echo str_replace("\n"," -- ",$alert)."\n"; +} + + + + + + + + + + + + + + + + + + + + + diff --git a/security/security_settings.ini b/security/security_settings.ini index 0ea46f2d9..4dfe00162 100644 --- a/security/security_settings.ini +++ b/security/security_settings.ini @@ -18,8 +18,8 @@ remote_api_allowed=yes [systemcheck] security_admin_email=root@localhost +security_admin_email_subject=Security alert from server warn_new_admin=yes warn_passwd_change=no warn_shadow_change=no -check_groups_in_passwd=yes -check_ispconfig_md5=yes \ No newline at end of file +warn_group_change=no \ No newline at end of file diff --git a/server/server.sh b/server/server.sh index 88c30e744..522e0d5f7 100755 --- a/server/server.sh +++ b/server/server.sh @@ -13,8 +13,8 @@ if [ -f /usr/local/ispconfig/server/lib/php.ini ]; then fi fi -cd /usr/local/ispconfig/security -/usr/bin/php -q /usr/local/ispconfig/security/check.php - cd /usr/local/ispconfig/server /usr/bin/php -q /usr/local/ispconfig/server/server.php + +cd /usr/local/ispconfig/security +/usr/bin/php -q /usr/local/ispconfig/security/check.php -- GitLab From 892d732fb407872a62548dbc2f8eae7430ae74ce Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Thu, 14 Aug 2014 20:02:17 +0200 Subject: [PATCH 097/158] - added function to delete shell user home directory --- .../shelluser_base_plugin.inc.php | 44 +++++++++++++++++-- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 3cb9d36ca..a6dbfcf68 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -98,12 +98,17 @@ class shelluser_base_plugin { if($app->system->is_user($data['new']['puser'])) { - //* Remove webfolder protection - $app->system->web_folder_protection($web['document_root'], false); - // Get the UID of the parent user $uid = intval($app->system->getuid($data['new']['puser'])); if($uid > $this->min_uid) { + //* Remove webfolder protection + $app->system->web_folder_protection($web['document_root'], false); + + if(!is_dir($data['new']['dir'])){ + $app->file->mkdirs(escapeshellcmd($data['new']['dir']), '0700'); + $app->system->chown(escapeshellcmd($data['new']['dir']),escapeshellcmd($data['new']['username'])); + $app->system->chgrp(escapeshellcmd($data['new']['dir']),escapeshellcmd($data['new']['pgroup'])); + } $command = 'useradd'; $command .= ' -d '.escapeshellcmd($data['new']['dir']); $command .= ' -g '.escapeshellcmd($data['new']['pgroup']); @@ -138,7 +143,6 @@ class shelluser_base_plugin { //* Add webfolder protection again $app->system->web_folder_protection($web['document_root'], true); - } else { $app->log("UID = $uid for shelluser:".$data['new']['username']." not allowed.", LOGLEVEL_ERROR); } @@ -247,6 +251,38 @@ class shelluser_base_plugin { // Get the UID of the user $userid = intval($app->system->getuid($data['old']['username'])); if($userid > $this->min_uid) { + // check if we have to delete the dir + $check = $app->db->queryOneRecord('SELECT shell_user_id FROM `shell_user` WHERE `dir` = \'' . $app->db->quote($data['old']['dir']) . '\''); + if(!$check && is_dir($data['old']['dir'])) { + // delete dir + $homedir = $data['old']['dir']; + if(substr($homedir, -1) !== '/') $homedir .= '/'; + $files = array('.bash_logout', '.bash_history', '.bashrc', '.profile'); + $dirs = array('.ssh'); + foreach($files as $delfile) { + if(is_file($homedir . $delfile) && fileowner($homedir . $delfile) == $userid) unlink($homedir . $delfile); + } + foreach($dirs as $deldir) { + if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) exec('rm -rf ' . escapeshellarg($homedir . $deldir)); + } + $empty = true; + $dirres = opendir($homedir); + if($dirres) { + while(($entry = readdir($dirres)) !== false) { + if($entry != '.' && $entry != '..') { + $empty = false; + break; + } + } + closedir($dirres); + } + if($empty == true) { + rmdir($homedir); + } + unset($files); + unset($dirs); + } + // We delete only non jailkit users, jailkit users will be deleted by the jailkit plugin. if ($data['old']['chroot'] != "jailkit") { $command = 'killall -u '.escapeshellcmd($data['old']['username']).' ; userdel -f'; -- GitLab From b51c22aecea55a2edb0e5fa712b297465a444b28 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 20:06:39 +0200 Subject: [PATCH 098/158] Fixed: FS#3624 - SSL cert for postfix not created on OpenSuSE Linux during install --- install/dist/lib/fedora.lib.php | 2 +- install/dist/lib/gentoo.lib.php | 3 ++- install/dist/lib/opensuse.lib.php | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index e01a739d6..5e28b8f3a 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -114,7 +114,7 @@ class installer_dist extends installer_base { function configure_postfix($options = '') { - global $conf; + global $conf,$autoinstall; $cf = $conf['postfix']; $config_dir = $cf['config_dir']; diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index fb6b13853..72b34dcf3 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -49,7 +49,7 @@ class installer extends installer_base public function configure_postfix($options = '') { - global $conf; + global $conf,$autoinstall; $cf = $conf['postfix']; $config_dir = $cf['config_dir']; @@ -126,6 +126,7 @@ class installer extends installer_base $command = 'cd '.$config_dir.'; ' .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; } + exec($command); $command = 'chmod o= '.$config_dir.'/smtpd.key'; caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index c76833169..c00903ee4 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -130,7 +130,7 @@ class installer_dist extends installer_base { function configure_postfix($options = '') { - global $conf; + global $conf,$autoinstall; $cf = $conf['postfix']; $config_dir = $cf['config_dir']; @@ -264,6 +264,7 @@ class installer_dist extends installer_base { $command = 'cd '.$config_dir.'; ' .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; } + exec($command); $command = 'chmod o= '.$config_dir.'/smtpd.key'; caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); -- GitLab From 7c27524f673112971d6f425ddc8ee03041282720 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 20:25:15 +0200 Subject: [PATCH 099/158] Added readme file. --- security/README.txt | 96 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 security/README.txt diff --git a/security/README.txt b/security/README.txt new file mode 100644 index 000000000..c73231237 --- /dev/null +++ b/security/README.txt @@ -0,0 +1,96 @@ + +Description for security_settings.ini values. + +The option "superadmin" means that a setting is only available to the admin user with userid 1 in the interface. +If there are other amdins, then they cant access this setting. + +----------------------------------------------------------- +Setting: allow_shell_user +Options: yes/no +Description: Disables the shell user plugins in ispconfig + +Setting: admin_allow_server_config +Options: yes/no/superadmin +Description: Disables System > Server config + +Setting: admin_allow_server_services +Options: yes/no/superadmin +Description: Disables System > Server services + +Setting: admin_allow_server_ip +Options: yes/no/superadmin +Description: Disables System > Server IP + +Setting: admin_allow_remote_users +Options: yes/no/superadmin +Description: Disables System > Remote Users + +Setting: admin_allow_system_config +Options: yes/no/superadmin +Description: Disables System > Interface > Main Config + +Setting: admin_allow_server_php +Options: yes/no/superadmin +Description: Disables System > Additional PHP versions + +Setting: admin_allow_langedit +Options: yes/no/superadmin +Description: Disables System > Language editor functions + +Setting: admin_allow_new_admin +Options: yes/no/superadmin +Description: Disables the ability to add new admin users trough the interface + +Setting: admin_allow_del_cpuser +Options: yes/no/superadmin +Description: Disables the ability to delete CP users + +Setting: admin_allow_cpuser_group +Options: yes/no/superadmin +Description: Disables cp user group editing + +Setting: admin_allow_firewall_config +Options: yes/no/superadmin +Description: Disables System > Firewall + +Setting: admin_allow_osupdate +Options: yes/no/superadmin +Description: Disables System > OS update + +Setting: admin_allow_software_packages +Options: yes/no/superadmin +Description: Disables System > Apps & Addons > Packages and Update + +Setting: admin_allow_software_repo +Options: yes/no/superadmin +Description: Disables System > Apps & Addons > Repo + +Setting: remote_api_allowed +Options: yes/no +Description: Disables the remote API + +Setting: security_admin_email +Options: email address +Description: Email address of the security admin + +Setting: security_admin_email_subject +Options: Text +Description: Subject of the notification email + +Setting: warn_new_admin +Options: yes/no +Description: Warn by email when a new admin user in ISPConfig has been added. + +Setting: warn_passwd_change +Options: yes/no +Description: Warn by email when /etc/passwd has been changed. + +Setting: warn_shadow_change +Options: yes/no +Description: Warn by email when /etc/shadow has been changed. + +Setting: warn_group_change +Options: yes/no +Description: Warn by email when /etc/group has been changed. + + -- GitLab From a13af29287c5f3c72f21d104651ece92b4a9e52e Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 21:06:14 +0200 Subject: [PATCH 100/158] Added copy commands for security directory to installer. --- install/dist/lib/fedora.lib.php | 4 ++++ install/dist/lib/gentoo.lib.php | 4 ++++ install/dist/lib/opensuse.lib.php | 4 ++++ install/lib/installer_base.lib.php | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 5e28b8f3a..49403dec0 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -832,6 +832,10 @@ class installer_dist extends installer_base { //* copy the ISPConfig server part $command = "cp -rf ../server $install_dir"; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* copy the ISPConfig security part + $command = 'cp -rf ../security '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Create a symlink, so ISPConfig is accessible via web // Replaced by a separate vhost definition for port 8080 diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 72b34dcf3..9e398d1a4 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -748,6 +748,10 @@ class installer extends installer_base //* copy the ISPConfig server part $command = "cp -rf ../server $install_dir"; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* copy the ISPConfig security part + $command = 'cp -rf ../security '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Create the config file for ISPConfig interface diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index c00903ee4..c44bf8b6f 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -904,6 +904,10 @@ class installer_dist extends installer_base { //* copy the ISPConfig server part $command = "cp -rf ../server $install_dir"; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* copy the ISPConfig security part + $command = 'cp -rf ../security '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Create a symlink, so ISPConfig is accessible via web // Replaced by a separate vhost definition for port 8080 diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 19e1f032f..125ebe1a7 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1744,6 +1744,10 @@ class installer_base { //* copy the ISPConfig server part $command = 'cp -rf ../server '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* copy the ISPConfig security part + $command = 'cp -rf ../security '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Create a symlink, so ISPConfig is accessible via web // Replaced by a separate vhost definition for port 8080 -- GitLab From a7e4ec0ce669549c826cdbb8add5c7d50469a772 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 21:58:40 +0200 Subject: [PATCH 101/158] Added new directory delete procedure in jailkit plugin. --- .../shelluser_base_plugin.inc.php | 7 +++ .../shelluser_jailkit_plugin.inc.php | 46 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index a6dbfcf68..651ccc997 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -254,6 +254,11 @@ class shelluser_base_plugin { // check if we have to delete the dir $check = $app->db->queryOneRecord('SELECT shell_user_id FROM `shell_user` WHERE `dir` = \'' . $app->db->quote($data['old']['dir']) . '\''); if(!$check && is_dir($data['old']['dir'])) { + + $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($data['old']['parent_domain_id'])); + + $app->system->web_folder_protection($web['document_root'], false); + // delete dir $homedir = $data['old']['dir']; if(substr($homedir, -1) !== '/') $homedir .= '/'; @@ -281,6 +286,8 @@ class shelluser_base_plugin { } unset($files); unset($dirs); + + $app->system->web_folder_protection($web['document_root'], true); } // We delete only non jailkit users, jailkit users will be deleted by the jailkit plugin. diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index cb222fdc4..a39183579 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -247,9 +247,13 @@ class shelluser_jailkit_plugin { $app->system->web_folder_protection($web['document_root'], false); if(@is_dir($data['old']['dir'].$jailkit_chroot_userhome)) { + $userid = intval($app->system->getuid($data['old']['username'])); $command = 'killall -u '.escapeshellcmd($data['old']['username']).' ; userdel -f'; $command .= ' '.escapeshellcmd($data['old']['username']).' &> /dev/null'; exec($command); + + $this->_delete_homedir($data['old']['dir'].$jailkit_chroot_userhome,$userid,$data['old']['parent_domain_id']); + $app->log("Jailkit Plugin -> delete chroot home:".$data['old']['dir'].$jailkit_chroot_userhome, LOGLEVEL_DEBUG); } @@ -523,6 +527,48 @@ class shelluser_jailkit_plugin { exec("chmod 600 '$sshkeys'"); } + + private function _delete_homedir($homedir,$userid,$parent_domain_id) { + global $app, $conf; + + // check if we have to delete the dir + $check = $app->db->queryOneRecord('SELECT shell_user_id FROM `shell_user` WHERE `dir` = \'' . $app->db->quote($homedir) . '\''); + + if(!$check && is_dir($homedir)) { + $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($parent_domain_id)); + $app->system->web_folder_protection($web['document_root'], false); + + // delete dir + if(substr($homedir, -1) !== '/') $homedir .= '/'; + $files = array('.bash_logout', '.bash_history', '.bashrc', '.profile'); + $dirs = array('.ssh'); + foreach($files as $delfile) { + if(is_file($homedir . $delfile) && fileowner($homedir . $delfile) == $userid) unlink($homedir . $delfile); + } + foreach($dirs as $deldir) { + if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) exec('rm -rf ' . escapeshellarg($homedir . $deldir)); + } + $empty = true; + $dirres = opendir($homedir); + if($dirres) { + while(($entry = readdir($dirres)) !== false) { + if($entry != '.' && $entry != '..') { + $empty = false; + break; + } + } + closedir($dirres); + } + if($empty == true) { + rmdir($homedir); + } + unset($files); + unset($dirs); + + $app->system->web_folder_protection($web['document_root'], true); + } + + } } // end class -- GitLab From 68fccf6d5e610c8ee078826bd9a759cafc9bf788 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 22:20:01 +0200 Subject: [PATCH 102/158] Added new temp directory for the interface as the server temp directory is not accessible anymore. --- install/tpl/apache_ispconfig_fcgi_starter.master | 2 +- interface/temp/empty.dir | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 interface/temp/empty.dir diff --git a/install/tpl/apache_ispconfig_fcgi_starter.master b/install/tpl/apache_ispconfig_fcgi_starter.master index cc6ec2d09..240fcccd6 100644 --- a/install/tpl/apache_ispconfig_fcgi_starter.master +++ b/install/tpl/apache_ispconfig_fcgi_starter.master @@ -3,4 +3,4 @@ PHPRC={fastcgi_phpini_path} export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=1 -exec {fastcgi_bin} -d magic_quotes_gpc=off -d session.save_path=/usr/local/ispconfig/server/temp \ No newline at end of file +exec {fastcgi_bin} -d magic_quotes_gpc=off -d session.save_path=/usr/local/ispconfig/interface/temp \ No newline at end of file diff --git a/interface/temp/empty.dir b/interface/temp/empty.dir new file mode 100644 index 000000000..e69de29bb -- GitLab From 56fda89e367aafed045375021b92ff7b3f0028a1 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 22:21:31 +0200 Subject: [PATCH 103/158] Updated temp path for php-fpm. --- install/tpl/php_fpm_pool.conf.master | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/tpl/php_fpm_pool.conf.master b/install/tpl/php_fpm_pool.conf.master index 9cde75ab6..9ff7ebc94 100644 --- a/install/tpl/php_fpm_pool.conf.master +++ b/install/tpl/php_fpm_pool.conf.master @@ -17,5 +17,5 @@ pm.max_spare_servers = 5 chdir = / ; php_admin_value[open_basedir] = /usr/local/ispconfig/interface:/usr/share -php_admin_value[session.save_path] = /usr/local/ispconfig/server/temp +php_admin_value[session.save_path] = /usr/local/ispconfig/interface/temp php_admin_flag[magic_quotes_gpc] = off \ No newline at end of file -- GitLab From 8a3cd2369d830d7d1ad9edd437908b6a741d9f2c Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 22:40:51 +0200 Subject: [PATCH 104/158] - Updated czech translation - Merged language files --- interface/lib/lang/hr.lng | 2 +- interface/lib/lang/hu.lng | 2 +- interface/lib/lang/id.lng | 2 +- interface/lib/lang/it.lng | 2 +- interface/lib/lang/ja.lng | 2 +- interface/lib/lang/nl.lng | 2 +- interface/lib/lang/pl.lng | 2 +- interface/lib/lang/pt.lng | 2 +- interface/lib/lang/ro.lng | 2 +- interface/lib/lang/ru.lng | 2 +- interface/lib/lang/se.lng | 4 ++-- interface/lib/lang/sk.lng | 2 +- interface/lib/lang/tr.lng | 2 +- interface/web/admin/lib/lang/cz.lng | 2 +- .../web/admin/lib/lang/cz_package_install.lng | 2 +- .../web/admin/lib/lang/cz_remote_action.lng | 4 ++-- .../web/admin/lib/lang/cz_server_config.lng | 4 ++-- .../web/admin/lib/lang/cz_software_repo.lng | 4 ++-- .../admin/lib/lang/cz_software_repo_list.lng | 4 ++-- .../web/admin/lib/lang/cz_system_config.lng | 2 +- .../web/admin/lib/lang/se_system_config.lng | 2 +- interface/web/client/lib/lang/se_client.lng | 2 +- .../dns/lib/lang/ar_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/ar_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/bg_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/bg_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/br_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/br_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/cz_dns_slave_admin_list.lng | 16 ++++++++-------- .../web/dns/lib/lang/cz_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/el_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/el_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/es_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/es_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/fi_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/fi_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/fr_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/fr_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/hr_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/hr_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/hu_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/hu_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/id_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/id_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/it_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/it_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/ja_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/ja_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/nl_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/nl_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/pl_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/pl_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/pt_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/pt_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/ro_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/ro_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/ru_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/ru_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/se_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/se_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/sk_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/sk_dns_soa_admin_list.lng | 18 +++++++++--------- .../dns/lib/lang/tr_dns_slave_admin_list.lng | 14 +++++++------- .../web/dns/lib/lang/tr_dns_soa_admin_list.lng | 18 +++++++++--------- interface/web/login/lib/lang/se_login_as.lng | 6 +++--- interface/web/mail/lib/lang/cz.lng | 4 ++-- interface/web/mail/lib/lang/cz_mail_user.lng | 2 +- .../mail/lib/lang/cz_mail_whitelist_list.lng | 2 +- .../lib/lang/cz_spamfilter_whitelist_list.lng | 2 +- interface/web/mail/lib/lang/se_mail_get.lng | 2 +- interface/web/sites/lib/lang/ar_shell_user.lng | 2 ++ interface/web/sites/lib/lang/ar_web_domain.lng | 1 + interface/web/sites/lib/lang/bg_shell_user.lng | 2 ++ interface/web/sites/lib/lang/bg_web_domain.lng | 1 + interface/web/sites/lib/lang/br_shell_user.lng | 2 ++ interface/web/sites/lib/lang/br_web_domain.lng | 1 + interface/web/sites/lib/lang/cz_ftp_user.lng | 6 +++--- interface/web/sites/lib/lang/cz_shell_user.lng | 6 ++++-- .../web/sites/lib/lang/cz_web_aliasdomain.lng | 4 ++-- interface/web/sites/lib/lang/cz_web_domain.lng | 1 + .../web/sites/lib/lang/cz_web_folder_list.lng | 2 +- .../sites/lib/lang/cz_web_folder_user_list.lng | 2 +- .../sites/lib/lang/cz_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/cz_webdav_user.lng | 14 +++++++------- interface/web/sites/lib/lang/de_shell_user.lng | 2 ++ interface/web/sites/lib/lang/de_web_domain.lng | 1 + interface/web/sites/lib/lang/el_shell_user.lng | 2 ++ interface/web/sites/lib/lang/el_web_domain.lng | 1 + interface/web/sites/lib/lang/es_shell_user.lng | 2 ++ interface/web/sites/lib/lang/es_web_domain.lng | 1 + interface/web/sites/lib/lang/fi_shell_user.lng | 2 ++ interface/web/sites/lib/lang/fi_web_domain.lng | 1 + interface/web/sites/lib/lang/fr_shell_user.lng | 2 ++ interface/web/sites/lib/lang/fr_web_domain.lng | 1 + interface/web/sites/lib/lang/hr_shell_user.lng | 2 ++ interface/web/sites/lib/lang/hr_web_domain.lng | 1 + interface/web/sites/lib/lang/hu_shell_user.lng | 2 ++ interface/web/sites/lib/lang/hu_web_domain.lng | 1 + interface/web/sites/lib/lang/id_shell_user.lng | 2 ++ interface/web/sites/lib/lang/id_web_domain.lng | 1 + interface/web/sites/lib/lang/it_shell_user.lng | 2 ++ interface/web/sites/lib/lang/it_web_domain.lng | 1 + interface/web/sites/lib/lang/ja_shell_user.lng | 2 ++ interface/web/sites/lib/lang/ja_web_domain.lng | 1 + interface/web/sites/lib/lang/nl_shell_user.lng | 2 ++ interface/web/sites/lib/lang/nl_web_domain.lng | 1 + interface/web/sites/lib/lang/pl_shell_user.lng | 2 ++ interface/web/sites/lib/lang/pl_web_domain.lng | 1 + interface/web/sites/lib/lang/pt_shell_user.lng | 2 ++ interface/web/sites/lib/lang/pt_web_domain.lng | 1 + interface/web/sites/lib/lang/ro_shell_user.lng | 2 ++ interface/web/sites/lib/lang/ro_web_domain.lng | 1 + interface/web/sites/lib/lang/ru_shell_user.lng | 2 ++ interface/web/sites/lib/lang/ru_web_domain.lng | 1 + interface/web/sites/lib/lang/se.lng | 2 +- interface/web/sites/lib/lang/se_aps.lng | 16 ++++++++-------- interface/web/sites/lib/lang/se_shell_user.lng | 2 ++ interface/web/sites/lib/lang/se_web_domain.lng | 1 + .../web/sites/lib/lang/se_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/sk_shell_user.lng | 2 ++ interface/web/sites/lib/lang/sk_web_domain.lng | 1 + interface/web/sites/lib/lang/tr_shell_user.lng | 2 ++ interface/web/sites/lib/lang/tr_web_domain.lng | 1 + 123 files changed, 466 insertions(+), 400 deletions(-) diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng index 634a39648..02ba8b1f6 100644 --- a/interface/lib/lang/hr.lng +++ b/interface/lib/lang/hr.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng index 9aa46b488..f45820ae3 100644 --- a/interface/lib/lang/hu.lng +++ b/interface/lib/lang/hu.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng index bc0a5f950..c5759c4ee 100644 --- a/interface/lib/lang/id.lng +++ b/interface/lib/lang/id.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng index 1f46893fe..f6c5c2d34 100644 --- a/interface/lib/lang/it.lng +++ b/interface/lib/lang/it.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng index 41cd638f8..0781f39a9 100644 --- a/interface/lib/lang/ja.lng +++ b/interface/lib/lang/ja.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng index b359dee1c..1fe07082d 100644 --- a/interface/lib/lang/nl.lng +++ b/interface/lib/lang/nl.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng index 058680c47..559302eb2 100644 --- a/interface/lib/lang/pl.lng +++ b/interface/lib/lang/pl.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng index 48beea8dd..14e6d16d4 100644 --- a/interface/lib/lang/pt.lng +++ b/interface/lib/lang/pt.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng index c5234fb83..7ae78ba6c 100644 --- a/interface/lib/lang/ro.lng +++ b/interface/lib/lang/ro.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng index 7fb0ac863..3fafcc570 100644 --- a/interface/lib/lang/ru.lng +++ b/interface/lib/lang/ru.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/se.lng b/interface/lib/lang/se.lng index a7813bc0b..535e04c62 100644 --- a/interface/lib/lang/se.lng +++ b/interface/lib/lang/se.lng @@ -145,8 +145,8 @@ $wb['strength_2'] = 'Sådär'; $wb['strength_3'] = 'Bra'; $wb['strength_4'] = 'Starkt'; $wb['strength_5'] = 'Väldigt starkt'; -$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \"{strength}\".'; +$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng index 63a16ce29..5cd95401f 100644 --- a/interface/lib/lang/sk.lng +++ b/interface/lib/lang/sk.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng index e7d9e037f..72c2324b4 100644 --- a/interface/lib/lang/tr.lng +++ b/interface/lib/lang/tr.lng @@ -149,4 +149,4 @@ $wb['weak_password_txt'] = 'The chosen password does not match the security guid $wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; -?> \ No newline at end of file +?> diff --git a/interface/web/admin/lib/lang/cz.lng b/interface/web/admin/lib/lang/cz.lng index bc1c9bb83..9916f929a 100644 --- a/interface/web/admin/lib/lang/cz.lng +++ b/interface/web/admin/lib/lang/cz.lng @@ -34,7 +34,7 @@ $wb['Interface Config'] = 'Hlavní konfigurace'; $wb['Domains'] = 'Domény'; $wb['Misc'] = 'Různé'; $wb['Software'] = 'Software'; -$wb['Repositories'] = 'Repozitáře'; +$wb['Repositories'] = 'Zdroje repozitářů'; $wb['Packages'] = 'Balíčky'; $wb['Updates'] = 'Aktualizace'; $wb['Language Editor'] = 'Jazykový editor'; diff --git a/interface/web/admin/lib/lang/cz_package_install.lng b/interface/web/admin/lib/lang/cz_package_install.lng index 64a190d9a..2bdc9df31 100644 --- a/interface/web/admin/lib/lang/cz_package_install.lng +++ b/interface/web/admin/lib/lang/cz_package_install.lng @@ -1,5 +1,5 @@
POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !'; +$wb['do_osupdate_desc'] = 'Tato akce provede \"aptitude -y\" aktualizaci na vybraném serveru.

POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !'; $wb['do_ispcupdate_caption'] = 'Provedení ISPConfig 3 - aktualizace na vzdáleném serveru'; -$wb['do_ispcupdate_desc'] = 'Tato akce provede \\"ISPConfig 3\\" aktualizaci na vašem vybraném serveru.

POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !'; +$wb['do_ispcupdate_desc'] = 'Tato akce provede \"ISPConfig 3\" aktualizaci na vašem vybraném serveru.

POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !'; $wb['action_scheduled'] = 'Akce je naplánována na provedení'; $wb['select_all_server'] = 'Všechny servery'; $wb['ispconfig_update_title'] = 'ISPConfig pokyny k aktualizaci'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index c2db3bab0..306f29e91 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -145,10 +145,10 @@ $wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM adresář pro socket je prázdn $wb['try_rescue_txt'] = 'Povolit monitorování služeb a restartovat při selhání'; $wb['do_not_try_rescue_mysql_txt'] = 'Zakázat MySQL monitorování'; $wb['do_not_try_rescue_mail_txt'] = 'Zakázat E-mail monitorování'; -$wb['rescue_description_txt'] = 'Informace: Pokud chcete např. vypnout MySQL monitorování zatrhněte políčko \\"Zakázat MySQL monitorování\\" změna se provede do 2-3 minut.
Pokud nepočkáte 2-3 minuty, monitorování restartuje mysql!!'; +$wb['rescue_description_txt'] = 'Informace: Pokud chcete např. vypnout MySQL monitorování zatrhněte políčko \"Zakázat MySQL monitorování\" změna se provede do 2-3 minut.
Pokud nepočkáte 2-3 minuty, monitorování restartuje mysql!!'; $wb['enable_sni_txt'] = 'Aktivovat SNI (Server Name Indication)'; $wb['do_not_try_rescue_httpd_txt'] = 'Zakázat HTTPD monitorování'; -$wb['set_folder_permissions_on_update_txt'] = 'Set folder permissions on update'; +$wb['set_folder_permissions_on_update_txt'] = 'Nastavení oprávnění složky při aktualizaci'; $wb['add_web_users_to_sshusers_group_txt'] = 'Add web users to -sshusers- group'; $wb['connect_userid_to_webid_txt'] = 'Connect Linux userid to webid'; $wb['connect_userid_to_webid_start_txt'] = 'Start ID for userid/webid connect'; diff --git a/interface/web/admin/lib/lang/cz_software_repo.lng b/interface/web/admin/lib/lang/cz_software_repo.lng index 6e200d8d1..bd7bc9d0f 100644 --- a/interface/web/admin/lib/lang/cz_software_repo.lng +++ b/interface/web/admin/lib/lang/cz_software_repo.lng @@ -1,8 +1,8 @@ diff --git a/interface/web/admin/lib/lang/cz_software_repo_list.lng b/interface/web/admin/lib/lang/cz_software_repo_list.lng index 5c82d4c41..ca04f41dc 100644 --- a/interface/web/admin/lib/lang/cz_software_repo_list.lng +++ b/interface/web/admin/lib/lang/cz_software_repo_list.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index 31e8ce056..a7cd502a6 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Zákaznické číslo šablony obs $wb['customer_no_start_txt'] = 'Zákaznické číslo - počáteční hodnota'; $wb['customer_no_counter_txt'] = 'Zákaznické číslo - čítač'; $wb['session_timeout_txt'] = 'Časový limit relace (minuty)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Povolit - zůstat přihlášen'; $wb['No'] = 'Ne'; $wb['min_password_length_txt'] = 'Minimální délka hesla'; $wb['min_password_strength_txt'] = 'Minimální síla hesla'; diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index 7e9618102..7d30a9b01 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Kundnummermallen innehåller otil $wb['customer_no_start_txt'] = 'Kundnummer startvärde'; $wb['customer_no_counter_txt'] = 'Kundnummer räknare'; $wb['session_timeout_txt'] = 'Session timeout (minuter)'; -$wb['session_allow_endless_txt'] = 'Aktivera \"håll mig inloggad\"'; +$wb['session_allow_endless_txt'] = 'Aktivera \\"håll mig inloggad\\"'; $wb['No'] = 'Nej'; $wb['min_password_length_txt'] = 'Minsta lösenordslängd'; $wb['min_password_strength_txt'] = 'Minsta lösenordsstyrka'; diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng index f6336149c..7f9a797b3 100644 --- a/interface/web/client/lib/lang/se_client.lng +++ b/interface/web/client/lib/lang/se_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Vänligen ange en giltig epostadress'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal epostadress'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/dns/lib/lang/ar_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/ar_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/ar_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/ar_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/bg_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/bg_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/bg_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/bg_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/cz_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/cz_dns_slave_admin_list.lng index 43f67783c..eb00f29ca 100644 --- a/interface/web/dns/lib/lang/cz_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/cz_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng index 44cec900b..4a87f6646 100644 --- a/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/el_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/el_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/el_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/el_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/fi_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/fi_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/fi_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/fi_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/fr_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/fr_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/fr_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/fr_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/hu_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/hu_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/hu_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/hu_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/id_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/id_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/id_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/id_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/it_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/it_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/it_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/it_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/ja_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/ja_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/ja_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/ja_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/nl_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/nl_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/nl_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/nl_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/pl_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/pl_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/pl_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/pl_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/pt_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/pt_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/pt_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/pt_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/ro_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/ro_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/ro_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/ro_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/ru_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/ru_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/ru_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/ru_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/se_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/se_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/se_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/se_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/sk_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/sk_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/sk_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/sk_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/dns/lib/lang/tr_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/tr_dns_slave_admin_list.lng index 43f67783c..59d84877c 100644 --- a/interface/web/dns/lib/lang/tr_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/tr_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ diff --git a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng index 44cec900b..183d1a834 100644 --- a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/login/lib/lang/se_login_as.lng b/interface/web/login/lib/lang/se_login_as.lng index fea3abca0..2fdd7f075 100644 --- a/interface/web/login/lib/lang/se_login_as.lng +++ b/interface/web/login/lib/lang/se_login_as.lng @@ -1,11 +1,11 @@ diff --git a/interface/web/mail/lib/lang/cz.lng b/interface/web/mail/lib/lang/cz.lng index 16dd2667d..a0c670ee8 100644 --- a/interface/web/mail/lib/lang/cz.lng +++ b/interface/web/mail/lib/lang/cz.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/mail/lib/lang/cz_mail_whitelist_list.lng b/interface/web/mail/lib/lang/cz_mail_whitelist_list.lng index 7fae36899..8bd58bfcc 100644 --- a/interface/web/mail/lib/lang/cz_mail_whitelist_list.lng +++ b/interface/web/mail/lib/lang/cz_mail_whitelist_list.lng @@ -1,5 +1,5 @@ diff --git a/interface/web/mail/lib/lang/se_mail_get.lng b/interface/web/mail/lib/lang/se_mail_get.lng index db4440210..9ed971005 100644 --- a/interface/web/mail/lib/lang/se_mail_get.lng +++ b/interface/web/mail/lib/lang/se_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Lösenord är tomt.'; $wb['destination_error_isemail'] = 'Ingen destination vald.'; $wb['source_server_error_regex'] = 'POP3-/Imapserver är inte ett giltigt domännamn.'; $wb['source_read_all_txt'] = 'Hämta all epost (även läst epost)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Vänligen kontrollera först om eposthämtning fungerar innan du aktiverar detta val..'; ?> diff --git a/interface/web/sites/lib/lang/ar_shell_user.lng b/interface/web/sites/lib/lang/ar_shell_user.lng index 8095f4bec..0b274d33a 100644 --- a/interface/web/sites/lib/lang/ar_shell_user.lng +++ b/interface/web/sites/lib/lang/ar_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/ar_web_domain.lng b/interface/web/sites/lib/lang/ar_web_domain.lng index 99de4717b..539d3b712 100644 --- a/interface/web/sites/lib/lang/ar_web_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/bg_shell_user.lng b/interface/web/sites/lib/lang/bg_shell_user.lng index 15709147f..1cf3c0d08 100644 --- a/interface/web/sites/lib/lang/bg_shell_user.lng +++ b/interface/web/sites/lib/lang/bg_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_domain.lng b/interface/web/sites/lib/lang/bg_web_domain.lng index c9a0e84b2..3af58cd1f 100644 --- a/interface/web/sites/lib/lang/bg_web_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/br_shell_user.lng b/interface/web/sites/lib/lang/br_shell_user.lng index 69e0f6e28..da57fb920 100644 --- a/interface/web/sites/lib/lang/br_shell_user.lng +++ b/interface/web/sites/lib/lang/br_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng index 48cfb51be..8b4484eb7 100644 --- a/interface/web/sites/lib/lang/br_web_domain.lng +++ b/interface/web/sites/lib/lang/br_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/cz_ftp_user.lng b/interface/web/sites/lib/lang/cz_ftp_user.lng index b580e08f5..7d30e53ba 100644 --- a/interface/web/sites/lib/lang/cz_ftp_user.lng +++ b/interface/web/sites/lib/lang/cz_ftp_user.lng @@ -24,13 +24,13 @@ $wb['uid_error_empty'] = 'GID je prázdné.'; $wb['directory_error_empty'] = 'Adresář je prázdný.'; $wb['directory_error_notinweb'] = 'Adresář není uvnitř webového kořenového adresáře.'; $wb['parent_domain_id_error_empty'] = 'Nevybrána žádná webová stránka.'; -$wb['quota_size_error_regex'] = 'Quota: enter a -1 for unlimited or a number > 0'; +$wb['quota_size_error_regex'] = 'Kvóta: zadejte -1 je bez omezení nebo číslo > 0 '; $wb['dir_dot_error'] = 'No .. in path allowed.'; $wb['dir_slashdot_error'] = 'No ./ in path allowed.'; $wb['generate_password_txt'] = 'Generovat heslo'; $wb['repeat_password_txt'] = 'Opakujte heslo'; $wb['password_mismatch_txt'] = 'Hesla se neshodují.'; $wb['password_match_txt'] = 'Hesla se shodují.'; -$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; -$wb['directory_error_regex'] = 'Invalid directory'; +$wb['invalid_system_user_or_group_txt'] = 'Neplatný systémový uživatel nebo skupina'; +$wb['directory_error_regex'] = 'Neplatný adresář'; ?> diff --git a/interface/web/sites/lib/lang/cz_shell_user.lng b/interface/web/sites/lib/lang/cz_shell_user.lng index fc933da05..eb6610805 100644 --- a/interface/web/sites/lib/lang/cz_shell_user.lng +++ b/interface/web/sites/lib/lang/cz_shell_user.lng @@ -28,7 +28,9 @@ $wb['password_mismatch_txt'] = 'Hesla se neshodují.'; $wb['password_match_txt'] = 'Hesla se shodují.'; $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; $wb['username_not_allowed_txt'] = 'The username is not allowed.'; -$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; -$wb['directory_error_regex'] = 'Invalid directory'; +$wb['invalid_system_user_or_group_txt'] = 'Neplatný systémový uživatel nebo skupina'; +$wb['directory_error_regex'] = 'Neplatný adresář'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng index 3fd0e9280..1b9fc20c3 100644 --- a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng @@ -35,7 +35,7 @@ $wb['subdomain_txt'] = 'Automatická subdoména'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; -$wb['client_txt'] = 'Client'; +$wb['client_txt'] = 'Klient'; $wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.'; $wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.'; $wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.'; @@ -52,7 +52,7 @@ $wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.'; $wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.'; $wb['error_ssl_country_empty'] = 'SSL Country is empty.'; $wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty'; -$wb['client_group_id_txt'] = 'Client'; +$wb['client_group_id_txt'] = 'Klient'; $wb['stats_password_txt'] = 'Set Webstatistics password'; $wb['allow_override_txt'] = 'Apache AllowOverride'; $wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota'; diff --git a/interface/web/sites/lib/lang/cz_web_domain.lng b/interface/web/sites/lib/lang/cz_web_domain.lng index ddcac2e68..99c9e1054 100644 --- a/interface/web/sites/lib/lang/cz_web_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Vyloučené adresáře'; $wb['backup_excludes_note_txt'] = '(Oddělte více adresářů čárkami. Vzor: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Vyloučené adresáře obsahují neplatné znaky.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Neplatné nastavení php.ini'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_folder_list.lng b/interface/web/sites/lib/lang/cz_web_folder_list.lng index c7fa12cb2..d7c39c030 100644 --- a/interface/web/sites/lib/lang/cz_web_folder_list.lng +++ b/interface/web/sites/lib/lang/cz_web_folder_list.lng @@ -4,5 +4,5 @@ $wb['active_txt'] = 'Aktivní'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Webové stránky'; $wb['path_txt'] = 'Cesta'; -$wb['add_new_record_txt'] = 'Add new Folder'; +$wb['add_new_record_txt'] = 'Přidat novou složku'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_folder_user_list.lng b/interface/web/sites/lib/lang/cz_web_folder_user_list.lng index c0059b234..1f0965756 100644 --- a/interface/web/sites/lib/lang/cz_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/cz_web_folder_user_list.lng @@ -3,5 +3,5 @@ $wb['list_head_txt'] = 'Složka (adresář) uživatele'; $wb['active_txt'] = 'Aktivní'; $wb['web_folder_id_txt'] = 'Složka'; $wb['username_txt'] = 'Uživatelské jméno'; -$wb['add_new_record_txt'] = 'Add new Folder User'; +$wb['add_new_record_txt'] = 'Přidat nového uživatele složky'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng index 1eba50f33..9401e9719 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng @@ -1,6 +1,6 @@ diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng index 0e6430546..c005f90c2 100644 --- a/interface/web/sites/lib/lang/de_web_domain.lng +++ b/interface/web/sites/lib/lang/de_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Auszuschließende Verzeichnisse'; $wb['backup_excludes_note_txt'] = '(Mehrere Verzeichnisse mit Kommas trennen. Beispiel: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Die auszuschließenden Verzeichnisse enthalten ungültige Zeichen.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Unzulässige php.ini-Einstellungen'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/el_shell_user.lng b/interface/web/sites/lib/lang/el_shell_user.lng index 2ced9c23d..a2868ef4d 100644 --- a/interface/web/sites/lib/lang/el_shell_user.lng +++ b/interface/web/sites/lib/lang/el_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/el_web_domain.lng b/interface/web/sites/lib/lang/el_web_domain.lng index f073530ca..bc9a8359b 100644 --- a/interface/web/sites/lib/lang/el_web_domain.lng +++ b/interface/web/sites/lib/lang/el_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/es_shell_user.lng b/interface/web/sites/lib/lang/es_shell_user.lng index 46c39cc6a..59a27d355 100644 --- a/interface/web/sites/lib/lang/es_shell_user.lng +++ b/interface/web/sites/lib/lang/es_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/es_web_domain.lng b/interface/web/sites/lib/lang/es_web_domain.lng index bfcfc8bce..f56e895dc 100644 --- a/interface/web/sites/lib/lang/es_web_domain.lng +++ b/interface/web/sites/lib/lang/es_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/fi_shell_user.lng b/interface/web/sites/lib/lang/fi_shell_user.lng index 116e8c8d8..83c8e89a5 100755 --- a/interface/web/sites/lib/lang/fi_shell_user.lng +++ b/interface/web/sites/lib/lang/fi_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_domain.lng b/interface/web/sites/lib/lang/fi_web_domain.lng index 2a4cfd48e..e5323b21c 100755 --- a/interface/web/sites/lib/lang/fi_web_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/fr_shell_user.lng b/interface/web/sites/lib/lang/fr_shell_user.lng index 2e518d70b..940a78070 100644 --- a/interface/web/sites/lib/lang/fr_shell_user.lng +++ b/interface/web/sites/lib/lang/fr_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'Le nom d\'utilisateur est interdit.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_domain.lng b/interface/web/sites/lib/lang/fr_web_domain.lng index 527843912..00c2dcf15 100644 --- a/interface/web/sites/lib/lang/fr_web_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/hr_shell_user.lng b/interface/web/sites/lib/lang/hr_shell_user.lng index d081fd76f..93a645508 100644 --- a/interface/web/sites/lib/lang/hr_shell_user.lng +++ b/interface/web/sites/lib/lang/hr_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_domain.lng b/interface/web/sites/lib/lang/hr_web_domain.lng index b4848e061..51fcb92d6 100644 --- a/interface/web/sites/lib/lang/hr_web_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/hu_shell_user.lng b/interface/web/sites/lib/lang/hu_shell_user.lng index 8eaa537b5..a0617d43b 100644 --- a/interface/web/sites/lib/lang/hu_shell_user.lng +++ b/interface/web/sites/lib/lang/hu_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_domain.lng b/interface/web/sites/lib/lang/hu_web_domain.lng index 4a17994b1..e160449c0 100644 --- a/interface/web/sites/lib/lang/hu_web_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/id_shell_user.lng b/interface/web/sites/lib/lang/id_shell_user.lng index 83153c14e..4be2d1176 100644 --- a/interface/web/sites/lib/lang/id_shell_user.lng +++ b/interface/web/sites/lib/lang/id_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/id_web_domain.lng b/interface/web/sites/lib/lang/id_web_domain.lng index e568e5a7a..ef3423ee3 100644 --- a/interface/web/sites/lib/lang/id_web_domain.lng +++ b/interface/web/sites/lib/lang/id_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/it_shell_user.lng b/interface/web/sites/lib/lang/it_shell_user.lng index 8095f4bec..0b274d33a 100644 --- a/interface/web/sites/lib/lang/it_shell_user.lng +++ b/interface/web/sites/lib/lang/it_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/it_web_domain.lng b/interface/web/sites/lib/lang/it_web_domain.lng index 019f68793..c946023d5 100644 --- a/interface/web/sites/lib/lang/it_web_domain.lng +++ b/interface/web/sites/lib/lang/it_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/ja_shell_user.lng b/interface/web/sites/lib/lang/ja_shell_user.lng index 2ce5ad345..79a8e5ca0 100644 --- a/interface/web/sites/lib/lang/ja_shell_user.lng +++ b/interface/web/sites/lib/lang/ja_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_domain.lng b/interface/web/sites/lib/lang/ja_web_domain.lng index 90a8738ab..d32a9d19b 100644 --- a/interface/web/sites/lib/lang/ja_web_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/nl_shell_user.lng b/interface/web/sites/lib/lang/nl_shell_user.lng index 9a4ae63ed..ce3458ddc 100644 --- a/interface/web/sites/lib/lang/nl_shell_user.lng +++ b/interface/web/sites/lib/lang/nl_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_domain.lng b/interface/web/sites/lib/lang/nl_web_domain.lng index c73638666..1efbbc6e3 100644 --- a/interface/web/sites/lib/lang/nl_web_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/pl_shell_user.lng b/interface/web/sites/lib/lang/pl_shell_user.lng index 19674e3bd..aad0cf26f 100644 --- a/interface/web/sites/lib/lang/pl_shell_user.lng +++ b/interface/web/sites/lib/lang/pl_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_domain.lng b/interface/web/sites/lib/lang/pl_web_domain.lng index a60fdd5b2..ed288131e 100644 --- a/interface/web/sites/lib/lang/pl_web_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/pt_shell_user.lng b/interface/web/sites/lib/lang/pt_shell_user.lng index 4564bbc5a..a3ee41e93 100644 --- a/interface/web/sites/lib/lang/pt_shell_user.lng +++ b/interface/web/sites/lib/lang/pt_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_domain.lng b/interface/web/sites/lib/lang/pt_web_domain.lng index adabe2fb0..3d197794e 100644 --- a/interface/web/sites/lib/lang/pt_web_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/ro_shell_user.lng b/interface/web/sites/lib/lang/ro_shell_user.lng index 912b6b2b0..875733703 100644 --- a/interface/web/sites/lib/lang/ro_shell_user.lng +++ b/interface/web/sites/lib/lang/ro_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_domain.lng b/interface/web/sites/lib/lang/ro_web_domain.lng index 1f124bae4..e568b8cf4 100644 --- a/interface/web/sites/lib/lang/ro_web_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/ru_shell_user.lng b/interface/web/sites/lib/lang/ru_shell_user.lng index f3b788f14..0a6282bae 100644 --- a/interface/web/sites/lib/lang/ru_shell_user.lng +++ b/interface/web/sites/lib/lang/ru_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_domain.lng b/interface/web/sites/lib/lang/ru_web_domain.lng index aaf219b1a..c19265692 100644 --- a/interface/web/sites/lib/lang/ru_web_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/se.lng b/interface/web/sites/lib/lang/se.lng index a63670545..6b44cdcf7 100644 --- a/interface/web/sites/lib/lang/se.lng +++ b/interface/web/sites/lib/lang/se.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Tillgängliga paket'; $wb['Installed packages'] = 'Installerade paket'; $wb['Update Packagelist'] = 'Uppdatera paketlista'; $wb['Subdomain (Vhost)'] = 'Underdomän (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/se_aps.lng b/interface/web/sites/lib/lang/se_aps.lng index 1fe86175d..1a21cd0fd 100644 --- a/interface/web/sites/lib/lang/se_aps.lng +++ b/interface/web/sites/lib/lang/se_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Installation planerad'; $wb['installation_error_txt'] = 'Installationsfel'; diff --git a/interface/web/sites/lib/lang/se_shell_user.lng b/interface/web/sites/lib/lang/se_shell_user.lng index 8095f4bec..0b274d33a 100644 --- a/interface/web/sites/lib/lang/se_shell_user.lng +++ b/interface/web/sites/lib/lang/se_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/se_web_domain.lng b/interface/web/sites/lib/lang/se_web_domain.lng index 2b9a05647..5156df19f 100644 --- a/interface/web/sites/lib/lang/se_web_domain.lng +++ b/interface/web/sites/lib/lang/se_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Ogiltiga php.ini-inställningar'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/se_web_subdomain.lng b/interface/web/sites/lib/lang/se_web_subdomain.lng index 856d3c20a..b542b998d 100644 --- a/interface/web/sites/lib/lang/se_web_subdomain.lng +++ b/interface/web/sites/lib/lang/se_web_subdomain.lng @@ -42,5 +42,5 @@ $wb['no_flag_txt'] = 'Ingan flagga'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/sk_shell_user.lng b/interface/web/sites/lib/lang/sk_shell_user.lng index 8b94d0d01..4307afad5 100644 --- a/interface/web/sites/lib/lang/sk_shell_user.lng +++ b/interface/web/sites/lib/lang/sk_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_domain.lng b/interface/web/sites/lib/lang/sk_web_domain.lng index f372e6bed..5497f9f5d 100644 --- a/interface/web/sites/lib/lang/sk_web_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> diff --git a/interface/web/sites/lib/lang/tr_shell_user.lng b/interface/web/sites/lib/lang/tr_shell_user.lng index 0c932c1a4..20abb0bba 100644 --- a/interface/web/sites/lib/lang/tr_shell_user.lng +++ b/interface/web/sites/lib/lang/tr_shell_user.lng @@ -31,4 +31,6 @@ $wb['username_not_allowed_txt'] = 'The username is not allowed.'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; $wb['directory_error_regex'] = 'Invalid directory'; $wb['shell_error_regex'] = 'Invalid shell'; +$wb['invalid_username_txt'] = 'Invalid Username'; +$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_domain.lng b/interface/web/sites/lib/lang/tr_web_domain.lng index 83edeed11..59dc02aa8 100644 --- a/interface/web/sites/lib/lang/tr_web_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_domain.lng @@ -127,4 +127,5 @@ $wb['backup_excludes_txt'] = 'Excluded Directories'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; ?> -- GitLab From e14a82779bd6451ea33f1c25a293743a38161caf Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 22:41:45 +0200 Subject: [PATCH 105/158] - Search in relative path for security settings if they were not found in the default location. --- interface/lib/classes/getconf.inc.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/lib/classes/getconf.inc.php b/interface/lib/classes/getconf.inc.php index 7a29dbf42..5cc223ae7 100644 --- a/interface/lib/classes/getconf.inc.php +++ b/interface/lib/classes/getconf.inc.php @@ -59,7 +59,9 @@ class getconf { global $app; $app->uses('ini_parser'); - $security_config = $app->ini_parser->parse_ini_string(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); + $security_config_path = '/usr/local/ispconfig/security/security_settings.ini'; + if(!is_file($security_config_path)) $security_config_path = realpath(ISPC_ROOT_PATH.'/../security/security_settings.ini'); + $security_config = $app->ini_parser->parse_ini_string(file_get_contents($security_config_path)); return ($section == '') ? $security_config : $security_config[$section]; } -- GitLab From e020f74511f7aa822c8b3a174529e710dbb91387 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 22:44:30 +0200 Subject: [PATCH 106/158] Updated version to 3.0.5.4p3 --- install/sql/ispconfig3.sql | 2 +- install/tpl/config.inc.php.master | 2 +- interface/lib/config.inc.php | 2 +- interface/web/themes/blue/ispconfig_version | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index ab5f795cd..46b8025d4 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2292,7 +2292,7 @@ INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`, -- Dumping data for table `sys_config` -- -INSERT INTO sys_config VALUES ('db','db_version','3.0.5.4p2'); +INSERT INTO sys_config VALUES ('db','db_version','3.0.5.4p3'); INSERT INTO sys_config VALUES ('interface','session_timeout','0'); SET FOREIGN_KEY_CHECKS = 1; diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index 6f40a1cda..bae2adb93 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -56,7 +56,7 @@ $revision = str_replace(array('Revision:','$',' '), '', $svn_revision); //** Application define('ISPC_APP_TITLE', 'ISPConfig'); -define('ISPC_APP_VERSION', '3.0.5.4p2'); +define('ISPC_APP_VERSION', '3.0.5.4p3'); define('DEVSYSTEM', 0); diff --git a/interface/lib/config.inc.php b/interface/lib/config.inc.php index 179acc932..b6ee79e92 100644 --- a/interface/lib/config.inc.php +++ b/interface/lib/config.inc.php @@ -44,7 +44,7 @@ $revision = str_replace(array('Revision:', '$', ' '), '', $svn_revision); //** Application define('ISPC_APP_TITLE', 'ISPConfig'); -define('ISPC_APP_VERSION', '3.0.5.4p2'); +define('ISPC_APP_VERSION', '3.0.5.4p3'); define('DEVSYSTEM', 0); diff --git a/interface/web/themes/blue/ispconfig_version b/interface/web/themes/blue/ispconfig_version index 0b23ab9c7..000d1abce 100644 --- a/interface/web/themes/blue/ispconfig_version +++ b/interface/web/themes/blue/ispconfig_version @@ -1 +1 @@ -3.0.5.4p2 +3.0.5.4p3 -- GitLab From 36633e70259d9f56f74a45075d30bd38f164096f Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 14 Aug 2014 23:18:14 +0200 Subject: [PATCH 107/158] Changed .htpasswd path in ispconfig_htaccess.php script. --- server/scripts/ispconfig_htaccess.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/server/scripts/ispconfig_htaccess.php b/server/scripts/ispconfig_htaccess.php index 568ec50f5..b72e7918f 100644 --- a/server/scripts/ispconfig_htaccess.php +++ b/server/scripts/ispconfig_htaccess.php @@ -29,8 +29,9 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -$path = realpath(dirname(__FILE__)) . '/..'; -$iface_path = realpath(dirname(__FILE__)) . '/../../interface/web'; +$path = realpath(dirname(__FILE__) . '/..'); +$iface_path = realpath(dirname(__FILE__) . '/../../interface/web'); +$iface_base_path = realpath(dirname(__FILE__) . '/../../interface'); require $path . '/lib/mysql_clientdb.conf'; @@ -55,13 +56,13 @@ mysqli_close($link); if($cont == '') die('No users found' . "\n"); -if(file_exists($iface_path . '/.htpasswd')) rename($iface_path . '/.htpasswd', $iface_path . '/.htpasswd.old'); -file_put_contents($iface_path . '/.htpasswd', $cont); -chmod($iface_path . '/.htpasswd', 0644); +if(file_exists($iface_base_path . '/.htpasswd')) rename($iface_base_path . '/.htpasswd', $iface_base_path . '/.htpasswd.old'); +file_put_contents($iface_base_path . '/.htpasswd', $cont); +chmod($iface_base_path . '/.htpasswd', 0644); $cont = 'AuthType Basic AuthName "Login" -AuthUserFile ' . $iface_path . '/.htpasswd +AuthUserFile ' . $iface_base_path . '/.htpasswd require valid-user'; if(file_exists($iface_path . '/.htaccess')) rename($iface_path . '/.htaccess', $iface_path . '/.htaccess.old'); -- GitLab From 65a0b9c10da329a4c9df4f00fb7e26ce04a3c203 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 15 Aug 2014 00:11:11 +0200 Subject: [PATCH 108/158] Added .cache dir to removed directories list of shell users. --- server/plugins-available/shelluser_base_plugin.inc.php | 2 +- server/plugins-available/shelluser_jailkit_plugin.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 651ccc997..e19796cfc 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -263,7 +263,7 @@ class shelluser_base_plugin { $homedir = $data['old']['dir']; if(substr($homedir, -1) !== '/') $homedir .= '/'; $files = array('.bash_logout', '.bash_history', '.bashrc', '.profile'); - $dirs = array('.ssh'); + $dirs = array('.ssh', '.cache'); foreach($files as $delfile) { if(is_file($homedir . $delfile) && fileowner($homedir . $delfile) == $userid) unlink($homedir . $delfile); } diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index a39183579..3c8e2948a 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -541,7 +541,7 @@ class shelluser_jailkit_plugin { // delete dir if(substr($homedir, -1) !== '/') $homedir .= '/'; $files = array('.bash_logout', '.bash_history', '.bashrc', '.profile'); - $dirs = array('.ssh'); + $dirs = array('.ssh', '.cache'); foreach($files as $delfile) { if(is_file($homedir . $delfile) && fileowner($homedir . $delfile) == $userid) unlink($homedir . $delfile); } -- GitLab From 90b13a1767098edf70c9c4c96e37ca5957400c83 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 15 Aug 2014 09:40:51 +0200 Subject: [PATCH 109/158] - removed unneeded session_start to avoid session files being created --- interface/web/js/scrigo.js.php | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php index 229c721be..18c0885d9 100644 --- a/interface/web/js/scrigo.js.php +++ b/interface/web/js/scrigo.js.php @@ -1,5 +1,4 @@ Date: Thu, 21 Aug 2014 10:31:59 +0200 Subject: [PATCH 110/158] FS#3634 - Add option to disable statistics for a website --- interface/web/sites/form/web_domain.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php index f270de30f..efaea89cf 100644 --- a/interface/web/sites/form/web_domain.tform.php +++ b/interface/web/sites/form/web_domain.tform.php @@ -496,7 +496,7 @@ $form["tabs"]['stats'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => 'webalizer', - 'value' => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats') + 'value' => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats', '' => 'None') ), //################################# // ENDE Datatable fields -- GitLab From e23c47d06adda746c330be387f042319f0d7e4dc Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 21 Aug 2014 10:35:59 +0200 Subject: [PATCH 111/158] FS#3635 - Adding Shell Users with remote API is broken in 3.0.5.4p3 FS#3632 - Adding websites with remote API is broken in 3.0.5.4p3 release. Missed to commit one file for: FS#3634 - Add option to disable statistics for a website --- .../lib/classes/validate_ftpuser.inc.php | 28 ++++++---- .../lib/classes/validate_systemuser.inc.php | 52 ++++++++++++++----- interface/web/sites/form/ftp_user.tform.php | 4 ++ .../sites/form/web_vhost_subdomain.tform.php | 2 +- .../examples/sites_ftp_user_add.php | 6 +-- .../examples/sites_ftp_user_update.php | 2 +- .../examples/sites_shell_user_add.php | 10 ++-- .../examples/sites_shell_user_update.php | 2 +- 8 files changed, 73 insertions(+), 33 deletions(-) diff --git a/interface/lib/classes/validate_ftpuser.inc.php b/interface/lib/classes/validate_ftpuser.inc.php index 64ca12f22..8e0663eca 100644 --- a/interface/lib/classes/validate_ftpuser.inc.php +++ b/interface/lib/classes/validate_ftpuser.inc.php @@ -36,7 +36,10 @@ class validate_ftpuser { function ftp_dir($field_name, $field_value, $validator) { global $app; - if($app->tform->primary_id == 0) { + $primary_id = (isset($app->tform->primary_id) && $app->tform->primary_id > 0)?$app->tform->primary_id:$app->remoting_lib->primary_id; + $primary_id = $app->functions->intval($primary_id); + + if($primary_id == 0 && !isset($app->remoting_lib->dataRecord['parent_domain_id'])) { $errmsg = $validator['errmsg']; if(isset($app->tform->wordbook[$errmsg])) { return $app->tform->wordbook[$errmsg]."
\r\n"; @@ -45,18 +48,25 @@ class validate_ftpuser { } } - - $ftp_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM ftp_user WHERE ftp_user_id = '".$app->db->quote($app->tform->primary_id)."'"); - if(!is_array($ftp_data) || $ftp_data["parent_domain_id"] < 1) { - $errmsg = $validator['errmsg']; - if(isset($app->tform->wordbook[$errmsg])) { - return $app->tform->wordbook[$errmsg]."
\r\n"; + if($primary_id > 0) { + //* get parent_domain_id from website + $ftp_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM ftp_user WHERE ftp_user_id = '".$app->db->quote($primary_id)."'"); + if(!is_array($ftp_data) || $ftp_data["parent_domain_id"] < 1) { + $errmsg = $validator['errmsg']; + if(isset($app->tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } else { + return $errmsg."
\r\n"; + } } else { - return $errmsg."
\r\n"; + $parent_domain_id = $ftp_data["parent_domain_id"]; } + } else { + //* get parent_domain_id from dataRecord when we have a insert operation trough remote API + $parent_domain_id = $app->functions->intval($app->remoting_lib->dataRecord['parent_domain_id']); } - $domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($ftp_data["parent_domain_id"])."'"); + $domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($parent_domain_id)."'"); if(!is_array($domain_data) || $domain_data["domain_id"] < 1) { $errmsg = $validator['errmsg']; if(isset($app->tform->wordbook[$errmsg])) { diff --git a/interface/lib/classes/validate_systemuser.inc.php b/interface/lib/classes/validate_systemuser.inc.php index 6df3a4589..2cab1cf44 100644 --- a/interface/lib/classes/validate_systemuser.inc.php +++ b/interface/lib/classes/validate_systemuser.inc.php @@ -29,6 +29,16 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ class validate_systemuser { + + function get_error($errmsg) { + global $app; + + if(isset($app->tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } else { + return $errmsg."
\r\n"; + } + } /* Validator function to check if a given user is ok. @@ -36,11 +46,15 @@ class validate_systemuser { function check_sysuser($field_name, $field_value, $validator) { global $app; + //* Skip Test if we have the placeholder input of the remote APi for the web_domain system_user field here. + if($field_name == 'system_user' && $field_value == '-') return ''; + + //* Check the input $errmsg = $validator['errmsg']; $check_names = (isset($validator['check_names']) && $validator['check_names'] == true)?true:false; if($app->functions->is_allowed_user(trim(strtolower($field_value)),$check_names) == false) { - return $app->tform->wordbook[$errmsg]."
\r\n"; + return $this->get_error($errmsg); } } @@ -50,11 +64,14 @@ class validate_systemuser { function check_sysgroup($field_name, $field_value, $validator) { global $app; + //* Skip Test if we have the placeholder input of the remote APi for the web_domain system_group field here. + if($field_name == 'system_group' && $field_value == '-') return ''; + $errmsg = $validator['errmsg']; $check_names = (isset($validator['check_names']) && $validator['check_names'] == true)?true:false; if($app->functions->is_allowed_group(trim(strtolower($field_value)),$check_names) == false) { - return $app->tform->wordbook[$errmsg]."
\r\n"; + return $this->get_error($errmsg); } } @@ -63,8 +80,11 @@ class validate_systemuser { */ function shelluser_dir($field_name, $field_value, $validator) { global $app; - - if($app->tform->primary_id == 0) { + + $primary_id = (isset($app->tform->primary_id) && $app->tform->primary_id > 0)?$app->tform->primary_id:$app->remoting_lib->primary_id; + $primary_id = $app->functions->intval($primary_id); + + if($primary_id == 0 && !isset($app->remoting_lib->dataRecord['parent_domain_id'])) { $errmsg = $validator['errmsg']; if(isset($app->tform->wordbook[$errmsg])) { return $app->tform->wordbook[$errmsg]."
\r\n"; @@ -73,18 +93,25 @@ class validate_systemuser { } } - - $shell_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM shell_user WHERE shell_user_id = '".$app->db->quote($app->tform->primary_id)."'"); - if(!is_array($shell_data) || $shell_data["parent_domain_id"] < 1) { - $errmsg = $validator['errmsg']; - if(isset($app->tform->wordbook[$errmsg])) { - return $app->tform->wordbook[$errmsg]."
\r\n"; + if($primary_id > 0) { + //* get parent_domain_id from website + $shell_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM shell_user WHERE shell_user_id = '".$app->db->quote($primary_id)."'"); + if(!is_array($shell_data) || $shell_data["parent_domain_id"] < 1) { + $errmsg = $validator['errmsg']; + if(isset($app->tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } else { + return $errmsg."
\r\n"; + } } else { - return $errmsg."
\r\n"; + $parent_domain_id = $shell_data["parent_domain_id"]; } + } else { + //* get parent_domain_id from dataRecord when we have a insert operation trough remote API + $parent_domain_id = $app->functions->intval($app->remoting_lib->dataRecord['parent_domain_id']); } - $domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($shell_data["parent_domain_id"])."'"); + $domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($parent_domain_id)."'"); if(!is_array($domain_data) || $domain_data["domain_id"] < 1) { $errmsg = $validator['errmsg']; if(isset($app->tform->wordbook[$errmsg])) { @@ -116,5 +143,4 @@ class validate_systemuser { } } - } diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php index ef11b6058..e96e63d16 100644 --- a/interface/web/sites/form/ftp_user.tform.php +++ b/interface/web/sites/form/ftp_user.tform.php @@ -205,6 +205,10 @@ if($app->auth->is_admin()) { 1 => array ( 'type' => 'REGEX', 'regex' => '/^\/[a-zA-Z0-9\ \.\-\_\/]{10,128}$/', 'errmsg'=> 'directory_error_regex'), + 2 => array ( 'type' => 'CUSTOM', + 'class' => 'validate_ftpuser', + 'function' => 'ftp_dir', + 'errmsg' => 'directory_error_notinweb'), ), 'default' => '', 'value' => '', diff --git a/interface/web/sites/form/web_vhost_subdomain.tform.php b/interface/web/sites/form/web_vhost_subdomain.tform.php index e4ca6a2fd..3aa2276fc 100644 --- a/interface/web/sites/form/web_vhost_subdomain.tform.php +++ b/interface/web/sites/form/web_vhost_subdomain.tform.php @@ -486,7 +486,7 @@ $form["tabs"]['stats'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => 'webalizer', - 'value' => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats') + 'value' => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats', '' => 'None') ), //################################# // ENDE Datatable fields diff --git a/remoting_client/examples/sites_ftp_user_add.php b/remoting_client/examples/sites_ftp_user_add.php index b8d499b2f..6e48d80ba 100644 --- a/remoting_client/examples/sites_ftp_user_add.php +++ b/remoting_client/examples/sites_ftp_user_add.php @@ -20,13 +20,13 @@ try { $params = array( 'server_id' => 1, 'parent_domain_id' => 1, - 'username' => 'threep', - 'password' => 'wood', + 'username' => 'tom', + 'password' => 'secret', 'quota_size' => 10000, 'active' => 'y', 'uid' => '5000', 'gid' => '5000', - 'dir' => 'maybe', + 'dir' => '/var/www/clients/client0/web1', 'quota_files' => -1, 'ul_ratio' => -1, 'dl_ratio' => -1, diff --git a/remoting_client/examples/sites_ftp_user_update.php b/remoting_client/examples/sites_ftp_user_update.php index d09b41670..1f3695357 100644 --- a/remoting_client/examples/sites_ftp_user_update.php +++ b/remoting_client/examples/sites_ftp_user_update.php @@ -15,7 +15,7 @@ try { } //* Parameters - $client_id = 1; + $client_id = 0; $ftp_user_id = 1; diff --git a/remoting_client/examples/sites_shell_user_add.php b/remoting_client/examples/sites_shell_user_add.php index 84d4012f0..c3f875bf0 100644 --- a/remoting_client/examples/sites_shell_user_add.php +++ b/remoting_client/examples/sites_shell_user_add.php @@ -20,14 +20,14 @@ try { $params = array( 'server_id' => 1, 'parent_domain_id' => 1, - 'username' => 'threep2', - 'password' => 'wood', + 'username' => 'tom', + 'password' => 'test', 'quota_size' => 10000, 'active' => 'y', - 'puser' => 'null', - 'pgroup' => 'null', + 'puser' => 'web1', + 'pgroup' => 'client0', 'shell' => '/bin/bash', - 'dir' => 'maybe', + 'dir' => '/var/www/clients/client0/web1', 'chroot' => '' ); diff --git a/remoting_client/examples/sites_shell_user_update.php b/remoting_client/examples/sites_shell_user_update.php index 73b90138f..a60262d20 100644 --- a/remoting_client/examples/sites_shell_user_update.php +++ b/remoting_client/examples/sites_shell_user_update.php @@ -15,7 +15,7 @@ try { } //* Parameters - $client_id = 3; + $client_id = 0; $shell_user_id = 1; -- GitLab From fb6c56e0236932606670b6baf4f1affd6318aea7 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 21 Aug 2014 12:47:22 +0200 Subject: [PATCH 112/158] Added code to installer to apply updates to the security_settings.ini --- install/dist/lib/fedora.lib.php | 21 +++++++++++++++++++++ install/dist/lib/gentoo.lib.php | 21 +++++++++++++++++++++ install/dist/lib/opensuse.lib.php | 21 +++++++++++++++++++++ install/lib/installer_base.lib.php | 21 +++++++++++++++++++++ 4 files changed, 84 insertions(+) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 49403dec0..a7179ef8e 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -833,9 +833,30 @@ class installer_dist extends installer_base { $command = "cp -rf ../server $install_dir"; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + //* Make a backup of the security settings + if(is_file('/usr/local/ispconfig/security/security_settings.ini')) copy('/usr/local/ispconfig/security/security_settings.ini','/usr/local/ispconfig/security/security_settings.ini~'); + //* copy the ISPConfig security part $command = 'cp -rf ../security '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Apply changed security_settings.ini values to new security_settings.ini file + if(is_file('/usr/local/ispconfig/security/security_settings.ini~')) { + $security_settings_old = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini~')); + $security_settings_new = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); + if(is_array($security_settings_new) && is_array($security_settings_old)) { + foreach($security_settings_new as $section => $sval) { + if(is_array($sval)) { + foreach($sval as $key => $val) { + if(isset($security_settings_old[$section]) && isset($security_settings_old[$section][$key])) { + $security_settings_new[$section][$key] = $security_settings_old[$section][$key]; + } + } + } + } + file_put_contents('/usr/local/ispconfig/security/security_settings.ini',array_to_ini($security_settings_new)); + } + } //* Create a symlink, so ISPConfig is accessible via web // Replaced by a separate vhost definition for port 8080 diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 9e398d1a4..153a4e019 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -749,9 +749,30 @@ class installer extends installer_base $command = "cp -rf ../server $install_dir"; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + //* Make a backup of the security settings + if(is_file('/usr/local/ispconfig/security/security_settings.ini')) copy('/usr/local/ispconfig/security/security_settings.ini','/usr/local/ispconfig/security/security_settings.ini~'); + //* copy the ISPConfig security part $command = 'cp -rf ../security '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Apply changed security_settings.ini values to new security_settings.ini file + if(is_file('/usr/local/ispconfig/security/security_settings.ini~')) { + $security_settings_old = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini~')); + $security_settings_new = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); + if(is_array($security_settings_new) && is_array($security_settings_old)) { + foreach($security_settings_new as $section => $sval) { + if(is_array($sval)) { + foreach($sval as $key => $val) { + if(isset($security_settings_old[$section]) && isset($security_settings_old[$section][$key])) { + $security_settings_new[$section][$key] = $security_settings_old[$section][$key]; + } + } + } + } + file_put_contents('/usr/local/ispconfig/security/security_settings.ini',array_to_ini($security_settings_new)); + } + } //* Create the config file for ISPConfig interface diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index c44bf8b6f..935b81608 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -905,9 +905,30 @@ class installer_dist extends installer_base { $command = "cp -rf ../server $install_dir"; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + //* Make a backup of the security settings + if(is_file('/usr/local/ispconfig/security/security_settings.ini')) copy('/usr/local/ispconfig/security/security_settings.ini','/usr/local/ispconfig/security/security_settings.ini~'); + //* copy the ISPConfig security part $command = 'cp -rf ../security '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Apply changed security_settings.ini values to new security_settings.ini file + if(is_file('/usr/local/ispconfig/security/security_settings.ini~')) { + $security_settings_old = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini~')); + $security_settings_new = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); + if(is_array($security_settings_new) && is_array($security_settings_old)) { + foreach($security_settings_new as $section => $sval) { + if(is_array($sval)) { + foreach($sval as $key => $val) { + if(isset($security_settings_old[$section]) && isset($security_settings_old[$section][$key])) { + $security_settings_new[$section][$key] = $security_settings_old[$section][$key]; + } + } + } + } + file_put_contents('/usr/local/ispconfig/security/security_settings.ini',array_to_ini($security_settings_new)); + } + } //* Create a symlink, so ISPConfig is accessible via web // Replaced by a separate vhost definition for port 8080 diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 125ebe1a7..538f21e76 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1745,9 +1745,30 @@ class installer_base { $command = 'cp -rf ../server '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + //* Make a backup of the security settings + if(is_file('/usr/local/ispconfig/security/security_settings.ini')) copy('/usr/local/ispconfig/security/security_settings.ini','/usr/local/ispconfig/security/security_settings.ini~'); + //* copy the ISPConfig security part $command = 'cp -rf ../security '.$install_dir; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Apply changed security_settings.ini values to new security_settings.ini file + if(is_file('/usr/local/ispconfig/security/security_settings.ini~')) { + $security_settings_old = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini~')); + $security_settings_new = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); + if(is_array($security_settings_new) && is_array($security_settings_old)) { + foreach($security_settings_new as $section => $sval) { + if(is_array($sval)) { + foreach($sval as $key => $val) { + if(isset($security_settings_old[$section]) && isset($security_settings_old[$section][$key])) { + $security_settings_new[$section][$key] = $security_settings_old[$section][$key]; + } + } + } + } + file_put_contents('/usr/local/ispconfig/security/security_settings.ini',array_to_ini($security_settings_new)); + } + } //* Create a symlink, so ISPConfig is accessible via web // Replaced by a separate vhost definition for port 8080 -- GitLab From d96e29ee1a7569aa25197ade01f35522af1570d2 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 22 Aug 2014 08:51:43 +0200 Subject: [PATCH 113/158] - added alias- and subdomains to ssl domain select --- interface/web/sites/web_domain_edit.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index 1208e48a1..b15222c19 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -406,8 +406,15 @@ class page_action extends tform_actions { } $ssl_domain_select = ''; - $tmp = $app->db->queryOneRecord("SELECT domain FROM web_domain WHERE domain_id = ".$this->id); - $ssl_domains = array($tmp["domain"], 'www.'.$tmp["domain"], '*.'.$tmp["domain"]); + $ssl_domains = array(); + $tmpd = $app->db->queryAllRecords("SELECT domain, type FROM web_domain WHERE domain_id = ".$this->id." OR parent_domain_id = ".$this->id); + foreach($tmpd as $tmp) { + if($tmp['type'] == 'subdomain' || $tmp['type'] == 'vhostsubdomain']) { + $ssl_domains[] = $tmp["domain"]; + } else { + $ssl_domains = array_merge($ssl_domains, array($tmp["domain"],'www.'.$tmp["domain"],'*.'.$tmp["domain"])); + } + } if(is_array($ssl_domains)) { foreach( $ssl_domains as $ssl_domain) { $selected = ($ssl_domain == $this->dataRecord['ssl_domain'])?'SELECTED':''; -- GitLab From 90923d227d949b59138a5a755ed16c2e87e78b70 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 22 Aug 2014 08:59:49 +0200 Subject: [PATCH 114/158] - fixed typo in previous commit --- interface/web/sites/web_domain_edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index b15222c19..a757700ba 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -409,7 +409,7 @@ class page_action extends tform_actions { $ssl_domains = array(); $tmpd = $app->db->queryAllRecords("SELECT domain, type FROM web_domain WHERE domain_id = ".$this->id." OR parent_domain_id = ".$this->id); foreach($tmpd as $tmp) { - if($tmp['type'] == 'subdomain' || $tmp['type'] == 'vhostsubdomain']) { + if($tmp['type'] == 'subdomain' || $tmp['type'] == 'vhostsubdomain') { $ssl_domains[] = $tmp["domain"]; } else { $ssl_domains = array_merge($ssl_domains, array($tmp["domain"],'www.'.$tmp["domain"],'*.'.$tmp["domain"])); -- GitLab From cb1221013251b4e9cba8e129edc6b8dbd8fd5145 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 25 Aug 2014 15:33:09 +0200 Subject: [PATCH 115/158] FS#3640 - Add Intrusion Detection System --- install/dist/lib/fedora.lib.php | 6 + install/dist/lib/gentoo.lib.php | 6 + install/dist/lib/opensuse.lib.php | 6 + install/lib/installer_base.lib.php | 6 + interface/lib/app.inc.php | 13 +- interface/lib/classes/IDS/.htaccess | 5 + .../lib/classes/IDS/Caching/ApcCache.php | 144 +++ .../lib/classes/IDS/Caching/CacheFactory.php | 85 ++ .../classes/IDS/Caching/CacheInterface.php | 64 ++ .../lib/classes/IDS/Caching/DatabaseCache.php | 277 ++++++ .../lib/classes/IDS/Caching/FileCache.php | 189 ++++ .../classes/IDS/Caching/MemcachedCache.php | 181 ++++ .../lib/classes/IDS/Caching/SessionCache.php | 136 +++ interface/lib/classes/IDS/Config.ini.php | 59 ++ .../lib/classes/IDS/Config/Config.ini.php | 91 ++ interface/lib/classes/IDS/Converter.php | 779 +++++++++++++++ interface/lib/classes/IDS/Event.php | 221 +++++ interface/lib/classes/IDS/Filter.php | 175 ++++ interface/lib/classes/IDS/Filter/Storage.php | 401 ++++++++ interface/lib/classes/IDS/Init.php | 174 ++++ interface/lib/classes/IDS/Monitor.php | 566 +++++++++++ interface/lib/classes/IDS/Report.php | 339 +++++++ interface/lib/classes/IDS/Version.php | 49 + interface/lib/classes/IDS/default_filter.json | 933 ++++++++++++++++++ interface/lib/classes/IDS/default_filter.xml | 787 +++++++++++++++ interface/lib/classes/IDS/license.txt | 18 + interface/lib/classes/db_mysql.inc.php | 47 + interface/lib/classes/getconf.inc.php | 18 +- interface/lib/classes/ids.inc.php | 149 +++ security/apache_directives.blacklist | 3 + security/ids.htmlfield | 5 + security/ids.whitelist | 45 + security/security_settings.ini | 9 + 33 files changed, 5979 insertions(+), 7 deletions(-) create mode 100644 interface/lib/classes/IDS/.htaccess create mode 100644 interface/lib/classes/IDS/Caching/ApcCache.php create mode 100644 interface/lib/classes/IDS/Caching/CacheFactory.php create mode 100644 interface/lib/classes/IDS/Caching/CacheInterface.php create mode 100644 interface/lib/classes/IDS/Caching/DatabaseCache.php create mode 100644 interface/lib/classes/IDS/Caching/FileCache.php create mode 100644 interface/lib/classes/IDS/Caching/MemcachedCache.php create mode 100644 interface/lib/classes/IDS/Caching/SessionCache.php create mode 100644 interface/lib/classes/IDS/Config.ini.php create mode 100644 interface/lib/classes/IDS/Config/Config.ini.php create mode 100644 interface/lib/classes/IDS/Converter.php create mode 100644 interface/lib/classes/IDS/Event.php create mode 100644 interface/lib/classes/IDS/Filter.php create mode 100644 interface/lib/classes/IDS/Filter/Storage.php create mode 100644 interface/lib/classes/IDS/Init.php create mode 100644 interface/lib/classes/IDS/Monitor.php create mode 100644 interface/lib/classes/IDS/Report.php create mode 100644 interface/lib/classes/IDS/Version.php create mode 100644 interface/lib/classes/IDS/default_filter.json create mode 100644 interface/lib/classes/IDS/default_filter.xml create mode 100644 interface/lib/classes/IDS/license.txt create mode 100644 interface/lib/classes/ids.inc.php create mode 100644 security/apache_directives.blacklist create mode 100644 security/ids.htmlfield create mode 100644 security/ids.whitelist diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index a7179ef8e..7dd7d9b04 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -1010,6 +1010,12 @@ class installer_dist extends installer_base { caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'chown root:ispconfig '.$install_dir.'/security'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.whitelist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.htmlfield'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/apache_directives.blacklist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 153a4e019..005a2fc2e 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -903,6 +903,12 @@ class installer extends installer_base caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'chown root:ispconfig '.$install_dir.'/security'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.whitelist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.htmlfield'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/apache_directives.blacklist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 935b81608..ea13cd259 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -1081,6 +1081,12 @@ class installer_dist extends installer_base { caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'chown root:ispconfig '.$install_dir.'/security'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.whitelist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.htmlfield'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/apache_directives.blacklist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 538f21e76..a30a7ec02 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1937,6 +1937,12 @@ class installer_base { caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'chown root:ispconfig '.$install_dir.'/security'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.whitelist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.htmlfield'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/apache_directives.blacklist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); //* Make the global language file directory group writable exec("chmod -R 770 $install_dir/interface/lib/lang"); diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index 8832f45e1..615e39087 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -48,6 +48,7 @@ class app { private $_wb; private $_loaded_classes = array(); private $_conf; + private $_security_config; public $loaded_plugins = array(); @@ -109,7 +110,8 @@ class app { } $this->uses('functions'); // we need this before all others! - $this->uses('auth,plugin'); + $this->uses('auth,plugin,ini_parser,getconf'); + } public function __get($prop) { @@ -327,4 +329,13 @@ class app { //* possible future = new app($conf); $app = new app(); +// load and enable PHP Intrusion Detection System (PHPIDS) +$ids_security_config = $app->getconf->get_security_config('ids'); + +if(is_dir(ISPC_CLASS_PATH.'/IDS') && $ids_security_config['ids_enabled'] == 'yes') { + $app->uses('ids'); + $app->ids->start(); +} +unset($ids_security_config); + ?> diff --git a/interface/lib/classes/IDS/.htaccess b/interface/lib/classes/IDS/.htaccess new file mode 100644 index 000000000..878d02ab1 --- /dev/null +++ b/interface/lib/classes/IDS/.htaccess @@ -0,0 +1,5 @@ +# in case PHPIDS is placed in the web-root +deny from all + +# silence is golden +php_flag display_errors off \ No newline at end of file diff --git a/interface/lib/classes/IDS/Caching/ApcCache.php b/interface/lib/classes/IDS/Caching/ApcCache.php new file mode 100644 index 000000000..e82cc88c5 --- /dev/null +++ b/interface/lib/classes/IDS/Caching/ApcCache.php @@ -0,0 +1,144 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ + +namespace IDS\Caching; + +/** + * APC caching wrapper + * + * This class inhabits functionality to get and set cache via memcached. + * + * @category Security + * @package PHPIDS + * @author Yves Berkholz + * @copyright 2007-2009 The PHPIDS Groupoup + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + * @since Version 0.6.5 + */ +class ApcCache implements CacheInterface +{ + /** + * Caching type + * + * @var string + */ + private $type = null; + + /** + * Cache configuration + * + * @var array + */ + private $config = null; + + /** + * Flag if the filter storage has been found in memcached + * + * @var boolean + */ + private $isCached = false; + + /** + * Holds an instance of this class + * + * @var object + */ + private static $cachingInstance = null; + + /** + * Constructor + * + * @param string $type caching type + * @param array $init the IDS_Init object + * + * @return void + */ + public function __construct($type, $init) + { + $this->type = $type; + $this->config = $init->config['Caching']; + } + + /** + * Returns an instance of this class + * + * @param string $type caching type + * @param object $init the IDS_Init object + * + * @return object $this + */ + public static function getInstance($type, $init) + { + if (!self::$cachingInstance) { + self::$cachingInstance = new ApcCache($type, $init); + } + + return self::$cachingInstance; + } + + /** + * Writes cache data + * + * @param array $data the caching data + * + * @return object $this + */ + public function setCache(array $data) + { + if (!$this->isCached) { + apc_store( + $this->config['key_prefix'] . '.storage', + $data, + $this->config['expiration_time'] + ); + } + + return $this; + } + + /** + * Returns the cached data + * + * Note that this method returns false if either type or file cache is + * not set + * + * @return mixed cache data or false + */ + public function getCache() + { + $data = apc_fetch($this->config['key_prefix'] . '.storage'); + $this->isCached = !empty($data); + + return $data; + } +} diff --git a/interface/lib/classes/IDS/Caching/CacheFactory.php b/interface/lib/classes/IDS/Caching/CacheFactory.php new file mode 100644 index 000000000..c35833255 --- /dev/null +++ b/interface/lib/classes/IDS/Caching/CacheFactory.php @@ -0,0 +1,85 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS\Caching; + +/** + * Caching factory + * + * This class is used as a factory to load the correct concrete caching + * implementation. + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + * @since Version 0.4 + */ +class CacheFactory +{ + /** + * Factory method + * + * @param object $init the IDS_Init object + * @param string $type the caching type + * + * @return object the caching facility + */ + public static function factory($init, $type) + { + $object = false; + $wrapper = preg_replace( + '/\W+/m', + null, + ucfirst($init->config['Caching']['caching']) + ); + $class = '\\IDS\\Caching\\' . $wrapper . 'Cache'; + $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . $wrapper . 'Cache.php'; + + if (file_exists($path)) { + include_once $path; + + if (class_exists($class)) { + $object = call_user_func( + array('' . $class, 'getInstance'), + $type, + $init + ); + } + } + + return $object; + } +} diff --git a/interface/lib/classes/IDS/Caching/CacheInterface.php b/interface/lib/classes/IDS/Caching/CacheInterface.php new file mode 100644 index 000000000..c1a6a6092 --- /dev/null +++ b/interface/lib/classes/IDS/Caching/CacheInterface.php @@ -0,0 +1,64 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS\Caching; + +/** + * Caching wrapper interface + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @since Version 0.4 + * @link http://php-ids.org/ + */ +interface CacheInterface +{ + /** + * Interface method + * + * @param array $data the cache data + * + * @return void + */ + public function setCache(array $data); + + /** + * Interface method + * + * @return void + */ + public function getCache(); +} diff --git a/interface/lib/classes/IDS/Caching/DatabaseCache.php b/interface/lib/classes/IDS/Caching/DatabaseCache.php new file mode 100644 index 000000000..09c77a87d --- /dev/null +++ b/interface/lib/classes/IDS/Caching/DatabaseCache.php @@ -0,0 +1,277 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS\Caching; + +/** + * + */ + +/** + * Database caching wrapper + * + * This class inhabits functionality to get and set cache via a database. + * + * Needed SQL: + * + +#create the database + +CREATE DATABASE IF NOT EXISTS `phpids` DEFAULT CHARACTER +SET utf8 COLLATE utf8_general_ci; +DROP TABLE IF EXISTS `cache`; + +#now select the created datbase and create the table + +CREATE TABLE `cache` ( +`type` VARCHAR( 32 ) NOT null , +`data` TEXT NOT null , +`created` DATETIME NOT null , +`modified` DATETIME NOT null +) ENGINE = MYISAM ; + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Groupup + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + * @since Version 0.4 + */ +class DatabaseCache implements CacheInterface +{ + + /** + * Caching type + * + * @var string + */ + private $type = null; + + /** + * Cache configuration + * + * @var array + */ + private $config = null; + + /** + * DBH + * + * @var object + */ + private $handle = null; + + /** + * Holds an instance of this class + * + * @var object + */ + private static $cachingInstance = null; + + /** + * Constructor + * + * Connects to database. + * + * @param string $type caching type + * @param object $init the IDS_Init object + * + * @return void + */ + public function __construct($type, $init) + { + $this->type = $type; + $this->config = $init->config['Caching']; + $this->handle = $this->connect(); + } + + /** + * Returns an instance of this class + * + * @static + * @param string $type caching type + * @param object $init the IDS_Init object + * + * @return object $this + */ + public static function getInstance($type, $init) + { + + if (!self::$cachingInstance) { + self::$cachingInstance = new DatabaseCache($type, $init); + } + + return self::$cachingInstance; + } + + /** + * Writes cache data into the database + * + * @param array $data the caching data + * + * @throws PDOException if a db error occurred + * @return object $this + */ + public function setCache(array $data) + { + $handle = $this->handle; + + $rows = $handle->query('SELECT created FROM `' . $this->config['table'].'`'); + + if (!$rows || $rows->rowCount() === 0) { + + $this->write($handle, $data); + } else { + + foreach ($rows as $row) { + + if ((time()-strtotime($row['created'])) > + $this->config['expiration_time']) { + + $this->write($handle, $data); + } + } + } + + return $this; + } + + /** + * Returns the cached data + * + * Note that this method returns false if either type or file cache is + * not set + * + * @throws PDOException if a db error occurred + * @return mixed cache data or false + */ + public function getCache() + { + try { + $handle = $this->handle; + $result = $handle->prepare( + 'SELECT * FROM `' . + $this->config['table'] . + '` where type=?' + ); + $result->execute(array($this->type)); + + foreach ($result as $row) { + return unserialize($row['data']); + } + + } catch (\PDOException $e) { + throw new \PDOException('PDOException: ' . $e->getMessage()); + } + + return false; + } + + /** + * Connect to database and return a handle + * + * @return object PDO + * @throws Exception if connection parameters are faulty + * @throws PDOException if a db error occurred + */ + private function connect() + { + // validate connection parameters + if (!$this->config['wrapper'] + || !$this->config['user'] + || !$this->config['password'] + || !$this->config['table']) { + + throw new \Exception('Insufficient connection parameters'); + } + + // try to connect + try { + $handle = new \PDO( + $this->config['wrapper'], + $this->config['user'], + $this->config['password'] + ); + $handle->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); + + } catch (\PDOException $e) { + throw new \PDOException('PDOException: ' . $e->getMessage()); + } + + return $handle; + } + + /** + * Write the cache data to the table + * + * @param object $handle the database handle + * @param array $data the caching data + * + * @return object PDO + * @throws PDOException if a db error occurred + */ + private function write($handle, $data) + { + try { + $handle->query('TRUNCATE ' . $this->config['table'].''); + $statement = $handle->prepare( + 'INSERT INTO `' . + $this->config['table'].'` ( + type, + data, + created, + modified + ) + VALUES ( + :type, + :data, + now(), + now() + )' + ); + + $statement->bindValue( + 'type', + $handle->quote($this->type) + ); + $statement->bindValue('data', serialize($data)); + + if (!$statement->execute()) { + throw new \PDOException($statement->errorCode()); + } + } catch (\PDOException $e) { + throw new \PDOException('PDOException: ' . $e->getMessage()); + } + } +} diff --git a/interface/lib/classes/IDS/Caching/FileCache.php b/interface/lib/classes/IDS/Caching/FileCache.php new file mode 100644 index 000000000..71f01c7dc --- /dev/null +++ b/interface/lib/classes/IDS/Caching/FileCache.php @@ -0,0 +1,189 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS\Caching; + +use IDS\Init; + +/** + * File caching wrapper + * + * This class inhabits functionality to get and set cache via a static flatfile. + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + * @since Version 0.4 + */ +class FileCache implements CacheInterface +{ + /** + * Caching type + * + * @var string + */ + private $type; + + /** + * Cache configuration + * + * @var array + */ + private $config; + + /** + * Path to cache file + * + * @var string + */ + private $path; + + /** + * Holds an instance of this class + * + * @var object + */ + private static $cachingInstance; + + /** + * Constructor + * + * @param string $type caching type + * @param object $init the IDS_Init object + * @throws \Exception + * + * @return void + */ + public function __construct($type, Init $init) + { + $this->type = $type; + $this->config = $init->config['Caching']; + $this->path = $init->getBasePath() . $this->config['path']; + + if (file_exists($this->path) && !is_writable($this->path)) { + throw new \Exception( + 'Make sure all files in ' . + htmlspecialchars($this->path, ENT_QUOTES, 'UTF-8') . + 'are writeable!' + ); + } + } + + /** + * Returns an instance of this class + * + * @param string $type caching type + * @param object $init the IDS_Init object + * + * @return object $this + */ + public static function getInstance($type, $init) + { + if (!self::$cachingInstance) { + self::$cachingInstance = new FileCache($type, $init); + } + + return self::$cachingInstance; + } + + /** + * Writes cache data into the file + * + * @param array $data the cache data + * + * @throws Exception if cache file couldn't be created + * @return object $this + */ + public function setCache(array $data) + { + if (!is_writable(preg_replace('/[\/][^\/]+\.[^\/]++$/', null, $this->path))) { + throw new \Exception( + 'Temp directory ' . + htmlspecialchars($this->path, ENT_QUOTES, 'UTF-8') . + ' seems not writable' + ); + } + + if (!$this->isValidFile($this->path)) { + $handle = @fopen($this->path, 'w+'); + + if (!$handle) { + throw new \Exception("Cache file couldn't be created"); + } + + $serialized = @serialize($data); + if (!$serialized) { + throw new \Exception("Cache data couldn't be serialized"); + } + + fwrite($handle, $serialized); + fclose($handle); + } + + return $this; + } + + /** + * Returns the cached data + * + * Note that this method returns false if either type or file cache is + * not set + * + * @return mixed cache data or false + */ + public function getCache() + { + // make sure filters are parsed again if cache expired + if (!$this->isValidFile($this->path)) { + return false; + } + + $data = unserialize(file_get_contents($this->path)); + + return $data; + } + + /** + * Returns true if the cache file is still valid + * + * @param string $file + * @return bool + */ + private function isValidFile($file) + { + return file_exists($file) && time() - filectime($file) <= $this->config['expiration_time']; + } +} diff --git a/interface/lib/classes/IDS/Caching/MemcachedCache.php b/interface/lib/classes/IDS/Caching/MemcachedCache.php new file mode 100644 index 000000000..b3dd5b72d --- /dev/null +++ b/interface/lib/classes/IDS/Caching/MemcachedCache.php @@ -0,0 +1,181 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS\Caching; + +/** + * File caching wrapper + * + * This class inhabits functionality to get and set cache via memcached. + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Groupoup + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + * @since Version 0.4 + */ +class MemcachedCache implements CacheInterface +{ + /** + * Caching type + * + * @var string + */ + private $type = null; + + /** + * Cache configuration + * + * @var array + */ + private $config = null; + + /** + * Flag if the filter storage has been found in memcached + * + * @var boolean + */ + private $isCached = false; + + /** + * Memcache object + * + * @var object + */ + private $memcache = null; + + /** + * Holds an instance of this class + * + * @var object + */ + private static $cachingInstance = null; + + /** + * Constructor + * + * @param string $type caching type + * @param array $init the IDS_Init object + * + * @return void + */ + public function __construct($type, $init) + { + + $this->type = $type; + $this->config = $init->config['Caching']; + + $this->connect(); + } + + /** + * Returns an instance of this class + * + * @param string $type caching type + * @param object $init the IDS_Init object + * + * @return object $this + */ + public static function getInstance($type, $init) + { + if (!self::$cachingInstance) { + self::$cachingInstance = new MemcachedCache($type, $init); + } + + return self::$cachingInstance; + } + + /** + * Writes cache data + * + * @param array $data the caching data + * + * @return object $this + */ + public function setCache(array $data) + { + if (!$this->isCached) { + $this->memcache->set( + $this->config['key_prefix'] . '.storage', + $data, + false, + $this->config['expiration_time'] + ); + } + + return $this; + } + + /** + * Returns the cached data + * + * Note that this method returns false if either type or file cache is + * not set + * + * @return mixed cache data or false + */ + public function getCache() + { + $data = $this->memcache->get( + $this->config['key_prefix'] . + '.storage' + ); + $this->isCached = !empty($data); + + return $data; + } + + /** + * Connect to the memcached server + * + * @throws Exception if connection parameters are insufficient + * @return void + */ + private function connect() + { + + if ($this->config['host'] && $this->config['port']) { + // establish the memcache connection + $this->memcache = new \Memcache; + $this->memcache->pconnect( + $this->config['host'], + $this->config['port'] + ); + + } else { + throw new \Exception('Insufficient connection parameters'); + } + } +} diff --git a/interface/lib/classes/IDS/Caching/SessionCache.php b/interface/lib/classes/IDS/Caching/SessionCache.php new file mode 100644 index 000000000..7168a63ce --- /dev/null +++ b/interface/lib/classes/IDS/Caching/SessionCache.php @@ -0,0 +1,136 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ + +namespace IDS\Caching; + +/** + * File caching wrapper + * + * This class inhabits functionality to get and set cache via session. + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + * @since Version 0.4 + */ +class SessionCache implements CacheInterface +{ + /** + * Caching type + * + * @var string + */ + private $type = null; + + /** + * Cache configuration + * + * @var array + */ + private $config = null; + + /** + * Holds an instance of this class + * + * @var object + */ + private static $cachingInstance = null; + + /** + * Constructor + * + * @param string $type caching type + * @param object $init the IDS_Init object + * + * @return void + */ + public function __construct($type, $init) + { + $this->type = $type; + $this->config = $init->config['Caching']; + } + + /** + * Returns an instance of this class + * + * @param string $type caching type + * @param object $init the IDS_Init object + * + * @return object $this + */ + public static function getInstance($type, $init) + { + + if (!self::$cachingInstance) { + self::$cachingInstance = new SessionCache($type, $init); + } + + return self::$cachingInstance; + } + + /** + * Writes cache data into the session + * + * @param array $data the caching data + * + * @return object $this + */ + public function setCache(array $data) + { + + $_SESSION['PHPIDS'][$this->type] = $data; + + return $this; + } + + /** + * Returns the cached data + * + * Note that this method returns false if either type or file cache is not set + * + * @return mixed cache data or false + */ + public function getCache() + { + + if ($this->type && $_SESSION['PHPIDS'][$this->type]) { + return $_SESSION['PHPIDS'][$this->type]; + } + + return false; + } +} diff --git a/interface/lib/classes/IDS/Config.ini.php b/interface/lib/classes/IDS/Config.ini.php new file mode 100644 index 000000000..f87ccc8d6 --- /dev/null +++ b/interface/lib/classes/IDS/Config.ini.php @@ -0,0 +1,59 @@ +; + +; PHPIDS Config.ini + +; General configuration settings + +[General] + + ; basic settings - customize to make the PHPIDS work at all + filter_type = xml + + base_path = /full/path/to/IDS/ + use_base_path = false + + filter_path = default_filter.xml + tmp_path = tmp + scan_keys = false + + ; in case you want to use a different HTMLPurifier source, specify it here + ; By default, those files are used that are being shipped with PHPIDS + HTML_Purifier_Cache = vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer + + ; define which fields contain html and need preparation before + ; hitting the PHPIDS rules (new in PHPIDS 0.5) + ;html[] = POST.__wysiwyg + + ; define which fields contain JSON data and should be treated as such + ; for fewer false positives (new in PHPIDS 0.5.3) + ;json[] = POST.__jsondata + + ; define which fields shouldn't be monitored (a[b]=c should be referenced via a.b) + exceptions[] = GET.__utmz + exceptions[] = GET.__utmc + exceptions[] = POST.maildir_path + + ; you can use regular expressions for wildcard exceptions - example: /.*foo/i + +[Caching] + + ; caching: session|file|database|memcached|apc|none + caching = file + expiration_time = 600 + + ; file cache + path = tmp/default_filter.cache + + ; database cache + wrapper = "mysql:host=localhost;port=3306;dbname=phpids" + user = phpids_user + password = 123456 + table = cache + + ; memcached + ;host = localhost + ;port = 11211 + ;key_prefix = PHPIDS + + ; apc + ;key_prefix = PHPIDS diff --git a/interface/lib/classes/IDS/Config/Config.ini.php b/interface/lib/classes/IDS/Config/Config.ini.php new file mode 100644 index 000000000..080055298 --- /dev/null +++ b/interface/lib/classes/IDS/Config/Config.ini.php @@ -0,0 +1,91 @@ +; + +; PHPIDS Config.ini + +; General configuration settings + +[General] + + ; basic settings - customize to make the PHPIDS work at all + filter_type = xml + + base_path = /full/path/to/IDS/ + use_base_path = false + + filter_path = default_filter.xml + tmp_path = tmp + scan_keys = false + + ; in case you want to use a different HTMLPurifier source, specify it here + ; By default, those files are used that are being shipped with PHPIDS + HTML_Purifier_Cache = vendors/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer + + ; define which fields contain html and need preparation before + ; hitting the PHPIDS rules (new in PHPIDS 0.5) + ;html[] = POST.__wysiwyg + ;html[] = POST.records + ;html[] = REQUEST.records + + ; define which fields contain JSON data and should be treated as such + ; for fewer false positives (new in PHPIDS 0.5.3) + ;json[] = POST.__jsondata + + ; define which fields shouldn't be monitored (a[b]=c should be referenced via a.b) + ; exceptions[] = GET.__utmz + ; exceptions[] = GET.__utmc + ; exceptions[] = POST.maildir_path + ; exceptions[] = REQUEST.maildir_path + ; exceptions[] = REQUEST.website_path + ; exceptions[] = REQUEST.website_symlinks + ; exceptions[] = REQUEST.vhost_conf_dir + ; exceptions[] = REQUEST.vhost_conf_enabled_dir + ; exceptions[] = REQUEST.nginx_vhost_conf_dir + ; exceptions[] = REQUEST.nginx_vhost_conf_enabled_dir + ; exceptions[] = REQUEST.php_open_basedir + ; exceptions[] = REQUEST.awstats_pl + ; exceptions[] = POST.website_path + ; exceptions[] = POST.website_symlinks + ; exceptions[] = POST.vhost_conf_dir + ; exceptions[] = POST.vhost_conf_enabled_dir + ; exceptions[] = POST.nginx_vhost_conf_dir + ; exceptions[] = POST.nginx_vhost_conf_enabled_dir + ; exceptions[] = POST.php_open_basedir + ; exceptions[] = POST.awstats_pl + ; exceptions[] = REQUEST.fastcgi_starter_path + ; exceptions[] = REQUEST.fastcgi_bin + ; exceptions[] = POST.fastcgi_starter_path + ; exceptions[] = POST.fastcgi_bin + ; exceptions[] = REQUEST.jailkit_chroot_home + ; exceptions[] = POST.jailkit_chroot_home + ; exceptions[] = REQUEST.phpmyadmin_url + ; exceptions[] = REQUEST.phpmyadmin_url + ; exceptions[] = REQUEST.records.weak_password_txt + ; exceptions[] = POST.records.weak_password_txt + + + + ; you can use regular expressions for wildcard exceptions - example: /.*foo/i + +[Caching] + + ; caching: session|file|database|memcached|apc|none + caching = file + expiration_time = 600 + + ; file cache + path = tmp/default_filter.cache + + ; database cache + wrapper = "mysql:host=localhost;port=3306;dbname=phpids" + user = phpids_user + password = 123456 + table = cache + + ; memcached + ;host = localhost + ;port = 11211 + ;key_prefix = PHPIDS + + ; apc + ;key_prefix = PHPIDS + diff --git a/interface/lib/classes/IDS/Converter.php b/interface/lib/classes/IDS/Converter.php new file mode 100644 index 000000000..770d1ccc9 --- /dev/null +++ b/interface/lib/classes/IDS/Converter.php @@ -0,0 +1,779 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ + +/** + * PHPIDS specific utility class to convert charsets manually + * + * Note that if you make use of IDS_Converter::runAll(), existing class + * methods will be executed in the same order as they are implemented in the + * class tree! + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ + +namespace IDS; + +class Converter +{ + /** + * Runs all converter functions + * + * Note that if you make use of IDS_Converter::runAll(), existing class + * methods will be executed in the same order as they are implemented in the + * class tree! + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function runAll($value) + { + foreach (get_class_methods(__CLASS__) as $method) { + if (strpos($method, 'run') !== 0) { + $value = self::$method($value); + } + } + + return $value; + } + + /** + * Check for comments and erases them if available + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromCommented($value) + { + // check for existing comments + if (preg_match('/(?:\|\/\*|\*\/|\/\/\W*\w+\s*$)|(?:--[^-]*-)/ms', $value)) { + + $pattern = array( + '/(?:(?:))/ms', + '/(?:(?:\/\*\/*[^\/\*]*)+\*\/)/ms', + '/(?:--[^-]*-)/ms' + ); + + $converted = preg_replace($pattern, ';', $value); + $value .= "\n" . $converted; + } + + //make sure inline comments are detected and converted correctly + $value = preg_replace('/(<\w+)\/+(\w+=?)/m', '$1/$2', $value); + $value = preg_replace('/[^\\\:]\/\/(.*)$/m', '/**/$1', $value); + $value = preg_replace('/([^\-&])#.*[\r\n\v\f]/m', '$1', $value); + $value = preg_replace('/([^&\-])#.*\n/m', '$1 ', $value); + $value = preg_replace('/^#.*\n/m', ' ', $value); + + return $value; + } + + /** + * Strip newlines + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromWhiteSpace($value) + { + //check for inline linebreaks + $search = array('\r', '\n', '\f', '\t', '\v'); + $value = str_replace($search, ';', $value); + + // replace replacement characters regular spaces + $value = str_replace('�', ' ', $value); + + //convert real linebreaks + return preg_replace('/(?:\n|\r|\v)/m', ' ', $value); + } + + /** + * Checks for common charcode pattern and decodes them + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromJSCharcode($value) + { + $matches = array(); + + // check if value matches typical charCode pattern + if (preg_match_all('/(?:[\d+-=\/\* ]+(?:\s?,\s?[\d+-=\/\* ]+)){4,}/ms', $value, $matches)) { + $converted = ''; + $string = implode(',', $matches[0]); + $string = preg_replace('/\s/', '', $string); + $string = preg_replace('/\w+=/', '', $string); + $charcode = explode(',', $string); + + foreach ($charcode as $char) { + $char = preg_replace('/\W0/s', '', $char); + + if (preg_match_all('/\d*[+-\/\* ]\d+/', $char, $matches)) { + $match = preg_split('/(\W?\d+)/', implode('', $matches[0]), null, PREG_SPLIT_DELIM_CAPTURE); + + if (array_sum($match) >= 20 && array_sum($match) <= 127) { + $converted .= chr(array_sum($match)); + } + + } elseif (!empty($char) && $char >= 20 && $char <= 127) { + $converted .= chr($char); + } + } + + $value .= "\n" . $converted; + } + + // check for octal charcode pattern + if (preg_match_all('/(?:(?:[\\\]+\d+[ \t]*){8,})/ims', $value, $matches)) { + $converted = ''; + $charcode = explode('\\', preg_replace('/\s/', '', implode(',', $matches[0]))); + + foreach (array_map('octdec', array_filter($charcode)) as $char) { + if (20 <= $char && $char <= 127) { + $converted .= chr($char); + } + } + $value .= "\n" . $converted; + } + + // check for hexadecimal charcode pattern + if (preg_match_all('/(?:(?:[\\\]+\w+\s*){8,})/ims', $value, $matches)) { + $converted = ''; + $charcode = explode('\\', preg_replace('/[ux]/', '', implode(',', $matches[0]))); + + foreach (array_map('hexdec', array_filter($charcode)) as $char) { + if (20 <= $char && $char <= 127) { + $converted .= chr($char); + } + } + $value .= "\n" . $converted; + } + + return $value; + } + + /** + * Eliminate JS regex modifiers + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertJSRegexModifiers($value) + { + return preg_replace('/\/[gim]+/', '/', $value); + } + + /** + * Converts from hex/dec entities + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertEntities($value) + { + $converted = null; + + //deal with double encoded payload + $value = preg_replace('/&/', '&', $value); + + if (preg_match('/&#x?[\w]+/ms', $value)) { + $converted = preg_replace('/(&#x?[\w]{2}\d?);?/ms', '$1;', $value); + $converted = html_entity_decode($converted, ENT_QUOTES, 'UTF-8'); + $value .= "\n" . str_replace(';;', ';', $converted); + } + + // normalize obfuscated protocol handlers + $value = preg_replace( + '/(?:j\s*a\s*v\s*a\s*s\s*c\s*r\s*i\s*p\s*t\s*:)|(d\s*a\s*t\s*a\s*:)/ms', + 'javascript:', + $value + ); + + return $value; + } + + /** + * Normalize quotes + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertQuotes($value) + { + // normalize different quotes to " + $pattern = array('\'', '`', '´', '’', '‘'); + $value = str_replace($pattern, '"', $value); + + //make sure harmless quoted strings don't generate false alerts + $value = preg_replace('/^"([^"=\\!><~]+)"$/', '$1', $value); + + return $value; + } + + /** + * Converts SQLHEX to plain text + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromSQLHex($value) + { + $matches = array(); + if (preg_match_all('/(?:(?:\A|[^\d])0x[a-f\d]{3,}[a-f\d]*)+/im', $value, $matches)) { + foreach ($matches[0] as $match) { + $converted = ''; + foreach (str_split($match, 2) as $hex_index) { + if (preg_match('/[a-f\d]{2,3}/i', $hex_index)) { + $converted .= chr(hexdec($hex_index)); + } + } + $value = str_replace($match, $converted, $value); + } + } + // take care of hex encoded ctrl chars + $value = preg_replace('/0x\d+/m', ' 1 ', $value); + + return $value; + } + + /** + * Converts basic SQL keywords and obfuscations + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromSQLKeywords($value) + { + $pattern = array( + '/(?:is\s+null)|(like\s+null)|' . + '(?:(?:^|\W)in[+\s]*\([\s\d"]+[^()]*\))/ims' + ); + $value = preg_replace($pattern, '"=0', $value); + + $value = preg_replace('/[^\w\)]+\s*like\s*[^\w\s]+/ims', '1" OR "1"', $value); + $value = preg_replace('/null([,"\s])/ims', '0$1', $value); + $value = preg_replace('/\d+\./ims', ' 1', $value); + $value = preg_replace('/,null/ims', ',0', $value); + $value = preg_replace('/(?:between)/ims', 'or', $value); + $value = preg_replace('/(?:and\s+\d+\.?\d*)/ims', '', $value); + $value = preg_replace('/(?:\s+and\s+)/ims', ' or ', $value); + + $pattern = array( + '/(?:not\s+between)|(?:is\s+not)|(?:not\s+in)|' . + '(?:xor|<>|rlike(?:\s+binary)?)|' . + '(?:regexp\s+binary)|' . + '(?:sounds\s+like)/ims' + ); + $value = preg_replace($pattern, '!', $value); + $value = preg_replace('/"\s+\d/', '"', $value); + $value = preg_replace('/(\W)div(\W)/ims', '$1 OR $2', $value); + $value = preg_replace('/\/(?:\d+|null)/', null, $value); + + return $value; + } + + /** + * Detects nullbytes and controls chars via ord() + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromControlChars($value) + { + // critical ctrl values + $search = array( + chr(0), chr(1), chr(2), chr(3), chr(4), chr(5), + chr(6), chr(7), chr(8), chr(11), chr(12), chr(14), + chr(15), chr(16), chr(17), chr(18), chr(19), chr(24), + chr(25), chr(192), chr(193), chr(238), chr(255), '\\0' + ); + + $value = str_replace($search, '%00', $value); + + //take care for malicious unicode characters + $value = urldecode( + preg_replace( + '/(?:%E(?:2|3)%8(?:0|1)%(?:A|8|9)\w|%EF%BB%BF|%EF%BF%BD)|(?:&#(?:65|8)\d{3};?)/i', + null, + urlencode($value) + ) + ); + $value = urlencode($value); + $value = preg_replace('/(?:%F0%80%BE)/i', '>', $value); + $value = preg_replace('/(?:%F0%80%BC)/i', '<', $value); + $value = preg_replace('/(?:%F0%80%A2)/i', '"', $value); + $value = preg_replace('/(?:%F0%80%A7)/i', '\'', $value); + $value = urldecode($value); + + $value = preg_replace('/(?:%ff1c)/', '<', $value); + $value = preg_replace('/(?:&[#x]*(200|820|200|820|zwn?j|lrm|rlm)\w?;?)/i', null, $value); + $value = preg_replace( + '/(?:&#(?:65|8)\d{3};?)|' . + '(?:&#(?:56|7)3\d{2};?)|' . + '(?:&#x(?:fe|20)\w{2};?)|' . + '(?:&#x(?:d[c-f])\w{2};?)/i', + null, + $value + ); + + $value = str_replace( + array( + '«', + '〈', + '<', + '‹', + '〈', + '⟨' + ), + '<', + $value + ); + $value = str_replace( + array( + '»', + '〉', + '>', + '›', + '〉', + '⟩' + ), + '>', + $value + ); + + return $value; + } + + /** + * This method matches and translates base64 strings and fragments + * used in data URIs + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromNestedBase64($value) + { + $matches = array(); + preg_match_all('/(?:^|[,&?])\s*([a-z0-9]{50,}=*)(?:\W|$)/im', $value, $matches); + + foreach ($matches[1] as $item) { + if (isset($item) && !preg_match('/[a-f0-9]{32}/i', $item)) { + $base64_item = base64_decode($item); + $value = str_replace($item, $base64_item, $value); + } + } + + return $value; + } + + /** + * Detects nullbytes and controls chars via ord() + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromOutOfRangeChars($value) + { + $values = str_split($value); + foreach ($values as $item) { + if (ord($item) >= 127) { + $value = str_replace($item, ' ', $value); + } + } + + return $value; + } + + /** + * Strip XML patterns + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromXML($value) + { + $converted = strip_tags($value); + if (!$converted || $converted === $value) { + return $value; + } else { + return $value . "\n" . $converted; + } + } + + /** + * This method converts JS unicode code points to + * regular characters + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromJSUnicode($value) + { + $matches = array(); + preg_match_all('/\\\u[0-9a-f]{4}/ims', $value, $matches); + + if (!empty($matches[0])) { + foreach ($matches[0] as $match) { + $chr = chr(hexdec(substr($match, 2, 4))); + $value = str_replace($match, $chr, $value); + } + $value .= "\n\u0001"; + } + + return $value; + } + + /** + * Converts relevant UTF-7 tags to UTF-8 + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromUTF7($value) + { + if (preg_match('/\+A\w+-?/m', $value)) { + if (function_exists('mb_convert_encoding')) { + if (version_compare(PHP_VERSION, '5.2.8', '<')) { + $tmp_chars = str_split($value); + $value = ''; + foreach ($tmp_chars as $char) { + if (ord($char) <= 127) { + $value .= $char; + } + } + } + $value .= "\n" . mb_convert_encoding($value, 'UTF-8', 'UTF-7'); + } else { + //list of all critical UTF7 codepoints + $schemes = array( + '+ACI-' => '"', + '+ADw-' => '<', + '+AD4-' => '>', + '+AFs-' => '[', + '+AF0-' => ']', + '+AHs-' => '{', + '+AH0-' => '}', + '+AFw-' => '\\', + '+ADs-' => ';', + '+ACM-' => '#', + '+ACY-' => '&', + '+ACU-' => '%', + '+ACQ-' => '$', + '+AD0-' => '=', + '+AGA-' => '`', + '+ALQ-' => '"', + '+IBg-' => '"', + '+IBk-' => '"', + '+AHw-' => '|', + '+ACo-' => '*', + '+AF4-' => '^', + '+ACIAPg-' => '">', + '+ACIAPgA8-' => '">' + ); + + $value = str_ireplace( + array_keys($schemes), + array_values($schemes), + $value + ); + } + } + + return $value; + } + + /** + * Converts basic concatenations + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromConcatenated($value) + { + //normalize remaining backslashes + if ($value != preg_replace('/(\w)\\\/', "$1", $value)) { + $value .= preg_replace('/(\w)\\\/', "$1", $value); + } + + $compare = stripslashes($value); + + $pattern = array( + '/(?:<\/\w+>\+<\w+>)/s', + '/(?:":\d+[^"[]+")/s', + '/(?:"?"\+\w+\+")/s', + '/(?:"\s*;[^"]+")|(?:";[^"]+:\s*")/s', + '/(?:"\s*(?:;|\+).{8,18}:\s*")/s', + '/(?:";\w+=)|(?:!""&&")|(?:~)/s', + '/(?:"?"\+""?\+?"?)|(?:;\w+=")|(?:"[|&]{2,})/s', + '/(?:"\s*\W+")/s', + '/(?:";\w\s*\+=\s*\w?\s*")/s', + '/(?:"[|&;]+\s*[^|&\n]*[|&]+\s*"?)/s', + '/(?:";\s*\w+\W+\w*\s*[|&]*")/s', + '/(?:"\s*"\s*\.)/s', + '/(?:\s*new\s+\w+\s*[+",])/', + '/(?:(?:^|\s+)(?:do|else)\s+)/', + '/(?:[{(]\s*new\s+\w+\s*[)}])/', + '/(?:(this|self)\.)/', + '/(?:undefined)/', + '/(?:in\s+)/' + ); + + // strip out concatenations + $converted = preg_replace($pattern, null, $compare); + + //strip object traversal + $converted = preg_replace('/\w(\.\w\()/', "$1", $converted); + + // normalize obfuscated method calls + $converted = preg_replace('/\)\s*\+/', ")", $converted); + + //convert JS special numbers + $converted = preg_replace( + '/(?:\(*[.\d]e[+-]*[^a-z\W]+\)*)|(?:NaN|Infinity)\W/ims', + 1, + $converted + ); + + if ($converted && ($compare != $converted)) { + $value .= "\n" . $converted; + } + + return $value; + } + + /** + * This method collects and decodes proprietary encoding types + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromProprietaryEncodings($value) + { + //Xajax error reportings + $value = preg_replace('//im', '$1', $value); + + //strip false alert triggering apostrophes + $value = preg_replace('/(\w)\"(s)/m', '$1$2', $value); + + //strip quotes within typical search patterns + $value = preg_replace('/^"([^"=\\!><~]+)"$/', '$1', $value); + + //OpenID login tokens + $value = preg_replace('/{[\w-]{8,9}\}(?:\{[\w=]{8}\}){2}/', null, $value); + + //convert Content and \sdo\s to null + $value = preg_replace('/Content|\Wdo\s/', null, $value); + + //strip emoticons + $value = preg_replace( + '/(?:\s[:;]-[)\/PD]+)|(?:\s;[)PD]+)|(?:\s:[)PD]+)|-\.-|\^\^/m', + null, + $value + ); + + //normalize separation char repetion + $value = preg_replace('/([.+~=*_\-;])\1{2,}/m', '$1', $value); + + //normalize multiple single quotes + $value = preg_replace('/"{2,}/m', '"', $value); + + //normalize quoted numerical values and asterisks + $value = preg_replace('/"(\d+)"/m', '$1', $value); + + //normalize pipe separated request parameters + $value = preg_replace('/\|(\w+=\w+)/m', '&$1', $value); + + //normalize ampersand listings + $value = preg_replace('/(\w\s)&\s(\w)/', '$1$2', $value); + + //normalize escaped RegExp modifiers + $value = preg_replace('/\/\\\(\w)/', '/$1', $value); + + return $value; + } + + /** + * This method removes encoded sql # comments + * + * @param string $value the value to convert + * + * @static + * @return string + */ + public static function convertFromUrlencodeSqlComment($value) + { + if (preg_match_all('/(?:\%23.*?\%0a)/im',$value,$matches)){ + $converted = $value; + foreach($matches[0] as $match){ + $converted = str_replace($match,' ',$converted); + } + $value .= "\n" . $converted; + } + return $value; + } + + /** + * This method is the centrifuge prototype + * + * @param string $value the value to convert + * @param Monitor $monitor the monitor object + * + * @static + * @return string + */ + public static function runCentrifuge($value, Monitor $monitor = null) + { + $threshold = 3.49; + if (strlen($value) > 25) { + //strip padding + $tmp_value = preg_replace('/\s{4}|==$/m', null, $value); + $tmp_value = preg_replace( + '/\s{4}|[\p{L}\d\+\-=,.%()]{8,}/m', + 'aaa', + $tmp_value + ); + + // Check for the attack char ratio + $tmp_value = preg_replace('/([*.!?+-])\1{1,}/m', '$1', $tmp_value); + $tmp_value = preg_replace('/"[\p{L}\d\s]+"/m', null, $tmp_value); + + $stripped_length = strlen( + preg_replace( + '/[\d\s\p{L}\.:,%&\/><\-)!|]+/m', + null, + $tmp_value + ) + ); + $overall_length = strlen( + preg_replace( + '/([\d\s\p{L}:,\.]{3,})+/m', + 'aaa', + preg_replace('/\s{2,}/m', null, $tmp_value) + ) + ); + + if ($stripped_length != 0 && $overall_length/$stripped_length <= $threshold) { + $monitor->centrifuge['ratio'] = $overall_length / $stripped_length; + $monitor->centrifuge['threshold'] =$threshold; + + $value .= "\n$[!!!]"; + } + } + + if (strlen($value) > 40) { + // Replace all non-special chars + $converted = preg_replace('/[\w\s\p{L},.:!]/', null, $value); + + // Split string into an array, unify and sort + $array = str_split($converted); + $array = array_unique($array); + asort($array); + + // Normalize certain tokens + $schemes = array( + '~' => '+', + '^' => '+', + '|' => '+', + '*' => '+', + '%' => '+', + '&' => '+', + '/' => '+' + ); + + $converted = implode($array); + + $_keys = array_keys($schemes); + $_values = array_values($schemes); + + $converted = str_replace($_keys, $_values, $converted); + + $converted = preg_replace('/[+-]\s*\d+/', '+', $converted); + $converted = preg_replace('/[()[\]{}]/', '(', $converted); + $converted = preg_replace('/[!?:=]/', ':', $converted); + $converted = preg_replace('/[^:(+]/', null, stripslashes($converted)); + + // Sort again and implode + $array = str_split($converted); + asort($array); + $converted = implode($array); + + if (preg_match('/(?:\({2,}\+{2,}:{2,})|(?:\({2,}\+{2,}:+)|(?:\({3,}\++:{2,})/', $converted)) { + $monitor->centrifuge['converted'] = $converted; + + return $value . "\n" . $converted; + } + } + + return $value; + } +} diff --git a/interface/lib/classes/IDS/Event.php b/interface/lib/classes/IDS/Event.php new file mode 100644 index 000000000..ebda1715e --- /dev/null +++ b/interface/lib/classes/IDS/Event.php @@ -0,0 +1,221 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS; + +/** + * PHPIDS event object + * + * This class represents a certain event that occured while applying the filters + * to the supplied data. It aggregates a bunch of IDS_Filter implementations and + * is a assembled in IDS_Report. + * + * Note that this class implements both Countable and IteratorAggregate + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +class Event implements \Countable, \IteratorAggregate +{ + /** + * Event name + * + * @var string + */ + protected $name = null; + + /** + * Value of the event + * + * @var mixed + */ + protected $value = null; + + /** + * List of filter objects + * + * Filter objects in this array are those that matched the events value + * + * @var Filter[]|array + */ + protected $filters = array(); + + /** + * Calculated impact + * + * Total impact of the event + * + * @var integer + */ + protected $impact = 0; + + /** + * Affecte tags + * + * @var string[]|array + */ + protected $tags = array(); + + /** + * Constructor + * + * Fills event properties + * + * @param string $name the event name + * @param mixed $value the event value + * @param Filter[]|array $filters the corresponding filters + * + * @throws \InvalidArgumentException + * @return \IDS\Event + */ + public function __construct($name, $value, array $filters) + { + if (!is_scalar($name)) { + throw new \InvalidArgumentException( + 'Expected $name to be a scalar,' . gettype($name) . ' given' + ); + } + + if (!is_scalar($value)) { + throw new \InvalidArgumentException( + 'Expected $value to be a scalar,' . gettype($value) . ' given' + ); + } + + $this->name = $name; + $this->value = $value; + + foreach ($filters as $filter) { + if (!$filter instanceof Filter) { + throw new \InvalidArgumentException( + 'Filter must be derived from IDS_Filter' + ); + } + + $this->filters[] = $filter; + } + } + + /** + * Returns event name + * + * The name of the event usually is the key of the variable that was + * considered to be malicious + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Returns event value + * + * @return mixed + */ + public function getValue() + { + return $this->value; + } + + /** + * Returns calculated impact + * + * @return integer + */ + public function getImpact() + { + if (!$this->impact) { + $this->impact = 0; + foreach ($this->filters as $filter) { + $this->impact += $filter->getImpact(); + } + } + + return $this->impact; + } + + /** + * Returns affected tags + * + * @return string[]|array + */ + public function getTags() + { + foreach ($this->getFilters() as $filter) { + $this->tags = array_merge($this->tags, $filter->getTags()); + } + + return $this->tags = array_values(array_unique($this->tags)); + } + + /** + * Returns list of filter objects + * + * @return Filter[]|array + */ + public function getFilters() + { + return $this->filters; + } + + /** + * Returns number of filters + * + * To implement interface Countable this returns the number of filters + * appended. + * + * @return integer + */ + public function count() + { + return count($this->getFilters()); + } + + /** + * IteratorAggregate iterator getter + * + * Returns an iterator to iterate over the appended filters. + * + * @return \Iterator the filter collection + */ + public function getIterator() + { + return new \ArrayIterator($this->getFilters()); + } +} diff --git a/interface/lib/classes/IDS/Filter.php b/interface/lib/classes/IDS/Filter.php new file mode 100644 index 000000000..573988f39 --- /dev/null +++ b/interface/lib/classes/IDS/Filter.php @@ -0,0 +1,175 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS; + +/** + * PHPIDS Filter object + * + * Each object of this class serves as a container for a specific filter. The + * object provides methods to get information about this particular filter and + * also to match an arbitrary string against it. + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + * @since Version 0.4 + */ +class Filter +{ + /** + * Filter rule + * + * @var string + */ + protected $rule; + + /** + * List of tags of the filter + * + * @var string[]|array + */ + protected $tags = array(); + + /** + * Filter impact level + * + * @var integer + */ + protected $impact = 0; + + /** + * Filter description + * + * @var string + */ + protected $description = ''; + + /** + * Constructor + * + * @param integer $id filter id + * @param string $rule filter rule + * @param string $description filter description + * @param string[]|array $tags list of tags + * @param integer $impact filter impact level + * + * @return \IDS\Filter + */ + public function __construct($id, $rule, $description, array $tags, $impact) + { + $this->id = $id; + $this->rule = $rule; + $this->tags = $tags; + $this->impact = $impact; + $this->description = $description; + } + + /** + * Matches a string against current filter + * + * Matches given string against the filter rule the specific object of this + * class represents + * + * @param string $input the string input to match + * + * @throws \InvalidArgumentException if argument is no string + * @return boolean + */ + public function match($input) + { + if (!is_string($input)) { + throw new \InvalidArgumentException( + 'Invalid argument. Expected a string, received ' . gettype($input) + ); + } + + return (bool) preg_match('/' . $this->getRule() . '/ms', strtolower($input)); + } + + /** + * Returns filter description + * + * @return string + */ + public function getDescription() + { + return $this->description; + } + + /** + * Return list of affected tags + * + * Each filter rule is concerned with a certain kind of attack vectors. + * This method returns those affected kinds. + * + * @return string[]|array + */ + public function getTags() + { + return $this->tags; + } + + /** + * Returns filter rule + * + * @return string + */ + public function getRule() + { + return $this->rule; + } + + /** + * Get filter impact level + * + * @return integer + */ + public function getImpact() + { + return $this->impact; + } + + /** + * Get filter ID + * + * @return integer + */ + public function getId() + { + return $this->id; + } +} diff --git a/interface/lib/classes/IDS/Filter/Storage.php b/interface/lib/classes/IDS/Filter/Storage.php new file mode 100644 index 000000000..f17549b27 --- /dev/null +++ b/interface/lib/classes/IDS/Filter/Storage.php @@ -0,0 +1,401 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS\Filter; + +use IDS\Init; +use IDS\Caching\CacheFactory; + +/** + * Filter Storage + * + * This class provides various default functions for gathering filter patterns + * to be used later on by the detection mechanism. You might extend this class + * to your requirements. + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +class Storage +{ + /** + * Filter source file + * + * @var string + */ + protected $source = null; + + /** + * Holds caching settings + * + * @var array + */ + protected $cacheSettings = null; + + /** + * Cache container + * + * @var object IDS_Caching wrapper + */ + protected $cache = null; + + /** + * Filter container + * + * @var array + */ + protected $filterSet = array(); + + /** + * Constructor + * + * Loads filters based on provided IDS_Init settings. + * + * @param object $init IDS_Init instance + * + * @throws \InvalidArgumentException if unsupported filter type is given + * @return void + */ + final public function __construct(Init $init) + { + if ($init->config) { + + $caching = isset($init->config['Caching']['caching']) ? $init->config['Caching']['caching'] : 'none'; + + $type = $init->config['General']['filter_type']; + $this->source = $init->getBasePath(). $init->config['General']['filter_path']; + + if ($caching && $caching !== 'none') { + $this->cacheSettings = $init->config['Caching']; + $this->cache = CacheFactory::factory($init, 'storage'); + } + + switch ($type) { + case 'xml': + return $this->getFilterFromXML(); + case 'json': + return $this->getFilterFromJson(); + default: + throw new \InvalidArgumentException('Unsupported filter type.'); + } + } + } + + /** + * Sets the filter array + * + * @param array $filterSet array containing multiple IDS_Filter instances + * + * @return object $this + */ + final public function setFilterSet($filterSet) + { + foreach ($filterSet as $filter) { + $this->addFilter($filter); + } + + return $this; + } + + /** + * Returns registered filters + * + * @return array + */ + final public function getFilterSet() + { + return $this->filterSet; + } + + /** + * Adds a filter + * + * @param object $filter IDS_Filter instance + * + * @return object $this + */ + final public function addFilter(\IDS\Filter $filter) + { + $this->filterSet[] = $filter; + + return $this; + } + + /** + * Checks if any filters are cached + * + * @return mixed $filters cached filters or false + */ + private function isCached() + { + $filters = false; + + if ($this->cacheSettings) { + if ($this->cache) { + $filters = $this->cache->getCache(); + } + } + + return $filters; + } + + /** + * Loads filters from XML using SimpleXML + * + * This function parses the provided source file and stores the result. + * If caching mode is enabled the result will be cached to increase + * the performance. + * + * @throws \InvalidArgumentException if source file doesn't exist + * @throws \RuntimeException if problems with fetching the XML data occur + * @return object $this + */ + public function getFilterFromXML() + { + if (extension_loaded('SimpleXML')) { + + /* + * See if filters are already available in the cache + */ + $filters = $this->isCached(); + + /* + * If they aren't, parse the source file + */ + if (!$filters) { + + if (!file_exists($this->source)) { + throw new \InvalidArgumentException( + sprintf('Invalid config: %s doesn\'t exist.', $this->source) + ); + } + + if (LIBXML_VERSION >= 20621) { + $filters = simplexml_load_file($this->source, null, LIBXML_COMPACT); + } else { + $filters = simplexml_load_file($this->source); + } + } + + /* + * In case we still don't have any filters loaded and exception + * will be thrown + */ + if (empty($filters)) { + throw new \RuntimeException( + 'XML data could not be loaded.' . + ' Make sure you specified the correct path.' + ); + } + + /* + * Now the storage will be filled with IDS_Filter objects + */ + $nocache = $filters instanceof \SimpleXMLElement; + + if ($nocache) + { + // build filters and cache them for re-use on next run + $data = array(); + $filters = $filters->filter; + + foreach ($filters as $filter) { + $id = (string) $filter->id; + $rule = (string) $filter->rule; + $impact = (string) $filter->impact; + $tags = array_values((array) $filter->tags); + $description = (string) $filter->description; + + $this->addFilter( + new \IDS\Filter( + $id, + $rule, + $description, + (array) $tags[0], + (int) $impact + ) + ); + + $data[] = array( + 'id' => $id, + 'rule' => $rule, + 'impact' => $impact, + 'tags' => $tags, + 'description' => $description + ); + } + + /* + * If caching is enabled, the fetched data will be cached + */ + if ($this->cacheSettings) { + $this->cache->setCache($data); + } + + } else { + + // build filters from cached content + $this->addFiltersFromArray($filters); + } + + return $this; + } + + throw new \RuntimeException('SimpleXML is not loaded.'); + } + + /** + * Loads filters from Json file using ext/Json + * + * This function parses the provided source file and stores the result. + * If caching mode is enabled the result will be cached to increase + * the performance. + * + * @throws \RuntimeException if problems with fetching the JSON data occur + * @return object $this + */ + public function getFilterFromJson() + { + + if (extension_loaded('Json')) { + + /* + * See if filters are already available in the cache + */ + $filters = $this->isCached(); + + /* + * If they aren't, parse the source file + */ + if (!$filters) { + if (!file_exists($this->source)) { + throw new \InvalidArgumentException( + sprintf('Invalid config: %s doesn\'t exist.', $this->source) + ); + } + $filters = json_decode(file_get_contents($this->source)); + } + + if (!$filters) { + throw new \RuntimeException('JSON data could not be loaded. Make sure you specified the correct path.'); + } + + /* + * Now the storage will be filled with IDS_Filter objects + */ + $nocache = !is_array($filters); + + if ($nocache) { + + // build filters and cache them for re-use on next run + $data = array(); + $filters = $filters->filters->filter; + + foreach ($filters as $filter) { + + $id = (string) $filter->id; + $rule = (string) $filter->rule; + $impact = (string) $filter->impact; + $tags = array_values((array) $filter->tags); + $description = (string) $filter->description; + + $this->addFilter( + new \IDS\Filter( + $id, + $rule, + $description, + (array) $tags[0], + (int) $impact + ) + ); + + $data[] = array( + 'id' => $id, + 'rule' => $rule, + 'impact' => $impact, + 'tags' => $tags, + 'description' => $description + ); + } + + /* + * If caching is enabled, the fetched data will be cached + */ + if ($this->cacheSettings) { + $this->cache->setCache($data); + } + + } else { + + // build filters from cached content + $this->addFiltersFromArray($filters); + } + + return $this; + } + + throw new \RuntimeException('json extension is not loaded.'); + } + + /** + * This functions adds an array of filters to the IDS_Storage object. + * Each entry within the array is expected to be an simple array containing all parts of the filter. + * + * @param array $filters + */ + private function addFiltersFromArray(array $filters) + { + foreach ($filters as $filter) { + + $id = $filter['id']; + $rule = $filter['rule']; + $impact = $filter['impact']; + $tags = $filter['tags']; + $description = $filter['description']; + + $this->addFilter( + new \IDS\Filter( + $id, + $rule, + $description, + (array) $tags[0], + (int) $impact + ) + ); + } + } +} diff --git a/interface/lib/classes/IDS/Init.php b/interface/lib/classes/IDS/Init.php new file mode 100644 index 000000000..1b6269adc --- /dev/null +++ b/interface/lib/classes/IDS/Init.php @@ -0,0 +1,174 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS; + +/** + * Framework initiation + * + * This class is used for the purpose to initiate the framework and inhabits + * functionality to parse the needed configuration file. + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Groupup + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + * @since Version 0.4 + */ +class Init +{ + /** + * Holds config settings + * + * @var array + */ + public $config = array(); + + /** + * Instance of this class depending on the supplied config file + * + * @var Init[]|array + * @static + */ + private static $instances = array(); + + /** + * Constructor + * + * Includes needed classes and parses the configuration file + * + * @param array $config + * + * @return \IDS\Init $this + */ + public function __construct(array $config = array()) + { + $this->config = $config; + } + + /** + * Returns an instance of this class. Also a PHP version check + * is being performed to avoid compatibility problems with PHP < 5.1.6 + * + * @param string|null $configPath the path to the config file + * + * @throws \InvalidArgumentException + * @return self + */ + public static function init($configPath = null) + { + if (!$configPath) { + return new self(); + } + if (!isset(self::$instances[$configPath])) { + if (!file_exists($configPath) || !is_readable($configPath)) { + throw new \InvalidArgumentException("Invalid config path '$configPath'"); + } + self::$instances[$configPath] = new static(parse_ini_file($configPath, true)); + } + + return self::$instances[$configPath]; + } + + /** + * This method checks if a base path is given and usage is set to true. + * If all that tests succeed the base path will be returned as a string - + * else null will be returned. + * + * @return string|null the base path or null + */ + public function getBasePath() + { + return (!empty($this->config['General']['base_path']) + && !empty($this->config['General']['use_base_path'])) + ? $this->config['General']['base_path'] : null; + } + + /** + * Merges new settings into the exsiting ones or overwrites them + * + * @param array $config the config array + * @param boolean $overwrite config overwrite flag + * + * @return void + */ + public function setConfig(array $config, $overwrite = false) + { + if ($overwrite) { + $this->config = $this->mergeConfig($this->config, $config); + } else { + $this->config = $this->mergeConfig($config, $this->config); + } + } + + /** + * Merge config hashes recursivly + * + * The algorithm merges configuration arrays recursively. If an element is + * an array in both, the values will be appended. If it is a scalar in both, + * the value will be replaced. + * + * @param array $current The legacy hash + * @param array $successor The hash which values count more when in doubt + * @return array Merged hash + */ + protected function mergeConfig($current, $successor) + { + if (is_array($current) and is_array($successor)) { + foreach ($successor as $key => $value) { + if (isset($current[$key]) + and is_array($value) + and is_array($current[$key])) { + + $current[$key] = $this->mergeConfig($current[$key], $value); + } else { + $current[$key] = $successor[$key]; + } + } + } + + return $current; + } + + /** + * Returns the config array + * + * @return array the config array + */ + public function getConfig() + { + return $this->config; + } +} diff --git a/interface/lib/classes/IDS/Monitor.php b/interface/lib/classes/IDS/Monitor.php new file mode 100644 index 000000000..f93e748e4 --- /dev/null +++ b/interface/lib/classes/IDS/Monitor.php @@ -0,0 +1,566 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS; + +use IDS\Filter\Storage; + +/** + * Monitoring engine + * + * This class represents the core of the frameworks attack detection mechanism + * and provides functions to scan incoming data for malicious appearing script + * fragments. + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +class Monitor +{ + /** + * Tags to define what to search for + * + * Accepted values are xss, csrf, sqli, dt, id, lfi, rfe, spam, dos + * + * @var array + */ + private $tags = null; + + /** + * Container for filter rules + * + * Holds an instance of Storage + * + * @var Storage + */ + private $storage = null; + + /** + * Scan keys switch + * + * Enabling this property will cause the monitor to scan both the key and + * the value of variables + * + * @var boolean + */ + public $scanKeys = false; + + /** + * Exception container + * + * Using this array it is possible to define variables that must not be + * scanned. Per default, utmz google analytics parameters are permitted. + * + * @var array + */ + private $exceptions = array(); + + /** + * Html container + * + * Using this array it is possible to define variables that legally + * contain html and have to be prepared before hitting the rules to + * avoid too many false alerts + * + * @var array + */ + private $html = array(); + + /** + * JSON container + * + * Using this array it is possible to define variables that contain + * JSON data - and should be treated as such + * + * @var array + */ + private $json = array(); + + /** + * Holds HTMLPurifier object + * + * @var \HTMLPurifier + */ + private $htmlPurifier = null; + + /** + * HTMLPurifier cache directory + * + * @var string + */ + private $HTMLPurifierCache = ''; + + /** + * This property holds the tmp JSON string from the _jsonDecodeValues() callback + * + * @var string + */ + private $tmpJsonString = ''; + + /** + * Constructor + * + * @throws \InvalidArgumentException When PHP version is less than what the library supports + * @throws \Exception + * @param Init $init instance of IDS_Init + * @param array|null $tags list of tags to which filters should be applied + * @return Monitor + */ + public function __construct(Init $init, array $tags = null) + { + $this->storage = new Storage($init); + $this->tags = $tags; + $this->scanKeys = $init->config['General']['scan_keys']; + $this->exceptions = isset($init->config['General']['exceptions']) ? $init->config['General']['exceptions'] : array(); + $this->html = isset($init->config['General']['html']) ? $init->config['General']['html'] : array(); + $this->json = isset($init->config['General']['json']) ? $init->config['General']['json'] : array(); + + if (isset($init->config['General']['HTML_Purifier_Cache'])) { + $this->HTMLPurifierCache = $init->getBasePath() . $init->config['General']['HTML_Purifier_Cache']; + } + + $tmpPath = $init->getBasePath() . $init->config['General']['tmp_path']; + + if (!is_writeable($tmpPath)) { + throw new \InvalidArgumentException("Please make sure the folder '$tmpPath' is writable"); + } + } + + /** + * Starts the scan mechanism + * + * @param array $request + * @return Report + */ + public function run(array $request) + { + $report = new Report; + foreach ($request as $key => $value) { + $report = $this->iterate($key, $value, $report); + } + return $report; + } + + /** + * Iterates through given data and delegates it to IDS_Monitor::_detect() in + * order to check for malicious appearing fragments + * + * @param string $key the former array key + * @param array|string $value the former array value + * @param Report $report + * @return Report + */ + private function iterate($key, $value, Report $report) + { + if (is_array($value)) { + foreach ($value as $subKey => $subValue) { + $this->iterate("$key.$subKey", $subValue, $report); + } + } elseif (is_string($value)) { + if ($filter = $this->detect($key, $value)) { + $report->addEvent(new Event($key, $value, $filter)); + } + } + return $report; + } + + /** + * Checks whether given value matches any of the supplied filter patterns + * + * @param mixed $key the key of the value to scan + * @param mixed $value the value to scan + * + * @return Filter[] array of filter(s) that matched the value + */ + private function detect($key, $value) + { + // define the pre-filter + $preFilter = '([^\w\s/@!?\.]+|(?:\./)|(?:@@\w+)|(?:\+ADw)|(?:union\s+select))i'; + + // to increase performance, only start detection if value isn't alphanumeric + if ((!$this->scanKeys || !$key || !preg_match($preFilter, $key)) && (!$value || !preg_match($preFilter, $value))) { + return array(); + } + + // check if this field is part of the exceptions + foreach ($this->exceptions as $exception) { + $matches = array(); + if (($exception === $key) || preg_match('((/.*/[^eE]*)$)', $exception, $matches) && isset($matches[1]) && preg_match($matches[1], $key)) { + return array(); + } + } + + // check for magic quotes and remove them if necessary + if (function_exists('get_magic_quotes_gpc') && !get_magic_quotes_gpc()) { + $value = preg_replace('(\\\(["\'/]))im', '$1', $value); + } + + // if html monitoring is enabled for this field - then do it! + if (is_array($this->html) && in_array($key, $this->html, true)) { + list($key, $value) = $this->purifyValues($key, $value); + } + + // check if json monitoring is enabled for this field + if (is_array($this->json) && in_array($key, $this->json, true)) { + list($key, $value) = $this->jsonDecodeValues($key, $value); + } + + // use the converter + $value = Converter::runAll($value); + $value = Converter::runCentrifuge($value, $this); + + // scan keys if activated via config + $key = $this->scanKeys ? Converter::runAll($key) : $key; + $key = $this->scanKeys ? Converter::runCentrifuge($key, $this) : $key; + + $filterSet = $this->storage->getFilterSet(); + + if ($tags = $this->tags) { + $filterSet = array_filter( + $filterSet, + function (Filter $filter) use ($tags) { + return (bool) array_intersect($tags, $filter->getTags()); + } + ); + } + + $scanKeys = $this->scanKeys; + $filterSet = array_filter( + $filterSet, + function (Filter $filter) use ($key, $value, $scanKeys) { + return $filter->match($value) || $scanKeys && $filter->match($key); + } + ); + + return $filterSet; + } + + + /** + * Purifies given key and value variables using HTMLPurifier + * + * This function is needed whenever there is variables for which HTML + * might be allowed like e.g. WYSIWYG post bodies. It will detect malicious + * code fragments and leaves harmless parts untouched. + * + * @param mixed $key + * @param mixed $value + * @since 0.5 + * @throws \Exception + * + * @return array tuple [key,value] + */ + private function purifyValues($key, $value) + { + /* + * Perform a pre-check if string is valid for purification + */ + if ($this->purifierPreCheck($key, $value)) { + if (!is_writeable($this->HTMLPurifierCache)) { + throw new \Exception($this->HTMLPurifierCache . ' must be writeable'); + } + + /** @var $config \HTMLPurifier_Config */ + $config = \HTMLPurifier_Config::createDefault(); + $config->set('Attr.EnableID', true); + $config->set('Cache.SerializerPath', $this->HTMLPurifierCache); + $config->set('Output.Newline', "\n"); + $this->htmlPurifier = new \HTMLPurifier($config); + + $value = preg_replace('([\x0b-\x0c])', ' ', $value); + $key = preg_replace('([\x0b-\x0c])', ' ', $key); + + $purifiedValue = $this->htmlPurifier->purify($value); + $purifiedKey = $this->htmlPurifier->purify($key); + + $plainValue = strip_tags($value); + $plainKey = strip_tags($key); + + $value = $value != $purifiedValue || $plainValue ? $this->diff($value, $purifiedValue, $plainValue) : null; + $key = $key != $purifiedKey ? $this->diff($key, $purifiedKey, $plainKey) : null; + } + return array($key, $value); + } + + /** + * This method makes sure no dangerous markup can be smuggled in + * attributes when HTML mode is switched on. + * + * If the precheck considers the string too dangerous for + * purification false is being returned. + * + * @param string $key + * @param string $value + * @since 0.6 + * + * @return boolean + */ + private function purifierPreCheck($key = '', $value = '') + { + /* + * Remove control chars before pre-check + */ + $tmpValue = preg_replace('/\p{C}/', null, $value); + $tmpKey = preg_replace('/\p{C}/', null, $key); + + $preCheck = '/<(script|iframe|applet|object)\W/i'; + return !(preg_match($preCheck, $tmpKey) || preg_match($preCheck, $tmpValue)); + } + + /** + * This method calculates the difference between the original + * and the purified markup strings. + * + * @param string $original the original markup + * @param string $purified the purified markup + * @param string $plain the string without html + * @since 0.5 + * + * @return string the difference between the strings + */ + private function diff($original, $purified, $plain) + { + /* + * deal with over-sensitive alt-attribute addition of the purifier + * and other common html formatting problems + */ + $purified = preg_replace('/\s+alt="[^"]*"/m', null, $purified); + $purified = preg_replace('/=?\s*"\s*"/m', null, $purified); + $original = preg_replace('/\s+alt="[^"]*"/m', null, $original); + $original = preg_replace('/=?\s*"\s*"/m', null, $original); + $original = preg_replace('/style\s*=\s*([^"])/m', 'style = "$1', $original); + + # deal with oversensitive CSS normalization + $original = preg_replace('/(?:([\w\-]+:)+\s*([^;]+;\s*))/m', '$1$2', $original); + + # strip whitespace between tags + $original = trim(preg_replace('/>\s*<', $original)); + $purified = trim(preg_replace('/>\s*<', $purified)); + + $original = preg_replace('/(=\s*(["\'`])[^>"\'`]*>[^>"\'`]*["\'`])/m', 'alt$1', $original); + + // no purified html is left + if (!$purified) { + return $original; + } + + // calculate the diff length + $length = mb_strlen($original) - mb_strlen($purified); + + /* + * Calculate the difference between the original html input + * and the purified string. + */ + $array1 = preg_split('/(?\s*<', $diff); + + // correct over-sensitively stripped bad html elements + $diff = preg_replace('/[^<](iframe|script|embed|object|applet|base|img|style)/m', '<$1', $diff ); + + return mb_strlen($diff) >= 4 ? $diff . $plain : null; + } + + /** + * This method prepares incoming JSON data for the PHPIDS detection + * process. It utilizes _jsonConcatContents() as callback and returns a + * string version of the JSON data structures. + * + * @param string $key + * @param string $value + * @since 0.5.3 + * + * @return array tuple [key,value] + */ + private function jsonDecodeValues($key, $value) + { + $decodedKey = json_decode($key); + $decodedValue = json_decode($value); + + if ($decodedValue && is_array($decodedValue) || is_object($decodedValue)) { + array_walk_recursive($decodedValue, array($this, 'jsonConcatContents')); + $value = $this->tmpJsonString; + } else { + $this->tmpJsonString .= " " . $decodedValue . "\n"; + } + + if ($decodedKey && is_array($decodedKey) || is_object($decodedKey)) { + array_walk_recursive($decodedKey, array($this, 'jsonConcatContents')); + $key = $this->tmpJsonString; + } else { + $this->tmpJsonString .= " " . $decodedKey . "\n"; + } + + return array($key, $value); + } + + /** + * This is the callback used in _jsonDecodeValues(). The method + * concatenates key and value and stores them in $this->tmpJsonString. + * + * @param mixed $key + * @param mixed $value + * @since 0.5.3 + * + * @return void + */ + private function jsonConcatContents($key, $value) + { + if (is_string($key) && is_string($value)) { + $this->tmpJsonString .= $key . " " . $value . "\n"; + } else { + $this->jsonDecodeValues(json_encode($key), json_encode($value)); + } + } + + /** + * Sets exception array + * + * @param string[]|string $exceptions the thrown exceptions + * + * @return void + */ + public function setExceptions($exceptions) + { + $this->exceptions = (array) $exceptions; + } + + /** + * Returns exception array + * + * @return array + */ + public function getExceptions() + { + return $this->exceptions; + } + + /** + * Sets html array + * + * @param string[]|string $html the fields containing html + * @since 0.5 + * + * @return void + */ + public function setHtml($html) + { + $this->html = (array) $html; + } + + /** + * Adds a value to the html array + * + * @since 0.5 + * + * @param mixed $value + * @return void + */ + public function addHtml($value) + { + $this->html[] = $value; + } + + /** + * Returns html array + * + * @since 0.5 + * + * @return array the fields that contain allowed html + */ + public function getHtml() + { + return $this->html; + } + + /** + * Sets json array + * + * @param string[]|string $json the fields containing json + * @since 0.5.3 + * + * @return void + */ + public function setJson($json) + { + $this->json = (array) $json; + } + + /** + * Adds a value to the json array + * + * @param string $value the value containing JSON data + * @since 0.5.3 + * + * @return void + */ + public function addJson($value) + { + $this->json[] = $value; + } + + /** + * Returns json array + * + * @since 0.5.3 + * + * @return array the fields that contain json + */ + public function getJson() + { + return $this->json; + } + + /** + * Returns storage container + * + * @return array + */ + public function getStorage() + { + return $this->storage; + } +} diff --git a/interface/lib/classes/IDS/Report.php b/interface/lib/classes/IDS/Report.php new file mode 100644 index 000000000..daebfc030 --- /dev/null +++ b/interface/lib/classes/IDS/Report.php @@ -0,0 +1,339 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS; + +/** + * PHPIDS report object + * + * The report objects collects a number of events and thereby presents the + * detected results. It provides a convenient API to work with the results. + * + * Note that this class implements Countable, IteratorAggregate and + * a __toString() method + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +class Report implements \Countable, \IteratorAggregate +{ + /** + * Event container + * + * @var Event[]|array + */ + protected $events = array(); + + /** + * List of affected tags + * + * This list of tags is collected from the collected event objects on + * demand when IDS_Report->getTags() is called + * + * @var string[]|array + */ + protected $tags = array(); + + /** + * Impact level + * + * The impact level is calculated on demand by adding the results of the + * event objects on IDS\Report->getImpact() + * + * @var integer + */ + protected $impact = 0; + + /** + * Centrifuge data + * + * This variable - initiated as an empty array - carries all information + * about the centrifuge data if available + * + * @var array + */ + protected $centrifuge = array(); + + /** + * Constructor + * + * @param array $events the events the report should include + * + * @return Report + */ + public function __construct(array $events = null) + { + foreach ((array) $events as $event) { + $this->addEvent($event); + } + } + + /** + * Adds an IDS_Event object to the report + * + * @param Event $event IDS_Event + * + * @return self $this + */ + public function addEvent(Event $event) + { + $this->clear(); + $this->events[$event->getName()] = $event; + + return $this; + } + + /** + * Get event by name + * + * In most cases an event is identified by the key of the variable that + * contained maliciously appearing content + * + * @param string|integer $name the event name + * + * @throws \InvalidArgumentException if argument is invalid + * @return Event|null IDS_Event object or false if the event does not exist + */ + public function getEvent($name) + { + if (!is_scalar($name)) { + throw new \InvalidArgumentException('Invalid argument type given'); + } + + return $this->hasEvent($name) ? $this->events[$name] : null; + } + + /** + * Returns list of events + * + * @return string[]|array + */ + + public function getEvents() + { + return $this->events; + } + + /** + * Returns list of affected tags + * + * @return string[]|array + */ + public function getTags() + { + if (!$this->tags) { + $this->tags = array(); + + foreach ($this->events as $event) { + $this->tags = array_merge($this->tags, $event->getTags()); + } + + $this->tags = array_values(array_unique($this->tags)); + } + + return $this->tags; + } + + /** + * Returns total impact + * + * Each stored IDS_Event object and its IDS_Filter sub-object are called + * to calculate the overall impact level of this request + * + * @return integer + */ + public function getImpact() + { + if (!$this->impact) { + $this->impact = 0; + foreach ($this->events as $event) { + $this->impact += $event->getImpact(); + } + } + + return $this->impact; + } + + /** + * Checks if a specific event with given name exists + * + * @param string|integer $name the event name + * + * @throws \InvalidArgumentException if argument is illegal + * @return boolean + */ + public function hasEvent($name) + { + if (!is_scalar($name)) { + throw new \InvalidArgumentException('Invalid argument given'); + } + + return isset($this->events[$name]); + } + + /** + * Returns total amount of events + * + * @return integer + */ + public function count() + { + return count($this->events); + } + + /** + * Return iterator object + * + * In order to provide the possibility to directly iterate over the + * IDS_Event object the IteratorAggregate is implemented. One can easily + * use foreach() to iterate through all stored IDS_Event objects. + * + * @return \Iterator the event collection + */ + public function getIterator() + { + return new \ArrayIterator($this->events); + } + + /** + * Checks if any events are registered + * + * @return boolean + */ + public function isEmpty() + { + return empty($this->events); + } + + /** + * Clears calculated/collected values + * + * @return void + */ + protected function clear() + { + $this->impact = 0; + $this->tags = array(); + } + + /** + * This method returns the centrifuge property or null if not + * filled with data + * + * @return array + */ + public function getCentrifuge() + { + return $this->centrifuge; + } + + /** + * This method sets the centrifuge property + * + * @param array $centrifuge the centrifuge data + * + * @throws \InvalidArgumentException if argument is illegal + * @return void + */ + public function setCentrifuge(array $centrifuge = array()) + { + if (!$centrifuge) { + throw new \InvalidArgumentException('Empty centrifuge given'); + } + $this->centrifuge = $centrifuge; + } + + /** + * Directly outputs all available information + * + * @return string + */ + public function __toString() + { + $output = ''; + if (!$this->isEmpty()) { + $output .= vsprintf( + "Total impact: %d
\nAffected tags: %s
\n", + array( + $this->getImpact(), + implode(', ', $this->getTags()) + ) + ); + + foreach ($this->events as $event) { + $output .= vsprintf( + "
\nVariable: %s | Value: %s
\nImpact: %d | Tags: %s
\n", + array( + htmlspecialchars($event->getName()), + htmlspecialchars($event->getValue()), + $event->getImpact(), + implode(', ', $event->getTags()) + ) + ); + + foreach ($event as $filter) { + $output .= vsprintf( + "Description: %s | Tags: %s | ID %s
\n", + array( + $filter->getDescription(), + implode(', ', $filter->getTags()), + $filter->getId() + ) + ); + } + } + + $output .= '
'; + + if ($centrifuge = $this->getCentrifuge()) { + $output .= vsprintf( + "Centrifuge detection data
Threshold: %s
Ratio: %s", + array( + isset($centrifuge['threshold']) && $centrifuge['threshold'] ? $centrifuge['threshold'] : '---', + isset($centrifuge['ratio']) && $centrifuge['ratio'] ? $centrifuge['ratio'] : '---' + ) + ); + if (isset($centrifuge['converted'])) { + $output .= '
Converted: ' . $centrifuge['converted']; + } + $output .= "

\n"; + } + } + + return $output; + } +} diff --git a/interface/lib/classes/IDS/Version.php b/interface/lib/classes/IDS/Version.php new file mode 100644 index 000000000..b32438ffa --- /dev/null +++ b/interface/lib/classes/IDS/Version.php @@ -0,0 +1,49 @@ +. + * + * PHP version 5.1.6+ + * + * @category Security + * @package PHPIDS + * @author Mario Heiderich + * @author Christian Matthies + * @author Lars Strojny + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +namespace IDS; + +/** + * PHPIDS version class + * + * @category Security + * @package PHPIDS + * @author Christian Matthies + * @author Mario Heiderich + * @author Lars Strojny + * @copyright 2007-2009 The PHPIDS Group + * @license http://www.gnu.org/licenses/lgpl.html LGPL + * @link http://php-ids.org/ + */ +abstract class Version +{ + const VERSION = 'master'; +} diff --git a/interface/lib/classes/IDS/default_filter.json b/interface/lib/classes/IDS/default_filter.json new file mode 100644 index 000000000..c158ded57 --- /dev/null +++ b/interface/lib/classes/IDS/default_filter.json @@ -0,0 +1,933 @@ +{ + "filters":{ + "filter":[ + { + "id":"1", + "rule":"(?:\"[^\"]*[^-]?>)|(?:[^\\w\\s]\\s*\\\/>)|(?:>\")", + "description":"Finds html breaking injections including whitespace attacks", + "tags":{ + "tag":[ + "xss", + "csrf" + ] + }, + "impact":"4" + }, + { + "id":"2", + "rule":"(?:\"+.*[<=]\\s*\"[^\"]+\")|(?:\"\\s*\\w+\\s*=)|(?:>\\w=\\\/)|(?:#.+\\)[\"\\s]*>)|(?:\"\\s*(?:src|style|on\\w+)\\s*=\\s*\")|(?:[^\"]?\"[,;\\s]+\\w*[\\[\\(])", + "description":"Finds attribute breaking injections including whitespace attacks", + "tags":{ + "tag":[ + "xss", + "csrf" + ] + }, + "impact":"4" + }, + { + "id":"3", + "rule":"(?:^>[\\w\\s]*<\\\/?\\w{2,}>)", + "description":"Finds unquoted attribute breaking injections", + "tags":{ + "tag":[ + "xss", + "csrf" + ] + }, + "impact":"2" + }, + { + "id":"4", + "rule":"(?:[+\\\/]\\s*name[\\W\\d]*[)+])|(?:;\\W*url\\s*=)|(?:[^\\w\\s\\\/?:>]\\s*(?:location|referrer|name)\\s*[^\\\/\\w\\s-])", + "description":"Detects url-, name-, JSON, and referrer-contained payload attacks", + "tags":{ + "tag":[ + "xss", + "csrf" + ] + }, + "impact":"5" + }, + { + "id":"5", + "rule":"(?:\\W\\s*hash\\s*[^\\w\\s-])|(?:\\w+=\\W*[^,]*,[^\\s(]\\s*\\()|(?:\\?\"[^\\s\"]\":)|(?:(?]*)t(?!rong))|(?:\\)|(?:[^*]\\\/\\*|\\*\\\/[^*])|(?:(?:[\\W\\d]#|--|{)$)|(?:\\\/{3,}.*$)|(?:)", + "description":"Detects common comment types", + "tags":{ + "tag":[ + "xss", + "csrf", + "id" + ] + }, + "impact":"3" + }, + { + "id":"37", + "rule":"(?:\\~])", + "description":"Detects conditional SQL injection attempts", + "tags":{ + "tag":[ + "sqli", + "id", + "lfi" + ] + }, + "impact":"6" + }, + { + "id":"42", + "rule":"(?:\"\\s*or\\s*\"?\\d)|(?:\\\\x(?:23|27|3d))|(?:^.?\"$)|(?:(?:^[\"\\\\]*(?:[\\d\"]+|[^\"]+\"))+\\s*(?:n?and|x?or|not|\\|\\||\\&\\&)\\s*[\\w\"[+&!@(),.-])|(?:[^\\w\\s]\\w+\\s*[|-]\\s*\"\\s*\\w)|(?:@\\w+\\s+(and|or)\\s*[\"\\d]+)|(?:@[\\w-]+\\s(and|or)\\s*[^\\w\\s])|(?:[^\\w\\s:]\\s*\\d\\W+[^\\w\\s]\\s*\".)|(?:\\Winformation_schema|table_name\\W)", + "description":"Detects classic SQL injection probings 1\/2", + "tags":{ + "tag":[ + "sqli", + "id", + "lfi" + ] + }, + "impact":"6" + }, + { + "id":"43", + "rule":"(?:\"\\s*\\*.+(?:or|id)\\W*\"\\d)|(?:\\^\")|(?:^[\\w\\s\"-]+(?<=and\\s)(?<=or\\s)(?<=xor\\s)(?<=nand\\s)(?<=not\\s)(?<=\\|\\|)(?<=\\&\\&)\\w+\\()|(?:\"[\\s\\d]*[^\\w\\s]+\\W*\\d\\W*.*[\"\\d])|(?:\"\\s*[^\\w\\s?]+\\s*[^\\w\\s]+\\s*\")|(?:\"\\s*[^\\w\\s]+\\s*[\\W\\d].*(?:#|--))|(?:\".*\\*\\s*\\d)|(?:\"\\s*or\\s[^\\d]+[\\w-]+.*\\d)|(?:[()*<>%+-][\\w-]+[^\\w\\s]+\"[^,])", + "description":"Detects classic SQL injection probings 2\/2", + "tags":{ + "tag":[ + "sqli", + "id", + "lfi" + ] + }, + "impact":"6" + }, + { + "id":"44", + "rule":"(?:\\d\"\\s+\"\\s+\\d)|(?:^admin\\s*\"|(\\\/\\*)+\"+\\s?(?:--|#|\\\/\\*|{)?)|(?:\"\\s*or[\\w\\s-]+\\s*[+<>=(),-]\\s*[\\d\"])|(?:\"\\s*[^\\w\\s]?=\\s*\")|(?:\"\\W*[+=]+\\W*\")|(?:\"\\s*[!=|][\\d\\s!=+-]+.*[\"(].*$)|(?:\"\\s*[!=|][\\d\\s!=]+.*\\d+$)|(?:\"\\s*like\\W+[\\w\"(])|(?:\\sis\\s*0\\W)|(?:where\\s[\\s\\w\\.,-]+\\s=)|(?:\"[<>~]+\")", + "description":"Detects basic SQL authentication bypass attempts 1\/3", + "tags":{ + "tag":[ + "sqli", + "id", + "lfi" + ] + }, + "impact":"7" + }, + { + "id":"45", + "rule":"(?:union\\s*(?:all|distinct|[(!@]*)\\s*[([]*\\s*select)|(?:\\w+\\s+like\\s+\\\")|(?:like\\s*\"\\%)|(?:\"\\s*like\\W*[\"\\d])|(?:\"\\s*(?:n?and|x?or|not |\\|\\||\\&\\&)\\s+[\\s\\w]+=\\s*\\w+\\s*having)|(?:\"\\s*\\*\\s*\\w+\\W+\")|(?:\"\\s*[^?\\w\\s=.,;)(]+\\s*[(@\"]*\\s*\\w+\\W+\\w)|(?:select\\s*[\\[\\]()\\s\\w\\.,\"-]+from)|(?:find_in_set\\s*\\()", + "description":"Detects basic SQL authentication bypass attempts 2\/3", + "tags":{ + "tag":[ + "sqli", + "id", + "lfi" + ] + }, + "impact":"7" + }, + { + "id":"46", + "rule":"(?:in\\s*\\(+\\s*select)|(?:(?:n?and|x?or|not |\\|\\||\\&\\&)\\s+[\\s\\w+]+(?:regexp\\s*\\(|sounds\\s+like\\s*\"|[=\\d]+x))|(\"\\s*\\d\\s*(?:--|#))|(?:\"[%&<>^=]+\\d\\s*(=|or))|(?:\"\\W+[\\w+-]+\\s*=\\s*\\d\\W+\")|(?:\"\\s*is\\s*\\d.+\"?\\w)|(?:\"\\|?[\\w-]{3,}[^\\w\\s.,]+\")|(?:\"\\s*is\\s*[\\d.]+\\s*\\W.*\")", + "description":"Detects basic SQL authentication bypass attempts 3\/3", + "tags":{ + "tag":[ + "sqli", + "id", + "lfi" + ] + }, + "impact":"7" + }, + { + "id":"47", + "rule":"(?:[\\d\\W]\\s+as\\s*[\"\\w]+\\s*from)|(?:^[\\W\\d]+\\s*(?:union|select|create|rename|truncate|load|alter|delete|update|insert|desc))|(?:(?:select|create|rename|truncate|load|alter|delete|update|insert|desc)\\s+(?:(?:group_)concat|char|load_file)\\s?\\(?)|(?:end\\s*\\);)|(\"\\s+regexp\\W)|(?:[\\s(]load_file\\s*\\()", + "description":"Detects concatenated basic SQL injection and SQLLFI attempts", + "tags":{ + "tag":[ + "sqli", + "id", + "lfi" + ] + }, + "impact":"5" + }, + { + "id":"48", + "rule":"(?:@.+=\\s*\\(\\s*select)|(?:\\d+\\s*or\\s*\\d+\\s*[\\-+])|(?:\\\/\\w+;?\\s+(?:having|and|or|select)\\W)|(?:\\d\\s+group\\s+by.+\\()|(?:(?:;|#|--)\\s*(?:drop|alter))|(?:(?:;|#|--)\\s*(?:update|insert)\\s*\\w{2,})|(?:[^\\w]SET\\s*@\\w+)|(?:(?:n?and|x?or|not |\\|\\||\\&\\&)[\\s(]+\\w+[\\s)]*[!=+]+[\\s\\d]*[\"=()])", + "description":"Detects chained SQL injection attempts 1\/2", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"6" + }, + { + "id":"49", + "rule":"(?:\"\\s+and\\s*=\\W)|(?:\\(\\s*select\\s*\\w+\\s*\\()|(?:\\*\\\/from)|(?:\\+\\s*\\d+\\s*\\+\\s*@)|(?:\\w\"\\s*(?:[-+=|@]+\\s*)+[\\d(])|(?:coalesce\\s*\\(|@@\\w+\\s*[^\\w\\s])|(?:\\W!+\"\\w)|(?:\";\\s*(?:if|while|begin))|(?:\"[\\s\\d]+=\\s*\\d)|(?:order\\s+by\\s+if\\w*\\s*\\()|(?:[\\s(]+case\\d*\\W.+[tw]hen[\\s(])", + "description":"Detects chained SQL injection attempts 2\/2", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"6" + }, + { + "id":"50", + "rule":"(?:(select|;)\\s+(?:benchmark|if|sleep)\\s*?\\(\\s*\\(?\\s*\\w+)", + "description":"Detects SQL benchmark and sleep injection attempts including conditional queries", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"4" + }, + { + "id":"51", + "rule":"(?:create\\s+function\\s+\\w+\\s+returns)|(?:;\\s*(?:select|create|rename|truncate|load|alter|delete|update|insert|desc)\\s*[\\[(]?\\w{2,})", + "description":"Detects MySQL UDF injection and other data\/structure manipulation attempts", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"6" + }, + { + "id":"52", + "rule":"(?:alter\\s*\\w+.*character\\s+set\\s+\\w+)|(\";\\s*waitfor\\s+time\\s+\")|(?:\";.*:\\s*goto)", + "description":"Detects MySQL charset switch and MSSQL DoS attempts", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"6" + }, + { + "id":"53", + "rule":"(?:procedure\\s+analyse\\s*\\()|(?:;\\s*(declare|open)\\s+[\\w-]+)|(?:create\\s+(procedure|function)\\s*\\w+\\s*\\(\\s*\\)\\s*-)|(?:declare[^\\w]+[@#]\\s*\\w+)|(exec\\s*\\(\\s*@)", + "description":"Detects MySQL and PostgreSQL stored procedure\/function injections", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"7" + }, + { + "id":"54", + "rule":"(?:select\\s*pg_sleep)|(?:waitfor\\s*delay\\s?\"+\\s?\\d)|(?:;\\s*shutdown\\s*(?:;|--|#|\\\/\\*|{))", + "description":"Detects Postgres pg_sleep injection, waitfor delay attacks and database shutdown attempts", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"5" + }, + { + "id":"55", + "rule":"(?:\\sexec\\s+xp_cmdshell)|(?:\"\\s*!\\s*[\"\\w])|(?:from\\W+information_schema\\W)|(?:(?:(?:current_)?user|database|schema|connection_id)\\s*\\([^\\)]*)|(?:\";?\\s*(?:select|union|having)\\s*[^\\s])|(?:\\wiif\\s*\\()|(?:exec\\s+master\\.)|(?:union select @)|(?:union[\\w(\\s]*select)|(?:select.*\\w?user\\()|(?:into[\\s+]+(?:dump|out)file\\s*\")", + "description":"Detects MSSQL code execution and information gathering attempts", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"5" + }, + { + "id":"56", + "rule":"(?:merge.*using\\s*\\()|(execute\\s*immediate\\s*\")|(?:\\W+\\d*\\s*having\\s*[^\\s\\-])|(?:match\\s*[\\w(),+-]+\\s*against\\s*\\()", + "description":"Detects MATCH AGAINST, MERGE, EXECUTE IMMEDIATE and HAVING injections", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"5" + }, + { + "id":"57", + "rule":"(?:,.*[)\\da-f\"]\"(?:\".*\"|\\Z|[^\"]+))|(?:\\Wselect.+\\W*from)|((?:select|create|rename|truncate|load|alter|delete|update|insert|desc)\\s*\\(\\s*space\\s*\\()", + "description":"Detects MySQL comment-\/space-obfuscated injections and backtick termination", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"5" + }, + { + "id":"58", + "rule":"(?:@[\\w-]+\\s*\\()|(?:]\\s*\\(\\s*[\"!]\\s*\\w)|(?:<[?%](?:php)?.*(?:[?%]>)?)|(?:;[\\s\\w|]*\\$\\w+\\s*=)|(?:\\$\\w+\\s*=(?:(?:\\s*\\$?\\w+\\s*[(;])|\\s*\".*\"))|(?:;\\s*\\{\\W*\\w+\\s*\\()", + "description":"Detects code injection attempts 1\/3", + "tags":{ + "tag":[ + "id", + "rfe", + "lfi" + ] + }, + "impact":"7" + }, + { + "id":"59", + "rule":"(?:(?:[;]+|(<[?%](?:php)?)).*(?:define|eval|file_get_contents|include|require|require_once|set|shell_exec|phpinfo|system|passthru|preg_\\w+|execute)\\s*[\"(@])", + "description":"Detects code injection attempts 2\/3", + "tags":{ + "tag":[ + "id", + "rfe", + "lfi" + ] + }, + "impact":"7" + }, + { + "id":"60", + "rule":"(?:(?:[;]+|(<[?%](?:php)?)).*[^\\w](?:echo|print|print_r|var_dump|[fp]open))|(?:;\\s*rm\\s+-\\w+\\s+)|(?:;.*{.*\\$\\w+\\s*=)|(?:\\$\\w+\\s*\\[\\]\\s*=\\s*)", + "description":"Detects code injection attempts 3\/3", + "tags":{ + "tag":[ + "id", + "rfe", + "lfi" + ] + }, + "impact":"7" + }, + { + "id":"62", + "rule":"(?:function[^(]*\\([^)]*\\))|(?:(?:delete|void|throw|instanceof|new|typeof)[^\\w.]+\\w+\\s*[([])|([)\\]]\\s*\\.\\s*\\w+\\s*=)|(?:\\(\\s*new\\s+\\w+\\s*\\)\\.)", + "description":"Detects common function declarations and special JS operators", + "tags":{ + "tag":[ + "id", + "rfe", + "lfi" + ] + }, + "impact":"5" + }, + { + "id":"63", + "rule":"(?:[\\w.-]+@[\\w.-]+%(?:[01][\\db-ce-f])+\\w+:)", + "description":"Detects common mail header injections", + "tags":{ + "tag":[ + "id", + "spam" + ] + }, + "impact":"5" + }, + { + "id":"64", + "rule":"(?:\\.pl\\?\\w+=\\w?\\|\\w+;)|(?:\\|\\(\\w+=\\*)|(?:\\*\\s*\\)+\\s*;)", + "description":"Detects perl echo shellcode injection and LDAP vectors", + "tags":{ + "tag":[ + "lfi", + "rfe" + ] + }, + "impact":"5" + }, + { + "id":"65", + "rule":"(?:(^|\\W)const\\s+[\\w\\-]+\\s*=)|(?:(?:do|for|while)\\s*\\([^;]+;+\\))|(?:(?:^|\\W)on\\w+\\s*=[\\w\\W]*(?:on\\w+|alert|eval|print|confirm|prompt))|(?:groups=\\d+\\(\\w+\\))|(?:(.)\\1{128,})", + "description":"Detects basic XSS DoS attempts", + "tags":{ + "tag":[ + "rfe", + "dos" + ] + }, + "impact":"5" + }, + { + "id":"67", + "rule":"(?:\\({2,}\\+{2,}:{2,})|(?:\\({2,}\\+{2,}:+)|(?:\\({3,}\\++:{2,})|(?:\\$\\[!!!\\])", + "description":"Detects unknown attack vectors based on PHPIDS Centrifuge detection", + "tags":{ + "tag":[ + "xss", + "csrf", + "id", + "rfe", + "lfi" + ] + }, + "impact":"7" + }, + { + "id":"68", + "rule":"(?:[\\s\\\/\"]+[-\\w\\\/\\\\\\*]+\\s*=.+(?:\\\/\\s*>))", + "description":"Finds attribute breaking injections including obfuscated attributes", + "tags":{ + "tag":[ + "xss", + "csrf" + ] + }, + "impact":"4" + }, + { + "id":"69", + "rule":"(?:(?:msgbox|eval)\\s*\\+|(?:language\\s*=\\*vbscript))", + "description":"Finds basic VBScript injection attempts", + "tags":{ + "tag":[ + "xss", + "csrf" + ] + }, + "impact":"4" + }, + { + "id":"70", + "rule":"(?:\\[\\$(?:ne|eq|lte?|gte?|n?in|mod|all|size|exists|type|slice|or)\\])", + "description":"Finds basic MongoDB SQL injection attempts", + "tags":{ + "tag":"sqli" + }, + "impact":"4" + }, + { + "id":"71", + "rule":"(?:[\\s\\d\\\/\"]+(?:on\\w+|style|poster|background)=[$\"\\w])|(?:-type\\s*:\\s*multipart)", + "description":"Finds malicious attribute injection attempts and MHTML attacks", + "tags":{ + "tag":[ + "xss", + "csrf" + ] + }, + "impact":"6" + }, + { + "id":"72", + "rule":"(?:(sleep\\((\\s*)(\\d*)(\\s*)\\)|benchmark\\((.*)\\,(.*)\\)))", + "description":"Detects blind sqli tests using sleep() or benchmark().", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"4" + }, + { + "id":"73", + "rule":"(?:(\\%SYSTEMROOT\\%))", + "description":"An attacker is trying to locate a file to read or write.", + "tags":{ + "tag":[ + "files", + "id" + ] + }, + "impact":"4" + }, + { + "id":"75", + "rule":"(?:(((.*)\\%[c|d|i|e|f|g|o|s|u|x|p|n]){8}))", + "description":"Looking for a format string attack", + "tags":{ + "tag":"format string" + }, + "impact":"4" + }, + { + "id":"76", + "rule":"(?:(union(.*)select(.*)from))", + "description":"Looking for basic sql injection. Common attack string for mysql, oracle and others.", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"3" + }, + { + "id":"77", + "rule":"(?:^(-0000023456|4294967295|4294967296|2147483648|2147483647|0000012345|-2147483648|-2147483649|0000023456|2.2250738585072007e-308|1e309)$)", + "description":"Looking for integer overflow attacks, these are taken from skipfish, except 2.2250738585072007e-308 is the \"magic number\" crash", + "tags":{ + "tag":[ + "sqli", + "id" + ] + }, + "impact":"3" + }, + { + "id":"78", + "rule":"(?:%23.*?%0a)", + "description":"Detects SQL comment filter evasion", + "tags":{ + "tag":[ + "format string" + ] + }, + "impact":"4" + } + ] + } +} diff --git a/interface/lib/classes/IDS/default_filter.xml b/interface/lib/classes/IDS/default_filter.xml new file mode 100644 index 000000000..fdd9cefbe --- /dev/null +++ b/interface/lib/classes/IDS/default_filter.xml @@ -0,0 +1,787 @@ + + + 1 + )|(?:[^\w\s]\s*\/>)|(?:>")]]> + Finds html breaking injections including whitespace attacks + + xss + csrf + + 4 + + + 2 + \w=\/)|(?:#.+\)["\s]*>)|(?:"\s*(?:src|style|on\w+)\s*=\s*")|(?:[^"]?"[,;\s]+\w*[\[\(])]]> + Finds attribute breaking injections including whitespace attacks + + xss + csrf + + 4 + + + 3 + [\w\s]*<\/?\w{2,}>)]]> + Finds unquoted attribute breaking injections + + xss + csrf + + 2 + + + 4 + ]\s*(?:location|referrer|name)\s*[^\/\w\s-])]]> + Detects url-, name-, JSON, and referrer-contained payload attacks + + xss + csrf + + 5 + + + 5 + + Detects hash-contained xss payload attacks, setter usage and property overloading + + xss + csrf + + 5 + + + 6 + + Detects self contained xss via with(), common loops and regex to string conversion + + xss + csrf + + 5 + + + 7 + + Detects JavaScript with(), ternary operators and XML predicate attacks + + xss + csrf + + 5 + + + 8 + + Detects self-executing JavaScript functions + + xss + csrf + + 5 + + + 9 + + Detects the IE octal, hex and unicode entities + + xss + csrf + + 2 + + + 10 + + Detects basic directory traversal + + dt + id + lfi + + 5 + + + 11 + + Detects specific directory and path traversal + + dt + id + lfi + + 5 + + + 12 + + Detects etc/passwd inclusion attempts + + dt + id + lfi + + 5 + + + 13 + + Detects halfwidth/fullwidth encoded unicode HTML breaking attempts + + xss + csrf + + 3 + + + 14 + + Detects possible includes, VBSCript/JScript encodeed and packed functions + + xss + csrf + id + rfe + + 5 + + + 15 + + Detects JavaScript DOM/miscellaneous properties and methods + + xss + csrf + id + rfe + + 6 + + + 16 + + Detects possible includes and typical script methods + + xss + csrf + id + rfe + + 5 + + + 17 + + Detects JavaScript object properties and methods + + xss + csrf + id + rfe + + 4 + + + 18 + + Detects JavaScript array properties and methods + + xss + csrf + id + rfe + + 4 + + + 19 + + Detects JavaScript string properties and methods + + xss + csrf + id + rfe + + 4 + + + 20 + + Detects JavaScript language constructs + + xss + csrf + id + rfe + + 4 + + + 21 + + Detects very basic XSS probings + + xss + csrf + id + rfe + + 3 + + + 22 + + Detects advanced XSS probings via Script(), RexExp, constructors and XML namespaces + + xss + csrf + id + rfe + + 5 + + + 23 + + Detects JavaScript location/document property access and window access obfuscation + + xss + csrf + + 5 + + + 24 + + Detects basic obfuscated JavaScript script injections + + xss + csrf + + 5 + + + 25 + + Detects obfuscated JavaScript script injections + + xss + csrf + + 5 + + + 26 + + Detects JavaScript cookie stealing and redirection attempts + + xss + csrf + + 4 + + + 27 + + Detects data: URL injections, VBS injections and common URI schemes + + xss + rfe + + 5 + + + 28 + + Detects IE firefoxurl injections, cache poisoning attempts and local file inclusion/execution + + xss + rfe + lfi + csrf + + 5 + + + 29 + + Detects bindings and behavior injections + + xss + csrf + rfe + + 4 + + + 30 + + Detects common XSS concatenation patterns 1/2 + + xss + csrf + id + rfe + + 4 + + + 31 + + Detects common XSS concatenation patterns 2/2 + + xss + csrf + id + rfe + + 4 + + + 32 + + Detects possible event handlers + + xss + csrf + + 4 + + + 33 + ]*)t(?!rong))|(?:\ + Detects obfuscated script tags and XML wrapped HTML + + xss + + 4 + + + 34 + + Detects attributes in closing tags and conditional compilation tokens + + xss + csrf + + 4 + + + 35 + )|(?:[^*]\/\*|\*\/[^*])|(?:(?:[\W\d]#|--|{)$)|(?:\/{3,}.*$)|(?:)]]> + Detects common comment types + + xss + csrf + id + + 3 + + + 37 + + Detects base href injections and XML entity injections + + xss + csrf + id + + 5 + + + 38 + + Detects possibly malicious html elements including some attributes + + xss + csrf + id + rfe + lfi + + 4 + + + 39 + + Detects nullbytes and other dangerous characters + + id + rfe + xss + + 5 + + + 40 + + Detects MySQL comments, conditions and ch(a)r injections + + sqli + id + lfi + + 6 + + + 41 + ~])]]> + Detects conditional SQL injection attempts + + sqli + id + lfi + + 6 + + + 42 + + Detects classic SQL injection probings 1/2 + + sqli + id + lfi + + 6 + + + 43 + %+-][\w-]+[^\w\s]+"[^,])]]> + Detects classic SQL injection probings 2/2 + + sqli + id + lfi + + 6 + + + 44 + =(),-]\s*[\d"])|(?:"\s*[^\w\s]?=\s*")|(?:"\W*[+=]+\W*")|(?:"\s*[!=|][\d\s!=+-]+.*["(].*$)|(?:"\s*[!=|][\d\s!=]+.*\d+$)|(?:"\s*like\W+[\w"(])|(?:\sis\s*0\W)|(?:where\s[\s\w\.,-]+\s=)|(?:"[<>~]+")]]> + Detects basic SQL authentication bypass attempts 1/3 + + sqli + id + lfi + + 7 + + + 45 + + Detects basic SQL authentication bypass attempts 2/3 + + sqli + id + lfi + + 7 + + + 46 + ^=]+\d\s*(=|or))|(?:"\W+[\w+-]+\s*=\s*\d\W+")|(?:"\s*is\s*\d.+"?\w)|(?:"\|?[\w-]{3,}[^\w\s.,]+")|(?:"\s*is\s*[\d.]+\s*\W.*")]]> + Detects basic SQL authentication bypass attempts 3/3 + + sqli + id + lfi + + 7 + + + 47 + + Detects concatenated basic SQL injection and SQLLFI attempts + + sqli + id + lfi + + 5 + + + 48 + + Detects chained SQL injection attempts 1/2 + + sqli + id + + 6 + + + 49 + + Detects chained SQL injection attempts 2/2 + + sqli + id + + 6 + + + 50 + + Detects SQL benchmark and sleep injection attempts including conditional queries + + sqli + id + + 4 + + + 51 + + Detects MySQL UDF injection and other data/structure manipulation attempts + + sqli + id + + 6 + + + 52 + + Detects MySQL charset switch and MSSQL DoS attempts + + sqli + id + + 6 + + + 53 + + Detects MySQL and PostgreSQL stored procedure/function injections + + sqli + id + + 7 + + + 54 + + Detects Postgres pg_sleep injection, waitfor delay attacks and database shutdown attempts + + sqli + id + + 5 + + + 55 + + Detects MSSQL code execution and information gathering attempts + + sqli + id + + 5 + + + 56 + + Detects MATCH AGAINST, MERGE, EXECUTE IMMEDIATE and HAVING injections + + sqli + id + + 5 + + + 57 + + Detects MySQL comment-/space-obfuscated injections and backtick termination + + sqli + id + + 5 + + + 58 + )?)|(?:;[\s\w|]*\$\w+\s*=)|(?:\$\w+\s*=(?:(?:\s*\$?\w+\s*[(;])|\s*".*"))|(?:;\s*\{\W*\w+\s*\()]]> + Detects code injection attempts 1/3 + + id + rfe + lfi + + 7 + + + 59 + + Detects code injection attempts 2/3 + + id + rfe + lfi + + 7 + + + 60 + + Detects code injection attempts 3/3 + + id + rfe + lfi + + 7 + + + 62 + + Detects common function declarations and special JS operators + + id + rfe + lfi + + 5 + + + 63 + + Detects common mail header injections + + id + spam + + 5 + + + 64 + + Detects perl echo shellcode injection and LDAP vectors + + lfi + rfe + + 5 + + + 65 + + Detects basic XSS DoS attempts + + rfe + dos + + 5 + + + 67 + + Detects unknown attack vectors based on PHPIDS Centrifuge detection + + xss + csrf + id + rfe + lfi + + 7 + + + 68 + ))]]> + Finds attribute breaking injections including obfuscated attributes + + xss + csrf + + 4 + + + 69 + + Finds basic VBScript injection attempts + + xss + csrf + + 4 + + + 70 + + Finds basic MongoDB SQL injection attempts + + sqli + + 4 + + + 71 + + Finds malicious attribute injection attempts and MHTML attacks + + xss + csrf + + 6 + + + 72 + + Detects blind sqli tests using sleep() or benchmark(). + + sqli + id + + 4 + + + 73 + + An attacker is trying to locate a file to read or write. + + files + id + + 4 + + + 75 + + Looking for a format string attack + + format string + + 4 + + + 76 + + Looking for basic sql injection. Common attack string for mysql, oracle and others. + + sqli + id + + 3 + + + 77 + + Looking for integer overflow attacks, these are taken from skipfish, except 2.2250738585072007e-308 is the "magic number" crash + + sqli + id + + 3 + + + 78 + + Detects SQL comment filter evasion + + format string + + 4 + + diff --git a/interface/lib/classes/IDS/license.txt b/interface/lib/classes/IDS/license.txt new file mode 100644 index 000000000..4a3cd1b3e --- /dev/null +++ b/interface/lib/classes/IDS/license.txt @@ -0,0 +1,18 @@ + * + * The files in the folder IDS and its subfolders belong to the + * PHP Intrusion Detection System software and are licensed under LGPL. + * + * Copyright (c) 2008 PHPIDS group (https://phpids.org) + * + * PHPIDS is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, version 3 of the License, or + * (at your option) any later version. + * + * PHPIDS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with PHPIDS. If not, see . \ No newline at end of file diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 56d43f879..b96b8d019 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -121,6 +121,52 @@ class db extends mysqli parent::query( 'SET NAMES '.$this->dbCharset); parent::query( "SET character_set_results = '".$this->dbCharset."', character_set_client = '".$this->dbCharset."', character_set_connection = '".$this->dbCharset."', character_set_database = '".$this->dbCharset."', character_set_server = '".$this->dbCharset."'"); } + + private function securityScan($string) { + global $app, $conf; + + // get security config + if(isset($app)) { + $app->uses('getconf'); + $ids_config = $app->getconf->get_security_config('ids'); + + if($ids_config['sql_scan_enabled'] == 'yes') { + + $string_orig = $string; + + //echo $string; + $chars = array(';', '#', '/*', '*/', '--', ' UNION ', '\\\'', '\\"'); + + $string = str_replace('\\\\', '', $string); + $string = preg_replace('/(^|[^\\\])([\'"])(.*?[^\\\])\\2/is', '$1', $string); + $ok = true; + + if(substr_count($string, "`") % 2 != 0 || substr_count($string, "'") % 2 != 0 || substr_count($string, '"') % 2 != 0) { + $app->log("SQL injection warning (" . $string_orig . ")",2); + $ok = false; + } else { + foreach($chars as $char) { + if(strpos($string, $char) !== false) { + $ok = false; + $app->log("SQL injection warning (" . $string_orig . ")",2); + break; + } + } + } + if($ok == true) { + return true; + } else { + if($ids_config['sql_scan_action'] == 'warn') { + // we return false in warning level. + return false; + } else { + // if sql action = 'block' or anything else then stop here. + $app->error('Possible SQL injection. All actions have been logged.'); + } + } + } + } + } public function query($queryString) { global $conf; @@ -143,6 +189,7 @@ class db extends mysqli } } } while($ok == false); + $this->securityScan($queryString); $this->queryId = parent::query($queryString); $this->updateError('DB::query('.$queryString.') -> mysqli_query'); if($this->errorNumber && $conf['demo_mode'] === false) debug_print_backtrace(); diff --git a/interface/lib/classes/getconf.inc.php b/interface/lib/classes/getconf.inc.php index 5cc223ae7..0cc282e02 100644 --- a/interface/lib/classes/getconf.inc.php +++ b/interface/lib/classes/getconf.inc.php @@ -31,6 +31,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. class getconf { private $config; + private $security_config; public function get_server_config($server_id, $section = '') { global $app; @@ -55,15 +56,20 @@ class getconf { return ($section == '') ? $this->config['global'] : $this->config['global'][$section]; } + // Function has been moved to $app->get_security_config($section) public function get_security_config($section = '') { global $app; + + if(is_array($this->security_config)) { + return ($section == '') ? $this->security_config : $this->security_config[$section]; + } else { + $this->uses('ini_parser'); + $security_config_path = '/usr/local/ispconfig/security/security_settings.ini'; + if(!is_file($security_config_path)) $security_config_path = realpath(ISPC_ROOT_PATH.'/../security/security_settings.ini'); + $this->security_config = $this->ini_parser->parse_ini_string(file_get_contents($security_config_path)); - $app->uses('ini_parser'); - $security_config_path = '/usr/local/ispconfig/security/security_settings.ini'; - if(!is_file($security_config_path)) $security_config_path = realpath(ISPC_ROOT_PATH.'/../security/security_settings.ini'); - $security_config = $app->ini_parser->parse_ini_string(file_get_contents($security_config_path)); - - return ($section == '') ? $security_config : $security_config[$section]; + return ($section == '') ? $this->security_config : $this->security_config[$section]; + } } } diff --git a/interface/lib/classes/ids.inc.php b/interface/lib/classes/ids.inc.php new file mode 100644 index 000000000..a98b0b265 --- /dev/null +++ b/interface/lib/classes/ids.inc.php @@ -0,0 +1,149 @@ +getconf->get_security_config('ids'); + + set_include_path( + get_include_path() + . PATH_SEPARATOR + . ISPC_CLASS_PATH.'/' + ); + + require_once(ISPC_CLASS_PATH.'/IDS/Init.php'); + require_once(ISPC_CLASS_PATH.'/IDS/Monitor.php'); + require_once(ISPC_CLASS_PATH.'/IDS/Filter.php'); + require_once(ISPC_CLASS_PATH.'/IDS/Filter/Storage.php'); + require_once(ISPC_CLASS_PATH.'/IDS/Report.php'); + require_once(ISPC_CLASS_PATH.'/IDS/Event.php'); + require_once(ISPC_CLASS_PATH.'/IDS/Converter.php'); + + $ids_request = array( + 'SESSION' => $_SESSION, + 'GET' => $_GET, + 'POST' => $_POST, + 'COOKIE' => $_COOKIE + ); + + $ids_init = IDS\Init::init(ISPC_CLASS_PATH.'/IDS/Config/Config.ini.php'); + + $ids_init->config['General']['base_path'] = ISPC_CLASS_PATH.'/IDS/'; + $ids_init->config['General']['tmp_path'] = '../../../temp'; + $ids_init->config['General']['use_base_path'] = true; + $ids_init->config['Caching']['caching'] = 'none'; + $ids_init->config['Logging']['path'] = '../../../temp/ids.log'; + + $current_script_name = trim($_SERVER['SCRIPT_NAME']); + + // Get whitelist + $whitelist_path = '/usr/local/ispconfig/security/ids.whitelist'; + if(is_file('/usr/local/ispconfig/security/ids.whitelist.custom')) $whitelist_path = '/usr/local/ispconfig/security/ids.whitelist.custom'; + if(!is_file($whitelist_path)) $whitelist_path = realpath(ISPC_ROOT_PATH.'/../security/ids.whitelist'); + + $whitelist_lines = file($whitelist_path); + if(is_array($whitelist_lines)) { + foreach($whitelist_lines as $line) { + $line = trim($line); + if(substr($line,0,1) != '#') { + list($user,$path,$varname) = explode(':',$line); + if($current_script_name == $path) { + if($user = 'any' + || ($user == 'user' && ($_SESSION['s']['user']['typ'] == 'user' || $_SESSION['s']['user']['typ'] == 'admin')) + || ($user == 'admin' && $_SESSION['s']['user']['typ'] == 'admin')) { + $ids_init->config['General']['exceptions'][] = $varname; + + } + } + } + } + } + + // Get HTML fields + $htmlfield_path = '/usr/local/ispconfig/security/ids.htmlfield'; + if(is_file('/usr/local/ispconfig/security/ids.htmlfield.custom')) $htmlfield_path = '/usr/local/ispconfig/security/ids.htmlfield.custom'; + if(!is_file($htmlfield_path)) $htmlfield_path = realpath(ISPC_ROOT_PATH.'/../security/ids.htmlfield'); + + $htmlfield_lines = file($htmlfield_path); + if(is_array($htmlfield_lines)) { + foreach($htmlfield_lines as $line) { + $line = trim($line); + if(substr($line,0,1) != '#') { + list($user,$path,$varname) = explode(':',$line); + if($current_script_name == $path) { + if($user = 'any' + || ($user == 'user' && ($_SESSION['s']['user']['typ'] == 'user' || $_SESSION['s']['user']['typ'] == 'admin')) + || ($user == 'admin' && $_SESSION['s']['user']['typ'] == 'admin')) { + $ids_init->config['General']['html'][] = $varname; + } + } + } + } + } + + $ids = new IDS\Monitor($ids_init); + $ids_result = $ids->run($ids_request); + + if (!$ids_result->isEmpty()) { + + $impact = $ids_result->getImpact(); + + if($impact >= $security_config['ids_log_level']) { + $ids_log = ISPC_ROOT_PATH.'/temp/ids.log'; + if(!is_file($ids_log)) touch($ids_log); + + $user = isset($_SESSION['s']['user']['typ'])?$_SESSION['s']['user']['typ']:'any'; + + $log_lines = ''; + foreach ($ids_result->getEvents() as $event) { + $log_lines .= $user.':'.$current_script_name.':'.$event->getName()."\n"; + } + file_put_contents($ids_log,$log_lines,FILE_APPEND); + + } + + if($impact >= $security_config['ids_warn_level']) { + $app->log("PHP IDS Alert.".$ids_result, 2); + } + + if($impact >= $security_config['ids_block_level']) { + $app->error("Possible attack detected. This action has been logged.",'', true, 2); + } + + } + } + +} + +?> diff --git a/security/apache_directives.blacklist b/security/apache_directives.blacklist new file mode 100644 index 000000000..edb4b503d --- /dev/null +++ b/security/apache_directives.blacklist @@ -0,0 +1,3 @@ +/^\s*(LoadModule|LoadFile|Include)(\s+|[\\\\])/mi +/^\s*(SuexecUserGroup|suPHP_UserGroup|suPHP_PHPPath|suPHP_ConfigPath)(\s+|[\\\\])/mi +/^\s*(FCGIWrapper|FastCgiExternalServer)(\s+|[\\\\])/mi \ No newline at end of file diff --git a/security/ids.htmlfield b/security/ids.htmlfield new file mode 100644 index 000000000..2c6e92a4a --- /dev/null +++ b/security/ids.htmlfield @@ -0,0 +1,5 @@ +# Format: usertype:url_path:field +# usertype can be: any/client/admin +# Example: +# admin:/admin/language_edit.php:POST.records.weak_password_txt +admin:/admin/language_edit.php:POST.records \ No newline at end of file diff --git a/security/ids.whitelist b/security/ids.whitelist new file mode 100644 index 000000000..58a96e6ac --- /dev/null +++ b/security/ids.whitelist @@ -0,0 +1,45 @@ +# Format: usertype:url_path:field +# usertype can be: any/client/admin +# Example: +# admin:/admin/language_edit.php:POST.records.weak_password_txt +admin:/admin/server_config_edit.php:POST.maildir_path +admin:/admin/server_config_edit.php:POST.website_path +admin:/admin/server_config_edit.php:POST.website_symlinks +admin:/admin/server_config_edit.php:POST.vhost_conf_dir +admin:/admin/server_config_edit.php:POST.vhost_conf_enabled_dir +admin:/admin/server_config_edit.php:POST.nginx_vhost_conf_dir +admin:/admin/server_config_edit.php:POST.nginx_vhost_conf_enabled_dir +admin:/admin/server_config_edit.php:POST.php_open_basedir +admin:/admin/server_config_edit.php:POST.awstats_pl +admin:/admin/server_config_edit.php:POST.fastcgi_starter_path +admin:/admin/server_config_edit.php:POST.fastcgi_bin +admin:/admin/server_config_edit.php:POST.jailkit_chroot_home +admin:/admin/remote_user_edit.php:POST.remote_functions.1 +admin:/admin/firewall_edit.php:POST.tcp_port +admin:/admin/system_config_edit.php:POST.admin_dashlets_right +admin:/admin/system_config_edit.php:POST.reseller_dashlets_left +admin:/admin/system_config_edit.php:POST.reseller_dashlets_right +admin:/admin/language_edit.php:POST.records.weak_password_txt +user:/client/client_message.php:POST.message +user:/client/message_template_edit.php:POST.subject +admin:/dns/dns_template_edit.php:POST.template +admin:/nav.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/show_sys_state.php:SESSION.s.module.nav.1.items.0.title +admin:/capp.php:SESSION.s.module.nav.1.items.0.title +admin:/keepalive.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/log_list.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/datalog_list.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/show_data.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/show_sys_state.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/show_monit.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/show_munin.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/show_data.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/show_log.php:SESSION.s.module.nav.1.items.0.title +admin:/monitor/log_del.php:SESSION.s.module.nav.1.items.0.title +admin:/keepalive.php:SESSION.s.module.nav.1.items.0.title +admin:/capp.php:SESSION.s.module.nav.1.items.0.title +admin:/sites/web_vhost_subdomain_edit.php:POST.php_open_basedir +admin:/sites/web_domain_edit.php:POST.php_open_basedir +admin:/sites/web_domain_edit.php:POST.apache_directives +user:/sites/shell_user_edit.php:POST.ssh_rsa +user:/sites/cron_edit.php:POST.command \ No newline at end of file diff --git a/security/security_settings.ini b/security/security_settings.ini index 4dfe00162..43bcebf1e 100644 --- a/security/security_settings.ini +++ b/security/security_settings.ini @@ -16,6 +16,15 @@ admin_allow_software_packages=superadmin admin_allow_software_repo=superadmin remote_api_allowed=yes +[ids] +ids_enabled=yes +ids_log_level=1 +ids_warn_level=5 +ids_block_level=30 +sql_scan_enabled=yes +sql_scan_action=warn +apache_directives_scan_enabled=yes + [systemcheck] security_admin_email=root@localhost security_admin_email_subject=Security alert from server -- GitLab From 984aadfc91779e11564ed57742bb349e7b9746a1 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Mon, 25 Aug 2014 15:49:06 +0200 Subject: [PATCH 116/158] Fixed: FS#3639 - Error: [Invalid reseller] after update --- interface/lib/classes/remoting.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 0ccfd6547..4a6609eb2 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -1426,7 +1426,7 @@ class remoting { if($params['parent_client_id']) { // check if this one is reseller - $check = $app->db->queryOneRecord('SELECT `limit_client` FROM `client` WHERE `client_id` = ' . intval($client_id)); + $check = $app->db->queryOneRecord('SELECT `limit_client` FROM `client` WHERE `client_id` = ' . intval($params['parent_client_id'])); if($check['limit_client'] == 0) { $this->server->fault('Invalid reseller', 'Selected client is not a reseller.'); return false; -- GitLab From a063c3a3b423884c7bc038ffb67cdd1e83859eb3 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Mon, 25 Aug 2014 15:49:54 +0200 Subject: [PATCH 117/158] Fixed: FS#3639 - Error: [Invalid reseller] after update (missing fix for previous commit) --- interface/lib/classes/remoting.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 4a6609eb2..b47d9cf73 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -1461,7 +1461,7 @@ class remoting { if($params['parent_client_id']) { // check if this one is reseller - $check = $app->db->queryOneRecord('SELECT `limit_client` FROM `client` WHERE `client_id` = ' . intval($client_id)); + $check = $app->db->queryOneRecord('SELECT `limit_client` FROM `client` WHERE `client_id` = ' . intval($params['parent_client_id'])); if($check['limit_client'] == 0) { $this->server->fault('Invalid reseller', 'Selected client is not a reseller.'); return false; -- GitLab From 4f2cc4eabd8cdafb15042d70129d8ea5e2aa815c Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 25 Aug 2014 16:16:53 +0200 Subject: [PATCH 118/158] Syntax errors. --- interface/lib/classes/getconf.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/getconf.inc.php b/interface/lib/classes/getconf.inc.php index 0cc282e02..a246b1853 100644 --- a/interface/lib/classes/getconf.inc.php +++ b/interface/lib/classes/getconf.inc.php @@ -63,10 +63,10 @@ class getconf { if(is_array($this->security_config)) { return ($section == '') ? $this->security_config : $this->security_config[$section]; } else { - $this->uses('ini_parser'); + $app->uses('ini_parser'); $security_config_path = '/usr/local/ispconfig/security/security_settings.ini'; if(!is_file($security_config_path)) $security_config_path = realpath(ISPC_ROOT_PATH.'/../security/security_settings.ini'); - $this->security_config = $this->ini_parser->parse_ini_string(file_get_contents($security_config_path)); + $this->security_config = $app->ini_parser->parse_ini_string(file_get_contents($security_config_path)); return ($section == '') ? $this->security_config : $this->security_config[$section]; } -- GitLab From 614b23b18053c58c3f85db5ceaa982484175d276 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 25 Aug 2014 16:35:53 +0200 Subject: [PATCH 119/158] Added apache directives check agains regex blacklist in security settings. --- interface/lib/classes/IDS/Monitor.php | 4 +- interface/lib/classes/validate_domain.inc.php | 40 +++++++++++++++++++ interface/web/sites/form/web_domain.tform.php | 7 ++++ .../sites/form/web_vhost_subdomain.tform.php | 7 ++++ .../web/sites/lib/lang/ar_web_domain.lng | 1 + .../web/sites/lib/lang/bg_web_domain.lng | 1 + .../web/sites/lib/lang/br_web_domain.lng | 1 + .../web/sites/lib/lang/cz_web_domain.lng | 1 + .../web/sites/lib/lang/de_web_domain.lng | 1 + .../web/sites/lib/lang/el_web_domain.lng | 1 + .../web/sites/lib/lang/en_web_domain.lng | 1 + .../web/sites/lib/lang/es_web_domain.lng | 1 + .../web/sites/lib/lang/fi_web_domain.lng | 1 + .../web/sites/lib/lang/fr_web_domain.lng | 1 + .../web/sites/lib/lang/hr_web_domain.lng | 1 + .../web/sites/lib/lang/hu_web_domain.lng | 1 + .../web/sites/lib/lang/id_web_domain.lng | 1 + .../web/sites/lib/lang/it_web_domain.lng | 1 + .../web/sites/lib/lang/ja_web_domain.lng | 1 + .../web/sites/lib/lang/nl_web_domain.lng | 1 + .../web/sites/lib/lang/pl_web_domain.lng | 1 + .../web/sites/lib/lang/pt_web_domain.lng | 1 + .../web/sites/lib/lang/ro_web_domain.lng | 1 + .../web/sites/lib/lang/ru_web_domain.lng | 1 + .../web/sites/lib/lang/se_web_domain.lng | 1 + .../web/sites/lib/lang/sk_web_domain.lng | 1 + .../web/sites/lib/lang/tr_web_domain.lng | 1 + 27 files changed, 79 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/IDS/Monitor.php b/interface/lib/classes/IDS/Monitor.php index f93e748e4..90c89589d 100644 --- a/interface/lib/classes/IDS/Monitor.php +++ b/interface/lib/classes/IDS/Monitor.php @@ -250,7 +250,7 @@ class Monitor $filterSet = $this->storage->getFilterSet(); if ($tags = $this->tags) { - $filterSet = array_filter( + $filterSet = @array_filter( $filterSet, function (Filter $filter) use ($tags) { return (bool) array_intersect($tags, $filter->getTags()); @@ -259,7 +259,7 @@ class Monitor } $scanKeys = $this->scanKeys; - $filterSet = array_filter( + $filterSet = @array_filter( $filterSet, function (Filter $filter) use ($key, $value, $scanKeys) { return $filter->match($value) || $scanKeys && $filter->match($key); diff --git a/interface/lib/classes/validate_domain.inc.php b/interface/lib/classes/validate_domain.inc.php index d92de9b94..8df0d2f1a 100644 --- a/interface/lib/classes/validate_domain.inc.php +++ b/interface/lib/classes/validate_domain.inc.php @@ -97,6 +97,45 @@ class validate_domain { $result = $this->_check_unique($field_value . '.' . $check_domain, true); if(!$result) return $this->get_error('domain_error_autosub'); } + + /* Check apache directives */ + function web_apache_directives($field_name, $field_value, $validator) { + global $app; + + if(trim($field_value) != '') { + $security_config = $app->getconf->get_security_config('ids'); + + if($security_config['apache_directives_scan_enabled'] == 'yes') { + + // Get blacklist + $blacklist_path = '/usr/local/ispconfig/security/apache_directives.blacklist'; + if(is_file('/usr/local/ispconfig/security/apache_directives.blacklist.custom')) $blacklist_path = '/usr/local/ispconfig/security/apache_directives.blacklist.custom'; + if(!is_file($blacklist_path)) $blacklist_path = realpath(ISPC_ROOT_PATH.'/../security/apache_directives.blacklist'); + + $directives = explode("\n",$field_value); + $regex = explode("\n",file_get_contents($blacklist_path)); + $blocked = false; + $blocked_line = ''; + + if(is_array($directives) && is_array($regex)) { + foreach($directives as $directive) { + $directive = trim($directive); + foreach($regex as $r) { + if(preg_match(trim($r),$directive)) { + $blocked = true; + $blocked_line = $directive; + }; + } + } + } + } + } + + if($blocked === true) { + return $this->get_error('apache_directive_blocked_error').' '.$blocked_line; + } + } + /* internal validator function to match regexp */ function _regex_validate($domain_name, $allow_wildcard = false) { @@ -175,5 +214,6 @@ class validate_domain { } return true; // admin may always add wildcard domain } + } diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php index efaea89cf..16a0c856c 100644 --- a/interface/web/sites/form/web_domain.tform.php +++ b/interface/web/sites/form/web_domain.tform.php @@ -730,6 +730,13 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'apache_directives' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXT', + 'validators' => array ( 0 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_domain', + 'function' => 'web_apache_directives', + 'errmsg' => 'apache_directive_blockd_error' + ), + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/sites/form/web_vhost_subdomain.tform.php b/interface/web/sites/form/web_vhost_subdomain.tform.php index 3aa2276fc..55dd261df 100644 --- a/interface/web/sites/form/web_vhost_subdomain.tform.php +++ b/interface/web/sites/form/web_vhost_subdomain.tform.php @@ -706,6 +706,13 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'apache_directives' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXT', + 'validators' => array ( 0 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_domain', + 'function' => 'web_apache_directives', + 'errmsg' => 'apache_directive_blockd_error' + ), + ), 'default' => '', 'value' => '', 'width' => '30', diff --git a/interface/web/sites/lib/lang/ar_web_domain.lng b/interface/web/sites/lib/lang/ar_web_domain.lng index 539d3b712..1714b6417 100644 --- a/interface/web/sites/lib/lang/ar_web_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_domain.lng b/interface/web/sites/lib/lang/bg_web_domain.lng index 3af58cd1f..594b6f2c7 100644 --- a/interface/web/sites/lib/lang/bg_web_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng index 8b4484eb7..21525c5d9 100644 --- a/interface/web/sites/lib/lang/br_web_domain.lng +++ b/interface/web/sites/lib/lang/br_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_domain.lng b/interface/web/sites/lib/lang/cz_web_domain.lng index 99c9e1054..db8f37f9d 100644 --- a/interface/web/sites/lib/lang/cz_web_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Oddělte více adresářů čárkami. Vzor: $wb['backup_excludes_error_regex'] = 'Vyloučené adresáře obsahují neplatné znaky.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Neplatné nastavení php.ini'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng index c005f90c2..b90ff9a53 100644 --- a/interface/web/sites/lib/lang/de_web_domain.lng +++ b/interface/web/sites/lib/lang/de_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Mehrere Verzeichnisse mit Kommas trennen. Be $wb['backup_excludes_error_regex'] = 'Die auszuschließenden Verzeichnisse enthalten ungültige Zeichen.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Unzulässige php.ini-Einstellungen'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Die Apache Direktive wurde durch die Sicherheitsrichtline blockiert:'; ?> diff --git a/interface/web/sites/lib/lang/el_web_domain.lng b/interface/web/sites/lib/lang/el_web_domain.lng index bc9a8359b..b2792cefb 100644 --- a/interface/web/sites/lib/lang/el_web_domain.lng +++ b/interface/web/sites/lib/lang/el_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng index 0478e9972..14b3d526f 100644 --- a/interface/web/sites/lib/lang/en_web_domain.lng +++ b/interface/web/sites/lib/lang/en_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> \ No newline at end of file diff --git a/interface/web/sites/lib/lang/es_web_domain.lng b/interface/web/sites/lib/lang/es_web_domain.lng index f56e895dc..48c37ffd8 100644 --- a/interface/web/sites/lib/lang/es_web_domain.lng +++ b/interface/web/sites/lib/lang/es_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_domain.lng b/interface/web/sites/lib/lang/fi_web_domain.lng index e5323b21c..e13fb8f54 100755 --- a/interface/web/sites/lib/lang/fi_web_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_domain.lng b/interface/web/sites/lib/lang/fr_web_domain.lng index 00c2dcf15..7c01ca3f9 100644 --- a/interface/web/sites/lib/lang/fr_web_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_domain.lng b/interface/web/sites/lib/lang/hr_web_domain.lng index 51fcb92d6..a7927a354 100644 --- a/interface/web/sites/lib/lang/hr_web_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_domain.lng b/interface/web/sites/lib/lang/hu_web_domain.lng index e160449c0..3fc994edc 100644 --- a/interface/web/sites/lib/lang/hu_web_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/id_web_domain.lng b/interface/web/sites/lib/lang/id_web_domain.lng index ef3423ee3..8ed9ad9df 100644 --- a/interface/web/sites/lib/lang/id_web_domain.lng +++ b/interface/web/sites/lib/lang/id_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/it_web_domain.lng b/interface/web/sites/lib/lang/it_web_domain.lng index c946023d5..5a2bdf544 100644 --- a/interface/web/sites/lib/lang/it_web_domain.lng +++ b/interface/web/sites/lib/lang/it_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_domain.lng b/interface/web/sites/lib/lang/ja_web_domain.lng index d32a9d19b..41ce4717f 100644 --- a/interface/web/sites/lib/lang/ja_web_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_domain.lng b/interface/web/sites/lib/lang/nl_web_domain.lng index 1efbbc6e3..aa3134b92 100644 --- a/interface/web/sites/lib/lang/nl_web_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_domain.lng b/interface/web/sites/lib/lang/pl_web_domain.lng index ed288131e..858b35c6f 100644 --- a/interface/web/sites/lib/lang/pl_web_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_domain.lng b/interface/web/sites/lib/lang/pt_web_domain.lng index 3d197794e..ac0f7f724 100644 --- a/interface/web/sites/lib/lang/pt_web_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_domain.lng b/interface/web/sites/lib/lang/ro_web_domain.lng index e568b8cf4..d4667d00c 100644 --- a/interface/web/sites/lib/lang/ro_web_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_domain.lng b/interface/web/sites/lib/lang/ru_web_domain.lng index c19265692..06d82c1a2 100644 --- a/interface/web/sites/lib/lang/ru_web_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/se_web_domain.lng b/interface/web/sites/lib/lang/se_web_domain.lng index 5156df19f..d25c8b152 100644 --- a/interface/web/sites/lib/lang/se_web_domain.lng +++ b/interface/web/sites/lib/lang/se_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Ogiltiga php.ini-inställningar'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_domain.lng b/interface/web/sites/lib/lang/sk_web_domain.lng index 5497f9f5d..e38610de4 100644 --- a/interface/web/sites/lib/lang/sk_web_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_domain.lng b/interface/web/sites/lib/lang/tr_web_domain.lng index 59dc02aa8..557b69b25 100644 --- a/interface/web/sites/lib/lang/tr_web_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_domain.lng @@ -128,4 +128,5 @@ $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. E $wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; +$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> -- GitLab From 1f4d646d3229aa4bdfe17b4653b2cd73d48b5f9a Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 25 Aug 2014 16:43:27 +0200 Subject: [PATCH 120/158] Show all blocked apache directives lines in error message. --- interface/lib/classes/validate_domain.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/validate_domain.inc.php b/interface/lib/classes/validate_domain.inc.php index 8df0d2f1a..a07241258 100644 --- a/interface/lib/classes/validate_domain.inc.php +++ b/interface/lib/classes/validate_domain.inc.php @@ -123,7 +123,7 @@ class validate_domain { foreach($regex as $r) { if(preg_match(trim($r),$directive)) { $blocked = true; - $blocked_line = $directive; + $blocked_line .= $directive.'
'; }; } } -- GitLab From f9529b330f229fd845fe4f11d612610a84888de1 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 25 Aug 2014 16:45:33 +0200 Subject: [PATCH 121/158] Set higher IDS block level to avaoid false positives until we have a complete whitelist. --- security/security_settings.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/security_settings.ini b/security/security_settings.ini index 43bcebf1e..85d043344 100644 --- a/security/security_settings.ini +++ b/security/security_settings.ini @@ -20,7 +20,7 @@ remote_api_allowed=yes ids_enabled=yes ids_log_level=1 ids_warn_level=5 -ids_block_level=30 +ids_block_level=100 sql_scan_enabled=yes sql_scan_action=warn apache_directives_scan_enabled=yes -- GitLab From fc0a1c8d6171243c8184f99f506b1bba13a36b25 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Mon, 25 Aug 2014 17:01:07 +0200 Subject: [PATCH 122/158] - fixed sql injection regex --- interface/lib/classes/db_mysql.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index b96b8d019..6609ec94e 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -138,7 +138,7 @@ class db extends mysqli $chars = array(';', '#', '/*', '*/', '--', ' UNION ', '\\\'', '\\"'); $string = str_replace('\\\\', '', $string); - $string = preg_replace('/(^|[^\\\])([\'"])(.*?[^\\\])\\2/is', '$1', $string); + $string = preg_replace('/(^|[^\\\])([\'"])(.*?[^\\\]?)\\2/is', '$1', $string); $ok = true; if(substr_count($string, "`") % 2 != 0 || substr_count($string, "'") % 2 != 0 || substr_count($string, '"') % 2 != 0) { -- GitLab From 7536c8e4a052bc889e434da3f6df8ae47faedd3d Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 25 Aug 2014 17:10:10 +0200 Subject: [PATCH 123/158] Updated security README.txt --- security/README.txt | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/security/README.txt b/security/README.txt index c73231237..b68f64780 100644 --- a/security/README.txt +++ b/security/README.txt @@ -69,6 +69,45 @@ Setting: remote_api_allowed Options: yes/no Description: Disables the remote API +Setting: ids_enabled +Options: yes/no +Description: Enables the Intrusion Detection System + +Setting: ids_log_level +Options: 1 (number, default = 1) +Description: IDS score that triggers the log in /usr/local/ispconfig/interface/temp/ids.log + This log can be used to feed the whitelist. + + Example: + + cat /usr/local/ispconfig/interface/temp/ids.log >> /usr/local/ispconfig/security/ids.whitelist + rm -f /usr/local/ispconfig/interface/temp/ids.log + + If you want to use a custom whitelist, then store it as /usr/local/ispconfig/security/ids.whitelist.custom + +Setting: ids_warn_level +Options: 5 (number, default = 5) +Description: When the IDS score exceeds this level, a error message is logged into the system log. No message is displayed to the user. + +Setting: ids_block_level +Options: 100 (number, default = 100) +Description: When the IDS score exceeds this level, a error message is shown to the user and further processing is blocked. A score of 100 will most likely never be reached. + We have choosen such a high score as default until we have more complete whitelists for this new feature. + +Setting: sql_scan_enabled +Options: yes/no +Description: Enables the scan for SQL injections in the DB library. + +Setting: sql_scan_action +Options: warn/block +Description: warn = write errot message to log only. Block = block user action and show error to the user. + +Setting: apache_directives_scan_enabled +Options: yes/no +Description: Scan apache directives field for potentially malicious directives. This function uses the regex + list from /usr/local/ispconfig/security/apache_directives.blacklist file. + If you want to use a custom blacklist, then store it as /usr/local/ispconfig/security/apache_directives.blacklist.custom + Setting: security_admin_email Options: email address Description: Email address of the security admin -- GitLab From f986a3c5d914c5cfd62b61366202026331f75d0a Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Mon, 25 Aug 2014 17:16:27 +0200 Subject: [PATCH 124/158] - another regexp fix for sql injection detection --- interface/lib/classes/db_mysql.inc.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 6609ec94e..bcf1b008a 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -138,7 +138,8 @@ class db extends mysqli $chars = array(';', '#', '/*', '*/', '--', ' UNION ', '\\\'', '\\"'); $string = str_replace('\\\\', '', $string); - $string = preg_replace('/(^|[^\\\])([\'"])(.*?[^\\\]?)\\2/is', '$1', $string); + $string = preg_replace('/(^|[^\\\])([\'"])\\2/is', '$1', $string); + $string = preg_replace('/(^|[^\\\])([\'"])(.*?[^\\\])\\2/is', '$1', $string); $ok = true; if(substr_count($string, "`") % 2 != 0 || substr_count($string, "'") % 2 != 0 || substr_count($string, '"') % 2 != 0) { -- GitLab From 0baacefd19b7d78ab2c31d947109dec82a17f1cd Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 25 Aug 2014 20:32:20 +0200 Subject: [PATCH 125/158] FS#3641 - Add option to disable the password reset function --- interface/web/login/index.php | 9 +++++++++ interface/web/login/password_reset.php | 5 +++++ interface/web/login/templates/index.htm | 2 +- security/README.txt | 4 ++++ security/security_settings.ini | 1 + 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/interface/web/login/index.php b/interface/web/login/index.php index 48d3af652..4cb2e3e7e 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -325,6 +325,15 @@ class login_index { $error = '

Error

'.$error.'
'; } + $app->load('getconf'); + + $security_config = $app->getconf->get_security_config('permissions'); + if($security_config['password_reset_allowed'] == 'yes') { + $app->tpl->setVar('pw_lost_show', 1); + } else { + $app->tpl->setVar('pw_lost_show', 0); + } + $app->tpl->setVar('error', $error); $app->tpl->setVar('pw_lost_txt', $app->lng('pw_lost_txt')); $app->tpl->setVar('username_txt', $app->lng('username_txt')); diff --git a/interface/web/login/password_reset.php b/interface/web/login/password_reset.php index e29b1637d..c466ac8e4 100644 --- a/interface/web/login/password_reset.php +++ b/interface/web/login/password_reset.php @@ -31,6 +31,11 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; +$app->load('getconf'); + +$security_config = $app->getconf->get_security_config('permissions'); +if($security_config['password_reset_allowed'] != 'yes') die('Password reset function has been disabled.'); + // Loading the template $app->uses('tpl'); $app->tpl->newTemplate("form.tpl.htm"); diff --git a/interface/web/login/templates/index.htm b/interface/web/login/templates/index.htm index 3fbd278dd..bcdd8bdb9 100644 --- a/interface/web/login/templates/index.htm +++ b/interface/web/login/templates/index.htm @@ -35,7 +35,7 @@
- +
diff --git a/security/README.txt b/security/README.txt index b68f64780..b42cbaabb 100644 --- a/security/README.txt +++ b/security/README.txt @@ -69,6 +69,10 @@ Setting: remote_api_allowed Options: yes/no Description: Disables the remote API +Setting: password_reset_allowed +Options: yes/no +Description: Disables the password reset function. + Setting: ids_enabled Options: yes/no Description: Enables the Intrusion Detection System diff --git a/security/security_settings.ini b/security/security_settings.ini index 85d043344..4b4327aaf 100644 --- a/security/security_settings.ini +++ b/security/security_settings.ini @@ -15,6 +15,7 @@ admin_allow_osupdate=superadmin admin_allow_software_packages=superadmin admin_allow_software_repo=superadmin remote_api_allowed=yes +password_reset_allowed=yes [ids] ids_enabled=yes -- GitLab From c505a8e45a82ed8673c64a27fde30890a39849e4 Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Thu, 28 Aug 2014 13:36:12 +0200 Subject: [PATCH 126/158] - MySQL table generator: default value of text fields must be NULL, not 'NULL'. --- interface/lib/classes/tform_tpl_generator.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/tform_tpl_generator.inc.php b/interface/lib/classes/tform_tpl_generator.inc.php index a2da27606..49fd274a8 100644 --- a/interface/lib/classes/tform_tpl_generator.inc.php +++ b/interface/lib/classes/tform_tpl_generator.inc.php @@ -268,7 +268,7 @@ class tform_tpl_generator { case 'TEXT': $type = 'text'; $typevalue = ''; - $defaultValue = 'NULL'; + $defaultValue = NULL; break; case 'DATE': $type = 'date'; -- GitLab From 6227d73ec10dc088bf944609ec43011da771cd9c Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 29 Aug 2014 12:16:49 +0200 Subject: [PATCH 127/158] Fixed: FS#3649 - Resellers can not add domains for their clients in client module --- interface/web/client/domain_edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/client/domain_edit.php b/interface/web/client/domain_edit.php index cca5c2dc2..1ed17e54a 100644 --- a/interface/web/client/domain_edit.php +++ b/interface/web/client/domain_edit.php @@ -193,7 +193,7 @@ class page_action extends tform_actions { // make sure that the record belongs to the client group and not the admin group when admin inserts it // also make sure that the user can not delete domain created by a admin - if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) { + if(($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) || ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid']))) { $client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]); $app->db->query("UPDATE domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id); } -- GitLab From 8c82ef808582a4fc39e7cf449a26d426c6a7b64c Mon Sep 17 00:00:00 2001 From: Falko Timme Date: Mon, 1 Sep 2014 11:13:12 +0200 Subject: [PATCH 128/158] - Fixed: creation of wildcard certificates wasn't working. --- .../plugins-available/apache2_plugin.inc.php | 18 +++++++++++------- server/plugins-available/nginx_plugin.inc.php | 18 +++++++++++------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index a5339579f..bdf6a05bd 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -171,30 +171,34 @@ class apache2_plugin { $rand_file = escapeshellcmd($rand_file); $key_file = escapeshellcmd($key_file); + $openssl_cmd_key_file = $key_file; if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate $key_file2 = escapeshellcmd($key_file2); + $openssl_cmd_key_file2 = $key_file2; if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate $ssl_days = 3650; $csr_file = escapeshellcmd($csr_file); + $openssl_cmd_csr_file = $csr_file; if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate $config_file = escapeshellcmd($ssl_cnf_file); $crt_file = escapeshellcmd($crt_file); + $openssl_cmd_crt_file = $crt_file; if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { - exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $key_file 2048"); - exec("openssl req -new -passin pass:$ssl_password -passout pass:$ssl_password -key $key_file -out $csr_file -days $ssl_days -config $config_file"); - exec("openssl rsa -passin pass:$ssl_password -in $key_file -out $key_file2"); + exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file 2048"); + exec("openssl req -new -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); + exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file -out $openssl_cmd_key_file2"); if(file_exists($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -out $crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $csr_file"); + exec("openssl ca -batch -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file"); $app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); - if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $csr_file", LOGLEVEL_ERROR); + if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); }; if (@filesize($crt_file)==0 || !file_exists($crt_file)){ - exec("openssl req -x509 -passin pass:$ssl_password -passout pass:$ssl_password -key $key_file -in $csr_file -out $crt_file -days $ssl_days -config $config_file "); + exec("openssl req -x509 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -in $openssl_cmd_csr_file -out $openssl_cmd_crt_file -days $ssl_days -config $config_file "); $app->log("Creating self-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; @@ -273,7 +277,7 @@ class apache2_plugin { $bundle_file = $ssl_dir.'/'.$domain.'.bundle'; if(file_exists($web_config['CA_path'].'/openssl.cnf') && !is_link($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -revoke $crt_file"); + exec("openssl ca -batch -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -revoke ".escapeshellcmd($crt_file)); $app->log("Revoking CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; $app->system->unlink($csr_file); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 3478fc749..e56abe842 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -170,30 +170,34 @@ class nginx_plugin { $rand_file = escapeshellcmd($rand_file); $key_file = escapeshellcmd($key_file); + $openssl_cmd_key_file = $key_file; if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate $key_file2 = escapeshellcmd($key_file2); + $openssl_cmd_key_file2 = $key_file2; if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate $ssl_days = 3650; $csr_file = escapeshellcmd($csr_file); + $openssl_cmd_csr_file = $csr_file; if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate $config_file = escapeshellcmd($ssl_cnf_file); $crt_file = escapeshellcmd($crt_file); + $openssl_cmd_crt_file = $crt_file; if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { - exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $key_file 2048"); - exec("openssl req -new -passin pass:$ssl_password -passout pass:$ssl_password -key $key_file -out $csr_file -days $ssl_days -config $config_file"); - exec("openssl rsa -passin pass:$ssl_password -in $key_file -out $key_file2"); + exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file 2048"); + exec("openssl req -new -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); + exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file -out $openssl_cmd_key_file2"); if(file_exists($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -out $crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $csr_file"); + exec("openssl ca -batch -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file"); $app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); - if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $csr_file", LOGLEVEL_ERROR); + if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); }; if (@filesize($crt_file)==0 || !file_exists($crt_file)){ - exec("openssl req -x509 -passin pass:$ssl_password -passout pass:$ssl_password -key $key_file -in $csr_file -out $crt_file -days $ssl_days -config $config_file "); + exec("openssl req -x509 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -in $openssl_cmd_csr_file -out $openssl_cmd_crt_file -days $ssl_days -config $config_file "); $app->log("Creating self-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; @@ -274,7 +278,7 @@ class nginx_plugin { //$bundle_file = $ssl_dir.'/'.$domain.'.bundle'; if(file_exists($web_config['CA_path'].'/openssl.cnf') && !is_link($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -revoke $crt_file"); + exec("openssl ca -batch -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -revoke ".escapeshellcmd($crt_file)); $app->log("Revoking CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; $app->system->unlink($csr_file); -- GitLab From 285cfb7843aa4345e7e13854e6d79e4c11590269 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 1 Sep 2014 13:29:56 +0200 Subject: [PATCH 129/158] Fix mailuser logins for systems with cutom mailuser logins. --- interface/web/login/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/login/index.php b/interface/web/login/index.php index 4cb2e3e7e..80c4d17c7 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -160,7 +160,7 @@ class login_index { } else { if(stristr($username, '@')) { //* mailuser login - $sql = "SELECT * FROM mail_user WHERE login = '$username'"; + $sql = "SELECT * FROM mail_user WHERE login = '$username' or email = '$username'"; $mailuser = $app->db->queryOneRecord($sql); $user = false; if($mailuser) { -- GitLab From 7c18547d88442e05e10187cfd8e805a4d34b3137 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 1 Sep 2014 13:30:37 +0200 Subject: [PATCH 130/158] Allow resellers to delete domains of their clients in client module. --- interface/web/client/templates/domain_list.htm | 2 -- 1 file changed, 2 deletions(-) diff --git a/interface/web/client/templates/domain_list.htm b/interface/web/client/templates/domain_list.htm index 310066089..6224cbc24 100644 --- a/interface/web/client/templates/domain_list.htm +++ b/interface/web/client/templates/domain_list.htm @@ -34,9 +34,7 @@ {tmpl_var name="domain"} {tmpl_var name="sys_groupid"} - {tmpl_var name='delete_txt'} - -- GitLab From 6c9bc3ea7766bbabd0c7826d2cb87090bc89edb0 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 1 Sep 2014 13:31:01 +0200 Subject: [PATCH 131/158] Enable mod_logio in apache on opensuse. --- install/dist/lib/opensuse.lib.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index ea13cd259..cd47d0533 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -656,6 +656,9 @@ class installer_dist extends installer_base { if($conf['apache']['installed'] == false) return; //* Create the logging directory for the vhost logfiles exec('mkdir -p /var/log/ispconfig/httpd'); + + //* enable apache logio module + exec('a2enmod logio'); //if(is_file('/etc/suphp.conf')) { replaceLine('/etc/suphp.conf', 'php=php', 'x-httpd-suphp="php:/srv/www/cgi-bin/php5"', 0, 0); -- GitLab From ca0a19edac6a9821d704143e93ce7eac1f5540a8 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 5 Sep 2014 10:17:33 +0200 Subject: [PATCH 132/158] - Disabled session content check in IDS. --- interface/lib/classes/ids.inc.php | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/lib/classes/ids.inc.php b/interface/lib/classes/ids.inc.php index a98b0b265..ac5cb1912 100644 --- a/interface/lib/classes/ids.inc.php +++ b/interface/lib/classes/ids.inc.php @@ -51,7 +51,6 @@ class ids { require_once(ISPC_CLASS_PATH.'/IDS/Converter.php'); $ids_request = array( - 'SESSION' => $_SESSION, 'GET' => $_GET, 'POST' => $_POST, 'COOKIE' => $_COOKIE -- GitLab From 4aec3040f93a71d0995934e42ee796efd1ff9bf3 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 9 Sep 2014 18:55:16 +0200 Subject: [PATCH 133/158] - Show number of domains in limits dashlet. --- interface/web/dashboard/dashlets/limits.php | 4 +++- interface/web/dashboard/lib/lang/de_dashlet_limits.lng | 1 + interface/web/dashboard/lib/lang/en_dashlet_limits.lng | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/interface/web/dashboard/dashlets/limits.php b/interface/web/dashboard/dashlets/limits.php index b361f6e9b..58ed1d86c 100644 --- a/interface/web/dashboard/dashlets/limits.php +++ b/interface/web/dashboard/dashlets/limits.php @@ -105,7 +105,9 @@ class dashlet_limits { 'db_table' => 'client', 'db_where' => ""); - + $limits[] = array('field' => 'limit_domain', + 'db_table' => 'domain', + 'db_where' => ""); //* Loading Template diff --git a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng index fe1d57327..a966a4dab 100644 --- a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng @@ -27,4 +27,5 @@ $wb['limit_webdav_user_txt'] = 'Anzahl der WebDAV Benutzer'; $wb['limit_client_txt'] = 'Anzahl der Kunden'; $wb['limit_database_txt'] = 'Anzahl der Datenbanken'; $wb['limit_mailmailinglist_txt'] = 'Anzahl der Mailinglisten'; +$wb['limit_domain_txt'] = 'Anzahl der Domains'; ?> diff --git a/interface/web/dashboard/lib/lang/en_dashlet_limits.lng b/interface/web/dashboard/lib/lang/en_dashlet_limits.lng index f6d8ed884..abcec57fb 100644 --- a/interface/web/dashboard/lib/lang/en_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/en_dashlet_limits.lng @@ -27,4 +27,5 @@ $wb["limit_shell_user_txt"] = 'Number of Shell users'; $wb["limit_webdav_user_txt"] = 'Number of Webdav users'; $wb["limit_client_txt"] = 'Number of Clients'; $wb["limit_database_txt"] = 'Number of Databases'; +$wb['limit_domain_txt'] = 'Number of Domains'; ?> -- GitLab From 6f03cca3e114830205f2f71747246b609ffb4053 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 10 Sep 2014 19:29:54 +0200 Subject: [PATCH 134/158] Fixed a issue in reseller limit validation. --- interface/lib/classes/validate_reseller.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/validate_reseller.inc.php b/interface/lib/classes/validate_reseller.inc.php index c02c4fd8d..3ffabdc5b 100644 --- a/interface/lib/classes/validate_reseller.inc.php +++ b/interface/lib/classes/validate_reseller.inc.php @@ -36,7 +36,7 @@ class validate_reseller { function limit_client($field_name, $field_value, $validator) { global $app; - if($field_value <= 0) { + if($field_value != -1 && $field_value <= 0) { return $app->tform->lng('limit_client_error_positive'); } else { return ''; -- GitLab From 80262299f00d3c5a3bc0e5ef73f3d6d24792d2c1 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 10 Sep 2014 19:30:35 +0200 Subject: [PATCH 135/158] Added backup mount script to backup plugin. --- server/plugins-available/backup_plugin.inc.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index c3ed1aee4..b0a4e4233 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -72,6 +72,7 @@ class backup_plugin { $backup_dir = $server_config['backup_dir'].'/web'.$web['domain_id']; //* mount backup directory, if necessary + /* $backup_dir_is_ready = true; $server_config['backup_dir_mount_cmd'] = trim($server_config['backup_dir_mount_cmd']); if($server_config['backup_dir_is_mount'] == 'y' && $server_config['backup_dir_mount_cmd'] != ''){ @@ -80,6 +81,19 @@ class backup_plugin { sleep(1); if(!$app->system->is_mounted($server_config['backup_dir'])) $backup_dir_is_ready = false; } + }*/ + $backup_dir_is_ready = true; + $backup_dir_mount_cmd = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh'; + if( $server_config['backup_dir_is_mount'] == 'y' && + is_file($backup_dir_mount_cmd) && + is_executable($backup_dir_mount_cmd) && + fileowner($backup_dir_mount_cmd) === 0 + ){ + if(!$app->system->is_mounted($backup_dir)){ + exec($backup_dir_mount_cmd); + sleep(1); + if(!$app->system->is_mounted($server_config['backup_dir'])) $backup_dir_is_ready = false; + } } if($backup_dir_is_ready){ -- GitLab From 21c8aacf5317867f71d0a7bb71c4c2b088d02d23 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 12 Sep 2014 10:42:02 +0200 Subject: [PATCH 136/158] Updated HR translation. --- interface/lib/lang/hr.lng | 166 +++++++-------- interface/web/admin/lib/lang/hr.lng | 4 +- .../admin/lib/lang/hr_directive_snippets.lng | 18 +- .../lib/lang/hr_directive_snippets_list.lng | 12 +- interface/web/admin/lib/lang/hr_firewall.lng | 2 + .../web/admin/lib/lang/hr_firewall_list.lng | 2 + interface/web/admin/lib/lang/hr_groups.lng | 2 + .../web/admin/lib/lang/hr_groups_list.lng | 2 + interface/web/admin/lib/lang/hr_iptables.lng | 4 +- .../web/admin/lib/lang/hr_iptables_list.lng | 2 + .../web/admin/lib/lang/hr_language_add.lng | 2 + .../admin/lib/lang/hr_language_complete.lng | 2 + .../web/admin/lib/lang/hr_language_edit.lng | 2 + .../web/admin/lib/lang/hr_language_export.lng | 2 + .../web/admin/lib/lang/hr_language_import.lng | 6 +- .../web/admin/lib/lang/hr_language_list.lng | 2 + interface/web/admin/lib/lang/hr_login_as.lng | 13 ++ .../web/admin/lib/lang/hr_package_install.lng | 2 + .../web/admin/lib/lang/hr_remote_action.lng | 2 + .../web/admin/lib/lang/hr_remote_user.lng | 10 +- .../admin/lib/lang/hr_remote_user_list.lng | 2 + interface/web/admin/lib/lang/hr_server.lng | 4 +- .../web/admin/lib/lang/hr_server_config.lng | 132 ++++++------ .../admin/lib/lang/hr_server_config_list.lng | 2 + interface/web/admin/lib/lang/hr_server_ip.lng | 2 + .../web/admin/lib/lang/hr_server_ip_list.lng | 2 + .../web/admin/lib/lang/hr_server_list.lng | 4 +- .../web/admin/lib/lang/hr_server_php.lng | 22 +- .../web/admin/lib/lang/hr_server_php_list.lng | 4 +- .../admin/lib/lang/hr_software_package.lng | 2 + .../lib/lang/hr_software_package_install.lng | 2 + .../lib/lang/hr_software_package_list.lng | 4 +- .../web/admin/lib/lang/hr_software_repo.lng | 2 + .../admin/lib/lang/hr_software_repo_list.lng | 2 + .../lib/lang/hr_software_update_list.lng | 4 +- .../web/admin/lib/lang/hr_system_config.lng | 2 + .../admin/lib/lang/hr_tpl_default_admin.lng | 30 +-- interface/web/admin/lib/lang/hr_users.lng | 16 +- .../web/admin/lib/lang/hr_users_list.lng | 2 + interface/web/client/lib/lang/hr.lng | 28 +-- interface/web/client/lib/lang/hr_client.lng | 12 +- .../web/client/lib/lang/hr_client_circle.lng | 16 +- .../client/lib/lang/hr_client_circle_list.lng | 16 +- .../web/client/lib/lang/hr_client_del.lng | 2 + .../web/client/lib/lang/hr_client_message.lng | 38 ++-- .../lib/lang/hr_client_message_template.lng | 2 + .../lang/hr_client_message_template_list.lng | 8 +- .../client/lib/lang/hr_client_template.lng | 2 + .../lib/lang/hr_client_template_list.lng | 2 + .../web/client/lib/lang/hr_clients_list.lng | 2 + interface/web/client/lib/lang/hr_domain.lng | 4 +- .../web/client/lib/lang/hr_domain_list.lng | 4 +- interface/web/client/lib/lang/hr_reseller.lng | 28 +-- .../web/client/lib/lang/hr_resellers_list.lng | 6 +- interface/web/dashboard/lib/lang/hr.lng | 2 + .../dashboard/lib/lang/hr_dashlet_limits.lng | 2 + .../lib/lang/hr_dashlet_mailquota.lng | 6 +- .../dashboard/lib/lang/hr_dashlet_modules.lng | 2 + .../dashboard/lib/lang/hr_dashlet_quota.lng | 2 + interface/web/dns/lib/lang/hr.lng | 2 + interface/web/dns/lib/lang/hr_dns_a.lng | 4 +- interface/web/dns/lib/lang/hr_dns_a_list.lng | 2 + interface/web/dns/lib/lang/hr_dns_aaaa.lng | 4 +- interface/web/dns/lib/lang/hr_dns_alias.lng | 4 +- interface/web/dns/lib/lang/hr_dns_cname.lng | 4 +- interface/web/dns/lib/lang/hr_dns_hinfo.lng | 4 +- interface/web/dns/lib/lang/hr_dns_import.lng | 18 +- interface/web/dns/lib/lang/hr_dns_mx.lng | 6 +- interface/web/dns/lib/lang/hr_dns_ns.lng | 4 +- interface/web/dns/lib/lang/hr_dns_ptr.lng | 4 +- interface/web/dns/lib/lang/hr_dns_rp.lng | 4 +- interface/web/dns/lib/lang/hr_dns_slave.lng | 8 +- .../dns/lib/lang/hr_dns_slave_admin_list.lng | 14 +- .../web/dns/lib/lang/hr_dns_slave_list.lng | 2 + interface/web/dns/lib/lang/hr_dns_soa.lng | 16 +- .../dns/lib/lang/hr_dns_soa_admin_list.lng | 14 +- .../web/dns/lib/lang/hr_dns_soa_list.lng | 6 +- interface/web/dns/lib/lang/hr_dns_srv.lng | 10 +- .../web/dns/lib/lang/hr_dns_template.lng | 2 + .../web/dns/lib/lang/hr_dns_template_list.lng | 4 +- interface/web/dns/lib/lang/hr_dns_txt.lng | 4 +- interface/web/dns/lib/lang/hr_dns_wizard.lng | 20 +- interface/web/help/lib/lang/hr.lng | 2 + interface/web/help/lib/lang/hr_faq_form.lng | 2 + .../lib/lang/hr_faq_manage_questions_list.lng | 2 + .../help/lib/lang/hr_faq_sections_form.lng | 2 + .../web/help/lib/lang/hr_help_faq_list.lng | 2 + .../lib/lang/hr_help_faq_sections_list.lng | 2 + .../web/help/lib/lang/hr_support_message.lng | 2 + .../help/lib/lang/hr_support_message_list.lng | 2 + interface/web/login/lib/lang/hr.lng | 12 +- interface/web/login/lib/lang/hr_login_as.lng | 6 +- interface/web/mail/lib/lang/hr.lng | 4 +- interface/web/mail/lib/lang/hr_mail_alias.lng | 2 + .../web/mail/lib/lang/hr_mail_alias_list.lng | 2 + .../web/mail/lib/lang/hr_mail_aliasdomain.lng | 2 + .../lib/lang/hr_mail_aliasdomain_list.lng | 2 + .../web/mail/lib/lang/hr_mail_blacklist.lng | 2 + .../mail/lib/lang/hr_mail_blacklist_list.lng | 2 + .../mail/lib/lang/hr_mail_content_filter.lng | 2 + .../lib/lang/hr_mail_content_filter_list.lng | 2 + .../web/mail/lib/lang/hr_mail_domain.lng | 2 + .../lib/lang/hr_mail_domain_admin_list.lng | 2 + .../mail/lib/lang/hr_mail_domain_catchall.lng | 2 + .../lib/lang/hr_mail_domain_catchall_list.lng | 2 + .../web/mail/lib/lang/hr_mail_domain_list.lng | 2 + .../web/mail/lib/lang/hr_mail_forward.lng | 4 +- .../mail/lib/lang/hr_mail_forward_list.lng | 2 + interface/web/mail/lib/lang/hr_mail_get.lng | 2 + .../web/mail/lib/lang/hr_mail_get_list.lng | 2 + .../web/mail/lib/lang/hr_mail_mailinglist.lng | 14 +- .../lib/lang/hr_mail_mailinglist_list.lng | 2 + .../mail/lib/lang/hr_mail_relay_recipient.lng | 2 + .../lib/lang/hr_mail_relay_recipient_list.lng | 2 + .../web/mail/lib/lang/hr_mail_spamfilter.lng | 2 + .../mail/lib/lang/hr_mail_spamfilter_list.lng | 2 + .../web/mail/lib/lang/hr_mail_transport.lng | 2 + .../mail/lib/lang/hr_mail_transport_list.lng | 2 + interface/web/mail/lib/lang/hr_mail_user.lng | 10 +- .../web/mail/lib/lang/hr_mail_user_filter.lng | 18 +- .../lib/lang/hr_mail_user_filter_list.lng | 8 +- .../web/mail/lib/lang/hr_mail_user_list.lng | 6 +- .../mail/lib/lang/hr_mail_user_stats_list.lng | 2 + .../web/mail/lib/lang/hr_mail_whitelist.lng | 2 + .../mail/lib/lang/hr_spamfilter_blacklist.lng | 2 + .../lib/lang/hr_spamfilter_blacklist_list.lng | 2 + .../mail/lib/lang/hr_spamfilter_config.lng | 2 + .../lib/lang/hr_spamfilter_config_list.lng | 2 + .../mail/lib/lang/hr_spamfilter_policy.lng | 2 + .../lib/lang/hr_spamfilter_policy_list.lng | 2 + .../web/mail/lib/lang/hr_spamfilter_users.lng | 2 + .../lib/lang/hr_spamfilter_users_list.lng | 2 + .../mail/lib/lang/hr_spamfilter_whitelist.lng | 2 + .../lib/lang/hr_spamfilter_whitelist_list.lng | 2 + .../lib/lang/hr_user_quota_stats_list.lng | 14 +- interface/web/mailuser/lib/lang/hr.lng | 12 +- interface/web/mailuser/lib/lang/hr_index.lng | 18 +- .../lib/lang/hr_mail_user_autoresponder.lng | 6 +- .../web/mailuser/lib/lang/hr_mail_user_cc.lng | 2 + .../mailuser/lib/lang/hr_mail_user_filter.lng | 38 ++-- .../lib/lang/hr_mail_user_filter_list.lng | 14 +- .../lib/lang/hr_mail_user_password.lng | 16 +- .../lib/lang/hr_mail_user_spamfilter.lng | 10 +- interface/web/monitor/lib/lang/hr.lng | 22 +- .../web/monitor/lib/lang/hr_datalog_list.lng | 2 + .../web/monitor/lib/lang/hr_syslog_list.lng | 2 + interface/web/sites/lib/lang/hr.lng | 32 +-- interface/web/sites/lib/lang/hr_aps.lng | 78 +++---- .../sites/lib/lang/hr_aps_instances_list.lng | 22 +- .../sites/lib/lang/hr_aps_packages_list.lng | 2 + .../lib/lang/hr_aps_update_packagelist.lng | 8 +- interface/web/sites/lib/lang/hr_cron.lng | 8 +- interface/web/sites/lib/lang/hr_cron_list.lng | 2 + interface/web/sites/lib/lang/hr_database.lng | 12 +- .../sites/lib/lang/hr_database_admin_list.lng | 4 +- .../web/sites/lib/lang/hr_database_list.lng | 4 +- .../web/sites/lib/lang/hr_database_user.lng | 38 ++-- .../lib/lang/hr_database_user_admin_list.lng | 10 +- .../sites/lib/lang/hr_database_user_list.lng | 8 +- interface/web/sites/lib/lang/hr_ftp_user.lng | 18 +- .../web/sites/lib/lang/hr_ftp_user_list.lng | 2 + .../web/sites/lib/lang/hr_shell_user.lng | 28 +-- .../web/sites/lib/lang/hr_shell_user_list.lng | 4 +- .../lib/lang/hr_user_quota_stats_list.lng | 4 +- .../web/sites/lib/lang/hr_web_aliasdomain.lng | 166 +++++++-------- .../lib/lang/hr_web_aliasdomain_list.lng | 2 + .../web/sites/lib/lang/hr_web_backup_list.lng | 2 + .../web/sites/lib/lang/hr_web_domain.lng | 79 +++---- .../lib/lang/hr_web_domain_admin_list.lng | 2 + .../web/sites/lib/lang/hr_web_domain_list.lng | 2 + .../web/sites/lib/lang/hr_web_folder.lng | 4 +- .../web/sites/lib/lang/hr_web_folder_list.lng | 4 +- .../web/sites/lib/lang/hr_web_folder_user.lng | 16 +- .../lib/lang/hr_web_folder_user_list.lng | 4 +- .../lib/lang/hr_web_sites_stats_list.lng | 4 +- .../web/sites/lib/lang/hr_web_subdomain.lng | 10 +- .../sites/lib/lang/hr_web_subdomain_list.lng | 2 + .../sites/lib/lang/hr_web_vhost_subdomain.lng | 192 +++++++++--------- .../lib/lang/hr_web_vhost_subdomain_list.lng | 2 + .../web/sites/lib/lang/hr_webdav_user.lng | 14 +- .../sites/lib/lang/hr_webdav_user_list.lng | 2 + .../lib/lang/hr_strengthmeter.lng | 2 + interface/web/tools/lib/lang/hr.lng | 4 +- .../tools/lib/lang/hr_import_ispconfig.lng | 44 ++-- interface/web/tools/lib/lang/hr_index.lng | 2 + interface/web/tools/lib/lang/hr_interface.lng | 12 +- interface/web/tools/lib/lang/hr_resync.lng | 26 +-- .../web/tools/lib/lang/hr_tpl_default.lng | 12 +- .../web/tools/lib/lang/hr_usersettings.lng | 10 +- interface/web/vm/lib/lang/hr.lng | 2 + .../web/vm/lib/lang/hr_openvz_action.lng | 4 +- interface/web/vm/lib/lang/hr_openvz_ip.lng | 2 + .../web/vm/lib/lang/hr_openvz_ip_list.lng | 2 + .../web/vm/lib/lang/hr_openvz_ostemplate.lng | 2 + .../vm/lib/lang/hr_openvz_ostemplate_list.lng | 2 + .../web/vm/lib/lang/hr_openvz_template.lng | 22 +- .../vm/lib/lang/hr_openvz_template_list.lng | 2 + interface/web/vm/lib/lang/hr_openvz_vm.lng | 4 +- .../web/vm/lib/lang/hr_openvz_vm_list.lng | 2 + 199 files changed, 1260 insertions(+), 852 deletions(-) create mode 100644 interface/web/admin/lib/lang/hr_login_as.lng diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng index 02ba8b1f6..8c62161f6 100644 --- a/interface/lib/lang/hr.lng +++ b/interface/lib/lang/hr.lng @@ -8,16 +8,16 @@ $wb['number_format_decimals'] = '4'; $wb['number_format_decimals_client'] = '2'; $wb['number_format_dec_point'] = ','; $wb['number_format_thousands_sep'] = '.'; -$wb['delete_confirmation'] = 'Da li želite obrisati ovaj DNS zapis?'; -$wb['error_no_view_permission'] = 'Nemate dozvolu za pregled DNS zapisa ili zapis ne postoji!'; -$wb['error_no_delete_permission'] = 'Nemate dozvolu za brisanje DNS zapisa!'; +$wb['delete_confirmation'] = 'Da li sigurno želite obrisati ovaj zapis?'; +$wb['error_no_view_permission'] = 'Nemate dozvolu za pregled zapisa ili zapis ne postoji!'; +$wb['error_no_delete_permission'] = 'Nemate dozvolu za brisanje zapisa!'; $wb['page_txt'] = 'Stranica'; $wb['page_of_txt'] = 'od'; $wb['page_and_txt'] = 'i'; $wb['page_next_txt'] = 'Naprijed'; $wb['page_back_txt'] = 'Natrag'; $wb['delete_txt'] = 'Obriši'; -$wb['filter_txt'] = 'Filter'; +$wb['filter_txt'] = 'Filtriraj'; $wb['add_new_record_txt'] = 'Dodaj'; $wb['btn_save_txt'] = 'Spremi'; $wb['btn_cancel_txt'] = 'Natrag'; @@ -70,83 +70,85 @@ $wb['datepicker_nextText'] = 'Naprijed'; $wb['datepicker_prevText'] = 'Natrag'; $wb['logout_txt'] = 'Odjavi'; $wb['conf_format_dateshort_human_readable'] = 'yyyy-mm-dd'; -$wb['submit_confirmation'] = 'Do you really want to perform this action?'; +$wb['submit_confirmation'] = 'Da li stvarno želite nastaviti?'; $wb['top_menu_mailuser'] = 'Mailuser'; -$wb['globalsearch_resultslimit_of_txt'] = 'of'; -$wb['globalsearch_resultslimit_results_txt'] = 'results'; -$wb['globalsearch_noresults_text_txt'] = 'No results.'; -$wb['globalsearch_noresults_limit_txt'] = '0 results'; -$wb['globalsearch_searchfield_watermark_txt'] = 'Search'; -$wb['globalsearch_suggestions_text_txt'] = 'Suggestions'; -$wb['global_tabchange_warning_txt'] = 'Changed data in this tab will be changed if you press OK. On cancel they will be discarded.'; -$wb['global_tabchange_discard_txt'] = 'You have unsaved changes in this tab. Changes will be discarded if you continue.'; -$wb['datalog_changes_txt'] = 'The following changes are not yet populated to all servers:'; -$wb['datalog_changes_end_txt'] = 'Storing updates can take up to one minute. Please be patient.'; -$wb['datalog_status_i_web_database'] = 'Create new database'; -$wb['datalog_status_u_web_database'] = 'Update database'; -$wb['datalog_status_d_web_database'] = 'Delete database'; -$wb['datalog_status_i_web_database_user'] = 'Create database user for database'; -$wb['datalog_status_u_web_database_user'] = 'Update database user'; -$wb['datalog_status_d_web_database_user'] = 'Delete database user'; -$wb['datalog_status_i_web_domain'] = 'Create new website'; -$wb['datalog_status_u_web_domain'] = 'Update website settings'; -$wb['datalog_status_d_web_domain'] = 'Delete website'; -$wb['datalog_status_i_ftp_user'] = 'Create FTP user'; -$wb['datalog_status_u_ftp_user'] = 'Update FTP user'; -$wb['datalog_status_d_ftp_user'] = 'Delete FTP user'; -$wb['datalog_status_i_mail_domain'] = 'Create email domain'; -$wb['datalog_status_u_mail_domain'] = 'Update email domain'; -$wb['datalog_status_d_mail_domain'] = 'Delete email domain'; -$wb['datalog_status_i_mail_user'] = 'Create email user'; -$wb['datalog_status_u_mail_user'] = 'Update email user'; -$wb['datalog_status_d_mail_user'] = 'Delete email user'; -$wb['datalog_status_i_mail_forwarding'] = 'Create email address'; -$wb['datalog_status_u_mail_forwarding'] = 'Update email address'; -$wb['datalog_status_d_mail_forwarding'] = 'Delete email address'; -$wb['datalog_status_i_dns_rr'] = 'Create DNS record'; -$wb['datalog_status_u_dns_rr'] = 'Update DNS record'; -$wb['datalog_status_d_dns_rr'] = 'Delete DNS record'; -$wb['datalog_status_i_dns_soa'] = 'Create DNS zone'; -$wb['datalog_status_u_dns_soa'] = 'Update DNS zone'; -$wb['datalog_status_d_dns_soa'] = 'Delete DNS zone'; -$wb['datalog_status_i_cron'] = 'Create cron job'; -$wb['datalog_status_u_cron'] = 'Update cron job'; -$wb['datalog_status_d_cron'] = 'Delete cron job'; -$wb['datalog_status_i_mail_get'] = 'Create mail fetcher account'; -$wb['datalog_status_u_mail_get'] = 'Update mail fetcher account'; -$wb['datalog_status_d_mail_get'] = 'Delete mail fetcher account'; -$wb['datalog_status_i_mail_mailinglist'] = 'Create mailing list'; -$wb['datalog_status_u_mail_mailinglist'] = 'Update mailing list'; -$wb['datalog_status_d_mail_mailinglist'] = 'Delete mailing list'; -$wb['datalog_status_i_shell_user'] = 'Create shell user'; -$wb['datalog_status_u_shell_user'] = 'Update shell user'; -$wb['datalog_status_d_shell_user'] = 'Delete shell user'; -$wb['datalog_status_i_web_folder'] = 'Create folder protection'; -$wb['datalog_status_u_web_folder'] = 'Update folder protection'; -$wb['datalog_status_d_web_folder'] = 'Delete folder protection'; -$wb['datalog_status_i_web_folder_user'] = 'Create folder protection user'; -$wb['datalog_status_u_web_folder_user'] = 'Update folder protection user'; -$wb['datalog_status_d_web_folder_user'] = 'Delete folder protection user'; -$wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; -$wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; -$wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; -$wb['login_as_txt'] = 'Log in as'; -$wb['no_domain_perm'] = 'You have no permission for this domain.'; -$wb['no_destination_perm'] = 'You have no permission for this destination.'; -$wb['client_you_are_locked'] = 'You have no permission to change any settings.'; -$wb['gender_m_txt'] = 'Mr.'; -$wb['gender_f_txt'] = 'Ms.'; -$wb['client_cannot_be_deleted_because_of_billing_module_txt'] = 'This client has records in the billing module, therefore he cannot be deleted.'; -$wb['yes_txt'] = 'Yes'; -$wb['no_txt'] = 'No'; -$wb['None'] = 'None'; -$wb['strength_1'] = 'Weak'; -$wb['strength_2'] = 'Fair'; -$wb['strength_3'] = 'Good'; -$wb['strength_4'] = 'Strong'; -$wb['strength_5'] = 'Very Strong'; -$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".'; -$wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.'; -$wb['security_check1_txt'] = 'Check for security permission:'; -$wb['security_check2_txt'] = 'failed.'; +$wb['globalsearch_resultslimit_of_txt'] = 'od'; +$wb['globalsearch_resultslimit_results_txt'] = 'rezultata'; +$wb['globalsearch_noresults_text_txt'] = 'Nema rezultata.'; +$wb['globalsearch_noresults_limit_txt'] = '0 rezultata'; +$wb['globalsearch_searchfield_watermark_txt'] = 'Traži'; +$wb['globalsearch_suggestions_text_txt'] = 'Sugestija'; +$wb['global_tabchange_warning_txt'] = 'Promijenjeni podaci u kartici će biti spremljeni ako pritisnete OK. Na odustani će biti poništeni.'; +$wb['global_tabchange_discard_txt'] = 'Neki podaci na kartici nisu spremljeni. Promjene će biti poništene ako nastavite.'; +$wb['datalog_changes_txt'] = 'Slijedeće promjene još nisu proslijeđene na sve servere:'; +$wb['datalog_changes_end_txt'] = 'Spremanje promjena može potrajati minutu. Budite strpljivi.'; +$wb['datalog_status_i_web_database'] = 'Kreiraj novu bazu'; +$wb['datalog_status_u_web_database'] = 'Podesi bazu'; +$wb['datalog_status_d_web_database'] = 'Obriši bazu'; +$wb['datalog_status_i_web_database_user'] = 'Kreiraj korisnika za bazu'; +$wb['datalog_status_u_web_database_user'] = 'Podesi korisnika'; +$wb['datalog_status_d_web_database_user'] = 'Obriši korisnika baze'; +$wb['datalog_status_i_web_domain'] = 'Kreiraj novu stranicu'; +$wb['datalog_status_u_web_domain'] = 'Podesi stranicu'; +$wb['datalog_status_d_web_domain'] = 'Obriši stranicu'; +$wb['datalog_status_i_ftp_user'] = 'Kreiraj FTP korisnika'; +$wb['datalog_status_u_ftp_user'] = 'Podesi FTP korisnika'; +$wb['datalog_status_d_ftp_user'] = 'Obriši FTP korisnika'; +$wb['datalog_status_i_mail_domain'] = 'Kreiraj email domenu'; +$wb['datalog_status_u_mail_domain'] = 'Podesi email domenu'; +$wb['datalog_status_d_mail_domain'] = 'Obriši email domenu'; +$wb['datalog_status_i_mail_user'] = 'Kreiraj email korisnika'; +$wb['datalog_status_u_mail_user'] = 'Podesi email korisnika'; +$wb['datalog_status_d_mail_user'] = 'Obriši email korisnika'; +$wb['datalog_status_i_mail_forwarding'] = 'Kreiraj email račun'; +$wb['datalog_status_u_mail_forwarding'] = 'Podesi email račun'; +$wb['datalog_status_d_mail_forwarding'] = 'Obriši email račun'; +$wb['datalog_status_i_dns_rr'] = 'Kreiraj DNS zapis'; +$wb['datalog_status_u_dns_rr'] = 'Podesi DNS zapis'; +$wb['datalog_status_d_dns_rr'] = 'Obriši DNS zapis'; +$wb['datalog_status_i_dns_soa'] = 'Kreiraj DNS zonu'; +$wb['datalog_status_u_dns_soa'] = 'Podesi DNS zonu'; +$wb['datalog_status_d_dns_soa'] = 'Obriši DNS zonu'; +$wb['datalog_status_i_cron'] = 'Kreiraj cron zadatak'; +$wb['datalog_status_u_cron'] = 'Podesi cron zadatak'; +$wb['datalog_status_d_cron'] = 'Obriši cron zadatak'; +$wb['datalog_status_i_mail_get'] = 'Kreiraj mail fetcher račun'; +$wb['datalog_status_u_mail_get'] = 'Podesi mail fetcher račun'; +$wb['datalog_status_d_mail_get'] = 'Obriši mail fetcher račun'; +$wb['datalog_status_i_mail_mailinglist'] = 'Kreiraj mailing listu'; +$wb['datalog_status_u_mail_mailinglist'] = 'Podesi mailing listu'; +$wb['datalog_status_d_mail_mailinglist'] = 'Obriši mailing listu'; +$wb['datalog_status_i_shell_user'] = 'Kreiraj shell korisnika'; +$wb['datalog_status_u_shell_user'] = 'Podesi shell korisnika'; +$wb['datalog_status_d_shell_user'] = 'Obriši shell korisnika'; +$wb['datalog_status_i_web_folder'] = 'Kreiraj zaštitu direktorija'; +$wb['datalog_status_u_web_folder'] = 'Podesi zaštitu direktorija'; +$wb['datalog_status_d_web_folder'] = 'Obriši zaštitu direktorija'; +$wb['datalog_status_i_web_folder_user'] = 'Kreiraj folder protection korisnika'; +$wb['datalog_status_u_web_folder_user'] = 'Podesi folder protection korisnika'; +$wb['datalog_status_d_web_folder_user'] = 'Obriši folder protection korisnika'; +$wb['datalog_status_i_spamfilter_users'] = 'Kreiraj spam filter postavke'; +$wb['datalog_status_u_spamfilter_users'] = 'Podesi spam filter postavke'; +$wb['datalog_status_d_spamfilter_users'] = 'Obriši spam filter postavke'; +$wb['login_as_txt'] = 'Logiraj se kao'; +$wb['no_domain_perm'] = 'Nemate dozvolu za ovu domenu.'; +$wb['no_destination_perm'] = 'Nemate dozvolu za ovu destinaciju.'; +$wb['client_you_are_locked'] = 'Nemate dozvolu za promjenu postavki.'; +$wb['gender_m_txt'] = 'g.'; +$wb['gender_f_txt'] = 'gđa.'; +$wb['client_cannot_be_deleted_because_of_billing_module_txt'] = 'Ovaj klijent ima zapise u modulu za naplatu, stoga ne može biti obrisan.'; +$wb['yes_txt'] = 'Da'; +$wb['no_txt'] = 'Ne'; +$wb['None'] = 'Ništa'; +$wb['strength_1'] = 'Slabo'; +$wb['strength_2'] = 'Dobro'; +$wb['strength_3'] = 'Bolje'; +$wb['strength_4'] = 'Jako'; +$wb['strength_5'] = 'Odlično'; +$wb['weak_password_txt'] = 'Unešena šifra nije dobra. Mora biti dugačka barem {chars} znakova i jačine \\"{strength}\\".'; +$wb['weak_password_length_txt'] = 'Unešena šifra nije dobra. Mora biti dugačka barem {chars} znakova.'; +$wb['security_check1_txt'] = 'Provjerite sigurnosne dozvole:'; +$wb['security_check2_txt'] = 'greška.'; ?> + + diff --git a/interface/web/admin/lib/lang/hr.lng b/interface/web/admin/lib/lang/hr.lng index d7d22d47f..919b172de 100644 --- a/interface/web/admin/lib/lang/hr.lng +++ b/interface/web/admin/lib/lang/hr.lng @@ -46,5 +46,7 @@ $wb['Import'] = 'Importiraj'; $wb['Remote Actions'] = 'Udaljene akcije'; $wb['Do OS-Update'] = 'Nadogradnja sistema'; $wb['Do ISPConfig-Update'] = 'Nadogradnja control panela'; -$wb['Directive Snippets'] = 'Directive Snippets'; +$wb['Directive Snippets'] = 'Direktive'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_directive_snippets.lng b/interface/web/admin/lib/lang/hr_directive_snippets.lng index 0f09c12ee..2c626b63e 100644 --- a/interface/web/admin/lib/lang/hr_directive_snippets.lng +++ b/interface/web/admin/lib/lang/hr_directive_snippets.lng @@ -1,10 +1,12 @@ + + diff --git a/interface/web/admin/lib/lang/hr_directive_snippets_list.lng b/interface/web/admin/lib/lang/hr_directive_snippets_list.lng index 4124ea346..15cbc57c3 100644 --- a/interface/web/admin/lib/lang/hr_directive_snippets_list.lng +++ b/interface/web/admin/lib/lang/hr_directive_snippets_list.lng @@ -1,7 +1,9 @@ + + diff --git a/interface/web/admin/lib/lang/hr_firewall.lng b/interface/web/admin/lib/lang/hr_firewall.lng index 7e28a3aaf..ae643c334 100644 --- a/interface/web/admin/lib/lang/hr_firewall.lng +++ b/interface/web/admin/lib/lang/hr_firewall.lng @@ -9,3 +9,5 @@ $wb['firewall_error_unique'] = 'Već postoji firewall zapis za ovaj server.'; $wb['tcp_ports_error_regex'] = 'Nedozvoljeni znak pri definiciji TCP porta. Dozvoljeni znakovi su znamenke, : i ,.'; $wb['udp_ports_error_regex'] = 'Nedozvoljeni znak pri definiciji UDP porta. Dozvoljeni znakovi su znamenke, : i ,.'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_firewall_list.lng b/interface/web/admin/lib/lang/hr_firewall_list.lng index 568d915a7..2bdb9d585 100644 --- a/interface/web/admin/lib/lang/hr_firewall_list.lng +++ b/interface/web/admin/lib/lang/hr_firewall_list.lng @@ -6,3 +6,5 @@ $wb['tcp_port_txt'] = 'Otvoreni TCP portovi'; $wb['udp_port_txt'] = 'Otvoreni UDP portovi'; $wb['add_new_record_txt'] = 'Dodaj Firewall zapis'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_groups.lng b/interface/web/admin/lib/lang/hr_groups.lng index 33c1e70df..df0d679bb 100644 --- a/interface/web/admin/lib/lang/hr_groups.lng +++ b/interface/web/admin/lib/lang/hr_groups.lng @@ -3,3 +3,5 @@ $wb['description_txt'] = 'Opis'; $wb['name_txt'] = 'Grupa'; $wb['name_err'] = 'Grupa mora biti barem jedan do maksimalno 30 znakova.'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_groups_list.lng b/interface/web/admin/lib/lang/hr_groups_list.lng index e88fae2e7..def87cc8a 100644 --- a/interface/web/admin/lib/lang/hr_groups_list.lng +++ b/interface/web/admin/lib/lang/hr_groups_list.lng @@ -5,3 +5,5 @@ $wb['name_txt'] = 'Grupa'; $wb['add_new_record_txt'] = 'Dodaj grupu'; $wb['warning_txt'] = 'UPOZORENJE: Ne mijenjajte postavke klijenta ovdje. Koristite '; ?> + + diff --git a/interface/web/admin/lib/lang/hr_iptables.lng b/interface/web/admin/lib/lang/hr_iptables.lng index e7eaaff82..112d75a20 100644 --- a/interface/web/admin/lib/lang/hr_iptables.lng +++ b/interface/web/admin/lib/lang/hr_iptables.lng @@ -9,5 +9,7 @@ $wb['state_txt'] = 'Stanje'; $wb['destination_ip_txt'] = 'Adresa destinacije'; $wb['source_ip_txt'] = 'Adresa izvora'; $wb['active_txt'] = 'Aktivno'; -$wb['iptables_error_unique'] = 'Već postoji firewall zapis za ovaj server.'; +$wb['iptables_error_unique'] = 'Već postoji zapis u vatrozidu za ovaj server.'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_iptables_list.lng b/interface/web/admin/lib/lang/hr_iptables_list.lng index 869bd1776..f90d7eece 100644 --- a/interface/web/admin/lib/lang/hr_iptables_list.lng +++ b/interface/web/admin/lib/lang/hr_iptables_list.lng @@ -13,3 +13,5 @@ $wb['source_ip_txt'] = 'Adresa izvora'; $wb['active_txt'] = 'Aktivno'; $wb['iptables_error_unique'] = 'Već postoji firewall zapis za ovaj server.'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_language_add.lng b/interface/web/admin/lib/lang/hr_language_add.lng index d4a3e1bd8..3536ac306 100644 --- a/interface/web/admin/lib/lang/hr_language_add.lng +++ b/interface/web/admin/lib/lang/hr_language_add.lng @@ -6,3 +6,5 @@ $wb['language_new_hint_txt'] = '2 znaka ISO 639-1 jezičnog-koda (Pogledaj http: $wb['btn_save_txt'] = 'Kreiraj novu jezičnu datoteku'; $wb['btn_cancel_txt'] = 'Natrag'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_language_complete.lng b/interface/web/admin/lib/lang/hr_language_complete.lng index e9ce1e590..1f7cb8ea1 100644 --- a/interface/web/admin/lib/lang/hr_language_complete.lng +++ b/interface/web/admin/lib/lang/hr_language_complete.lng @@ -5,3 +5,5 @@ $wb['language_select_txt'] = 'Izaberi jezik'; $wb['btn_save_txt'] = 'Spoji jezike'; $wb['btn_cancel_txt'] = 'Natrag'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_language_edit.lng b/interface/web/admin/lib/lang/hr_language_edit.lng index b223069ba..18c2e7a20 100644 --- a/interface/web/admin/lib/lang/hr_language_edit.lng +++ b/interface/web/admin/lib/lang/hr_language_edit.lng @@ -6,3 +6,5 @@ $wb['lang_file_txt'] = 'Jezična datoteka'; $wb['btn_save_txt'] = 'Spremi'; $wb['btn_cancel_txt'] = 'Natrag'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_language_export.lng b/interface/web/admin/lib/lang/hr_language_export.lng index 4799ddf85..74330bb98 100644 --- a/interface/web/admin/lib/lang/hr_language_export.lng +++ b/interface/web/admin/lib/lang/hr_language_export.lng @@ -4,3 +4,5 @@ $wb['language_select_txt'] = 'Izaberi jezik'; $wb['btn_save_txt'] = 'Eksportiraj izabranu jezičnu datoteku'; $wb['btn_cancel_txt'] = 'Natrag'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_language_import.lng b/interface/web/admin/lib/lang/hr_language_import.lng index 3f2030534..6944bcb2c 100644 --- a/interface/web/admin/lib/lang/hr_language_import.lng +++ b/interface/web/admin/lib/lang/hr_language_import.lng @@ -1,9 +1,11 @@ + + diff --git a/interface/web/admin/lib/lang/hr_language_list.lng b/interface/web/admin/lib/lang/hr_language_list.lng index 68f9cca26..2595cc82a 100644 --- a/interface/web/admin/lib/lang/hr_language_list.lng +++ b/interface/web/admin/lib/lang/hr_language_list.lng @@ -5,3 +5,5 @@ $wb['module_txt'] = 'Modul'; $wb['lang_file_txt'] = 'Jezična datoteka'; $wb['lang_file_date_txt'] = 'Zadnja promjena'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_login_as.lng b/interface/web/admin/lib/lang/hr_login_as.lng new file mode 100644 index 000000000..d2fc3704b --- /dev/null +++ b/interface/web/admin/lib/lang/hr_login_as.lng @@ -0,0 +1,13 @@ + + + diff --git a/interface/web/admin/lib/lang/hr_package_install.lng b/interface/web/admin/lib/lang/hr_package_install.lng index 181c797ab..c690075c1 100644 --- a/interface/web/admin/lib/lang/hr_package_install.lng +++ b/interface/web/admin/lib/lang/hr_package_install.lng @@ -5,3 +5,5 @@ $wb['repo_username_txt'] = 'Korisničko ime (opcionalno)'; $wb['repo_password_txt'] = 'Šifra (opcionalno)'; $wb['active_txt'] = 'Aktivno'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_remote_action.lng b/interface/web/admin/lib/lang/hr_remote_action.lng index fd1444fbd..221c3b40e 100644 --- a/interface/web/admin/lib/lang/hr_remote_action.lng +++ b/interface/web/admin/lib/lang/hr_remote_action.lng @@ -10,3 +10,5 @@ $wb['select_all_server'] = 'Svi serveri'; $wb['ispconfig_update_title'] = 'Upute za ISPConfig nadogradnju'; $wb['ispconfig_update_text'] = 'Logiraj se kao root korisnik na server (SSH) i pokreni:

ispconfig_update.sh

Pogledaj detaljne upute ovdje'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_remote_user.lng b/interface/web/admin/lib/lang/hr_remote_user.lng index fff993b7b..827b317b9 100644 --- a/interface/web/admin/lib/lang/hr_remote_user.lng +++ b/interface/web/admin/lib/lang/hr_remote_user.lng @@ -40,8 +40,10 @@ $wb['DNS rp functions'] = 'DNS rp funkcije'; $wb['DNS srv functions'] = 'DNS srv funkcije'; $wb['DNS txt functions'] = 'DNS txt funkcije'; $wb['Mail mailing list functions'] = 'Funkcije mailing lista'; -$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'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_remote_user_list.lng b/interface/web/admin/lib/lang/hr_remote_user_list.lng index 13afd0bde..629e01d7b 100644 --- a/interface/web/admin/lib/lang/hr_remote_user_list.lng +++ b/interface/web/admin/lib/lang/hr_remote_user_list.lng @@ -5,3 +5,5 @@ $wb['add_new_record_txt'] = 'Dodaj udaljenog klijenta'; $wb['parent_remote_userid_txt'] = 'ID'; $wb['username_txt'] = 'Korisničko ime'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_server.lng b/interface/web/admin/lib/lang/hr_server.lng index 39b7f361c..bd9f6a8d5 100644 --- a/interface/web/admin/lib/lang/hr_server.lng +++ b/interface/web/admin/lib/lang/hr_server.lng @@ -11,5 +11,7 @@ $wb['active_txt'] = 'Aktivan'; $wb['mirror_server_id_txt'] = 'je kopija servera'; $wb['- None -'] = '- izaberi server -'; $wb['proxy_server_txt'] = 'Proxy server'; -$wb['firewall_server_txt'] = 'Firewall server'; +$wb['firewall_server_txt'] = 'Vatrozid server'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 1b71f0b74..12c695c4e 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -41,7 +41,7 @@ $wb['hostname_error_empty'] = 'Hostname polje je prazno.'; $wb['nameservers_error_empty'] = 'Nameserver polje je prazno.'; $wb['config_dir_txt'] = 'Konfiguracijski direktorij'; $wb['init_script_txt'] = 'Inicijalizacijski naziv cron skripte'; -$wb['crontab_dir_txt'] = 'Putanja do individualnih crontabs-a'; +$wb['crontab_dir_txt'] = 'Putanja do individualnih crontab-ova'; $wb['wget_txt'] = 'Putanja do wget programa'; $wb['web_user_txt'] = 'Apache korisnik'; $wb['web_group_txt'] = 'Apache grupa'; @@ -159,13 +159,13 @@ $wb['backup_mode_userzip'] = 'Backup web files owned by web user as zip'; $wb['backup_mode_rootgz'] = 'Backup all files in web directory as root user'; $wb['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; -$wb['ssl_settings_txt'] = 'SSL Settings'; -$wb['permissions_txt'] = 'Permissions'; -$wb['php_settings_txt'] = 'PHP Settings'; -$wb['apps_vhost_settings_txt'] = 'Apps Vhost Settings'; -$wb['awstats_settings_txt'] = 'AWStats Settings'; +$wb['ssl_settings_txt'] = 'SSL postavke'; +$wb['permissions_txt'] = 'Dozvole'; +$wb['php_settings_txt'] = 'PHP postavke'; +$wb['apps_vhost_settings_txt'] = 'Apps Vhost postavke'; +$wb['awstats_settings_txt'] = 'AWStats postavke'; $wb['firewall_txt'] = 'Firewall'; -$wb['mailbox_quota_stats_txt'] = 'Mailbox quota statistics'; +$wb['mailbox_quota_stats_txt'] = 'Statistika limita sandučića'; $wb['enable_ip_wildcard_txt'] = 'Enable IP wildcard (*)'; $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attributes)'; $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; @@ -177,68 +177,70 @@ $wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; $wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; $wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; $wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; -$wb['no_notifications_txt'] = 'No Notifications'; +$wb['no_notifications_txt'] = 'Nema notifikacija'; $wb['monit_url_txt'] = 'Monit URL'; -$wb['monit_user_txt'] = 'Monit User'; -$wb['monit_password_txt'] = 'Monit Password'; -$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_user_txt'] = 'Monit korisničko ime'; +$wb['monit_password_txt'] = 'Monit šifra'; +$wb['monit_url_error_regex'] = 'Neispravan Monit URL'; $wb['monit_url_note_txt'] = 'Placeholder:'; $wb['munin_url_txt'] = 'Munin URL'; -$wb['munin_user_txt'] = 'Munin User'; -$wb['munin_password_txt'] = 'Munin Password'; -$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_user_txt'] = 'Munin korisničko ime'; +$wb['munin_password_txt'] = 'Munin šifra'; +$wb['munin_url_error_regex'] = 'Neispravan Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; -$wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['monitor_system_updates_txt'] = 'Check for Linux updates'; -$wb['hostname_error_regex'] = 'Invalid Hostname.'; -$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; -$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; -$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; -$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; -$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; -$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; -$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['backup_dir_is_mount_txt'] = 'Backup direktorij je mount-an?'; +$wb['monitor_system_updates_txt'] = 'Provjeri za Linux nadogradnje'; +$wb['hostname_error_regex'] = 'Neispravan Hostname.'; +$wb['invalid_apache_user_txt'] = 'Neispravan apache korisnik.'; +$wb['invalid_apache_group_txt'] = 'Neispravna apache grupa.'; +$wb['backup_dir_error_regex'] = 'Neispravan backup direktorij.'; +$wb['maildir_path_error_regex'] = 'Neispravna maildir putanja.'; +$wb['homedir_path_error_regex'] = 'Neispravna homedir putanja.'; +$wb['mailuser_name_error_regex'] = 'Neispravan mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Neispravan mailuser group name.'; $wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; $wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; -$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; -$wb['website_basedir_error_regex'] = 'Invalid website basedir.'; -$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; -$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; -$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; -$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; -$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; -$wb['ca_path_error_regex'] = 'Invalid CA path.'; -$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; -$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; -$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; -$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; -$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; -$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; -$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; -$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; -$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; -$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; -$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; -$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; -$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; -$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; -$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; -$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; -$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; -$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; -$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; -$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; -$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; -$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; -$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; -$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; -$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; -$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; -$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; -$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; -$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; -$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; -$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; -$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; -$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['getmail_config_dir_error_regex'] = 'Neispravan getmail config direktorij.'; +$wb['website_basedir_error_regex'] = 'Neispravan website basedir.'; +$wb['website_symlinks_error_regex'] = 'Neispravan website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Neispravan vhost config direktorij.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Neispravan vhost conf enabled direktorij.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Neispravan nginx config direktorij.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Neispravan nginx conf enabled direktorij.'; +$wb['ca_path_error_regex'] = 'Neispravna CA putanja.'; +$wb['invalid_nginx_user_txt'] = 'Neispravan nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Neispravan nginx grupa.'; +$wb['php_ini_path_apache_error_regex'] = 'Neispravna apache php.ini putanja.'; +$wb['php_ini_path_cgi_error_regex'] = 'Neispravna cgi php.ini putanja.'; +$wb['php_fpm_init_script_error_regex'] = 'Neispravna php-fpm init skripta.'; +$wb['php_fpm_ini_path_error_regex'] = 'Neispravna php-fpm ini putanja.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Neispravan php-fpm pool direktorij.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Neispravan php-fpm socket direktorij.'; +$wb['php_open_basedir_error_regex'] = 'Neispravan php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data direktorij is empty'; +$wb['awstats_data_dir_error_regex'] = 'Neispravan awstats podatkovni direktorij.'; +$wb['awstats_pl_empty'] = 'awstats.pl opcija je prazna.'; +$wb['awstats_pl_error_regex'] = 'Neispravna awstats.pl putanja.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl je prazno'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Neispravna awstats_buildstaticpages.pl putanja.'; +$wb['invalid_bind_user_txt'] = 'Neispravan BIND korisnik.'; +$wb['invalid_bind_group_txt'] = 'Neispravan BIND grupa.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Neispravan BIND zonefiles direktorij.'; +$wb['named_conf_path_error_regex'] = 'Neispravna named.conf putanja.'; +$wb['named_conf_local_path_error_regex'] = 'Neispravna named.conf.local putanja.'; +$wb['fastcgi_starter_path_error_regex'] = 'Neispravna fastcgi starter putanja.'; +$wb['fastcgi_starter_script_error_regex'] = 'Neispravan fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Neispravan fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Neispravna fastcgi putanja.'; +$wb['fastcgi_bin_error_regex'] = 'Neispravan fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Neispravan jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Neispravan jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Neispravan jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Neispravan jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Neispravan vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Neispravan cron init script.'; +$wb['crontab_dir_error_regex'] = 'Neispravan crontab direktorij.'; +$wb['cron_wget_error_regex'] = 'Neispravna cron wget putanja.'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_server_config_list.lng b/interface/web/admin/lib/lang/hr_server_config_list.lng index 4b814eb1d..f6b836e37 100644 --- a/interface/web/admin/lib/lang/hr_server_config_list.lng +++ b/interface/web/admin/lib/lang/hr_server_config_list.lng @@ -2,3 +2,5 @@ $wb['list_head_txt'] = 'Konfiguracija servera'; $wb['server_name_txt'] = 'Server'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_server_ip.lng b/interface/web/admin/lib/lang/hr_server_ip.lng index 0ddf8be14..61a989173 100644 --- a/interface/web/admin/lib/lang/hr_server_ip.lng +++ b/interface/web/admin/lib/lang/hr_server_ip.lng @@ -9,3 +9,5 @@ $wb['ip_type_txt'] = 'Vrsta'; $wb['virtualhost_port_txt'] = 'HTTP portovi'; $wb['error_port_syntax'] = 'Nedozvoljeni znakovi u port polju, unesite samo znamenke odvojene zarezom. Primjer: 80,443'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_server_ip_list.lng b/interface/web/admin/lib/lang/hr_server_ip_list.lng index d4210d3a8..0a6673dc5 100644 --- a/interface/web/admin/lib/lang/hr_server_ip_list.lng +++ b/interface/web/admin/lib/lang/hr_server_ip_list.lng @@ -8,3 +8,5 @@ $wb['virtualhost_txt'] = 'HTTP Vhost'; $wb['virtualhost_port_txt'] = 'HTTP portovi'; $wb['ip_type_txt'] = 'Vrsta'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_server_list.lng b/interface/web/admin/lib/lang/hr_server_list.lng index f14477058..189637511 100644 --- a/interface/web/admin/lib/lang/hr_server_list.lng +++ b/interface/web/admin/lib/lang/hr_server_list.lng @@ -9,5 +9,7 @@ $wb['db_server_txt'] = 'Baza'; $wb['vserver_server_txt'] = 'VServer'; $wb['add_new_record_txt'] = 'Dodaj novi server'; $wb['proxy_server_txt'] = 'Proxy'; -$wb['firewall_server_txt'] = 'Firewall'; +$wb['firewall_server_txt'] = 'Vatrozid'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_server_php.lng b/interface/web/admin/lib/lang/hr_server_php.lng index addbfa493..febb3bae2 100644 --- a/interface/web/admin/lib/lang/hr_server_php.lng +++ b/interface/web/admin/lib/lang/hr_server_php.lng @@ -1,16 +1,18 @@ + + diff --git a/interface/web/admin/lib/lang/hr_server_php_list.lng b/interface/web/admin/lib/lang/hr_server_php_list.lng index b402fd1ed..b763dcc1c 100644 --- a/interface/web/admin/lib/lang/hr_server_php_list.lng +++ b/interface/web/admin/lib/lang/hr_server_php_list.lng @@ -2,6 +2,8 @@ $wb['list_head_txt'] = 'Additional PHP Versions'; $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; -$wb['client_id_txt'] = 'Client'; +$wb['client_id_txt'] = 'Klijent'; $wb['name_txt'] = 'PHP Name'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_software_package.lng b/interface/web/admin/lib/lang/hr_software_package.lng index faffe3821..4fda4e6c0 100644 --- a/interface/web/admin/lib/lang/hr_software_package.lng +++ b/interface/web/admin/lib/lang/hr_software_package.lng @@ -4,3 +4,5 @@ $wb['package_key_txt'] = 'Package Key'; $wb['Software Package'] = 'Software Package'; $wb['Modify software package details'] = 'Modify software package details'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_software_package_install.lng b/interface/web/admin/lib/lang/hr_software_package_install.lng index 22d7e0ce7..df68e358c 100644 --- a/interface/web/admin/lib/lang/hr_software_package_install.lng +++ b/interface/web/admin/lib/lang/hr_software_package_install.lng @@ -4,3 +4,5 @@ $wb['install_key_txt'] = 'Unesi instalacijski ključ'; $wb['btn_save_txt'] = 'Pokreni instalaciju'; $wb['btn_cancel_txt'] = 'Odustani'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_software_package_list.lng b/interface/web/admin/lib/lang/hr_software_package_list.lng index 8381110fe..dc427fffa 100644 --- a/interface/web/admin/lib/lang/hr_software_package_list.lng +++ b/interface/web/admin/lib/lang/hr_software_package_list.lng @@ -5,9 +5,11 @@ $wb['package_title_txt'] = 'Paketi'; $wb['package_description_txt'] = 'Opis'; $wb['action_txt'] = 'Akcija'; $wb['toolsarea_head_txt'] = 'Paketi'; -$wb['repoupdate_txt'] = 'Obnovi listu paketa'; +$wb['repoupdate_txt'] = 'Osvježi listu paketa'; $wb['package_id_txt'] = 'lokalni App-ID'; $wb['no_packages_txt'] = 'No packages available'; $wb['edit_txt'] = 'Edit'; $wb['delete_txt'] = 'Delete'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_software_repo.lng b/interface/web/admin/lib/lang/hr_software_repo.lng index bbfb2e2db..16f210f37 100644 --- a/interface/web/admin/lib/lang/hr_software_repo.lng +++ b/interface/web/admin/lib/lang/hr_software_repo.lng @@ -6,3 +6,5 @@ $wb['repo_password_txt'] = 'Šifra (opcionalno)'; $wb['active_txt'] = 'Aktivno'; $wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_software_repo_list.lng b/interface/web/admin/lib/lang/hr_software_repo_list.lng index b79045bd7..ab81d1c6d 100644 --- a/interface/web/admin/lib/lang/hr_software_repo_list.lng +++ b/interface/web/admin/lib/lang/hr_software_repo_list.lng @@ -4,3 +4,5 @@ $wb['active_txt'] = 'Aktivno'; $wb['repo_name_txt'] = 'Repozitorij'; $wb['repo_url_txt'] = 'URL'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_software_update_list.lng b/interface/web/admin/lib/lang/hr_software_update_list.lng index ed28fafba..0990b311e 100644 --- a/interface/web/admin/lib/lang/hr_software_update_list.lng +++ b/interface/web/admin/lib/lang/hr_software_update_list.lng @@ -5,5 +5,7 @@ $wb['installed_txt'] = 'Akcija'; $wb['update_title_txt'] = 'Nadogradi'; $wb['version_txt'] = 'Verzija'; $wb['action_txt'] = 'Akcija'; -$wb['no_updates_txt'] = 'No updates available'; +$wb['no_updates_txt'] = 'Nema nadogradnji'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index 0b9fe89d4..6ab665ed4 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -69,3 +69,5 @@ $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_tpl_default_admin.lng b/interface/web/admin/lib/lang/hr_tpl_default_admin.lng index eee3af5fe..a28c5172b 100644 --- a/interface/web/admin/lib/lang/hr_tpl_default_admin.lng +++ b/interface/web/admin/lib/lang/hr_tpl_default_admin.lng @@ -1,18 +1,20 @@ + + diff --git a/interface/web/admin/lib/lang/hr_users.lng b/interface/web/admin/lib/lang/hr_users.lng index 037c86fe4..0a9ad64dc 100644 --- a/interface/web/admin/lib/lang/hr_users.lng +++ b/interface/web/admin/lib/lang/hr_users.lng @@ -7,7 +7,7 @@ $wb['passwort_txt'] = 'Šifra'; $wb['password_strength_txt'] = 'Jačina šifre'; $wb['modules_txt'] = 'Modul'; $wb['startmodule_txt'] = 'Početni modul'; -$wb['app_theme_txt'] = 'Izgled'; +$wb['app_theme_txt'] = 'Tema'; $wb['typ_txt'] = 'Vrsta'; $wb['active_txt'] = 'Aktivno'; $wb['language_txt'] = 'Jezik'; @@ -25,10 +25,12 @@ $wb['fax_txt'] = 'Faks'; $wb['groups_txt'] = 'Grupe'; $wb['default_group_txt'] = 'Standardna grupa'; $wb['startmodule_err'] = 'Početni modul nije u izabranim modulima.'; -$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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; -$wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; +$wb['username_error_collision'] = 'Korisničko ime ne može biti web ili web sa brojem.\\"'; +$wb['client_not_admin_err'] = 'Korisnik koji je u grupi klijenti ne može biti admin'; ?> + + diff --git a/interface/web/admin/lib/lang/hr_users_list.lng b/interface/web/admin/lib/lang/hr_users_list.lng index c102e5f7f..e0014c996 100644 --- a/interface/web/admin/lib/lang/hr_users_list.lng +++ b/interface/web/admin/lib/lang/hr_users_list.lng @@ -7,3 +7,5 @@ $wb['add_new_record_txt'] = 'Dodaj klijenta'; $wb['warning_txt'] = 'UPOZORENJE: Ovdje nemojte mijenjati podatke klijenta. Koristite \\"Klijent\\" i \\"Preprodavač\\" postavke u Klijent modulu. Mijenjanjem postavki klijenata ili grupa može doći do gubitka podataka!'; $wb['groups_txt'] = 'Groups'; ?> + + diff --git a/interface/web/client/lib/lang/hr.lng b/interface/web/client/lib/lang/hr.lng index 137f9bb1f..fed227eaf 100644 --- a/interface/web/client/lib/lang/hr.lng +++ b/interface/web/client/lib/lang/hr.lng @@ -1,26 +1,28 @@ '; +$wb['Messaging'] = 'Slanje poruka'; +$wb['Send email'] = 'Pošalji email'; +$wb['Edit Client Circle'] = 'Promijeni krug klijenata'; +$wb['Domains'] = 'Domene'; +$wb['domain_txt'] = 'Domena'; +$wb['client_txt'] = 'Klijent'; +$wb['error_domain_in mailuse'] = 'Ova domena ne može biti obrisana jer se koristi kao mail domena'; +$wb['error_domain_in webuse'] = 'Ova domena ne može biti obrisana jer se koristi kao web domena'; +$wb['error_client_can_not_add_domain'] = 'Ne možete dodati novu domenu'; +$wb['error_client_group_id_empty'] = 'Morate izabrati klijenta
'; ?> + + diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng index e1bbc1026..2c97be950 100644 --- a/interface/web/client/lib/lang/hr_client.lng +++ b/interface/web/client/lib/lang/hr_client.lng @@ -129,13 +129,13 @@ $wb['database_limits_txt'] = 'Database Limits'; $wb['cron_job_limits_txt'] = 'Cron Job Limits'; $wb['dns_limits_txt'] = 'DNS Limits'; $wb['virtualization_limits_txt'] = 'Virtualization Limits'; -$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'] = 'Generirajšifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; $wb['active_template_additional_txt'] = 'Active Addons'; $wb['bank_account_owner_txt'] = 'Bank account owner'; -$wb['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['email_error_isemail'] = 'Unesi ispravnu email adresu.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; @@ -154,3 +154,5 @@ $wb['added_date_txt'] = 'Added date'; $wb['parent_client_id_txt'] = 'Client of reseller'; $wb['none_txt'] = 'none'; ?> + + diff --git a/interface/web/client/lib/lang/hr_client_circle.lng b/interface/web/client/lib/lang/hr_client_circle.lng index f98a1447f..bff3a9fd5 100644 --- a/interface/web/client/lib/lang/hr_client_circle.lng +++ b/interface/web/client/lib/lang/hr_client_circle.lng @@ -1,9 +1,11 @@ + + diff --git a/interface/web/client/lib/lang/hr_client_circle_list.lng b/interface/web/client/lib/lang/hr_client_circle_list.lng index 00fd0b399..c4648b1f7 100644 --- a/interface/web/client/lib/lang/hr_client_circle_list.lng +++ b/interface/web/client/lib/lang/hr_client_circle_list.lng @@ -1,10 +1,12 @@ + + diff --git a/interface/web/client/lib/lang/hr_client_del.lng b/interface/web/client/lib/lang/hr_client_del.lng index 939cc59fb..1db0476c8 100644 --- a/interface/web/client/lib/lang/hr_client_del.lng +++ b/interface/web/client/lib/lang/hr_client_del.lng @@ -5,3 +5,5 @@ $wb['btn_save_txt'] = 'Obriši klijenta'; $wb['btn_cancel_txt'] = 'Prekini i ne briši klijenta'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> + + diff --git a/interface/web/client/lib/lang/hr_client_message.lng b/interface/web/client/lib/lang/hr_client_message.lng index 6b2a872f1..9f273affb 100644 --- a/interface/web/client/lib/lang/hr_client_message.lng +++ b/interface/web/client/lib/lang/hr_client_message.lng @@ -1,20 +1,22 @@ + + diff --git a/interface/web/client/lib/lang/hr_client_message_template.lng b/interface/web/client/lib/lang/hr_client_message_template.lng index 65e5fbfba..14d308b46 100644 --- a/interface/web/client/lib/lang/hr_client_message_template.lng +++ b/interface/web/client/lib/lang/hr_client_message_template.lng @@ -9,3 +9,5 @@ $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.'; ?> + + diff --git a/interface/web/client/lib/lang/hr_client_message_template_list.lng b/interface/web/client/lib/lang/hr_client_message_template_list.lng index d9c307ed5..3c858650b 100644 --- a/interface/web/client/lib/lang/hr_client_message_template_list.lng +++ b/interface/web/client/lib/lang/hr_client_message_template_list.lng @@ -1,5 +1,7 @@ + + diff --git a/interface/web/client/lib/lang/hr_client_template.lng b/interface/web/client/lib/lang/hr_client_template.lng index b631e518d..9cd9d084d 100644 --- a/interface/web/client/lib/lang/hr_client_template.lng +++ b/interface/web/client/lib/lang/hr_client_template.lng @@ -90,3 +90,5 @@ $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; ?> + + diff --git a/interface/web/client/lib/lang/hr_client_template_list.lng b/interface/web/client/lib/lang/hr_client_template_list.lng index cdc2f0006..53bbd164b 100644 --- a/interface/web/client/lib/lang/hr_client_template_list.lng +++ b/interface/web/client/lib/lang/hr_client_template_list.lng @@ -4,3 +4,5 @@ $wb['template_type_txt'] = 'Vrsta'; $wb['template_name_txt'] = 'Naziv predloška'; $wb['template_id_txt'] = 'Template ID'; ?> + + diff --git a/interface/web/client/lib/lang/hr_clients_list.lng b/interface/web/client/lib/lang/hr_clients_list.lng index a73369228..f4dd799d5 100644 --- a/interface/web/client/lib/lang/hr_clients_list.lng +++ b/interface/web/client/lib/lang/hr_clients_list.lng @@ -9,3 +9,5 @@ $wb['add_new_record_txt'] = 'Dodaj klijenta'; $wb['username_txt'] = 'Korisničko ime'; $wb['customer_no_txt'] = 'Customer No.'; ?> + + diff --git a/interface/web/client/lib/lang/hr_domain.lng b/interface/web/client/lib/lang/hr_domain.lng index 30f3ca054..772b88aa2 100644 --- a/interface/web/client/lib/lang/hr_domain.lng +++ b/interface/web/client/lib/lang/hr_domain.lng @@ -2,5 +2,7 @@ $wb['domain_error_empty'] = 'Ime domene je prazno'; $wb['domain_error_unique'] = 'Domena već postoji'; $wb['domain_error_regex'] = 'Ovo ime domene ne možete upotrijebiti'; -$wb['Domain'] = 'Domena'; +$wb['Domena'] = 'Domena'; ?> + + diff --git a/interface/web/client/lib/lang/hr_domain_list.lng b/interface/web/client/lib/lang/hr_domain_list.lng index d3bdd4bc4..daaf8161a 100644 --- a/interface/web/client/lib/lang/hr_domain_list.lng +++ b/interface/web/client/lib/lang/hr_domain_list.lng @@ -2,5 +2,7 @@ $wb['list_head_txt'] = 'Domene'; $wb['add_new_record_txt'] = 'Dodaj domenu'; $wb['domain_txt'] = 'Domena'; -$wb['user_txt'] = 'Client'; +$wb['user_txt'] = 'Klijent'; ?> + + diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng index 319c2a538..af1a99957 100644 --- a/interface/web/client/lib/lang/hr_reseller.lng +++ b/interface/web/client/lib/lang/hr_reseller.lng @@ -124,11 +124,11 @@ $wb['database_limits_txt'] = 'Database Limits'; $wb['cron_job_limits_txt'] = 'Cron Job Limits'; $wb['dns_limits_txt'] = 'DNS Limits'; $wb['virtualization_limits_txt'] = 'Virtualization Limits'; -$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['email_error_isemail'] = 'Please enter a valid email address.'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; +$wb['email_error_isemail'] = 'Unesi ispravnu email adresu.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; @@ -143,19 +143,21 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked'; +$wb['locked_txt'] = 'Zaključano'; $wb['canceled_txt'] = 'Canceled'; -$wb['gender_m_txt'] = 'Mr.'; -$wb['gender_f_txt'] = 'Ms.'; -$wb['gender_txt'] = 'Title'; +$wb['gender_m_txt'] = 'g.'; +$wb['gender_f_txt'] = 'gđa.'; +$wb['gender_txt'] = 'Titula'; $wb['customer_no_template_txt'] = 'Customer No. template'; $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['added_by_txt'] = 'Added by'; -$wb['added_date_txt'] = 'Added date'; +$wb['added_by_txt'] = 'Dodao'; +$wb['added_date_txt'] = 'Datum dodavanja'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; -$wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; -$wb['client_limits_txt'] = 'Client Limits'; +$wb['limit_domainmodule_txt'] = 'Domain module Limit'; +$wb['client_limits_txt'] = 'Limiti klijenata'; $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; ?> + + diff --git a/interface/web/client/lib/lang/hr_resellers_list.lng b/interface/web/client/lib/lang/hr_resellers_list.lng index bd26b348a..194d6ff87 100644 --- a/interface/web/client/lib/lang/hr_resellers_list.lng +++ b/interface/web/client/lib/lang/hr_resellers_list.lng @@ -6,6 +6,8 @@ $wb['contact_name_txt'] = 'Kontakt osoba'; $wb['city_txt'] = 'Grad'; $wb['country_txt'] = 'Država'; $wb['add_new_record_txt'] = 'Dodaj novog preprodavača'; -$wb['customer_no_txt'] = 'Customer No.'; -$wb['username_txt'] = 'Username'; +$wb['customer_no_txt'] = 'Klijent br.'; +$wb['username_txt'] = 'Korisničko ime'; ?> + + diff --git a/interface/web/dashboard/lib/lang/hr.lng b/interface/web/dashboard/lib/lang/hr.lng index 769b77ae5..4fd68c591 100644 --- a/interface/web/dashboard/lib/lang/hr.lng +++ b/interface/web/dashboard/lib/lang/hr.lng @@ -2,3 +2,5 @@ $wb['welcome_user_txt'] = 'Dobrodošao %s'; $wb['available_modules_txt'] = 'Dostupni moduli'; ?> + + diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng index 095afc408..fb27cfe15 100644 --- a/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng @@ -28,3 +28,5 @@ $wb['limit_client_txt'] = 'Klijenti'; $wb['limit_database_txt'] = 'Broj baza'; $wb['limit_mailmailinglist_txt'] = 'Broj mail lista'; ?> + + diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng index 1ab1e6665..8b3b20fc7 100644 --- a/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng +++ b/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng @@ -1,8 +1,10 @@ + + diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_modules.lng b/interface/web/dashboard/lib/lang/hr_dashlet_modules.lng index 76f2a1f7c..2ff293afb 100644 --- a/interface/web/dashboard/lib/lang/hr_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/hr_dashlet_modules.lng @@ -1,3 +1,5 @@ + + diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng b/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng index de7b5a893..46dd78127 100644 --- a/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng +++ b/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng @@ -6,3 +6,5 @@ $wb['hard_txt'] = 'Hard limit'; $wb['soft_txt'] = 'Soft limit'; $wb['no_sites_txt'] = 'No web sites found.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr.lng b/interface/web/dns/lib/lang/hr.lng index 1495b3e6d..1fba79c89 100644 --- a/interface/web/dns/lib/lang/hr.lng +++ b/interface/web/dns/lib/lang/hr.lng @@ -20,3 +20,5 @@ $wb['Templates'] = 'Predlošci'; $wb['Secondary Zones'] = 'Sekundarne zone'; $wb['Import Zone File'] = 'Importiraj zonsku datoteku'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_a.lng b/interface/web/dns/lib/lang/hr_dns_a.lng index 411390725..322010d17 100644 --- a/interface/web/dns/lib/lang/hr_dns_a.lng +++ b/interface/web/dns/lib/lang/hr_dns_a.lng @@ -13,5 +13,7 @@ $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Polje IP adresa je prazno'; $wb['data_error_regex'] = 'Neispravan format A zapisa'; $wb['data_error_duplicate'] = 'Već postoji ovaj A ili CNAME zapis'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_a_list.lng b/interface/web/dns/lib/lang/hr_dns_a_list.lng index 8fff6885d..0a1099ef0 100644 --- a/interface/web/dns/lib/lang/hr_dns_a_list.lng +++ b/interface/web/dns/lib/lang/hr_dns_a_list.lng @@ -13,3 +13,5 @@ $wb['page_txt'] = 'Stranica'; $wb['page_of_txt'] = 'od'; $wb['delete_confirmation'] = 'Sigurno želite obrisati ovaj zapis?'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_aaaa.lng b/interface/web/dns/lib/lang/hr_dns_aaaa.lng index 1f35d5102..ba0212776 100644 --- a/interface/web/dns/lib/lang/hr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/hr_dns_aaaa.lng @@ -12,5 +12,7 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Polje IPv6 adresa je prazno'; $wb['data_error_regex'] = 'Neispravan format IPv6 adrese'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_alias.lng b/interface/web/dns/lib/lang/hr_dns_alias.lng index 97f15b165..088ce4a99 100644 --- a/interface/web/dns/lib/lang/hr_dns_alias.lng +++ b/interface/web/dns/lib/lang/hr_dns_alias.lng @@ -12,5 +12,7 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Polje odredišni host je prazno'; $wb['data_error_regex'] = 'Neispravan format odredišnog hosta'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_cname.lng b/interface/web/dns/lib/lang/hr_dns_cname.lng index e3eddd685..6c281d6c6 100644 --- a/interface/web/dns/lib/lang/hr_dns_cname.lng +++ b/interface/web/dns/lib/lang/hr_dns_cname.lng @@ -13,5 +13,7 @@ $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Polje odredišni host je prazno'; $wb['data_error_regex'] = 'Neispravan format odredišnog host zapisa'; $wb['data_error_duplicate'] = 'Duplicirani A zapis ili CNAME zapis'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_hinfo.lng b/interface/web/dns/lib/lang/hr_dns_hinfo.lng index 9c8c05707..6c212b168 100644 --- a/interface/web/dns/lib/lang/hr_dns_hinfo.lng +++ b/interface/web/dns/lib/lang/hr_dns_hinfo.lng @@ -12,5 +12,7 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Nedostaju informacije o hostu'; $wb['data_error_regex'] = 'Informacije o hostu su u neispravanom formatu'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_import.lng b/interface/web/dns/lib/lang/hr_dns_import.lng index 2d1fe083e..711132cbc 100644 --- a/interface/web/dns/lib/lang/hr_dns_import.lng +++ b/interface/web/dns/lib/lang/hr_dns_import.lng @@ -1,14 +1,16 @@ + + diff --git a/interface/web/dns/lib/lang/hr_dns_mx.lng b/interface/web/dns/lib/lang/hr_dns_mx.lng index 22baa5d13..b2f800e1f 100644 --- a/interface/web/dns/lib/lang/hr_dns_mx.lng +++ b/interface/web/dns/lib/lang/hr_dns_mx.lng @@ -13,6 +13,8 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Naziv mail hosta polje je prazno'; $wb['data_error_regex'] = 'Neispravan format naziva mail host zapisa'; -$wb['duplicate_mx_record_txt'] = 'Duplicate MX record.'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['duplicate_mx_record_txt'] = 'Duplicirani MX zapis.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_ns.lng b/interface/web/dns/lib/lang/hr_dns_ns.lng index 3f1764509..c04d1a0c9 100644 --- a/interface/web/dns/lib/lang/hr_dns_ns.lng +++ b/interface/web/dns/lib/lang/hr_dns_ns.lng @@ -12,5 +12,7 @@ $wb['name_error_empty'] = 'Naziv zone nije upisan.'; $wb['name_error_regex'] = 'Naziv zone je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Nameserver nije upisan'; $wb['data_error_regex'] = 'Nameserver je u pogrešnom formatu'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_ptr.lng b/interface/web/dns/lib/lang/hr_dns_ptr.lng index ef78315fe..c6451e7f7 100644 --- a/interface/web/dns/lib/lang/hr_dns_ptr.lng +++ b/interface/web/dns/lib/lang/hr_dns_ptr.lng @@ -12,5 +12,7 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Polje Canonical naziv hosta je prazno'; $wb['data_error_regex'] = 'Neispravan format Canonical host zapisa'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_rp.lng b/interface/web/dns/lib/lang/hr_dns_rp.lng index 7da0639b1..54ab872b8 100644 --- a/interface/web/dns/lib/lang/hr_dns_rp.lng +++ b/interface/web/dns/lib/lang/hr_dns_rp.lng @@ -12,5 +12,7 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Polje za odgovornu osobu je prazno'; $wb['data_error_regex'] = 'Polje za odgovornu osobu je neispravno'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_slave.lng b/interface/web/dns/lib/lang/hr_dns_slave.lng index 9014f51da..471cbf1c5 100644 --- a/interface/web/dns/lib/lang/hr_dns_slave.lng +++ b/interface/web/dns/lib/lang/hr_dns_slave.lng @@ -1,11 +1,11 @@ these IPs (comma separated list)'; +$wb['xfer_txt'] = 'Dozvoli transfer zona
slijedećim IP-evima (odvojiti zarezom)'; $wb['server_id_error_empty'] = 'Nije izabran server.'; $wb['origin_error_empty'] = 'Zona je prazna.'; $wb['origin_error_unique'] = 'Već postoji zapis za ovu zonu.'; @@ -13,5 +13,7 @@ $wb['origin_error_regex'] = 'Zona je u pogrešnom formatu.'; $wb['ns_error_regex'] = 'NS je u pogrešnom formatu.'; $wb['eg_domain_tld'] = 'npr. domena.tld.'; $wb['ipv4_form_txt'] = 'IPv4 forma - npr. 1.2.3.4'; -$wb['secondary_zone_txt'] = 'Secondary DNS Zone'; +$wb['secondary_zone_txt'] = 'Sekundarne DNS zone'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng index 59d84877c..219b9ede2 100644 --- a/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/hr_dns_slave_admin_list.lng @@ -1,10 +1,12 @@ + + diff --git a/interface/web/dns/lib/lang/hr_dns_slave_list.lng b/interface/web/dns/lib/lang/hr_dns_slave_list.lng index 02fafc529..ced26358a 100644 --- a/interface/web/dns/lib/lang/hr_dns_slave_list.lng +++ b/interface/web/dns/lib/lang/hr_dns_slave_list.lng @@ -7,3 +7,5 @@ $wb['ns_txt'] = 'NS'; $wb['add_new_record_txt'] = 'Dodaj sekundarnu DNS zonu'; $wb['eg_domain_tld'] = 'npr. domena.tld.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_soa.lng b/interface/web/dns/lib/lang/hr_dns_soa.lng index ef72c7c63..4d9afde0a 100644 --- a/interface/web/dns/lib/lang/hr_dns_soa.lng +++ b/interface/web/dns/lib/lang/hr_dns_soa.lng @@ -9,7 +9,7 @@ $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; $wb['minimum_txt'] = 'Minimalno'; $wb['ttl_txt'] = 'TTL'; -$wb['xfer_txt'] = 'Dozvoli transfer zona
ovim IP-ovima (odvojeni zarezom)'; +$wb['xfer_txt'] = 'Dozvoli transfer zona
slijedećim IP-evima (odvojiti zarezom)'; $wb['active_txt'] = 'Aktivno'; $wb['limit_dns_zone_txt'] = 'Iskorišten je maksimalan broj DNS zapisa za vaš račun.'; $wb['client_txt'] = 'Klijent'; @@ -29,10 +29,12 @@ $wb['eg_domain_tld'] = 'npr. domena.tld'; $wb['eg_ns1_domain_tld'] = 'npr. ns1.domena.tld'; $wb['eg_webmaster_domain_tld'] = 'npr. webmaster@domena.tld'; $wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'Ova domena ne može biti promijenjena. Pošaljite zahtjev administratoru ako želite promijeniti naziv domene.'; -$wb['refresh_range_error'] = 'Min. Refresh time is 60 seconds.'; -$wb['retry_range_error'] = 'Min. Retry time is 60 seconds.'; -$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['xfer_error_regex'] = 'Also notify: Please use an IP address.'; +$wb['refresh_range_error'] = 'Minimalno vrijeme osvježavanja je 60 sekundi.'; +$wb['retry_range_error'] = 'Minimalno Retry vrijeme je 60 sekundi.'; +$wb['expire_range_error'] = 'Minimalno vrijeme isteka je 60 sekundi.'; +$wb['minimum_range_error'] = 'Minimalno vrijeme minimuma je 60 sekundi.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; +$wb['xfer_error_regex'] = 'Također obavijesti: Koristite IP adresu.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng index 183d1a834..9b24cafbe 100644 --- a/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng @@ -1,11 +1,13 @@ + + diff --git a/interface/web/dns/lib/lang/hr_dns_soa_list.lng b/interface/web/dns/lib/lang/hr_dns_soa_list.lng index cb9cbe07c..25539b829 100644 --- a/interface/web/dns/lib/lang/hr_dns_soa_list.lng +++ b/interface/web/dns/lib/lang/hr_dns_soa_list.lng @@ -1,10 +1,12 @@ + + diff --git a/interface/web/dns/lib/lang/hr_dns_srv.lng b/interface/web/dns/lib/lang/hr_dns_srv.lng index aea576869..b6213d7f6 100644 --- a/interface/web/dns/lib/lang/hr_dns_srv.lng +++ b/interface/web/dns/lib/lang/hr_dns_srv.lng @@ -9,12 +9,14 @@ $wb['port_txt'] = 'Port'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Aktivno'; $wb['aux_txt'] = 'Prioritet'; -$wb['limit_dns_record_txt'] = 'IskoriÅ¡ten je maksimalan broj DNS zapisa za vaÅ¡ raÄ�un.'; +$wb['limit_dns_record_txt'] = 'Iskorišten je maksimalan broj DNS zapisa za vaš račun.'; $wb['no_zone_perm'] = 'Nemate dozvolu za dodavanja zapisa ovoj domeni.'; $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; -$wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; +$wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'Polje serverski zapis je prazno'; $wb['data_error_regex'] = 'Neispravan format serverskog zapisa'; -$wb['srv_error_regex'] = 'Neispravan format serverskog zapisa. Mora sadržavati barem 3 tekstualne rijeÄ�i odvojene razmakom.'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['srv_error_regex'] = 'Neispravan format serverskog zapisa. Mora sadržavati barem 3 tekstualne riječi odvojene razmakom.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_template.lng b/interface/web/dns/lib/lang/hr_dns_template.lng index 100c5c823..aa880f670 100644 --- a/interface/web/dns/lib/lang/hr_dns_template.lng +++ b/interface/web/dns/lib/lang/hr_dns_template.lng @@ -4,3 +4,5 @@ $wb['fields_txt'] = 'Polja'; $wb['template_txt'] = 'Predložak'; $wb['visible_txt'] = 'Vidljivo'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_template_list.lng b/interface/web/dns/lib/lang/hr_dns_template_list.lng index 22d83c62e..2585238ed 100644 --- a/interface/web/dns/lib/lang/hr_dns_template_list.lng +++ b/interface/web/dns/lib/lang/hr_dns_template_list.lng @@ -1,6 +1,8 @@ + + diff --git a/interface/web/dns/lib/lang/hr_dns_txt.lng b/interface/web/dns/lib/lang/hr_dns_txt.lng index 1339086d4..88bb5e15e 100644 --- a/interface/web/dns/lib/lang/hr_dns_txt.lng +++ b/interface/web/dns/lib/lang/hr_dns_txt.lng @@ -12,5 +12,7 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.'; $wb['data_error_empty'] = 'TXT polje je prazno'; $wb['data_error_regex'] = 'Neispravan format TXT zapisa'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> + + diff --git a/interface/web/dns/lib/lang/hr_dns_wizard.lng b/interface/web/dns/lib/lang/hr_dns_wizard.lng index c949ed7ba..df6c34155 100644 --- a/interface/web/dns/lib/lang/hr_dns_wizard.lng +++ b/interface/web/dns/lib/lang/hr_dns_wizard.lng @@ -26,13 +26,15 @@ $wb['error_domain_regex'] = 'Domena sadrži nedozvoljene znakove.'; $wb['error_ns1_regex'] = 'NS1 sadrži nedozvoljene znakove.'; $wb['error_ns2_regex'] = 'NS2 sadrži nedozvoljene znakove.'; $wb['error_email_regex'] = 'Email adresa nije ispravna.'; -$wb['dns_zone_txt'] = 'DNS Zone'; -$wb['globalsearch_resultslimit_of_txt'] = 'of'; -$wb['globalsearch_resultslimit_results_txt'] = 'results'; -$wb['globalsearch_noresults_text_txt'] = 'No results.'; -$wb['globalsearch_noresults_limit_txt'] = '0 results'; -$wb['globalsearch_searchfield_watermark_txt'] = 'Search'; -$wb['globalsearch_suggestions_text_txt'] = 'Suggestions'; -$wb['list_head_txt'] = 'DNS Zone Wizard'; -$wb['list_desc_txt'] = 'Create a DNS Zone via a wizard'; +$wb['dns_zone_txt'] = 'DNS zona'; +$wb['globalsearch_resultslimit_of_txt'] = 'od'; +$wb['globalsearch_resultslimit_results_txt'] = 'rezultata'; +$wb['globalsearch_noresults_text_txt'] = 'Nema rezultata.'; +$wb['globalsearch_noresults_limit_txt'] = '0 rezultata'; +$wb['globalsearch_searchfield_watermark_txt'] = 'Traži'; +$wb['globalsearch_suggestions_text_txt'] = 'Sugestija'; +$wb['list_head_txt'] = 'DNS čarobnjak'; +$wb['list_desc_txt'] = 'Kreiraj DNS zonu sa čarobnjakom'; ?> + + diff --git a/interface/web/help/lib/lang/hr.lng b/interface/web/help/lib/lang/hr.lng index fd9153f23..71f5920d0 100644 --- a/interface/web/help/lib/lang/hr.lng +++ b/interface/web/help/lib/lang/hr.lng @@ -12,3 +12,5 @@ $wb['Manage Sections'] = 'Upravljaj rubrikama'; $wb['Add a Question & Answer Pair'] = 'Dodaj pitanje i odgovor'; $wb['Manage Questions'] = 'Upravljaj pitanjima'; ?> + + diff --git a/interface/web/help/lib/lang/hr_faq_form.lng b/interface/web/help/lib/lang/hr_faq_form.lng index ca798d79e..156f32717 100644 --- a/interface/web/help/lib/lang/hr_faq_form.lng +++ b/interface/web/help/lib/lang/hr_faq_form.lng @@ -4,3 +4,5 @@ $wb['faq_question_txt'] = 'Pitanje'; $wb['faq_answer_txt'] = 'Odgovor'; $wb['faq_section_txt'] = 'Rubrika'; ?> + + diff --git a/interface/web/help/lib/lang/hr_faq_manage_questions_list.lng b/interface/web/help/lib/lang/hr_faq_manage_questions_list.lng index 54f46e270..8c0376233 100644 --- a/interface/web/help/lib/lang/hr_faq_manage_questions_list.lng +++ b/interface/web/help/lib/lang/hr_faq_manage_questions_list.lng @@ -7,3 +7,5 @@ $wb['faq_sections_txt'] = 'Rubrika'; $wb['faq_faq_questions_txt'] = 'Često postavljana pitanja (FAQ)'; $wb['faq_new_question_txt'] = 'Dodaj novo pitanje i odgovor'; ?> + + diff --git a/interface/web/help/lib/lang/hr_faq_sections_form.lng b/interface/web/help/lib/lang/hr_faq_sections_form.lng index 5eba900af..1ada45e64 100644 --- a/interface/web/help/lib/lang/hr_faq_sections_form.lng +++ b/interface/web/help/lib/lang/hr_faq_sections_form.lng @@ -1,3 +1,5 @@ + + diff --git a/interface/web/help/lib/lang/hr_help_faq_list.lng b/interface/web/help/lib/lang/hr_help_faq_list.lng index 9d910dc0d..83de65ed7 100644 --- a/interface/web/help/lib/lang/hr_help_faq_list.lng +++ b/interface/web/help/lib/lang/hr_help_faq_list.lng @@ -1,3 +1,5 @@ + + diff --git a/interface/web/help/lib/lang/hr_help_faq_sections_list.lng b/interface/web/help/lib/lang/hr_help_faq_sections_list.lng index 91c78e448..21026b0a7 100644 --- a/interface/web/help/lib/lang/hr_help_faq_sections_list.lng +++ b/interface/web/help/lib/lang/hr_help_faq_sections_list.lng @@ -6,3 +6,5 @@ $wb['faq_sections_txt'] = 'Rubrike'; $wb['faq_faq_sections_txt'] = 'FAQ rubrike'; $wb['faq_new_section_txt'] = 'Dodaj novu rubriku'; ?> + + diff --git a/interface/web/help/lib/lang/hr_support_message.lng b/interface/web/help/lib/lang/hr_support_message.lng index fca139b99..eeed993e7 100644 --- a/interface/web/help/lib/lang/hr_support_message.lng +++ b/interface/web/help/lib/lang/hr_support_message.lng @@ -13,3 +13,5 @@ $wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request h $wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; $wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> + + diff --git a/interface/web/help/lib/lang/hr_support_message_list.lng b/interface/web/help/lib/lang/hr_support_message_list.lng index e7aea1ab7..eb37bac4f 100644 --- a/interface/web/help/lib/lang/hr_support_message_list.lng +++ b/interface/web/help/lib/lang/hr_support_message_list.lng @@ -5,3 +5,5 @@ $wb['subject_txt'] = 'Naslov poruke'; $wb['add_new_record_txt'] = 'Pošalji novu poruku'; $wb['date_txt'] = 'Date'; ?> + + diff --git a/interface/web/login/lib/lang/hr.lng b/interface/web/login/lib/lang/hr.lng index 670affed3..6550f5b34 100644 --- a/interface/web/login/lib/lang/hr.lng +++ b/interface/web/login/lib/lang/hr.lng @@ -14,14 +14,16 @@ $wb['pw_error_length'] = 'Duljina šifre je > 64 znakova.'; $wb['username_txt'] = 'Korisničko ime'; $wb['password_txt'] = 'Šifra'; $wb['login_button_txt'] = 'Prijava'; -$wb['pw_lost_txt'] = 'Password lost'; +$wb['pw_lost_txt'] = 'Izgubljena šifra'; $wb['error_maintenance_mode'] = 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.'; -$wb['login_txt'] = 'Login'; -$wb['pw_reset_txt'] = 'Password reset'; -$wb['pw_button_txt'] = 'Resend password'; +$wb['login_txt'] = 'Prijava'; +$wb['pw_reset_txt'] = 'Resetiraj šifru'; +$wb['pw_button_txt'] = 'Pošalji šifru'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
The default theme as been activated automatically.'; -$wb['back_txt'] = 'Back'; +$wb['back_txt'] = 'Natrag'; $wb['email_error'] = 'Email contains unallowed characters or has a invalid format.'; $wb['stay_logged_in_txt'] = 'Keep me logged in'; ?> + + diff --git a/interface/web/login/lib/lang/hr_login_as.lng b/interface/web/login/lib/lang/hr_login_as.lng index c660ff1a4..bbb66c631 100644 --- a/interface/web/login/lib/lang/hr_login_as.lng +++ b/interface/web/login/lib/lang/hr_login_as.lng @@ -3,9 +3,11 @@ $wb['login_1_txt'] = 'Do you want to login as user'; $wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; -$wb['udp_port_help_txt'] = 'Separated by comma'; -$wb['active_txt'] = 'Active'; +$wb['udp_port_help_txt'] = 'Odvojeno zarezom'; +$wb['active_txt'] = 'Aktivno'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; $wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; ?> + + diff --git a/interface/web/mail/lib/lang/hr.lng b/interface/web/mail/lib/lang/hr.lng index 313a90c4d..96cb6e472 100644 --- a/interface/web/mail/lib/lang/hr.lng +++ b/interface/web/mail/lib/lang/hr.lng @@ -5,7 +5,7 @@ $wb['Blacklist'] = 'Blacklista'; $wb['Mail Content Filter'] = 'Sadržaj mail filtera'; $wb['Filter'] = 'Filter'; $wb['Mail Domain'] = 'Mail domena'; -$wb['Domain'] = 'Domena'; +$wb['Domena'] = 'Domena'; $wb['Email Catchall'] = 'Email catchall'; $wb['Email Forward'] = 'Email proslijeđivanje'; $wb['Get Email'] = 'Primi poštu'; @@ -46,3 +46,5 @@ $wb['Domain Alias'] = 'Alias domena'; $wb['Relay Recipients'] = 'Relay primatelji'; $wb['Mailbox quota'] = 'Mailbox quota'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_alias.lng b/interface/web/mail/lib/lang/hr_mail_alias.lng index afd66333c..85cfcbd2b 100644 --- a/interface/web/mail/lib/lang/hr_mail_alias.lng +++ b/interface/web/mail/lib/lang/hr_mail_alias.lng @@ -12,3 +12,5 @@ $wb['domain_txt'] = 'Domena'; $wb['duplicate_email_alias_txt'] = 'This email alias does already exist.'; $wb['source_txt'] = 'Alias'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_alias_list.lng b/interface/web/mail/lib/lang/hr_mail_alias_list.lng index 2790cb345..ba1bd7bb9 100644 --- a/interface/web/mail/lib/lang/hr_mail_alias_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_alias_list.lng @@ -6,3 +6,5 @@ $wb['destination_txt'] = 'Odredište'; $wb['email_txt'] = 'Email'; $wb['add_new_record_txt'] = 'Dodaj email alias'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_aliasdomain.lng b/interface/web/mail/lib/lang/hr_mail_aliasdomain.lng index fc77f6c73..9797edbf4 100644 --- a/interface/web/mail/lib/lang/hr_mail_aliasdomain.lng +++ b/interface/web/mail/lib/lang/hr_mail_aliasdomain.lng @@ -9,3 +9,5 @@ $wb['source_error_empty'] = 'Izvorna domena je prazna.'; $wb['source_error_unique'] = 'Duplicirana izvorna domena.'; $wb['source_error_regex'] = 'Neispravan naziv izvorne domene.'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/hr_mail_aliasdomain_list.lng index 3aa551491..b9551d2f7 100644 --- a/interface/web/mail/lib/lang/hr_mail_aliasdomain_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_aliasdomain_list.lng @@ -5,3 +5,5 @@ $wb['source_txt'] = 'Izvor'; $wb['destination_txt'] = 'Destinacija'; $wb['add_new_record_txt'] = 'Add new Domain alias'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_blacklist.lng b/interface/web/mail/lib/lang/hr_mail_blacklist.lng index dbce8de10..722f56b9b 100644 --- a/interface/web/mail/lib/lang/hr_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/hr_mail_blacklist.lng @@ -7,3 +7,5 @@ $wb['source_error_notempty'] = 'Adresa je prazna'; $wb['type_txt'] = 'Vrsta'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters for your account is reached.'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_blacklist_list.lng b/interface/web/mail/lib/lang/hr_mail_blacklist_list.lng index 8cbb63a3b..f600904bf 100644 --- a/interface/web/mail/lib/lang/hr_mail_blacklist_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_blacklist_list.lng @@ -8,3 +8,5 @@ $wb['recipient_txt'] = 'Primatelj'; $wb['add_new_record_txt'] = 'Dodaj novi zapis na blacklistu'; $wb['access_txt'] = 'pristup'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_content_filter.lng b/interface/web/mail/lib/lang/hr_mail_content_filter.lng index f012957a7..75e0e1f0a 100644 --- a/interface/web/mail/lib/lang/hr_mail_content_filter.lng +++ b/interface/web/mail/lib/lang/hr_mail_content_filter.lng @@ -7,3 +7,5 @@ $wb['action_txt'] = 'Akcija'; $wb['active_txt'] = 'Aktivno'; $wb['pattern_error_empty'] = 'Postupak je prazan.'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_content_filter_list.lng b/interface/web/mail/lib/lang/hr_mail_content_filter_list.lng index 265722700..d712e753f 100644 --- a/interface/web/mail/lib/lang/hr_mail_content_filter_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_content_filter_list.lng @@ -6,3 +6,5 @@ $wb['pattern_txt'] = 'Pattern'; $wb['action_txt'] = 'Akcija'; $wb['add_new_record_txt'] = 'Add new Content Filter'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_domain.lng b/interface/web/mail/lib/lang/hr_mail_domain.lng index 6dae122b5..39fc41414 100644 --- a/interface/web/mail/lib/lang/hr_mail_domain.lng +++ b/interface/web/mail/lib/lang/hr_mail_domain.lng @@ -11,3 +11,5 @@ $wb['limit_maildomain_txt'] = 'Iskorišten je maksimalan broj email domena.'; $wb['policy_txt'] = 'Spamfilter'; $wb['no_policy'] = '- nema pravila -'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/hr_mail_domain_admin_list.lng index 4d13ef314..c8dc1bf79 100644 --- a/interface/web/mail/lib/lang/hr_mail_domain_admin_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_domain_admin_list.lng @@ -6,3 +6,5 @@ $wb['add_new_record_txt'] = 'Dodaj domenu'; $wb['active_txt'] = 'Aktivno'; $wb['sys_groupid_txt'] = 'Klijent'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng index 2c8d23e21..cf6624c84 100644 --- a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng @@ -9,3 +9,5 @@ $wb['limit_mailcatchall_txt'] = 'Iskorišten ja maksimalan broj email catchall r $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/hr_mail_domain_catchall_list.lng index 81108fa9e..a11e2a364 100644 --- a/interface/web/mail/lib/lang/hr_mail_domain_catchall_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_domain_catchall_list.lng @@ -7,3 +7,5 @@ $wb['server_id_txt'] = 'Server'; $wb['domain_txt'] = 'Domena'; $wb['add_new_record_txt'] = 'Dodaj catchall'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_domain_list.lng b/interface/web/mail/lib/lang/hr_mail_domain_list.lng index e078c283c..8102d1a61 100644 --- a/interface/web/mail/lib/lang/hr_mail_domain_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_domain_list.lng @@ -5,3 +5,5 @@ $wb['domain_txt'] = 'Domena'; $wb['add_new_record_txt'] = 'Dodaj domenu'; $wb['active_txt'] = 'Aktivno'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_forward.lng b/interface/web/mail/lib/lang/hr_mail_forward.lng index 3cad2bfcd..b43a3071a 100644 --- a/interface/web/mail/lib/lang/hr_mail_forward.lng +++ b/interface/web/mail/lib/lang/hr_mail_forward.lng @@ -5,5 +5,7 @@ $wb['active_txt'] = 'Aktivno'; $wb['limit_mailforward_txt'] = 'Iskorišten je maksimalan broj email forwardera.'; $wb['duplicate_mailbox_txt'] = 'Već postoji mailbox sa tom email adresom'; $wb['domain_txt'] = 'Domena'; -$wb['source_txt'] = 'Source Email'; +$wb['source_txt'] = 'Izvorni email'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_forward_list.lng b/interface/web/mail/lib/lang/hr_mail_forward_list.lng index 895fafb6d..ad29df2e6 100644 --- a/interface/web/mail/lib/lang/hr_mail_forward_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_forward_list.lng @@ -6,3 +6,5 @@ $wb['destination_txt'] = 'Destinacija'; $wb['email_txt'] = 'Email'; $wb['add_new_record_txt'] = 'Add new Email forward'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_get.lng b/interface/web/mail/lib/lang/hr_mail_get.lng index 18c53a4d5..4d5cb0221 100644 --- a/interface/web/mail/lib/lang/hr_mail_get.lng +++ b/interface/web/mail/lib/lang/hr_mail_get.lng @@ -17,3 +17,5 @@ $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; $wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_get_list.lng b/interface/web/mail/lib/lang/hr_mail_get_list.lng index 9cd92dd97..bdd21ab6a 100644 --- a/interface/web/mail/lib/lang/hr_mail_get_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_get_list.lng @@ -7,3 +7,5 @@ $wb['source_username_txt'] = 'Korisničko ime'; $wb['destination_txt'] = 'Destinacija'; $wb['add_new_record_txt'] = 'Dodaj novi račun'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_mailinglist.lng b/interface/web/mail/lib/lang/hr_mail_mailinglist.lng index 361af68e3..f800382b1 100644 --- a/interface/web/mail/lib/lang/hr_mail_mailinglist.lng +++ b/interface/web/mail/lib/lang/hr_mail_mailinglist.lng @@ -12,11 +12,13 @@ $wb['listname_txt'] = 'Naziv liste'; $wb['client_txt'] = 'Klijent'; $wb['email_txt'] = 'Email'; $wb['password_txt'] = 'Šifra'; -$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'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; $wb['listname_error_unique'] = 'There is already a mailinlist with name on the server. Please choose a different listname.'; -$wb['email_error_isemail'] = 'Email address is invalid.'; -$wb['mailinglist_txt'] = 'Mailing list'; +$wb['email_error_isemail'] = 'Email adresa je neispravna.'; +$wb['mailinglist_txt'] = 'Email lista'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/hr_mail_mailinglist_list.lng index 48b8c8b32..8550dedef 100644 --- a/interface/web/mail/lib/lang/hr_mail_mailinglist_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_mailinglist_list.lng @@ -3,3 +3,5 @@ $wb['list_head_txt'] = 'Mailing lista'; $wb['domain_txt'] = 'Domena'; $wb['listname_txt'] = 'Naziv liste'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_relay_recipient.lng b/interface/web/mail/lib/lang/hr_mail_relay_recipient.lng index 3555ed250..73f4d78c5 100644 --- a/interface/web/mail/lib/lang/hr_mail_relay_recipient.lng +++ b/interface/web/mail/lib/lang/hr_mail_relay_recipient.lng @@ -7,3 +7,5 @@ $wb['source_error_notempty'] = 'Adresa je prazna'; $wb['type_txt'] = 'Vrsta'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters for your account is reached.'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/hr_mail_relay_recipient_list.lng index ad15e008b..f6ed8e0c2 100644 --- a/interface/web/mail/lib/lang/hr_mail_relay_recipient_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_relay_recipient_list.lng @@ -7,3 +7,5 @@ $wb['recipient_txt'] = 'Pimatelj'; $wb['add_new_record_txt'] = 'Add new relay recipient'; $wb['access_txt'] = 'pristup'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_spamfilter.lng b/interface/web/mail/lib/lang/hr_mail_spamfilter.lng index 90321d0d8..802406909 100644 --- a/interface/web/mail/lib/lang/hr_mail_spamfilter.lng +++ b/interface/web/mail/lib/lang/hr_mail_spamfilter.lng @@ -15,3 +15,5 @@ $wb['email_error_unique'] = 'There is already an spamfilter record for this emai $wb['spam_redirect_maildir_purge_txt'] = 'Purge Maildir after'; $wb['days_txt'] = 'Days.'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/hr_mail_spamfilter_list.lng index 654bc339e..988fbf4bc 100644 --- a/interface/web/mail/lib/lang/hr_mail_spamfilter_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_spamfilter_list.lng @@ -6,3 +6,5 @@ $wb['server_name_txt'] = 'server_name'; $wb['email_txt'] = 'Email'; $wb['add_new_record_txt'] = 'Add new Spamfilter record'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_transport.lng b/interface/web/mail/lib/lang/hr_mail_transport.lng index c27687f95..93c2f01a0 100644 --- a/interface/web/mail/lib/lang/hr_mail_transport.lng +++ b/interface/web/mail/lib/lang/hr_mail_transport.lng @@ -9,3 +9,5 @@ $wb['active_txt'] = 'Aktivno'; $wb['limit_mailrouting_txt'] = 'Iskorišten je maksimalan broj ruta.'; $wb['transport_txt'] = 'Transport'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_transport_list.lng b/interface/web/mail/lib/lang/hr_mail_transport_list.lng index d86d9e551..012786468 100644 --- a/interface/web/mail/lib/lang/hr_mail_transport_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_transport_list.lng @@ -7,3 +7,5 @@ $wb['transport_txt'] = 'Transport'; $wb['sort_order_txt'] = 'Sort by'; $wb['add_new_record_txt'] = 'Add new transport'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index d91dd2be0..67d7746a6 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -43,11 +43,13 @@ $wb['error_login_email_txt'] = 'This login is not allowed. Please enter a differ $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.'; $wb['autoresponder_subject_txt'] = 'Email Subject'; $wb['autoresponder_subject'] = 'Out of office reply'; -$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'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_user_filter.lng b/interface/web/mail/lib/lang/hr_mail_user_filter.lng index dc9009943..acc99b256 100644 --- a/interface/web/mail/lib/lang/hr_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/hr_mail_user_filter.lng @@ -1,20 +1,22 @@ + + diff --git a/interface/web/mail/lib/lang/hr_mail_user_filter_list.lng b/interface/web/mail/lib/lang/hr_mail_user_filter_list.lng index d101a7217..1cad4871e 100644 --- a/interface/web/mail/lib/lang/hr_mail_user_filter_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_user_filter_list.lng @@ -1,7 +1,9 @@ + + diff --git a/interface/web/mail/lib/lang/hr_mail_user_list.lng b/interface/web/mail/lib/lang/hr_mail_user_list.lng index 762aea1d4..b56aa4717 100644 --- a/interface/web/mail/lib/lang/hr_mail_user_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_user_list.lng @@ -1,8 +1,10 @@ + + diff --git a/interface/web/mail/lib/lang/hr_mail_user_stats_list.lng b/interface/web/mail/lib/lang/hr_mail_user_stats_list.lng index edde65bd7..df269d69a 100644 --- a/interface/web/mail/lib/lang/hr_mail_user_stats_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_user_stats_list.lng @@ -6,3 +6,5 @@ $wb['last_month_txt'] = 'Last month'; $wb['this_year_txt'] = 'This year'; $wb['last_year_txt'] = 'Last year'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_mail_whitelist.lng b/interface/web/mail/lib/lang/hr_mail_whitelist.lng index a43e8eef4..bd01a3c86 100644 --- a/interface/web/mail/lib/lang/hr_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/hr_mail_whitelist.lng @@ -7,3 +7,5 @@ $wb['source_error_notempty'] = 'Adresa je prazna'; $wb['type_txt'] = 'Vrsta'; $wb['limit_mailfilter_txt'] = 'The max. number of email filters for your account is reached.'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/hr_spamfilter_blacklist.lng index d1562e6ce..94f7c9274 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_blacklist.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_blacklist.lng @@ -10,3 +10,5 @@ $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/hr_spamfilter_blacklist_list.lng index 8a21dd668..c704b2a57 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_blacklist_list.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_blacklist_list.lng @@ -7,3 +7,5 @@ $wb['rid_txt'] = 'User'; $wb['email_txt'] = 'Blacklisted Email'; $wb['add_new_record_txt'] = 'Add Blacklist record'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_config.lng b/interface/web/mail/lib/lang/hr_spamfilter_config.lng index 2843133ca..d531cc14e 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_config.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_config.lng @@ -18,3 +18,5 @@ $wb['relayhost_password_txt'] = 'Relayhost Password'; $wb['mailbox_size_limit_txt'] = 'Mailbox Size Limit'; $wb['message_size_limit_txt'] = 'Message Size Limit'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_config_list.lng b/interface/web/mail/lib/lang/hr_spamfilter_config_list.lng index ac925e4ee..f18951240 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_config_list.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_config_list.lng @@ -3,3 +3,5 @@ $wb['list_head_txt'] = 'Konfiguracija servera'; $wb['server_name_txt'] = 'Server'; $wb['server_id_txt'] = 'server_id'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_policy.lng b/interface/web/mail/lib/lang/hr_spamfilter_policy.lng index e876330a6..877c431b1 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_policy.lng @@ -36,3 +36,5 @@ $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/hr_spamfilter_policy_list.lng index 84381b241..c984e4190 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_policy_list.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_policy_list.lng @@ -7,3 +7,5 @@ $wb['banned_files_lover_txt'] = 'Zabranjene datoteke'; $wb['bad_header_lover_txt'] = 'Neispravan header'; $wb['add_new_record_txt'] = 'Dodaj pravilo'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_users.lng b/interface/web/mail/lib/lang/hr_spamfilter_users.lng index 9969ef421..24d7c783c 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_users.lng @@ -11,3 +11,5 @@ $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_users_list.lng b/interface/web/mail/lib/lang/hr_spamfilter_users_list.lng index 99e4636f6..d56e1c68d 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_users_list.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_users_list.lng @@ -8,3 +8,5 @@ $wb['fullname_txt'] = 'Name'; $wb['email_txt'] = 'Email'; $wb['add_new_record_txt'] = 'Add Spamfilter User'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/hr_spamfilter_whitelist.lng index d1562e6ce..94f7c9274 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_whitelist.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_whitelist.lng @@ -10,3 +10,5 @@ $wb['10 - highest'] = '10 - highest'; $wb['5 - medium'] = '5 - medium'; $wb['1 - lowest'] = '1 - lowest'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/hr_spamfilter_whitelist_list.lng index 7dd21f10a..9c8dd1ac2 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_whitelist_list.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_whitelist_list.lng @@ -7,3 +7,5 @@ $wb['rid_txt'] = 'Korisnik'; $wb['email_txt'] = 'Whitelistani email'; $wb['add_new_record_txt'] = 'Dodaj whitelistu'; ?> + + diff --git a/interface/web/mail/lib/lang/hr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/hr_user_quota_stats_list.lng index a41b1a94c..45139608f 100644 --- a/interface/web/mail/lib/lang/hr_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/hr_user_quota_stats_list.lng @@ -1,8 +1,10 @@ + + diff --git a/interface/web/mailuser/lib/lang/hr.lng b/interface/web/mailuser/lib/lang/hr.lng index 114dec9b9..211312287 100644 --- a/interface/web/mailuser/lib/lang/hr.lng +++ b/interface/web/mailuser/lib/lang/hr.lng @@ -1,9 +1,11 @@ + + diff --git a/interface/web/mailuser/lib/lang/hr_index.lng b/interface/web/mailuser/lib/lang/hr_index.lng index 29fe9ea4f..5daeff1ee 100644 --- a/interface/web/mailuser/lib/lang/hr_index.lng +++ b/interface/web/mailuser/lib/lang/hr_index.lng @@ -1,12 +1,14 @@ + + diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/hr_mail_user_autoresponder.lng index 79f386a7d..6cf47669f 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_autoresponder.lng @@ -1,13 +1,15 @@ + + diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_cc.lng b/interface/web/mailuser/lib/lang/hr_mail_user_cc.lng index 81877884c..4c5474530 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_cc.lng @@ -7,3 +7,5 @@ $wb['email_is_cc_error'] = 'Email address and send copy to address can not be th $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; ?> + + diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_filter.lng b/interface/web/mailuser/lib/lang/hr_mail_user_filter.lng index 2e74ffd4f..33679318d 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_filter.lng @@ -1,20 +1,22 @@ + + diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/hr_mail_user_filter_list.lng index fb6b9dfa5..640365998 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_filter_list.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_filter_list.lng @@ -1,8 +1,10 @@ + + diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_password.lng b/interface/web/mailuser/lib/lang/hr_mail_user_password.lng index cdf9674e7..73d6c7dfb 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_password.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_password.lng @@ -1,10 +1,12 @@ + + diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/hr_mail_user_spamfilter.lng index be4bad905..0f82f0aa9 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_spamfilter.lng @@ -1,7 +1,9 @@ + + diff --git a/interface/web/monitor/lib/lang/hr.lng b/interface/web/monitor/lib/lang/hr.lng index da1a09dc6..792439254 100644 --- a/interface/web/monitor/lib/lang/hr.lng +++ b/interface/web/monitor/lib/lang/hr.lng @@ -73,7 +73,7 @@ $wb['monitor_serverstate_critical_txt'] = 'kritičnih'; $wb['monitor_serverstate_error_txt'] = 'grešaka/i'; $wb['monitor_serverstate_moreinfo_txt'] = 'Više informacija...'; $wb['monitor_serverstate_more_txt'] = 'Više...'; -$wb['monitor_serverstate_fclamok_txt'] = 'Antivirusna zaštita je ok'; +$wb['monitor_serverstate_fclamok_txt'] = 'Antivirusna zaštita je OK'; $wb['monitor_serverstate_fclamoutdated_txt'] = 'Vaša antivirusna zaštita je stara!'; $wb['monitor_serverstate_fclamunknown_txt'] = 'Freshclam: ???!'; $wb['monitor_serverstate_hdok_txt'] = 'Stanje vašeg tvrdog diska je ok'; @@ -88,19 +88,19 @@ $wb['monitor_serverstate_listwarning_txt'] = 'upozorenje'; $wb['monitor_serverstate_listcritical_txt'] = 'kritično'; $wb['monitor_serverstate_listerror_txt'] = 'greška'; $wb['monitor_serverstate_listunknown_txt'] = 'nepoznato'; -$wb['monitor_serverstate_loadok_txt'] = 'Opterećenje servera je ok'; +$wb['monitor_serverstate_loadok_txt'] = 'Opterećenje servera je OK'; $wb['monitor_serverstate_loadheavy_txt'] = 'Server je pod opterećenjem'; $wb['monitor_serverstate_loadhigh_txt'] = 'Server je pod velikim opterećenjem'; $wb['monitor_serverstate_loaghigher_txt'] = 'Server je pod vrlo velikim opterećenjem'; $wb['monitor_serverstate_loadhighest_txt'] = 'Server je maksimalno opterećen'; $wb['monitor_serverstate_loadunknown_txt'] = 'Opterećenje servera: ???'; -$wb['monitor_serverstate_mailqok_txt'] = 'Mail redoslijed opterećenje je ok'; +$wb['monitor_serverstate_mailqok_txt'] = 'Mail redoslijed opterećenje je OK'; $wb['monitor_serverstate_mailqheavy_txt'] = 'Mail redoslijed je pod opterećenjem'; $wb['monitor_serverstate_mailqhigh_txt'] = 'Mail redoslijed je pod velikim opterećenjem'; $wb['monitor_serverstate_mailqhigher_txt'] = 'Mail redoslijed je pod vrlo velikim opterećenjem'; $wb['monitor_serverstate_mailqhighest_txt'] = 'Mail redoslijed je maksimalno opterećen'; $wb['monitor_serverstate_mailqunknown_txt'] = 'Mail redoslijed: ???'; -$wb['monitor_serverstate_raidok_txt'] = 'RAID je ok'; +$wb['monitor_serverstate_raidok_txt'] = 'RAID je OK'; $wb['monitor_serverstate_raidresync_txt'] = 'RAID je u RESYNC modu'; $wb['monitor_serverstate_raidfault_txt'] = 'Jedan RAID disk je neispravan. Zamjenite disk što prije'; $wb['monitor_serverstate_raiderror_txt'] = 'RAID više ne radi'; @@ -115,7 +115,7 @@ $wb['monitor_serverstate_syslogunknown_txt'] = 'Sistemski log: ???'; $wb['monitor_serverstate_updatesok_txt'] = 'Nema nadogradnji za sistem.'; $wb['monitor_serverstate_updatesneeded_txt'] = 'Postoji nadogradnja za jednu ili više komponenti '; $wb['monitor_serverstate_updatesunknown_txt'] = 'Nadogradnja sistema: ???'; -$wb['monitor_serverstate_beancounterok_txt'] = 'Beancounter je ok'; +$wb['monitor_serverstate_beancounterok_txt'] = 'Beancounter je OK'; $wb['monitor_serverstate_beancounterinfo_txt'] = 'Postoje greške u beancounter-u'; $wb['monitor_serverstate_beancounterwarning_txt'] = 'Postoji par greški u beancounter-u'; $wb['monitor_serverstate_beancountercritical_txt'] = 'Postoji puno grešaka u beancounter-u'; @@ -146,10 +146,12 @@ $wb['monitor_title_iptables_txt'] = 'IPTables zaštita'; $wb['Show fail2ban-Log'] = 'Prikaži Fail2Ban log'; $wb['Show IPTables'] = 'Prikaži IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Prikaži OpenVz VE BeanCounter'; -$wb['Show Monit'] = 'Show Monit'; -$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; -$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; -$wb['Show Munin'] = 'Show Munin'; +$wb['Show Monit'] = 'Prikaži Monit'; +$wb['no_monit_url_defined_txt'] = 'Monit URL nije definiran.'; +$wb['no_permissions_to_view_monit_txt'] = 'Nemate dozvolu za pristup Monit-u.'; +$wb['Show Munin'] = 'Prikaži Munin'; $wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; -$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; +$wb['no_permissions_to_view_munin_txt'] = 'Nemate dozvolu za pristup Munin-u.'; ?> + + diff --git a/interface/web/monitor/lib/lang/hr_datalog_list.lng b/interface/web/monitor/lib/lang/hr_datalog_list.lng index e6e8f8652..46b0c64a0 100644 --- a/interface/web/monitor/lib/lang/hr_datalog_list.lng +++ b/interface/web/monitor/lib/lang/hr_datalog_list.lng @@ -6,3 +6,5 @@ $wb['dbtable_txt'] = 'Tablica u bazi'; $wb['action_txt'] = 'Akcija'; $wb['status_txt'] = 'Status'; ?> + + diff --git a/interface/web/monitor/lib/lang/hr_syslog_list.lng b/interface/web/monitor/lib/lang/hr_syslog_list.lng index 83c5fcdf4..2193d38c3 100644 --- a/interface/web/monitor/lib/lang/hr_syslog_list.lng +++ b/interface/web/monitor/lib/lang/hr_syslog_list.lng @@ -5,3 +5,5 @@ $wb['server_id_txt'] = 'Server'; $wb['loglevel_txt'] = 'Logovi'; $wb['message_txt'] = 'Poruka'; ?> + + diff --git a/interface/web/sites/lib/lang/hr.lng b/interface/web/sites/lib/lang/hr.lng index 8a18c4763..4105a59f0 100644 --- a/interface/web/sites/lib/lang/hr.lng +++ b/interface/web/sites/lib/lang/hr.lng @@ -1,15 +1,15 @@ + + diff --git a/interface/web/sites/lib/lang/hr_aps.lng b/interface/web/sites/lib/lang/hr_aps.lng index 29fb7b6a4..799e3370f 100644 --- a/interface/web/sites/lib/lang/hr_aps.lng +++ b/interface/web/sites/lib/lang/hr_aps.lng @@ -1,37 +1,37 @@ + + diff --git a/interface/web/sites/lib/lang/hr_aps_instances_list.lng b/interface/web/sites/lib/lang/hr_aps_instances_list.lng index 052d834a7..2d737a6f7 100644 --- a/interface/web/sites/lib/lang/hr_aps_instances_list.lng +++ b/interface/web/sites/lib/lang/hr_aps_instances_list.lng @@ -1,13 +1,15 @@ + + diff --git a/interface/web/sites/lib/lang/hr_aps_packages_list.lng b/interface/web/sites/lib/lang/hr_aps_packages_list.lng index 68c378085..7e7b6b30d 100644 --- a/interface/web/sites/lib/lang/hr_aps_packages_list.lng +++ b/interface/web/sites/lib/lang/hr_aps_packages_list.lng @@ -6,3 +6,5 @@ $wb['category_txt'] = 'Category'; $wb['status_txt'] = 'Unlocked'; $wb['filter_txt'] = 'Search'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_aps_update_packagelist.lng b/interface/web/sites/lib/lang/hr_aps_update_packagelist.lng index ce9fcf68f..591c49ccf 100644 --- a/interface/web/sites/lib/lang/hr_aps_update_packagelist.lng +++ b/interface/web/sites/lib/lang/hr_aps_update_packagelist.lng @@ -1,7 +1,9 @@ + + diff --git a/interface/web/sites/lib/lang/hr_cron.lng b/interface/web/sites/lib/lang/hr_cron.lng index de37668bd..2bc8fb7d3 100644 --- a/interface/web/sites/lib/lang/hr_cron.lng +++ b/interface/web/sites/lib/lang/hr_cron.lng @@ -18,7 +18,9 @@ $wb['run_month_error_format'] = 'Pogrešan format za mjesece.'; $wb['run_wday_error_format'] = 'Pogrešan format za dane u tjednu.'; $wb['command_error_format'] = 'Pogrešan format komande. U slučaju pozivanja URL-a koristite samo http/https.'; $wb['unknown_fieldtype_error'] = 'Koristi se nepoznata vrsta polja.'; -$wb['server_id_error_empty'] = 'The server ID is empty.'; -$wb['limit_cron_url_txt'] = 'URL cron only. Please enter a URL starting with http:// as cron command.'; -$wb['command_error_empty'] = 'Command is empty.'; +$wb['server_id_error_empty'] = 'ID servera je preazan.'; +$wb['limit_cron_url_txt'] = 'Samo za URL cron. Unesite URL koji počinje sa http:// kao cron naredba.'; +$wb['command_error_empty'] = 'Naredba je prazna.'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_cron_list.lng b/interface/web/sites/lib/lang/hr_cron_list.lng index c0107df63..bf448ec0d 100644 --- a/interface/web/sites/lib/lang/hr_cron_list.lng +++ b/interface/web/sites/lib/lang/hr_cron_list.lng @@ -11,3 +11,5 @@ $wb['command_txt'] = 'Komanda'; $wb['add_new_cron_txt'] = 'Dodaj novi cron zadatak'; $wb['parent_domain_id_txt'] = 'Web stranica'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_database.lng b/interface/web/sites/lib/lang/hr_database.lng index 381e77a3b..06e0d919d 100644 --- a/interface/web/sites/lib/lang/hr_database.lng +++ b/interface/web/sites/lib/lang/hr_database.lng @@ -26,11 +26,11 @@ $wb['parent_domain_id_txt'] = 'Site'; $wb['database_site_error_empty'] = 'Select the site to which the database belongs.'; $wb['select_site_txt'] = '- Select Site -'; $wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$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['btn_cancel_txt'] = 'Odustani'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; $wb['globalsearch_resultslimit_of_txt'] = 'of'; $wb['globalsearch_resultslimit_results_txt'] = 'results'; $wb['globalsearch_noresults_text_txt'] = 'No results.'; @@ -44,3 +44,5 @@ $wb['no_dbuser_txt'] = 'None'; $wb['database_client_differs_txt'] = 'The client of the parent web and the database do not match.'; $wb['database_user_missing_txt'] = 'Please select a database user for this database.'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_database_admin_list.lng b/interface/web/sites/lib/lang/hr_database_admin_list.lng index 19c99568b..e0bbab5d3 100644 --- a/interface/web/sites/lib/lang/hr_database_admin_list.lng +++ b/interface/web/sites/lib/lang/hr_database_admin_list.lng @@ -7,5 +7,7 @@ $wb['database_user_txt'] = 'Korisnik baze'; $wb['database_name_txt'] = 'Naziv baze'; $wb['add_new_record_txt'] = 'Dodaj bazu'; $wb['sys_groupid_txt'] = 'Klijent'; -$wb['parent_domain_id_txt'] = 'Website'; +$wb['parent_domain_id_txt'] = 'Web stranica'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_database_list.lng b/interface/web/sites/lib/lang/hr_database_list.lng index baec9d4cd..b98d44c28 100644 --- a/interface/web/sites/lib/lang/hr_database_list.lng +++ b/interface/web/sites/lib/lang/hr_database_list.lng @@ -6,5 +6,7 @@ $wb['server_id_txt'] = 'Server'; $wb['database_user_txt'] = 'Korisnik baze'; $wb['database_name_txt'] = 'Naziv baze'; $wb['add_new_record_txt'] = 'Dodaj bazu'; -$wb['parent_domain_id_txt'] = 'Website'; +$wb['parent_domain_id_txt'] = 'Web stranica'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_database_user.lng b/interface/web/sites/lib/lang/hr_database_user.lng index 66a071834..5499c13a2 100644 --- a/interface/web/sites/lib/lang/hr_database_user.lng +++ b/interface/web/sites/lib/lang/hr_database_user.lng @@ -1,23 +1,25 @@ + + diff --git a/interface/web/sites/lib/lang/hr_database_user_admin_list.lng b/interface/web/sites/lib/lang/hr_database_user_admin_list.lng index d7f88c4c3..d9c9b72e7 100644 --- a/interface/web/sites/lib/lang/hr_database_user_admin_list.lng +++ b/interface/web/sites/lib/lang/hr_database_user_admin_list.lng @@ -1,6 +1,8 @@ + + diff --git a/interface/web/sites/lib/lang/hr_database_user_list.lng b/interface/web/sites/lib/lang/hr_database_user_list.lng index 8c226496a..04af3c587 100644 --- a/interface/web/sites/lib/lang/hr_database_user_list.lng +++ b/interface/web/sites/lib/lang/hr_database_user_list.lng @@ -1,5 +1,7 @@ + + diff --git a/interface/web/sites/lib/lang/hr_ftp_user.lng b/interface/web/sites/lib/lang/hr_ftp_user.lng index dbefe0bbf..dcd910e37 100644 --- a/interface/web/sites/lib/lang/hr_ftp_user.lng +++ b/interface/web/sites/lib/lang/hr_ftp_user.lng @@ -25,12 +25,14 @@ $wb['directory_error_empty'] = 'Prazan direktorij.'; $wb['directory_error_notinweb'] = 'Direktorij nije unutar početne web stranice.'; $wb['parent_domain_id_error_empty'] = 'Nije izabrana web stranica.'; $wb['quota_size_error_regex'] = 'Kvota: unesi -1 za neograničeno ili broj > 0'; -$wb['dir_dot_error'] = 'No .. in path allowed.'; -$wb['dir_slashdot_error'] = 'No ./ in path allowed.'; -$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['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; -$wb['directory_error_regex'] = 'Invalid directory'; +$wb['dir_dot_error'] = '.. nije dozvoljen u putanji.'; +$wb['dir_slashdot_error'] = './ nije dozvoljen u putanji.'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; +$wb['invalid_system_user_or_group_txt'] = 'Nepostojeći sistemski korisnik ili grupa'; +$wb['directory_error_regex'] = 'Neispravan direktorij'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_ftp_user_list.lng b/interface/web/sites/lib/lang/hr_ftp_user_list.lng index 9ed8e645a..6cd88ad63 100644 --- a/interface/web/sites/lib/lang/hr_ftp_user_list.lng +++ b/interface/web/sites/lib/lang/hr_ftp_user_list.lng @@ -6,3 +6,5 @@ $wb['parent_domain_id_txt'] = 'Web stranica'; $wb['username_txt'] = 'Korisničko ime'; $wb['add_new_record_txt'] = 'Dodaj FTP račun'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_shell_user.lng b/interface/web/sites/lib/lang/hr_shell_user.lng index 93a645508..e40c224c7 100644 --- a/interface/web/sites/lib/lang/hr_shell_user.lng +++ b/interface/web/sites/lib/lang/hr_shell_user.lng @@ -20,17 +20,19 @@ $wb['directory_error_empty'] = 'Direktorij je prazan.'; $wb['limit_shell_user_txt'] = 'Iskorišten je maksimalan broj shell korisnika.'; $wb['parent_domain_id_error_empty'] = 'Nije izabrana web stranica.'; $wb['ssh_rsa_txt'] = 'SSH-RSA javni ključ (za logiranje ključevima)'; -$wb['dir_dot_error'] = 'No .. in path allowed.'; -$wb['dir_slashdot_error'] = 'No ./ in path allowed.'; -$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['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; -$wb['username_not_allowed_txt'] = 'The username is not allowed.'; -$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; -$wb['directory_error_regex'] = 'Invalid directory'; -$wb['shell_error_regex'] = 'Invalid shell'; -$wb['invalid_username_txt'] = 'Invalid Username'; -$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; +$wb['dir_dot_error'] = 'Nije dozvoljeno koristiti .. u putanji.'; +$wb['dir_slashdot_error'] = 'Nije dozvoljeno koristiti ./ u putanji.'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'Korisničko ime ne može biti duže od 32 znaka.'; +$wb['username_not_allowed_txt'] = 'Izabrano korisničko ime nije dozvoljeno.'; +$wb['invalid_system_user_or_group_txt'] = 'Neispravan sistemski korisnik ili grupa'; +$wb['directory_error_regex'] = 'Neispravan direktorij'; +$wb['shell_error_regex'] = 'Neispravan shell'; +$wb['invalid_username_txt'] = 'Neispravno korisničko ime'; +$wb['directory_error_notinweb'] = 'Direktorij treba biti unutar web početne putanje (root).'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_shell_user_list.lng b/interface/web/sites/lib/lang/hr_shell_user_list.lng index 16fc32cfd..0116b4ee5 100644 --- a/interface/web/sites/lib/lang/hr_shell_user_list.lng +++ b/interface/web/sites/lib/lang/hr_shell_user_list.lng @@ -1,8 +1,10 @@ + + diff --git a/interface/web/sites/lib/lang/hr_user_quota_stats_list.lng b/interface/web/sites/lib/lang/hr_user_quota_stats_list.lng index 087ccabf8..2da19bbfc 100644 --- a/interface/web/sites/lib/lang/hr_user_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/hr_user_quota_stats_list.lng @@ -5,5 +5,7 @@ $wb['system_user_txt'] = 'Linux korisnik'; $wb['used_txt'] = 'Prostor'; $wb['hard_txt'] = 'Hard limit'; $wb['soft_txt'] = 'Soft limit'; -$wb['files_txt'] = 'Single files'; +$wb['files_txt'] = 'Broj datoteka'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_aliasdomain.lng b/interface/web/sites/lib/lang/hr_web_aliasdomain.lng index 4149c7114..6bf0315a7 100644 --- a/interface/web/sites/lib/lang/hr_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_aliasdomain.lng @@ -1,87 +1,87 @@ = 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['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:'; -$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:'; -$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; +$wb['available_php_directive_snippets_txt'] = 'Dostupne PHP direktive:'; +$wb['available_apache_directive_snippets_txt'] = 'Dostupne Apache direktive:'; +$wb['available_nginx_directive_snippets_txt'] = 'Dostupne nginx direktive:'; $wb['proxy_directives_txt'] = 'Proxy Directives'; -$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['Domain'] = 'Aliasdomain'; +$wb['available_proxy_directive_snippets_txt'] = 'Dostupne proxy direktive:'; +$wb['Domena'] = 'Alias domena'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/hr_web_aliasdomain_list.lng index 0b45aff79..ae2bc727b 100644 --- a/interface/web/sites/lib/lang/hr_web_aliasdomain_list.lng +++ b/interface/web/sites/lib/lang/hr_web_aliasdomain_list.lng @@ -12,3 +12,5 @@ $wb['no_redirect_txt'] = 'Bez redirekcije'; $wb['no_flag_txt'] = 'Bez označavanja'; $wb['none_txt'] = 'Ništa'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_backup_list.lng b/interface/web/sites/lib/lang/hr_web_backup_list.lng index 9a10ca6d0..a57b467e0 100644 --- a/interface/web/sites/lib/lang/hr_web_backup_list.lng +++ b/interface/web/sites/lib/lang/hr_web_backup_list.lng @@ -13,3 +13,5 @@ $wb['restore_pending_txt'] = 'There is already a pending backup restore job.'; $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_domain.lng b/interface/web/sites/lib/lang/hr_web_domain.lng index a7927a354..ddcbdbc31 100644 --- a/interface/web/sites/lib/lang/hr_web_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_domain.lng @@ -1,10 +1,10 @@ = 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'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; $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:'; -$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:'; -$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:'; -$wb['proxy_directives_txt'] = 'Proxy Directives'; -$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['no_server_error'] = 'No server selected.'; -$wb['no_backup_txt'] = 'No backup'; -$wb['daily_backup_txt'] = 'Daily'; -$wb['weekly_backup_txt'] = 'Weekly'; -$wb['monthly_backup_txt'] = 'Monthly'; -$wb['rewrite_rules_txt'] = 'Rewrite Rules'; -$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; -$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; -$wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; -$wb['variables_txt'] = 'Variables'; -$wb['added_by_txt'] = 'Added by'; -$wb['added_date_txt'] = 'Added date'; -$wb['backup_excludes_txt'] = 'Excluded Directories'; +$wb['domain_error_autosub'] = 'Već postoji poddomena sa ovim postavkama.'; +$wb['available_php_directive_snippets_txt'] = 'Dostupne PHP direktive:'; +$wb['available_apache_directive_snippets_txt'] = 'Dostupne Apache direktive:'; +$wb['available_nginx_directive_snippets_txt'] = 'Dostupne nginx direktive:'; +$wb['proxy_directives_txt'] = 'Proxy direktive'; +$wb['available_proxy_directive_snippets_txt'] = 'Dostupne Proxy direktive:'; +$wb['no_server_error'] = 'Nije izabran server.'; +$wb['no_backup_txt'] = 'Bez backup-a'; +$wb['daily_backup_txt'] = 'Dnevni backup'; +$wb['weekly_backup_txt'] = 'Tjedni backup'; +$wb['monthly_backup_txt'] = 'Mjesečni backup'; +$wb['rewrite_rules_txt'] = 'Rewrite pravila'; +$wb['invalid_rewrite_rules_txt'] = 'Neispravna Rewrite pravila'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Dozvoljene direktive:'; +$wb['configuration_error_txt'] = 'KONFIGURACIJSKA GREŠKA'; +$wb['variables_txt'] = 'Varijable'; +$wb['added_by_txt'] = 'Dodao'; +$wb['added_date_txt'] = 'Dodano'; +$wb['backup_excludes_txt'] = 'Izbačeni direktoriji'; $wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; -$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; -$wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; +$wb['backup_excludes_error_regex'] = 'Izbačeni direktorij sadrži nedozvoljene znakove.'; +$wb['invalid_custom_php_ini_settings_txt'] = 'Neispravne php.ini postavke'; $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; -$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_domain_admin_list.lng b/interface/web/sites/lib/lang/hr_web_domain_admin_list.lng index b5e5d2b46..9e1880ec3 100644 --- a/interface/web/sites/lib/lang/hr_web_domain_admin_list.lng +++ b/interface/web/sites/lib/lang/hr_web_domain_admin_list.lng @@ -7,3 +7,5 @@ $wb['server_id_txt'] = 'Server'; $wb['domain_txt'] = 'Domena'; $wb['add_new_record_txt'] = 'Dodaj novu web stranicu'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_domain_list.lng b/interface/web/sites/lib/lang/hr_web_domain_list.lng index 2f85d7cd4..9cd040846 100644 --- a/interface/web/sites/lib/lang/hr_web_domain_list.lng +++ b/interface/web/sites/lib/lang/hr_web_domain_list.lng @@ -6,3 +6,5 @@ $wb['server_id_txt'] = 'Server'; $wb['domain_txt'] = 'Domena'; $wb['add_new_record_txt'] = 'Dodaj novu web stranicu'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_folder.lng b/interface/web/sites/lib/lang/hr_web_folder.lng index f1c9b28cb..e21fe053a 100644 --- a/interface/web/sites/lib/lang/hr_web_folder.lng +++ b/interface/web/sites/lib/lang/hr_web_folder.lng @@ -4,5 +4,7 @@ $wb['parent_domain_id_txt'] = 'Web stranica'; $wb['path_txt'] = 'Putanja'; $wb['active_txt'] = 'Aktivno'; $wb['path_error_regex'] = 'Neispravna putanja direktorija.'; -$wb['error_folder_already_protected_txt'] = 'There is already a record for this folder.'; +$wb['error_folder_already_protected_txt'] = 'Već postoji zapis za ovaj direktorij.'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_folder_list.lng b/interface/web/sites/lib/lang/hr_web_folder_list.lng index 0a900fb2c..a777e83b1 100644 --- a/interface/web/sites/lib/lang/hr_web_folder_list.lng +++ b/interface/web/sites/lib/lang/hr_web_folder_list.lng @@ -4,5 +4,7 @@ $wb['active_txt'] = 'Aktivno'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Web stranica'; $wb['path_txt'] = 'Putanja'; -$wb['add_new_record_txt'] = 'Add new Folder'; +$wb['add_new_record_txt'] = 'Dodaj novi direktorij'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_folder_user.lng b/interface/web/sites/lib/lang/hr_web_folder_user.lng index d4f7ca294..c6787654d 100644 --- a/interface/web/sites/lib/lang/hr_web_folder_user.lng +++ b/interface/web/sites/lib/lang/hr_web_folder_user.lng @@ -4,11 +4,13 @@ $wb['username_txt'] = 'Korisničko ime'; $wb['password_txt'] = 'Šifra'; $wb['active_txt'] = 'Aktivno'; $wb['folder_error_empty'] = 'Nije izabran web direktorij.'; -$wb['password_strength_txt'] = 'Password strength'; -$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['no_folder_perm'] = 'You have no permission for this folder.'; -$wb['error_user_exists_already_txt'] = 'There is already a record for this user.'; +$wb['password_strength_txt'] = 'Jačina šifre'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; +$wb['no_folder_perm'] = 'Nemate potrebne dozvole za ovaj direktorij.'; +$wb['error_user_exists_already_txt'] = 'Već postoji zapis za ovog korisnika.'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_folder_user_list.lng b/interface/web/sites/lib/lang/hr_web_folder_user_list.lng index 3beae9f47..5153b9fc4 100644 --- a/interface/web/sites/lib/lang/hr_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/hr_web_folder_user_list.lng @@ -3,5 +3,7 @@ $wb['list_head_txt'] = 'Web direktorij korisnik'; $wb['active_txt'] = 'Aktivno'; $wb['web_folder_id_txt'] = 'Web direkotrij'; $wb['username_txt'] = 'Korisničko ime'; -$wb['add_new_record_txt'] = 'Add new Folder User'; +$wb['add_new_record_txt'] = 'Dodaj novog korisnika web direktorija'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_sites_stats_list.lng b/interface/web/sites/lib/lang/hr_web_sites_stats_list.lng index 5cec1bbcb..3d374a006 100644 --- a/interface/web/sites/lib/lang/hr_web_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/hr_web_sites_stats_list.lng @@ -5,5 +5,7 @@ $wb['this_month_txt'] = 'Ovaj mjesec'; $wb['last_month_txt'] = 'Prošli mjesec'; $wb['this_year_txt'] = 'Ovu godinu'; $wb['last_year_txt'] = 'Prošlu godinu'; -$wb['sum_txt'] = 'Sum'; +$wb['sum_txt'] = 'Ukupno'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_subdomain.lng b/interface/web/sites/lib/lang/hr_web_subdomain.lng index 5ea6fff25..edf3b63ee 100644 --- a/interface/web/sites/lib/lang/hr_web_subdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_subdomain.lng @@ -39,8 +39,10 @@ $wb['host_txt'] = 'Host'; $wb['redirect_error_regex'] = 'Neispravna putanja redirekcije. Ispravne redirekcije su npr.: /test/ ili http://www.domena.tld/test/'; $wb['no_redirect_txt'] = 'Bez redirekcije'; $wb['no_flag_txt'] = 'Bez markiranja'; -$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; -$wb['proxy_directives_txt'] = 'Proxy Directives'; -$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['domain_error_wildcard'] = 'Wildcard poddomene nisu dozvoljene.'; +$wb['proxy_directives_txt'] = 'Proxy direktive'; +$wb['available_proxy_directive_snippets_txt'] = 'Dostupne proxy direktive:'; +$wb['error_proxy_requires_url'] = 'Vrsta redirekcije \\"proxy\\" zahtjeva URL kao redirekcijsku putanju.'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_subdomain_list.lng b/interface/web/sites/lib/lang/hr_web_subdomain_list.lng index 942454e11..bea42392c 100644 --- a/interface/web/sites/lib/lang/hr_web_subdomain_list.lng +++ b/interface/web/sites/lib/lang/hr_web_subdomain_list.lng @@ -6,3 +6,5 @@ $wb['parent_domain_id_txt'] = 'Web stranica'; $wb['domain_txt'] = 'Poddomena'; $wb['add_new_record_txt'] = 'Dodaj novu poddomenu'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/hr_web_vhost_subdomain.lng index c0ca93b57..39b425082 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_subdomain.lng @@ -1,127 +1,129 @@ = 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['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:'; -$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:'; -$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:'; -$wb['proxy_directives_txt'] = 'Proxy Directives'; -$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['rewrite_rules_txt'] = 'Rewrite Rules'; -$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; -$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; -$wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; -$wb['variables_txt'] = 'Variables'; -$wb['backup_excludes_txt'] = 'Excluded Directories'; -$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; -$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; +$wb['available_php_directive_snippets_txt'] = 'PHP direktive:'; +$wb['available_apache_directive_snippets_txt'] = 'Apache direktive:'; +$wb['available_nginx_directive_snippets_txt'] = 'nginx direktive:'; +$wb['proxy_directives_txt'] = 'Proxy direktive'; +$wb['available_proxy_directive_snippets_txt'] = 'Proxy direktive:'; +$wb['rewrite_rules_txt'] = 'Rewrite pravila'; +$wb['invalid_rewrite_rules_txt'] = 'Neispravna Rewrite pravila'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Dozvoljene direktive:'; +$wb['configuration_error_txt'] = 'KONFIGURACIJSKA GREŠKA'; +$wb['variables_txt'] = 'Varijable'; +$wb['backup_excludes_txt'] = 'Isključeni direktoriji'; +$wb['backup_excludes_note_txt'] = '(Odvojite više direktorija sa zarezom. Primjer: web/cache/*,web/backup)'; +$wb['backup_excludes_error_regex'] = 'Isključeni direktoriji sadrže nedozvoljene znakove.'; $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_web_vhost_subdomain_list.lng b/interface/web/sites/lib/lang/hr_web_vhost_subdomain_list.lng index 1c16bcda2..1c00bd9b8 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_subdomain_list.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_subdomain_list.lng @@ -6,3 +6,5 @@ $wb['parent_domain_id_txt'] = 'Website'; $wb['domain_txt'] = 'Subdomain'; $wb['add_new_record_txt'] = 'Add new subdomain'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_webdav_user.lng b/interface/web/sites/lib/lang/hr_webdav_user.lng index 3b3407500..2bf9f475d 100644 --- a/interface/web/sites/lib/lang/hr_webdav_user.lng +++ b/interface/web/sites/lib/lang/hr_webdav_user.lng @@ -12,10 +12,12 @@ $wb['username_error_unique'] = 'Izabrano korisničko ime već postoji.'; $wb['username_error_regex'] = 'Korisničko ime sadrži znakove koji nisu dopušteni.'; $wb['directory_error_empty'] = 'Direktorij je prazan.'; $wb['parent_domain_id_error_empty'] = 'Nije izabrana web stranica.'; -$wb['dir_dot_error'] = 'No .. in path allowed.'; -$wb['dir_slashdot_error'] = 'No ./ in path allowed.'; -$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['dir_dot_error'] = '.. nije dozvoljenu u putanji.'; +$wb['dir_slashdot_error'] = './ nije dozvoljeno u putanji.'; +$wb['generate_password_txt'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; ?> + + diff --git a/interface/web/sites/lib/lang/hr_webdav_user_list.lng b/interface/web/sites/lib/lang/hr_webdav_user_list.lng index f19b8dafb..a3d3c351d 100644 --- a/interface/web/sites/lib/lang/hr_webdav_user_list.lng +++ b/interface/web/sites/lib/lang/hr_webdav_user_list.lng @@ -6,3 +6,5 @@ $wb['parent_domain_id_txt'] = 'Web stranica'; $wb['username_txt'] = 'Korisničko ime'; $wb['add_new_record_txt'] = 'Dodaj Webdav korisnika'; ?> + + diff --git a/interface/web/strengthmeter/lib/lang/hr_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/hr_strengthmeter.lng index 621898865..4960d5564 100644 --- a/interface/web/strengthmeter/lib/lang/hr_strengthmeter.lng +++ b/interface/web/strengthmeter/lib/lang/hr_strengthmeter.lng @@ -6,3 +6,5 @@ $wb['password_strength_3_txt'] = 'Odlična'; $wb['password_strength_4_txt'] = 'Jaka'; $wb['password_strength_5_txt'] = 'Vrlo jaka'; ?> + + diff --git a/interface/web/tools/lib/lang/hr.lng b/interface/web/tools/lib/lang/hr.lng index 7a8320b62..d8744ec06 100644 --- a/interface/web/tools/lib/lang/hr.lng +++ b/interface/web/tools/lib/lang/hr.lng @@ -4,10 +4,12 @@ $wb['Settings'] = 'Postavke'; $wb['ISPConfig Tools'] = 'Control panel alati'; $wb['Password and Language'] = 'Šifra i jezik'; $wb['ispconfig_tools_note'] = 'Ovaj modul omogućava promjenu šifre i jezika te možete pokrenuti sinkronizaciju DNS zapisa.'; -$wb['Resync'] = 'Sinkroniziraj DNS zapise'; +$wb['Resync'] = 'Sinkroniziraj zapise'; $wb['Sync Tools'] = 'Sync Tools'; $wb['Import'] = 'Import'; $wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail'; $wb['PDNS Tupa'] = 'PowerDNS Tupa'; $wb['Interface'] = 'Interface'; ?> + + diff --git a/interface/web/tools/lib/lang/hr_import_ispconfig.lng b/interface/web/tools/lib/lang/hr_import_ispconfig.lng index ce47c4da4..afbcfd407 100644 --- a/interface/web/tools/lib/lang/hr_import_ispconfig.lng +++ b/interface/web/tools/lib/lang/hr_import_ispconfig.lng @@ -1,23 +1,25 @@ + + diff --git a/interface/web/tools/lib/lang/hr_index.lng b/interface/web/tools/lib/lang/hr_index.lng index a3ef38f21..661a152f6 100644 --- a/interface/web/tools/lib/lang/hr_index.lng +++ b/interface/web/tools/lib/lang/hr_index.lng @@ -2,3 +2,5 @@ $wb['page_head_txt'] = 'ISPConfig Tools'; $wb['page_desc_txt'] = 'Change user settings'; ?> + + diff --git a/interface/web/tools/lib/lang/hr_interface.lng b/interface/web/tools/lib/lang/hr_interface.lng index aab4fc89f..5ed3ccb01 100644 --- a/interface/web/tools/lib/lang/hr_interface.lng +++ b/interface/web/tools/lib/lang/hr_interface.lng @@ -1,7 +1,9 @@ + + diff --git a/interface/web/tools/lib/lang/hr_resync.lng b/interface/web/tools/lib/lang/hr_resync.lng index dd8a216c7..8a97ae481 100644 --- a/interface/web/tools/lib/lang/hr_resync.lng +++ b/interface/web/tools/lib/lang/hr_resync.lng @@ -1,14 +1,16 @@ + + diff --git a/interface/web/tools/lib/lang/hr_tpl_default.lng b/interface/web/tools/lib/lang/hr_tpl_default.lng index c06246304..963ee0bfc 100644 --- a/interface/web/tools/lib/lang/hr_tpl_default.lng +++ b/interface/web/tools/lib/lang/hr_tpl_default.lng @@ -1,7 +1,9 @@ + + diff --git a/interface/web/tools/lib/lang/hr_usersettings.lng b/interface/web/tools/lib/lang/hr_usersettings.lng index ae25bb258..2fcf6faba 100644 --- a/interface/web/tools/lib/lang/hr_usersettings.lng +++ b/interface/web/tools/lib/lang/hr_usersettings.lng @@ -5,8 +5,10 @@ $wb['language_txt'] = 'Jezik'; $wb['password_mismatch'] = 'Šifra u drugom polju ne odgovara šifri iz prvog polja.'; $wb['Form to edit the user password and language.'] = 'Formular za izmjenu šifre i jezika.'; $wb['Settings'] = 'Postavke'; -$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'] = 'Generiraj šifru'; +$wb['repeat_password_txt'] = 'Ponovi šifru'; +$wb['password_mismatch_txt'] = 'Šifre nisu identične.'; +$wb['password_match_txt'] = 'Šifre su identične.'; ?> + + diff --git a/interface/web/vm/lib/lang/hr.lng b/interface/web/vm/lib/lang/hr.lng index 4f5dbe9e6..5b9bd6acb 100644 --- a/interface/web/vm/lib/lang/hr.lng +++ b/interface/web/vm/lib/lang/hr.lng @@ -5,3 +5,5 @@ $wb['VM Templates'] = 'VM predlošci'; $wb['IP addresses'] = 'IP adrese'; $wb['OpenVZ'] = 'OpenVZ'; ?> + + diff --git a/interface/web/vm/lib/lang/hr_openvz_action.lng b/interface/web/vm/lib/lang/hr_openvz_action.lng index 712685f05..4fddcff9d 100644 --- a/interface/web/vm/lib/lang/hr_openvz_action.lng +++ b/interface/web/vm/lib/lang/hr_openvz_action.lng @@ -4,7 +4,7 @@ $wb['start_txt'] = 'Pokreni virualni server'; $wb['stop_txt'] = 'Zaustavi virtualni server'; $wb['restart_txt'] = 'Restartaj virtualni server'; $wb['ostemplate_txt'] = 'Kreiraj predložak operativnog sistema'; -$wb['ostemplate_desc_txt'] = '(primjer: debian-6.0-i386-custom)'; +$wb['ostemplate_desc_txt'] = '(primjer: debian-7.0-i386-custom)'; $wb['btn_save_txt'] = 'Pokreni selektiranu akciju'; $wb['btn_cancel_txt'] = 'Prekini'; $wb['start_exec_txt'] = 'Komanda za pokretanje je poslana VM host serveru. Treba pričekati minutu, dvije dok se VM ne pokrene.'; @@ -14,3 +14,5 @@ $wb['ostemplate_name_error'] = 'OS predložak sadrži nedozvoljene znakove.'; $wb['ostemplate_name_unique_error'] = 'Već postoji OS predložak sa tim nazivom.'; $wb['ostemplate_exec_txt'] = 'Komanda za kreiranje OS predloška je poslana host serveru. Treba pričekati minutu, dvije dok se OS predložak ne kreira'; ?> + + diff --git a/interface/web/vm/lib/lang/hr_openvz_ip.lng b/interface/web/vm/lib/lang/hr_openvz_ip.lng index debb04b96..f51f86488 100644 --- a/interface/web/vm/lib/lang/hr_openvz_ip.lng +++ b/interface/web/vm/lib/lang/hr_openvz_ip.lng @@ -7,3 +7,5 @@ $wb['ip_error_wrong'] = 'Unesite ispravnu IPv4 adresu.'; $wb['ip_error_unique'] = 'Ova IP adresa već postoji.'; $wb['IP address'] = 'IP adresa'; ?> + + diff --git a/interface/web/vm/lib/lang/hr_openvz_ip_list.lng b/interface/web/vm/lib/lang/hr_openvz_ip_list.lng index c578fc997..025a2e448 100644 --- a/interface/web/vm/lib/lang/hr_openvz_ip_list.lng +++ b/interface/web/vm/lib/lang/hr_openvz_ip_list.lng @@ -5,3 +5,5 @@ $wb['ip_address_txt'] = 'IP adresa'; $wb['reserved_txt'] = 'Rezervirano'; $wb['vm_id_txt'] = 'VM'; ?> + + diff --git a/interface/web/vm/lib/lang/hr_openvz_ostemplate.lng b/interface/web/vm/lib/lang/hr_openvz_ostemplate.lng index df88ca9f7..5b9162e34 100644 --- a/interface/web/vm/lib/lang/hr_openvz_ostemplate.lng +++ b/interface/web/vm/lib/lang/hr_openvz_ostemplate.lng @@ -9,3 +9,5 @@ $wb['template_name_error_empty'] = 'Nije upisan naziv predloška.'; $wb['template_file_error_empty'] = 'Nije upisan naziv datoteke predloška.'; $wb['Template'] = 'Predložak'; ?> + + diff --git a/interface/web/vm/lib/lang/hr_openvz_ostemplate_list.lng b/interface/web/vm/lib/lang/hr_openvz_ostemplate_list.lng index 430d36b92..e0226937c 100644 --- a/interface/web/vm/lib/lang/hr_openvz_ostemplate_list.lng +++ b/interface/web/vm/lib/lang/hr_openvz_ostemplate_list.lng @@ -6,3 +6,5 @@ $wb['server_id_txt'] = 'Server'; $wb['allservers_txt'] = 'Postoji na svim serverima'; $wb['ostemplate_id_txt'] = 'ID'; ?> + + diff --git a/interface/web/vm/lib/lang/hr_openvz_template.lng b/interface/web/vm/lib/lang/hr_openvz_template.lng index eb7a49a72..cd2ad194c 100644 --- a/interface/web/vm/lib/lang/hr_openvz_template.lng +++ b/interface/web/vm/lib/lang/hr_openvz_template.lng @@ -35,9 +35,9 @@ $wb['cpu_limit_txt'] = 'CPU limit %'; $wb['io_priority_txt'] = 'I/O priority'; $wb['active_txt'] = 'Aktivno'; $wb['description_txt'] = 'Opis'; -$wb['numproc_desc_txt'] = 'Number of processes and threads.'; -$wb['numtcpsock_desc_txt'] = 'Number of TCP sockets.'; -$wb['numothersock_desc_txt'] = 'Number of sockets other than TCP.'; +$wb['numproc_desc_txt'] = 'Broj procesa i thread-ova.'; +$wb['numtcpsock_desc_txt'] = 'Broj TCP socket-a.'; +$wb['numothersock_desc_txt'] = 'Broj socket-a drugačijih od TCP.'; $wb['vmguarpages_desc_txt'] = 'Memory allocation guarantee, in pages.'; $wb['kmemsize_desc_txt'] = 'Size of unswappable kernel memory, allocated for processes in this container.'; $wb['tcpsndbuf_desc_txt'] = 'Total size of TCP send buffers.'; @@ -47,18 +47,18 @@ $wb['dgramrcvbuf_desc_txt'] = 'Receive buffers of UDP and other datagram protoco $wb['oomguarpages_desc_txt'] = 'The guaranteed amount of memory for the case the memory is over-booked (out-of-memory kill guarantee), in pages.'; $wb['privvmpages_desc_txt'] = 'Memory allocation limit, in pages.'; $wb['lockedpages_desc_txt'] = 'Process pages not allowed to be swapped out (pages locked by mlock(2)).'; -$wb['shmpages_desc_txt'] = 'Total size of shared memory (IPC, shared anonymous mappings and tmpfs objects), in pages.'; -$wb['physpages_desc_txt'] = 'Total number of RAM pages used by processes.'; -$wb['numfile_desc_txt'] = 'Number of open files.'; -$wb['numflock_desc_txt'] = 'Number of file locks.'; +$wb['shmpages_desc_txt'] = 'Ukupna veličina dijeljene memorije (IPC, shared anonymous mappings and tmpfs objects), in pages.'; +$wb['physpages_desc_txt'] = 'Ukupna veličina RAM-a korištena od procesa.'; +$wb['numfile_desc_txt'] = 'Broj otvorenih datoteka.'; +$wb['numflock_desc_txt'] = 'Broj zaključanih datoteka.'; $wb['numpty_desc_txt'] = 'Number of pseudo-terminals.'; $wb['numsiginfo_desc_txt'] = 'Number of siginfo structures.'; $wb['dcachesize_desc_txt'] = 'Total size of dentry and inode structures locked in memory.'; $wb['numiptent_desc_txt'] = 'Number of NETFILTER (IP packet filtering) entries.'; $wb['swappages_desc_txt'] = 'Amount of swap space to show in container.'; -$wb['create_dns_txt'] = 'Create DNS for hostname'; -$wb['template_name_error_empty'] = 'Template name is empty.'; -$wb['diskspace_error_empty'] = 'Diskspace is empty.'; +$wb['create_dns_txt'] = 'Kreiraj DNS za hostname'; +$wb['template_name_error_empty'] = 'Naziv predloška je prazan.'; +$wb['diskspace_error_empty'] = 'Diskovni prostor je prazan.'; $wb['ram_error_empty'] = 'RAM (guaranteed) is empty.'; $wb['ram_burst_error_empty'] = 'RAM (burst) is empty.'; $wb['cpu_units_error_empty'] = 'CPU units is empty.'; @@ -91,3 +91,5 @@ $wb['swappages_error_empty'] = 'Swappages polje je prazno.'; $wb['Template'] = 'Predložak'; $wb['Advanced'] = 'Napredno'; ?> + + diff --git a/interface/web/vm/lib/lang/hr_openvz_template_list.lng b/interface/web/vm/lib/lang/hr_openvz_template_list.lng index f9c8642f1..2c5233905 100644 --- a/interface/web/vm/lib/lang/hr_openvz_template_list.lng +++ b/interface/web/vm/lib/lang/hr_openvz_template_list.lng @@ -3,3 +3,5 @@ $wb['list_head_txt'] = 'OpenVZ VM predložak'; $wb['active_txt'] = 'Aktivan'; $wb['template_name_txt'] = 'Ime predloška'; ?> + + diff --git a/interface/web/vm/lib/lang/hr_openvz_vm.lng b/interface/web/vm/lib/lang/hr_openvz_vm.lng index 206fe3a71..bebfd297c 100644 --- a/interface/web/vm/lib/lang/hr_openvz_vm.lng +++ b/interface/web/vm/lib/lang/hr_openvz_vm.lng @@ -34,7 +34,9 @@ $wb['cpu_units_error_empty'] = 'CPU units polje je prazno.'; $wb['cpu_num_error_empty'] = 'CPU number polje je prazno.'; $wb['cpu_limit_error_empty'] = 'CPU limit polje je prazno.'; $wb['io_priority_error_empty'] = 'I/O priority polje je prazno.'; -$wb['template_nameserver_error_empty'] = 'Nameserver(s) polje je prazno.'; +$wb['template_nameserver_error_empty'] = 'Nameserver(i) polje je prazno.'; $wb['Virtual server'] = 'Virtualni server'; $wb['Advanced'] = 'Napredno'; ?> + + diff --git a/interface/web/vm/lib/lang/hr_openvz_vm_list.lng b/interface/web/vm/lib/lang/hr_openvz_vm_list.lng index ab3ef5252..5fa97806a 100644 --- a/interface/web/vm/lib/lang/hr_openvz_vm_list.lng +++ b/interface/web/vm/lib/lang/hr_openvz_vm_list.lng @@ -8,3 +8,5 @@ $wb['hostname_txt'] = 'Ime hosta'; $wb['ip_address_txt'] = 'IP adresa'; $wb['veid_txt'] = 'VEID'; ?> + + -- GitLab From 4c4739d42534c91230c3ee0c47ed0aee5241b28a Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Sat, 13 Sep 2014 11:47:52 +0200 Subject: [PATCH 137/158] Disabled IDS by default. --- security/security_settings.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/security_settings.ini b/security/security_settings.ini index 4b4327aaf..d3b8d9c74 100644 --- a/security/security_settings.ini +++ b/security/security_settings.ini @@ -18,7 +18,7 @@ remote_api_allowed=yes password_reset_allowed=yes [ids] -ids_enabled=yes +ids_enabled=no ids_log_level=1 ids_warn_level=5 ids_block_level=100 -- GitLab From d812165fbb0e9ff4079771e4b265039383a4e0f2 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 16 Sep 2014 08:42:32 +0200 Subject: [PATCH 138/158] Changed SSL cert generation mode to SHA256. --- server/plugins-available/apache2_plugin.inc.php | 2 +- server/plugins-available/nginx_plugin.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index bdf6a05bd..e302fa20e 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -188,7 +188,7 @@ class apache2_plugin { if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file 2048"); - exec("openssl req -new -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); + exec("openssl req -new -sha256 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file -out $openssl_cmd_key_file2"); if(file_exists($web_config['CA_path'].'/openssl.cnf')) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index e56abe842..c95a84fbb 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -187,7 +187,7 @@ class nginx_plugin { if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file 2048"); - exec("openssl req -new -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); + exec("openssl req -new -sha256 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file -out $openssl_cmd_key_file2"); if(file_exists($web_config['CA_path'].'/openssl.cnf')) -- GitLab From 6068b7afc0371506be54e0596ecabf10e43ddbb4 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 16 Sep 2014 08:42:32 +0200 Subject: [PATCH 139/158] Changed SSL cert generation mode to SHA256. --- server/plugins-available/apache2_plugin.inc.php | 3 ++- server/plugins-available/nginx_plugin.inc.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index bdf6a05bd..142a916d0 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -148,6 +148,7 @@ class apache2_plugin { [ req ] default_bits = 2048 + default_md = sha256 default_keyfile = keyfile.pem distinguished_name = req_distinguished_name attributes = req_attributes @@ -188,7 +189,7 @@ class apache2_plugin { if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file 2048"); - exec("openssl req -new -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); + exec("openssl req -new -sha256 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file -out $openssl_cmd_key_file2"); if(file_exists($web_config['CA_path'].'/openssl.cnf')) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index e56abe842..0e77205cc 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -147,6 +147,7 @@ class nginx_plugin { [ req ] default_bits = 2048 + default_md = sha256 default_keyfile = keyfile.pem distinguished_name = req_distinguished_name attributes = req_attributes @@ -187,7 +188,7 @@ class nginx_plugin { if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file 2048"); - exec("openssl req -new -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); + exec("openssl req -new -sha256 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file -out $openssl_cmd_key_file2"); if(file_exists($web_config['CA_path'].'/openssl.cnf')) -- GitLab From f02be96750e48859cc63f1f2b64a86a9202178b4 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 22 Sep 2014 13:25:20 +0200 Subject: [PATCH 140/158] Fixed a error in OS detection code for CentOS. --- server/lib/classes/monitor_tools.inc.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index ae1fbd322..19f69bb96 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -215,13 +215,11 @@ class monitor_tools { $distver = 'Unknown'; $distid = 'centos53'; $distbaseid = 'fedora'; - swriteln("Operating System: CentOS 6 or compatible\n"); } elseif(stristr($content, 'CentOS Linux release 7')) { $distname = 'CentOS'; $distver = 'Unknown'; $distid = 'centos53'; $distbaseid = 'fedora'; - swriteln("Operating System: CentOS 7 or compatible\n"); } else { $distname = 'Redhat'; $distver = 'Unknown'; -- GitLab From 5686edb520c31701b866708a7a64047fb01efd6d Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Mon, 22 Sep 2014 13:26:14 +0200 Subject: [PATCH 141/158] Apache binary is not recognized correctly on CentOS 7 in http restart method. --- server/mods-available/web_module.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php index 666e8451c..f84d87f0f 100644 --- a/server/mods-available/web_module.inc.php +++ b/server/mods-available/web_module.inc.php @@ -203,7 +203,7 @@ class web_module { $daemon = $web_config['server_type']; break; default: - if(is_file($conf['init_scripts'] . '/' . 'httpd')) { + if(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) { $daemon = 'httpd'; } else { $daemon = 'apache2'; -- GitLab From c43c293b1935ab84be4b748cebfeb34ca698998a Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 24 Sep 2014 15:43:24 +0200 Subject: [PATCH 142/158] SSL cert for postfix does not get generated properly on Centos. --- install/dist/lib/fedora.lib.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 7dd7d9b04..e5eefa325 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -231,10 +231,11 @@ class installer_dist extends installer_base { //* Create the SSL certificate if(AUTOINSTALL){ $command = 'cd '.$config_dir.'; ' - ."openssl req -new -subj '/C=".$autoinstall['ssl_cert_country']."/ST=".$autoinstall['ssl_cert_state']."/L=".$autoinstall['ssl_cert_locality']."/O=".$autoinstall['ssl_cert_organisation']."/OU=".$autoinstall['ssl_cert_organisation_unit']."/CN=".$autoinstall['ssl_cert_common_name']."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; } else { $command = 'cd '.$config_dir.'; ' - ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; + } } exec($command); -- GitLab From 6061d5f84726eb7f93eceff24de63bb471c9d029 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 24 Sep 2014 15:44:46 +0200 Subject: [PATCH 143/158] Services were not restarted correctly after install on CentOS 7. --- install/lib/installer_base.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index a30a7ec02..5958d9d6a 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -2302,7 +2302,7 @@ class installer_base { public function getinitcommand($servicename, $action, $init_script_directory = ''){ global $conf; // systemd - if(is_executable('/bin/systemd')){ + if(is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')){ return 'systemctl '.$action.' '.$servicename.'.service'; } // upstart -- GitLab From 9b021b2e4b3ee783ceae6f1cf04e1b06ed431637 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 24 Sep 2014 15:46:48 +0200 Subject: [PATCH 144/158] Added support for php-fpm with mod_proxy_fcgi (required for apache 2.4). Note: The mod_proxy_fcgi that ships with CentOS and Ubuntu does not support sockets yet, so all php-fpm connections are done by IP. --- server/conf/vhost.conf.master | 3 +++ server/plugins-available/apache2_plugin.inc.php | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 96b344338..16e0d1216 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -334,6 +334,9 @@ FastCgiExternalServer {tmpl_var name='document_root'}/cgi-bin/php5-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} -idle-timeout 300 -socket -pass-header Authorization
+ + ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ fcgi://127.0.0.1:/$1 +
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 142a916d0..3c4ba3e77 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1262,8 +1262,9 @@ class apache2_plugin { $pool_name = 'web'.$data['new']['domain_id']; $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']); if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; - - if($data['new']['php_fpm_use_socket'] == 'y'){ + + // User sockets, but not with apache 2.4 as socket support is buggy in that version + if($data['new']['php_fpm_use_socket'] == 'y' && $app->system->getapacheversion() < 2.4){ $use_tcp = 0; $use_socket = 1; } else { -- GitLab From 6d6643de2b6fc47b15e27c46266f22866c1cd1a8 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 24 Sep 2014 15:47:20 +0200 Subject: [PATCH 145/158] Fixed service restart problems on CentOS 7. --- server/lib/classes/system.inc.php | 2 +- server/mods-available/web_module.inc.php | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index af42e5ec3..d22779277 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1722,7 +1722,7 @@ class system{ function getinitcommand($servicename, $action, $init_script_directory = ''){ global $conf; // systemd - if(is_executable('/bin/systemd')){ + if(is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')){ return 'systemctl '.$action.' '.$servicename.'.service'; } // upstart diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php index f84d87f0f..42eaab674 100644 --- a/server/mods-available/web_module.inc.php +++ b/server/mods-available/web_module.inc.php @@ -212,11 +212,12 @@ class web_module { $retval = array('output' => '', 'retval' => 0); if($action == 'restart') { - exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']); - + $cmd = $app->system->getinitcommand($daemon, 'restart'); } else { - exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']); + $cmd = $app->system->getinitcommand($daemon, 'reload'); } + exec($cmd.' 2>&1', $retval['output'], $retval['retval']); + $app->log("Restarting httpd: $cmd", LOGLEVEL_DEBUG); // nginx: do a syntax check because on some distributions, the init script always returns 0 - even if the syntax is not ok (how stupid is that?) if($web_config['server_type'] == 'nginx' && $retval['retval'] == 0){ @@ -249,6 +250,22 @@ class web_module { if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp)) { $initcommand = '/sbin/start-stop-daemon --stop --signal USR2 --quiet --pidfile /var/run/php5-fpm.pid --name php5-fpm'; } + // And the next workaround, php-fpm reloads in centos 7 downt work as well. + if(preg_match('/^ID=centos/m', $tmp) && preg_match('/^VERSION_ID="7"/m', $tmp)) { + $initcommand = 'systemctl restart php-fpm.service'; + } + unset($tmp); + } + } + + if($action == 'reload') { + // And the next workaround, php-fpm reloads in centos 7 downt work as well. + if(file_exists('/etc/os-release')) { + $tmp = file_get_contents('/etc/os-release'); + // And the next workaround, php-fpm reloads in centos 7 downt work as well. + if(preg_match('/^ID="centos"/m', $tmp) && preg_match('/^VERSION_ID="7"/m', $tmp)) { + $initcommand = 'systemctl restart php-fpm.service'; + } unset($tmp); } } @@ -256,6 +273,7 @@ class web_module { $retval = array('output' => '', 'retval' => 0); exec($initcommand.' 2>&1', $retval['output'], $retval['retval']); + $app->log("Restarting php-fpm: $initcommand", LOGLEVEL_DEBUG); return $retval; } -- GitLab From 132081c0e69f0313ccb0d23637499e940d29f470 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 26 Sep 2014 17:57:38 +0200 Subject: [PATCH 146/158] - added check for mysql error to avoid flood of error messages/mails --- server/cron_daily.php | 2 ++ server/lib/app.inc.php | 18 ++++++++++++++++++ server/lib/classes/db_mysql.inc.php | 13 +++++++++++++ server/server.php | 2 ++ 4 files changed, 35 insertions(+) diff --git a/server/cron_daily.php b/server/cron_daily.php index ee54a4620..10f168812 100644 --- a/server/cron_daily.php +++ b/server/cron_daily.php @@ -32,6 +32,8 @@ define('SCRIPT_PATH', dirname($_SERVER["SCRIPT_FILENAME"])); require SCRIPT_PATH."/lib/config.inc.php"; require SCRIPT_PATH."/lib/app.inc.php"; +$app->setCaller('cron_daily'); + set_time_limit(0); ini_set('error_reporting', E_ALL & ~E_NOTICE); diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php index a1e75af16..a9d47a557 100755 --- a/server/lib/app.inc.php +++ b/server/lib/app.inc.php @@ -35,6 +35,7 @@ class app { var $loaded_modules = array(); var $loaded_plugins = array(); + var $_calling_script = ''; function __construct() { @@ -60,6 +61,23 @@ class app { } + function setCaller($caller) { + $this->_calling_script = $caller; + } + + function getCaller() { + return $this->_calling_script; + } + + function forceErrorExit($errmsg = 'undefined') { + global $conf; + + if($this->_calling_script == 'server') { + @unlink($conf['temppath'] . $conf['fs_div'] . '.ispconfig_lock'); + } + die('Exiting because of error: ' . $errmsg); + } + function uses($classes) { global $conf; diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index d8bfbea49..6d428475e 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -130,6 +130,8 @@ class db extends mysqli } public function query($queryString) { + global $app; + if($this->isConnected == false) return false; $try = 0; do { @@ -138,6 +140,17 @@ class db extends mysqli if(!$ok) { if(!$this->real_connect($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName)) { $this->updateError('DB::query -> reconnect'); + if($this->errorNumber == '111') { + // server is not available + if($try > 9) { + if(isset($app) && isset($app->forceErrorExit)) { + $app->forceErrorExit('Database connection failure!'); + } + // if we reach this, the app object is missing or has no exit method, so we continue as normal + } + sleep(30); // additional seconds, please! + } + if($try > 9) { return false; } else { diff --git a/server/server.php b/server/server.php index ab2540442..1d2c6d21d 100644 --- a/server/server.php +++ b/server/server.php @@ -31,6 +31,8 @@ define('SCRIPT_PATH', dirname($_SERVER["SCRIPT_FILENAME"])); require SCRIPT_PATH."/lib/config.inc.php"; require SCRIPT_PATH."/lib/app.inc.php"; +$app->setCaller('server'); + set_time_limit(0); ini_set('error_reporting', E_ALL & ~E_NOTICE); -- GitLab From 49b3f5ec2a3c105652d451469eeb09a5ed75eba0 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 30 Sep 2014 12:27:51 +0200 Subject: [PATCH 147/158] Fixed: FS#3683 - New gtld - regex issue while defining alias emaildomains --- interface/web/mail/form/mail_aliasdomain.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/mail/form/mail_aliasdomain.tform.php b/interface/web/mail/form/mail_aliasdomain.tform.php index fb935003b..64c599248 100644 --- a/interface/web/mail/form/mail_aliasdomain.tform.php +++ b/interface/web/mail/form/mail_aliasdomain.tform.php @@ -86,7 +86,7 @@ $form["tabs"]['alias'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'source_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^\@[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,10}$/', + 'regex' => '/^\@[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,20}$/', 'errmsg'=> 'source_error_regex'), ), 'default' => '', -- GitLab From 58fb006c466ac90edd1d2f90a9559b5048e64fd7 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 10 Oct 2014 13:14:20 +0200 Subject: [PATCH 148/158] - Fixed: FS#3691 - Admin re-login after change admin password fails --- interface/web/tools/user_settings.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/interface/web/tools/user_settings.php b/interface/web/tools/user_settings.php index 7065888dd..02fc4f73d 100644 --- a/interface/web/tools/user_settings.php +++ b/interface/web/tools/user_settings.php @@ -97,6 +97,16 @@ class page_action extends tform_actions { $app->error('Invalid language.'); } } + + function onAfterUpdate() { + global $app; + + if($_POST['passwort'] != '') { + $tmp_user = $app->db->queryOneRecord("SELECT passwort FROM sys_user WHERE userid = '".$app->functions->intval($_SESSION['s']['user']['userid'])."'"); + $_SESSION['s']['user']['passwort'] = $tmp_user['passwort']; + unset($tmp_user); + } + } } -- GitLab From 2f7e607a9d5331c5d5f56dec8bc167907a08ddad Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 10 Oct 2014 13:24:53 +0200 Subject: [PATCH 149/158] - Fixes: FS#3693 - sites_database_add doesn't set the sys_groupid parameter --- .../lib/classes/sites_database_plugin.inc.php | 137 ++---------------- interface/web/sites/database_edit.php | 30 +--- 2 files changed, 14 insertions(+), 153 deletions(-) diff --git a/interface/lib/classes/sites_database_plugin.inc.php b/interface/lib/classes/sites_database_plugin.inc.php index d255fdca8..bf53c61fa 100644 --- a/interface/lib/classes/sites_database_plugin.inc.php +++ b/interface/lib/classes/sites_database_plugin.inc.php @@ -33,145 +33,28 @@ class sites_database_plugin { public function processDatabaseInsert($form_page) { global $app; - /*if($form_page->dataRecord["parent_domain_id"] > 0) { - $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($form_page->dataRecord["parent_domain_id"])); - - //* The Database user shall be owned by the same group then the website - $sys_groupid = $web['sys_groupid']; - } else { - $sys_groupid = $form_page->dataRecord['sys_groupid']; - } - - - if($form_page->dataRecord['database_user_id']) { - // check if there has already been a database on this server with that user - $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . $app->functions->intval($form_page->dataRecord['server_id']) . "' AND (`database_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_user_id']) . "' OR `database_ro_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_user_id']) . "')"); - - if($check && $check['cnt'] < 1) { - // we need to make a datalog insert for the database users that are connected to this database - $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_user_id']) . "'"); - if($db_user) { - $db_user['server_id'] = $form_page->dataRecord['server_id']; - $app->db->datalogSave('web_database_user', 'INSERT', 'database_user_id', $db_user['database_user_id'], array(), $db_user); - } - } - } - - if($form_page->dataRecord['database_ro_user_id']) { - // check if there has already been a database on this server with that user - $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . $app->functions->intval($form_page->dataRecord['server_id']) . "' AND (`database_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_ro_user_id']) . "' OR `database_ro_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_ro_user_id']) . "')"); - - if($check && $check['cnt'] < 1) { - // we need to make a datalog insert for the database users that are connected to this database - $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_ro_user_id']) . "'"); - if($db_user) { - $db_user['server_id'] = $form_page->dataRecord['server_id']; - $app->db->datalogSave('web_database_user', 'INSERT', 'database_user_id', $db_user['database_user_id'], array(), $db_user); - } - } - }*/ + $this->processDatabaseUpdate($form_page); } public function processDatabaseUpdate($form_page) { global $app; - /*$old_record = $app->db->queryOneRecord('SELECT * FROM `web_database` WHERE `database_id` = ' . $app->functions->intval($form_page->id)); - - if($form_page->dataRecord["parent_domain_id"] > 0) { - $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($form_page->dataRecord["parent_domain_id"])); - - //* The Database user shall be owned by the same group then the website - $sys_groupid = $web['sys_groupid']; - } else { - $sys_groupid = $form_page->dataRecord['sys_groupid']; - } - - // check if database user has changed - if($old_record['database_user_id'] && $old_record['database_user_id'] != $form_page->dataRecord['database_user_id'] && $old_record['database_user_id'] != $form_page->dataRecord['database_ro_user_id']) { - // check if any database on the server still uses this one - $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . $app->functions->intval($form_page->dataRecord['server_id']) . "' AND (`database_user_id` = '" . $app->functions->intval($old_record['database_user_id']) . "' OR `database_ro_user_id` = '" . $app->functions->intval($old_record['database_user_id']) . "') AND `database_id` != '" . $app->functions->intval($form_page->id) . "'"); - if($check['cnt'] < 1) { - // send a datalog delete - $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . $app->functions->intval($old_record['database_user_id']) . "'"); - if($db_user) { - $db_user['server_id'] = $form_page->dataRecord['server_id']; - $app->db->datalogSave('web_database_user', 'DELETE', 'database_user_id', $db_user['database_user_id'], $db_user, array()); - } - } - } - // check if readonly database user has changed - if($old_record['database_ro_user_id'] && $old_record['database_ro_user_id'] != $form_page->dataRecord['database_ro_user_id'] && $old_record['database_ro_user_id'] != $form_page->dataRecord['database_user_id']) { - // check if any database on the server still uses this one - $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . $app->functions->intval($form_page->dataRecord['server_id']) . "' AND (`database_user_id` = '" . $app->functions->intval($old_record['database_ro_user_id']) . "' OR `database_ro_user_id` = '" . $app->functions->intval($old_record['database_ro_user_id']) . "') AND `database_id` != '" . $app->functions->intval($form_page->id) . "'"); - if($check['cnt'] < 1) { - // send a datalog delete - $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . $app->functions->intval($old_record['database_ro_user_id']) . "'"); - if($db_user) { - $db_user['server_id'] = $form_page->dataRecord['server_id']; - $app->db->datalogSave('web_database_user', 'DELETE', 'database_user_id', $db_user['database_user_id'], $db_user, array()); - } - } - }*/ - - /*if($form_page->dataRecord['database_user_id']) { - // check if there has already been a database on this server with that user - $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . $app->functions->intval($form_page->dataRecord['server_id']) . "' AND (`database_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_user_id']) . "' OR `database_ro_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_user_id']) . "')"); - - if($check && $check['cnt'] < 1) { - // we need to make a datalog insert for the database users that are connected to this database - $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_user_id']) . "'"); - if($db_user) { - $db_user['server_id'] = $form_page->dataRecord['server_id']; - $app->db->datalogSave('web_database_user', 'INSERT', 'database_user_id', $db_user['database_user_id'], array(), $db_user); - } - } - } - - if($form_page->dataRecord['database_ro_user_id']) { - // check if there has already been a database on this server with that user - $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . $app->functions->intval($form_page->dataRecord['server_id']) . "' AND (`database_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_ro_user_id']) . "' OR `database_ro_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_ro_user_id']) . "')"); + if($form_page->dataRecord["parent_domain_id"] > 0) { + $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($form_page->dataRecord["parent_domain_id"])); - if($check && $check['cnt'] < 1) { - // we need to make a datalog insert for the database users that are connected to this database - $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . $app->functions->intval($form_page->dataRecord['database_ro_user_id']) . "'"); - if($db_user) { - $db_user['server_id'] = $form_page->dataRecord['server_id']; - $app->db->datalogSave('web_database_user', 'INSERT', 'database_user_id', $db_user['database_user_id'], array(), $db_user); - } - } - }*/ + //* The Database user shall be owned by the same group then the website + $sys_groupid = $app->functions->intval($web['sys_groupid']); + $backup_interval = $app->db->quote($web['backup_interval']); + $backup_copies = $app->functions->intval($web['backup_copies']); + $sql = "UPDATE web_database SET sys_groupid = '$sys_groupid', backup_interval = '$backup_interval', backup_copies = '$backup_copies' WHERE database_id = ".$form_page->id; + $app->db->query($sql); + } } public function processDatabaseDelete($primary_id) { global $app; - /*$old_record = $app->db->queryOneRecord('SELECT * FROM `web_database` WHERE `database_id` = ' . $app->functions->intval($primary_id)); - if($old_record['database_user_id']) { - // check if any database on the server still uses this one - $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . $app->functions->intval($old_record['server_id']) . "' AND (`database_user_id` = '" . $app->functions->intval($old_record['database_user_id']) . "' OR `database_ro_user_id` = '" . $app->functions->intval($old_record['database_user_id']) . "') AND `database_id` != '" . $app->functions->intval($primary_id) . "'"); - if($check['cnt'] < 1) { - // send a datalog delete - $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . $app->functions->intval($old_record['database_user_id']) . "'"); - if($db_user) { - $db_user['server_id'] = $old_record['server_id']; - $app->db->datalogSave('web_database_user', 'DELETE', 'database_user_id', $db_user['database_user_id'], $db_user, array()); - } - } - } - if($old_record['database_ro_user_id']) { - // check if any database on the server still uses this one - $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `server_id` = '" . $app->functions->intval($old_record['server_id']) . "' AND (`database_user_id` = '" . $app->functions->intval($old_record['database_ro_user_id']) . "' OR `database_ro_user_id` = '" . $app->functions->intval($old_record['database_ro_user_id']) . "') AND `database_id` != '" . $app->functions->intval($primary_id) . "'"); - if($check['cnt'] < 1) { - // send a datalog delete - $db_user = $app->db->queryOneRecord("SELECT * FROM `web_database_user` WHERE `database_user_id` = '" . $app->functions->intval($old_record['database_ro_user_id']) . "'"); - if($db_user) { - $db_user['server_id'] = $old_record['server_id']; - $app->db->datalogSave('web_database_user', 'DELETE', 'database_user_id', $db_user['database_user_id'], $db_user, array()); - } - } - }*/ - } } diff --git a/interface/web/sites/database_edit.php b/interface/web/sites/database_edit.php index 0f2f5f227..48540e888 100644 --- a/interface/web/sites/database_edit.php +++ b/interface/web/sites/database_edit.php @@ -405,9 +405,6 @@ class page_action extends tform_actions { global $app; if(!empty($sql) && !$app->tform->isReadonlyTab($app->tform->getCurrentTab(), $this->id)) { - $app->uses('sites_database_plugin'); - //$app->sites_database_plugin->processDatabaseUpdate($this); - $app->db->query($sql); if($app->db->errorMessage != '') die($app->db->errorMessage); } @@ -416,34 +413,15 @@ class page_action extends tform_actions { function onAfterInsert() { global $app, $conf; - if($this->dataRecord["parent_domain_id"] > 0) { - $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"])); - - //* The Database user shall be owned by the same group then the website - $sys_groupid = $app->functions->intval($web['sys_groupid']); - $backup_interval = $app->db->quote($web['backup_interval']); - $backup_copies = $app->functions->intval($web['backup_copies']); - - $sql = "UPDATE web_database SET sys_groupid = '$sys_groupid', backup_interval = '$backup_interval', backup_copies = '$backup_copies' WHERE database_id = ".$this->id; - $app->db->query($sql); - } + $app->uses('sites_database_plugin'); + $app->sites_database_plugin->processDatabaseInsert($this); } function onAfterUpdate() { global $app, $conf; - if($this->dataRecord["parent_domain_id"] > 0) { - $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"])); - - //* The Database user shall be owned by the same group then the website - $sys_groupid = $app->functions->intval($web['sys_groupid']); - $backup_interval = $app->db->quote($web['backup_interval']); - $backup_copies = $app->functions->intval($web['backup_copies']); - - $sql = "UPDATE web_database SET sys_groupid = '$sys_groupid', backup_interval = '$backup_interval', backup_copies = '$backup_copies' WHERE database_id = ".$this->id; - $app->db->query($sql); - } - + $app->uses('sites_database_plugin'); + $app->sites_database_plugin->processDatabaseUpdate($this); } } -- GitLab From d7927ad2b4f0c891e1ecb3f3b9bb7b46e2dc2c67 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Fri, 10 Oct 2014 13:26:22 +0200 Subject: [PATCH 150/158] - removed obsolete code --- interface/web/sites/database_edit.php | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/interface/web/sites/database_edit.php b/interface/web/sites/database_edit.php index 48540e888..ffc684452 100644 --- a/interface/web/sites/database_edit.php +++ b/interface/web/sites/database_edit.php @@ -251,14 +251,6 @@ class page_action extends tform_actions { // we need remote access rights for this server, so get it's ip address $server_config = $app->getconf->get_server_config($tmp['server_id'], 'server'); if($server_config['ip_address']!='') { - /* - if($this->dataRecord['remote_access'] != 'y') $this->dataRecord['remote_ips'] = ''; - $this->dataRecord['remote_access'] = 'y'; - if(preg_match('/(^|,)' . preg_quote($server_config['ip_address'], '/') . '(,|$)/', $this->dataRecord['remote_ips']) == false) { - $this->dataRecord['remote_ips'] .= ($this->dataRecord['remote_ips'] != '' ? ',' : '') . $server_config['ip_address']; - } - */ - if($this->dataRecord['remote_access'] != 'y'){ $this->dataRecord['remote_ips'] = $server_config['ip_address']; $this->dataRecord['remote_access'] = 'y'; @@ -338,14 +330,6 @@ class page_action extends tform_actions { // we need remote access rights for this server, so get it's ip address $server_config = $app->getconf->get_server_config($tmp['server_id'], 'server'); if($server_config['ip_address']!='') { - /* - if($this->dataRecord['remote_access'] != 'y') $this->dataRecord['remote_ips'] = ''; - $this->dataRecord['remote_access'] = 'y'; - if(preg_match('/(^|,)' . preg_quote($server_config['ip_address'], '/') . '(,|$)/', $this->dataRecord['remote_ips']) == false) { - $this->dataRecord['remote_ips'] .= ($this->dataRecord['remote_ips'] != '' ? ',' : '') . $server_config['ip_address']; - } - */ - if($this->dataRecord['remote_access'] != 'y'){ $this->dataRecord['remote_ips'] = $server_config['ip_address']; $this->dataRecord['remote_access'] = 'y'; @@ -390,10 +374,6 @@ class page_action extends tform_actions { function onInsertSave($sql) { global $app, $conf; - $app->uses('sites_database_plugin'); - - //$app->sites_database_plugin->processDatabaseInsert($this); - $app->db->query($sql); if($app->db->errorMessage != '') die($app->db->errorMessage); $new_id = $app->db->insertID(); -- GitLab From 5049080b7ef50b47bf50bf2cdf3f4c22b1f9394d Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 16 Oct 2014 12:03:52 +0200 Subject: [PATCH 151/158] Implemented: FS#3707 - apps_instance_setting database storing details in plain text --- .../mods-available/monitor_core_module.inc.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/server/mods-available/monitor_core_module.inc.php b/server/mods-available/monitor_core_module.inc.php index d6d28ca63..fc5dd79fd 100644 --- a/server/mods-available/monitor_core_module.inc.php +++ b/server/mods-available/monitor_core_module.inc.php @@ -121,6 +121,7 @@ class monitor_core_module { $this->_monitorFail2ban(); $this->_monitorIPTables(); $this->_monitorSysLog(); + $this->_cleanupAPS(); } private function _monitorEmailQuota() { @@ -844,6 +845,22 @@ class monitor_core_module { ' server_id = ' . $serverId; $app->dbmaster->query($sql); } + + private function _cleanupAPS() { + global $app, $conf; + + // run this only on the master + if($conf['server_id'] == 1) { + $records = $app->db->queryAllRecords("SELECT s.instance_id, s.name, s.value FROM `aps_instances_settings` as s INNER JOIN `aps_instances` as i ON (i.id = s.instance_id) WHERE s.value != '' AND s.name IN ('main_database_password', 'admin_password') AND i.instance_status > 1"); + if(is_array($records)) { + foreach($records as $rec) { + $tmp = $app->db->queryOneRecord("SELECT id FROM aps_instances_settings WHERE instance_id = '".$app->db->quote($rec['instance_id'])."' AND name = '".$app->db->quote($rec['name'])."'"); + $app->db->datalogUpdate('aps_instances_settings', "value = ''", 'id', $tmp['id']); + } + } + } + + } } -- GitLab From 68b1465cab0805f42facbbc76acf68e51889ccbf Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 16 Oct 2014 12:04:50 +0200 Subject: [PATCH 152/158] Changes in SQL injection check of database library. --- interface/lib/classes/db_mysql.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index bcf1b008a..d4ba79c59 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -135,7 +135,7 @@ class db extends mysqli $string_orig = $string; //echo $string; - $chars = array(';', '#', '/*', '*/', '--', ' UNION ', '\\\'', '\\"'); + $chars = array(';', '#', '/*', '*/', '--', '\\\'', '\\"'); $string = str_replace('\\\\', '', $string); $string = preg_replace('/(^|[^\\\])([\'"])\\2/is', '$1', $string); -- GitLab From 53124ed9dc52e8aee60d9018ffb32c18f03c4daa Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 16 Oct 2014 16:37:35 +0200 Subject: [PATCH 153/158] Implemented: FS#3706 - disable SSLv3 to protect servers agains POODLE attack. --- install/tpl/apache_ispconfig.vhost.master | 1 + install/tpl/nginx_ispconfig.vhost.master | 1 + server/conf/nginx_vhost.conf.master | 1 + server/conf/vhost.conf.master | 3 ++- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index 4973af083..3619e16b6 100644 --- a/install/tpl/apache_ispconfig.vhost.master +++ b/install/tpl/apache_ispconfig.vhost.master @@ -63,6 +63,7 @@ NameVirtualHost *: # SSL Configuration SSLEngine On + SSLProtocol All -SSLv2 -SSLv3 SSLCertificateFile /usr/local/ispconfig/interface/ssl/ispserver.crt SSLCertificateKeyFile /usr/local/ispconfig/interface/ssl/ispserver.key SSLCACertificateFile /usr/local/ispconfig/interface/ssl/ispserver.bundle diff --git a/install/tpl/nginx_ispconfig.vhost.master b/install/tpl/nginx_ispconfig.vhost.master index 931bc6162..70d6a53b5 100644 --- a/install/tpl/nginx_ispconfig.vhost.master +++ b/install/tpl/nginx_ispconfig.vhost.master @@ -1,6 +1,7 @@ server { listen {vhost_port}; ssl {ssl_on}; + {ssl_comment}ssl_protocols TLSv1 TLSv1.1 TLSv1.2; {ssl_comment}ssl_certificate /usr/local/ispconfig/interface/ssl/ispserver.crt; {ssl_comment}ssl_certificate_key /usr/local/ispconfig/interface/ssl/ispserver.key; diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 6e3d85324..cb9f628b1 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -6,6 +6,7 @@ server { listen :443 ssl; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; listen []:443 ssl; diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 16e0d1216..23cec4711 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -47,7 +47,8 @@ - SSLEngine on + SSLEngine on + SSLProtocol All -SSLv2 -SSLv3 SSLCertificateFile /ssl/.crt SSLCertificateKeyFile /ssl/.key -- GitLab From 29e299fe7385971ade42b74cdd134d701a709d58 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 16 Oct 2014 17:13:18 +0200 Subject: [PATCH 154/158] Add protection against Poodle attacks in Dovecot 2 and Postfix. --- install/tpl/debian6_dovecot2.conf.master | 1 + install/tpl/debian_dovecot2.conf.master | 1 + install/tpl/debian_postfix.conf.master | 3 ++- install/tpl/fedora_dovecot2.conf.master | 1 + install/tpl/fedora_postfix.conf.master | 3 ++- install/tpl/gentoo_postfix.conf.master | 3 ++- install/tpl/opensuse_dovecot2.conf.master | 1 + install/tpl/opensuse_postfix.conf.master | 3 ++- 8 files changed, 12 insertions(+), 4 deletions(-) diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index f359260da..53f57f120 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -6,6 +6,7 @@ log_timestamp = "%Y-%m-%d %H:%M:%S " mail_privileged_group = vmail ssl_cert = Date: Fri, 17 Oct 2014 12:04:41 +0200 Subject: [PATCH 155/158] Fixed: FS#3696 - Interface SSL keys should be owned by root - Improved postfix SSL configuration to protect against poodle attack. --- install/dist/lib/fedora.lib.php | 7 +++++++ install/dist/lib/gentoo.lib.php | 2 ++ install/dist/lib/opensuse.lib.php | 7 +++++++ install/lib/installer_base.lib.php | 4 ++++ install/tpl/debian_postfix.conf.master | 4 +++- install/tpl/fedora_postfix.conf.master | 4 +++- install/tpl/gentoo_postfix.conf.master | 4 +++- install/tpl/opensuse_postfix.conf.master | 4 +++- 8 files changed, 32 insertions(+), 4 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index e5eefa325..2c312cbbd 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -1058,6 +1058,13 @@ class installer_dist extends installer_base { exec("chmod 600 $install_dir/server/lib/mysql_clientdb.conf"); exec("chown root:root $install_dir/server/lib/mysql_clientdb.conf"); } + + if(is_dir($install_dir.'/interface/invoices')) { + exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices')); + exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices')); + } + + exec('chown -R root:root /usr/local/ispconfig/interface/ssl'); // TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing // and must be fixed as this will allow the apache user to read the ispconfig files. diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 005a2fc2e..3eebf91e2 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -962,6 +962,8 @@ class installer extends installer_base exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices')); exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices')); } + + exec('chown -R root:root /usr/local/ispconfig/interface/ssl'); // TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing // and must be fixed as this will allow the apache user to read the ispconfig files. diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index cd47d0533..6f0807388 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -1131,6 +1131,13 @@ class installer_dist extends installer_base { exec("chmod 600 $install_dir/server/lib/mysql_clientdb.conf"); exec("chown root:root $install_dir/server/lib/mysql_clientdb.conf"); } + + if(is_dir($install_dir.'/interface/invoices')) { + exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices')); + exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices')); + } + + exec('chown -R root:root /usr/local/ispconfig/interface/ssl'); // TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing // and must be fixed as this will allow the apache user to read the ispconfig files. diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 5958d9d6a..86429a9fc 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1716,6 +1716,8 @@ class installer_base { exec("openssl rsa -passin pass:$ssl_pw -in $ssl_key_file -out $ssl_key_file.insecure"); rename($ssl_key_file, $ssl_key_file.'.secure'); rename($ssl_key_file.'.insecure', $ssl_key_file); + + exec('chown -R root:root /usr/local/ispconfig/interface/ssl'); } @@ -1994,6 +1996,8 @@ class installer_base { exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices')); exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices')); } + + exec('chown -R root:root /usr/local/ispconfig/interface/ssl'); // TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing // and must be fixed as this will allow the apache user to read the ispconfig files. diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index ff5052eb1..b322ca71a 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -32,4 +32,6 @@ nested_header_checks = regexp:{config_dir}/nested_header_checks body_checks = regexp:{config_dir}/body_checks owner_request_special = no smtp_tls_security_level = may -smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3 \ No newline at end of file +smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 +smtpd_tls_protocols = !SSLv2,!SSLv3 +smtp_tls_protocols = !SSLv2,!SSLv3 \ No newline at end of file diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 88c8d598b..8545002ee 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -29,4 +29,6 @@ nested_header_checks = regexp:{config_dir}/nested_header_checks body_checks = regexp:{config_dir}/body_checks inet_interfaces = all smtp_tls_security_level = may -smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3 \ No newline at end of file +smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 +smtpd_tls_protocols = !SSLv2,!SSLv3 +smtp_tls_protocols = !SSLv2,!SSLv3 \ No newline at end of file diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index 1ddfd40ef..ca21de5c3 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -29,4 +29,6 @@ nested_header_checks = regexp:{config_dir}/nested_header_checks body_checks = regexp:{config_dir}/body_checks inet_interfaces = all smtp_tls_security_level = may -smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3 \ No newline at end of file +smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 +smtpd_tls_protocols = !SSLv2,!SSLv3 +smtp_tls_protocols = !SSLv2,!SSLv3 \ No newline at end of file diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 80d1fd17a..a94235a2d 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -31,4 +31,6 @@ nested_header_checks = regexp:{config_dir}/nested_header_checks body_checks = regexp:{config_dir}/body_checks inet_interfaces = all smtp_tls_security_level = may -smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3 \ No newline at end of file +smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 +smtpd_tls_protocols = !SSLv2,!SSLv3 +smtp_tls_protocols = !SSLv2,!SSLv3 \ No newline at end of file -- GitLab From 074a578110cefcd658b1c491491757478bf7907e Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 17 Oct 2014 15:29:31 +0200 Subject: [PATCH 156/158] Fixed: FS#3705 - openvz container wont boot after new mounts added to fstab -Added a new option "Network Filesystem" under System > Server config > Web to toggle on / off the _netdev option for the bind mounts in /etc/fstab --- install/tpl/server.ini.master | 1 + .../web/admin/form/server_config.tform.php | 6 ++++++ .../web/admin/lib/lang/ar_server_config.lng | 1 + .../web/admin/lib/lang/bg_server_config.lng | 1 + .../web/admin/lib/lang/br_server_config.lng | 1 + .../web/admin/lib/lang/cz_server_config.lng | 1 + .../web/admin/lib/lang/de_server_config.lng | 1 + .../web/admin/lib/lang/el_server_config.lng | 1 + .../web/admin/lib/lang/en_server_config.lng | 1 + .../web/admin/lib/lang/es_server_config.lng | 1 + .../web/admin/lib/lang/fi_server_config.lng | 1 + .../web/admin/lib/lang/fr_server_config.lng | 1 + .../web/admin/lib/lang/hr_server_config.lng | 1 + .../web/admin/lib/lang/hu_server_config.lng | 1 + .../web/admin/lib/lang/id_server_config.lng | 1 + .../web/admin/lib/lang/it_server_config.lng | 1 + .../web/admin/lib/lang/ja_server_config.lng | 1 + .../web/admin/lib/lang/nl_server_config.lng | 1 + .../web/admin/lib/lang/pl_server_config.lng | 1 + .../web/admin/lib/lang/pt_server_config.lng | 1 + .../web/admin/lib/lang/ro_server_config.lng | 1 + .../web/admin/lib/lang/ru_server_config.lng | 1 + .../web/admin/lib/lang/se_server_config.lng | 1 + .../web/admin/lib/lang/sk_server_config.lng | 1 + .../web/admin/lib/lang/tr_server_config.lng | 1 + .../admin/templates/server_config_web_edit.htm | 6 ++++++ .../plugins-available/apache2_plugin.inc.php | 18 +++++++++++++++--- server/plugins-available/nginx_plugin.inc.php | 16 ++++++++++++++-- 28 files changed, 65 insertions(+), 5 deletions(-) diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 8af63c3f2..7c4a507f6 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -56,6 +56,7 @@ website_basedir=/var/www website_path=/var/www/clients/client[client_id]/web[website_id] website_symlinks=/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/ website_symlinks_rel=n +network_filesystem=n vhost_conf_dir=/etc/apache2/sites-available vhost_conf_enabled_dir=/etc/apache2/sites-enabled nginx_vhost_conf_dir=/etc/nginx/sites-available diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 01ac5681d..fff0a9f82 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -549,6 +549,12 @@ $form["tabs"]['web'] = array( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'network_filesystem' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'website_autoalias' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 7f23b7d2b..7cd66c713 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index b15c3c6d0..8e87e0417 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 2b0dd6705..9747b3d4a 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index f9b3ba3db..e469ac20c 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -241,5 +241,6 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index b040dba08..2e7bd4b4b 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Netzwerk-Dateisystem'; ?> diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 6ab52a93c..a941878b4 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index cc34e05ac..f11cd56f7 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 42aeb0942..6650d658f 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 13ef9f333..4ea35433d 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index d66d977f1..b8030f310 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 12c695c4e..ba47ff7a0 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -241,6 +241,7 @@ $wb['vlogger_config_dir_error_regex'] = 'Neispravan vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Neispravan cron init script.'; $wb['crontab_dir_error_regex'] = 'Neispravan crontab direktorij.'; $wb['cron_wget_error_regex'] = 'Neispravna cron wget putanja.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 4a1752564..2ce265ca9 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index ac67571df..b7768826c 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index fac8b35bb..7eb3c8ec6 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 110148ce1..4c5b74334 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index fb97a2ce2..2615afea8 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index ada98882b..95578799d 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index e9fcd3736..db08597ff 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 078910fc1..abaa2db3c 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 9f881ae24..5e6fcf6ed 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index fc5b2017c..71c07ff7a 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 776357db6..a67feff86 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 6d6e05d55..2604cbfae 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -241,4 +241,5 @@ $wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; $wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; $wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Network Filesystem'; ?> diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index 616969191..bcb061254 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -30,6 +30,12 @@
{tmpl_var name='website_symlinks_rel'}
+ +
+ +
+ {tmpl_var name='network_filesystem'} +
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 3c4ba3e77..7c1903a13 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -495,15 +495,27 @@ class apache2_plugin { if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); //* Change the log mount + /* $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; $app->system->removeLine('/etc/fstab', $fstab_line); $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; $app->system->removeLine('/etc/fstab', $fstab_line); - $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0'; - $app->system->replaceLine('/etc/fstab', $fstab_line, $fstab_line, 1, 1); + $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; + $app->system->removeLine('/etc/fstab', $fstab_line); + */ + + $fstab_line_old = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; + + if($web_config['network_filesystem'] == 'y') { + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0'; + $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); + } else { + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait 0 0'; + $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); + } exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); - + } //print_r($data); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 0e77205cc..02fb427fe 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -501,12 +501,24 @@ class nginx_plugin { if($nginx_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); //* Change the log mount + /* $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; $app->system->removeLine('/etc/fstab', $fstab_line); $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; $app->system->removeLine('/etc/fstab', $fstab_line); - $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0'; - $app->system->replaceLine('/etc/fstab', $fstab_line, $fstab_line, 1, 1); + $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; + $app->system->removeLine('/etc/fstab', $fstab_line); + */ + + $fstab_line_old = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind'; + + if($web_config['network_filesystem'] == 'y') { + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0'; + $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); + } else { + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait 0 0'; + $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); + } exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); -- GitLab From ea9199eb394c7eae3269dfd6f68f50a5bec725fe Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Fri, 17 Oct 2014 15:32:16 +0200 Subject: [PATCH 157/158] Updated version number to 3.0.5.4p4 --- install/sql/ispconfig3.sql | 2 +- install/tpl/config.inc.php.master | 2 +- interface/lib/config.inc.php | 2 +- interface/web/themes/blue/ispconfig_version | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 46b8025d4..59e6a7fad 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2292,7 +2292,7 @@ INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`, -- Dumping data for table `sys_config` -- -INSERT INTO sys_config VALUES ('db','db_version','3.0.5.4p3'); +INSERT INTO sys_config VALUES ('db','db_version','3.0.5.4p4'); INSERT INTO sys_config VALUES ('interface','session_timeout','0'); SET FOREIGN_KEY_CHECKS = 1; diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index bae2adb93..87682ea85 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -56,7 +56,7 @@ $revision = str_replace(array('Revision:','$',' '), '', $svn_revision); //** Application define('ISPC_APP_TITLE', 'ISPConfig'); -define('ISPC_APP_VERSION', '3.0.5.4p3'); +define('ISPC_APP_VERSION', '3.0.5.4p4'); define('DEVSYSTEM', 0); diff --git a/interface/lib/config.inc.php b/interface/lib/config.inc.php index b6ee79e92..7fddb21f8 100644 --- a/interface/lib/config.inc.php +++ b/interface/lib/config.inc.php @@ -44,7 +44,7 @@ $revision = str_replace(array('Revision:', '$', ' '), '', $svn_revision); //** Application define('ISPC_APP_TITLE', 'ISPConfig'); -define('ISPC_APP_VERSION', '3.0.5.4p3'); +define('ISPC_APP_VERSION', '3.0.5.4p4'); define('DEVSYSTEM', 0); diff --git a/interface/web/themes/blue/ispconfig_version b/interface/web/themes/blue/ispconfig_version index 000d1abce..54647ca8b 100644 --- a/interface/web/themes/blue/ispconfig_version +++ b/interface/web/themes/blue/ispconfig_version @@ -1 +1 @@ -3.0.5.4p3 +3.0.5.4p4 -- GitLab From 4ca1f82d6486238543ea005dbb9d22dd2d534505 Mon Sep 17 00:00:00 2001 From: Marius Cramer Date: Sat, 18 Oct 2014 09:39:04 +0200 Subject: [PATCH 158/158] - fixed typo (double }) in fedora install library --- install/dist/lib/fedora.lib.php | 1 - 1 file changed, 1 deletion(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 2c312cbbd..5771bbaea 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -236,7 +236,6 @@ class installer_dist extends installer_base { $command = 'cd '.$config_dir.'; ' .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; } - } exec($command); $command = 'chmod o= '.$config_dir.'/smtpd.key'; -- GitLab