X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_terminalGeneric.inc;h=66500df3464b8721d69cf4b2b7e56a95d7551b39;hb=c30fdf675865a86365275ed6fb9f8a0cc06e41af;hp=88bbce350f83baa121c3c2c556088fb3aa7d924a;hpb=17bbab09c766166efa306c845fbcd9ead4656623;p=gosa.git diff --git a/plugins/admin/systems/class_terminalGeneric.inc b/plugins/admin/systems/class_terminalGeneric.inc index 88bbce350..66500df34 100644 --- a/plugins/admin/systems/class_terminalGeneric.inc +++ b/plugins/admin/systems/class_terminalGeneric.inc @@ -2,11 +2,6 @@ class termgeneric extends plugin { - /* CLI vars */ - var $cli_summary= "Manage terminal base objects"; - var $cli_description= "Some longer text\nfor help"; - var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); - /* Generic terminal attributes */ var $gotoMode= "disabled"; var $gotoTerminalPath= ""; @@ -49,16 +44,33 @@ class termgeneric extends plugin var $mapActions = array("reboot" => "", "instant_update" => "softupdate", - "update" => "sceduledupdate", + "update" => "scheduledupdate", "reinstall" => "install", "rescan" => "", "memcheck" => "memcheck", "sysinfo" => "sysinfo"); + var $fai_activated = FALSE; + + var $member_of_ogroup = FALSE; function termgeneric ($config, $dn= NULL, $parent= NULL) { + /* Check if FAI is activated */ + $tmp = search_config($config->data,"faiManagement","CLASS"); + if(!empty($tmp)){ + $this->fai_activated = TRUE; + } + plugin::plugin ($config, $dn, $parent); + + if(!isset($this->parent->by_object['ogroup'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + $ldap->search("(&(objectClass=gotoWorkstationTemplate)(member=".$this->dn."))",array("cn")); + $this->member_of_ogroup = $ldap->count() >= 1; + } + $this->netConfigDNS = new termDNS($this->config,$this->dn,$this->objectclasses); /* Read arrays */ foreach (array("ghNetNic", "ghIdeDev", "ghScsiDev") as $val){ @@ -86,6 +98,11 @@ class termgeneric extends plugin $this->gotoNtpServer=array(); } + /* You can't inherit the NTP service, if we are not member in an object group */ + if(!$this->member_of_ogroup){ + $this->inheritTimeServer = FALSE; + } + /* Create available ntp options */ $this->gotoNtpServers = $this->config->data['SERVERS']['NTP']; foreach($this->gotoNtpServers as $key => $server){ @@ -110,7 +127,7 @@ class termgeneric extends plugin $tmp = $this->config->data['SERVERS']['SYSLOG']; foreach($tmp as $server){ $visible = $server; - if($server == "default") { + if($server == "default" && $this->member_of_ogroup) { $visible = "["._("inherited")."]"; } $this->gotoSyslogServers[$server] = $visible; @@ -124,41 +141,45 @@ class termgeneric extends plugin /* Call parent execute */ plugin::execute(); + $this->netConfigDNS->acl = $this->acl; + /* Do we need to flip is_account state? */ if (isset($_POST['modify_state'])){ $this->is_account= !$this->is_account; } - if (isset($_POST['action'])){ + if (isset($_POST['action']) && chkacl($this->acl,"FAIstate") ==""){ - /* Set FAIstate */ - $ldap = $this->config->get_ldap_link(); - $ldap->cd($this->config->current['BASE']); - $ldap->cat($this->dn,array("objectClass")); - $res = $ldap->fetch(); + if($this->fai_activated && $this->dn != "new"){ + /* 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']]; - } + $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]; - } + 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'] != "") && (!in_array("FAIobject",$attrs['objectClass']))){ + $attrs['objectClass'][] = "FAIobject"; + } - if($attrs['FAIstate'] == ""){ - #FIXME we should check if FAIobject is used anymore - $attrs['FAIstate'] = array(); - } + 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()); + $ldap->cd($this->dn); + $ldap->modify($attrs); + show_ldap_error($ldap->get_error()); + } switch($_POST['saction']){ case 'wake': @@ -202,7 +223,7 @@ class termgeneric extends plugin /* Base select dialog */ $once = true; foreach($_POST as $name => $value){ - if(preg_match("/^chooseBase/",$name) && $once){ + if(preg_match("/^chooseBase/",$name) && $once && chkacl($this->acl,"base") == ""){ $once = false; $this->dialog = new baseSelectDialog($this->config); $this->dialog->setCurrentBase($this->base); @@ -232,12 +253,12 @@ class termgeneric extends plugin } /* Add new ntp Server to our list */ - if((isset($_POST['addNtpServer'])) && (isset($_POST['gotoNtpServers']))){ + if((isset($_POST['addNtpServer'])) && (isset($_POST['gotoNtpServers'])) && chkacl($this->acl,"gotoNtpServer")== ""){ $this->gotoNtpServer[$_POST['gotoNtpServers']] = $_POST['gotoNtpServers']; } /* Delete selected NtpServer for list of used servers */ - if((isset($_POST['delNtpServer'])) && (isset($_POST['gotoNtpServerSelected']))){ + if((isset($_POST['delNtpServer'])) && (isset($_POST['gotoNtpServerSelected'])) && chkacl($this->acl,"gotoNtpServer")== ""){ foreach($_POST['gotoNtpServerSelected'] as $name){ unset($this->gotoNtpServer[$name]); } @@ -246,6 +267,7 @@ class termgeneric extends plugin /* Fill templating stuff */ $smarty= get_smarty(); $smarty->assign("cn", $this->cn); + $smarty->assign("cnACL", chkacl($this->acl,"cn")); $smarty->assign("staticAddress", ""); $smarty->assign("bases", $this->config->idepartments); @@ -277,7 +299,9 @@ class termgeneric extends plugin if($server != "default"){ $tmp2[$server]= $server; }else{ - $tmp2[$server]="["._("inherited")."]"; + if($this->member_of_ogroup){ + $tmp2[$server]="["._("inherited")."]"; + } } } @@ -299,13 +323,18 @@ class termgeneric extends plugin /* Show main page */ $this->netConfigDNS->cn= $this->cn; $smarty->assign("netconfig", $this->netConfigDNS->execute()); + $smarty->assign("fai_activated",$this->fai_activated); $smarty->assign("actionACL", chkacl($this->acl, 'action')); + + $smarty->assign("member_of_ogroup",$this->member_of_ogroup); + return($smarty->fetch (get_template_path('terminal.tpl', TRUE))); } function remove_from_parent() { + $this->netConfigDNS->acl = $this->acl; $ldap= $this->config->get_ldap_link(); $ldap->cd($this->dn); $ldap->cat($this->dn, array('dn')); @@ -315,7 +344,7 @@ class termgeneric extends plugin show_ldap_error($ldap->get_error(), _("Removing terminal failed")); /* Optionally execute a command after we're done */ - $this->handle_post_events("remove", array("macAddress" => $this->netConfigDNS->macAddress)); + $this->handle_post_events("remove",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); /* Delete references to object groups */ $ldap->cd ($this->config->current['BASE']); @@ -334,6 +363,7 @@ class termgeneric extends plugin { plugin::save_object(); $this->netConfigDNS->save_object(); + /* Save base, since this is no LDAP attribute */ if (isset($_POST['base']) && chkacl($this->acl, "create") == ""){ $this->base= $_POST['base']; @@ -345,13 +375,18 @@ class termgeneric extends plugin $this->gotoTerminalPath; } - if(isset($_POST['termgeneric_posted'])){ - if(isset($_POST["inheritTimeServer"])){ + if(isset($_POST['termgeneric_posted']) && chkacl($this->acl,"gotoNtpServer") == ""){ + if(isset($_POST["inheritTimeServer"]) && $this->member_of_ogroup){ $this->inheritTimeServer = true; }else{ $this->inheritTimeServer = false; } } + + if(isset($_POST["inheritAll"])){ + $this->set_everything_to_inherited(); + } + } @@ -417,6 +452,7 @@ class termgeneric extends plugin /* Save to LDAP */ function save() { + $this->netConfigDNS->acl = $this->acl; /* Move object if requested */ if( $this->orig_dn != 'new' && $this->dn != $this->orig_dn){ @@ -475,12 +511,12 @@ class termgeneric extends plugin unset($this->attrs['gotoNtpServer']); } $ldap->add($this->attrs); - $this->handle_post_events("add"); + $this->handle_post_events("add",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); } else { $ldap->cd($this->dn); $this->cleanup(); $ldap->modify ($this->attrs); - $this->handle_post_events("modify"); + $this->handle_post_events("modify",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); } /* cn=default and macAddress=- indicates that this is a template */ @@ -491,9 +527,29 @@ class termgeneric extends plugin $this->netConfigDNS->cn = $this->cn; $this->netConfigDNS->save($this->dn); show_ldap_error($ldap->get_error(), _("Saving terminal failed")); + } - /* Optionally execute a command after we're done */ - $this->postcreate(); + + function set_everything_to_inherited() + { + $this->gotoTerminalPath = "default"; + $this->gotoSwapServer = "default" ; + $this->gotoSyslogServer = "default"; + $this->inheritTimeServer = TRUE; + + /* Set workstation service attributes to inherited */ + if($this->member_of_ogroup && isset($this->parent->by_object['termservice'])){ + foreach(array("gotoXKbLayout","gotoXKbModel","gotoXKbVariant", + "gotoXResolution","gotoXColordepth","gotoXMouseType","gotoXMouseport") as $name){ + $this->parent->by_object['termservice']->$name = "default"; + } + } + + /* Set workstation startup attributes to inherited */ + if($this->member_of_ogroup && isset($this->parent->by_object['termstartup'])){ + $this->parent->by_object['termstartup']->gotoBootKernel = "default-inherited"; + $this->parent->by_object['termstartup']->gotoLdapServer = "default-inherited"; + } } }