X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_terminalGeneric.inc;h=282693b3bd809aa222fadd9c7df6dbfc15ca854b;hb=b8358a5412b082ef08c36c441a85a4a651d84f7a;hp=b3092231775095d5c48a952212ec0599b20656b5;hpb=79518853f24954280d9156ce2f57d6a40256d690;p=gosa.git diff --git a/plugins/admin/systems/class_terminalGeneric.inc b/plugins/admin/systems/class_terminalGeneric.inc index b30922317..282693b3b 100644 --- a/plugins/admin/systems/class_terminalGeneric.inc +++ b/plugins/admin/systems/class_terminalGeneric.inc @@ -12,6 +12,7 @@ class termgeneric extends plugin var $gotoTerminalPath= ""; var $gotoSwapServer= ""; var $gotoSyslogServer= ""; + var $gotoSyslogServers = array(); var $gotoNtpServer= array(); var $gotoNtpServers= array(); var $gotoSndModule= ""; @@ -46,9 +47,18 @@ class termgeneric extends plugin "ghGfxAdapter", "ghSoundAdapter", "gotoLastUser"); var $objectclasses= array("top", "gotoTerminal", "GOhard"); - function termgeneric ($config, $dn= NULL) + var $mapActions = array("reboot" => "", + "instant_update" => "softupdate", + "update" => "sceduledupdate", + "reinstall" => "install", + "rescan" => "", + "memcheck" => "memcheck", + "sysinfo" => "sysinfo"); + + + function termgeneric ($config, $dn= NULL, $parent= NULL) { - plugin::plugin ($config, $dn); + plugin::plugin ($config, $dn, $parent); $this->netConfigDNS = new termDNS($this->config,$this->dn,$this->objectclasses); /* Read arrays */ foreach (array("ghNetNic", "ghIdeDev", "ghScsiDev") as $val){ @@ -71,7 +81,7 @@ class termgeneric extends plugin } /* Set inherit checkbox state */ - if(in_array("default",$this->gotoNtpServer)){ + if((in_array("default",$this->gotoNtpServer)) || (count($this->gotoNtpServer)==0)){ $this->inheritTimeServer = true; $this->gotoNtpServer=array(); } @@ -96,6 +106,16 @@ class termgeneric extends plugin $this->base= preg_replace ("/^[^,]+,[^,]+,[^,]+,/", "", $this->dn); } + /* Create an array of all Syslog servers */ + $tmp = $this->config->data['SERVERS']['SYSLOG']; + foreach($tmp as $server){ + $visible = $server; + if($server == "default") { + $visible = "["._("inherited")."]"; + } + $this->gotoSyslogServers[$server] = $visible; + } + $this->orig_dn= $this->dn; } @@ -110,6 +130,36 @@ class termgeneric extends plugin } if (isset($_POST['action'])){ + + /* Set FAIstate */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($this->dn,array("objectClass")); + $res = $ldap->fetch(); + + $attrs = array(); + $attrs['FAIstate'] = ""; + if(isset($this->mapActions[$_POST['saction']])){ + $attrs['FAIstate'] = $this->mapActions[$_POST ['saction']]; + } + + for($i = 0; $i < $res['objectClass']['count'] ; $i ++){ + $attrs['objectClass'][] = $res['objectClass'][$i]; + } + + if(($attrs['FAIstate'] != "") && (!in_array("FAIobject",$attrs['objectClass']))){ + $attrs['objectClass'][] = "FAIobject"; + } + + if($attrs['FAIstate'] == ""){ + #FIXME we should check if FAIobject is used anymore + $attrs['FAIstate'] = array(); + } + + $ldap->cd($this->dn); + $ldap->modify($attrs); + show_ldap_error($ldap->get_error()); + switch($_POST['saction']){ case 'wake': $cmd= search_config($this->config->data['TABS'], "termgeneric", "WAKECMD"); @@ -209,35 +259,33 @@ class termgeneric extends plugin /* Offline */ if ($retval == 0){ - $smarty->assign("actions", array("halt" => _("Switch off"), "reboot" => _("Reboot"))); + $smarty->assign("actions", array( "halt" => _("Switch off"), + "reboot" => _("Reboot"), + "memcheck" => _("Memory test"), + "sysinfo" => _("System analysis"))); } else { - $smarty->assign("actions", array("wake" => _("Wake up"))); + $smarty->assign("actions", array("wake" => _("Wake up"), + "memcheck" => _("Memory test"), + "sysinfo" => _("System analysis"))); } + /* Arrays */ $smarty->assign("modes", $this->modes); $tmp2 = array(); foreach($this->config->data['SERVERS']['NFS'] as $server){ if($server != "default"){ - $tmp = split("\|",$server); - $tmp3= split(":",$tmp[0]); - - $servername = $tmp3[0]; - $nfsname = $tmp3[1]; - - $path =""; - if(isset($tmp[4])){ - $path = $tmp[4]; - } - - $tmp2[$servername.":".$path]= $servername.":".$path; + $tmp2[$server]= $server; }else{ - $tmp2[$server]=$server; + $tmp2[$server]="["._("inherited")."]"; } } $smarty->assign("nfsservers", $tmp2); - $smarty->assign("syslogservers", $this->config->data['SERVERS']['SYSLOG']); + + + + $smarty->assign("syslogservers", $this->gotoSyslogServers); $smarty->assign("ntpservers", $this->gotoNtpServers); /* Variables */ @@ -259,14 +307,14 @@ class termgeneric extends plugin $ldap= $this->config->get_ldap_link(); $ldap->cd($this->dn); - $ldap->cat($this->dn); + $ldap->cat($this->dn, array('dn')); if($ldap->count()){ $this->netConfigDNS->remove_from_parent(); $ldap->rmDir($this->dn); - show_ldap_error($ldap->get_error()); + show_ldap_error($ldap->get_error(), _("Removing terminal failed")); /* Optionally execute a command after we're done */ - $this->handle_post_events("remove"); + $this->handle_post_events("remove", array("macAddress" => $this->netConfigDNS->macAddress)); /* Delete references to object groups */ $ldap->cd ($this->config->current['BASE']); @@ -291,8 +339,10 @@ class termgeneric extends plugin } /* Save terminal path to parent since it is used by termstartup, too */ + if(isset($this->parent->by_object['termstartup'])){ $this->parent->by_object['termstartup']->gotoTerminalPath= $this->gotoTerminalPath; + } if(isset($_POST['termgeneric_posted'])){ if(isset($_POST["inheritTimeServer"])){ @@ -309,10 +359,13 @@ class termgeneric extends plugin { /* Call common method to give check the hook */ $message= plugin::check(); - $message= array_merge($message, $this->netConfigDNS->check()); + + if($this->cn != "default"){ + $message= array_merge($message, $this->netConfigDNS->check()); + } /* Permissions for that base? */ - $this->dn= "cn=".$this->cn."ou=terminals,ou=systems,".$this->base; + $this->dn= "cn=".$this->cn.",ou=terminals,ou=systems,".$this->base; $ui= get_userinfo(); $acl= get_permissions ($this->dn, $ui->subtreeACL); @@ -327,8 +380,16 @@ class termgeneric extends plugin if ($this->orig_dn == 'new'){ $ldap= $this->config->get_ldap_link(); - $ldap->cd ($this->base); - $ldap->search ("(&(objectClass=gotoTerminal)(cn=".$this->cn."))", array("cn")); + $ldap->cd ($this->config->current['BASE']); + + /* It is possible to have a 'default' terminal on every base */ + if($this->cn == "default"){ + $ldap->cat($this->dn); + }else{ + $ldap->search ("(&(objectClass=gotoTerminal)(cn=".$this->cn."))", array("cn")); + } + + /* Check if there are some other terminals found */ if ($ldap->count() != 0){ while ($attrs= $ldap->fetch()){ if (preg_match ("/,ou=incoming,/", $ldap->getDN())){ @@ -355,12 +416,18 @@ class termgeneric extends plugin /* Save to LDAP */ function save() { + + /* Move object if requested */ + if( $this->orig_dn != 'new' && $this->dn != $this->orig_dn){ + $this->move($this->orig_dn, $this->dn); + } + plugin::save(); /* Strip out 'default' values */ foreach (array("gotoTerminalPath", "gotoSwapServer", "gotoSyslogServer") as $val){ - if ($this->attrs[$val] == "default"){ + if (!isset($this->attrs[$val]) || $this->attrs[$val] == "default"){ $this->attrs[$val]= array(); } } @@ -384,37 +451,45 @@ class termgeneric extends plugin $this->attrs= $attrs; } - if($this->inheritTimeServer){ - $this->attrs['gotoNtpServer'] = "default"; - }else{ - /* Set ntpServers */ - $this->attrs['gotoNtpServer'] = array(); + /* Set ntpServers */ + $this->attrs['gotoNtpServer'] = array(); + if(!$this->inheritTimeServer){ foreach($this->gotoNtpServer as $server){ $this->attrs['gotoNtpServer'][] = $server; } } + /* Append gosaAdministrativeUnitTag to objectClass if gosaUnitTag isset */ + if(($this->gosaUnitTag) && (!in_array_ics("gosaAdministrativeUnitTag",$this->attrs['objectClass']))){ + $this->attrs['objectClass'][] = "gosaAdministrativeUnitTag"; + } + /* Write back to ldap */ $ldap= $this->config->get_ldap_link(); if ($this->orig_dn == 'new'){ $ldap->cd($this->config->current['BASE']); $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); $ldap->cd($this->dn); + if (!count($this->attrs['gotoNtpServer'])){ + unset($this->attrs['gotoNtpServer']); + } $ldap->add($this->attrs); $this->handle_post_events("add"); } else { - if ($this->orig_dn != $this->dn){ - $this->move($this->orig_dn, $this->dn); - } $ldap->cd($this->dn); $this->cleanup(); -$ldap->modify ($this->attrs); - + $ldap->modify ($this->attrs); $this->handle_post_events("modify"); } + + /* cn=default and macAddress=- indicates that this is a template */ + if($this->cn == "default"){ + $this->netConfigDNS->macAddress = "-"; + } + $this->netConfigDNS->cn = $this->cn; $this->netConfigDNS->save($this->dn); - show_ldap_error($ldap->get_error()); + show_ldap_error($ldap->get_error(), _("Saving terminal failed")); /* Optionally execute a command after we're done */ $this->postcreate();