/** * Umožňuje měnit parametry služeb * * @param IEService $service * @param IEHost $host ObjektHostu */ public function __construct($service, $host) { parent::__construct(); $this->service = $service; $this->host = $host; $this->command = new IECommand(); $this->command->setmyKeyColumn($this->command->nameColumn); $checkLocal = $this->service->getDataValue('check_command'); // $checkRemote = $this->service->getDataValue('check_command-remote'); if (isset($checkLocal)) { $this->command->loadFromMySQL($checkLocal); } $configurator = $this->service->getDataValue('configurator'); if ($configurator) { $module = 'modules/' . $configurator . '.inc.php'; if (file_exists($module)) { require_once $module; $this->configurator = $this->addItem(new $configurator($this)); } else { $this->addStatusMessage(sprintf(_('Modul %s nebyl nalezen'), $module), 'error'); } } else { $this->configurator = $this->addItem(new IEServiceConfigurator($this)); } }
function finalize() { parent::finalize(); $platform = $this->service->getDataValue('platform'); $this->addItem(new EaseTWBFormGroup(_('Jméno'), new EaseHtmlInputTextTag('service_name', $this->service->getName()), $this->service->getName(), _('Název služby testu'))); $addNewItem = new EaseHtmlInputSearchTag('check_command-remote', $this->service->getDataValue('check_command-remote'), array('class' => 'search-input', 'title' => _('vzdálený test'))); $addNewItem->setDataSource('jsoncommand.php?maxRows=20&platform=' . $platform); $this->addItem(new EaseTWBFormGroup(_('Vzdálený Příkaz'), $addNewItem, _('Hledej příkazy pro: ') . $platform, _('Příkaz vykonávaný vzdáleným senzorem NRPE/NSCP.exe'))); $this->addItem(new EaseTWBFormGroup(_('Parametry'), new EaseHtmlInputTextTag('check_command-params', $this->service->getDataValue('check_command-params')), $this->service->getDataValue('command-params'), _('Parametry vzdáleného příkazu. (Pro nrpe oddělované vykřičníkem.)'))); $this->addItem(new EaseTWBFormGroup(_('Platforma'), new IEPlatformSelector('platform', null, $platform), _('Platforma sledovaného stroje'))); $this->addItem(new EaseTWSubmitButton(_('Založit') . ' ' . EaseTWBPart::GlyphIcon('forward'), 'success')); $serviceId = $this->service->getId(); if ($serviceId) { $this->addItem(new EaseHtmlInputHiddenTag('service_id', $serviceId)); } }
/** * Editor k přidávání členů skupiny * * @param IEService|IEHost $holder */ public function __construct($holder) { $contactsAssigned = array(); parent::__construct(); $fieldName = $this->getmyKeyColumn(); $initialContent = new EaseTWBPanel(_('Cíle notifikací')); $initialContent->setTagCss(array('width' => '100%')); if (is_null($holder->getMyKey())) { $initialContent->addItem(_('Nejprve je potřeba uložit záznam')); } else { $serviceName = $holder->getName(); $contact = new IEContact(); $allContacts = $contact->getListing(null, true, array('alias', 'parent_id')); foreach ($holder->getDataValue('contacts') as $contactId => $contactName) { if (isset($allContacts[$contactId])) { $contactsAssigned[$contactId] = $allContacts[$contactId]; } } foreach ($allContacts as $contactID => $contactInfo) { if ($contactInfo['register'] != 1) { unset($allContacts[$contactID]); } if (!$contactInfo['parent_id']) { unset($allContacts[$contactID]); } } foreach ($contactsAssigned as $contactID => $contactInfo) { unset($allContacts[$contactID]); } if (count($allContacts)) { foreach ($allContacts as $contactID => $contactInfo) { $initialContent->addItem(new EaseTWBButtonDropdown($contactInfo[$contact->nameColumn], 'inverse', 'xs', array(new EaseHtmlATag('contacttweak.php?contact_id=' . $contactInfo['parent_id'] . '&service_id=' . $holder->getId(), EaseTWBPart::GlyphIcon('wrench') . ' ' . _('Editace')), new EaseHtmlATag('?addcontact=' . $contactInfo[$contact->nameColumn] . '&contact_id=' . $contactID . '&' . $holder->getmyKeyColumn() . '=' . $holder->getMyKey() . '&' . $holder->nameColumn . '=' . $holder->getName(), EaseTWBPart::GlyphIcon('plus') . ' ' . _('Začít obesílat'))))); } } if (count($contactsAssigned)) { $initialContent->addItem('<br/>'); foreach ($contactsAssigned as $contactID => $contactInfo) { $initialContent->addItem(new EaseTWBButtonDropdown($contactInfo[$contact->nameColumn], 'success', 'xs', array(new EaseHtmlATag('?delcontact=' . $contactInfo[$contact->nameColumn] . '&contact_id=' . $contactID . '&' . $holder->getmyKeyColumn() . '=' . $holder->getMyKey() . '&' . $holder->nameColumn . '=' . $holder->getName(), EaseTWBPart::GlyphIcon('remove') . ' ' . _('Přestat obesílat')), new EaseHtmlATag('contacttweak.php?contact_id=' . $contactInfo['parent_id'] . '&service_id=' . $holder->getId(), EaseTWBPart::GlyphIcon('wrench') . ' ' . _('Editace'))))); } } } $this->addItem($initialContent); }
<?php /** * Icinga Editor služby * * @package IcingaEditor * @subpackage WebUI * @author Vitex <*****@*****.**> * @copyright 2012 Vitex@hippy.cz (G) */ require_once 'includes/IEInit.php'; require_once 'classes/IEService.php'; $service = new IEService($oPage->getRequestValue('service_id', 'int')); $oPage->addItem(new IEPageTop(_('Migrace služby') . ' ' . $service->getName())); $oPage->addPageColumns(); $oPage->columnII->addItem(new EaseHtmlH3Tag(array(new IEPlatformIcon($service->getDataValue('platform')), $service->getName()))); $form = $oPage->columnII->addItem(new EaseTWBForm('Service', 'importer.php?class=service', 'POST')); $form->setTagID($form->getTagName()); if (!is_null($service->getMyKey())) { $form->addItem(new EaseHtmlInputHiddenTag($service->getMyKeyColumn(), $service->getMyKey())); } $form->addItem('<br>'); foreach ($service->data as $key => $value) { if (is_null($value)) { continue; } if (is_array($value)) { $form->addItem(new EaseHtmlTextareaTag($key, serialize($value))); } else { $form->addItem(new EaseHtmlInputTextTag($key, $value)); }
$service->saveToMySql(); } $delcnt = $oPage->getGetValue('delcontact'); if ($delcnt) { $service->delMember('contacts', $oPage->getGetValue('contact_id', 'int'), $delcnt); $service->saveToMySql(); } $addcnt = $oPage->getGetValue('addcontact'); if ($addcnt) { $service->addMember('contacts', $oPage->getGetValue('contact_id', 'int'), $addcnt); $service->saveToMySql(); } $oPage->addItem(new IEPageTop(_('Editace služby') . ' ' . $service->getName())); $oPage->addPageColumns(); $serviceTweak = new IEServiceTweaker($service, $host); $serviceName = $service->getDataValue('display_name'); if (!$serviceName) { $serviceName = $service->getName(); } $oPage->columnII->addItem(new EaseHtmlH3Tag(array(new IEPlatformIcon($service->getDataValue('platform')), $serviceName))); $oPage->columnII->addItem($serviceTweak); $oPage->columnIII->addItem($service->deleteButton($service->getName(), 'host_id=' . $host->getId())); $oPage->columnIII->addItem(new EaseTWBLinkButton('service.php?service_id=' . $service->getID(), _('Editace služby') . ' ' . $serviceName)); $renameForm = new EaseTWBForm('Rename', '?action=rename&host_id=' . $host->getID() . '&service_id=' . $service->getId()); $renameForm->addItem(new EaseHtmlInputTextTag('newname'), $service->getName(), array('class' => 'form-control')); $renameForm->addItem(new EaseTWSubmitButton(_('Přejmenovat'), 'success')); $oPage->columnIII->addItem(new EaseTWBPanel(_('Přejmenování'), 'info', $renameForm)); $oPage->columnIII->addItem($service->cloneButton()); $oPage->columnI->addItem(new IEHostSelector($service)); $oPage->columnI->addItem(new IEContactSelector($service)); $oPage->columnIII->addItem(new EaseTWBLinkButton('host.php?host_id=' . $host->getId(), array(_('Zpět na') . ' ', $host, ' ', $host->getName()), 'default'));
$data['check_command-remote'] = $remoteCmd; } if (isset($remoteCmdParam)) { $data['check_command-params'] = $remoteCmdParam; } $service->setData($data); if ($service->saveToMysql()) { /* $serviceGroup = new IEServiceGroup; if ($serviceGroup->loadDefault()) { $serviceGroup->setDataValue($serviceGroup->nameColumn, EaseShared::user()->getUserLogin()); $serviceGroup->addMember('members', $service->getId(), $service->getName()); $serviceGroup->saveToMySQL(); } */ if (strlen(trim($service->getDataValue('check_command-remote')))) { $oPage->addStatusMessage(_('Služba byla založena'), 'success'); $oPage->redirect('service.php?service_id=' . $service->getId()); exit; } else { $oPage->addStatusMessage(_('Není zvolen vzdálený příkaz testu'), 'warning'); } } } else { if ($oPage->isPosted()) { $oPage->addStatusMessage(_('Prosím zastejte název služby'), 'warning'); } } $oPage->addItem(new IEPageTop(_('Průvodce založením pasivně sledované služby'))); $oPage->addPageColumns(); $oPage->columnI->addItem(new EaseTWBPanel(_('Pasivní checky'), 'info', _('senzor (nrpe/nscp.exe) běží na vzdáleném hostu, který je z monitorovacího serveru nedostupný (např. za NATem) ale má přístup do internetu a tak výsledky nadefinovaných testů zasílá protokolem NSCA na monitorovací server, který je přímá a zpracovává jako by se jednalo o výsledky aktivních testů.')));
/** * Uloží položky * * @param array $request */ public static function saveMembers($request) { $service = new IEService(); if (isset($request[$service->myKeyColumn])) { if ($service->loadFromMySQL((int) $request[$service->myKeyColumn])) { if (isset($request['addservice']) || isset($request['delservice'])) { if (isset($request['addservice'])) { $service->addMember('host_name', $request['host_id'], $request['host_name']); if ($service->saveToMySQL()) { $service->addStatusMessage(sprintf(_('položka %s byla přidána'), $request['addservice']), 'success'); if ($service->getDataValue('autocfg') == '1') { $service->addStatusMessage(sprintf(_('Službu %s je nutné nejprve zkonfigurovat'), $request['addservice']), 'warning'); EaseShared::webPage()->redirect('servicetweak.php?host_id=' . $request['host_id'] . '&service_id=' . $request[$service->myKeyColumn]); exit; } } else { $service->addStatusMessage(sprintf(_('položka %s nebyla přidána'), $request['addservice']), 'warning'); } } if (isset($request['delservice'])) { $service->delMember('host_name', $request['host_id'], $request['host_name']); if ($service->saveToMySQL()) { $service->addStatusMessage(sprintf(_('položka %s byla odebrána'), $request['delservice']), 'success'); } else { $service->addStatusMessage(sprintf(_('položka %s nebyla odebrána'), $request['delservice']), 'warning'); } } } } } }
function fixContactIDs() { $contactsOK = array(); $contactsErr = array(); $contact = new IEContact(); $service = new IEService(); $services = $service->getColumnsFromMySQL(array($service->myKeyColumn)); foreach ($services as $serviceId => $serviceInfo) { $serviceId = intval(current($serviceInfo)); $service->loadFromMySQL($serviceId); $contactNames = $service->getDataValue('contacts'); if ($contactNames) { foreach ($contactNames as $contactId => $contactName) { $contactFound = $contact->loadFromMySQL($contactName); if ($contactId != $contact->getId()) { if ($service->delMember('contacts', $contactId, $contactName) && $service->addMember('contacts', $contact->getId(), $contactName)) { $contactsOK[] = $contactName; } else { $contactsErr[] = $contactName; } } } } if (count($contactsOK)) { if ($service->saveToMySQL()) { $this->addItemSmart(sprintf(_('<strong>%s</strong> : %s'), $service->getName(), implode(',', $contactsOK)), array('class' => 'list-group-item')); $this->addStatusMessage(sprintf(_('%s : %s'), $service->getName(), implode(',', $contactsOK)), 'success'); $contactsOK = array(); } } } $host = new IEHost(); $hosts = $host->getColumnsFromMySQL(array($host->myKeyColumn)); foreach ($hosts as $hostInfo) { $hostId = intval(current($hostInfo)); $host->loadFromMySQL($hostId); $contactNames = $host->getDataValue('contacts'); if ($contactNames) { foreach ($contactNames as $contactId => $contactName) { $contactFound = $contact->loadFromMySQL($contactName); if ($contactId != $contact->getId()) { if ($host->delMember('contacts', $contactId, $contactName) && $host->addMember('contacts', $contact->getId(), $contactName)) { $contactsOK[] = $contactName; } else { $contactsErr[] = $contactName; } } } } if (count($contactsOK)) { if ($host->saveToMySQL()) { $this->addItemSmart(sprintf(_('<strong>%s</strong> : %s'), $host->getName(), implode(',', $contactsOK)), array('class' => 'list-group-item')); $this->addStatusMessage(sprintf(_('%s : %s'), $host->getName(), implode(',', $contactsOK)), 'success'); $contactsOK = array(); } } } }
} else { $oUser->addStatusMessage(_('Host nebyl přejmenován'), 'success'); } } break; case 'clone': $service->unsetDataValue($service->getmyKeyColumn()); $service->setDataValue($service->nameColumn, $service->getName() . ' ' . _('Cloned')); if ($service->saveToMySQL()) { $oUser->addStatusMessage(_('Služba byla zklonovana'), 'success'); } else { $oUser->addStatusMessage(_('Služba nebyla zklonovana'), 'error'); } break; case 'system': $hosts = $service->getDataValue('host_name'); foreach ($hosts as $host_id => $host_name) { $host = new IEHost($host_id); $newService = new IEService($service->getId()); $newService->setDataValue($service->userColumn, 0); $newService->setDataValue('public', 0); if ($newService->fork($host, $host->getDataValue($host->userColumn))) { $oUser->addStatusMessage(sprintf(_('Služba %s byla odvozena'), $newService->getName()), 'success'); } else { $oUser->addStatusMessage(_('Služba nebyla odvozena'), 'error'); } } $service->loadFromMySQL($service->getId()); break; case 'swap': $service->swapTo($oPage->getRequestValue('new_service_id', 'int'));