From 37b29231e47a0c4458dc1c15d98588f16f07e1e2 Mon Sep 17 00:00:00 2001 From: Marius Cramer <m.cramer@pixcept.de> Date: Thu, 06 Aug 2015 03:18:44 -0400 Subject: [PATCH] - don't set password via remoting if field is empty --- interface/lib/classes/plugin_backuplist.inc.php | 210 ++++++++++++++++++++++++++++----------------------- 1 files changed, 115 insertions(+), 95 deletions(-) diff --git a/interface/lib/classes/plugin_backuplist.inc.php b/interface/lib/classes/plugin_backuplist.inc.php index ac0396b..471560a 100644 --- a/interface/lib/classes/plugin_backuplist.inc.php +++ b/interface/lib/classes/plugin_backuplist.inc.php @@ -30,109 +30,129 @@ class plugin_backuplist extends plugin_base { - var $module; - var $form; - var $tab; - var $record_id; - var $formdef; - var $options; + var $module; + var $form; + var $tab; + var $record_id; + var $formdef; + var $options; - function onShow() { + function onShow() { - global $app; - - $listTpl = new tpl; - $listTpl->newTemplate('templates/web_backup_list.htm'); - - //* Loading language file - $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_web_backup_list.lng"; - include($lng_file); - $listTpl->setVar($wb); - - $message = ''; - $error = ''; - - if(isset($_GET['backup_action'])) { - $backup_id = intval($_GET['backup_id']); - - if($_GET['backup_action'] == 'download' && $backup_id > 0) { - $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_download' AND action_param = '$backup_id'"; - $tmp = $app->db->queryOneRecord($sql); - if($tmp['number'] == 0) { - $message .= $wb['download_info_txt']; - $sql = "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " . - "VALUES (". - (int)$this->form->dataRecord['server_id'] . ", " . - time() . ", " . - "'backup_download', " . - "'".$backup_id."', " . - "'pending', " . - "''" . - ")"; - $app->db->query($sql); - } else { - $error .= $wb['download_pending_txt']; - } - } - if($_GET['backup_action'] == 'restore' && $backup_id > 0) { - $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_restore' AND action_param = '$backup_id'"; - $tmp = $app->db->queryOneRecord($sql); - if($tmp['number'] == 0) { - $message .= $wb['restore_info_txt']; - $sql = "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " . - "VALUES (". - (int)$this->form->dataRecord['server_id'] . ", " . - time() . ", " . - "'backup_restore', " . - "'".$backup_id."', " . - "'pending', " . - "''" . - ")"; - $app->db->query($sql); - } else { - $error .= $wb['restore_pending_txt']; - } - } - + global $app; + + $listTpl = new tpl; + $listTpl->newTemplate('templates/web_backup_list.htm'); + + //* Loading language file + $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_web_backup_list.lng"; + include $lng_file; + $listTpl->setVar($wb); + + $message = ''; + $error = ''; + + if(isset($_GET['backup_action'])) { + $backup_id = $app->functions->intval($_GET['backup_id']); + + //* check if the user is owner of the parent domain + $domain_backup = $app->db->queryOneRecord("SELECT parent_domain_id FROM web_backup WHERE backup_id = ?", $backup_id); + + $check_perm = 'u'; + if($_GET['backup_action'] == 'download') $check_perm = 'r'; // only check read permissions on download, not update permissions + + $get_domain = $app->db->queryOneRecord("SELECT domain_id FROM web_domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL($check_perm), $domain_backup["parent_domain_id"]); + if(empty($get_domain) || !$get_domain) { + $app->error($app->tform->lng('no_domain_perm')); + } + + if($_GET['backup_action'] == 'download' && $backup_id > 0) { + $server_id = $this->form->dataRecord['server_id']; + $backup = $app->db->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = ?", $backup_id); + if($backup['server_id'] > 0) $server_id = $backup['server_id']; + $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_download' AND action_param = ?"; + $tmp = $app->db->queryOneRecord($sql, $backup_id); + if($tmp['number'] == 0) { + $message .= $wb['download_info_txt']; + $sql = "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " . + "VALUES (?, UNIX_TIMESTAMP(), 'backup_download', ?, 'pending', '')"; + $app->db->query($sql, $server_id, $backup_id); + } else { + $error .= $wb['download_pending_txt']; } - - //* Get the data - $sql = "SELECT * FROM web_backup WHERE parent_domain_id = ".$this->form->id." ORDER BY tstamp DESC, backup_type ASC"; - $records = $app->db->queryAllRecords($sql); + } + if($_GET['backup_action'] == 'restore' && $backup_id > 0) { + $server_id = $this->form->dataRecord['server_id']; + $backup = $app->db->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = ?", $backup_id); + if($backup['server_id'] > 0) $server_id = $backup['server_id']; + $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_restore' AND action_param = '$backup_id'"; + $tmp = $app->db->queryOneRecord($sql); + if($tmp['number'] == 0) { + $message .= $wb['restore_info_txt']; + $sql = "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " . + "VALUES (?, UNIX_TIMESTAMP(), 'backup_restore', ?, 'pending', '')"; + $app->db->query($sql, $server_id, $backup_id); + } else { + $error .= $wb['restore_pending_txt']; + } + } - $bgcolor = "#FFFFFF"; - if(is_array($records)) { - foreach($records as $rec) { + } - // Change of color - $bgcolor = ($bgcolor == "#FFFFFF")?"#EEEEEE":"#FFFFFF"; - $rec["bgcolor"] = $bgcolor; - - $rec['date'] = date($app->lng('conf_format_datetime'),$rec['tstamp']); - $rec['backup_type'] = $wb[('backup_type_'.$rec['backup_type'])]; + //* Get the data + $server_ids = array(); + $web = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain_id = ?", $this->form->id); + $databases = $app->db->queryAllRecords("SELECT server_id FROM web_database WHERE parent_domain_id = ?", $this->form->id); + if($app->functions->intval($web['server_id']) > 0) $server_ids[] = $app->functions->intval($web['server_id']); + if(is_array($databases) && !empty($databases)){ + foreach($databases as $database){ + if($app->functions->intval($database['server_id']) > 0) $server_ids[] = $app->functions->intval($database['server_id']); + } + } + $server_ids = array_unique($server_ids); + $sql = "SELECT * FROM web_backup WHERE parent_domain_id = ? AND server_id IN ? ORDER BY tstamp DESC, backup_type ASC"; + $records = $app->db->queryAllRecords($sql, $this->form->id, $server_ids); - $records_new[] = $rec; - } - } + $bgcolor = "#FFFFFF"; + if(is_array($records)) { + foreach($records as $rec) { - $listTpl->setLoop('records',@$records_new); + // Change of color + $bgcolor = ($bgcolor == "#FFFFFF")?"#EEEEEE":"#FFFFFF"; + $rec["bgcolor"] = $bgcolor; + + $rec['date'] = date($app->lng('conf_format_datetime'), $rec['tstamp']); + $rec['backup_type'] = $wb[('backup_type_'.$rec['backup_type'])]; - $listTpl->setVar('parent_id',$this->form->id); - $listTpl->setVar('msg',$message); - $listTpl->setVar('error',$error); + $rec['download_available'] = true; + if($rec['server_id'] != $web['server_id']) $rec['download_available'] = false; - // Setting Returnto information in the session - $list_name = 'backup_list'; - // $_SESSION["s"]["list"][$list_name]["parent_id"] = $app->tform_actions->id; - $_SESSION["s"]["list"][$list_name]["parent_id"] = $this->form->id; - $_SESSION["s"]["list"][$list_name]["parent_name"] = $app->tform->formDef["name"]; - $_SESSION["s"]["list"][$list_name]["parent_tab"] = $_SESSION["s"]["form"]["tab"]; - $_SESSION["s"]["list"][$list_name]["parent_script"] = $app->tform->formDef["action"]; - $_SESSION["s"]["form"]["return_to"] = $list_name; - - return $listTpl->grab(); - } - + if($rec['filesize'] > 0){ + $rec['filesize'] = $app->functions->currency_format($rec['filesize']/(1024*1024), 'client').' MB'; + } + + $records_new[] = $rec; + } + } + + $listTpl->setLoop('records', @$records_new); + + $listTpl->setVar('parent_id', $this->form->id); + $listTpl->setVar('msg', $message); + $listTpl->setVar('error', $error); + + // Setting Returnto information in the session + $list_name = 'backup_list'; + // $_SESSION["s"]["list"][$list_name]["parent_id"] = $app->tform_actions->id; + $_SESSION["s"]["list"][$list_name]["parent_id"] = $this->form->id; + $_SESSION["s"]["list"][$list_name]["parent_name"] = $app->tform->formDef["name"]; + $_SESSION["s"]["list"][$list_name]["parent_tab"] = $_SESSION["s"]["form"]["tab"]; + $_SESSION["s"]["list"][$list_name]["parent_script"] = $app->tform->formDef["action"]; + $_SESSION["s"]["form"]["return_to"] = $list_name; + + return $listTpl->grab(); + } + } -?> \ No newline at end of file +?> -- Gitblit v1.9.1