Code

Added sorting to workstation startup. FAI server/release
[gosa.git] / gosa-plugins / goto / admin / systems / goto / class_terminalGeneric.inc
index 7fe73099a5d0c1bf19be60d6815b4c39a8e7446b..08565d4d76ae74a09efc36026edee2350828b321 100644 (file)
@@ -29,6 +29,8 @@ class termgeneric extends plugin
   var $cn= "";
   var $description= "";
   var $orig_dn= "";
+  var $orig_cn= "";
+  var $orig_base= "";
 
   var $inheritTimeServer = true;
 
@@ -51,6 +53,9 @@ class termgeneric extends plugin
 
   var $member_of_ogroup = FALSE;
 
+  var $kerberos_key_service = NULL;
+
+
   function termgeneric (&$config, $dn= NULL, $parent= NULL)
   {
     /* Check if FAI is activated */
@@ -61,6 +66,10 @@ class termgeneric extends plugin
 
     plugin::plugin ($config, $dn, $parent);
 
+    if(class_available("krb_host_keys")){
+      $this->kerberos_key_service = new krb_host_keys($this->config,$this);
+    }
+
     if(!isset($this->parent->by_object['ogroup'])){
       $ldap = $this->config->get_ldap_link();
       $ldap->cd ($this->config->current['BASE']);
@@ -130,6 +139,8 @@ class termgeneric extends plugin
     }
 
     $this->orig_dn= $this->dn;
+    $this->orig_cn= $this->cn;
+    $this->orig_base= $this->base;
   }
 
   function set_acl_base($base)
@@ -214,7 +225,7 @@ class termgeneric extends plugin
 
     /* Do we represent a valid terminal? */
     if (!$this->is_account && $this->parent === NULL){
-      $display= "<img alt=\"\" src=\"images/stop.png\" align=middle>&nbsp;<b>".
+      $display= "<img alt=\"\" src=\"images/small-error.png\" align=middle>&nbsp;<b>".
         msgPool::noValidExtension(_("terminal"))."</b>";
       return($display);
     }
@@ -300,6 +311,13 @@ class termgeneric extends plugin
       return($str);
     }
     $smarty->assign("netconfig", $str);
+
+    /* Display kerberos host key options */  
+    $smarty->assign("host_key","");
+    if(is_object($this->kerberos_key_service)){
+      $smarty->assign("host_key",$this->kerberos_key_service->execute_by_prefix("host/"));
+    }
+
     return($smarty->fetch (get_template_path('terminal.tpl', TRUE, dirname(__FILE__))));
   }
 
@@ -319,6 +337,11 @@ class termgeneric extends plugin
           msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class()));
         }
 
+        /* Remove kerberos key dependencies too */
+        if(is_object($this->kerberos_key_service)){
+          $this->kerberos_key_service->remove_from_parent_by_prefix("host/");
+        }
+
         /* Optionally execute a command after we're done */
         $this->handle_post_events("remove",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber));
 
@@ -330,6 +353,9 @@ class termgeneric extends plugin
           unset($og->member[$this->dn]);
           $og->save ();
         }
+
+        /* Remove all accessTo/trust dependencies */
+        update_accessTo($this->cn,"");
       }
 
       /* Clean queue form entries with this mac 
@@ -379,6 +405,10 @@ class termgeneric extends plugin
       $this->set_everything_to_inherited();
     }
 
+    /* Hanle kerberos host key plugin */
+    if(is_object($this->kerberos_key_service)){
+      $this->kerberos_key_service->save_object_by_prefix("host/");
+    }
   }
 
 
@@ -434,6 +464,14 @@ class termgeneric extends plugin
       $message[]= msgPool::required(_("NTP server"));
     }
 
+    /* Check if we are allowed to create or move this object
+     */
+    if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){
+      $message[] = msgPool::permCreate();
+    }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){
+      $message[] = msgPool::permMove();
+    }
+
     return ($message);
   }
 
@@ -503,6 +541,11 @@ class termgeneric extends plugin
       $ldap->modify ($this->attrs); 
       new log("modify","terminal/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
       $this->handle_post_events("modify",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber));
+
+      /* Update all accessTo/trust dependencies */
+      if($this->orig_cn != $this->cn){
+        update_accessTo($this->orig_cn,$this->cn);
+      }
     }
     
     /* cn=default and macAddress=- indicates that this is a template */