X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_serverService.inc;h=c6fe5415b98048d84e02d6bb63c32bd89dd97ce7;hb=9695395f399e680d3fbb0c6b7a2df7d8b37d17c8;hp=b0065d6cf0ca0c75d6cf06dac4662bbb9eb68087;hpb=ca87dabb9722eaf53fe09924fb074514ab673321;p=gosa.git diff --git a/plugins/admin/systems/class_serverService.inc b/plugins/admin/systems/class_serverService.inc index b0065d6cf..c6fe5415b 100644 --- a/plugins/admin/systems/class_serverService.inc +++ b/plugins/admin/systems/class_serverService.inc @@ -37,19 +37,29 @@ class ServerService extends plugin { plugin::plugin($config); $this->dn= $dn; - $ui= get_userinfo(); - $this->acl= get_permissions ($ui->dn, $ui->subtreeACL); - foreach ($config->data['TABS']['SERVERSERVICE'] as $plug){ $name= $plug['CLASS']; $this->plugin_names[]= $name; $this->plugins[$name]= new $name($config, $dn); - $this->plugins[$name]->acl= get_module_permission($this->acl, "$name", $ui->dn); } - $this->divList = new divListSystemService($config,$this); } + function set_acl_base($base) + { + plugin::set_acl_base($base); + foreach($this->plugins as $name => $obj){ + $this->plugins[$name]->set_acl_base($base); + } + } + + function set_acl_category($category) + { + plugin::set_acl_category($category); + foreach($this->plugins as $name => $obj){ + $this->plugins[$name]->set_acl_category($category); + } + } function execute() { @@ -87,11 +97,12 @@ class ServerService extends plugin /* Handle state changes for services */ - $map = array( "startServices" => array("type" => START_SERVICE , "service" => ALL_SERVICES), - "stopServices" => array("type" => STOP_SERVICE , "service" => ALL_SERVICES), - "restartServices" => array("type" => RESTART_SERVICE , "service" => ALL_SERVICES), "StartSingleService" => array("type" => START_SERVICE , "service" => $s_entry), - "StopSingleService" => array("type" => STOP_SERVICE , "service" => $s_entry), - "RestartSingleService" => array("type" => RESTART_SERVICE , "service" => $s_entry)); + $map = array( "startServices" => array("type" => START_SERVICE , "service" => ALL_SERVICES), + "stopServices" => array("type" => STOP_SERVICE , "service" => ALL_SERVICES), + "restartServices" => array("type" => RESTART_SERVICE , "service" => ALL_SERVICES), + "StartSingleService" => array("type" => START_SERVICE , "service" => $s_entry), + "StopSingleService" => array("type" => STOP_SERVICE , "service" => $s_entry), + "RestartSingleService" => array("type" => RESTART_SERVICE , "service" => $s_entry)); if(isset($map[$s_action])){ $type = $map[$s_action]['type']; $service = $map[$s_action]['service']; @@ -107,11 +118,17 @@ class ServerService extends plugin /* Remove service */ if($s_action == "RemoveSingleService"){ - $this->plugins[$s_entry]->is_account= false; - $this->plugins[$s_entry] = NULL; - $this->plugins[$s_entry] = new $s_entry($this->config,$this->dn); - $this->plugins[$s_entry]->acl = $this->acl; - $this->plugins[$s_entry]->is_account = false; + + /* Create resetted obj */ + $new_obj = new $s_entry($this->config,$this->dn); + $new_obj -> set_acl_base($this->acl_base); + $new_obj -> set_acl_category(preg_replace("/\/$/","",$this->acl_category)); + $tmp = $new_obj->getListEntry(); + + if($tmp['AllowRemove']){ + $this->plugins[$s_entry] = $new_obj; + $this->plugins[$s_entry]->is_account = false; + } } @@ -137,6 +154,9 @@ class ServerService extends plugin if(isset($_POST['CancelService'])){ if($this->backup == NULL){ $this->plugins[$this->current] = new $this->current($this->config,$this->dn); + $this->plugins[$this->current]-> set_acl_base($this->acl_base); + $this->plugins[$this->current]-> set_acl_category(preg_replace("/\/$/","",$this->acl_category)); + }else{ foreach($this->backup as $name => $value){ $this->plugins[$this->current]->$name = $value; @@ -241,6 +261,12 @@ class ServerService extends plugin } } } + + /* Only show createable services */ + if(!$obj->acl_is_createable()){ + $skip = true; + } + if(!$skip){ if(isset($obj->DisplayName)){ $ret[$name] = $obj->DisplayName; @@ -283,8 +309,20 @@ class ServerService extends plugin $this->plugins[$name]->$var = $this->$var; } } - if($this->plugins[$name]->initially_was_account && $this->plugins[$name]->is_account){ - $this->plugins[$name]->setStatus($action); + + /* check if services can be restarted */ + $map =array(SERVICE_STARTED=> "AllowStart" , + SERVICE_STOPPED => "AllowStop", + SERVICE_RESTARTED => "AllowRestart"); + + /* get plugins informations, restart/start/stop actions allowed ?*/ + $tmp = $this->plugins[$name]->getListEntry(); + + /* Check if given action is allowed for this service */ + if($tmp[$map[$action]]){ + if($this->plugins[$name]->initially_was_account && $this->plugins[$name]->is_account){ + $this->plugins[$name]->setStatus($action); + } } } }else{