[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