Code

Added sorting to workstation startup. FAI server/release
[gosa.git] / gosa-plugins / goto / admin / systems / goto / class_terminalGeneric.inc
index 1971c76a83e2495589a0acfb6476248138b36b0d..08565d4d76ae74a09efc36026edee2350828b321 100644 (file)
@@ -30,6 +30,7 @@ class termgeneric extends plugin
   var $description= "";
   var $orig_dn= "";
   var $orig_cn= "";
+  var $orig_base= "";
 
   var $inheritTimeServer = true;
 
@@ -52,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 */
@@ -62,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']);
@@ -132,6 +140,7 @@ class termgeneric extends plugin
 
     $this->orig_dn= $this->dn;
     $this->orig_cn= $this->cn;
+    $this->orig_base= $this->base;
   }
 
   function set_acl_base($base)
@@ -216,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);
     }
@@ -302,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__))));
   }
 
@@ -321,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));
 
@@ -384,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/");
+    }
   }
 
 
@@ -439,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);
   }