1<?php 2/////////////////////////////////////////////////////////////////////////////// 3// 4// NagiosQL 5// 6/////////////////////////////////////////////////////////////////////////////// 7// 8// (c) 2005-2020 by Martin Willisegger 9// 10// Project : NagiosQL 11// Component : Admin file deletion 12// Website : https://sourceforge.net/projects/nagiosql/ 13// Version : 3.4.1 14// GIT Repo : https://gitlab.com/wizonet/NagiosQL 15// 16/////////////////////////////////////////////////////////////////////////////// 17// 18// Path settings 19// =================== 20$strPattern = '(admin/[^/]*.php)'; 21$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_STRING)); 22$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME', FILTER_SANITIZE_STRING)); 23// 24// Define common variables 25// ======================= 26$prePageId = 26; 27$preContent = 'admin/delbackup.htm.tpl'; 28$preAccess = 1; 29$preFieldvars = 1; 30// 31// Include preprocessing files 32// =========================== 33require $preBasePath.'functions/prepend_adm.php'; 34require $preBasePath.'functions/prepend_content.php'; 35// 36// Get configuration set ID 37// ======================== 38$myConfigClass->getConfigTargets($arrConfigSet); 39$intConfigId = $arrConfigSet[0]; 40$myConfigClass->getConfigValues($intConfigId, 'method', $intMethod); 41$myConfigClass->getConfigValues($intConfigId, 'backupdir', $strBackupDir); 42$myConfigClass->getConfigValues($intConfigId, 'hostbackup', $strHostBackupDir); 43$myConfigClass->getConfigValues($intConfigId, 'servicebackup', $strServiceBackupDir); 44// 45// Process form inputs 46// =================== 47if (($chkMselValue1[0] != '') && ($chkStatus == 1)) { 48 /** @var array $chkMselValue1 */ 49 foreach ($chkMselValue1 as $elem) { 50 $intCheck = $myConfigClass->removeFile(trim($elem), $intConfigId); 51 $strFileTmp1 = str_replace($strServiceBackupDir, '', $elem); 52 $strFileTmp2 = str_replace($strHostBackupDir, '', $strFileTmp1); 53 $strFile = str_replace($strBackupDir, '', $strFileTmp2); 54 if ($intCheck == 0) { 55 $myDataClass->writeLog(translate('File deleted'). ': ' .trim($strFile)); 56 $myVisClass->processMessage($strFile. ' ' .translate('successfully deleted'). '!', $strInfoMessage); 57 } else { 58 $myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage); 59 } 60 } 61} 62// 63// Include content 64// =============== 65$conttp->setVariable('TITLE', translate('Delete backup files')); 66$conttp->parse('header'); 67$conttp->show('header'); 68$conttp->setVariable('LANG_SEARCH_STRING', translate('Filter string')); 69$conttp->setVariable('LANG_SEARCH', translate('Search')); 70$conttp->setVariable('LANG_DELETE', translate('Delete')); 71$conttp->setVariable('LANG_DELETE_SEARCH', translate('Reset filter')); 72$conttp->setVariable('DAT_SEARCH', $chkTfSearch); 73$conttp->setVariable('BACKUPFILE', translate('Backup file')); 74$conttp->setVariable('LANG_REQUIRED', translate('required')); 75$conttp->setVariable('MAKE', translate('Delete')); 76$conttp->setVariable('ABORT', translate('Abort')); 77$conttp->setVariable('CTRL_INFO', translate('Hold CTRL to select<br>more than one entry')); 78$conttp->setVariable('IMAGE_PATH', $_SESSION['SETS']['path']['base_url']. 'images/'); 79$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_STRING)); 80// Build a local file list 81if ($intMethod == 1) { 82 $output = array(); 83 $myConfigClass->storeDirToArray($strBackupDir, "\.cfg_old", '', $output, $strErrorMessage); 84 if (is_array($output) && (count($output) != 0)) { 85 foreach ($output as $elem) { 86 if (($chkTfSearch == '') || (substr_count($elem, $chkTfSearch) != 0)) { 87 $conttp->setVariable('DAT_BACKUPFILE', $elem); 88 $conttp->parse('filelist'); 89 } 90 } 91 } 92} elseif ($intMethod == 2) { 93 // Set up basic connection 94 if ($myConfigClass->getFTPConnection($intConfigId) == '0') { 95 $arrFiles = array(); 96 $arrFiles1 = ftp_nlist($myConfigClass->resConnectId, $strBackupDir); 97 if (is_array($arrFiles1)) { 98 $arrFiles = array_merge($arrFiles, $arrFiles1); 99 } 100 $arrFiles2 = ftp_nlist($myConfigClass->resConnectId, $strHostBackupDir); 101 if (is_array($arrFiles2)) { 102 $arrFiles = array_merge($arrFiles, $arrFiles2); 103 } 104 $arrFiles3 = ftp_nlist($myConfigClass->resConnectId, $strServiceBackupDir); 105 if (is_array($arrFiles3)) { 106 $arrFiles = array_merge($arrFiles, $arrFiles3); 107 } 108 if (is_array($arrFiles) && (count($arrFiles) != 0)) { 109 foreach ($arrFiles as $elem) { 110 if (!substr_count($elem, 'cfg')) { 111 continue; 112 } 113 if (($chkTfSearch == '') || (substr_count($elem, $chkTfSearch) != 0)) { 114 $conttp->setVariable('DAT_BACKUPFILE', $elem); 115 $conttp->parse('filelist'); 116 } 117 } 118 } else { 119 $myVisClass->processMessage( 120 translate('No backup files or no permission to read the backup files'), 121 $strErrorMessage 122 ); 123 } 124 ftp_close($myConfigClass->resConnectId); 125 } else { 126 $myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage); 127 } 128} elseif ($intMethod == 3) { 129 // Set up basic connection 130 if ($myConfigClass->getSSHConnection($intConfigId) == '0') { 131 $arrFiles = array(); 132 $intReturn = $myConfigClass->sendSSHCommand('ls ' .$strBackupDir. '*.cfg_old*', $arrFiles1); 133 if (($intReturn == 0) && is_array($arrFiles1)) { 134 $arrFiles = array_merge($arrFiles, $arrFiles1); 135 } 136 $intReturn = $myConfigClass->sendSSHCommand('ls ' .$strHostBackupDir. '*.cfg_old*', $arrFiles2); 137 if (($intReturn == 0) && is_array($arrFiles2)) { 138 $arrFiles = array_merge($arrFiles, $arrFiles2); 139 } 140 $intReturn = $myConfigClass->sendSSHCommand('ls ' .$strServiceBackupDir. '*.cfg_old*', $arrFiles3); 141 if (($intReturn == 0) && is_array($arrFiles3)) { 142 $arrFiles = array_merge($arrFiles, $arrFiles3); 143 } 144 if (is_array($arrFiles) && (count($arrFiles) != 0)) { 145 foreach ($arrFiles as $elem) { 146 if (!substr_count($elem, 'cfg_old')) { 147 continue; 148 } 149 if (($chkTfSearch == '') || (substr_count($elem, $chkTfSearch) != 0)) { 150 $conttp->setVariable('DAT_BACKUPFILE', str_replace('//', '/', $elem)); 151 $conttp->parse('filelist'); 152 } 153 } 154 } else { 155 $myVisClass->processMessage( 156 translate('No backup files or no permission to read the backup files'), 157 $strErrorMessage 158 ); 159 } 160 } else { 161 $myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage); 162 } 163} 164if ($strErrorMessage != '') { 165 $conttp->setVariable('ERRORMESSAGE', $strErrorMessage); 166} 167$conttp->setVariable('INFOMESSAGE', $strInfoMessage); 168// Check access rights for adding new objects 169if ($myVisClass->checkAccountGroup($prePageKey, 'write') != 0) { 170 $conttp->setVariable('ADD_CONTROL', 'disabled="disabled"'); 171} 172$conttp->parse('main'); 173$conttp->show('main'); 174// 175// Footer ausgeben 176// =============== 177$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' " 178 . "target='_blank'>NagiosQL</a> $setFileVersion"); 179$maintp->parse('footer'); 180$maintp->show('footer'); 181