X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_gosaSupportDaemon.inc;h=b86f277aea1903cfe7b94622000dcc58bfa0113d;hb=9b22ccef7a7dc885c6058817fe91cc9161a8161f;hp=fcccd5843bb22ea457bd8fca0aeb3de6e6b6b18b;hpb=e186bf1131c8c311d2160dec7a5305c3bef6986f;p=gosa.git diff --git a/gosa-core/include/class_gosaSupportDaemon.inc b/gosa-core/include/class_gosaSupportDaemon.inc index fcccd5843..b86f277ae 100644 --- a/gosa-core/include/class_gosaSupportDaemon.inc +++ b/gosa-core/include/class_gosaSupportDaemon.inc @@ -826,6 +826,16 @@ class gosaSupportDaemon } } if ($xml_elem['type'] == 'complete') { + + /* Save tag attributes too. + e.g. + */ + if(isset($xml_elem['attributes'])){ + foreach($xml_elem['attributes'] as $name => $value){ + $test2['ATTRIBUTES'][$name] = $value; + } + } + $start_level = 1; $test2 = &$params; while($start_level < $xml_elem['level']) { @@ -1116,7 +1126,7 @@ class gosaSupportDaemon foreach ($data as $key => $value){ if(is_array($value)){ foreach($value as $sub_val){ - $xml_message.= "<$key>$sub_value"; + $xml_message.= "<$key>$sub_val"; } }else{ $xml_message.= "<$key>$value"; @@ -1309,7 +1319,7 @@ class gosaSupportDaemon trigger_error("The given principal name is not of type string or it is empty."); return($ret); } - if(!is_array($values) || !count($values)){ + if(!is_array($values)){ trigger_error("No valid update settings given. The parameter must be of type array and must contain at least one entry"); return($ret); } @@ -1352,6 +1362,23 @@ class gosaSupportDaemon } + function krb5_ramdomize_key($server,$name) + { + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_randomize_key
". + "".$name."". + "GOSA". + "".$server."". + "
"; + + return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); + } + + + /*! \brief Updates a given principal with a set of configuration settings. For a list of configurable attributes have a look at 'krb5_get_principal()'. (Uses the GOsa support daemon instead of the ldap database.) @@ -1799,6 +1826,120 @@ class gosaSupportDaemon } return(""); } + + + + + + /***************** + * DAK - Functions + *****************/ + + /*! \brief Returns all currenlty queued entries for a given DAK repository + @param ... + @return Array All queued entries. + */ + public function DAK_keyring_entries($server) + { + /* Ensure that we send the event to a valid mac address + */ + if(!is_string($server) || !tests::is_mac($server)){ + trigger_error("No valid mac address given '".$server."'."); + return; + } + + /* Create query + */ + $xml_msg = " +
gosa_get_dak_keyring
+ ".$server." + GOSA +
"; + + $res = $this->_send($xml_msg,TRUE); + + /* Check if there are results for POLICY + */ + if(isset($res['XML'])){ + $ret = array(); + foreach($res['XML'] as $key => $entry){ + if(preg_match("/^ANSWER/",$key)){ + $ret[] = $entry; + } + } + return($ret); + }else{ + return(array()); + } + } + + + /*! \brief Imports the given key into the specified keyring (Servers mac address) + @param String The servers mac address + @param String The gpg key. + @return Boolean TRUE on success else FALSE + */ + public function DAK_import_key($server,$key) + { + /* Ensure that we send the event to a valid mac address + */ + if(!is_string($server) || !tests::is_mac($server)){ + trigger_error("No valid mac address given '".$server."'."); + return; + } + + /* Check if there is some cleanup required before importing the key. + There may be some Header lines like: + -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.6 (GNU/Linux) + */ + if(preg_match("/".normalizePreg("BEGIN PGP PUBLIC KEY BLOCK")."/",$key)){ + + /* Remove header */ + $key = preg_replace("/^.*\n\n/sim","",$key); + /* Remove footer */ + $key = preg_replace("/-----.*$/sim","",$key); + } + + /* Create query + */ + $xml_msg = " +
gosa_import_dak_key
+ ".$server." + ".$key." + GOSA +
"; + + $res = $this->_send($xml_msg,TRUE); + return($this->is_error()); + } + + + /*! \brief Removes a key from the keyring on the given server. + @param String The servers mac address + @param String The gpg key uid. + @return Boolean TRUE on success else FALSE + */ + public function DAK_remove_key($server,$key) + { + /* Ensure that we send the event to a valid mac address + */ + if(!is_string($server) || !tests::is_mac($server)){ + trigger_error("No valid mac address given '".$server."'."); + return; + } + + /* Create query + */ + $xml_msg = " +
gosa_remove_dak_key
+ ".$server." + ".$key." + GOSA +
"; + + $res = $this->_send($xml_msg,TRUE); + return($this->is_error()); + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: