From 3b8c4a2b513943f6afe5840e915cf64e1563fa9e Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 9 May 2017 15:45:20 +0200 Subject: [PATCH 01/10] Updated version detection code for Ubuntu 17.04 --- install/lib/install.lib.php | 4 ++++ server/lib/classes/monitor_tools.inc.php | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 684e3d2bd..7f30a4122 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -92,6 +92,10 @@ function get_distname() { $mainver = $ver; } switch ($mainver){ + case "17.04": + $relname = "(Zesty Zapus)"; + $distconfid = 'ubuntu1604'; + break; case "16.10": $relname = "(Yakkety Yak)"; $distconfid = 'ubuntu1604'; diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 5d2a402de..6b1564366 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -87,6 +87,10 @@ class monitor_tools { $mainver = $ver; } switch ($mainver){ + case "17.04": + $relname = "(Zesty Zapus)"; + $distconfid = 'ubuntu1604'; + break; case "16.10": $relname = "(Yakkety Yak)"; $distconfid = 'ubuntu1604'; -- GitLab From 472bafb9d73c8033dfefab8597c2fa971a48069e Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 11 May 2017 12:49:06 +0200 Subject: [PATCH 02/10] Implemented #4653 Add support for HHVM with apache mod_proxy_fcgi --- server/conf/vhost.conf.master | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 9faa2b1c7..d5052d8d5 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -406,6 +406,32 @@ Alias /hhvm-fcgi {tmpl_var name='document_root'}/cgi-bin/hhvm-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} FastCgiExternalServer {tmpl_var name='document_root'}/cgi-bin/hhvm-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} -idle-timeout 300 -socket /var/run/hhvm/hhvm..sock -pass-header Authorization + + + + Require all granted + + Order allow,deny + Allow from all + + + + + SetHandler "proxy:unix:/var/run/hhvm/hhvm..sock|fcgi://localhost" + + + SetHandler "proxy:unix:/var/run/hhvm/hhvm..sock|fcgi://localhost" + + + + + SetHandler "proxy:unix:/var/run/hhvm/hhvm..sock|fcgi://localhost" + + + SetHandler "proxy:unix:/var/run/hhvm/hhvm..sock|fcgi://localhost" + + + -- GitLab From f94f4f51ceb4f091293df71d266b54e954e0caef Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 11 May 2017 12:59:03 +0200 Subject: [PATCH 03/10] Fixed #4641 PHP Fatal error: Using $this when not in object context --- interface/web/login/index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/login/index.php b/interface/web/login/index.php index c747c4e8a..0f7a53f3e 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -298,7 +298,7 @@ if(count($_POST) > 0) { $error = $app->lng('error_user_password_incorrect'); if($app->db->errorMessage != '') $error .= '
'.$app->db->errorMessage != ''; - $app->plugin->raiseEvent('login_failed', $this); + $app->plugin->raiseEvent('login_failed', $username); //* Save failed login message to var $authlog = 'Failed login for user \''. $username .'\' from '. long2ip($ip) .' at '. date('Y-m-d H:i:s'); $authlog_handle = fopen($conf['ispconfig_log_dir'].'/auth.log', 'a'); @@ -309,7 +309,7 @@ if(count($_POST) > 0) { } else { //* Username or password empty if($error == '') $error = $app->lng('error_user_password_empty'); - $app->plugin->raiseEvent('login_empty', $this); + $app->plugin->raiseEvent('login_empty', $username); } } -- GitLab From 47840eba49b3b1170155dd51deee23cc7257be8f Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 11 May 2017 13:24:59 +0200 Subject: [PATCH 04/10] Fixed #4650 dovecot postmaster_address --- install/dist/lib/debian60.lib.php | 1 + install/dist/lib/fedora.lib.php | 2 ++ install/dist/lib/opensuse.lib.php | 2 ++ install/lib/installer_base.lib.php | 1 + 4 files changed, 6 insertions(+) diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index 9d6b2d6e4..e24993056 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -105,6 +105,7 @@ class installer extends installer_base { copy('tpl/debian6_dovecot2.conf.master', $config_dir.'/'.$configfile); } replaceLine($config_dir.'/'.$configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); + replaceLine($config_dir.'/'.$configfile, 'postmaster_address = webmaster@localhost', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); if(version_compare($dovecot_version,2.1) < 0) { removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); } diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index bb866d9b8..bccb6cd5d 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -443,6 +443,8 @@ class installer_dist extends installer_base { if(version_compare($dovecot_version,2.1) < 0) { removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); } + replaceLine($config_dir.'/'.$configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); + replaceLine($config_dir.'/'.$configfile, 'postmaster_address = webmaster@localhost', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); } else { if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/fedora_dovecot.conf.master')) { copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/fedora_dovecot.conf.master', $config_dir.'/'.$configfile); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 354fc4f24..d091b3b1b 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -450,6 +450,8 @@ class installer_dist extends installer_base { } else { copy('tpl/opensuse_dovecot2.conf.master', $config_dir.'/'.$configfile); } + replaceLine($config_dir.'/'.$configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); + replaceLine($config_dir.'/'.$configfile, 'postmaster_address = webmaster@localhost', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); } else { if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/opensuse_dovecot.conf.master')) { copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/opensuse_dovecot.conf.master', $config_dir.'/'.$configfile); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index ea49af6f5..f2c89fb0b 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1266,6 +1266,7 @@ class installer_base { copy('tpl/debian_dovecot2.conf.master', $config_dir.'/'.$configfile); } replaceLine($config_dir.'/'.$configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); + replaceLine($config_dir.'/'.$configfile, 'postmaster_address = webmaster@localhost', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); if(version_compare($dovecot_version, 2.1, '<')) { removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); } -- GitLab From 1c730353ac39532116feb6b66f29cc40c87b58bb Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 11 May 2017 13:57:33 +0200 Subject: [PATCH 05/10] #4640 Update dns_rr data to TXT type again --- install/sql/incremental/upd_dev_collection.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 51cb7b0d0..04f54690c 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -1,7 +1,6 @@ ALTER TABLE `web_domain` CHANGE `folder_directive_snippets` `folder_directive_snippets` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL; ALTER TABLE `web_domain` ADD `log_retention` INT NOT NULL DEFAULT '30' AFTER `https_port`; ALTER TABLE `web_domain` CHANGE `stats_type` `stats_type` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'awstats'; - ALTER TABLE `spamfilter_policy` CHANGE `virus_lover` `virus_lover` ENUM('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N', CHANGE `spam_lover` `spam_lover` ENUM('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N', @@ -15,3 +14,4 @@ CHANGE `spam_modifies_subj` `spam_modifies_subj` ENUM('N','Y') CHARACTER SET utf CHANGE `warnvirusrecip` `warnvirusrecip` ENUM('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N', CHANGE `warnbannedrecip` `warnbannedrecip` ENUM('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N', CHANGE `warnbadhrecip` `warnbadhrecip` ENUM('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N'; +ALTER TABLE `dns_rr` CHANGE `data` `data` TEXT NOT NULL; \ No newline at end of file -- GitLab From fcc522b84bc4521ad99ac0eb5b4e474e95028ca6 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Thu, 11 May 2017 14:18:04 +0200 Subject: [PATCH 06/10] Fixed #4648 Database quota value out of range --- install/sql/incremental/upd_dev_collection.sql | 3 ++- install/sql/ispconfig3.sql | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 04f54690c..adce2c8c9 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -14,4 +14,5 @@ CHANGE `spam_modifies_subj` `spam_modifies_subj` ENUM('N','Y') CHARACTER SET utf CHANGE `warnvirusrecip` `warnvirusrecip` ENUM('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N', CHANGE `warnbannedrecip` `warnbannedrecip` ENUM('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N', CHANGE `warnbadhrecip` `warnbadhrecip` ENUM('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N'; -ALTER TABLE `dns_rr` CHANGE `data` `data` TEXT NOT NULL; \ No newline at end of file +ALTER TABLE `dns_rr` CHANGE `data` `data` TEXT NOT NULL; +ALTER TABLE `web_database` CHANGE `database_quota` `database_quota` INT(11) NULL DEFAULT NULL; \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 68cd76f0e..3e9642d6c 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1864,7 +1864,7 @@ CREATE TABLE `web_database` ( `type` varchar(16) NOT NULL DEFAULT 'y', `database_name` varchar(64) DEFAULT NULL, `database_name_prefix` varchar(50) NOT NULL default '', - `database_quota` int(11) unsigned DEFAULT NULL, + `database_quota` int(11) DEFAULT NULL, `quota_exceeded` enum('n','y') NOT NULL DEFAULT 'n', `last_quota_notification` date NULL default NULL, `database_user_id` int(11) unsigned DEFAULT NULL, -- GitLab From dd1a335514ff56f2fca89f9f96861c857bf8aa54 Mon Sep 17 00:00:00 2001 From: Florian Schaal Date: Wed, 17 May 2017 09:44:08 +0200 Subject: [PATCH 07/10] allow dkim-records if there is no maildomain (#4626) --- interface/web/dns/dns_dkim_edit.php | 41 ++++++++---- interface/web/dns/lib/lang/ar_dns_dkim.lng | 2 + interface/web/dns/lib/lang/bg_dns_dkim.lng | 2 + interface/web/dns/lib/lang/br_dns_dkim.lng | 2 + interface/web/dns/lib/lang/ca_dns_dkim.lng | 2 + interface/web/dns/lib/lang/cz_dns_dkim.lng | 2 + interface/web/dns/lib/lang/de_dns_dkim.lng | 2 + interface/web/dns/lib/lang/dk_dns_dkim.lng | 2 + interface/web/dns/lib/lang/el_dns_dkim.lng | 2 + interface/web/dns/lib/lang/en_dns_dkim.lng | 2 + interface/web/dns/lib/lang/es_dns_dkim.lng | 2 + interface/web/dns/lib/lang/fi_dns_dkim.lng | 2 + interface/web/dns/lib/lang/fr_dns_dkim.lng | 2 + interface/web/dns/lib/lang/hr_dns_dkim.lng | 2 + interface/web/dns/lib/lang/hu_dns_dkim.lng | 2 + interface/web/dns/lib/lang/id_dns_dkim.lng | 2 + interface/web/dns/lib/lang/it_dns_dkim.lng | 2 + interface/web/dns/lib/lang/ja_dns_dkim.lng | 2 + interface/web/dns/lib/lang/nl_dns_dkim.lng | 2 + interface/web/dns/lib/lang/pl_dns_dkim.lng | 2 + interface/web/dns/lib/lang/pt_dns_dkim.lng | 2 + interface/web/dns/lib/lang/ro_dns_dkim.lng | 2 + interface/web/dns/lib/lang/ru_dns_dkim.lng | 2 + interface/web/dns/lib/lang/se_dns_dkim.lng | 2 + interface/web/dns/lib/lang/sk_dns_dkim.lng | 2 + interface/web/dns/lib/lang/tr_dns_dkim.lng | 2 + interface/web/dns/templates/dns_dkim_edit.htm | 66 ++++++++++--------- 27 files changed, 112 insertions(+), 45 deletions(-) diff --git a/interface/web/dns/dns_dkim_edit.php b/interface/web/dns/dns_dkim_edit.php index a1c4c6f82..cdd71f01a 100644 --- a/interface/web/dns/dns_dkim_edit.php +++ b/interface/web/dns/dns_dkim_edit.php @@ -72,16 +72,26 @@ class page_action extends tform_actions { parent::onShowNew(); $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $_GET['zone']); - $sql=$app->db->queryOneRecord("SELECT dkim_public, dkim_selector FROM mail_domain WHERE domain = ? AND dkim = 'y' AND " . $app->tform->getAuthSQL('r'), substr_replace($soa['origin'],'',-1)); - $public_key=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$sql['dkim_public']); - $app->tpl->setVar('public_key', $public_key); - $app->tpl->setVar('selector', $sql['dkim_selector']); + $sql=$app->db->queryOneRecord("SELECT domain, dkim_public, dkim_selector, dkim FROM mail_domain WHERE domain = ? AND " . $app->tform->getAuthSQL('r'), substr_replace($soa['origin'],'',-1)); + if(isset($sql['domain']) && $sql['domain'] != '') { + if($sql['dkim'] == 'y') { + $public_key=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$sql['dkim_public']); + $app->tpl->setVar('public_key', $public_key); + $app->tpl->setVar('selector', $sql['dkim_selector']); + } else { + //TODO: show warning - use mail_domain for dkim and enabled dkim + } + $app->tpl->setVar('edit_disabled', 1); + } else { + $app->tpl->setVar('edit_disabled', 0); + } $app->tpl->setVar('name', $soa['origin']); } function onSubmit() { global $app, $conf; + // Get the parent soa record of the domain $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $_POST["zone"]); // Check if Domain belongs to user @@ -110,15 +120,20 @@ class page_action extends tform_actions { $this->dataRecord['name']=$this->dataRecord['selector'].'._domainkey.'.$this->dataRecord['name']; $this->dataRecord['ttl']=60; } - // Update the serial number and timestamp of the RR record - $soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id); - $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]); - $this->dataRecord["stamp"] = date('Y-m-d H:i:s'); - - // check for duplicate entry - $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data = ? AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord["data"], $this->dataRecord['name']); - if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"]; - if (empty($this->dataRecord['data'])) $app->tform->errorMessage .= $app->tform->wordbook["dkim_disabled_txt"]; + // Update the serial number and timestamp of the RR record + $soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id); + $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]); + $this->dataRecord["stamp"] = date('Y-m-d H:i:s'); + + // check for duplicate entry + $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data = ? AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord["data"], $this->dataRecord['name']); + if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"]; + if (empty($this->dataRecord['data'])) $app->tform->errorMessage /= $app->tform->wordbook["dkim_disabled_txt"]; + + // validate selector and public-key + if (empty($this->dataRecord['selector'])) $app->tform->errorMessage .= '
'.$app->tform->wordbook["dkim_selector_empty_txt"].'
'; + $this->dataRecord['data']=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$this->dataRecord['data']); // if the users entered his own key + parent::onSubmit(); } diff --git a/interface/web/dns/lib/lang/ar_dns_dkim.lng b/interface/web/dns/lib/lang/ar_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/ar_dns_dkim.lng +++ b/interface/web/dns/lib/lang/ar_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_dkim.lng b/interface/web/dns/lib/lang/bg_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/bg_dns_dkim.lng +++ b/interface/web/dns/lib/lang/bg_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_dkim.lng b/interface/web/dns/lib/lang/br_dns_dkim.lng index 9f4a80572..1ec851a21 100644 --- a/interface/web/dns/lib/lang/br_dns_dkim.lng +++ b/interface/web/dns/lib/lang/br_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alc $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.'; $wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.'; $wb['selector_txt'] = 'Seletor DKIM'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_dkim.lng b/interface/web/dns/lib/lang/ca_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/ca_dns_dkim.lng +++ b/interface/web/dns/lib/lang/ca_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_dkim.lng b/interface/web/dns/lib/lang/cz_dns_dkim.lng index 77ac3cd81..e3a93bc8b 100644 --- a/interface/web/dns/lib/lang/cz_dns_dkim.lng +++ b/interface/web/dns/lib/lang/cz_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'Byl dosažen max. počet DNS záznamů pro váš $wb['no_zone_perm'] = 'Nemáte povolení k přidat záznam do této zóny DNS.'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; $wb['selector_txt'] = 'DKIM selektor'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_dkim.lng b/interface/web/dns/lib/lang/de_dns_dkim.lng index 617415a6d..ea3223a95 100644 --- a/interface/web/dns/lib/lang/de_dns_dkim.lng +++ b/interface/web/dns/lib/lang/de_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'Die max. Anzahl von DNS Eintraegen für den Accou $wb['no_zone_perm'] = 'Fehlende Berechtigung zum Hinzufuegen eines Eintrags zur DNS-Zone.'; $wb['ttl_range_error'] = 'Min. TTL time ist 60 Sekunden.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'öffentlicher Schlüssel fehlt'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector darf nicht leer sein'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_dkim.lng b/interface/web/dns/lib/lang/dk_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/dk_dns_dkim.lng +++ b/interface/web/dns/lib/lang/dk_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_dkim.lng b/interface/web/dns/lib/lang/el_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/el_dns_dkim.lng +++ b/interface/web/dns/lib/lang/el_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_dkim.lng b/interface/web/dns/lib/lang/en_dns_dkim.lng index b89f024ed..e1adcb914 100644 --- a/interface/web/dns/lib/lang/en_dns_dkim.lng +++ b/interface/web/dns/lib/lang/en_dns_dkim.lng @@ -8,4 +8,6 @@ $wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account i $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/es_dns_dkim.lng b/interface/web/dns/lib/lang/es_dns_dkim.lng index 983dd749b..0d7e85b74 100755 --- a/interface/web/dns/lib/lang/es_dns_dkim.lng +++ b/interface/web/dns/lib/lang/es_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['record_exists_txt'] = 'El registro DNS ya existe'; $wb['selector_txt'] = 'Seleccionador DKIM'; $wb['ttl_range_error'] = 'El tiempo mín. de TTL es 60 segundos.'; $wb['ttl_txt'] = 'TTL'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_dkim.lng b/interface/web/dns/lib/lang/fi_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/fi_dns_dkim.lng +++ b/interface/web/dns/lib/lang/fi_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_dkim.lng b/interface/web/dns/lib/lang/fr_dns_dkim.lng index d5872d440..843e4c4d4 100644 --- a/interface/web/dns/lib/lang/fr_dns_dkim.lng +++ b/interface/web/dns/lib/lang/fr_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistreme $wb['ttl_range_error'] = 'Le temps minimum TTL est de 60 secondes.'; $wb['selector_txt'] = 'Selecteur DKIM'; $wb['dkim_disabled_txt'] = 'DKIM disabled for this mail-domain'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_dkim.lng b/interface/web/dns/lib/lang/hr_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/hr_dns_dkim.lng +++ b/interface/web/dns/lib/lang/hr_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_dkim.lng b/interface/web/dns/lib/lang/hu_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/hu_dns_dkim.lng +++ b/interface/web/dns/lib/lang/hu_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_dkim.lng b/interface/web/dns/lib/lang/id_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/id_dns_dkim.lng +++ b/interface/web/dns/lib/lang/id_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_dkim.lng b/interface/web/dns/lib/lang/it_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/it_dns_dkim.lng +++ b/interface/web/dns/lib/lang/it_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_dkim.lng b/interface/web/dns/lib/lang/ja_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/ja_dns_dkim.lng +++ b/interface/web/dns/lib/lang/ja_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_dkim.lng b/interface/web/dns/lib/lang/nl_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/nl_dns_dkim.lng +++ b/interface/web/dns/lib/lang/nl_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_dkim.lng b/interface/web/dns/lib/lang/pl_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/pl_dns_dkim.lng +++ b/interface/web/dns/lib/lang/pl_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_dkim.lng b/interface/web/dns/lib/lang/pt_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/pt_dns_dkim.lng +++ b/interface/web/dns/lib/lang/pt_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_dkim.lng b/interface/web/dns/lib/lang/ro_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/ro_dns_dkim.lng +++ b/interface/web/dns/lib/lang/ro_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_dkim.lng b/interface/web/dns/lib/lang/ru_dns_dkim.lng index d701745f0..8cf370233 100644 --- a/interface/web/dns/lib/lang/ru_dns_dkim.lng +++ b/interface/web/dns/lib/lang/ru_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'Макс. количество DNS-записей $wb['no_zone_perm'] = 'У Вас нет прав добавлять эту запись.'; $wb['ttl_range_error'] = 'Мин. время TTL 60 секунд.'; $wb['selector_txt'] = 'DKIM-селектор'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_dkim.lng b/interface/web/dns/lib/lang/se_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/se_dns_dkim.lng +++ b/interface/web/dns/lib/lang/se_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_dkim.lng b/interface/web/dns/lib/lang/sk_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/sk_dns_dkim.lng +++ b/interface/web/dns/lib/lang/sk_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_dkim.lng b/interface/web/dns/lib/lang/tr_dns_dkim.lng index b7a2b9be7..4d45fb4fe 100644 --- a/interface/web/dns/lib/lang/tr_dns_dkim.lng +++ b/interface/web/dns/lib/lang/tr_dns_dkim.lng @@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['selector_txt'] = 'DKIM-Selector'; +$wb['data_error_empty'] = 'Public-Key missing'; +$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; ?> diff --git a/interface/web/dns/templates/dns_dkim_edit.htm b/interface/web/dns/templates/dns_dkim_edit.htm index 6914f13d9..310dda1c9 100644 --- a/interface/web/dns/templates/dns_dkim_edit.htm +++ b/interface/web/dns/templates/dns_dkim_edit.htm @@ -1,36 +1,38 @@ - -

+ +

- -
- -
-
-
- -
-
- -
+
+ + +
+ +
+
+
+
+ + +
+ +
+
+
+
+ +
+
+
+ +
{tmpl_var name='active'}
+
-
- -
- {tmpl_var name='active'} -
-
- - - - - - - + + + + -
- - -
+
+ + +
-- GitLab From a2bc35c5b09492f5f7c1a93ca5f9d60e010d00f4 Mon Sep 17 00:00:00 2001 From: Marius Burkard Date: Wed, 17 May 2017 15:37:37 +0200 Subject: [PATCH 08/10] - implemented REST handler --- interface/lib/classes/rest_handler.inc.php | 182 +++++++++++++++++++++ interface/web/remote/rest.php | 11 ++ 2 files changed, 193 insertions(+) create mode 100644 interface/lib/classes/rest_handler.inc.php create mode 100644 interface/web/remote/rest.php diff --git a/interface/lib/classes/rest_handler.inc.php b/interface/lib/classes/rest_handler.inc.php new file mode 100644 index 000000000..c1d7b5f65 --- /dev/null +++ b/interface/lib/classes/rest_handler.inc.php @@ -0,0 +1,182 @@ +load('remoting'); + + // load all remote classes and get their methods + $dir = dirname(realpath(__FILE__)) . '/remote.d'; + $d = opendir($dir); + while($f = readdir($d)) { + if($f == '.' || $f == '..') continue; + if(!is_file($dir . '/' . $f) || substr($f, strrpos($f, '.')) != '.php') continue; + + $name = substr($f, 0, strpos($f, '.')); + + include $dir . '/' . $f; + $class_name = 'remoting_' . $name; + if(class_exists($class_name, false)) { + $this->classes[$class_name] = new $class_name(); + foreach(get_class_methods($this->classes[$class_name]) as $method) { + $this->methods[$method] = $class_name; + } + } + } + closedir($d); + + // add main methods + $this->methods['login'] = 'remoting'; + $this->methods['logout'] = 'remoting'; + $this->methods['get_function_list'] = 'remoting'; + + // create main class + $this->classes['remoting'] = new remoting(array_keys($this->methods)); + } + + private function _return_error($code, $codename, $message) { + header('HTTP/1.1 ' . $code . ' ' . $codename); + print ' + + + + ERROR ' . $code . ': ' . $codename . ' + + + +

' . $code . ': ' . $codename . '

+

' . htmlentities($message, ENT_QUOTES, 'UTF-8') . '

+ + '; + exit; + } + + private function _return_json($code, $data = '') { + + header('HTTP/1.1 ' . $code . ' OK'); + if(!is_array($data) && !is_object($data)) { + header('Content-Type: text/plain; charset="utf-8"'); + print $data; + } else { + header('Content-Type: application/json; charset="utf-8"'); + print json_encode($data); + } + exit; + } + + public function run() { + // check called http method + + $method = ''; + $return_code = 0; + $http_method = (isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : ''); + if($http_method == 'POST') { + $method = 'add'; + $return_code = 201; + } elseif($http_method == 'GET') { + $method = 'get'; + $return_code = 200; + } elseif($http_method == 'PUT') { + $method = 'update'; + $return_code = 204; + } elseif($http_method == 'DELETE') { + $method = 'delete'; + $return_code = 204; + } else { + $this->_return_error(400, 'INVALID REQUEST', 'Invalid request'); + } + + $params = array(); + if($http_method == 'POST' || $http_method == 'PUT') { + $raw = file_get_contents("php://input"); + $json = json_decode($raw, true); + if(!is_array($json)) $this->_return_error(400, 'INVALID REQUEST', 'The JSON data sent to the api is invalid'); + } + + // get URL + $url_path = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''); + if(!preg_match('^\/?remote\/api\/v(\d+)\/(\w+)(?:\/(\d+)|\/)?(?:\?.*)$/', $url_path, $parts)) { + $this->_return_error(400, 'INVALID REQUEST', 'The url you called is not a valid REST url.'); + } + $this->api_version = $parts[1]; + if($this->api_version != 1) { + $this->_return_error(400, 'INVALID REQUEST', 'Invalid API version called.'); + } + $section = $parts[2]; + $primary_id = (isset($parts[3]) ? $parts[3] : 0); + $qry = (isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : ''); + $get = array(); + parse_str($qry, $get); + + $method = $section . '_' . $method; + + + if(array_key_exists($method, $this->methods) == false) { + $this->_return_error(400, 'INVALID REQUEST', 'Method ' . $method . ' does not exist'); + } + + $class_name = $this->methods[$method]; + if(array_key_exists($class_name, $this->classes) == false) { + $this->_return_error(400, 'INVALID REQUEST', 'Class ' . $class_name . ' does not exist'); + } + + if(method_exists($this->classes[$class_name], $method) == false) { + $this->_return_error(400, 'INVALID REQUEST', 'Method ' . $method . ' does not exist in the class it was expected (' . $class_name . ')'); + } + + $methObj = new ReflectionMethod($this->classes[$class_name], $method); + foreach($methObj->getParameters() as $param) { + $pname = $param->name; + if($pname == 'session_id') $params[] = (isset($get['session_id']) ? $get['session_id'] : ''); + elseif($pname == 'primary_id' && $primary_id) $params[] = $primary_id; + elseif(isset($json[$pname])) $params[] = $json[$pname]; + else $params[] = null; + } + + try { + $this->_return_json($return_code, call_user_func_array(array($this->classes[$class_name], $method), $params)); + } catch(SoapFault $e) { + $this->_return_error(500, 'REQUEST ERROR', $e->getMessage()); + } + } + +} + +?> diff --git a/interface/web/remote/rest.php b/interface/web/remote/rest.php new file mode 100644 index 000000000..37db80d66 --- /dev/null +++ b/interface/web/remote/rest.php @@ -0,0 +1,11 @@ +load('rest_handler'); +$rest_handler = new ISPConfigRESTHandler(); +$rest_handler->run(); + +?> -- GitLab From 665999f63a9639298f3fc70faa6d5f178419c5d0 Mon Sep 17 00:00:00 2001 From: Marius Burkard Date: Wed, 17 May 2017 15:42:41 +0200 Subject: [PATCH 09/10] - param handling for REST --- interface/lib/classes/rest_handler.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/lib/classes/rest_handler.inc.php b/interface/lib/classes/rest_handler.inc.php index c1d7b5f65..ceaa7c63b 100644 --- a/interface/lib/classes/rest_handler.inc.php +++ b/interface/lib/classes/rest_handler.inc.php @@ -166,6 +166,7 @@ class ISPConfigRESTHandler { $pname = $param->name; if($pname == 'session_id') $params[] = (isset($get['session_id']) ? $get['session_id'] : ''); elseif($pname == 'primary_id' && $primary_id) $params[] = $primary_id; + elseif($pname == 'params' && is_array($json)) $params[] = $json; elseif(isset($json[$pname])) $params[] = $json[$pname]; else $params[] = null; } -- GitLab From 4338a06e4ac1808f7872a31338e35a6f3a381ae1 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Tue, 30 May 2017 10:20:09 +0200 Subject: [PATCH 10/10] Add function is_client_of_reseller($userid) to check if a client belongs to a reseller. --- interface/lib/classes/auth.inc.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php index 9c52f5097..6658c4c11 100644 --- a/interface/lib/classes/auth.inc.php +++ b/interface/lib/classes/auth.inc.php @@ -64,6 +64,20 @@ class auth { return false; } } + + // Function to check if a client belongs to a reseller + public function is_client_of_reseller($userid = 0) { + global $app, $conf; + + if($userid == 0) $userid = $_SESSION['s']['user']['userid']; + + $client = $app->db->queryOneRecord("SELECT client.sys_userid, client.sys_groupid FROM sys_user, client WHERE sys_user.userid = ? AND sys_user.client_id = client.client_id", $userid); + if($client['sys_userid'] > 1 || $client['sys_groupid'] > 1) { + return true; + } else { + return false; + } + } //** This function adds a given group id to a given user. public function add_group_to_user($userid, $groupid) { -- GitLab