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