[debian-edu-commits] debian-edu/pkg-team/ 07/17: debian/patches: Add 00??_mcrypt2openssl_*.patch. Migrate gosa-encrypt-passwords and related code from removed mcrypt (since PHP 7.2) to openssl.

Mike Gabriel sunweaver at debian.org
Thu Mar 1 12:59:49 UTC 2018


This is an automated email from the git hooks/post-receive script.

sunweaver pushed a commit to branch master
in repository gosa.

commit 3bd6e827a0727d2f5a58076c50b7c154eae6c50b
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Thu Mar 1 13:28:57 2018 +0100

    debian/patches: Add 00??_mcrypt2openssl_*.patch. Migrate gosa-encrypt-passwords and related code from removed mcrypt (since PHP 7.2) to openssl.
---
 debian/patches/0008_mcrypt2openssl_gosa-core.patch | 591 +++++++++++++++
 .../0009_mcrypt2openssl_systems-no-gosasi.patch    | 225 ++++++
 .../0010_mcrypt2openssl_goto-no-gosasi.patch       | 717 ++++++++++++++++++
 .../0011_mcrypt2openssl_mail-no-gosasi.patch       | 805 +++++++++++++++++++++
 debian/patches/series                              |   4 +
 5 files changed, 2342 insertions(+)

diff --git a/debian/patches/0008_mcrypt2openssl_gosa-core.patch b/debian/patches/0008_mcrypt2openssl_gosa-core.patch
new file mode 100644
index 0000000..b2f69e3
--- /dev/null
+++ b/debian/patches/0008_mcrypt2openssl_gosa-core.patch
@@ -0,0 +1,591 @@
+Description: Switch from mcrypt to openssl
+Author: Benjamin Zapiec <bzapiec at gonicus.de>
+Abstract:
+ This patch includes the following gosa-core upstream commit:
+ .
+    commit 8a57db04f84337903f7de202e3c897d9b76d9b5f
+    Author: bzapiec <benjamin.zapiec at gonicus.de>
+    Date:   Tue Feb 27 08:31:47 2018 +0100
+ .
+        (see #12)
+        add comment so the user know how and if to use the migration script
+        supress openssl warning
+        execution right is revoked to avoid user to accidentaly execute this script
+ .
+    commit 5f946bee9495db49bd718b8430eda2745adf8b3e
+    Author: bzapiec <benjamin.zapiec at gonicus.de>
+    Date:   Tue Feb 27 08:25:21 2018 +0100
+ .
+    (see #12)
+    switch to ecb mode so we don't need to save the iv
+    add migration script
+ .
+    commit 374e19d8c7a915b8580caa1184a76240919f4f0d
+    Author: bzapiec <benjamin.zapiec at gonicus.de>
+    Date:   Mon Feb 26 14:48:04 2018 +0100
+ .
+        remove gosa-si dependencies
+ .
+    commit df92dc9a0d5204825594986f78baf913167ca458
+    Author: bzapiec <benjamin.zapiec at gonicus.de>
+    Date:   Fri Feb 23 15:37:19 2018 +0100
+ .
+        (see #12)
+        trim decoded value
+ .
+    commit db98333cf2a456d108939402efcffe129740463c
+    Author: bzapiec <benjamin.zapiec at gonicus.de>
+    Date:   Fri Feb 23 14:48:05 2018 +0100
+ .
+        (see #12)
+        updated Socket_Client not to use mcrypt anymore
+ .
+    commit 22ed57eb75b1255f70ac1926824a8dc19edd2431
+    Author: bzapiec <benjamin.zapiec at gonicus.de>
+    Date:   Fri Feb 23 14:09:00 2018 +0100
+ .
+        refs #12
+        first patchset to migrate from mcrypt to openssl encryption library
+ .
+        - use openssl library for password encryption in gosa.conf
+
+
+
+--- a/gosa-core/bin/gosa-encrypt-passwords
++++ b/gosa-core/bin/gosa-encrypt-passwords
+@@ -1,12 +1,14 @@
+ #!/usr/bin/php
+ <?php
+ 
+-function cred_encrypt($input, $password) {
+-
+-  $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+-  $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
++function cred_encrypt($input, $password, $cipher = "aes-256-cbc") {
++  if (in_array($cipher, openssl_get_cipher_methods())) {
++    $ivlen = openssl_cipher_iv_length($cipher);
++    $iv = openssl_random_pseudo_bytes($ivlen);
++    return bin2hex(openssl_encrypt($input, $cipher, $password, OPENSSL_RAW_DATA, $iv));
++  }
+ 
+-  return bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $password, $input, MCRYPT_MODE_ECB, $iv));
++  return null;
+ }
+ 
+ 
+@@ -68,7 +70,12 @@
+   $user = $referral->attributes->getNamedItem("adminDn");
+   echo "* encrypting GOsa password for: ".$user->nodeValue."\n";
+   $pw= $referral->attributes->getNamedItem("adminPassword");
+-  $pw->nodeValue= cred_encrypt($pw->nodeValue, $master_key);
++
++  $encryptedSecret = cred_encrypt($pw->nodeValue, $master_key);
++
++  if($encryptedSecret !== NULL) {
++    $pw->nodeValue = $encryptedSecret;
++  }
+ }
+ 
+ # Encrypt the snapshot passwords 
+@@ -78,7 +85,10 @@
+   $node = $location->attributes->getNamedItem("snapshotAdminPassword"); 
+   if($node->nodeValue){
+     echo "* encrypting snapshot pasword for location: ".$name->nodeValue."\n";
+-    $node->nodeValue = cred_encrypt($node->nodeValue, $master_key);;
++    $encryptedSecret = cred_encrypt($node->nodeValue, $master_key);
++    if($encryptedSecret !== NULL) {
++      $node->nodeValue = $encryptedSecret;
++    }
+   }
+ }
+ 
+--- /dev/null
++++ b/gosa-core/bin/gosa-mcrypt-to-openssl-passwords
+@@ -0,0 +1,109 @@
++#!/usr/bin/php
++<?php
++###################################################################
++# Migration script to migrate your gosa.conf
++# from mcrypt to openssl.
++#
++# If you already updated to openssl don't execute
++# this script again!
++# Your GOsa² installation will become unusable and you need
++# to revert the passwords manually.
++# 
++# On new installations you don't need to execute this script.
++# Password encryption is done by gosa-encrypt-passwords
++###################################################################
++
++
++function cred_encrypt($input, $password, $cipher = "aes-256-ecb") {
++  if (in_array($cipher, openssl_get_cipher_methods())) {
++    $ivlen = openssl_cipher_iv_length($cipher);
++    $iv = openssl_random_pseudo_bytes($ivlen);
++    return bin2hex(openssl_encrypt($input, $cipher, $password, OPENSSL_RAW_DATA, $iv));
++  }
++
++  return null;
++}
++
++function cred_decrypt($input, $password) {
++  $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
++  $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
++  return rtrim(@openssl_decrypt( pack("H*", $input), "aes-256-ecb" , $password, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv ), "\0\3\4\n");
++}
++
++
++# We need to have access to gosa.secrets
++if (posix_getuid() != 0){
++  die ("This program needs to be called by root!\n");
++}
++
++# Do we have a valid gosa.conf?
++if (!file_exists("/etc/gosa/gosa.conf")){
++  die ("Cannot find a valid /etc/gosa/gosa.conf!\n");
++}
++
++echo "Starting password encryption update\n";
++echo "* read master key from gosa.secrets\n";
++$master_key="";
++
++# Do we have a valid gosa.secrets, already? 
++if (!file_exists("/etc/gosa/gosa.secrets")){
++  die ("There's no /etc/gosa/gosa.secrets. No need to update passwords\n");
++} else {
++  echo "* open /etc/gosa/gosa.secrets\n";
++  $content = file_get_contents("/etc/gosa/gosa.secrets");
++  $pos = strpos($content, "GOSAKEY");
++
++  if($pos !== NULL) {
++    $master_key = trim(substr($content, $pos + strlen("GOSAKEY")));
++  } else {
++    die ("/etc/gosa/gosa.secrets maulformed\n");
++  }
++}
++
++# Locate all passwords inside the gosa.conf
++echo "* loading /etc/gosa/gosa.conf\n";
++$conf = new DOMDocument();
++$conf->load("/etc/gosa/gosa.conf") or die ("Cannot read /etc/gosa/gosa.conf - aborted\n");
++$conf->encoding = 'UTF-8';
++$referrals= $conf->getElementsByTagName("referral");
++foreach($referrals as $referral){
++  $user = $referral->attributes->getNamedItem("adminDn");
++  echo "* encrypting GOsa password for: ".$user->nodeValue."\n";
++  $pw= $referral->attributes->getNamedItem("adminPassword");
++  $encryptedSecret = cred_encrypt(cred_decrypt($pw->nodeValue, $master_key), $master_key);
++
++  if($encryptedSecret !== NULL) {
++    $pw->nodeValue = $encryptedSecret;
++  }
++}
++
++# Encrypt the snapshot passwords 
++$locations= $conf->getElementsByTagName("location");
++foreach($locations as $location){
++  $name = $location->attributes->getNamedItem("name"); 
++  $node = $location->attributes->getNamedItem("snapshotAdminPassword"); 
++  if($node->nodeValue){
++    echo "* encrypting snapshot pasword for location: ".$name->nodeValue."\n";
++    $encryptedSecret = cred_encrypt(cred_decrypt($node->nodeValue, $master_key), $master_key);
++    if($encryptedSecret !== NULL) {
++      $node->nodeValue = $encryptedSecret;
++    }
++  }
++}
++
++# Move original gosa.conf out of the way and make it unreadable for the web user
++echo "* creating backup in /etc/gosa/gosa.conf.orig\n";
++rename("/etc/gosa/gosa.conf", "/etc/gosa/gosa.conf.orig");
++chmod("/etc/gosa/gosa.conf.orig", 0600);
++chown ("/etc/gosa/gosa.conf.orig", "root");
++chgrp ("/etc/gosa/gosa.conf.orig", "root");
++
++# Save new passwords
++echo "* saving modified /etc/gosa/gosa.conf\n";
++$conf->save("/etc/gosa/gosa.conf") or die("Cannot write modified /etc/gosa/gosa.conf - aborted\n");
++chmod("/etc/gosa/gosa.conf", 0640);
++chown ("/etc/gosa/gosa.conf", "root");
++chgrp ("/etc/gosa/gosa.conf", "www-data");
++echo "OK\n\n";
++
++?>
+--- a/gosa-core/html/getFAIstatus.php
++++ /dev/null
+@@ -1,51 +0,0 @@
+-<?php
+-/*
+- * This code is part of GOsa (http://www.gosa-project.org)
+- * Copyright (C) 2003-2008 GONICUS GmbH
+- *
+- * ID: $$Id: getbin.php 9255 2008-03-03 16:04:30Z cajus $$
+- *
+- * 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
+- */
+-
+-/* Basic setup, remove eventually registered sessions */
+- at require_once ("../include/php_setup.inc");
+- at require_once ("functions.inc");
+-
+-session_cache_limiter("private");
+-session::start();
+-session::global_set('errorsAlreadyPosted',array());
+-
+-/* Logged in? Simple security check */
+-if (!session::global_is_set('ui')){
+-  new log("security","unknown","",array(),"Error: getFAIstatus.php called without session") ;
+-  header ("Location: index.php");
+-  exit;
+-}
+-
+-/* There must be a mac address given */
+-if(!isset($_GET['mac'])){
+-	return;
+-}
+-
+-$config = session::global_get("config");
+-$o =  new gosaSupportDaemon();
+-header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
+-header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Datum in der Vergangenheit
+-$res = $o->get_entries_by_mac(explode(",", $_GET['mac']));
+-foreach($res as $entry){
+-	echo $entry['MACADDRESS']."|".$entry['PROGRESS']."\n";
+-}
+-?>
+--- a/gosa-core/include/class_listing.inc
++++ b/gosa-core/include/class_listing.inc
+@@ -1626,20 +1626,7 @@
+ 
+ function renderDaemonMenu($separator)
+ {
+-    $result= "";
+-
+-    // If there is a daemon registered, draw the menu entries
+-    if(class_available("DaemonEvent")){
+-        $events= DaemonEvent::get_event_types_by_category($this->categories);
+-        if(isset($events['BY_CLASS']) && count($events['BY_CLASS'])){
+-            foreach($events['BY_CLASS'] as $name => $event){
+-                $result.= "<li$separator><a href='#' onClick='\$(\"act\").value=\"$name\";\$(\"exec_act\").click();'>".$event['MenuImage']." ".$event['s_Menu_Name']."</a></li>";
+-                $separator= "";
+-            }
+-        }
+-    }
+-
+-    return $result;
++    return "";
+ }
+ 
+ 
+--- a/gosa-core/include/class_socketClient.inc
++++ b/gosa-core/include/class_socketClient.inc
+@@ -35,10 +35,10 @@
+   private $b_encrypt  = FALSE;
+ 
+   /* Crypto information */
+-  private $td= NULL;
+   private $ckey= "";
+-  private $ks;
+   private $iv;
++  private $openssl_cipher = "aes-256-cbc";
++  private $iv_len = -1;
+ 
+ 
+   public function __construct($host, $port, $connect = TRUE, $timeout = 3){
+@@ -47,6 +47,8 @@
+     $this->timeout= $timeout;
+     $this->reset_error();
+ 
++    $this->iv_len = openssl_cipher_iv_length($openssl_cipher);
++
+     /* Connect if needed */
+     if($connect){
+       $this->open();
+@@ -56,14 +58,8 @@
+ 
+   public function setEncryptionKey($key)
+   {
+-    if(!function_exists("mcrypt_get_iv_size")){
+-      $this->set_error(msgPool::missingext("mcrypt"));
+-      $this->ckey = "";
+-      $this->b_encrypt = FALSE;
+-    }
+-
+     if ($this->connected()){
+-      $this->ckey = substr(md5($key), 0, $this->ks);
++      $this->ckey = md5($key);
+       $this->b_encrypt = TRUE;
+     }
+ 
+@@ -74,8 +70,7 @@
+   private function encrypt($data)
+   {
+     if($this->b_encrypt){
+-      mcrypt_generic_init($this->td, $this->ckey, $this->iv);
+-      $data = base64_encode(mcrypt_generic($this->td, $data));
++      $data = base64_encode(openssl_encrypt($data, $this->openssl_cipher, $this->ckey, OPENSSL_RAW_DATA, $this->iv));
+     }
+     return($data);
+   }
+@@ -85,9 +80,7 @@
+   {
+     /* decrypt data */
+     if($this->b_encrypt && strlen($data)){
+-      $data = base64_decode($data);
+-      mcrypt_generic_init($this->td, $this->ckey, $this->iv);
+-      $data = mdecrypt_generic($this->td, $data);
++      $data = openssl_decrypt(base64_decode($data), $this->openssl_cipher, $this->ckey, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $this->iv);
+     }
+     return($data);
+   }
+@@ -109,12 +102,8 @@
+     }else{
+       $this->b_data_send = TRUE;
+ 
+-      /* Open the cipher */
+-      $this->td = mcrypt_module_open('rijndael-128', '', 'cbc', '');
+-
+       /* Create the IV and determine the keysize length */
+-      $this->iv = substr(md5('GONICUS GmbH'),0, mcrypt_enc_get_iv_size($this->td));
+-      $this->ks = mcrypt_enc_get_key_size($this->td);
++      $this->iv = substr(md5('GONICUS GmbH'),0, $this->iv_len);
+     }
+   }
+ 
+@@ -210,9 +199,6 @@
+     if($this->handle){
+       fclose($this->handle);
+     }
+-
+-    /* Terminate decryption handle and close module */
+-    @mcrypt_generic_deinit($this->td);
+   }
+ }
+ // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+--- a/gosa-core/include/functions.inc
++++ b/gosa-core/include/functions.inc
+@@ -3071,20 +3071,6 @@
+         return(array());
+     }
+ 
+-  }elseif ($config->get_cfg_value("core","gosaSupportURI") != ""){
+-
+-    // Try using gosa-si
+-  	$res= gosaSupportDaemon::send("gosa_gen_smb_hash", "GOSA", array("password" => $password), TRUE);
+-    if (isset($res['XML']['HASH'])){
+-    	$hash= $res['XML']['HASH'];
+-    } else {
+-      $hash= "";
+-    }
+-
+-    if ($hash == "") {
+-      msg_dialog::display(_("Configuration error"), _("Cannot generate SAMBA hash!"), ERROR_DIALOG);
+-      return ("");
+-    }
+   } else {
+       $password = addcslashes($password, '$'); // <- Escape "$" once to be able to use it in pw strings in Perl scripts
+       $tmp = $config->get_cfg_value("core",'sambaHashHook');
+@@ -3322,24 +3308,26 @@
+ }
+ 
+ 
+-function cred_encrypt($input, $password) {
+-
+-  $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+-  $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
+-
+-  return bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $password, $input, MCRYPT_MODE_ECB, $iv));
++function cred_encrypt($input, $password, $cipher = "aes-256-ecb") {
++  if (in_array($cipher, openssl_get_cipher_methods())) {
++    $ivlen = openssl_cipher_iv_length($cipher);
++    $iv = openssl_random_pseudo_bytes($ivlen);
++    return bin2hex(openssl_encrypt($input, $cipher, $password, OPENSSL_RAW_DATA, $iv));
++  }
+ 
++  return null;
+ }
+ 
++function cred_decrypt($input, $password, $cipher = "aes-256-ecb") {
++  if (in_array($cipher, openssl_get_cipher_methods())) {
++    $ivlen = openssl_cipher_iv_length($cipher);
++    $iv = openssl_random_pseudo_bytes($ivlen);
++    return rtrim(openssl_decrypt(pack("H*", $input), $cipher, $password, OPENSSL_RAW_DATA, $iv ), "\0\3\4\n");
++  }
+ 
+-function cred_decrypt($input,$password) {
+-  $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+-  $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
+-
+-  return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $password, pack("H*", $input), MCRYPT_MODE_ECB, $iv), "\0\3\4\n");
++  return null;
+ }
+ 
+-
+ function get_object_info()
+ {
+   return(session::get('objectinfo'));
+--- a/gosa-core/plugins/admin/groups/class_groupManagement.inc
++++ b/gosa-core/plugins/admin/groups/class_groupManagement.inc
+@@ -93,13 +93,6 @@
+         $msgs = $this->dialogObject->check();
+         if(count($msgs)){
+             msg_dialog::displayChecks($msgs);
+-        }else{
+-            $o_queue = new gosaSupportDaemon();
+-            $o_queue->append($this->dialogObject);
+-            if($o_queue->is_error()){
+-                msg_dialog::display(_("Infrastructure error"), msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-            }
+-            $this->closeDialogs();
+         }
+     }
+ 
+@@ -118,16 +111,6 @@
+                 $uids[] = $attrs['cn'][0];
+             }
+         }
+-        if(count($uids)){
+-            $events = DaemonEvent::get_event_types(USER_EVENT);
+-            $event = "DaemonEvent_notify";
+-            if(isset($events['BY_CLASS'][$event])){
+-                $type = $events['BY_CLASS'][$event];
+-                $this->dialogObject = new $type['CLASS_NAME']($this->config);
+-                $this->dialogObject->add_groups($uids);
+-                $this->dialogObject->set_type(SCHEDULED_EVENT);
+-            }
+-        }
+     }
+ 
+ 
+--- a/gosa-core/plugins/admin/ogroups/class_ogroupManagement.inc
++++ b/gosa-core/plugins/admin/ogroups/class_ogroupManagement.inc
+@@ -108,13 +108,6 @@
+         $msgs = $this->dialogObject->check();
+         if(count($msgs)){
+             msg_dialog::displayChecks($msgs);
+-        }else{
+-            $o_queue = new gosaSupportDaemon();
+-            $o_queue->append($this->dialogObject);
+-            if($o_queue->is_error()){
+-                msg_dialog::display(_("Infrastructure error"), msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-            }
+-            $this->closeDialogs();
+         }
+     }
+ 
+@@ -123,56 +116,7 @@
+      */
+     function sendMessage($action="",$target=array(),$all=array())
+     {
+-
+-        if(class_available("DaemonEvent_notify")){
+-
+-            // Resolv targets  
+-            $targets = array();
+-            $m_list  = array();
+-            $ldap = $this->config->get_ldap_link();
+-
+-            // Collect selected ogroups
+-            foreach($target as $dn){
+-                $ldap->cat($dn, array('member'));
+-                while ($entry = $ldap->fetch()) {
+-                    $m_list[] = $entry;
+-                }
+-            }
+-
+-            // Collect object group member dns
+-            foreach($m_list as $entry){
+-                $members = $entry['member'];
+-                for($i=0;$i<$members['count'];$i++) {
+-
+-                    // Fetch member object
+-                    $ldap->cat($members[$i], array('uid','cn','objectClass'));
+-                    if ($ldap->count() > 0) {
+-
+-                        // Determine which type the object has
+-                        $attrs = $ldap->fetch();
+-                        if (array_search('gosaAccount', $attrs['objectClass'])) {
+-                            $uid = $attrs['uid'][0];
+-                            $targets['USERS'][] = $uid;
+-                        }elseif (array_search('posixGroup', $attrs['objectClass'])) {
+-                            $group = $attrs['cn'][0];
+-                            $targets['GROUPS'][] = $group;
+-                        }
+-                    }
+-                }
+-            }
+-
+-            // We've at least one recipient
+-            if(count($targets)){
+-                $events = DaemonEvent::get_event_types(USER_EVENT);
+-                if(isset($events['BY_CLASS']['DaemonEvent_notify'])){
+-                    $type = $events['BY_CLASS']['DaemonEvent_notify'];
+-                    $this->dialogObject = new $type['CLASS_NAME']($this->config);
+-                    $this->dialogObject->add_targets($targets);
+-                    $this->dialogObject->set_type(TRIGGERED_EVENT);
+-                }
+-            }
+-
+-        }
++      return;
+     }
+ 
+     static function filterProperties($row, $gosaGroupObjects)
+--- a/gosa-core/plugins/admin/users/class_userManagement.inc
++++ b/gosa-core/plugins/admin/users/class_userManagement.inc
+@@ -163,28 +163,7 @@
+      */ 
+     function sendMessage($action="",$target=array(),$all=array())
+     {
+-        if(class_available("DaemonEvent")){
+-            $uids = array();
+-            $ldap = $this->config->get_ldap_link();
+-            $ldap->cd($this->config->current['BASE']);
+-            foreach($target as $dn){
+-                $ldap->cat($dn,array('uid'));
+-                $attrs = $ldap->fetch();
+-                if(isset($attrs['uid'][0])){
+-                    $uids[] = $attrs['uid'][0];
+-                }
+-            }
+-            if(count($uids)){
+-                $events = DaemonEvent::get_event_types(USER_EVENT);
+-                $event = "DaemonEvent_notify";
+-                if(isset($events['BY_CLASS'][$event])){
+-                    $type = $events['BY_CLASS'][$event];
+-                    $this->dialogObject = new $type['CLASS_NAME']($this->config);
+-                    $this->dialogObject->add_users($uids);
+-                    $this->dialogObject->set_type(SCHEDULED_EVENT);
+-                }
+-            }
+-        }
++      return;
+     }
+ 
+ 
+@@ -196,13 +175,6 @@
+         $msgs = $this->dialogObject->check();
+         if(count($msgs)){
+             msg_dialog::displayChecks($msgs);
+-        }else{
+-            $o_queue = new gosaSupportDaemon();
+-            $o_queue->append($this->dialogObject);
+-            if($o_queue->is_error()){
+-                msg_dialog::display(_("Infrastructure error"), msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-            }
+-            $this->closeDialogs();
+         }
+     }
+ 
diff --git a/debian/patches/0009_mcrypt2openssl_systems-no-gosasi.patch b/debian/patches/0009_mcrypt2openssl_systems-no-gosasi.patch
new file mode 100644
index 0000000..81d3f3d
--- /dev/null
+++ b/debian/patches/0009_mcrypt2openssl_systems-no-gosasi.patch
@@ -0,0 +1,225 @@
+From cf34737977a97e0090e09390b209078dabdc77af Mon Sep 17 00:00:00 2001
+From: bzapiec <benjamin.zapiec at gonicus.de>
+Date: Wed, 28 Feb 2018 16:47:50 +0100
+Subject: [PATCH] revert initial changes to remove gosa-si DaemonEvents remain
+ available
+
+---
+ admin/systems/class_servGeneric.inc      | 58 +++++++-------------------------
+ admin/systems/class_systemManagement.inc | 41 +++-------------------
+ admin/systems/class_termDNS.inc          | 11 ------
+ 3 files changed, 16 insertions(+), 94 deletions(-)
+
+diff --git a/admin/systems/class_servGeneric.inc b/admin/systems/class_servGeneric.inc
+index 085928f4a..1bf241901 100644
+--- a/systems/admin/systems/class_servGeneric.inc
++++ b/systems/admin/systems/class_servGeneric.inc
+@@ -101,16 +101,8 @@ class servgeneric extends plugin
+         }
+ 
+         /* Check if this host is currently in installation process*/
+-        if($this->dn != "new" && class_available("gosaSupportDaemon") && class_available("DaemonEvent")){
+-            $o = new gosaSupportDaemon();
++        if($this->dn != "new" && class_available("DaemonEvent")){
+             $e_types = DaemonEvent::get_event_types(USER_EVENT | SYSTEM_EVENT | HIDDEN_EVENT);
+-            $evts = $o->get_entries_by_mac(array($this->netConfigDNS->macAddress));
+-            foreach($evts as $evt){
+-                if(isset($e_types['QUEUED'][$evt['HEADERTAG']]) && $evt['STATUS'] == "processing" && 
+-                        $e_types['QUEUED'][$evt['HEADERTAG']] == "DaemonEvent_reinstall"){
+-                    $this->currently_installing =TRUE;
+-                }
+-            }
+         }
+ 
+         /* Save dn for later references */
+@@ -170,10 +162,6 @@ class servgeneric extends plugin
+                     $tmp = new $evt['CLASS_NAME']($this->config);
+                     $tmp->add_targets(array($this->netConfigDNS->macAddress));
+                     $tmp->set_type(TRIGGERED_EVENT);
+-                    $o_queue = new gosaSupportDaemon();
+-                    if(!$o_queue->append($tmp)){
+-                        msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                    }
+                 }
+             }else{
+                 msg_dialog::display(_("Event error"),
+@@ -199,29 +187,16 @@ class servgeneric extends plugin
+         }
+ 
+         /* Assign status */
+-        if (gosaSupportDaemon::ping($this->netConfigDNS->macAddress)){
+-            $smarty->assign("actions", 
+-                    set_post(
+-                        array(
+-                            "halt" => _("Switch off"), 
+-                            "reboot" => _("Reboot"),
+-                            "update" => _("System update"),
+-                            "reinstall" => _("Reinstall"),
+-                            "rescan" => _("Rescan hardware"),
+-                            "memcheck" => _("Memory test"),
+-                            "localboot" => _("Force local boot"),
+-                            "sysinfo"  => _("System analysis"))));
+-        } else {
+-            $smarty->assign("actions", 
+-                    set_post(
+-                        array(
+-                            "wakeup" => _("Wake up"),
+-                            "reinstall" => _("Reinstall"),
+-                            "update" => _("System update"),
+-                            "memcheck" => _("Memory test"),
+-                            "localboot" => _("Force local boot"),
+-                            "sysinfo"  => _("System analysis"))));
+-        }
++
++        $smarty->assign("actions", 
++                set_post(
++                    array(
++                        "wakeup" => _("Wake up"),
++                        "reinstall" => _("Reinstall"),
++                        "update" => _("System update"),
++                        "memcheck" => _("Memory test"),
++                        "localboot" => _("Force local boot"),
++                        "sysinfo"  => _("System analysis"))));
+ 
+         /* Show main page */
+         $smarty->assign("fai_activated",$this->fai_activated);
+@@ -279,12 +254,7 @@ class servgeneric extends plugin
+             $og->save ();
+         }
+ 
+-        /* Clean queue form entries with this mac 
+-         */
+-        if(class_available("gosaSupportDaemon") && tests::is_mac($this->netConfigDNS->orig_macAddress)){
+-            $q = new gosaSupportDaemon();
+-            $q->clean_queue_from_mac($this->netConfigDNS->orig_macAddress);
+-        }
++
+         $this->handle_post_events("remove",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber));
+     }
+ 
+@@ -455,15 +425,11 @@ class servgeneric extends plugin
+             /* Send installation activation 
+              */
+             $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT);
+-            $o_queue = new gosaSupportDaemon();
+             if(isset($events['TRIGGERED']['DaemonEvent_installation_activation'])){
+                 $evt = $events['TRIGGERED']['DaemonEvent_installation_activation'];
+                 $tmp = new $evt['CLASS_NAME']($this->config);
+                 $tmp->set_type(TRIGGERED_EVENT);
+                 $tmp->add_targets(array($this->netConfigDNS->macAddress));
+-                if(!$o_queue->append($tmp)){
+-                    msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                }
+             }
+         }
+ 
+diff --git a/admin/systems/class_systemManagement.inc b/admin/systems/class_systemManagement.inc
+index 6a766fdeb..56c143873 100644
+--- a/systems/admin/systems/class_systemManagement.inc
++++ b/systems/admin/systems/class_systemManagement.inc
+@@ -110,7 +110,7 @@ class systemManagement extends management
+         $filter->setConverter('systemManagement::incomingFilterConverter');
+ 
+         // Register Daemon Events
+-        if(class_available("DaemonEvent") && class_available("gosaSupportDaemon")){
++        if(class_available("DaemonEvent")){
+             $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT);
+             foreach($events['TRIGGERED'] as $name => $data){
+                 $this->registerAction("T_".$name,"handleEvent");
+@@ -145,11 +145,7 @@ class systemManagement extends management
+             $this->snapHandler = new SnapshotHandler($this->config);
+         }
+ 
+-        // Check if we are able to communicate with the GOsa supprot daemon
+-        if(class_available("gosaSupportDaemon")){
+-            $o = new gosaSupportDaemon();
+-            $this->si_active = $o->connect() && class_available("DaemonEvent");
+-        }
++        $this->si_active = FALSE;
+ 
+         // Check if we are able to communicate with the GOsa supprot daemon
+         if(class_available("opsi")){
+@@ -482,7 +478,6 @@ class systemManagement extends management
+             $ldap = $this->config->get_ldap_link();
+             $tD = $this->getObjectDefinitions();
+             $events = DaemonEvent::get_event_types(SYSTEM_EVENT);
+-            $o_queue = new gosaSupportDaemon();
+             foreach($target as $dn){
+                 $type = $headpage->getType($dn);
+                 if($tD[$type]['sendEvents']){
+@@ -493,24 +488,6 @@ class systemManagement extends management
+                 }
+             }
+ 
+-            /* Skip installation or update trigerred events,
+-             *  if this entry is currently processing.
+-             */
+-            if($triggered && in_array_strict($event,array("DaemonEvent_reinstall","DaemonEvent_update"))){
+-                foreach($mac as $key => $mac_address){
+-                    foreach($o_queue->get_entries_by_mac(array($mac_address)) as $entry){
+-                        $entry['STATUS'] = strtoupper($entry['STATUS']);
+-                        if($entry['STATUS'] == "PROCESSING" &&
+-                                isset($events['QUEUED'][$entry['HEADERTAG']]) &&
+-                                in_array_strict($events['QUEUED'][$entry['HEADERTAG']],array("DaemonEvent_reinstall","DaemonEvent_update"))){
+-                            unset($mac[$key]);
+-
+-                            new log("security","systems/".get_class($this),"",array(),"Skip adding 'DaemonEvent::".$type."' for mac '".$mac_address."', there is already a job in progress.");
+-                            break;
+-                        }
+-                    }
+-                }
+-            }
+ 
+             // Prepare event to be added
+             if(count($mac) && isset($events['BY_CLASS'][$event]) && $this->si_active){
+@@ -520,12 +497,7 @@ class systemManagement extends management
+ 
+                 if($triggered){
+                     $this->dialogObject->set_type(TRIGGERED_EVENT);
+-                    $o_queue->append($this->dialogObject);
+-                    if($o_queue->is_error()){
+-                        msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                    }else{
+-                        $this->closeDialogs();
+-                    }
++                    $this->closeDialogs();
+                 }else{
+                     $this->dialogObject->set_type(SCHEDULED_EVENT);
+                 }
+@@ -548,13 +520,8 @@ class systemManagement extends management
+      */ 
+     function saveEventDialog()
+     {
+-        $o_queue = new gosaSupportDaemon();
+-        $o_queue->append($this->dialogObject);
+-        if($o_queue->is_error()){
+-            msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-        }else{
++
+             $this->closeDialogs();
+-        }
+     }
+ 
+ 
+diff --git a/admin/systems/class_termDNS.inc b/admin/systems/class_termDNS.inc
+index 8a5f42237..4d201ab9c 100644
+--- a/systems/admin/systems/class_termDNS.inc
++++ b/systems/admin/systems/class_termDNS.inc
+@@ -317,17 +317,6 @@ class termDNS extends plugin
+                     if(isset($res['ip']) && tests::is_ip($res['ip'])) $this->ipHostNumber= $res['ip'];
+                     if(isset($res['mac']) && tests::is_mac($res['mac'])) $this->macAddress= $res['mac'];
+                 }
+-            }elseif ($this->config->get_cfg_value("core","gosaSupportURI") != ""){
+-
+-                $d= new gosaSupportDaemon(TRUE, 0.5);
+-                $res= $d->_send("<xml><header>gosa_network_completition</header>".
+-                        "<source>GOSA</source><target>GOSA</target><hostname>".$this->cn."</hostname></xml>", TRUE);
+-                if (isset($res['XML']['IP']) && $this->acl_is_writeable("ipHostNumber")){
+-                    $this->ipHostNumber= $res['XML']['IP'];
+-                }
+-                if (isset($res['XML']['MAC']) && $this->acl_is_writeable("macAddress")){
+-                    $this->macAddress= $res['XML']['MAC'];
+-                }
+             }
+         }
+ 
diff --git a/debian/patches/0010_mcrypt2openssl_goto-no-gosasi.patch b/debian/patches/0010_mcrypt2openssl_goto-no-gosasi.patch
new file mode 100644
index 0000000..8ee3a8f
--- /dev/null
+++ b/debian/patches/0010_mcrypt2openssl_goto-no-gosasi.patch
@@ -0,0 +1,717 @@
+From e7f4515574e7f76612470b0a398252db81dd1501 Mon Sep 17 00:00:00 2001
+From: bzapiec <benjamin.zapiec at gonicus.de>
+Date: Wed, 28 Feb 2018 16:35:05 +0100
+Subject: [PATCH] re-enable goto plugin without gosa-si dependencies
+
+---
+ addons/goto/class_filterGotoEvents.inc          |  7 +-
+ addons/goto/class_gotoLogView.inc               | 40 +---------
+ addons/goto/class_gotomasses.inc                | 59 ++-------------
+ admin/ogroups/goto/class_termgroup.inc          |  4 -
+ admin/systems/goto/class_terminalGeneric.inc    | 23 +-----
+ admin/systems/goto/class_terminalInfo.inc       | 98 +------------------------
+ admin/systems/goto/class_terminalService.inc    |  8 +-
+ admin/systems/goto/class_workstationGeneric.inc | 70 ++++--------------
+ admin/systems/goto/class_workstationService.inc | 45 +-----------
+ admin/systems/goto/class_workstationStartup.inc | 47 ++----------
+ 10 files changed, 38 insertions(+), 363 deletions(-)
+
+--- a/goto/addons/goto/class_filterGotoEvents.inc
++++ b/goto/addons/goto/class_filterGotoEvents.inc
+@@ -4,7 +4,7 @@
+     {
+         global $config;
+ 
+-        $o_queue = new gosaSupportDaemon(TRUE,5);
++        $o_queue = NULL;
+         $events  = DaemonEvent::get_event_types( SYSTEM_EVENT);
+ 
+         /* Get tags that will be used in queue searches */
+@@ -13,10 +13,7 @@
+             $event_tags[] = $evt['s_Queued_Action'];
+         }
+ 
+-        $entries = $o_queue->get_queued_entries($event_tags,0,9999999,"id");
+-        if ($o_queue->is_error()){
+-            msg_dialog::display(_("Error"), sprintf(_("Cannot load queue entries: %s"), "<br><br>".$o_queue->get_error()), ERROR_DIALOG);
+-        }
++        $entries = array();
+ 
+         /* Assign entries by id.
+          */
+--- a/goto/addons/goto/class_gotoLogView.inc
++++ b/goto/addons/goto/class_gotoLogView.inc
+@@ -8,7 +8,7 @@
+     var $parent;
+     var $config;
+ 
+-    var $o_queue;  
++    var $o_queue = NULL;  
+ 
+     var $selected_date;
+     var $selected_date_str;
+@@ -33,10 +33,6 @@
+     
+         $this->initTime = microtime(TRUE);
+ 
+-        /* Try to fetch logs for the given event (mac)
+-         */
+-        $this->o_queue = new gosaSupportDaemon();
+-
+         /* Load ldap object if given 
+            and use this macAddress.
+          */
+@@ -55,34 +51,6 @@
+             $this->standalone = FALSE;
+         }
+ 
+-        /* Query for log files
+-         */
+-        $res = $this->o_queue->get_log_info_for_mac($this->mac);
+-        if($this->o_queue->is_configured() && $this->o_queue->is_error()){
+-            msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG);
+-        }else{
+-            $tmp = array();
+-            foreach($res as $mac => $logs){
+-                if($mac != $this->mac) continue;
+-
+-                foreach($logs as $name => $log){
+-                    if(isset($log['FILES'])){
+-                        foreach($log['FILES'] as $fkey => $fval){
+-                            $tmp[] = array(
+-                                    'MAC'     => $mac,
+-                                    'DATE'    => $log['REAL_DATE'],
+-                                    'DATE_STR'=> $log['DATE_STR'],
+-                                    'FILE'    => $fval);
+-                        }
+-                    }
+-                }
+-            } 
+-
+-            /* Check if there is at least one log file 
+-             */
+-            $this->logs = $tmp;
+-        }
+-
+         // Create the filter list
+         $this->logSelector= new sortableListing($this->logs, $this->convertFilterList($this->logs));
+         $this->logSelector->setDeleteable(false);
+@@ -152,11 +120,7 @@
+ 
+     function get_log($mac,$date,$file)
+     {
+-        $res = $this->o_queue->get_log_file($mac,$date,$file);
+-        if($this->o_queue->is_configured() && $this->o_queue->is_error()){
+-            msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG);
+-        }
+-        $res = nl2br(htmlentities($res));
++        $res = nl2br(htmlentities(""));
+         return($res);
+     }
+ 
+--- a/goto/addons/goto/class_gotomasses.inc
++++ b/goto/addons/goto/class_gotomasses.inc
+@@ -39,11 +39,12 @@
+     var $acl_base;
+     var $acl_category;
+ 
++    var $o_queue = NULL;
++
+     function __construct(&$config, $ui)
+     {
+         /* Include config object */
+         $this->config= &$config;
+-        $this->o_queue = new gosaSupportDaemon(TRUE,5);
+         $this->events  = DaemonEvent::get_event_types( SYSTEM_EVENT);
+         $this->acl_base = $config->current['BASE'];
+         $this->acl_category = "gotomasses/";
+@@ -275,23 +276,6 @@
+     {
+         if($this->acl_is_removeable("")){
+             timezone::get_default_timezone();
+-            foreach($this->ids_to_remove as $id){
+-                $entry = $this->o_queue->get_entries_by_id(array($id));
+-                if(isset($entry['ANSWER1'])){
+-                    $entry = $entry['ANSWER1'];
+-                    if( $entry['STATUS'] == "waiting" && 
+-                            $entry['HEADERTAG'] == "trigger_action_reinstall"){
+-                        $evt = new DaemonEvent_reinstall($this->config,$entry);
+-                        if($evt->get_timestamp(FALSE)  < time()){
+-                            $r_evt = new DaemonEvent_localboot($this->config);
+-                            $r_evt->add_targets(array($entry['MACADDRESS']));
+-                            $r_evt->set_type(TRIGGERED_EVENT);
+-                            $this->o_queue->append($r_evt);
+-                        }
+-                    }
+-                }
+-            }
+-            $this->o_queue->remove_entries($this->ids_to_remove);
+             $this->save();
+         }
+     }
+@@ -322,10 +306,6 @@
+             $tmp->add_targets($update_ids);
+             $tmp->set_type(TRIGGERED_EVENT);
+             $this->recently_removed = $update_ids;
+-            if(!$this->o_queue->append($tmp)){
+-                msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entry: %s"),$id) , ERROR_DIALOG);
+-                return(FALSE);
+-            }
+         }else{
+             msg_dialog::display(_("Error"),
+                     sprintf(_("Required class '%s' cannot be found: job not aborted!"),
+@@ -379,11 +359,7 @@
+     {
+         if(is_object($this->dialogObject)){
+             $this->dialogObject->save_object();
+-            if(!$this->o_queue->append($this->dialogObject)){
+-                msg_dialog::display(_("Service infrastructure"),msgPool::siError($this->o_queue->get_error()),ERROR_DIALOG);
+-            }else{
+-                $this->current = -1;
+-            } 
++            $this->current = -1;
+         }
+         $this->closeDialogs();
+     }
+@@ -425,9 +401,9 @@
+         }
+ 
+         if($type == "up" && $next != 0){
+-            return($this->o_queue->update_entries(array($id),array("timestamp" => $next)));
++            return TRUE;
+         }elseif($type == "down" && $last != 0){
+-            return($this->o_queue->update_entries(array($id),array("timestamp" => $last)));
++            return TRUE;
+         }
+     }
+ 
+@@ -473,14 +449,6 @@
+             }
+         }
+ 
+-        /* Tell the daemon that we have entries to update.
+-         */
+-        if(count($update_ids)){
+-            if(!$this->o_queue->update_entries($update_ids,$data)){
+-                msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entry: %s"),$id) , ERROR_DIALOG);
+-                return(FALSE);
+-            }
+-        }
+         return(TRUE);
+     }
+ 
+@@ -508,14 +476,6 @@
+             }
+         }
+ 
+-        /* Tell the daemon that we want to update some entries
+-         */
+-        if(count($update_ids)){
+-            if(!$this->o_queue->update_entries($update_ids,$data)){
+-                msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entries.")) , ERROR_DIALOG);
+-                return(FALSE);
+-            }
+-        }
+         return(TRUE);
+     }
+ 
+@@ -544,14 +504,7 @@
+             }
+         }
+ 
+-        /* Tell the daemon that we want to update some entries
+-         */
+-        if(count($update_ids)){
+-            if(!$this->o_queue->update_entries($update_ids,$data)){
+-                msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entry: %s"),$id) , ERROR_DIALOG);
+-                return(FALSE);
+-            }
+-        }
++
+         return(TRUE);
+     }
+ 
+--- a/goto/admin/ogroups/goto/class_termgroup.inc
++++ b/goto/admin/ogroups/goto/class_termgroup.inc
+@@ -199,10 +199,6 @@
+                     $tmp = new $evt['CLASS_NAME']($this->config);
+                     $tmp->add_targets($macaddresses);
+                     $tmp->set_type(TRIGGERED_EVENT);
+-                    $o_queue = new gosaSupportDaemon();
+-                    if(!$o_queue->append($tmp)){
+-                        msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                    }
+                 }
+             } else {
+                 msg_dialog::display(_("Event error"),
+--- a/goto/admin/systems/goto/class_terminalGeneric.inc
++++ b/goto/admin/systems/goto/class_terminalGeneric.inc
+@@ -191,10 +191,6 @@
+                     $tmp = new $evt['CLASS_NAME']($this->config);
+                     $tmp->add_targets(array($this->netConfigDNS->macAddress));
+                     $tmp->set_type(TRIGGERED_EVENT);
+-                    $o_queue = new gosaSupportDaemon();
+-                    if(!$o_queue->append($tmp)){
+-                        msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                    }
+                 }
+             }else{
+                 msg_dialog::display(_("Event error"),
+@@ -238,11 +234,7 @@
+         $smarty->assign("inheritTimeServer",$this->inheritTimeServer);
+ 
+         /* Check if terminal is online */
+-        if (gosaSupportDaemon::ping($this->netConfigDNS->macAddress)){
+-            $smarty->assign("actions", set_post(array("halt" => _("Switch off"),"reboot" => _("Reboot"))));
+-        } else {
+-            $smarty->assign("actions", set_post(array("wake" => _("Wake up"))));
+-        }
++        $smarty->assign("actions", set_post(array("wake" => _("Wake up"))));
+ 
+         /* Arrays */
+         $smarty->assign("modes", set_post($this->modes));
+@@ -284,8 +276,7 @@
+         $smarty->assign("ntpservers",     set_post($tmp));
+         $smarty->assign("fai_activated",$this->fai_activated);
+ 
+-        $si_url = $this->config->get_cfg_value("core","gosaSupportURI");
+-        $smarty->assign("si_activated",!empty($si_url));
++        $smarty->assign("si_activated",FALSE);
+ 
+         /* Variables */
+         foreach(array("gotoMode", "gotoTerminalPath", "gotoSwapServer","gotoSyslogServer", "gotoNtpServer") as $val){
+@@ -348,12 +339,6 @@
+                 update_accessTo($this->cn,"");
+             }
+ 
+-            /* Clean queue form entries with this mac 
+-             */
+-            if(class_available("gosaSupportDaemon") && tests::is_mac($this->netConfigDNS->orig_macAddress)){
+-                $q = new gosaSupportDaemon();
+-                $q->clean_queue_from_mac($this->netConfigDNS->orig_macAddress);
+-            }
+         }
+     }
+ 
+@@ -611,15 +596,11 @@
+          */
+         if ($activate && class_available("DaemonEvent")){
+             $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT);
+-            $o_queue = new gosaSupportDaemon();
+             if(isset($events['TRIGGERED']['DaemonEvent_installation_activation'])){
+                 $evt = $events['TRIGGERED']['DaemonEvent_installation_activation'];
+                 $tmp = new $evt['CLASS_NAME']($this->config);
+                 $tmp->set_type(TRIGGERED_EVENT);
+                 $tmp->add_targets(array($this->netConfigDNS->macAddress));
+-                if(!$o_queue->append($tmp)){
+-                    msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                }
+             }
+         }
+     }
+--- a/goto/admin/systems/goto/class_terminalInfo.inc
++++ b/goto/admin/systems/goto/class_terminalInfo.inc
+@@ -99,101 +99,9 @@
+                 $smarty->assign("mem", progressbar(0,100,15,true));
+                 $smarty->assign("swap", progressbar(0,100,15,true));
+ 
+-                /* Check if terminal is online */
+-                if (gosaSupportDaemon::ping($this->macAddress)){
+-                    $smarty->assign("status", _("on-line"));
+-                    $smarty->assign("active", "true");
+-
+-                    /* Fill data if we have snmp */
+-                    $host= $this->cn;
+-
+-                    /* Use 'goto' as snmp community or the configured value from the config */
+-                    $community= 'goto';
+-                    $str= $this->config->get_cfg_value("terminfo", "snmpCommunity");
+-                    if(!empty($str)){
+-                        $community = $str;
+-                    }
+-
+-                    /* Get memory informations */
+-                    if(!is_callable("snmpget")){
+-                        $MemFree = false;
+-                    }else{
+-                        $MemFree= @snmpget($host, $community, "UCD-SNMP-MIB::memory.memAvailReal.0");
+-                    }
+-                    if ($MemFree != FALSE){
+-                        $MemFree= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $MemFree);
+-                        $MemTotal= @snmpget($host, $community, "UCD-SNMP-MIB::memory.memTotalReal.0");
+-                        $MemTotal= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $MemTotal);
+-                        if ($MemTotal != 0){
+-                            $smarty->assign("mem",progressbar( (int)(($MemTotal - $MemFree)*100/$MemTotal),100,15,true));
+-                            ;
+-                        }
+-                        $SwapFree= @snmpget($host, $community, "UCD-SNMP-MIB::memory.memAvailSwap.0");
+-                        $SwapFree= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $SwapFree);
+-                        $SwapTotal= @snmpget($host, $community, "UCD-SNMP-MIB::memory.memTotalSwap.0");
+-                        $SwapTotal= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $SwapTotal);
+-                        if ($SwapTotal != 0){
+-#$smarty->assign("swap", (int)(($SwapTotal - $SwapFree)*100/$SwapTotal));
+-                            $smarty->assign("swap", progressbar(0,100,15,true));
+-                        }
+-
+-                        /* Get system uptime */
+-                        $sysup= @snmpget($host, $community, "SNMPv2-MIB::sysUpTime.0");
+-                        $smarty->assign("uptime", preg_replace('/^.* ([0-9:]+)\..*$/', '\\1', $sysup));
+-
+-                        /* Get system load */
+-                        $sysload= @snmpget($host, $community, "UCD-SNMP-MIB::laLoad.2");
+-                        $sysload= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $sysload);
+-
+-                        $smarty->assign("load", progressbar($sysload*100,100,15,true));
+-
+-                        /* Get status for key processes */
+-                        $processes= @snmpwalk($host, $community, "UCD-SNMP-MIB::prNames");
+-                        $check4= array("sshd", "cupsd", "artsd", "X", "saned");
+-                        foreach ($check4 as $pname){
+-                            $eflag= -1;
+-                            foreach ($processes as $key => $val){
+-                                $process= preg_replace('/^.*[:=] (.*)$/', '\\1', $val);
+-                                if ($process == $pname){
+-                                    $index= preg_replace('/^.*\.([0-9]+) [:=] .*$/', '\\1', $val);
+-                                    $res= @snmpget($host, $community, "UCD-SNMP-MIB::prErrorFlag.$index");
+-                                    $eflag= preg_replace('/^.*[:=] /', '', $res);
+-                                    break;
+-                                }
+-                            }
+-                            switch ($eflag){
+-                                case 0:
+-                                    $smarty->assign("$pname", "<img alt=\""._("running")."\" src=\"images/true.png\">");
+-                                    break;
+-                                case 1:
+-                                    $smarty->assign("$pname", "<img alt=\""._("not running")."\" src=\"images/false.png\">");
+-                                    break;
+-                                default:
+-                                    $smarty->assign("$pname", _("not defined"));
+-                            }
+-                        }
+-                    } else {
+-                        foreach(array("uptime", "sshd", "X", "saned", "artsd", "cupsd") as $val){
+-                            $smarty->assign("$val", "<i>"._("unknown status")."</i>");
+-                        }
+-                    }
+-                    /* Check for mounted partitions (show max 8 partitions) */
+-                    $partitions= "";
+-                    for ($n= 1; $n<9; $n++){
+-                        $device= @snmpget($host, $community, "UCD-SNMP-MIB::dskDevice.$n");
+-                        if ($device == ""){
+-                            break;
+-                        }
+-                        $device= preg_replace('/^STRING: */', '', $device);
+-                        $usage= @snmpget($host, $community, "UCD-SNMP-MIB::dskPercent.$n");
+-                        $usage= preg_replace('/^INTEGER: */', '', $usage);
+-                        $partitions.= "<tr><td><b>$device</b></td><td>".progressbar($usage,100,16,true)."</td></tr>\n";
+-                    }
+-                    $smarty->assign("partitions", $partitions);
+-                } else {
+-                    $smarty->assign("status", _("off-line"));
+-                    $smarty->assign("active", "false");
+-                }
++                /* Check if terminal is online - due to lack of the daemon consider offline */
++                $smarty->assign("status", _("off-line"));
++                $smarty->assign("active", "false");
+ 
+                 /* Set floppy and cdrom status */
+                 foreach(array("Floppy", "Cdrom") as $val){
+--- a/goto/admin/systems/goto/class_terminalService.inc
++++ b/goto/admin/systems/goto/class_terminalService.inc
+@@ -597,7 +597,7 @@
+         }
+         $this->handle_post_events("modify");
+ 
+-        /* Send goto reload event to gosaSupportDaemon */
++        /* Send goto reload event */
+         if(count($this->attrs)){
+             $this->send_goto_reload();
+         }
+@@ -637,7 +637,6 @@
+     {
+         if(count($this->attrs) && class_available("DaemonEvent")){
+             $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT);
+-            $o_queue = new gosaSupportDaemon();
+             if(isset($events['TRIGGERED']['DaemonEvent_goto_reload'])){
+                 $evt = $events['TRIGGERED']['DaemonEvent_goto_reload'];
+                 $macs = array();
+@@ -670,12 +669,9 @@
+                 if(count($macs)){
+                     $tmp = new $evt['CLASS_NAME']($this->config);
+                     $tmp->set_type(TRIGGERED_EVENT);
+-                    $target = $o_queue->get_host().":".$o_queue->get_port();
++                    $target = ":"."0";
+                     $tmp->add_targets(array($target));
+                     $tmp->set_macs($macs);
+-                    if(!$o_queue->append($tmp,TRUE)){
+-                        msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                    }
+                 }
+             }
+         }
+--- a/goto/admin/systems/goto/class_workstationGeneric.inc
++++ b/goto/admin/systems/goto/class_workstationGeneric.inc
+@@ -82,19 +82,6 @@
+         $this->netConfigDNS = new termDNS($this->config,$this,$this->objectclasses);
+         $this->netConfigDNS->MACisMust =TRUE;
+ 
+-        /* Check if this host is currently in installation process*/
+-        if(class_available("gosaSupportDaemon") && class_available("DaemonEvent")){
+-            $o = new gosaSupportDaemon();
+-            $e_types = DaemonEvent::get_event_types(USER_EVENT | SYSTEM_EVENT | HIDDEN_EVENT);
+-            $evts = $o->get_entries_by_mac(array($this->netConfigDNS->macAddress));
+-            foreach($evts as $evt){
+-                if(isset($e_types['QUEUED'][$evt['HEADERTAG']]) && $evt['STATUS'] == "processing" &&
+-                        $e_types['QUEUED'][$evt['HEADERTAG']] == "DaemonEvent_reinstall"){
+-                    $this->currently_installing =TRUE;
+-                }
+-            }
+-        }
+-
+         /* Read arrays */
+         foreach (array("ghNetNic", "ghIdeDev", "ghScsiDev") as $val){
+             if (!isset($this->attrs[$val])){
+@@ -215,10 +202,6 @@
+                     $tmp = new $evt['CLASS_NAME']($this->config);
+                     $tmp->add_targets(array($this->netConfigDNS->macAddress));
+                     $tmp->set_type(TRIGGERED_EVENT);
+-                    $o_queue = new gosaSupportDaemon();
+-                    if(!$o_queue->append($tmp)){
+-                        msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                    }
+                 }
+             } else {
+                 msg_dialog::display(_("Event error"),
+@@ -269,40 +252,26 @@
+         }
+         $smarty->assign("gotoNtpServers", set_post($tmp));
+ 
+-        /* Check if workstation is online */
+-        if (gosaSupportDaemon::ping($this->netConfigDNS->macAddress)){
+-            $smarty->assign("actions", 
+-                    set_post(
+-                        array(
+-                            "halt" => _("Switch off"), 
+-                            "reboot" => _("Reboot"),
+-                            "update" => _("Software update"),
+-                            "reinstall" => _("Reinstall"),
+-                            "rescan" => _("Rescan hardware"),
+-                            "localboot" => _("Force local boot"),
+-                            )
+-                        )
+-                    );
+-        } else {
+-            $smarty->assign("actions", 
+-                    set_post(
+-                        array(
+-                            "wakeup" => _("Wake up"),
+-                            "reinstall" => _("Reinstall"),
+-                            "update" => _("Software update"),
+-                            "localboot" => _("Force local boot"),
+-                            )
+-                        )
+-                    );
+-        }
++        /* Check if workstation is online - actions won't to anything useful since the daemon isn't supported anymore */
++
++	$smarty->assign("actions", 
++			set_post(
++				array(
++					"wakeup" => _("Wake up"),
++					"reinstall" => _("Reinstall"),
++					"update" => _("Software update"),
++					"localboot" => _("Force local boot"),
++				     )
++				)
++		       );
++
+         /* Arrays */
+         $smarty->assign("modes",        set_post($this->modes));
+         $smarty->assign("nfsservers",   set_post($this->config->data['SERVERS']['NFS']));
+         $smarty->assign("syslogservers",set_post($this->gotoSyslogServers));
+         $smarty->assign("fai_activated",set_post($this->fai_activated));
+ 
+-        $si_url = $this->config->get_cfg_value("core","gosaSupportURI");
+-        $smarty->assign("si_activated",!empty($si_url));
++        $smarty->assign("si_activated",FALSE);
+ 
+         $ntpser = array();
+         foreach($this->gotoNtpServers as $server){
+@@ -372,12 +341,6 @@
+             update_accessTo($this->cn,"");
+         }
+ 
+-        /* Clean queue form entries with this mac 
+-         */
+-        if(class_available("gosaSupportDaemon") && tests::is_mac($this->netConfigDNS->orig_macAddress)){
+-            $q = new gosaSupportDaemon();
+-            $q->clean_queue_from_mac($this->netConfigDNS->orig_macAddress);
+-        }
+ 
+         if(isset($_POST["inheritAll"])){
+             $this->set_everything_to_inherited();
+@@ -634,15 +597,12 @@
+             /* Send installation activation
+              */
+             $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT);
+-            $o_queue = new gosaSupportDaemon();
+             if(isset($events['TRIGGERED']['DaemonEvent_installation_activation'])){
+                 $evt = $events['TRIGGERED']['DaemonEvent_installation_activation'];
+                 $tmp = new $evt['CLASS_NAME']($this->config);
+                 $tmp->set_type(TRIGGERED_EVENT);
+                 $tmp->add_targets(array($this->netConfigDNS->macAddress));
+-                if(!$o_queue->append($tmp)){
+-                    msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                }
++            
+             }
+         }
+     }
+--- a/goto/admin/systems/goto/class_workstationService.inc
++++ b/goto/admin/systems/goto/class_workstationService.inc
+@@ -459,7 +459,7 @@
+         }
+         $this->handle_post_events("modify");
+ 
+-        /* Send goto reload event to gosaSupportDaemon */
++        /* Daemon isn't available anymore */
+         if(count($this->attrs)){
+             $this->send_goto_reload(); 
+         }
+@@ -530,47 +530,6 @@
+     {
+         if(count($this->attrs) && class_available("DaemonEvent")){
+             $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT);
+-            $o_queue = new gosaSupportDaemon();
+-            if(isset($events['TRIGGERED']['DaemonEvent_goto_reload'])){
+-                $evt = $events['TRIGGERED']['DaemonEvent_goto_reload'];
+-                $macs = array();
+-
+-                /* Get list of macAddresses 
+-                 */
+-                if(isset($this->parent->by_object['ogroup'])){
+-
+-                    /* If we are an object group, add all member macs 
+-                     */
+-                    $p = $this->parent->by_object['ogroup'];
+-                    foreach($p->memberList as $dn => $obj){
+-                        if(preg_match("/".preg_quote(get_ou("ArpNewDevice", "systemIncomingRDN"), '/')."/",$dn)) continue;
+-                        if(isset($p->objcache[$dn]['macAddress']) && !empty($p->objcache[$dn]['macAddress'])){
+-                            $macs[] = $p->objcache[$dn]['macAddress'];
+-                        }
+-                    }
+-                }elseif(isset($this->parent->by_object['workgeneric']->netConfigDNS->macAddress)){
+-
+-                    /* We are a workstation. Add current mac.
+-                     */
+-                    $mac = $this->parent->by_object['workgeneric']->netConfigDNS->macAddress;
+-                    if(!empty($mac) && !preg_match("/".preg_quote(get_ou("ArpNewDevice", "systemIncomingRDN"), '/')."/",$this->orig_dn)){
+-                        $macs[] = $mac;
+-                    }          
+-                }
+-
+-                /* Trigger event for all member objects 
+-                 */
+-                if(count($macs)){
+-                    $tmp = new $evt['CLASS_NAME']($this->config);
+-                    $tmp->set_type(TRIGGERED_EVENT);
+-                    $target = $o_queue->get_host().":".$o_queue->get_port();
+-                    $tmp->add_targets(array($target));
+-                    $tmp->set_macs($macs);
+-                    if(!$o_queue->append($tmp,TRUE)){
+-                        msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                    }
+-                }
+-            }
+         }
+     }
+ 
+--- a/goto/admin/systems/goto/class_workstationStartup.inc
++++ b/goto/admin/systems/goto/class_workstationStartup.inc
+@@ -802,7 +802,6 @@
+         /* Check if LDAP server has changed */
+         if ($this->si_active && (isset($this->attrs['gotoLdapServer']) && class_available("DaemonEvent") || $this->gotoLdap_inherit)){
+             $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT);
+-            $o_queue = new gosaSupportDaemon();
+             if(isset($events['TRIGGERED']['DaemonEvent_reload_ldap_config'])){
+                 $evt = $events['TRIGGERED']['DaemonEvent_reload_ldap_config'];
+                 $macs = array();
+@@ -843,9 +842,6 @@
+                     $tmp = new $evt['CLASS_NAME']($this->config);
+                     $tmp->set_type(TRIGGERED_EVENT);
+                     $tmp->add_targets(array($mac));
+-                    if(!$o_queue->append($tmp)){
+-                        msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                    }
+                 }
+             }
+         }
+@@ -968,24 +964,8 @@
+         /* Get the list of available servers and their releases. 
+          */
+         if($force || !isset($this->cache['SERVERS'])){
+-
+-            $o_queue = new gosaSupportDaemon();
+-            $tmp = $o_queue->FAI_get_server();
+-            if($o_queue->is_error()){
+-                msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                $this->si_fai_action_failed = TRUE;
+-                $this->cache = array();
+-                return;
+-            }else{
+-
+-                foreach($tmp as $entry){
+-                    $rel = $entry['FAI_RELEASE'];
+-                    $this->cache['SERVERS']['auto'][$rel] = $rel;
+-                    $this->cache['SERVERS'][$entry['SERVER']][$rel] = $rel;
+-                    uksort($this->cache['SERVERS']['auto'], 'strnatcasecmp');
+-                    uksort($this->cache['SERVERS'][$entry['SERVER']], 'strnatcasecmp');
+-                }
+-            }
++            $this->si_fai_action_failed = TRUE;
++            $this->cache = array();
+         }
+ 
+         /* Ensure that our selection is valid, else we get several PHP warnings 
+@@ -1028,21 +1008,10 @@
+ 
+             /* Get the list of available servers and their releases.
+              */
+-            $o_queue = new gosaSupportDaemon();
+-            $tmp = $o_queue->FAI_get_classes($release);
+-
+             $this->cache['CLASSES'][$release] = array();
+-            if($o_queue->is_error()){
+-                msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
+-                $this->si_fai_action_failed = TRUE;
+-                $this->cache=array();
+-                return;
+-            }else{
+-                foreach($tmp as $entry){
+-                    $class = $entry['CLASS'];
+-                    $this->cache['CLASSES'][$release][$class][] = $this->analyse_fai_object($entry); 
+-                }
+-            }
++            $this->si_fai_action_failed = TRUE;
++            $this->cache=array();
++            return;
+ 
+             /* Add object caught from external hook
+              */
+@@ -1089,16 +1058,10 @@
+         if(!isset($this->cache['KERNELS'])) $this->cache['KERNELS'] = array();
+ 
+         if($force || !isset($this->cache['KERNELS'][$release])){
+-            $o_queue = new gosaSupportDaemon();
+-            $tmp = $o_queue->FAI_get_kernels($release);
+             $this->cache['KERNELS'][$release] = array();
+             foreach($this->gotoBootKernels as $name => $default){
+                 $this->cache['KERNELS'][$release][$name] = $default;
+             }
+-            foreach($tmp as $kernel){
+-                if(empty($kernel)) continue;
+-                $this->cache['KERNELS'][$release][$kernel]=$kernel;
+-            }
+             ksort($this->cache['KERNELS'][$release]);
+         }
+     }
diff --git a/debian/patches/0011_mcrypt2openssl_mail-no-gosasi.patch b/debian/patches/0011_mcrypt2openssl_mail-no-gosasi.patch
new file mode 100644
index 0000000..2f7e574
--- /dev/null
+++ b/debian/patches/0011_mcrypt2openssl_mail-no-gosasi.patch
@@ -0,0 +1,805 @@
+From e6d6e1bfe630c1e0ac0842e922cd235fa315ca2e Mon Sep 17 00:00:00 2001
+From: bzapiec <benjamin.zapiec at gonicus.de>
+Date: Mon, 26 Feb 2018 14:14:35 +0100
+Subject: [PATCH] remove dependencies to gosa-si and the client implementation
+
+---
+ addons/mailqueue/class_mailqueue.inc    | 376 --------------------------------
+ addons/mailqueue/class_si_mailqueue.inc | 146 -------------
+ addons/mailqueue/contents.tpl           | 167 --------------
+ addons/mailqueue/header.tpl             |   9 -
+ addons/mailqueue/main.inc               |  58 -----
+ 5 files changed, 756 deletions(-)
+ delete mode 100644 addons/mailqueue/class_mailqueue.inc
+ delete mode 100644 addons/mailqueue/class_si_mailqueue.inc
+ delete mode 100644 addons/mailqueue/contents.tpl
+ delete mode 100644 addons/mailqueue/header.tpl
+ delete mode 100644 addons/mailqueue/main.inc
+
+diff --git a/addons/mailqueue/class_mailqueue.inc b/addons/mailqueue/class_mailqueue.inc
+deleted file mode 100644
+index 429aca9e6..000000000
+--- a/mail/addons/mailqueue/class_mailqueue.inc
++++ /dev/null
+@@ -1,376 +0,0 @@
+-<?php
+-
+-class mailqueue extends plugin
+-{
+-  /* Definitions */
+-  var $plHeadline     = "Mail queue";
+-  var $plDescription  = "View and control the mailservers mail processing queue";
+-  var $plIcon         = "plugins/mail/images/mailqueue.png";
+-
+-  /* attribute list for save action */
+-  var $attributes     = array();
+-  var $objectclasses  = array();
+-
+-  var $Server         = "all";
+-  var $ServerList     = array(); // The list of all available servers.
+-  var $Search         = "*";
+-  var $Time           = 0;
+-  var $Page           = 0;
+-  var $Stat           = "all";
+-  var $OrderBy        = "Arrival";
+-  var $SortType       = "up";
+-  var $disp_header    = false;
+-  var $range          = 20;   
+-
+-  /* Logging detection */
+-  var $view_logged    = FALSE;
+-
+-  function __construct(&$config, $dn= NULL)
+-  {
+-    $this->config   = &$config;
+-    $this->si_queue = new si_mailqueue($this->config);
+-    $this->getServer();
+-
+-    // Create statistic table entry
+-    $this->initTime = microtime(TRUE);
+-    stats::log('plugin', $class = get_class($this), $category = array($this->acl_category),  $action = 'open',
+-            $amount = 1, $duration = (microtime(TRUE) - $this->initTime));
+-
+-  }
+-
+-
+-  function execute()
+-  {
+-    /* Call parent execute */
+-    plugin::execute();
+-
+-    /* Log view */
+-    if(!$this->view_logged){
+-      $this->view_logged = TRUE;
+-      new log("view","mailqueue/".get_class($this),$this->dn);
+-    }
+-
+-    $smarty= get_smarty();
+-    $tmp = $this->plInfo();
+-    foreach($tmp['plProvidedAcls'] as $name => $desc){
+-      $smarty->assign($name."ACL",$this->getacl($name));
+-      $smarty->assign($name."_W",$this->acl_is_writeable($name));
+-    }
+-    $error =false;
+-
+-    /******************
+-      Handle options 
+-     ******************/
+-
+-    $action = $server = $entry = "";
+-    $types = array( 
+-        "all_del"     => "del",
+-        "all_hold"    => "hold",
+-        "all_unhold"  => "unhold",
+-        "all_requeue" => "requeue");
+-    foreach($_POST as $name => $value){
+-      foreach($types as $type => $target){
+-        if(preg_match("/^".$type."/",$name) && $this->acl_is_writeable($target."All")){
+-          $entry  = $this->list_get_selected_items();
+-          $action = $target;
+-          break;
+-        }
+-      }
+-      if(!empty($action)) break;
+-    }
+-
+-    $types = array("del","hold","unhold","header","requeue");
+-    foreach($_POST as $name => $value){
+-      foreach($types as $type){
+-        if(preg_match("/^".$type."__/",$name) && $this->acl_is_writeable($type)){
+-          $action = $type;
+-          $server = preg_replace("/^".$type."__[^_]*__([^_]*)$/","\\1",$name); 
+-          $entry[$server][] = preg_replace("/^".$type."__([^_]*)__.*/","\\1",$name); 
+-          break;
+-        }
+-      }
+-      if(!empty($action)) break;
+-    }
+-
+-    /* Send action for given mail id */
+-    if(in_array_strict($action,array("del","hold","unhold","requeue"))){
+-      foreach($entry as $server => $entries){
+-        $this->si_queue->send_queue_action($entries,$server,$action);
+-      }
+-    }
+-
+-
+-    /******************
+-      Display mail header
+-     ******************/
+-
+-    if($action == "header"){
+-      $server = key($entry);
+-      $entry = $entry[$server];
+-
+-      /* Create table which displays the header informations */
+-      $data = $this->si_queue->header($entry,$server);
+-      $data = preg_replace("/([^\s]*:)/","\n\\1",$data);
+-      $this->disp_header = $data;
+-      if($this->si_queue->is_error()){
+-        msg_dialog::display(_("Error"),msgPool::siError($this->si_queue->get_error()),ERROR_DIALOG);
+-        $this->disp_header = FALSE;
+-      }
+-    }
+-
+-    /* Back is posted from the header display page */
+-    if(isset($_POST['back'])){
+-      $this->disp_header = false;
+-    }
+-
+-    /* If there is a header in disp_header, then display it */
+-    if($this->disp_header){
+-      $smarty->assign("header",$this->disp_header);
+-      return ($smarty->fetch (get_template_path('header.tpl', TRUE)));
+-    }
+-
+-
+-    /******************
+-      Query mailqueues 
+-     ******************/
+-
+-    $entries = array();
+-    if($this->acl_is_readable("query")){
+-      $within_minutes = -1;
+-      if($this->Time != "nolimit"){
+-        $within_minutes = 60*60*$this->Time;
+-      }
+-
+-      if($this->Server == "all"){
+-        $entries = array();
+-        foreach($this->ServerList as $mac => $name){
+-          if(!tests::is_mac($mac)) continue;
+-          $entries = array_merge($entries,$this->si_queue->query_mailqueue($mac,$this->Search,$within_minutes));
+-          if($this->si_queue->is_error()){
+-            msg_dialog::display(_("Error"),msgPool::siError($this->si_queue->get_error()),ERROR_DIALOG);
+-          }
+-        }
+-      }else{
+-        $entries = $this->si_queue->query_mailqueue($this->Server,$this->Search,$within_minutes);
+-        if($this->si_queue->is_error()){
+-          msg_dialog::display(_("Error"),msgPool::siError($this->si_queue->get_error()),ERROR_DIALOG);
+-        }
+-      }
+-    }
+-
+-    /* Sort entries 
+-     */ 
+-    $data = array();
+-    foreach($entries as $entry){
+-      $data[uniqid($entry[$this->OrderBy])] = $entry;
+-    }
+-
+-    /* Sort entries by given direction 
+-     */
+-    if($this->SortType == "down"){
+-      uksort($data, 'strnatcasecmp');
+-    }else{
+-      uksort($data, 'strnatcasecmp');
+-      $data = array_reverse($data);
+-    }
+-
+-    $count = count($data);
+-    $entries = array_slice($data,$this->Page,$this->range);
+-
+-    /* Add ServerName to results 
+-     */
+-    foreach($entries as $key => $data){
+-      $entries[$key]['ServerName'] = $this->ServerList[$data['Server']];
+-    }   
+- 
+-    /******************
+-      create html output 
+-     ******************/
+-
+-    $smarty->assign("query_allowed",$this->acl_is_readable("query"));
+-    $smarty->assign("all_ok"        , count($entries));
+-    $smarty->assign("entries"       , $entries);
+-    $smarty->assign("plug"          , "?plug=".$_GET['plug']);
+-
+-    $smarty->assign("r_stats"       , $this->getStats());
+-    $smarty->assign("stats"         , array_flip($this->getStats()));
+-
+-    $smarty->assign("stat"          , $this->Stat);
+-    $smarty->assign("p_server"      , set_post($this->Server));
+-    $smarty->assign("p_servers"     , set_post($this->ServerList));
+-    $smarty->assign("p_serverKeys"  , set_post(array_flip($this->ServerList)));
+-    $smarty->assign("p_time"        , $this->Time);
+-    $smarty->assign("p_times"       , $this->getTimes());
+-    $smarty->assign("p_timeKeys"    , array_flip($this->getTimes()));
+-    $smarty->assign("search_for"    , set_post($this->Search));
+-    $smarty->assign("range_selector", range_selector($count, $this->Page, $this->range,"EntriesPerPage")); 
+-    $smarty->assign("OrderBy"       , set_post($this->OrderBy));
+-
+-    /* Display sort arrow */
+-    if($this->SortType == "up"){
+-      $smarty->assign("SortType","<img src='images/lists/sort-up.png' alt='"._("up")."' border='0'>");
+-    }else{
+-      $smarty->assign("SortType","<img src='images/lists/sort-down.png' alt='"._("down")."' border='0'>");
+-    }
+-
+-    return ($smarty->fetch (get_template_path('contents.tpl', TRUE)));
+-  }
+-
+-
+-  /* return selectable server 
+-   */
+-  function getServer()
+-  {
+-    $ret= array("all"=>_("All"));
+-
+-    /* First of all, detect all servers that supports the mailqueue extension 
+-        -If this fails, the mailqueue(s) can't be queried.
+-     */
+-    $hosts          = $this->si_queue->get_hosts_with_module("mailqueue_com");
+-    $this->si_error = $this->si_queue->is_error();
+-    if(!count($hosts)){
+-      return(array());
+-    }    
+-
+-    /* Create search filter and try to resolv mac to hostname 
+-     */
+-    $filter = "";
+-    foreach($hosts as $mac){
+-      $filter .= "(macAddress=".$mac.")";
+-    }
+-    $filter = "(&(objectClass=GOhard)(|".$filter."))";
+-    $res = get_list($filter,"no_acls",$this->config->current['BASE'],
+-        array("cn","macAddress"),GL_SUBSEARCH | GL_NO_ACL_CHECK); 
+-
+-    /* Create result array 
+-     */
+-    foreach($hosts as $mac){
+-      $found = FALSE;
+-      foreach($res as $entry){
+-        if(preg_match("/^".preg_quote($mac, '/')."$/i",$entry['macAddress'][0])){
+-          $ret[$mac] = $entry['cn'][0];
+-          $found = TRUE;
+-          break;
+-        }
+-      }
+-      if(!$found){
+-        $ret[$mac] = $mac;
+-      }
+-    }
+-    $this->ServerList = $ret;
+-  }
+-
+-
+-  /* Return selectable times*/
+-  function getTimes()
+-  {
+-    $ret = array();
+-    $ret['nolimit']=_("no limit"); 
+-    foreach(array(1,2,4,8,12,24,36,48) as $i){
+-      if($i == 1){
+-        $ret[$i] = $i." "._("hour");
+-      }else{
+-        $ret[$i] = $i." "._("hours");
+-      }
+-    }
+-    return($ret);
+-  }
+-
+-
+-  /* Save post values*/
+-  function save_object($save_current= FALSE)
+-  {
+-    /* Update amount of entries displayed */
+-    if(isset($_POST['EntriesPerPage'])){
+-      $this->range = get_post('EntriesPerPage');
+-    }
+-
+-    if(isset($_POST['p_server']) && isset($this->ServerList[$_POST['p_server']])){
+-      $this->Server = get_post('p_server');
+-    }
+-
+-    if(isset($_POST['p_time'])){
+-      $this->Time = get_post('p_time');
+-    }
+-    if(isset($_POST['search_for'])){
+-      $this->Search = get_post('search_for');
+-    }
+-    if(isset($_POST['Stat'])){
+-      $this->Stat = get_post('Stat');
+-    }
+-    if((isset($_GET['start']))&&(is_numeric($_GET['start']))&&($_GET['start']>=0)){
+-      $this->Page = $_GET['start'];
+-    }
+-
+-    if((isset($_GET['sort']))&&(!empty($_GET['sort']))){
+-      $old = $this->OrderBy;
+-      $this->OrderBy = $_GET['sort'];
+-      if($this->OrderBy == $old)
+-      {
+-        if($this->SortType== "up"){
+-          $this->SortType = "down";
+-        }else{
+-          $this->SortType = "up";
+-        }
+-      }
+-    }
+-
+-  }
+-
+-  /* Return stats */
+-  function getStats()
+-  {
+-    return(array(
+-          "all"     =>_("All"),
+-          "hold"    =>_("Hold"),
+-          "unhold"  =>_("Release"),
+-          "active"  =>_("Active"),
+-          "nonactive"  =>_("Not active")
+-          ));
+-  }
+-
+-  /* Return plugin informations for acl handling
+-     #FIXME You can only read attributes within this report plugin */
+-  static function plInfo()
+-  {
+-    return (array(
+-        "plShortName"   => _("Mail queue"),
+-        "plDescription" => _("Mail queue add-on"),
+-        "plSelfModify"  => FALSE,
+-        "plDepends"     => array(),
+-        "plPriority"    => 1,
+-        "plSection"     => array("addon"),
+-        "plCategory"    => array("mailqueue" => array("description" => _("Mail queue add-on"))),
+-
+-        "plProvidedAcls" => array(
+-            "unholdAll"       => _("Release all messages"),
+-            "holdAll"         => _("Hold all messages"),
+-            "delAll"          => _("Delete all messages"),
+-            "requeueAll"      => _("Re-queue all messages"),
+-            "unhold"          => _("Release message"),
+-            "hold"            => _("Hold message"),
+-            "del"             => _("Delete message"),
+-            "requeue"         => _("Re-queue message"),
+-            "query"           => _("Gathering queue data"),
+-            "header"          => _("Get header information")
+-          )
+-        ));
+-  }
+-
+-  function list_get_selected_items()
+-  {
+-    $ids = array();
+-    foreach($_POST as $name => $value){
+-      if(preg_match("/^selected_*/",$name)){
+-        $server = preg_replace("/^selected_.*_/","",$name) ;
+-        $ids[$server][] = preg_replace("/^selected_([^_]*)_.*$/","\\1",$name);
+-      }
+-    }
+-    return($ids);
+-  }
+-
+-
+-
+-}
+-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+-?>
+diff --git a/addons/mailqueue/class_si_mailqueue.inc b/addons/mailqueue/class_si_mailqueue.inc
+deleted file mode 100644
+index ca4dd0c42..000000000
+--- a/mail/addons/mailqueue/class_si_mailqueue.inc
++++ /dev/null
+@@ -1,146 +0,0 @@
+-<?php
+-
+-/*! \brief  This is the opsi base class, it handles
+-  .          gosa daemon requests and prepares data for opsi plugins.
+- */
+-class si_mailqueue extends gosaSupportDaemon
+-{
+-  private $config = NULL;
+-  protected $use_alternative_xml_parse_method = TRUE;
+-
+-  /*! \brief    Create opsi object.
+-    @param
+-    @return
+-   */
+-  public function __construct($config)
+-  {
+-    $this->config = $config;
+-    gosaSupportDaemon::__construct($config);
+-    $this->target = "00:01:6c:9d:b9:fa";
+-  }
+-
+-    
+-  /*! \brief  Returns TRUE or FALSE, whether the plugin is enabled or disabled .
+-      @return Boolean  s.a.
+-   */
+-  public function enabled()
+-  {
+-    return(TRUE);
+-  }
+-
+-
+-  /*! \brief  Returns a list of all mail queue entries 
+-      @return Array   s.a.
+-   */
+-  public function query_mailqueue($server,$search_str,$time)
+-  {
+-    $attrs = array("Size","Recipient","Sender","Arrival","MailID","Hold","Active","Status","Server");
+-
+-    /* Prepare search filter 
+-     */
+-    $search_str = preg_replace("/\\\\\*/",".*",preg_quote($search_str, '/'));
+-
+-    /* Query mailqueue 
+-     */
+-    $ids = array();
+-    $res = $this->send_data("gosa_mailqueue_query",$server,array(),TRUE);
+-    $items = array(); 
+-    if(isset($res['XML'][0])){
+-      foreach($res['XML'][0] as $name => $entry){
+-
+-        if(preg_match("/^ANSWER[0-9]*$/",$name)){
+-          $attrs = array(
+-              "MSG_SIZE"      => "Size",
+-              "MSG_STATUS"    => "Status",
+-              "RECIPIENT"     => "Recipient",
+-              "SENDER"        => "Sender",
+-              "ARRIVAL_TIME"  => "Arrival",
+-              "MSG_ID"        => "MailID");  
+-          $val = array();
+-          foreach($attrs as $source => $dest){
+-            $val[$dest] = $entry[0][$source][0]['VALUE'];
+-          }
+-          $ids[] = $val['MailID'];
+-          $attrs = array(  
+-              "MSG_HOLD"   => "Hold",
+-              "MSG_ACTIVE" => "Active");
+-          foreach($attrs as $source => $dest){
+-            if(isset($entry[0][$source][0]['VALUE'])){
+-              $val[$dest] = $entry[0][$source][0]['VALUE'];
+-            }else{
+-              $val[$dest] = FALSE;
+-            }
+-          }
+-
+-          $val['Server'] = $server;
+-          $val['Arrival'] = strtotime($val['Arrival']);
+-
+-          /* Check arrival time.
+-           */
+-          if($time != -1 && !empty($val['Arrival'])){
+-            if( ! ($val['Arrival'] > (time() - $time))){
+-              continue;
+-            }
+-          }
+-
+-          /* Check if search string matches 
+-           */
+-          $found = FALSE;
+-          foreach($val as $name => $value){
+-            if(preg_match("/^".$search_str."$/",$value)){
+-              $found =TRUE;
+-              break;
+-            }
+-          }
+-          if($found){
+-            $items[] = $val;
+-          }
+-        }
+-      }
+-    }   
+-    return($items);
+-  }
+-
+-
+-  public function header($msg_id, $server)
+-  {
+-    $data = array();
+-    $data['msg_id'] = $msg_id;
+-    $res = $this->send_data("gosa_mailqueue_header",$server,$data,TRUE);
+-    if(isset($res['XML'][0]['MSG_HEADER'][0]['VALUE'])){
+-      return($res['XML'][0]['MSG_HEADER'][0]['VALUE']);
+-    }
+-    return("");
+-  }
+-
+- 
+-  /*! \brief  Returns a list of all mail queue entries 
+-      @return Array   s.a.
+-   */
+-  public function send_queue_action($msg_ids,$server, $action)
+-  {
+-    $data = array();
+-
+-    /* Check given msg_ids, must be array.
+-     */
+-    if(!is_array($msg_ids)){
+-      trigger_error("Invalid msg_id given. Array expected.");
+-      return(FALSE);
+-    }
+-
+-    /* Check triggered action 
+-     */
+-    $allowed_actions = array("hold","unhold","requeue","del");
+-    if(!in_array_strict($action,$allowed_actions)){
+-      trigger_error("Unknown queue action triggered '".$action."'. Request aborted.");  
+-      return(FALSE);
+-    }    
+-    
+-    $data['msg_id'] = $msg_ids;
+-
+-    $this->send_data("gosa_mailqueue_".$action,$server,$data,FALSE);
+-    // There is no answer for this requests 
+-  }
+-}
+-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+-?>
+diff --git a/addons/mailqueue/contents.tpl b/addons/mailqueue/contents.tpl
+deleted file mode 100644
+index 3bf90ed80..000000000
+--- a/mail/addons/mailqueue/contents.tpl
++++ /dev/null
+@@ -1,167 +0,0 @@
+-
+-<div id="mainlist">
+- <div class="mainlist-header">
+-  <p>{t}Mail queue{/t}
+-  </p>
+-  <div class="mainlist-nav">
+-   <table summary="{t}Filter{/t}" style="width: 100%;"      id="t_scrolltable" cellpadding="0" cellspacing="0">
+-    <tr>
+-     <td>{t}Search on{/t}
+-      <select size="1" name="p_server" title="{t}Select a server{/t}" onchange="mainform.submit()">
+-       {html_options values=$p_serverKeys output=$p_servers selected=$p_server}
+-      </select>
+-     </td>
+-     <td>{t}Search for{/t}
+-      <input type='text' name="search_for" size=25 maxlength=60        
+-        value="{$search_for}" title="{t}Enter user name to search for{/t}"        
+-        onChange="mainform.submit()">
+-     </td>
+-     <td>{t}within the last{/t} 
+-      <select size="1" name="p_time" onchange="mainform.submit()">
+-       {html_options values=$p_timeKeys output=$p_times selected=$p_time}
+-      </select>
+-     </td>
+-     <td>
+-      <button type='submit' name='search'>{t}Search{/t}</button>
+-     </td>
+-     <td>
+-      {if $delAll_W}
+-       <input name="all_del"  src="images/lists/trash.png"							
+-        value="{t}Remove all messages{/t}" type="image" 					
+-        title="{t}Remove all messages from selected servers queue{/t}">
+-      {/if}
+-      {if $holdAll_W}
+-       <input name="all_hold" src="plugins/mail/images/mailq_hold.png"					
+-        value="{t}Hold all messages{/t}" type="image"					
+-        title="{t}Hold all messages in selected servers queue{/t}">
+-      {/if}
+-      {if $unholdAll_W}
+-       <input name="all_unhold" src="plugins/mail/images/mailq_unhold.png"							
+-        value="{t}Release all messages{/t}" 	type="image"					
+-        title="{t}Release all messages in selected servers queue{/t}">
+-      {/if}
+-      {if $requeueAll_W}
+-       <input name="all_requeue" src="images/lists/reload.png"							
+-        value="{t}Re-queue all messages{/t}" type="image"					
+-        title="{t}Re-queue all messages in selected servers queue{/t}">
+-      {/if}
+-     </td>
+-    </tr>
+-   </table>
+-  </div>
+- </div>
+-</div>
+-
+-<br>
+-
+-{if !$query_allowed}
+-<b>{msgPool type=permView}</b>
+-
+-{else}
+-
+- {if $all_ok != true}
+-
+-  <b>{t}Search returned no results{/t}...</b>
+-
+- {else}
+-
+-  <div class="listContainer" id="d_scrollbody" style="min-height: 475px; height: 444px;">
+-   <table summary="{t}Phone reports{/t}" style="width:100%;" cellpadding="0" cellspacing="0">
+-    <thead class="fixedListHeader listHeaderFormat">
+-     <tr>
+-      <td class='listheader'>
+-       <input type='checkbox' id='select_all' name='select_all' 
+-          title='"._("Select all")."' onClick="toggle_all_('^selected_.*$','select_all');">
+-      </td> 
+-      <td class='listheader'><a href="{$plug}&sort=MailID">{t}ID{/t}{if $OrderBy == "MailID"} {$SortType}{/if}</a></td>
+-      <td class='listheader'><a href="{$plug}&sort=Server">{t}Server{/t}{if $OrderBy == "Server"}{$SortType}{/if}</a></td>
+-      <td class='listheader'><a href="{$plug}&sort=Size">{t}Size{/t}{if $OrderBy == "Size"} {$SortType}{/if}</a></td>
+-      <td class='listheader'><a href="{$plug}&sort=Arrival">{t}Arrival{/t}{if $OrderBy == "Arrival"}{$SortType}{/if}</a></td>
+-      <td class='listheader'><a href="{$plug}&sort=Sender">{t}Sender{/t}{if $OrderBy == "Sender"}{$SortType}{/if}</a></td>
+-      <td class='listheader'><a href="{$plug}&sort=Recipient">{t}Recipient{/t}{if $OrderBy == "Recipient"}{$SortType}{/if}</a></td>
+-      <td class='listheader'><a href="{$plug}&sort=Status">{t}Status{/t}{if $OrderBy == "Status"}{$SortType}{/if}</a></td>
+-      <td class='listheader'> </td>
+-     </tr>
+-    </thead>
+-    <tbody class="listScrollContent listBodyFormat" id="t_nscrollbody">
+-
+-
+-     {foreach from=$entries item=val key=key}
+-      <tr>
+-       <td class="list0">
+-        <input id="selected_{$entries[$key].MailID}" type='checkbox' 
+-         name='selected_{$entries[$key].MailID}_{$entries[$key].Server}' class='center'>
+-       </td>
+-       <td class="list0">
+-        {if $entries[$key].Active == true}
+-         {image path="plugins/mail/images/mailq_active.png"}
+-        {/if}
+-        {$entries[$key].MailID}
+-       </td>
+-       <td class="list0">{$entries[$key].ServerName}</td>
+-       <td class="list0">{$entries[$key].Size}</td>
+-       <td class="list0">{$entries[$key].Arrival|date_format:"%d.%m.%Y %H:%M:%S"}</td>
+-       <td class="list0">{$entries[$key].Sender}</td>
+-       <td class="list0">{$entries[$key].Recipient}</td>
+-       <td class="list0">{$entries[$key].Status}</td>
+-       <td class="list0" style='border-right: 0pt none;'>
+-        {if $del_W}
+-         {image action="del__{$entries[$key].MailID}__{$entries[$key].Server}" 
+-           path="images/lists/trash.png" title="{t}Delete this message{/t}"}
+-        {else}
+-         {image path="images/empty.png"}
+-        {/if}
+-        
+-        {if $entries[$key].Hold == true}
+-         {if $unhold_W}
+-          {image action="unhold__{$entries[$key].MailID}__{$entries[$key].Server}" 
+-            path="plugins/mail/images/mailq_unhold.png" title="{t}Release message{/t}"}
+-          {else}
+-           {image path="images/empty.png"}
+-          {/if}
+-         {else}
+-          {if $hold_W}
+-           {image action="hold__{$entries[$key].MailID}__{$entries[$key].Server}" 
+-             path="plugins/mail/images/mailq_hold.png" title="{t}Hold message{/t}"}
+-          {else}
+-           {image path="images/empty.png"}
+-          {/if}
+-         {/if}
+-        
+-         {if $requeue_W}
+-          {image action="requeue__{$entries[$key].MailID}__{$entries[$key].Server}" 
+-            path="images/lists/reload.png" title="{t}Re-queue this message{/t}"}
+-         {else}
+-          {image path="images/empty.png"}
+-         {/if}
+-        
+-         {if $header_W}
+-          {image action="header__{$entries[$key].MailID}__{$entries[$key].Server}" 
+-            path="plugins/mail/images/mailq_header.png" title="{t}Display header of this message{/t}"}
+-         {else}
+-          {image path="images/empty.png"}
+-         {/if}
+-       </td>
+-      </tr>
+-     {/foreach}
+-     <tr>
+-      <td class="list0"> </td>
+-      <td class="list0"> </td>
+-      <td class="list0"> </td>
+-      <td class="list0"> </td>
+-      <td class="list0"> </td>
+-      <td class="list0"> </td>
+-      <td class="list0" style='border-right: 0pt none;'>
+-</td>
+-     </tr>
+-    </tbody>
+-   </table>
+-   <table style='width:100%; text-align:center;' summary="{t}Page selector{/t}">
+-    <tr>
+-     <td>{$range_selector}</td>
+-    </tr>
+-   </table>
+-  </div>
+-  <hr>
+- {/if}
+-{/if}
+diff --git a/addons/mailqueue/header.tpl b/addons/mailqueue/header.tpl
+deleted file mode 100644
+index 24f9611a4..000000000
+--- a/mail/addons/mailqueue/header.tpl
++++ /dev/null
+@@ -1,9 +0,0 @@
+-
+-<pre>
+- {$header}
+-</pre>
+-<hr>
+-<div style='text-align:right; padding:5px;'>
+- <button type='submit' name='back'>
+- {msgPool type=backButton}</button>
+-</div>
+\ No newline at end of file
+diff --git a/addons/mailqueue/main.inc b/addons/mailqueue/main.inc
+deleted file mode 100644
+index 557123ce2..000000000
+--- a/mail/addons/mailqueue/main.inc
++++ /dev/null
+@@ -1,58 +0,0 @@
+-<?php
+-/*
+-  This code is part of GOsa (https://gosa.gonicus.de)
+-  Copyright (C) 2003  Cajus Pollmeier
+-
+-  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
+-*/
+-
+-/* Remove locks created by this plugin
+-*/
+-if ($remove_lock){
+-  if(session::is_set('mailqueue')){
+-    // Nothing to unlock here
+-  }
+-}
+-
+-/* Remove this plugin from session
+-*/
+-if ( $cleanup ){
+-  session::un_set('mailqueue');
+-}else{
+-
+-	/* Create mailqueue object on demand */
+-	if (!session::is_set('mailqueue')){
+-		$ui = get_userinfo();
+-		$mailqueue= new mailqueue ($config);
+-		$mailqueue->set_acl_category("mailqueue");
+-		
+-		/* Check root dn and user dn for acl informations */
+-		$mailqueue->set_acl_base($config->current['BASE']);
+-		if($mailqueue->getacl("") == ""){
+-			$mailqueue->set_acl_base($ui->dn);
+-		}
+-		session::set('mailqueue',$mailqueue);
+-	}
+-	$mailqueue = session::get('mailqueue');
+-
+-	/* Execute formular */
+-	$mailqueue->save_object();
+-	$display= $mailqueue->execute ();
+-	$display.= "<input type=\"hidden\" name=\"ignore\">\n";
+-
+-	/* Store changes  in session */
+-	session::set('mailqueue',$mailqueue);
+-}
+-?>
diff --git a/debian/patches/series b/debian/patches/series
index db5633d..29952e9 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -36,6 +36,10 @@
 1029_better-whitespace-cleanup-in-genuid.patch
 1030_column-header-titles-group-members.patch
 1031_no-context-loose-continues.patch
+0008_mcrypt2openssl_gosa-core.patch
+0009_mcrypt2openssl_systems-no-gosasi.patch
+0010_mcrypt2openssl_goto-no-gosasi.patch
+0011_mcrypt2openssl_mail-no-gosasi.patch
 2001_fix-smarty-location.patch
 2002_fix-template-location.patch
 2003_fix-class-mapping.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-edu/pkg-team/gosa.git



More information about the debian-edu-commits mailing list