2017-05-22 11:24:21 +02:00
|
|
|
<?php
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// NagiosQL
|
2019-04-17 11:40:50 +02:00
|
|
|
//
|
2017-05-22 11:24:21 +02:00
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
2019-04-17 11:40:50 +02:00
|
|
|
// (c) 2005-2018 by Martin Willisegger
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
|
|
|
// Project : NagiosQL
|
|
|
|
// Component : Preprocessing script for content pages
|
2019-04-17 11:40:50 +02:00
|
|
|
// Website : https://sourceforge.net/projects/nagiosql/
|
|
|
|
// Version : 3.4.0
|
|
|
|
// GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Define common variables
|
|
|
|
// =======================
|
2019-04-17 11:40:50 +02:00
|
|
|
$intLineCount = 0; // Database line count
|
|
|
|
$intWriteAccessId = 0; // Write access to data id ($chkDataId)
|
|
|
|
$intReadAccessId = 0; // Read access to data id ($chkListId)
|
|
|
|
$intDataWarning = 0; // Missing data indicator
|
|
|
|
$intNoTime = 0; // Show modified time list (0=show)
|
|
|
|
$strSearchWhere = ''; // SQL WHERE addon for searching
|
|
|
|
$strSearchWhere2 = ''; // SQL WHERE addon for configuration selection list
|
|
|
|
$chkTfValue3 = '';
|
|
|
|
$chkTfValue5 = '';
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
|
|
|
// Define missing variables used in this prepend file
|
|
|
|
// ==================================================
|
2019-04-17 11:40:50 +02:00
|
|
|
if (!isset($preTableName)) {
|
|
|
|
$preTableName = '';
|
|
|
|
} // Predefined variable table name
|
|
|
|
if (!isset($preSearchSession)) {
|
|
|
|
$preSearchSession = '';
|
|
|
|
} // Predefined variable search session
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
|
|
|
// Store some variables to content class
|
|
|
|
// =====================================
|
2019-04-17 11:40:50 +02:00
|
|
|
$myContentClass->intLimit = $chkLimit;
|
|
|
|
/** @var int $intVersion - defined in prepend_adm.php */
|
|
|
|
$myContentClass->intVersion = $intVersion;
|
|
|
|
$myContentClass->strBrowser = $preBrowser;
|
|
|
|
$myContentClass->intGroupAdm = $chkGroupAdm;
|
|
|
|
$myContentClass->strTableName = $preTableName;
|
|
|
|
$myContentClass->strSearchSession = $preSearchSession;
|
|
|
|
$myContentClass->intSortBy = $hidSortBy;
|
|
|
|
$myContentClass->strSortDir = $hidSortDir;
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
|
|
|
// Process get parameters
|
|
|
|
// ======================
|
2019-04-17 11:40:50 +02:00
|
|
|
$chkFromLine = filter_input(INPUT_GET, 'from_line', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
|
|
|
// Process post parameters
|
|
|
|
// =======================
|
2019-04-17 11:40:50 +02:00
|
|
|
$chkTfSearchRaw = filter_input(INPUT_POST, 'txtSearch', FILTER_SANITIZE_STRING);
|
|
|
|
$chkSelAccGr = filter_input(INPUT_POST, 'selAccGr', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
|
|
|
$chkSelCnfName = filter_input(INPUT_POST, 'selCnfName', FILTER_SANITIZE_STRING);
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
2019-04-17 11:40:50 +02:00
|
|
|
// Common text field value
|
|
|
|
for ($i = 1; $i <= 22; $i++) {
|
|
|
|
$tmpVar = 'chkTfValue'.$i;
|
|
|
|
$$tmpVar = filter_input(INPUT_POST, 'tfValue'.$i, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
|
|
|
|
if (get_magic_quotes_gpc() == 0) {
|
|
|
|
$$tmpVar = addslashes($$tmpVar);
|
|
|
|
}
|
|
|
|
if (isset($$tmpVar)) {
|
|
|
|
$$tmpVar = $myVisClass->tfSecure($$tmpVar);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Common argument text field value
|
|
|
|
for ($i = 1; $i <= 8; $i++) {
|
|
|
|
$tmpVar = 'chkTfArg'.$i;
|
|
|
|
$$tmpVar = filter_input(INPUT_POST, 'tfArg'.$i, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
|
|
|
|
if (get_magic_quotes_gpc() == 0) {
|
|
|
|
$$tmpVar = addslashes($$tmpVar);
|
|
|
|
}
|
|
|
|
if (isset($$tmpVar)) {
|
|
|
|
$$tmpVar = $myVisClass->tfSecure($$tmpVar);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Common multi select field value
|
|
|
|
for ($i = 1; $i <= 8; $i++) {
|
|
|
|
$tmpVar = 'chkMselValue'.$i;
|
|
|
|
$tmpVar2 = 'intMselValue'.$i;
|
|
|
|
$$tmpVar = filter_input(INPUT_POST, 'mselValue'.$i, FILTER_SANITIZE_STRING, FILTER_FORCE_ARRAY);
|
|
|
|
// Multiselect data processing
|
|
|
|
if ((${$tmpVar}[0] == '') || (${$tmpVar}[0] == '0')) {
|
|
|
|
$$tmpVar2 = 0;
|
|
|
|
} elseif (${$tmpVar}[0] == '*') {
|
|
|
|
$$tmpVar2 = 2;
|
|
|
|
} else {
|
|
|
|
$$tmpVar2 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Common select field value
|
|
|
|
for ($i = 1; $i <= 5; $i++) {
|
|
|
|
$tmpVar = 'chkSelValue'.$i;
|
|
|
|
$$tmpVar = filter_input(INPUT_POST, 'selValue'.$i, FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
|
|
|
}
|
|
|
|
//Common radio field value
|
|
|
|
for ($i = 1; $i <= 18; $i++) {
|
|
|
|
$tmpVar = 'chkRadValue'.$i;
|
|
|
|
$$tmpVar = filter_input(INPUT_POST, 'radValue'.$i, FILTER_VALIDATE_INT, array('options' => array('default' => 2)));
|
|
|
|
}
|
|
|
|
// Common checkbox group
|
|
|
|
$arrChar = explode(';', 'a;b;c;d;e;f;g;h');
|
|
|
|
for ($i = 1; $i <= 4; $i++) {
|
|
|
|
foreach ($arrChar as $elem) {
|
|
|
|
$tmpVar = 'chkChbGr'.$i.$elem;
|
|
|
|
$$tmpVar = filter_input(INPUT_POST, 'chbGr'.$i.$elem, FILTER_SANITIZE_STRING);
|
|
|
|
if ($$tmpVar != '') {
|
|
|
|
$$tmpVar .= ',';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Common button value
|
|
|
|
for ($i = 1; $i <= 5; $i++) {
|
|
|
|
$tmpVar = 'chkButValue'.$i;
|
|
|
|
$$tmpVar = filter_input(INPUT_POST, 'butValue'.$i, FILTER_SANITIZE_STRING);
|
|
|
|
}
|
|
|
|
// Common text NULL field value
|
|
|
|
for ($i = 1; $i <= 9; $i++) {
|
|
|
|
$tmpVar = 'chkTfNullVal'.$i;
|
|
|
|
$$tmpVar = filter_input(INPUT_POST, 'tfNullVal'.$i, FILTER_SANITIZE_STRING);
|
|
|
|
if (isset($$tmpVar) && ($$tmpVar != '')) {
|
|
|
|
$myVisClass->checkNull($$tmpVar);
|
|
|
|
} else {
|
|
|
|
$$tmpVar = 'NULL';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Common checkbox field value
|
|
|
|
$chkChbValue1 = filter_input(INPUT_POST, 'chbValue1', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
|
|
|
$chkChbValue2 = filter_input(INPUT_POST, 'chbValue2', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
|
|
|
// Common file selection field
|
|
|
|
$chkDatValue1 = filter_input(INPUT_POST, 'datValue1', FILTER_SANITIZE_STRING);
|
|
|
|
// Common text area value
|
|
|
|
$chkTaValue1Raw = filter_input(INPUT_POST, 'taValue1', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
|
|
|
|
// Common text area value for file import (not SQL)
|
|
|
|
$chkTaFileTextRaw = filter_input(INPUT_POST, 'taFileText', FILTER_UNSAFE_RAW);
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
|
|
|
// Quote special characters
|
|
|
|
// ==========================
|
|
|
|
if (get_magic_quotes_gpc() == 0) {
|
2019-04-17 11:40:50 +02:00
|
|
|
$chkTfSearchRaw = addslashes($chkTfSearchRaw);
|
|
|
|
$chkTaValue1Raw = addslashes($chkTaValue1Raw);
|
|
|
|
$chkTaFileTextRaw = addslashes($chkTaFileTextRaw);
|
2017-05-22 11:24:21 +02:00
|
|
|
}
|
|
|
|
//
|
|
|
|
// Security function for text fields
|
|
|
|
// =================================
|
2019-04-17 11:40:50 +02:00
|
|
|
$chkTfSearch = $myVisClass->tfSecure($chkTfSearchRaw);
|
|
|
|
$chkTaValue1 = $myVisClass->tfSecure($chkTaValue1Raw);
|
|
|
|
$chkTaFileText = stripslashes($chkTaFileTextRaw);
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
|
|
|
// Search/sort/filter - session data
|
|
|
|
// =================================
|
2019-04-17 11:40:50 +02:00
|
|
|
if (!isset($_SESSION['search']) || !isset($_SESSION['search'][$preSearchSession])) {
|
|
|
|
$_SESSION['search'][$preSearchSession] = '';
|
|
|
|
}
|
|
|
|
if (!isset($_SESSION['search']) || !isset($_SESSION['search']['config_selection'])) {
|
|
|
|
$_SESSION['search']['config_selection'] = '';
|
|
|
|
}
|
|
|
|
if (($chkModus == 'checkform') || ($chkModus == 'filter')) {
|
|
|
|
$_SESSION['search'][$preSearchSession] = $chkTfSearch;
|
|
|
|
$_SESSION['search']['config_selection'] = $chkSelCnfName;
|
|
|
|
$myContentClass->arrSession = $_SESSION;
|
2017-05-22 11:24:21 +02:00
|
|
|
}
|
|
|
|
//
|
|
|
|
// Process additional templates/variables
|
|
|
|
// ======================================
|
2019-04-17 11:40:50 +02:00
|
|
|
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition']) &&
|
|
|
|
(count($_SESSION['templatedefinition']) != 0)) {
|
|
|
|
$intTemplates = 1;
|
2017-05-22 11:24:21 +02:00
|
|
|
} else {
|
2019-04-17 11:40:50 +02:00
|
|
|
$intTemplates = 0;
|
2017-05-22 11:24:21 +02:00
|
|
|
}
|
2019-04-17 11:40:50 +02:00
|
|
|
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition']) &&
|
|
|
|
(count($_SESSION['variabledefinition']) != 0)) {
|
|
|
|
$intVariables = 1;
|
2017-05-22 11:24:21 +02:00
|
|
|
} else {
|
2019-04-17 11:40:50 +02:00
|
|
|
$intVariables = 0;
|
2017-05-22 11:24:21 +02:00
|
|
|
}
|
|
|
|
//
|
|
|
|
// Common SQL parts
|
|
|
|
// ================
|
2019-04-17 11:40:50 +02:00
|
|
|
if ($hidActive == 1) {
|
|
|
|
$chkActive = 1;
|
|
|
|
}
|
|
|
|
if ($chkGroupAdm == 1) {
|
|
|
|
$strGroupSQL = "`access_group`=$chkSelAccGr, ";
|
|
|
|
} else {
|
|
|
|
$strGroupSQL = '';
|
|
|
|
}
|
|
|
|
$preSQLCommon1 = "$strGroupSQL `active`='$chkActive', `register`='$chkRegister', `config_id`=$chkDomainId, "
|
|
|
|
. '`last_modified`=NOW()';
|
2017-05-22 11:24:21 +02:00
|
|
|
$preSQLCommon2 = "$strGroupSQL `active`='$chkActive', `register`='0', `config_id`=$chkDomainId, `last_modified`=NOW()";
|
2019-04-17 11:40:50 +02:00
|
|
|
$intRet1 = 0;
|
|
|
|
$intRet2 = 0;
|
|
|
|
$intRet3 = 0;
|
|
|
|
$intRet4 = 0;
|
|
|
|
$intRet5 = 0;
|
|
|
|
$intRet6 = 0;
|
|
|
|
$intRet7 = 0;
|
|
|
|
$intRet8 = 0;
|
2017-05-22 11:24:21 +02:00
|
|
|
//
|
|
|
|
// Check read and write access
|
|
|
|
// ===========================
|
|
|
|
if (isset($prePageKey)) {
|
2019-04-17 11:40:50 +02:00
|
|
|
// Global read access (0 = access granted)
|
|
|
|
$intGlobalReadAccess = $myVisClass->checkAccountGroup($prePageKey, 'read');
|
|
|
|
// Global write access (0 = access granted)
|
|
|
|
$intGlobalWriteAccess = $myVisClass->checkAccountGroup($prePageKey, 'write');
|
|
|
|
$myContentClass->intGlobalWriteAccess = $intGlobalWriteAccess;
|
2017-05-22 11:24:21 +02:00
|
|
|
}
|
|
|
|
if (!isset($preNoAccessGrp) || ($preNoAccessGrp == 0)) {
|
2019-04-17 11:40:50 +02:00
|
|
|
if ($chkDataId != 0) {
|
|
|
|
$strSQLWrite = "SELECT `access_group` FROM `$preTableName` WHERE `id`=".$chkDataId;
|
|
|
|
$intWriteAccessId = $myVisClass->checkAccountGroup((int)$myDBClass->getFieldData($strSQLWrite), 'write');
|
|
|
|
$myContentClass->intWriteAccessId = $intWriteAccessId;
|
|
|
|
}
|
|
|
|
if ($chkListId != 0) {
|
|
|
|
$strSQLWrite = "SELECT `access_group` FROM `$preTableName` WHERE `id`=".$chkListId;
|
|
|
|
$intReadAccessId = $myVisClass->checkAccountGroup((int)$myDBClass->getFieldData($strSQLWrite), 'read');
|
|
|
|
$intWriteAccessId = $myVisClass->checkAccountGroup((int)$myDBClass->getFieldData($strSQLWrite), 'write');
|
|
|
|
$myContentClass->intWriteAccessId = $intWriteAccessId;
|
|
|
|
}
|
2017-05-22 11:24:21 +02:00
|
|
|
}
|
|
|
|
//
|
|
|
|
// Data processing
|
|
|
|
// ===============
|
2019-04-17 11:40:50 +02:00
|
|
|
if (($chkModus == 'make') && ($intGlobalWriteAccess == 0)) {
|
|
|
|
$intError = 0;
|
|
|
|
$intSuccess = 0;
|
|
|
|
// Get write access groups
|
|
|
|
$strAccess = $myVisClass->getAccessGroups('write');
|
|
|
|
// Write configuration file
|
|
|
|
if ($preTableName == 'tbl_host') {
|
|
|
|
/** @var string $strDomainWhere - defined in prepend_adm.php */
|
|
|
|
$strSQL = "SELECT `id` FROM `$preTableName` "
|
|
|
|
. "WHERE $strDomainWhere AND `access_group` IN ($strAccess) AND `active`='1'";
|
|
|
|
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
|
|
|
if ($booReturn == false) {
|
|
|
|
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
|
|
|
}
|
|
|
|
if ($booReturn && ($intDataCount != 0)) {
|
|
|
|
foreach ($arrData as $data) {
|
|
|
|
$intReturn = $myConfigClass->createConfigSingle($preTableName, $data['id']);
|
|
|
|
if ($intReturn == 1) {
|
|
|
|
$intError++;
|
|
|
|
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
|
|
|
} else {
|
|
|
|
$intSuccess++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$myVisClass->processMessage(translate('Some configuration files were not written. Dataset not activated, '
|
|
|
|
. 'not found or you do not have write permission!'), $strErrorMessage);
|
|
|
|
}
|
|
|
|
if ($intSuccess != 0) {
|
|
|
|
$myVisClass->processMessage(translate('Configuration files successfully written!'), $strInfoMessage);
|
|
|
|
}
|
|
|
|
if ($intError != 0) {
|
|
|
|
$myVisClass->processMessage(translate('Some configuration files were not written. Dataset not activated, '
|
|
|
|
. 'not found or you do not have write permission!'), $strErrorMessage);
|
|
|
|
}
|
|
|
|
} elseif ($preTableName == 'tbl_service') {
|
|
|
|
/** @var string $strDomainWhere - defined in prepend_adm.php */
|
|
|
|
$strSQL = "SELECT `id`, `$preKeyField` FROM `$preTableName` "
|
|
|
|
. "WHERE $strDomainWhere AND `access_group` IN ($strAccess) AND `active`='1' "
|
|
|
|
. "GROUP BY `$preKeyField`, `id`";
|
|
|
|
$myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
|
|
|
if ($booReturn == false) {
|
|
|
|
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
|
|
|
}
|
|
|
|
if ($booReturn && ($intDataCount != 0)) {
|
|
|
|
foreach ($arrData as $data) {
|
|
|
|
$intReturn = $myConfigClass->createConfigSingle($preTableName, $data['id']);
|
|
|
|
if ($intReturn == 1) {
|
|
|
|
$intError++;
|
|
|
|
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
|
|
|
} else {
|
|
|
|
$intSuccess++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$myVisClass->processMessage(translate('Some configuration files were not written. Dataset not activated, '
|
|
|
|
. 'not found or you do not have write permission!'), $strErrorMessage);
|
|
|
|
}
|
|
|
|
if ($intSuccess != 0) {
|
|
|
|
$myVisClass->processMessage(translate('Configuration files successfully written!'), $strInfoMessage);
|
|
|
|
}
|
|
|
|
if ($intError != 0) {
|
|
|
|
$myVisClass->processMessage(translate('Some configuration files were not written. Dataset not activated, '
|
|
|
|
. 'not found or you do not have write permission!'), $strErrorMessage);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$intReturn = $myConfigClass->createConfig($preTableName, 0);
|
|
|
|
if ($intReturn == 1) {
|
|
|
|
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
|
|
|
}
|
|
|
|
if ($intReturn == 0) {
|
|
|
|
$myVisClass->processMessage($myConfigClass->strInfoMessage, $strInfoMessage);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$chkModus = 'display';
|
|
|
|
} elseif (($chkModus == 'checkform') && ($chkSelModify == 'info')) {
|
|
|
|
// Display additional relation information
|
|
|
|
if ($preTableName == 'tbl_service') {
|
|
|
|
$intReturn = $myDataClass->infoRelation($preTableName, $chkListId, "$preKeyField,service_description");
|
|
|
|
} else {
|
|
|
|
$intReturn = $myDataClass->infoRelation($preTableName, $chkListId, $preKeyField);
|
|
|
|
}
|
|
|
|
$myVisClass->processMessage($myDataClass->strInfoMessage, $strConsistMessage);
|
|
|
|
$chkModus = 'display';
|
|
|
|
} elseif (($chkModus == 'checkform') && ($chkSelModify == 'delete') && ($intGlobalWriteAccess == 0)) {
|
|
|
|
$intReturn = 1;
|
|
|
|
// Delete selected datasets
|
|
|
|
if (($preTableName == 'tbl_user') && ($chkTfValue5 == 'Admin')) {
|
|
|
|
$myVisClass->processMessage(translate('Admin cannot be deleted'), $strErrorMessage);
|
|
|
|
$intReturn = 0;
|
|
|
|
} elseif ((($preTableName == 'tbl_datadomain') || ($preTableName == 'tbl_configtarget')) &&
|
|
|
|
($chkTfValue3 == 'localhost')) {
|
|
|
|
$myVisClass->processMessage(translate("Localhost can't be deleted"), $strErrorMessage);
|
|
|
|
$intReturn = 0;
|
|
|
|
} elseif (($preTableName == 'tbl_user') || ($preTableName == 'tbl_datadomain') ||
|
|
|
|
($preTableName == 'tbl_configtarget')) {
|
|
|
|
$intReturn = $myDataClass->dataDeleteEasy($preTableName, $chkListId);
|
|
|
|
} else {
|
|
|
|
$strInfoMessageTmp = $strInfoMessage;
|
|
|
|
if ($preTableName == 'tbl_service') {
|
|
|
|
$intRetVal = $myDataClass->infoRelation($preTableName, $chkListId, "$preKeyField,service_description");
|
|
|
|
} else {
|
|
|
|
$intRetVal = $myDataClass->infoRelation($preTableName, $chkListId, $preKeyField);
|
|
|
|
}
|
|
|
|
if ($intRetVal == 0) {
|
|
|
|
$strInfoMessage = $strInfoMessageTmp;
|
|
|
|
$intReturn = $myDataClass->dataDeleteFull($preTableName, $chkListId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
|
|
|
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
|
|
|
$chkModus = 'display';
|
|
|
|
} elseif (($chkModus == 'checkform') && ($chkSelModify == 'copy') && ($intGlobalWriteAccess == 0)) {
|
|
|
|
// Copy selected datasets
|
|
|
|
$intReturn = $myDataClass->dataCopyEasy($preTableName, $preKeyField, $chkListId, $chkSelTarDom);
|
|
|
|
if ($intReturn == 1) {
|
|
|
|
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
|
|
|
}
|
|
|
|
if ($intReturn == 0) {
|
|
|
|
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
|
|
|
}
|
|
|
|
$chkModus = 'display';
|
|
|
|
} elseif (($chkModus == 'checkform') && ($chkSelModify == 'activate') && ($intGlobalWriteAccess == 0)) {
|
|
|
|
// Activate selected datasets
|
|
|
|
$intReturn = $myDataClass->dataActivate($preTableName, $chkListId);
|
|
|
|
if ($intReturn == 1) {
|
|
|
|
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
|
|
|
}
|
|
|
|
if ($intReturn == 0) {
|
|
|
|
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
|
|
|
}
|
|
|
|
$chkModus = 'display';
|
|
|
|
} elseif (($chkModus == 'checkform') && ($chkSelModify == 'deactivate') && ($intGlobalWriteAccess == 0)) {
|
|
|
|
// Deactivate selected datasets
|
|
|
|
$intReturn = $myDataClass->dataDeactivate($preTableName, $chkListId);
|
|
|
|
if ($intReturn == 1) {
|
|
|
|
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
|
|
|
}
|
|
|
|
if ($intReturn == 0) {
|
|
|
|
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
|
|
|
}
|
|
|
|
// Remove deactivated files
|
|
|
|
if ($preTableName == 'tbl_host') {
|
|
|
|
if ($chkListId != 0) {
|
|
|
|
$strChbName = 'chbId_' .$chkListId;
|
|
|
|
$_POST[$strChbName] = 'on';
|
|
|
|
}
|
|
|
|
// Get write access groups
|
|
|
|
$strAccess = $myVisClass->getAccessGroups('write');
|
|
|
|
// Getting data sets
|
|
|
|
$strSQL = 'SELECT `id`, `host_name` FROM `' .$preTableName. '` '
|
|
|
|
. "WHERE `active`='0' AND `access_group` IN ($strAccess) AND `config_id`=".$chkDomainId;
|
|
|
|
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
|
|
|
if ($booReturn && ($intDataCount != 0) && ($chkDomainId != 0)) {
|
|
|
|
$intReturn = $myConfigClass->getConfigTargets($arrConfigID);
|
|
|
|
$intError = 0;
|
|
|
|
$intSuccess = 0;
|
|
|
|
if (($arrConfigID != 1) && is_array($arrConfigID)) {
|
|
|
|
foreach ($arrData as $elem) {
|
|
|
|
$strChbName = 'chbId_' .$elem['id'];
|
|
|
|
// was the current record is marked for deactivate?
|
|
|
|
if ((filter_input(INPUT_POST, $strChbName) != null) &&
|
|
|
|
(filter_input(INPUT_POST, $strChbName, FILTER_SANITIZE_STRING) == 'on')) {
|
|
|
|
$intCount = 0;
|
|
|
|
$intReturn = 0;
|
|
|
|
foreach ($arrConfigID as $intConfigID) {
|
|
|
|
$intReturn += $myConfigClass->moveFile('host', $elem['host_name']. '.cfg', $intConfigID);
|
|
|
|
if ($intReturn == 0) {
|
|
|
|
$myDataClass->writeLog(translate('Host file deleted:'). ' ' .$elem['host_name']
|
|
|
|
. '.cfg');
|
|
|
|
$intCount++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ($intReturn == 0) {
|
|
|
|
$intSuccess++;
|
|
|
|
}
|
|
|
|
if ($intReturn != 0) {
|
|
|
|
$intError++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (($intSuccess != 0) && ($intCount != 0)) {
|
|
|
|
$myVisClass->processMessage(translate('The assigned, no longer used configuration files were '
|
|
|
|
. 'deleted successfully!').$intCount, $strInfoMessage);
|
|
|
|
}
|
|
|
|
if ($intError != 0) {
|
|
|
|
$myVisClass->processMessage(translate('Errors while deleting the old configuration file - please '
|
|
|
|
. 'check!:'), $strErrorMessage);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} elseif ($chkDomainId == 0) {
|
|
|
|
$myVisClass->processMessage(translate('Common files cannot be removed from target systems - please check '
|
|
|
|
. 'manually'), $strErrorMessage);
|
|
|
|
}
|
|
|
|
} elseif ($preTableName == 'tbl_service') {
|
|
|
|
if ($chkListId != 0) {
|
|
|
|
$strChbName = 'chbId_' .$chkListId;
|
|
|
|
$_POST[$strChbName] = 'on';
|
|
|
|
}
|
|
|
|
// Get write access groups
|
|
|
|
$strAccess = $myVisClass->getAccessGroups('write');
|
|
|
|
// Getting data sets
|
|
|
|
$strSQL = 'SELECT `id`, `config_name` FROM `' .$preTableName. '` '
|
|
|
|
. "WHERE `active`='0' AND `access_group` IN ($strAccess) AND `config_id`=".$chkDomainId;
|
|
|
|
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
|
|
|
if ($booReturn && ($intDataCount != 0) && ($chkDomainId != 0)) {
|
|
|
|
$intReturn = $myConfigClass->getConfigTargets($arrConfigID);
|
|
|
|
$intError = 0;
|
|
|
|
$intSuccess = 0;
|
|
|
|
if (($arrConfigID != 1) && is_array($arrConfigID)) {
|
|
|
|
$intCount = 0;
|
|
|
|
foreach ($arrData as $elem) {
|
|
|
|
$strChbName = 'chbId_' .$elem['id'];
|
|
|
|
// was the current record is marked for deactivate?
|
|
|
|
if (filter_input(INPUT_POST, $strChbName) && (filter_input(INPUT_POST, $strChbName) == 'on')) {
|
|
|
|
$intServiceCount = $myDBClass->countRows("SELECT * FROM `$preTableName` "
|
|
|
|
. "WHERE `$preKeyField`='".$elem['config_name']."' "
|
|
|
|
. "AND `config_id`=$chkDomainId AND `active`='1'");
|
|
|
|
if ($intServiceCount == 0) {
|
|
|
|
$intReturn = 0;
|
|
|
|
foreach ($arrConfigID as $intConfigID) {
|
|
|
|
$intReturn += $myConfigClass->moveFile(
|
|
|
|
'service',
|
|
|
|
$elem['config_name']. '.cfg',
|
|
|
|
$intConfigID
|
|
|
|
);
|
|
|
|
if ($intReturn == 0) {
|
|
|
|
$myDataClass->writeLog(translate('Service file deleted:'). ' ' .
|
|
|
|
$elem['config_name']. '.cfg');
|
|
|
|
}
|
|
|
|
$intCount++;
|
|
|
|
}
|
|
|
|
if ($intReturn == 0) {
|
|
|
|
$intSuccess++;
|
|
|
|
}
|
|
|
|
if ($intReturn != 0) {
|
|
|
|
$intError++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (($intSuccess != 0) && ($intCount != 0)) {
|
|
|
|
$myVisClass->processMessage(translate('The assigned, no longer used configuration files were '
|
|
|
|
. 'deleted successfully!'), $strInfoMessage);
|
|
|
|
}
|
|
|
|
if ($intError != 0) {
|
|
|
|
$myVisClass->processMessage(translate('Errors while deleting the old configuration file - please '
|
|
|
|
. 'check!:'), $strErrorMessage);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} elseif ($chkDomainId == 0) {
|
|
|
|
$myVisClass->processMessage(translate('Common files cannot be removed from target systems - please check '
|
|
|
|
. 'manually'), $strErrorMessage);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$chkModus = 'display';
|
|
|
|
} elseif (($chkModus == 'checkform') && ($chkSelModify == 'modify')) {
|
|
|
|
// Open the dataset to modify
|
|
|
|
if ($intReadAccessId == 0) {
|
|
|
|
$booReturn = $myDBClass->hasSingleDataset("SELECT * FROM `$preTableName` "
|
|
|
|
. 'WHERE `id`=' .$chkListId, $arrModifyData);
|
|
|
|
if ($booReturn == false) {
|
|
|
|
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
|
|
|
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
|
|
|
$chkModus = 'display';
|
|
|
|
} else {
|
|
|
|
$chkModus = 'add';
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$myVisClass->processMessage(translate('No permission to open configuration!'), $strErrorMessage);
|
|
|
|
$chkModus = 'display';
|
|
|
|
}
|
|
|
|
} elseif (($chkModus == 'checkform') && ($chkSelModify == 'config') && ($intGlobalWriteAccess == 0)) {
|
|
|
|
// Write configuration file (hosts and services)
|
|
|
|
$intDSId = (int)substr(array_search('on', filter_input_array(INPUT_POST), true), 6);
|
|
|
|
if (isset($chkListId) && ($chkListId != 0)) {
|
|
|
|
$intDSId = $chkListId;
|
|
|
|
}
|
|
|
|
$intValCount = 0;
|
|
|
|
foreach (filter_input_array(INPUT_POST) as $key => $elem) {
|
|
|
|
if ($elem == 'on') {
|
|
|
|
$intValCount++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ($intValCount > 1) {
|
|
|
|
$intDSId = 0;
|
|
|
|
}
|
|
|
|
$intReturn = $myConfigClass->createConfigSingle($preTableName, $intDSId);
|
|
|
|
if ($intReturn == 1) {
|
|
|
|
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
|
|
|
}
|
|
|
|
if ($intReturn == 0) {
|
|
|
|
$myVisClass->processMessage($myConfigClass->strInfoMessage, $strInfoMessage);
|
|
|
|
}
|
|
|
|
$chkModus = 'display';
|
2017-05-22 11:24:21 +02:00
|
|
|
}
|
2019-04-17 11:40:50 +02:00
|
|
|
//
|
2017-05-22 11:24:21 +02:00
|
|
|
// Some common list view functions
|
|
|
|
// ===============================
|
2019-04-17 11:40:50 +02:00
|
|
|
if ($chkModus != 'add') {
|
|
|
|
// Get Group id's with READ
|
|
|
|
$strAccess = $myVisClass->getAccessGroups('read');
|
|
|
|
// Include domain list
|
|
|
|
/** @var HTML_Template_IT $mastertp */
|
|
|
|
$myVisClass->insertDomainList($mastertp);
|
|
|
|
// Process filter string
|
2017-05-22 11:24:21 +02:00
|
|
|
}
|