From 2f74cf27ad6fbb852df78bcccca1fb645c8a57e0 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 02 Mar 2016 07:19:30 -0500 Subject: [PATCH] Merge branch 'stable-3.1' --- interface/web/tools/resync.php | 108 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 91 insertions(+), 17 deletions(-) diff --git a/interface/web/tools/resync.php b/interface/web/tools/resync.php old mode 100755 new mode 100644 index 8e3b32f..1b2405d --- a/interface/web/tools/resync.php +++ b/interface/web/tools/resync.php @@ -51,6 +51,14 @@ class page_action extends tform_actions { //* called during onShowEnd + /* + * @param array $server_rec + * @param string $server_type + * @param string or array $search + * + * @return array + */ + private function create_list($server_rec, $server_type, $search) { $server_count = 0; @@ -87,15 +95,23 @@ 'mail_domain' => array ( 'index_field' => 'domain_id', 'server_type' => 'mail', + 'server_id' => $server_id, ), + 'mail_get' => array ( + 'index_field' => 'mailget_id', + 'server_type' => 'mail', + 'server_id' => $server_id, + ), 'mail_mailinglist' => array ( 'index_field' => 'mailinglist_id', 'server_type' => 'mail', + 'server_id' => $server_id, ), 'mail_user' => array ( 'index_field' => 'mailuser_id', 'server_type' => 'mail', - ), + 'server_id' => $server_id, + ), ); } if($type == 'mail_filter') { @@ -103,6 +119,7 @@ 'mail_access' => array ( 'index_field' => 'access_id', 'server_type' => 'mail', + 'server_id' => $server_id, ), 'mail_content_filter' => array ( 'index_field' => 'content_filter_id', @@ -112,6 +129,20 @@ 'index_field' => 'filter_id', 'server_type' => 'mail', ), + 'spamfilter_policy' => array ( + 'index_field' => 'id', + 'server_type' => 'mail', + ), + 'spamfilter_users' => array ( + 'index_field' => 'id', + 'server_type' => 'mail', + 'server_id' => $server_id, + ), + 'spamfilter_wblist' => array ( + 'index_field' => 'wblist_id', + 'server_type' => 'mail', + 'server_id' => $server_id, + ), ); } if($type == 'web' ) { @@ -119,18 +150,22 @@ 'web_domain' => array ( 'index_field' => 'domain_id', 'server_type' => 'web', + 'server_id' => $server_id, ), 'shell_user' => array ( 'index_field' => 'shell_user_id', 'server_type' => 'web', + 'server_id' => $server_id, ), 'cron' => array ( 'index_field' => 'id', 'server_type' => 'cron', + 'server_id' => $server_id, ), 'ftp_user' => array ( 'index_field' => 'ftp_user_id', 'server_type' => 'web', + 'server_id' => $server_id, ), ); } @@ -139,6 +174,7 @@ 'dns_soa' => array ( 'index_field' => 'id', 'server_type' => 'dns', + 'server_id' => $server_id, ), ); } @@ -147,6 +183,7 @@ 'webdav_user' => array ( 'index_field' => 'webdav_user_id', 'server_type' => 'file', + 'server_id' => $server_id, ), ); } @@ -155,6 +192,7 @@ 'web_database' => array ( 'index_field' => 'web_database_id', 'server_type' => 'db', + 'server_id' => $server_id, ), ); } @@ -163,6 +201,7 @@ 'openvz_vm' => array ( 'index_field' => 'vm_id', 'server_type' => 'vserver', + 'server_id' => $server_id, ), ); } @@ -170,7 +209,8 @@ //* firewall $array_out = array(); foreach($server_data as $db_table => $data) { - $records = $app->db->queryAllRecords("SELECT * FROM $db_table WHERE server_id = ?", $server_id); + $sql = @(isset($data['server_id']))?"SELECT * FROM ?? WHERE server_id = ?":"SELECT * FROM ??"; + $records = $app->db->queryAllRecords($sql, $db_table, $server_id); if (!empty($records)) array_push($array_out, $db_table); } @@ -207,6 +247,17 @@ unset($options_servers); } + //* mail-get + $server_list = $this->create_list($mail_server_rec, 'mail', 'mail_get'); + $options_servers = $server_list[0];$server_count = $server_list[1]; + unset($server_list); + if (isset($options_servers)) { //* server with data found + if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_mail_txt']."</option>" . $options_servers; + $app->tpl->setVar('mailget_server_id', $options_servers); + $app->tpl->setVar('mail_get_found', 1); + unset($options_servers); + } + //* mailbox $server_list = $this->create_list($mail_server_rec, 'mail', 'mail_user'); $options_servers = $server_list[0];$server_count = $server_list[1]; @@ -219,7 +270,7 @@ } //* mailfilter - $server_list = $this->create_list($mail_server_rec, 'mail_filter', array('mail_access', 'mail_content_filter', 'mail_user_filter')); + $server_list = $this->create_list($mail_server_rec, 'mail_filter', array('mail_access', 'mail_content_filter', 'mail_user_filter','spamfilter_users', 'spamfilter_wblist')); $options_servers = $server_list[0];$server_count = $server_list[1]; unset($server_list); if (isset($options_servers)) { //* server with data found @@ -239,6 +290,7 @@ $app->tpl->setVar('mailinglist_found', 1); unset($options_servers); } + } //* fetch web-server @@ -355,30 +407,36 @@ } } + $csrf_token = $app->auth->csrf_token_get('tools_resync'); + $app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']); + $app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']); + parent::onShowEnd(); } //* fetch values during do_resync - private function query_server($db_table, $server_id, $server_type, $active=true) { + private function query_server($db_table, $server_id, $server_type, $active=true, $opt='') { global $app; $server_name = array(); if ( $server_id == 0 ) { //* resync multiple server - $temp = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE ".$server_type."_server = 1 AND active = 1 AND mirror_server_id = 0"); + $temp = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE ?? = 1 AND active = 1 AND mirror_server_id = 0", $server_type."_server"); foreach ($temp as $server) { $temp_id .= $server['server_id'].','; $server_name[$server['server_id']] = $server['server_name']; } + if ( isset($temp_id) ) $server_id = rtrim($temp_id,','); } else { $temp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $server_id); $server_name[$server_id] = $temp['server_name']; } unset($temp); - if ( isset($temp_id) ) $server_id = rtrim($temp_id,','); - $sql = "SELECT * FROM $db_table WHERE server_id IN (".$server_id.")"; + $sql = "SELECT * FROM ??"; + if ($db_table != "mail_user_filter" && $db_table != "spamfilter_policy") $sql .= " WHERE server_id IN (".$server_id.") "; + $sql .= $opt; if ($active) $sql .= " AND active = 'y'"; - $records = $app->db->queryAllRecords($sql); + $records = $app->db->queryAllRecords($sql, $db_table); return array($records, $server_name); } @@ -394,7 +452,7 @@ if(!empty($records)) foreach($records as $rec) { $app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true); - $msg .= '['.$server_name[$rec['server_id']].'] '.$rec[$msg_field].'<br>'; + if(!empty($rec[$msg_field])) $msg .= '['.$server_name[$rec['server_id']].'] '.$rec[$msg_field].'<br>'; } else $msg .= $app->tform->wordbook['no_results_txt'].'<br>'; @@ -403,7 +461,12 @@ function onSubmit() { global $app; - + + if(isset($_POST) && count($_POST) > 1) { + //* CSRF Check + $app->auth->csrf_token_check(); + } + //* all services if($this->dataRecord['resync_all'] == 1) { $this->dataRecord['resync_sites'] = 1; @@ -413,6 +476,7 @@ $this->dataRecord['resync_cron'] = 1; $this->dataRecord['resync_db'] = 1; $this->dataRecord['resync_mail'] = 1; + $this->dataRecord['resync_mailget'] = 1; $this->dataRecord['resync_mailbox'] = 1; $this->dataRecord['resync_mailfilter'] = 1; $this->dataRecord['resync_mailinglist'] = 1; @@ -453,13 +517,20 @@ //* database if(isset($this->dataRecord['resync_db']) && $this->dataRecord['resync_db'] == 1) { - $msg .= $this->do_resync('web_database_user', 'database_user_id', 'db', $this->dataRecord['db_server_id'], 'database_user', $app->tform->wordbook['do_db_user_txt']); + $msg .= $this->do_resync('web_database_user', 'database_user_id', 'db', $this->dataRecord['db_server_id'], 'database_user', $app->tform->wordbook['do_db_user_txt'], false); $msg .= $this->do_resync('web_database', 'database_id', 'db', $this->dataRecord['db_server_id'], 'database_name', $app->tform->wordbook['do_db_txt']); } //* maildomains - if($this->dataRecord['resync_mail'] == 1) + if($this->dataRecord['resync_mail'] == 1) { $msg .= $this->do_resync('mail_domain', 'domain_id', 'mail', $this->dataRecord['mail_server_id'], 'domain', $app->tform->wordbook['do_mail_txt']); + $msg .= $this->do_resync('spamfilter_policy', 'id', 'mail', $this->dataRecord['mail_server_id'], '', $app->tform->wordbook['do_mail_spamfilter_policy_txt'], false); + } + + //* mailget + if($this->dataRecord['resync_mailget'] == 1) { + $msg .= $this->do_resync('mail_get', 'mailget_id', 'mail', $this->dataRecord['mail_server_id'], 'source_username', $app->tform->wordbook['do_mailget_txt']); + } //* mailbox if($this->dataRecord['resync_mailbox'] == 1) { @@ -472,6 +543,9 @@ $msg .= $this->do_resync('mail_access', 'access_id', 'mail', $this->dataRecord['mailbox_server_id'], '', $app->tform->wordbook['do_mail_access_txt']); $msg .= $this->do_resync('mail_content_filter', 'content_filter_id', 'mail', $this->dataRecord['mailbox_server_id'], '', $app->tform->wordbook['do_mail_contentfilter_txt']); $msg .= $this->do_resync('mail_user_filter', 'filter_id', 'mail', $this->dataRecord['mailbox_server_id'], '', $app->tform->wordbook['do_mail_userfilter_txt'], false); + //* spam + $msg .= $this->do_resync('spamfilter_users', 'id', 'mail', $this->dataRecord['mailbox_server_id'], '', $app->tform->wordbook['do_mail_spamfilter_txt'], false); + $msg .= $this->do_resync('spamfilter_wblist', 'wblist_id', 'mail', $this->dataRecord['mailbox_server_id'], '', $app->tform->wordbook['do_mail_spamfilter_txt']) ; } //* mailinglists @@ -491,19 +565,19 @@ $msg .= '<b>'.$app->tform->wordbook['do_dns_txt'].'</b><br>'; if(is_array($soa_records) && !empty($soa_records)) foreach($soa_records as $soa_rec) { - $temp = $this->query_server('dns_rr', $soa_rec['server_id'], $server_type); + $temp = $this->query_server('dns_rr', $soa_rec['server_id'], 'dns', true, "AND zone = ".$app->functions->intval($soa_rec['id'])); $rr_records = $temp[0]; if(!empty($rr_records)) { foreach($rr_records as $rec) { $new_serial = $app->validate_dns->increase_serial($rec['serial']); - $app->db->datalogUpdate('dns_rr', "serial = '".$new_serial."'", 'id', $rec['id']); + $app->db->datalogUpdate('dns_rr', array("serial" => $new_serial), 'id', $rec['id']); } } else { $msg .= $app->tform->wordbook['no_results_txt'].'<br>'; } $new_serial = $app->validate_dns->increase_serial($soa_rec['serial']); - $app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $soa_rec['id']); - $msg .= '['.$server_name[$soa_rec['server_id']].'] '.$soa_rec['origin'].'<br>'; + $app->db->datalogUpdate('dns_soa', array("serial" => $new_serial), 'id', $soa_rec['id']); + $msg .= '['.$server_name[$soa_rec['server_id']].'] '.$soa_rec['origin'].' ('.count($rr_records).')<br>'; } else $msg .= $app->tform->wordbook['no_results_txt'].'<br>'; @@ -514,7 +588,7 @@ if($this->dataRecord['resync_client'] == 1) { $db_table = 'client'; $index_field = 'client_id'; - $records = $app->db->queryAllRecords("SELECT * FROM ".$db_table); + $records = $app->db->queryAllRecords("SELECT * FROM ??", $db_table); $msg .= '<b>'.$app->tform->wordbook['do_clients_txt'].'</b><br>'; if(!empty($records)) { $tform_def_file = '../client/form/client.tform.php'; -- Gitblit v1.9.1