diff --git a/gosa-core/include/class_gosaSupportDaemon.inc b/gosa-core/include/class_gosaSupportDaemon.inc
index a72a58537569307ff52fa2b8fd1530079c256b8f..7dc12f1d21b115bfb90626c4371c043d4f6f004c 100644 (file)
<?php
-
-
/*
- __construct - Create a new deamon handle.
- connect - Connect to deamon socket.
- disconnect - Disconnect from socket.
- set_error - Sets a new error.
- is_error - Returns TRUE if there was an error.
- get_error - Returns the last error or "".
- get_queued_entries - Returns all queued entries, with limitations.
- ids_exist - Checks if the given id exists.
- get_entries_by_id - Returns a set of entries.
- id_exists - Checks if a set entries exists.
- get_entry_by_id - Returns a single entry.
- remove_entries - Remove a set of entries.
- remove_entry - Removes a single entry.
- update_entries - Updates a set of entries.
- xml_to_array - XML to Array.
-*/
-
+ This code is part of GOsa (https://gosa.gonicus.de)
+ Copyright (C) 2008 Fabian Hickert
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Function overview:
+
+ __construct - Create a new deamon handle.
+ connect - Connect to deamon socket.
+ disconnect - Disconnect from socket.
+ set_error - Sets a new error.
+ is_error - Returns TRUE if there was an error.
+ get_error - Returns the last error or "".
+ get_queued_entries - Returns all queued entries, with limitations.
+ ids_exist - Checks if the given id exists.
+ get_entries_by_id - Returns a set of entries.
+ id_exists - Checks if a set entries exists.
+ get_entry_by_id - Returns a single entry.
+ remove_entries - Remove a set of entries.
+ remove_entry - Removes a single entry.
+ update_entries - Updates a set of entries.
+ xml_to_array - XML to Array.
+ number_of_queued_entries - Returns the number of currently queued entries.
+*/
class gosaSupportDaemon
{
- private $o_sock = NULL;
private $s_host = "";
private $i_port = 0;
- private $f_timeout = 0.2;
-
- private $is_connected = FALSE;
private $s_encryption_key = "";
- private $s_error = "";
- private $b_error = FALSE;
+ private $o_sock = NULL;
+ private $f_timeout = 2;
+ private $s_error = "";
+ private $b_error = FALSE;
+
+ private $is_connected = FALSE;
/*! \brief Creates a new gosaSupportDaemon object.
@param boolean Connect Directly connect to deamon socket.
@param float Timeout The timelimit for all socket actions.
*/
- public function __construct($host,$port,$key="secret-gosa-password",$connect=TRUE,$timeout=0.2)
+ public function __construct($connect=TRUE,$timeout=0.2)
{
- $this->s_host = $host;
- $this->i_port = $port;
- $this->f_timeout = $timeout;
- $this->s_encryption_key = $key;
- if($connect){
- $this->connect();
+ #FIXME: bad idea about referencing global variables from within classes
+ global $config;
+
+ # load from config, store statically
+ if (isset($config->current['GOSA_SI'])){
+
+ if ($this->s_host == ""){
+ $this->s_host= preg_replace("/^.*@([^:]+):.*$/", "$1", $config->current['GOSA_SI']);
+ $this->i_port= preg_replace("/^.*@[^:]+:(.*)$/", "$1", $config->current['GOSA_SI']);
+ $this->s_encryption_key = preg_replace("/^(.*)@[^:]+:.*$/", "$1", $config->current['GOSA_SI']);
+ }
+
+ $this->f_timeout = $timeout;
+ if($connect){
+ $this->connect();
+ }
}
}
$ret = $entries;
}
}
+
return($ret);
}
+
/*! \brief Checks if the given ids are used queue ids.
@param Array The ids we want to check..
@return Array An array containing all ids as index and TRUE/FALSE as value.
@param String XML string
@return Array Returns an array containing the xml structure.
*/
- function xml_to_array($xml)
+ private function xml_to_array($xml)
{
$params = array();
$level = array();
}
}
}
+
if(!isset($params['XML'])){
- $this->set_error(_("Could not parse XML."));
- $params = array();
+ if (!array_key_exists('XML', $params)){
+ $this->set_error(_("Could not parse XML."));
+ }
+ $params = array("COUNT" => 0);
}
+
return($params);
}
}
- /*! \brief Updates an entry with a set of new values,
- @param Integer The ID of the entry, we want to update.
- @param Array The variables to update.
- @return Boolean Returns TRUE on success.
+ /*! \brief Returns the number of currently queued objects.
+ @return Integer
*/
public function number_of_queued_entries()
{
- $xml_msg ="<xml> <header>gosa_count_jobdb</header></xml>";
+ $xml_msg ="<xml><header>gosa_count_jobdb</header></xml>";
$this->connect();
if($this->connect()){
$this->o_sock->write($xml_msg);
}
return(-1);
}
+
+
+ /*! \brief Returns an array containing all queued entries.
+ @return Array All queued entries as an array.
+ */
+ public function _send($data, $answer_expected= FALSE)
+ {
+ $this->b_error = FALSE;
+ $this->s_error = "";
+ $ret = array();
+
+ if($this->connect()){
+ $this->o_sock->write($data);
+ if ($answer_expected){
+ $str = trim($this->o_sock->read());
+ $entries = $this->xml_to_array($str);
+ if(isset($entries['XML']) && is_array($entries['XML'])){
+ $ret = $entries;
+ }
+ }
+ }
+ return($ret);
+ }
+
+
+ static function send($header, $to, $data= array())
+ {
+ $xml_message= "";
+
+ /* Get communication object */
+ $d= new gosaSupportDaemon(TRUE,10);
+
+ /* Prepare data */
+ foreach ($data as $key => $value){
+ $xml_message.= "<$key>$value</$key>";
+ }
+
+ return $d->_send("<xml><header>$header</header><source>GOSA</source><target>$to</target>".$xml_message."</xml>");
+ }
+
+
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: