From: cajus Date: Thu, 17 Jan 2008 12:15:51 +0000 (+0000) Subject: Moved nagios X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=d4cdd3abc7bae507e4639fa82db452dc8a1d6ad9;p=gosa.git Moved nagios git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@8438 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/gosa-core/plugins/personal/nagios/class_nagiosAccount.inc b/gosa-core/plugins/personal/nagios/class_nagiosAccount.inc deleted file mode 100644 index 153f73cd3..000000000 --- a/gosa-core/plugins/personal/nagios/class_nagiosAccount.inc +++ /dev/null @@ -1,313 +0,0 @@ - - \author Benoit Mortier - \author Vincent Seynhaeve - \version 1.00 - \date 25.09.2005 - - This class provides the functionality to read and write all attributes - relevant for nagiosAccount from/to the LDAP. It does syntax checking - and displays the formulars required. - */ - -class nagiosAccount extends plugin -{ - /* Definitions */ - var $plHeadline= "Nagios"; - var $plDescription= "This does something"; - - /* CLI vars */ - var $cli_summary= "Manage users nagios account"; - var $cli_description= "Manage Account and autorization\nfor Nagios"; - var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); - - /* plugin specific values */ - var $NagiosAlias = ""; - var $NagiosPager = ""; - var $NagiosMail = ""; - - var $HostNotificationOptions = ""; - var $HostNotificationPeriod = ""; - var $ServiceNotificationPeriod = ""; - var $ServiceNotitificationPeriod = ""; - var $HostNotificationCommands = ""; - var $ServiceNotificationCommands = ""; - var $HostNotitificationOptions = ""; - var $ServiceNotificationOptions = ""; - - var $AuthorizedAllHosts = "unchecked"; - var $AuthorizedAllServices = "unchecked"; - var $AuthorizedSystemCommands = "unchecked"; - var $AuthorizedAllHostCommands = "unchecked"; - var $AuthorizedAllServiceCommands = "unchecked"; - var $AuthorizedConfigurationInformation = "unchecked"; - var $AuthorizedSystemInformation = "unchecked"; - - /* attribute list for save action */ - - var $attributes= array("NagiosAlias", "NagiosPager", "NagiosMail", "HostNotificationPeriod", - "ServiceNotificationPeriod", "HostNotificationCommands", "ServiceNotificationCommands", - "HostNotificationOptions", "ServiceNotificationOptions", "AuthorizedAllHosts", "AuthorizedAllServices", - "AuthorizedSystemCommands", "AuthorizedAllHostCommands", "AuthorizedAllServiceCommands", - "AuthorizedConfigurationInformation", "AuthorizedSystemInformation"); - - var $is_chk_box = array("AuthorizedAllHosts","AuthorizedAllServices","AuthorizedSystemCommands", - "AuthorizedAllHostCommands","AuthorizedAllServiceCommands", - "AuthorizedConfigurationInformation","AuthorizedSystemInformation"); - - var $objectclasses= array("nagiosContact","nagiosAuth"); - - var $uid = ""; - var $view_logged = FALSE; - - /* constructor, if 'dn' is set, the node loads the given - 'dn' from LDAP */ - function nagiosAccount (&$config, $dn= NULL) - { - /* Configuration is fine, allways */ - $this->config= $config; - - plugin::plugin ($config, $dn); - - /* Setting uid to default */ - if(isset($this->attrs['uid'][0])){ - $this->uid = $this->attrs['uid'][0]; - } - - /* Save initial account state */ - $this->initially_was_account= $this->is_account; - } - - function execute() - { - /* Call parent execute */ - plugin::execute(); - - /* Log view */ - if($this->is_account && !$this->view_logged){ - $this->view_logged = TRUE; - new log("view","users/".get_class($this),$this->dn); - } - - /* Load templating engine */ - $smarty= get_smarty(); - $display= ""; - - /* Do we need to flip is_account state? */ - if(isset($_POST['modify_state'])){ - if($this->is_account && $this->acl_is_removeable()){ - $this->is_account= FALSE; - }elseif(!$this->is_account && $this->acl_is_createable()){ - $this->is_account= TRUE; - } - } - - /* Do we represent a valid account? */ - if (!$this->is_account && $this->parent === NULL){ - $display= "\"\"src=\"images/stop.png\" ". - _("This account has no nagios extensions.").""; - - $display.= back_to_main(); - return ($display); - } - - /* Show tab dialog headers */ - if ($this->parent !== NULL){ - if ($this->is_account){ - $display= $this->show_disable_header(_("Remove nagios account"), - _("This account has nagios features enabled. You can disable them by clicking below.")); - } else { - $display= $this->show_enable_header(_("Create nagios account"), _("This account has nagios features disabled. You can enable them by clicking below.")); - return($display); - } - } - - /* Assign acls */ - $tmp = $this->plInfo(); - $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); - foreach($tmp['plProvidedAcls'] as $acl => $desc){ - $smarty->assign($acl."ACL",$this->getacl($acl,$SkipWrite)); - } - - /* Assign attributes an ACL to smarty */ - foreach($this->attributes as $val) { - $smarty->assign("$val", $this->$val); - if(in_array($val,$this->is_chk_box)){ - if($this->$val == "checked"){ - $smarty->assign($val."CHK", " checked "); - }else{ - $smarty->assign($val."CHK", ""); - } - } - } - $smarty->assign('ServiceNotificationOptionsValues' ,array("d,u,r,v"=>"d,u,r,v" ,"d,u,r"=>"d,u,r" ,"d,u"=>"d,u")); - $smarty->assign('HostNotificationOptionsValues' ,array("w,u,c,r"=>"w,u,c,r" ,"w,u,c"=>"w,u,c" ,"c,w"=>"c,w")); - $smarty->assign('ServiceNotificationPeriodValues' ,array("24x7"=>"24x7" ,"24x5"=>"24x5" ,"8x5"=>"8x5")); - $smarty->assign('HostNotificationPeriodValues' ,array("24x7"=>"24x7" ,"24x5"=>"24x5" ,"8x5"=>"8x5")); - $display.= $smarty->fetch (get_template_path('nagios.tpl', TRUE, dirname(__FILE__))); - return ($display); - } - - /* Save to LDAP */ - function save() - { - $ldap= $this->config->get_ldap_link(); - - /* Call parents save to prepare $this->attrs */ - plugin::save(); - - /* Adapt attributes if needed */ - //$method= new $this->method($this->config); - //$id= $method->uattrib; - //$method->fixAttributesOnStore($this); - - /* Write back to ldap */ - $ldap->cd($this->dn); - $this->cleanup(); - $ldap->modify ($this->attrs); - - /* Log last action */ - if($this->initially_was_account){ - new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); - }else{ - new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); - } - - show_ldap_error($ldap->get_error(), sprintf(_("Saving of user/nagios account with dn '%s' failed."),$this->dn)); - - /* Optionally execute a command after we're done */ - if ($this->initially_was_account == $this->is_account){ - if ($this->is_modified){ - $this->handle_post_events("modify",array("uid" => $this->uid)); - } - } else { - $this->handle_post_events("add", array("uid" => $this->uid)); - } - } - - function check() - { - /* Call common method to give check the hook */ - $message= plugin::check(); - - $ldap= $this->config->get_ldap_link(); - /* must: mail */ - if ($this->NagiosAlias == ""){ - $message[]= _("The required field 'NagiosAlias' is not set."); - } - if ($this->NagiosMail == ""){ - $message[]= _("The required field 'NagiosMail' is not set."); - } - if ($this->is_template){ - if (!tests::is_email($this->NagiosMail, TRUE)){ - $message[]= _("Please enter a valid email address in 'NagiosMail' field."); - } - } else { - if (!tests::is_email($this->NagiosMail)){ - $message[]= _("Please enter a valid email address in 'NagiosMail' field."); - } - } - return($message); - } - - - /* Use Save_object for every Post handling */ - function save_object() - { - if (isset($_POST['nagiosTab'])){ - /* Save ldap attributes */ - plugin::save_object(); - - /* Specialhandling for checkboxes */ - foreach($this->is_chk_box as $val){ - if($this->acl_is_writeable($val)){ - if(isset($_POST[$val])){ - $this->$val = "checked"; - }else{ - $this->$val = "unchecked"; - } - } - } - } - } - - function remove_from_parent() - { - /* Cancel if there's nothing to do here */ - if (!$this->initially_was_account){ - return; - } - - /* include global link_info */ - $ldap= $this->config->get_ldap_link(); - - /* Remove and write to LDAP */ - plugin::remove_from_parent(); - - /* Adapt attributes if needed */ - // $method= new $this->method($this->config); - // $method->fixAttributesOnRemove($this); - - @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, - $this->attributes, "Save"); - $ldap->cd($this->dn); - $this->cleanup(); - $ldap->modify ($this->attrs); - - new log("view","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); - - show_ldap_error($ldap->get_error(), sprintf(_("Removing of user/nagios account with dn '%s' failed."),$this->dn)); - - /* remove the entry from LDAP */ - unset ($this->attrs['uid']); - - /* Optionally execute a command after we're done */ - $this->handle_post_events('remove',array("uid" => $this->uid)); - } - - - - static function plInfo() - { - return (array( - "plShortName" => _("Nagios"), - "plDescription" => _("Nagios account settings"), - "plSelfModify" => TRUE, - "plDepends" => array("user"), - "plPriority" => 8, // Position in tabs - "plSection" => array("personal" => _("My account")), - "plCategory" => array("users"), - "plOptions" => array(), - - "plProvidedAcls" => array( - - "NagiosAlias" => _("Alias"), - "NagiosPager" => _("Pager number"), - "NagiosMail" => _("Mail address"), - - "HostNotificationCommands" => _("Host notification commands"), - "HostNotificationOptions" => _("Host notification options"), - "HostNotificationPeriod" => _("Host notification period"), - - "ServiceNotificationCommands" => _("Service notification commands"), - "ServiceNotificationOptions" => _("Service notification options"), - "ServiceNotificationPeriod" => _("Service notification period"), - - "AuthorizedAllHosts" => _("View all hosts"), - "AuthorizedAllServices" => _("View all services"), - - "AuthorizedSystemCommands" => _("Trigger system commands"), - "AuthorizedAllHostCommands" => _("Trigger all host commands"), - "AuthorizedAllServiceCommands" => _("Trigger all service commands"), - - "AuthorizedConfigurationInformation"=> _("View configuration information"), - "AuthorizedSystemInformation" => _("View system informations")) - )); - } -} - -// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: - -?> diff --git a/gosa-core/plugins/personal/nagios/main.inc b/gosa-core/plugins/personal/nagios/main.inc deleted file mode 100644 index 8414b1643..000000000 --- a/gosa-core/plugins/personal/nagios/main.inc +++ /dev/null @@ -1,130 +0,0 @@ -dn); - session::un_set ('edit'); - session::un_set ('nagiosAccount'); - } - - /* Create mail object on demand */ - if (!session::is_set('nagiosAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ - $nagiosAccount= new nagiosAccount ($config, $ui->dn); - $nagiosAccount->enable_CSN_check(); - $nagiosAccount->set_acl_base($ui->dn); - $nagiosAccount->set_acl_category("users"); - session::set('nagiosAccount',$nagiosAccount); - } - $nagiosAccount = session::get('nagiosAccount'); - - /* save changes back to object */ - if (session::is_set('edit')){ - $nagiosAccount->save_object (); - } - - /* Enter edit mode? */ - if (isset($_POST['edit'])){ - - /* Check locking */ - if (($username= get_lock($ui->dn)) != ""){ - session::set('back_plugin',$plug); - session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); - $lock_msg = gen_locked_message ($username, $ui->dn); - - }else{ - - /* Lock the current entry */ - add_lock ($ui->dn, $ui->dn); - session::set('dn',$ui->dn); - session::set('edit',TRUE); - } - } - - /* save changes to LDAP and disable edit mode */ - if (isset($_POST['edit_finish'])){ - - /* Perform checks */ - $message= $nagiosAccount->check (); - - /* No errors, save object */ - if (count ($message) == 0){ - $nagiosAccount->save (); - del_lock ($ui->dn); - session::un_set ('edit'); - - /* Remove object */ - session::un_set ('nagiosAccount'); - } else { - /* Errors found, show message */ - show_errors ($message); - } - } - - /* Execute formular */ - if($lock_msg){ - $display.= $lock_msg; - }else{ - $display.= $nagiosAccount->execute (); - } - - /* Store changes in session */ - if (session::is_set('edit')){ - session::set('nagiosAccount',$nagiosAccount); - } - - $info= ""; - /* Show page footer depending on the mode */ - if ($nagiosAccount->is_account && empty($lock_msg)){ - $display.= "

"; - - /* Are we in edit mode? */ - if (session::is_set('edit')){ - $display.= "\n"; - $display.= " "; - $display.= "\n"; - $info= "\"\" ".$ui->dn." "; - } else { - $info= "\"\" ".$ui->dn." "; - - if(preg_match("/w/",$ui->get_permissions($ui->dn,"users/nagiosAccount"))){ - $info.= "\"\" "._("Click the 'Edit' button below to change informations in this dialog"); - $display.= "\n"; - } - $display.= "\n"; - } - $display.= "

\n"; - } - - /* Page header*/ - $display= print_header(get_template_path('images/monitoring.png'), _("Nagios settings"), $info).$display; - -} - -// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: -?> diff --git a/gosa-core/plugins/personal/nagios/nagios.tpl b/gosa-core/plugins/personal/nagios/nagios.tpl deleted file mode 100644 index e77529add..000000000 --- a/gosa-core/plugins/personal/nagios/nagios.tpl +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - -
-

-  {t}Nagios Account{/t}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{$must} -{render acl=$NagiosAliasACL} - -{/render} -
{$must} -{render acl=$NagiosMailACL} - -{/render} -
- {$must} - -{render acl=$HostNotificationPeriodACL} - -{/render} -
- {$must} - -{render acl=$ServiceNotificationPeriodACL} - -{/render} -
- {$must} - -{render acl=$ServiceNotificationOptionsACL} - -{/render} -
- {$must} - -{render acl=$HostNotificationOptionsACL} - -{/render} -
- - -{render acl=$NagiosPagerACL} - -{/render} -
- - -{render acl=$ServiceNotificationCommandsACL} - -{/render} -
- - -{render acl=$HostNotificationCommandsACL} - -{/render} -
-
-   - -

-  {t}Nagios authentification{/t} -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-{render acl=$AuthorizedSystemInformationACL} - {t}view system informations{/t} -{/render} -
-{render acl=$AuthorizedConfigurationInformationACL} - {t}view configuration information{/t} -{/render} -
-{render acl=$AuthorizedSystemCommandsACL} - {t}trigger system commands{/t} -{/render} -
-{render acl=$AuthorizedAllServicesACL} - {t}view all services{/t} -{/render} -
-{render acl=$AuthorizedAllHostsACL} - {t}view all hosts{/t} -{/render} -
-{render acl=$AuthorizedAllServiceCommandsACL} - {t}trigger all service commands{/t} -{/render} -
-{render acl=$AuthorizedAllHostCommandsACL} - {t}trigger all host commands{/t} -{/render} -
-
- - - - - - diff --git a/gosa-plugins/nagios/personal/nagios/class_nagiosAccount.inc b/gosa-plugins/nagios/personal/nagios/class_nagiosAccount.inc new file mode 100644 index 000000000..153f73cd3 --- /dev/null +++ b/gosa-plugins/nagios/personal/nagios/class_nagiosAccount.inc @@ -0,0 +1,313 @@ + + \author Benoit Mortier + \author Vincent Seynhaeve + \version 1.00 + \date 25.09.2005 + + This class provides the functionality to read and write all attributes + relevant for nagiosAccount from/to the LDAP. It does syntax checking + and displays the formulars required. + */ + +class nagiosAccount extends plugin +{ + /* Definitions */ + var $plHeadline= "Nagios"; + var $plDescription= "This does something"; + + /* CLI vars */ + var $cli_summary= "Manage users nagios account"; + var $cli_description= "Manage Account and autorization\nfor Nagios"; + var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* plugin specific values */ + var $NagiosAlias = ""; + var $NagiosPager = ""; + var $NagiosMail = ""; + + var $HostNotificationOptions = ""; + var $HostNotificationPeriod = ""; + var $ServiceNotificationPeriod = ""; + var $ServiceNotitificationPeriod = ""; + var $HostNotificationCommands = ""; + var $ServiceNotificationCommands = ""; + var $HostNotitificationOptions = ""; + var $ServiceNotificationOptions = ""; + + var $AuthorizedAllHosts = "unchecked"; + var $AuthorizedAllServices = "unchecked"; + var $AuthorizedSystemCommands = "unchecked"; + var $AuthorizedAllHostCommands = "unchecked"; + var $AuthorizedAllServiceCommands = "unchecked"; + var $AuthorizedConfigurationInformation = "unchecked"; + var $AuthorizedSystemInformation = "unchecked"; + + /* attribute list for save action */ + + var $attributes= array("NagiosAlias", "NagiosPager", "NagiosMail", "HostNotificationPeriod", + "ServiceNotificationPeriod", "HostNotificationCommands", "ServiceNotificationCommands", + "HostNotificationOptions", "ServiceNotificationOptions", "AuthorizedAllHosts", "AuthorizedAllServices", + "AuthorizedSystemCommands", "AuthorizedAllHostCommands", "AuthorizedAllServiceCommands", + "AuthorizedConfigurationInformation", "AuthorizedSystemInformation"); + + var $is_chk_box = array("AuthorizedAllHosts","AuthorizedAllServices","AuthorizedSystemCommands", + "AuthorizedAllHostCommands","AuthorizedAllServiceCommands", + "AuthorizedConfigurationInformation","AuthorizedSystemInformation"); + + var $objectclasses= array("nagiosContact","nagiosAuth"); + + var $uid = ""; + var $view_logged = FALSE; + + /* constructor, if 'dn' is set, the node loads the given + 'dn' from LDAP */ + function nagiosAccount (&$config, $dn= NULL) + { + /* Configuration is fine, allways */ + $this->config= $config; + + plugin::plugin ($config, $dn); + + /* Setting uid to default */ + if(isset($this->attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + + /* Save initial account state */ + $this->initially_was_account= $this->is_account; + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Load templating engine */ + $smarty= get_smarty(); + $display= ""; + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Do we represent a valid account? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\"src=\"images/stop.png\" ". + _("This account has no nagios extensions.").""; + + $display.= back_to_main(); + return ($display); + } + + /* Show tab dialog headers */ + if ($this->parent !== NULL){ + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove nagios account"), + _("This account has nagios features enabled. You can disable them by clicking below.")); + } else { + $display= $this->show_enable_header(_("Create nagios account"), _("This account has nagios features disabled. You can enable them by clicking below.")); + return($display); + } + } + + /* Assign acls */ + $tmp = $this->plInfo(); + $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + foreach($tmp['plProvidedAcls'] as $acl => $desc){ + $smarty->assign($acl."ACL",$this->getacl($acl,$SkipWrite)); + } + + /* Assign attributes an ACL to smarty */ + foreach($this->attributes as $val) { + $smarty->assign("$val", $this->$val); + if(in_array($val,$this->is_chk_box)){ + if($this->$val == "checked"){ + $smarty->assign($val."CHK", " checked "); + }else{ + $smarty->assign($val."CHK", ""); + } + } + } + $smarty->assign('ServiceNotificationOptionsValues' ,array("d,u,r,v"=>"d,u,r,v" ,"d,u,r"=>"d,u,r" ,"d,u"=>"d,u")); + $smarty->assign('HostNotificationOptionsValues' ,array("w,u,c,r"=>"w,u,c,r" ,"w,u,c"=>"w,u,c" ,"c,w"=>"c,w")); + $smarty->assign('ServiceNotificationPeriodValues' ,array("24x7"=>"24x7" ,"24x5"=>"24x5" ,"8x5"=>"8x5")); + $smarty->assign('HostNotificationPeriodValues' ,array("24x7"=>"24x7" ,"24x5"=>"24x5" ,"8x5"=>"8x5")); + $display.= $smarty->fetch (get_template_path('nagios.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + /* Save to LDAP */ + function save() + { + $ldap= $this->config->get_ldap_link(); + + /* Call parents save to prepare $this->attrs */ + plugin::save(); + + /* Adapt attributes if needed */ + //$method= new $this->method($this->config); + //$id= $method->uattrib; + //$method->fixAttributesOnStore($this); + + /* Write back to ldap */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + show_ldap_error($ldap->get_error(), sprintf(_("Saving of user/nagios account with dn '%s' failed."),$this->dn)); + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add", array("uid" => $this->uid)); + } + } + + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + $ldap= $this->config->get_ldap_link(); + /* must: mail */ + if ($this->NagiosAlias == ""){ + $message[]= _("The required field 'NagiosAlias' is not set."); + } + if ($this->NagiosMail == ""){ + $message[]= _("The required field 'NagiosMail' is not set."); + } + if ($this->is_template){ + if (!tests::is_email($this->NagiosMail, TRUE)){ + $message[]= _("Please enter a valid email address in 'NagiosMail' field."); + } + } else { + if (!tests::is_email($this->NagiosMail)){ + $message[]= _("Please enter a valid email address in 'NagiosMail' field."); + } + } + return($message); + } + + + /* Use Save_object for every Post handling */ + function save_object() + { + if (isset($_POST['nagiosTab'])){ + /* Save ldap attributes */ + plugin::save_object(); + + /* Specialhandling for checkboxes */ + foreach($this->is_chk_box as $val){ + if($this->acl_is_writeable($val)){ + if(isset($_POST[$val])){ + $this->$val = "checked"; + }else{ + $this->$val = "unchecked"; + } + } + } + } + } + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Remove and write to LDAP */ + plugin::remove_from_parent(); + + /* Adapt attributes if needed */ + // $method= new $this->method($this->config); + // $method->fixAttributesOnRemove($this); + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + new log("view","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + show_ldap_error($ldap->get_error(), sprintf(_("Removing of user/nagios account with dn '%s' failed."),$this->dn)); + + /* remove the entry from LDAP */ + unset ($this->attrs['uid']); + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove',array("uid" => $this->uid)); + } + + + + static function plInfo() + { + return (array( + "plShortName" => _("Nagios"), + "plDescription" => _("Nagios account settings"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 8, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + + "NagiosAlias" => _("Alias"), + "NagiosPager" => _("Pager number"), + "NagiosMail" => _("Mail address"), + + "HostNotificationCommands" => _("Host notification commands"), + "HostNotificationOptions" => _("Host notification options"), + "HostNotificationPeriod" => _("Host notification period"), + + "ServiceNotificationCommands" => _("Service notification commands"), + "ServiceNotificationOptions" => _("Service notification options"), + "ServiceNotificationPeriod" => _("Service notification period"), + + "AuthorizedAllHosts" => _("View all hosts"), + "AuthorizedAllServices" => _("View all services"), + + "AuthorizedSystemCommands" => _("Trigger system commands"), + "AuthorizedAllHostCommands" => _("Trigger all host commands"), + "AuthorizedAllServiceCommands" => _("Trigger all service commands"), + + "AuthorizedConfigurationInformation"=> _("View configuration information"), + "AuthorizedSystemInformation" => _("View system informations")) + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: + +?> diff --git a/gosa-plugins/nagios/personal/nagios/main.inc b/gosa-plugins/nagios/personal/nagios/main.inc new file mode 100644 index 000000000..8414b1643 --- /dev/null +++ b/gosa-plugins/nagios/personal/nagios/main.inc @@ -0,0 +1,130 @@ +dn); + session::un_set ('edit'); + session::un_set ('nagiosAccount'); + } + + /* Create mail object on demand */ + if (!session::is_set('nagiosAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $nagiosAccount= new nagiosAccount ($config, $ui->dn); + $nagiosAccount->enable_CSN_check(); + $nagiosAccount->set_acl_base($ui->dn); + $nagiosAccount->set_acl_category("users"); + session::set('nagiosAccount',$nagiosAccount); + } + $nagiosAccount = session::get('nagiosAccount'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $nagiosAccount->save_object (); + } + + /* Enter edit mode? */ + if (isset($_POST['edit'])){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('dn',$ui->dn); + session::set('edit',TRUE); + } + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $nagiosAccount->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $nagiosAccount->save (); + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Remove object */ + session::un_set ('nagiosAccount'); + } else { + /* Errors found, show message */ + show_errors ($message); + } + } + + /* Execute formular */ + if($lock_msg){ + $display.= $lock_msg; + }else{ + $display.= $nagiosAccount->execute (); + } + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('nagiosAccount',$nagiosAccount); + } + + $info= ""; + /* Show page footer depending on the mode */ + if ($nagiosAccount->is_account && empty($lock_msg)){ + $display.= "

"; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + $info= "\"\" ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + + if(preg_match("/w/",$ui->get_permissions($ui->dn,"users/nagiosAccount"))){ + $info.= "\"\" "._("Click the 'Edit' button below to change informations in this dialog"); + $display.= "\n"; + } + $display.= "\n"; + } + $display.= "

\n"; + } + + /* Page header*/ + $display= print_header(get_template_path('images/monitoring.png'), _("Nagios settings"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/gosa-plugins/nagios/personal/nagios/nagios.tpl b/gosa-plugins/nagios/personal/nagios/nagios.tpl new file mode 100644 index 000000000..e77529add --- /dev/null +++ b/gosa-plugins/nagios/personal/nagios/nagios.tpl @@ -0,0 +1,192 @@ + + + + + + +
+

+  {t}Nagios Account{/t}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$must} +{render acl=$NagiosAliasACL} + +{/render} +
{$must} +{render acl=$NagiosMailACL} + +{/render} +
+ {$must} + +{render acl=$HostNotificationPeriodACL} + +{/render} +
+ {$must} + +{render acl=$ServiceNotificationPeriodACL} + +{/render} +
+ {$must} + +{render acl=$ServiceNotificationOptionsACL} + +{/render} +
+ {$must} + +{render acl=$HostNotificationOptionsACL} + +{/render} +
+ + +{render acl=$NagiosPagerACL} + +{/render} +
+ + +{render acl=$ServiceNotificationCommandsACL} + +{/render} +
+ + +{render acl=$HostNotificationCommandsACL} + +{/render} +
+
+   + +

+  {t}Nagios authentification{/t} +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+{render acl=$AuthorizedSystemInformationACL} + {t}view system informations{/t} +{/render} +
+{render acl=$AuthorizedConfigurationInformationACL} + {t}view configuration information{/t} +{/render} +
+{render acl=$AuthorizedSystemCommandsACL} + {t}trigger system commands{/t} +{/render} +
+{render acl=$AuthorizedAllServicesACL} + {t}view all services{/t} +{/render} +
+{render acl=$AuthorizedAllHostsACL} + {t}view all hosts{/t} +{/render} +
+{render acl=$AuthorizedAllServiceCommandsACL} + {t}trigger all service commands{/t} +{/render} +
+{render acl=$AuthorizedAllHostCommandsACL} + {t}trigger all host commands{/t} +{/render} +
+
+ + + + + +