From 54afe0e3036f339e623e98f5d3fbb397376c7ca2 Mon Sep 17 00:00:00 2001 From: Florian Schaal <florian@schaal-24.de> Date: Sun, 15 Feb 2015 04:05:48 -0500 Subject: [PATCH] allow ipv6 for openvz-container --- interface/web/client/client_edit.php | 123 ++++++++++++++++++++++++++++++++++------ 1 files changed, 104 insertions(+), 19 deletions(-) diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php index 33408d2..5c47fe5 100644 --- a/interface/web/client/client_edit.php +++ b/interface/web/client/client_edit.php @@ -96,6 +96,10 @@ //* Resellers shall not be able to create another reseller if($_SESSION["s"]["user"]["typ"] == 'user') { $this->dataRecord['limit_client'] = 0; + } else { + if($this->dataRecord["reseller"]) { + $this->dataRecord["limit_client"] = 1; // allow 1 client, template limits will be applied later, if we set -1 it would override template limits + } } if($this->id != 0) { @@ -223,7 +227,7 @@ if($app->auth->is_admin()) { // Fill the client select field - $sql = "SELECT client.client_id, sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 AND client.limit_client > 0 ORDER BY sys_group.name"; + $sql = "SELECT client.client_id, sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 AND client.limit_client != 0 ORDER BY client.company_name, client.contact_name, sys_group.name"; $clients = $app->db->queryAllRecords($sql); $client_select = "<option value='0'>- ".$app->tform->lng('none_txt')." -</option>"; //$tmp_data_record = $app->tform->getDataRecord($this->id); @@ -291,16 +295,31 @@ } //* Set the default servers - $tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE mail_server = 1 AND mirror_server_id = 0 LIMIT 0,1'); - $default_mailserver = $app->functions->intval($tmp['server_id']); - $tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE web_server = 1 AND mirror_server_id = 0 LIMIT 0,1'); - $default_webserver = $app->functions->intval($tmp['server_id']); - $tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE dns_server = 1 AND mirror_server_id = 0 LIMIT 0,1'); - $default_dnsserver = $app->functions->intval($tmp['server_id']); - $tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 AND mirror_server_id = 0 LIMIT 0,1'); - $default_dbserver = $app->functions->intval($tmp['server_id']); + $tmp = $app->getconf->get_global_config('mail'); + $default_mailserver = $app->functions->intval($tmp['default_mailserver']); + if (!$default_mailserver) { + $tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE mail_server = 1 AND mirror_server_id = 0 LIMIT 0,1'); + $default_mailserver = $app->functions->intval($tmp['server_id']); + } + $tmp = $app->getconf->get_global_config('sites'); + $default_webserver = $app->functions->intval($tmp['default_webserver']); + $default_dbserver = $app->functions->intval($tmp['default_dbserver']); + if (!$default_webserver) { + $tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE web_server = 1 AND mirror_server_id = 0 LIMIT 0,1'); + $default_webserver = $app->functions->intval($tmp['server_id']); + } + if (!$default_dbserver) { + $tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 AND mirror_server_id = 0 LIMIT 0,1'); + $default_dbserver = $app->functions->intval($tmp['server_id']); + } + $tmp = $app->getconf->get_global_config('dns'); + $default_dnsserver = $app->functions->intval($tmp['default_dnsserver']); + if (!$default_dnsserver) { + $tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE dns_server = 1 AND mirror_server_id = 0 LIMIT 0,1'); + $default_dnsserver = $app->functions->intval($tmp['server_id']); + } - $sql = "UPDATE client SET default_mailserver = $default_mailserver, default_webserver = $default_webserver, default_dnsserver = $default_dnsserver, default_slave_dnsserver = $default_dnsserver, default_dbserver = $default_dbserver WHERE client_id = ".$this->id; + $sql = "UPDATE client SET mail_servers = $default_mailserver, web_servers = $default_webserver, dns_servers = $default_dnsserver, default_slave_dnsserver = $default_dnsserver, db_servers = $default_dbserver WHERE client_id = ".$this->id; $app->db->query($sql); if(isset($this->dataRecord['template_master'])) { @@ -334,6 +353,48 @@ } } } + + //* Send welcome email + $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); + $sql = "SELECT * FROM client_message_template WHERE template_type = 'welcome' AND sys_groupid = ".$client_group_id; + $email_template = $app->db->queryOneRecord($sql); + $client = $app->tform->getDataRecord($this->id); + + if(is_array($email_template) && $client['email'] != '') { + //* Parse client details into message + $message = $email_template['message']; + $subject = $email_template['subject']; + foreach($client as $key => $val) { + switch ($key) { + case 'password': + $message = str_replace('{password}', $this->dataRecord['password'], $message); + $subject = str_replace('{password}', $this->dataRecord['password'], $subject); + break; + case 'gender': + $message = str_replace('{salutation}', $app->tform->lng('gender_'.$val.'_txt'), $message); + $subject = str_replace('{salutation}', $app->tform->lng('gender_'.$val.'_txt'), $subject); + break; + default: + $message = str_replace('{'.$key.'}', $val, $message); + $subject = str_replace('{'.$key.'}', $val, $subject); + } + } + + //* Get sender address + if($app->auth->is_admin()) { + $app->uses('getconf'); + $system_config = $app->getconf->get_global_config('mail'); + $from = $system_config['admin_mail']; + } else { + $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); + $reseller = $app->db->queryOneRecord("SELECT client.email FROM sys_group,client WHERE client.client_id = sys_group.client_id and sys_group.groupid = ".$client_group_id); + $from = $reseller["email"]; + } + + //* Send the email + $app->functions->mail($client['email'], $subject, $message, $from); + } + parent::onAfterInsert(); } @@ -389,6 +450,8 @@ $to_disable = array('cron' => 'id', 'ftp_user' => 'ftp_user_id', 'mail_domain' => 'domain_id', + 'mail_user' => 'mailuser_id', + 'mail_user_smtp' => 'mailuser_id', 'mail_forwarding' => 'forwarding_id', 'mail_get' => 'mailget_id', 'openvz_vm' => 'vm_id', @@ -410,17 +473,28 @@ $prev_active = array(); $prev_sysuser = array(); foreach($to_disable as $current => $keycolumn) { - $prev_active[$current] = array(); - $prev_sysuser[$current] = array(); + $active_col = 'active'; + $reverse = false; + if($current == 'mail_user') { + $active_col = 'postfix'; + } elseif($current == 'mail_user_smtp') { + $current = 'mail_user'; + $active_col = 'disablesmtp'; + $reverse = true; + } + + if(!isset($prev_active[$current])) $prev_active[$current] = array(); + if(!isset($prev_sysuser[$current])) $prev_sysuser[$current] = array(); - $entries = $app->db->queryAllRecords('SELECT `' . $keycolumn . '` as `id`, `sys_userid`, `active` FROM `' . $current . '` WHERE `sys_groupid` = ' . $sys_groupid); + $entries = $app->db->queryAllRecords('SELECT `' . $keycolumn . '` as `id`, `sys_userid`, `' . $active_col . '` FROM `' . $current . '` WHERE `sys_groupid` = ' . $sys_groupid); foreach($entries as $item) { - if($item['active'] != 'y') $prev_active[$current][$item['id']]['active'] = 'n'; - if($item['sys_userid'] != $sys_userid) $prev_sysuser[$current][$item['id']]['active'] = $item['sys_userid']; + if($item[$active_col] != 'y' && $reverse == false) $prev_active[$current][$item['id']][$active_col] = 'n'; + elseif($item[$active_col] == 'y' && $reverse == true) $prev_active[$current][$item['id']][$active_col] = 'y'; + if($item['sys_userid'] != $sys_userid) $prev_sysuser[$current][$item['id']] = $item['sys_userid']; // we don't have to store these if y, as everything without previous state gets enabled later - $app->db->datalogUpdate($current, array('active' => 'n', 'sys_userid' => $_SESSION["s"]["user"]["userid"]), $keycolumn, $item['id']); + $app->db->datalogUpdate($current, array($active_col => ($reverse == true ? 'y' : 'n'), 'sys_userid' => $_SESSION["s"]["user"]["userid"]), $keycolumn, $item['id']); } } @@ -431,20 +505,31 @@ unset($prev_sysuser); } elseif($this->dataRecord['locked'] == 'n') { foreach($to_disable as $current => $keycolumn) { + $active_col = 'active'; + $reverse = false; + if($current == 'mail_user') { + $active_col = 'postfix'; + } elseif($current == 'mail_user_smtp') { + $current = 'mail_user'; + $active_col = 'disablesmtp'; + $reverse = true; + } + $entries = $app->db->queryAllRecords('SELECT `' . $keycolumn . '` as `id` FROM `' . $current . '` WHERE `sys_groupid` = ' . $sys_groupid); foreach($entries as $item) { - $set_active = 'y'; + $set_active = ($reverse == true ? 'n' : 'y'); + $set_inactive = ($reverse == true ? 'y' : 'n'); $set_sysuser = $sys_userid; if(array_key_exists('prev_active', $tmp_data) == true && array_key_exists($current, $tmp_data['prev_active']) == true && array_key_exists($item['id'], $tmp_data['prev_active'][$current]) == true - && $tmp_data['prev_active'][$current][$item['id']] == 'n') $set_active = 'n'; + && $tmp_data['prev_active'][$current][$item['id']][$active_col] == $set_inactive) $set_active = $set_inactive; if(array_key_exists('prev_sysuser', $tmp_data) == true && array_key_exists($current, $tmp_data['prev_sysuser']) == true && array_key_exists($item['id'], $tmp_data['prev_sysuser'][$current]) == true && $tmp_data['prev_sysuser'][$current][$item['id']] != $sys_userid) $set_sysuser = $tmp_data['prev_sysuser'][$current][$item['id']]; - $app->db->datalogUpdate($current, array('active' => $set_active, 'sys_userid' => $set_sysuser), $keycolumn, $item['id']); + $app->db->datalogUpdate($current, array($active_col => $set_active, 'sys_userid' => $set_sysuser), $keycolumn, $item['id']); } } if(array_key_exists('prev_active', $tmp_data)) unset($tmp_data['prev_active']); -- Gitblit v1.9.1