From: hickert Date: Wed, 7 Jun 2006 07:59:47 +0000 (+0000) Subject: Some updates X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=5eb03e4557b691447f6b6af572582e43f62443d7;p=gosa.git Some updates git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@3666 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/contrib/gosa.conf b/contrib/gosa.conf index 3d842d242..36a074e37 100644 --- a/contrib/gosa.conf +++ b/contrib/gosa.conf @@ -124,9 +124,7 @@ - - - + {servKolab} @@ -255,8 +253,8 @@ kde_applications_menu="" compile="/var/spool/gosa" resolution_hook="/etc/gosa/resolutions" - additionalrestrictionfilters="/bin/echo ''" - additionalprotocolls ="/bin/echo ''" + additionalrestrictionfilters="/bin/echo ''" + additionalprotocolls ="/bin/echo ''" lang="" theme="default" debuglevel="0" diff --git a/plugins/admin/systems/class_ServerService.inc b/plugins/admin/systems/class_ServerService.inc deleted file mode 100644 index f0360e9a1..000000000 --- a/plugins/admin/systems/class_ServerService.inc +++ /dev/null @@ -1,343 +0,0 @@ -"Config object" , "dn"=>"Object dn"); - - /* attribute list for save action */ - var $ignore_account = TRUE; - var $attributes = array(); - var $objectclasses = array(); - - var $divList = NULL; - var $dialog = NULL; // Contains dialog object if a dialog is opened - - var $plugins = array(); - var $pluign_names = array(); - - var $current = ""; - var $backup = NULL; - var $acl ; - - function ServerService ($config, $dn) - { - 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 execute() - { - /* Variable initialisation */ - $s_action = ""; - $s_entry = ""; - - /* Walk through posts and check if there are some introductions for us */ - $PossiblePosts = array("addNewService" => "", - "startServices" => "", - "stopServices" => "", - "resetServices" => "", - "removeServices" => "", - - "StartSingleService" => "/^StartSingleService_(.*)_[xy]$/", - "StopSingleService" => "/^StopSingleService_(.*)_[xy]$/", - "ResetSingleService" => "/^ResetSingleService_(.*)_[xy]$/", - "RemoveSingleService" => "/^RemoveSingleService_(.*)_[xy]$/", - "EditSingleService" => "/^EditSingleService_(.*)_[xy]$/"); - - - $once = true; - foreach($_POST as $name => $value){ - foreach($PossiblePosts as $pregCheck => $idPreg) { - if(preg_match("/^".$pregCheck."/",$name) && $once){ - $once = false; - $s_action = $pregCheck; - - if(!empty($idPreg)){ - $s_entry = preg_replace($idPreg,"\\1",$name); - } - } - } - } - - - /* Handle state changes for services */ - $map = array( "startServices" => array("type" => START_SERVICE , "service" => ALL_SERVICES), - "stopServices" => array("type" => STOP_SERVICE , "service" => ALL_SERVICES), - "resetServices" => array("type" => RESET_SERVICE , "service" => ALL_SERVICES), - "StartSingleService" => array("type" => START_SERVICE , "service" => $s_entry), - "StopSingleService" => array("type" => STOP_SERVICE , "service" => $s_entry), - "ResetSingleService" => array("type" => RESET_SERVICE , "service" => $s_entry)); - if(isset($map[$s_action])){ - $type = $map[$s_action]['type']; - $service = $map[$s_action]['service']; - $this->ServiceStatusUpdate($type,$service); - } - - - /* Open service add dialog */ - if($s_action == "addNewService"){ - $this->dialog = new ServiceAddDialog($this->config,$this->dn,$this); - } - - - /* 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; - } - - - /* Edit a service and make a backup from all attributes, - to be able to restore old values after aborting dialog */ - if($s_action == "EditSingleService"){ - $this->backup = get_object_vars($this->plugins[$s_entry]); - $this->dialog = $this->plugins[$s_entry]; - $this->current = $s_entry; - } - - - /* Abort service add */ - if(isset($_POST['CancelServiceAdd'])){ - $this->dialog = NULL; - $this->backup = NULL; - $this->current = ""; - } - - - /* Abort dialog - Restore vars with values before editing */ - if(isset($_POST['CancelService'])){ - if($this->backup == NULL){ - $this->plugins[$this->current] = new $this->current($this->config,$this->dn); - }else{ - foreach($this->backup as $name => $value){ - $this->plugins[$this->current]->$name = $value; - } - } - $this->dialog = NULL; - $this->backup = NULL; - $this->current = ""; - } - - - /* Abort dialog */ - if(isset($_POST['SaveService'])){ - - $msgs = $this->dialog->check(); - if(count($msgs)){ - foreach($msgs as $msg){ - print_red($msg); - } - }else{ - $this->plugins[$this->current] = $this->dialog; - $this->current = ""; - $this->dialog = NULL; - $this->backup = NULL; - } - } - - - /* Abort dialog */ - if(isset($_POST['SaveServiceAdd'])){ - $serv = $_POST['ServiceName']; - $this->plugins[$serv]->is_account = true; - $this->dialog = $this->plugins[$serv]; - $this->current = $serv; - } - - - /* There is currently a subdialog open, display this dialog */ - if($this->dialog != NULL){ - $this->dialog->save_object(); - return($this->dialog->execute()); - } - - - /* Dispaly services overview */ - $this->divList->execute(); - $list = array(); - foreach($this->plugins as $name => $obj){ - if($obj->is_account){ - $list[$name] = $obj->getListEntry(); - } - } - $this->divList -> setEntries($list); - return($this->divList->Draw()); - } - - - /* Get all used services - CLASSNAME => _($this->plugins[*]->DisplayName); */ - function getAllUsedServices() - { - $ret = array(); - foreach($this->plugins as $name => $obj){ - if($obj->is_account){ - if(isset($obj->DisplayName)){ - $ret[$name] = $obj->DisplayName; - }else{ - $ret[$name] = $name; - } - } - } - return($ret); - } - - - /* Get all unused services - CLASSNAME => _($this->plugins[*]->DisplayName); */ - function getAllUnusedServices() - { - $tmp = $this->getAllUsedServices(); - $pool_of_ocs =array(); - foreach($tmp as $name => $value){ - if(isset($this->plugins[$name]->conflicts)){ - $pool_of_ocs = array_merge($pool_of_ocs,$this->plugins[$name]->conflicts); - } - } - - $ret = array(); - foreach($this->plugins as $name => $obj){ - - /* Skip all pluigns that will lead into conflicts */ - $skip = false; - if(isset($obj->conflicts)){ - foreach($obj->conflicts as $oc){ - if(in_array_ics($oc,$pool_of_ocs)){ - $skip = true; - } - } - } - if(!$skip){ - if(isset($obj->DisplayName)){ - $ret[$name] = $obj->DisplayName; - }else{ - $ret[$name] = $name; - } - } - } - return($ret); - } - - - /* This function sets the status var for each used - service && calls an external hook if specified in gosa.conf*/ - function ServiceStatusUpdate($method , $service) - { - /* Skip if this is a new server */ - if($this->dn == "new"){ - print_red(_("Can't set status while this server is not saved.")); - return; - } - - $action = ""; - if($method == START_SERVICE){ - $action = SERVICE_STARTED; - }elseif($method== STOP_SERVICE){ - $action = SERVICE_STOPPED; - }elseif($method == RESET_SERVICE){ - $action = SERVICE_RESETTED; - }else{ - print_red(sprintf(_("The specified method '%s' can't executed for services."),$action)); - return; - } - - if($service == ALL_SERVICES){ - foreach($this->plugins as $name => $obj){ - if($this->plugins[$name]->is_account){ - $this->plugins[$name]->setStatus($action); - } - } - }else{ - if($this->plugins[$service]->is_account){ - $this->plugins[$service]->setStatus($action); - } - } - } - - - function check() - { - $message = plugin::check(); - return $message; - } - - - function save_object() - { - foreach($this->plugins as $name => $obj){ - if($obj->is_account){ - $this->plugins[$name]->save_object(); - } - } - } - - - function remove_from_parent() - { - $caseVars = array("cn","dn"); - foreach($this->plugins as $name => $obj){ - foreach($caseVars as $var){ - if(isset($this->$var)){ - $this->plugins[$name]->$var = $this->$var; - } - } - if($this->plugins[$name]->initially_was_account){ - $this->plugins[$name]->remove_from_parent(); - } - } - } - - - function save() - { - $caseVars = array("cn","dn"); - foreach($this->plugins as $name => $obj){ - - foreach($caseVars as $var){ - if(isset($this->$var)){ - $this->plugins[$name]->$var = $this->$var; - } - } - - if($this->plugins[$name]->is_account){ - $this->plugins[$name]->save(); - }else{ - if($this->plugins[$name]->initially_was_account){ - $this->plugins[$name]->remove_from_parent(); - } - } - } - } - -} -// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: -?> diff --git a/plugins/admin/systems/class_goShareServer.inc b/plugins/admin/systems/class_goShareServer.inc index 5775aee0a..7c35e429c 100644 --- a/plugins/admin/systems/class_goShareServer.inc +++ b/plugins/admin/systems/class_goShareServer.inc @@ -21,6 +21,8 @@ class goShareServer extends plugin{ var $goShareServerStatus = ""; var $goExportEntry = array(); var $allow_mounts = false; + var $mounts_to_remove = array(); + var $mounts_to_add = array(); function goShareServer($config,$dn) { @@ -263,6 +265,56 @@ class goShareServer extends plugin{ unset($this->goExportEntryList[$id]); } + function process_mounts() { + + $clip = "cn=" . $this->cn . ",ou=servers,ou=systems,"; + $mountsdn = "cn=mounts," . substr($this->dn, strlen($clip)); + + $mounts = array( + "objectClass" => "container", + "cn" => "mounts" + ); + + # load data from mounts container + $ldap = $this->config->get_ldap_link(); + $ldap->cat($mountsdn, array('dn')); + $attrs = $ldap->fetch(); + + # mounts container not present yet, so we create it + if (count($attrs) == 0) { + $ldap->cd($mountsdn); + $ldap->add($mounts); + show_ldap_error($ldap->get_error(), _("Creating mount container failed")); + gosa_log("Mount container '$mountsdn' has been created"); + } + + # remove deleted mounts from the container + foreach ($this->mounts_to_remove as $entry) { + $mount=$this->returnMountEntry($entry); + $mountdn = "cn=".$mount["cn"].","."$mountsdn"; + + $ldap->cat($mountdn, array('dn')); + $attrs = $ldap->fetch(); + + if (count($attrs) != 0) { + $ldap->rmdir($mountdn); + show_ldap_error($ldap->get_error(), _("Removing mount container failed")); + gosa_log("Mount object '".$mountdn."' has been removed"); + } + } + + # add new mounts to the container + foreach ($this->mounts_to_add as $entry) { + + $mount=$this->returnMountEntry($entry); + $mountdn = "cn=".$mount["cn"].","."$mountsdn"; + $ldap->cd($mountdn); + $ldap->add($mount); + show_ldap_error($ldap->get_error(), _("Saving mount container failed")); + gosa_log("Mount object '".$mountdn."' has been added"); + } + } + } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: diff --git a/plugins/admin/systems/class_serverService.inc b/plugins/admin/systems/class_serverService.inc new file mode 100644 index 000000000..f0360e9a1 --- /dev/null +++ b/plugins/admin/systems/class_serverService.inc @@ -0,0 +1,343 @@ +"Config object" , "dn"=>"Object dn"); + + /* attribute list for save action */ + var $ignore_account = TRUE; + var $attributes = array(); + var $objectclasses = array(); + + var $divList = NULL; + var $dialog = NULL; // Contains dialog object if a dialog is opened + + var $plugins = array(); + var $pluign_names = array(); + + var $current = ""; + var $backup = NULL; + var $acl ; + + function ServerService ($config, $dn) + { + 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 execute() + { + /* Variable initialisation */ + $s_action = ""; + $s_entry = ""; + + /* Walk through posts and check if there are some introductions for us */ + $PossiblePosts = array("addNewService" => "", + "startServices" => "", + "stopServices" => "", + "resetServices" => "", + "removeServices" => "", + + "StartSingleService" => "/^StartSingleService_(.*)_[xy]$/", + "StopSingleService" => "/^StopSingleService_(.*)_[xy]$/", + "ResetSingleService" => "/^ResetSingleService_(.*)_[xy]$/", + "RemoveSingleService" => "/^RemoveSingleService_(.*)_[xy]$/", + "EditSingleService" => "/^EditSingleService_(.*)_[xy]$/"); + + + $once = true; + foreach($_POST as $name => $value){ + foreach($PossiblePosts as $pregCheck => $idPreg) { + if(preg_match("/^".$pregCheck."/",$name) && $once){ + $once = false; + $s_action = $pregCheck; + + if(!empty($idPreg)){ + $s_entry = preg_replace($idPreg,"\\1",$name); + } + } + } + } + + + /* Handle state changes for services */ + $map = array( "startServices" => array("type" => START_SERVICE , "service" => ALL_SERVICES), + "stopServices" => array("type" => STOP_SERVICE , "service" => ALL_SERVICES), + "resetServices" => array("type" => RESET_SERVICE , "service" => ALL_SERVICES), + "StartSingleService" => array("type" => START_SERVICE , "service" => $s_entry), + "StopSingleService" => array("type" => STOP_SERVICE , "service" => $s_entry), + "ResetSingleService" => array("type" => RESET_SERVICE , "service" => $s_entry)); + if(isset($map[$s_action])){ + $type = $map[$s_action]['type']; + $service = $map[$s_action]['service']; + $this->ServiceStatusUpdate($type,$service); + } + + + /* Open service add dialog */ + if($s_action == "addNewService"){ + $this->dialog = new ServiceAddDialog($this->config,$this->dn,$this); + } + + + /* 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; + } + + + /* Edit a service and make a backup from all attributes, + to be able to restore old values after aborting dialog */ + if($s_action == "EditSingleService"){ + $this->backup = get_object_vars($this->plugins[$s_entry]); + $this->dialog = $this->plugins[$s_entry]; + $this->current = $s_entry; + } + + + /* Abort service add */ + if(isset($_POST['CancelServiceAdd'])){ + $this->dialog = NULL; + $this->backup = NULL; + $this->current = ""; + } + + + /* Abort dialog + Restore vars with values before editing */ + if(isset($_POST['CancelService'])){ + if($this->backup == NULL){ + $this->plugins[$this->current] = new $this->current($this->config,$this->dn); + }else{ + foreach($this->backup as $name => $value){ + $this->plugins[$this->current]->$name = $value; + } + } + $this->dialog = NULL; + $this->backup = NULL; + $this->current = ""; + } + + + /* Abort dialog */ + if(isset($_POST['SaveService'])){ + + $msgs = $this->dialog->check(); + if(count($msgs)){ + foreach($msgs as $msg){ + print_red($msg); + } + }else{ + $this->plugins[$this->current] = $this->dialog; + $this->current = ""; + $this->dialog = NULL; + $this->backup = NULL; + } + } + + + /* Abort dialog */ + if(isset($_POST['SaveServiceAdd'])){ + $serv = $_POST['ServiceName']; + $this->plugins[$serv]->is_account = true; + $this->dialog = $this->plugins[$serv]; + $this->current = $serv; + } + + + /* There is currently a subdialog open, display this dialog */ + if($this->dialog != NULL){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + + /* Dispaly services overview */ + $this->divList->execute(); + $list = array(); + foreach($this->plugins as $name => $obj){ + if($obj->is_account){ + $list[$name] = $obj->getListEntry(); + } + } + $this->divList -> setEntries($list); + return($this->divList->Draw()); + } + + + /* Get all used services + CLASSNAME => _($this->plugins[*]->DisplayName); */ + function getAllUsedServices() + { + $ret = array(); + foreach($this->plugins as $name => $obj){ + if($obj->is_account){ + if(isset($obj->DisplayName)){ + $ret[$name] = $obj->DisplayName; + }else{ + $ret[$name] = $name; + } + } + } + return($ret); + } + + + /* Get all unused services + CLASSNAME => _($this->plugins[*]->DisplayName); */ + function getAllUnusedServices() + { + $tmp = $this->getAllUsedServices(); + $pool_of_ocs =array(); + foreach($tmp as $name => $value){ + if(isset($this->plugins[$name]->conflicts)){ + $pool_of_ocs = array_merge($pool_of_ocs,$this->plugins[$name]->conflicts); + } + } + + $ret = array(); + foreach($this->plugins as $name => $obj){ + + /* Skip all pluigns that will lead into conflicts */ + $skip = false; + if(isset($obj->conflicts)){ + foreach($obj->conflicts as $oc){ + if(in_array_ics($oc,$pool_of_ocs)){ + $skip = true; + } + } + } + if(!$skip){ + if(isset($obj->DisplayName)){ + $ret[$name] = $obj->DisplayName; + }else{ + $ret[$name] = $name; + } + } + } + return($ret); + } + + + /* This function sets the status var for each used + service && calls an external hook if specified in gosa.conf*/ + function ServiceStatusUpdate($method , $service) + { + /* Skip if this is a new server */ + if($this->dn == "new"){ + print_red(_("Can't set status while this server is not saved.")); + return; + } + + $action = ""; + if($method == START_SERVICE){ + $action = SERVICE_STARTED; + }elseif($method== STOP_SERVICE){ + $action = SERVICE_STOPPED; + }elseif($method == RESET_SERVICE){ + $action = SERVICE_RESETTED; + }else{ + print_red(sprintf(_("The specified method '%s' can't executed for services."),$action)); + return; + } + + if($service == ALL_SERVICES){ + foreach($this->plugins as $name => $obj){ + if($this->plugins[$name]->is_account){ + $this->plugins[$name]->setStatus($action); + } + } + }else{ + if($this->plugins[$service]->is_account){ + $this->plugins[$service]->setStatus($action); + } + } + } + + + function check() + { + $message = plugin::check(); + return $message; + } + + + function save_object() + { + foreach($this->plugins as $name => $obj){ + if($obj->is_account){ + $this->plugins[$name]->save_object(); + } + } + } + + + function remove_from_parent() + { + $caseVars = array("cn","dn"); + foreach($this->plugins as $name => $obj){ + foreach($caseVars as $var){ + if(isset($this->$var)){ + $this->plugins[$name]->$var = $this->$var; + } + } + if($this->plugins[$name]->initially_was_account){ + $this->plugins[$name]->remove_from_parent(); + } + } + } + + + function save() + { + $caseVars = array("cn","dn"); + foreach($this->plugins as $name => $obj){ + + foreach($caseVars as $var){ + if(isset($this->$var)){ + $this->plugins[$name]->$var = $this->$var; + } + } + + if($this->plugins[$name]->is_account){ + $this->plugins[$name]->save(); + }else{ + if($this->plugins[$name]->initially_was_account){ + $this->plugins[$name]->remove_from_parent(); + } + } + } + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?>