Code

Updated focus.js
[gosa.git] / gosa-core / include / class_gosaSupportDaemon.inc
index 0c07fba09b147517f3dfcef2e06091274c4ca599..219fdbb36ca2ed0d03dcce6ff3d5524e5527e3c8 100644 (file)
@@ -41,7 +41,7 @@ class gosaSupportDaemon
     @param boolean  Connect Directly connect to daemon socket.
     @param float    Timeout The timelimit for all socket actions.
    */
-  public function __construct($connect=TRUE,$timeout=2)
+  public function __construct($connect=TRUE,$timeout=10)
   {
     #FIXME: bad idea about referencing global variables from within classes
     global $config;
@@ -68,14 +68,18 @@ class gosaSupportDaemon
    */
   public function connect()
   {
-    $this->o_sock = new Socket_Client($this->s_host,$this->i_port,TRUE,$this->f_timeout);
-    if($this->o_sock->connected()){ 
-      $this->o_sock->setEncryptionKey($this->s_encryption_key); 
-      $this->is_connected = TRUE;
+    if(!empty($this->s_host) && !empty($this->i_port)){
+      $this->o_sock = new Socket_Client($this->s_host,$this->i_port,TRUE,$this->f_timeout);
+      if($this->o_sock->connected()){ 
+        $this->o_sock->setEncryptionKey($this->s_encryption_key); 
+        $this->is_connected = TRUE;
+      }else{
+        $this->set_error($this->o_sock->get_error());
+        $this->disconnect();
+        new log("debug","gosaSupportDaemon::connect()", "Could not connect to server.", array(),$this->get_error());
+      }
     }else{
-      $this->set_error($this->o_sock->get_error());
-      $this->disconnect();
-      new log("debug","gosaSupportDaemon::connect()", "Could not connect to server.", array(),$this->get_error());
+      $this->set_error(msgPool::cmdnotfound("GOSA_SI",_("GOsa support daemon")));
     }
     return($this->is_connected);
   }
@@ -130,6 +134,129 @@ class gosaSupportDaemon
   }
 
 
+  public function FAI_get_packages($release,$package = "")
+  {
+    $this->reset_error();
+
+    if(empty($package)){
+      $xml_msg = "<xml><header>gosa_query_packages_list</header><target>GOSA</target><source>GOSA</source>".
+        "<where><clause><phrase><distribution>".$release."</distribution></phrase></clause></where></xml>";
+    }else{
+      $xml_msg = 
+        "<xml><header>gosa_query_packages_list</header><target>GOSA</target><source>GOSA</source>".
+          "<where><clause>".
+            "<connector>AND</connector>".
+            "<phrase><distribution>".$release."</distribution></phrase>".
+            "<phrase><package>".$package."</package></phrase>".
+          "</clause></where>".
+        "</xml>";
+    }
+
+    $ret = array();
+    if($this->connect()){
+      $this->o_sock->write($xml_msg);
+      $str = trim($this->o_sock->read());
+      $entries = $this->xml_to_array($str);
+      if(isset($entries['XML']) && is_array($entries['XML'])){
+
+        /* Check if returned values represent a valid answer */
+        if(isset($entries['XML'])){
+          if(isset($entries['XML']['ERROR_STRING'])) {
+            $this->set_error($entries['XML']['ERROR_STRING']);
+            new log("debug","GOsa-si",
+                get_class($this)."::".__FUNCTION__, array(),
+                "FAILED error was ".$this->get_error());
+            return($ret);
+          }
+
+          /* Unset header tags */
+          foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){
+            if(isset($entries['XML'][$type])){
+              unset($entries['XML'][$type]);
+            }
+          }
+          $ret = $entries['XML'];
+        }
+      }
+    }
+    return($ret);
+
+    
+  }
+
+
+  public function FAI_get_server($name = "")
+  {
+    $this->reset_error();
+
+    $xml_msg = "<xml><header>gosa_query_fai_server</header><target>GOSA</target><source>GOSA</source></xml>";
+    $ret = array();
+    if($this->connect()){
+      $this->o_sock->write($xml_msg);
+      $str = trim($this->o_sock->read());
+      $entries = $this->xml_to_array($str);
+      if(isset($entries['XML']) && is_array($entries['XML'])){
+
+        /* Check if returned values represent a valid answer */
+        if(isset($entries['XML'])){
+          if(isset($entries['XML']['ERROR_STRING'])) {
+            $this->set_error($entries['XML']['ERROR_STRING']);
+            new log("debug","GOsa-si", 
+              get_class($this)."::".__FUNCTION__, array(),
+              "FAILED error was ".$this->get_error());
+            return($ret);
+          }
+
+          /* Unset header tags */
+          foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){
+            if(isset($entries['XML'][$type])){
+              unset($entries['XML'][$type]);
+            }
+          }
+          $ret = $entries['XML']; 
+        }
+      }
+    }
+    return($ret);
+  }
+
+
+  public function FAI_get_classes($name)
+  {
+    $this->reset_error();
+    $xml_msg = "<xml><header>gosa_query_fai_release</header><target>GOSA</target><source>GOSA</source>".
+                  "<where><clause><phrase><release>".$name."</release></phrase></clause></where></xml>";;
+    $ret = array();
+    if($this->connect()){
+      $this->o_sock->write($xml_msg);
+      $str = trim($this->o_sock->read());
+      $entries = $this->xml_to_array($str);
+      if(isset($entries['XML']) && is_array($entries['XML'])){
+
+        /* Check if returned values represent a valid answer */
+        if(isset($entries['XML'])){
+          if(isset($entries['XML']['ERROR_STRING'])) {
+            $this->set_error($entries['XML']['ERROR_STRING']);
+            new log("debug","GOsa-si", 
+              get_class($this)."::".__FUNCTION__, array($name),
+              "FAILED error was ".$this->get_error());
+            return($ret);
+          }
+
+          /* Unset header tags */
+          foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){
+            if(isset($entries['XML'][$type])){
+              unset($entries['XML'][$type]);
+            }
+          }
+          $ret = $entries['XML']; 
+        }
+      }
+    }
+    return($ret);
+  }
+
+
   /*! \brief  Returns an array containing all queued entries.
     @return Array All queued entries as an array.
    */
@@ -149,7 +276,8 @@ class gosaSupportDaemon
       $tags = "<where><clause>".$tags."</clause></where>";
     }
 
-    $xml_msg = "<xml>
+    $xml_msg = 
+"<xml>
       <header>gosa_query_jobdb</header>
       <target>GOSA</target>
       <source>GOSA</source>
@@ -184,6 +312,9 @@ $xml_msg.= "
       }
     }
     
+    /* Remove session ID. No one is interested in this... */
+    unset($ret['SESSION_ID']);
+
     return($ret);
   }
 
@@ -508,7 +639,7 @@ $xml_msg.= "
 
     if(!isset($params['XML'])){
       if (!array_key_exists('XML', $params)){
-        $this->set_error(_("Could not parse XML."));
+        $this->set_error(_("Cannot not parse XML!"));
       }
       $params = array("COUNT" => 0);
     }
@@ -611,7 +742,7 @@ $xml_msg.= "
     /* Prepare data */
     foreach ($data as $key => $value){
       if(is_array($value)){
-        foreach($value as $sub_val){
+        foreach($value as $sub_value){
           $xml_message.= "<$key>$sub_value</$key>";
         }
       }else{
@@ -788,7 +919,7 @@ $xml_msg.= "
                 $tmp->add_targets(array($mac));
                 $tmp->set_type(TRIGGERED_EVENT);
                 if(!$this->append($tmp)){
-                  msg_dialog::display(_("Error"), sprintf(_("Cannot send abort event for entry: %s"),$entry['ID']) , ERROR_DIALOG);
+                  msg_dialog::display(_("Error"), sprintf(_("Cannot send abort event for entry %s!"),$entry['ID']) , ERROR_DIALOG);
                   new log("debug","DaemonEvent ", "gosaSupportDaemon::clean_queue_from_mac()", array($mac => $mac),
                       "FAILED, could not send 'DaemonEvent_faireboot' for entry ID (".$entry['ID'].") - ".$this->get_error());
                 }else{
@@ -808,7 +939,7 @@ $xml_msg.= "
                *  Failed or waiting events, can be removed without any trouble.
                */ 
               if(!$this->remove_entries(array($entry['ID']))){
-                msg_dialog::display(_("Error"), sprintf(_("Cannot remove entry: %s"),$entry['ID']) , ERROR_DIALOG);
+                msg_dialog::display(_("Error"), sprintf(_("Cannot remove entry %s!"),$entry['ID']) , ERROR_DIALOG);
               }
               ;break;
           }