Compare commits
8 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
213aa8fa9d | ||
| 0ccb9883f2 | |||
| 95847d22fd | |||
| ec4255780e | |||
| 865f2b5069 | |||
| d4368b1bd1 | |||
| 7b33feb7e8 | |||
| eefe036781 |
10 changed files with 1771 additions and 1 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
zarafa-6.30.14.tar.gz
|
||||
|
|
@ -1 +0,0 @@
|
|||
Package is retired
|
||||
1
sources
Normal file
1
sources
Normal file
|
|
@ -0,0 +1 @@
|
|||
fa3183f71027b8025373b05f27aaf742 zarafa-6.30.14.tar.gz
|
||||
13
zarafa-6.30.10-chmod.patch
Normal file
13
zarafa-6.30.10-chmod.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
Patch by Robert Scheck <robert@fedoraproject.org> for zarafa >= 6.30.10, which adds a missing include for
|
||||
the later in the code used chmod() command. Without this include, building on Fedora 13 fails.
|
||||
|
||||
--- zarafa-6.30.10/provider/server/ECSoapServerConnection.cpp 2010-01-26 17:34:51.000000000 +0100
|
||||
+++ zarafa-6.30.10/provider/server/ECSoapServerConnection.cpp.chmod 2010-02-06 12:36:22.000000000 +0100
|
||||
@@ -51,6 +51,7 @@
|
||||
|
||||
#include "ECLogger.h"
|
||||
|
||||
+#include <sys/stat.h>
|
||||
#ifdef HAVE_SYS_UN_H
|
||||
#include <sys/un.h>
|
||||
#endif
|
||||
35
zarafa-6.30.10-undefined-symbol.patch
Normal file
35
zarafa-6.30.10-undefined-symbol.patch
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
diff -ur zarafa-6.30.10.orig/mapi4linux/src/m4lguids.cpp zarafa-6.30.10/mapi4linux/src/m4lguids.cpp
|
||||
--- zarafa-6.30.10.orig/mapi4linux/src/m4lguids.cpp 2010-01-26 17:34:48.000000000 +0100
|
||||
+++ zarafa-6.30.10/mapi4linux/src/m4lguids.cpp 2010-02-04 09:53:48.459239670 +0100
|
||||
@@ -48,6 +48,7 @@
|
||||
*/
|
||||
|
||||
#include "platform.h"
|
||||
+/*#ifndef WINCE
|
||||
#define USES_IID_IUnknown
|
||||
#define USES_IID_IStream
|
||||
#define USES_IID_ISequentialStream
|
||||
@@ -60,7 +61,8 @@
|
||||
#define USES_IID_IMAPIProp
|
||||
#define USES_IID_IMAPIFolder
|
||||
#define USES_IID_IMAPITable
|
||||
+#endif
|
||||
#include <initguid.h>
|
||||
-
|
||||
+*/
|
||||
#include "mapiguid.h"
|
||||
#include "m4l.mapiutil.h"
|
||||
diff -ur zarafa-6.30.10.orig/mapi4linux/src/Makefile.am zarafa-6.30.10/mapi4linux/src/Makefile.am
|
||||
--- zarafa-6.30.10.orig/mapi4linux/src/Makefile.am 2010-01-26 12:05:22.000000000 +0100
|
||||
+++ zarafa-6.30.10/mapi4linux/src/Makefile.am 2010-02-04 09:51:39.285239878 +0100
|
||||
@@ -3,7 +3,9 @@
|
||||
AM_CPPFLAGS = $(DEBUGFLAGS) -DLINUX -I$(top_srcdir)/mapi4linux/include -I$(top_srcdir)/provider/common -I${top_srcdir}/common -I${top_srcdir}/libfreebusy
|
||||
AM_LDFLAGS = $(DL_LIBS) -export-symbols ${top_srcdir}/mapi4linux/src/mapi-exports.sym
|
||||
|
||||
-libmapi_la_LIBADD = ${top_builddir}/common/libcommon_util.la
|
||||
+libmapi_la_LIBADD = ${top_builddir}/common/libcommon_util.la \
|
||||
+ ${top_builddir}/common/libcommon_mapi.la \
|
||||
+ $(PROG_LIBS)
|
||||
|
||||
# required because we're exporting extern "C" functions and want to filter with 'export-symbols'
|
||||
CXXLD=--tag=none gcc
|
||||
774
zarafa-6.30.4-brodowski.patch
Normal file
774
zarafa-6.30.4-brodowski.patch
Normal file
|
|
@ -0,0 +1,774 @@
|
|||
diff -ruN /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/class.autoarchivesettings.php mapi/class.autoarchivesettings.php
|
||||
--- /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/class.autoarchivesettings.php Thu Jan 1 01:00:00 1970
|
||||
+++ mapi/class.autoarchivesettings.php Sat Aug 8 11:49:05 2009
|
||||
@@ -0,0 +1,218 @@
|
||||
+<?php
|
||||
+/*
|
||||
+ * Copyright 2005 - 2009 Zarafa B.V.
|
||||
+ *
|
||||
+ * This program is free software: you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU Affero General Public License, version 3,
|
||||
+ * as published by the Free Software Foundation with the following additional
|
||||
+ * term according to sec. 7:
|
||||
+ *
|
||||
+ * "Zarafa" is a registered trademark of Zarafa B.V. The licensing of the Program
|
||||
+ * under the AGPL does not imply a trademark license. Therefore any rights,
|
||||
+ * title and interest in our trademarks remain entirely with us.
|
||||
+ * However, if you propagate an unmodified version of the Program you are
|
||||
+ * required to use the term "Zarafa" to indicate that you distribute the
|
||||
+ * Program. Furthermore you may use our trademarks where it is necessary to
|
||||
+ * indicate the intended purpose of a product or service provided you use it in
|
||||
+ * accordance with honest practices in industrial or commercial matters.
|
||||
+ * If you want to propagate modified versions of the Program under the name
|
||||
+ * "Zarafa" or "Zarafa Server", you may only do so if you have a written
|
||||
+ * permission by Zarafa B.V. (to acquire a permission please contact Zarafa at
|
||||
+ * trademark@zarafa.com).
|
||||
+ * The user interface of the software displays a attribution notice containing
|
||||
+ * the term "Zarafa" and/or the Logo of Zarafa. You have to preserve these
|
||||
+ * attribution notices when you propagate unmodified or modified versions of
|
||||
+ * the Program.
|
||||
+ *
|
||||
+ * 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 Affero General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Affero General Public License
|
||||
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+?>
|
||||
+<?php
|
||||
+
|
||||
+include_once('mapi.util.php');
|
||||
+include_once('mapidefs.php');
|
||||
+include_once('mapitags.php');
|
||||
+
|
||||
+/**
|
||||
+ * AutoArchiveSettings
|
||||
+ * @author Andreas Brodowski <andreas@brodowski.org>
|
||||
+ */
|
||||
+
|
||||
+class AutoArchiveSettings {
|
||||
+
|
||||
+ var $session;
|
||||
+ var $store;
|
||||
+ var $folder;
|
||||
+ var $proptags;
|
||||
+
|
||||
+ function agingproperties() {
|
||||
+ $properties = array();
|
||||
+ $properties["entryid"] = PR_ENTRYID;
|
||||
+ $properties["parent_entryid"] = PR_PARENT_ENTRYID;
|
||||
+ $properties["message_class"] = PR_MESSAGE_CLASS;
|
||||
+ $properties["icon_index"] = PR_ICON_INDEX;
|
||||
+ $properties["display_to"] = PR_DISPLAY_TO;
|
||||
+ $properties["display_cc"] = PR_DISPLAY_CC;
|
||||
+ $properties["subject"] = PR_SUBJECT;
|
||||
+ $properties["importance"] = PR_IMPORTANCE;
|
||||
+ $properties["sent_representing_name"] = PR_SENT_REPRESENTING_NAME;
|
||||
+ $properties["sent_representing_email_address"] = PR_SENT_REPRESENTING_EMAIL_ADDRESS;
|
||||
+ $properties["sent_representing_addrtype"] = PR_SENT_REPRESENTING_ADDRTYPE;
|
||||
+ $properties["sent_representing_entryid"] = PR_SENT_REPRESENTING_ENTRYID;
|
||||
+ $properties["sender_email_address"] = PR_SENDER_EMAIL_ADDRESS;
|
||||
+ $properties["sender_name"] = PR_SENDER_NAME;
|
||||
+ $properties["received_by_name"] = PR_RECEIVED_BY_NAME;
|
||||
+ $properties["received_by_email_address"] = PR_RECEIVED_BY_EMAIL_ADDRESS;
|
||||
+ $properties["message_delivery_time"] = PR_MESSAGE_DELIVERY_TIME;
|
||||
+ $properties["last_modification_time"] = PR_LAST_MODIFICATION_TIME;
|
||||
+ $properties["last_verb_executed"] = PR_LAST_VERB_EXECUTED;
|
||||
+ $properties["last_verb_execution_time"] = PR_LAST_VERB_EXECUTION_TIME;
|
||||
+ $properties["hasattach"] = PR_HASATTACH;
|
||||
+ $properties["message_size"] = PR_MESSAGE_SIZE;
|
||||
+ $properties["message_flags"] = PR_MESSAGE_FLAGS;
|
||||
+ $properties["flag_status"] = PR_FLAG_STATUS;
|
||||
+ $properties["flag_complete_time"] = PR_FLAG_COMPLETE_TIME;
|
||||
+ $properties["flag_icon"] = PR_FLAG_ICON;
|
||||
+ $properties["reminder_time"] = "PT_SYSTIME:PSETID_Common:0x8502";
|
||||
+ $properties["reminder_set"] = "PT_BOOLEAN:PSETID_Common:0x8503";
|
||||
+ $properties["flag_request"] = "PT_STRING8:PSETID_Common:0x8530";
|
||||
+ $properties["flag_due_by"] = "PT_SYSTIME:PSETID_Common:0x8560";
|
||||
+ $properties["reply_requested"] = PR_REPLY_REQUESTED;
|
||||
+ $properties["reply_time"] = PR_REPLY_TIME;
|
||||
+ $properties["response_requested"] = PR_RESPONSE_REQUESTED;
|
||||
+ $properties["client_submit_time"] = PR_CLIENT_SUBMIT_TIME;
|
||||
+ $properties["sensitivity"] = PR_SENSITIVITY;
|
||||
+ $properties["read_receipt_requested"] = PR_READ_RECEIPT_REQUESTED;
|
||||
+ $properties["location"] = "PT_STRING8:PSETID_Appointment:0x8208";
|
||||
+ $properties["categories"] = "PT_MV_STRING8:PS_PUBLIC_STRINGS:Keywords";
|
||||
+ $properties["transport_message_headers"] = PR_TRANSPORT_MESSAGE_HEADERS;
|
||||
+ $properties["contacts"] = "PT_MV_STRING8:PSETID_Common:0x853A";
|
||||
+ $properties["contacts_string"] = "PT_STRING8:PSETID_Common:0x8586";
|
||||
+
|
||||
+ $properties["aging_period"] = PR_AGING_PERIOD; // max 3 digits
|
||||
+ $properties["aging_granularity"] = PR_AGING_GRANULARITY; // 0=month, 1=weeks, 2=days
|
||||
+ $properties["aging_filename"] = PR_AGING_FILENAME;
|
||||
+ $properties["aging_age_folder"] = PR_AGING_AGE_FOLDER;
|
||||
+ $properties["aging_deleted_items"] = PR_AGING_DELETE_ITEMS;
|
||||
+ $properties["aging_dont_age_me"] = PR_AGING_DONT_AGE_ME;
|
||||
+ $properties["aging_file_name_after9"] = PR_AGING_FILE_NAME_AFTER9;
|
||||
+ $properties["aging_when_deleted_on_server"] = PR_AGING_WHEN_DELETED_ON_SERVER;
|
||||
+ $properties["aging_wait_until_expired"] = PR_AGING_WAIT_UNTIL_EXPIRED;
|
||||
+ $properties["aging_version"] = PR_AGING_VERSION;
|
||||
+ $properties["aging_default"] = PR_AGING_DEFAULT;
|
||||
+
|
||||
+ $properties["deleted_on"] = PR_DELETED_ON;
|
||||
+ $properties["updatecounter"] = "PT_LONG:PSETID_Appointment:0x8201";
|
||||
+ $properties["hideattachments"] = "PT_BOOLEAN:PSETID_Common:0x8514";
|
||||
+
|
||||
+ return $properties;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Constuctor
|
||||
+ *
|
||||
+ * @param mapi_session $session MAPI Session
|
||||
+ * @param mapi_folder $folder Folder to use for AutoArchive Settings retrival
|
||||
+ */
|
||||
+
|
||||
+ function retrieveSettings($session, $store, $folder, $properties = NULL)
|
||||
+ {
|
||||
+ if ($properties == NULL) {
|
||||
+ $properties = $this->agingproperties();
|
||||
+ };
|
||||
+
|
||||
+ $this->proptags = getPropIdsFromStrings($store, $properties);
|
||||
+
|
||||
+ $this->session = $session;
|
||||
+ $this->store = $store;
|
||||
+ $this->folder = $folder;
|
||||
+
|
||||
+ $msg = $this->getMessage();
|
||||
+
|
||||
+ $props = mapi_getprops($msg,$this->proptags);
|
||||
+
|
||||
+ $data = $props;
|
||||
+
|
||||
+ return $data;
|
||||
+ }
|
||||
+
|
||||
+ function getMessage() {
|
||||
+ $table = mapi_folder_getcontentstable($this->folder, MAPI_ASSOCIATED);
|
||||
+ mapi_table_sort($table, array(PR_RECEIPT_TIME => TABLE_SORT_ASCEND));
|
||||
+ $restriction = array ( RES_PROPERTY,
|
||||
+ array ( RELOP => RELOP_EQ,
|
||||
+ ULPROPTAG => PR_MESSAGE_CLASS,
|
||||
+ VALUE => array (PR_MESSAGE_CLASS => "IPC.MS.Outlook.AgingProperties")
|
||||
+ )
|
||||
+ );
|
||||
+ $msgs = mapi_table_queryallrows($table,array(PR_ENTRYID),$restriction);
|
||||
+ if (isset($msgs[0][PR_ENTRYID])) {
|
||||
+ $msg = mapi_msgstore_openentry($this->store,$msgs[0][PR_ENTRYID]);
|
||||
+ } else {
|
||||
+ $this->createMessage();
|
||||
+ $msg = $this->getMessage();
|
||||
+ }
|
||||
+ return $msg;
|
||||
+ }
|
||||
+
|
||||
+ function updateSettings($session, $store, $folder, $uprops) {
|
||||
+ $properties = $this->agingproperties();
|
||||
+
|
||||
+ $this->session = $session;
|
||||
+ $this->store = $store;
|
||||
+ $this->folder = $folder;
|
||||
+
|
||||
+ $msg = $this->getMessage();
|
||||
+
|
||||
+ $write_props = array();
|
||||
+
|
||||
+ if (isset($uprops["aging_period"])) $write_props[$properties["aging_period"]] = $uprops["aging_period"];
|
||||
+ if (isset($uprops["aging_granularity"])) $write_props[$properties["aging_granularity"]] = $uprops["aging_granularity"];
|
||||
+ if (isset($uprops["aging_age_folder"])) $write_props[$properties["aging_age_folder"]] = $uprops["aging_age_folder"];
|
||||
+ if (isset($uprops["aging_deleted_items"])) $write_props[$properties["aging_deleted_items"]] = $uprops["aging_deleted_items"];
|
||||
+ if (isset($uprops["aging_filename"])) $write_props[$properties["aging_filename"]] = $uprops["aging_filename"];
|
||||
+ if (isset($uprops["aging_file_name_after9"])) $write_props[$properties["aging_file_name_after9"]] = $uprops["aging_file_name_after9"];
|
||||
+ if (isset($uprops["aging_version"])) $write_props[$properties["aging_version"]] = $uprops["aging_version"];
|
||||
+ if (isset($uprops["aging_default"])) $write_props[$properties["aging_default"]] = $uprops["aging_default"];
|
||||
+
|
||||
+ mapi_setprops($msg,$write_props);
|
||||
+
|
||||
+ mapi_savechanges($msg);
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ function createMessage() {
|
||||
+
|
||||
+ $properties = $this->agingproperties();
|
||||
+
|
||||
+ $write_props = array( $properties["message_class"] => "IPC.MS.Outlook.AgingProperties",
|
||||
+ $properties["display_to"] => NULL,
|
||||
+ $properties["display_cc"] => NULL,
|
||||
+ $properties["aging_period"] => "3",
|
||||
+ $properties["aging_granularity"] => "0",
|
||||
+ $properties["aging_age_folder"] => "0",
|
||||
+ $properties["aging_deleted_items"] => "0",
|
||||
+ $properties["aging_filename"] => "",
|
||||
+ $properties["aging_file_name_after9"] => "",
|
||||
+ $properties["aging_version"] => "2",
|
||||
+ $properties["aging_default"] => "0"
|
||||
+ );
|
||||
+
|
||||
+ $msg = mapi_folder_createmessage($this->folder,MAPI_ASSOCIATED);
|
||||
+
|
||||
+ mapi_setprops($msg,$write_props);
|
||||
+
|
||||
+ mapi_savechanges($msg);
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
+?>
|
||||
diff -ruN /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/class.linkedappointment.php mapi/class.linkedappointment.php
|
||||
--- /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/class.linkedappointment.php Thu Jan 1 01:00:00 1970
|
||||
+++ mapi/class.linkedappointment.php Fri Aug 14 11:16:18 2009
|
||||
@@ -0,0 +1,393 @@
|
||||
+<?php
|
||||
+/*
|
||||
+ * Copyright 2005 - 2009 Zarafa B.V.
|
||||
+ *
|
||||
+ * This program is free software: you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU Affero General Public License, version 3,
|
||||
+ * as published by the Free Software Foundation with the following additional
|
||||
+ * term according to sec. 7:
|
||||
+ *
|
||||
+ * "Zarafa" is a registered trademark of Zarafa B.V. The licensing of the Program
|
||||
+ * under the AGPL does not imply a trademark license. Therefore any rights,
|
||||
+ * title and interest in our trademarks remain entirely with us.
|
||||
+ * However, if you propagate an unmodified version of the Program you are
|
||||
+ * required to use the term "Zarafa" to indicate that you distribute the
|
||||
+ * Program. Furthermore you may use our trademarks where it is necessary to
|
||||
+ * indicate the intended purpose of a product or service provided you use it in
|
||||
+ * accordance with honest practices in industrial or commercial matters.
|
||||
+ * If you want to propagate modified versions of the Program under the name
|
||||
+ * "Zarafa" or "Zarafa Server", you may only do so if you have a written
|
||||
+ * permission by Zarafa B.V. (to acquire a permission please contact Zarafa at
|
||||
+ * trademark@zarafa.com).
|
||||
+ * The user interface of the software displays a attribution notice containing
|
||||
+ * the term "Zarafa" and/or the Logo of Zarafa. You have to preserve these
|
||||
+ * attribution notices when you propagate unmodified or modified versions of
|
||||
+ * the Program.
|
||||
+ *
|
||||
+ * 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 Affero General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Affero General Public License
|
||||
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ *
|
||||
+ */
|
||||
+?>
|
||||
+<?php
|
||||
+
|
||||
+include_once('mapi.util.php');
|
||||
+include_once('mapidefs.php');
|
||||
+include_once('mapitags.php');
|
||||
+include_once('class.recurrence.php');
|
||||
+
|
||||
+/**
|
||||
+ * linkedAppointment
|
||||
+ * @author dw2412 Andreas Brodowski <andreas at brodowski.org>
|
||||
+ */
|
||||
+
|
||||
+class linkedAppointment
|
||||
+{
|
||||
+
|
||||
+ /**
|
||||
+ * @var object Mapi Message Store (may be null if readonly)
|
||||
+ */
|
||||
+ var $_store;
|
||||
+
|
||||
+ var $_contactmapping = array (
|
||||
+ "fileas" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8005",
|
||||
+ "birthday_event_entryid" => "PT_BINARY:{00062004-0000-0000-C000-000000000046}:0x804d",
|
||||
+ "anniversary_event_entryid" => "PT_BINARY:{00062004-0000-0000-C000-000000000046}:0x804e",
|
||||
+ "birthday" => PR_BIRTHDAY,
|
||||
+ "anniversary" => PR_WEDDING_ANNIVERSARY,
|
||||
+ "entryid" => PR_ENTRYID,
|
||||
+ "search_key" => PR_SEARCH_KEY
|
||||
+ );
|
||||
+
|
||||
+ var $_appointmentmapping = array (
|
||||
+ "alldayevent" => "PT_BOOLEAN:{00062002-0000-0000-C000-000000000046}:0x8215",
|
||||
+ "body" => PR_BODY,
|
||||
+ "busystatus" => "PT_LONG:{00062002-0000-0000-C000-000000000046}:0x8205",
|
||||
+ "categories" => "PT_MV_STRING8:{00020329-0000-0000-C000-000000000046}:Keywords",
|
||||
+ "rtf" => PR_RTF_COMPRESSED,
|
||||
+ "dtstamp" => PR_LAST_MODIFICATION_TIME,
|
||||
+ "endtime" => "PT_SYSTIME:{00062002-0000-0000-C000-000000000046}:0x820e",
|
||||
+ "location" => "PT_STRING8:{00062002-0000-0000-C000-000000000046}:0x8208",
|
||||
+ "meetingstatus" => "PT_LONG:{00062002-0000-0000-C000-000000000046}:0x8217",
|
||||
+ "reminder" => "PT_LONG:{00062008-0000-0000-C000-000000000046}:0x8501",
|
||||
+ "sensitivity" => PR_SENSITIVITY,
|
||||
+ "subject" => PR_SUBJECT,
|
||||
+ "starttime" => "PT_SYSTIME:{00062002-0000-0000-C000-000000000046}:0x820d",
|
||||
+ "uid" => "PT_BINARY:{6ED8DA90-450B-101B-98DA-00AA003F1305}:0x3",
|
||||
+ // Append the appointment attributes since we need them for appointment creation
|
||||
+ "label" => "PT_LONG:{00062002-0000-0000-C000-000000000046}:0x8214",
|
||||
+ "recurring" => "PT_BOOLEAN:{00062002-0000-0000-C000-000000000046}:0x8223",
|
||||
+ "recurring_data" => "PT_BINARY:{00062002-0000-0000-C000-000000000046}:0x8216",
|
||||
+ "recurring_pattern" => "PT_STRING8:{00062002-0000-0000-C000-000000000046}:0x8232",
|
||||
+ "basedate" => "PT_SYSTIME:{00062002-0000-0000-C000-000000000046}:0x8228",
|
||||
+ "icon_index" => PR_ICON_INDEX,
|
||||
+ "entryid" => PR_ENTRYID,
|
||||
+ "message_class" => PR_MESSAGE_CLASS,
|
||||
+ "parententryid" => PR_PARENT_ENTRYID,
|
||||
+ "message_flags" => PR_MESSAGE_FLAGS,
|
||||
+ "importance" => PR_IMPORTANCE,
|
||||
+ // Append the common attributes since we need them for appointment creation
|
||||
+ "contacts" => "PT_MV_STRING8:{00062008-0000-0000-C000-000000000046}:0x853a",
|
||||
+ "contacts_string" => "PT_STRING8:{00062008-0000-0000-C000-000000000046}:0x8586",
|
||||
+ "commonstart" => "PT_SYSTIME:{00062008-0000-0000-C000-000000000046}:0x8516",
|
||||
+ "commonend" => "PT_SYSTIME:{00062008-0000-0000-C000-000000000046}:0x8517",
|
||||
+ "remindertime" => "PT_SYSTIME:{00062008-0000-0000-C000-000000000046}:0x8502",
|
||||
+ "duration" => "PT_LONG:{00062002-0000-0000-C000-000000000046}:0x8213",
|
||||
+ "reminder_minutes" => "PT_LONG:{00062008-0000-0000-C000-000000000046}:0x8501",
|
||||
+ "reminder" => "PT_BOOLEAN:{00062008-0000-0000-C000-000000000046}:0x8503",
|
||||
+ "flagdueby" => "PT_SYSTIME:{00062008-0000-0000-C000-000000000046}:0x8560",
|
||||
+ "lid_contact_link_search_key" => "PT_BINARY:{00062008-0000-0000-C000-000000000046}:0x8584",
|
||||
+ "lid_contact_link_entryid" => "PT_BINARY:{00062008-0000-0000-C000-000000000046}:0x8585"
|
||||
+ );
|
||||
+
|
||||
+ /**
|
||||
+ * Constructor
|
||||
+ * @param resource $store MAPI Message Store Object
|
||||
+ * @param resource $message the MAPI Source message
|
||||
+ */
|
||||
+ function linkedAppointment($_store)
|
||||
+ {
|
||||
+ $this->_store = $_store;
|
||||
+ }
|
||||
+
|
||||
+ function setLinkedContact($mapimessage)
|
||||
+ {
|
||||
+ // get the linked contact (if any)
|
||||
+ // Set the appointment attributes
|
||||
+ $aprops = $this->_appointmentmapping;
|
||||
+ // Get the id's of the above...
|
||||
+ foreach ($aprops as $key => $value) {
|
||||
+ $aprops[$key] = $this->GetPropIDFromString($this->_store, $value);
|
||||
+ }
|
||||
+ $appointment = mapi_getprops($mapimessage, $aprops);
|
||||
+ $recurrence = new Recurrence($this->_store, $mapimessage);
|
||||
+ $recur = $recurrence->getRecurrence();
|
||||
+ if (isset($appointment[$aprops["lid_contact_link_entryid"]])) {
|
||||
+ // we have a linked contact. so continue here, otherwise exit silently...
|
||||
+ $entryid = $this->_unpackContactLinkEntryIDS(bin2hex($appointment[$aprops["lid_contact_link_entryid"]]));
|
||||
+ // Set the contact attributes
|
||||
+ $cprops = $this->_contactmapping;
|
||||
+ // Get the id's of the above...
|
||||
+ foreach ($cprops as $key => $value) {
|
||||
+ $cprops[$key] = $this->GetPropIDFromString($this->_store, $value);
|
||||
+ }
|
||||
+ foreach ($entryid as $value) {
|
||||
+ if (($contact_msg = mapi_msgstore_openentry($this->_store,$value))) {
|
||||
+ $contact = mapi_getprops($contact_msg, $cprops);
|
||||
+ switch ($appointment[$aprops["entryid"]]) {
|
||||
+ case $contact[$cprops["birthday_event_entryid"]] :
|
||||
+ if ($contact[$cprops["birthday"]] != $recur["start"]) {
|
||||
+ mapi_setprops($contact_msg,array($cprops["birthday"] => $recur["start"]));
|
||||
+ mapi_savechanges($contact_msg);
|
||||
+ }
|
||||
+ break;
|
||||
+ case $contact[$cprops["anniversary_event_entryid"]] :
|
||||
+ if ($contact[$cprops["anniversary"]] != $recur["start"]) {
|
||||
+ mapi_setprops($contact_msg,array($cprops["anniversary"] => $recur["start"]));
|
||||
+ mapi_savechanges($contact_msg);
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ // $what 0x01 = birthday 0x02 = anniversary
|
||||
+ function setLinkedAppointment($mapimessage,$what)
|
||||
+ {
|
||||
+ // We love MS for this...
|
||||
+ $arrayMonth = array(0,44640,84960,129600,172800,217440,260640,305280,348480,393120,437760,480960);
|
||||
+
|
||||
+ // Set the appointment attributes
|
||||
+ $aprops = $this->_appointmentmapping;
|
||||
+ // Get the id's of the above...
|
||||
+ foreach ($aprops as $key => $value) {
|
||||
+ $aprops[$key] = $this->GetPropIDFromString($this->_store, $value);
|
||||
+ }
|
||||
+
|
||||
+ // Set the contact attributes
|
||||
+ $cprops = $this->_contactmapping;
|
||||
+ // Get the id's of the above...
|
||||
+ foreach ($cprops as $key => $value) {
|
||||
+ $cprops[$key] = $this->GetPropIDFromString($this->_store, $value);
|
||||
+ }
|
||||
+
|
||||
+ // Get the contact properties
|
||||
+ $contact = mapi_getprops($mapimessage,$cprops);
|
||||
+
|
||||
+ // open root container, if not existing, leave this function...
|
||||
+ $rootcontainer = mapi_msgstore_openentry($this->_store);
|
||||
+ if ($rootcontainer) {
|
||||
+ // find the appointment container, if this fails, leave this function since we cannot proceed...
|
||||
+ if (($rootcontainerprops = mapi_getprops($rootcontainer, array(PR_IPM_APPOINTMENT_ENTRYID)))) {
|
||||
+ $parententryid = $rootcontainerprops[PR_IPM_APPOINTMENT_ENTRYID];
|
||||
+
|
||||
+ $entryid = false;
|
||||
+ switch ($what) {
|
||||
+ case 0x01 : if (isset($contact[$cprops["birthday_event_entryid"]]))
|
||||
+ $entryid = $contact[$cprops["birthday_event_entryid"]];
|
||||
+ $entrydate = $contact[$cprops["birthday"]];
|
||||
+ $entryprop = $cprops["birthday_event_entryid"];
|
||||
+ $entrylabel = 8;
|
||||
+ $entrysubject = _("Birthday")." "._("of")." ".$contact[$cprops["fileas"]];
|
||||
+ break;
|
||||
+ case 0x02 : if (isset($contact[$cprops["anniversary_event_entryid"]]))
|
||||
+ $entryid = $contact[$cprops["anniversary_event_entryid"]];
|
||||
+ $entrydate = $contact[$cprops["anniversary"]];
|
||||
+ $entryprop = $cprops["anniversary_event_entryid"];
|
||||
+ $entrylabel = 9;
|
||||
+ $entrysubject = _("Special Date")." "._("of")." ".$contact[$cprops["fileas"]];
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if ($entrydate) {
|
||||
+ // open if there is a linked appointment and it can be opened (no one deleted it by accident...)
|
||||
+ // otherwise create it.
|
||||
+ if ($entryid &&
|
||||
+ ($appointment_msg = mapi_msgstore_openentry($this->_store,$entryid))) {
|
||||
+ $appointment = mapi_getprops($appointment_msg);
|
||||
+ } else {
|
||||
+ // create with base settings
|
||||
+ $folder = mapi_msgstore_openentry($this->_store,$parententryid);
|
||||
+ $appointment_msg = mapi_folder_createmessage($folder);
|
||||
+ $appointment = array($aprops["message_class"] => "IPM.Appointment",
|
||||
+ $aprops["location"] => "",
|
||||
+ $aprops["body"] => "",
|
||||
+ $aprops["busystatus"] => 0
|
||||
+ );
|
||||
+ mapi_setprops($appointment_msg,$appointment);
|
||||
+ }
|
||||
+ // Have the starttime im GMT
|
||||
+ $starttime = gmmktime(0,0,0,
|
||||
+ date("m",$entrydate),
|
||||
+ date("j",$entrydate),
|
||||
+ date("Y",$entrydate));
|
||||
+ // Just update something in case changes occured to reduce amount
|
||||
+ // of sync activities...
|
||||
+
|
||||
+ if ($entrydate != $appointment[$aprops["starttime"]] ||
|
||||
+ $entrysubject != $appointment[$aprops["subject"]]) {
|
||||
+ // Reset the subject in case the name has changed
|
||||
+ $appointment[$aprops["subject"]] = $entrysubject;
|
||||
+ // Set the label to 8 = birthday and 9 = anniversary
|
||||
+ $appointment[$aprops["label"]] = $entrylabel;
|
||||
+ // Instead of having rubbish inside...
|
||||
+ $appointment[$aprops["recurring_pattern"]] = "";
|
||||
+ // Setting the reminder values
|
||||
+ $appointment[$aprops["reminder"]] = true;
|
||||
+ $appointment[$aprops["reminder_minutes"]] = 15;
|
||||
+ $appointment[$aprops["remindertime"]] = $starttime-(15*60);
|
||||
+ // Setting start & Endtime
|
||||
+ $appointment[$aprops["starttime"]] = $starttime;
|
||||
+ $appointment[$aprops["endtime"]] = $starttime + 86400;
|
||||
+ // Set duration upon diff between start and endtime in minutes.
|
||||
+ $appointment[$aprops["duration"]] = ($appointment[$aprops["endtime"]] - $appointment[$aprops["starttime"]]) / 60;
|
||||
+ // Sure... birthdays and anniversaries occur on daily base :-)
|
||||
+ $appointment[$aprops["recurring"]] = true;
|
||||
+ $appointment[$aprops["alldayevent"]] = true;
|
||||
+ // Update the id's and search keys
|
||||
+ $appointment[$aprops["lid_contact_link_entryid"]] = hex2bin($this->_packContactLinkEntryIDS(array($contact[$cprops["entryid"]])));
|
||||
+ $appointment[$aprops["lid_contact_link_search_key"]] = hex2bin($this->_packContactLinkSearchKeys(array($contact[$cprops["search_key"]])));
|
||||
+ // Set the changed properties
|
||||
+ mapi_setprops($appointment_msg,$appointment);
|
||||
+ $recurrence = new Recurrence($this->_store, $appointment_msg);
|
||||
+ $tz = array();
|
||||
+ $tz["timezone"] = (($entrydate-$starttime)/3600)*60;
|
||||
+ $tz["timezonedst"] = 0;
|
||||
+ $tz["dstendmonth"] = 0;
|
||||
+ $tz["dstendweek"] = 0;
|
||||
+ $tz["dstendhour"] = 0;
|
||||
+ $tz["dststartmonth"] = 0;
|
||||
+ $tz["dststartweek"] = 0;
|
||||
+ $tz["dststarthour"] = 0;
|
||||
+ // Set the iconindex to be recurring
|
||||
+ $appointment[$aprops["icon_index"]] = 1025;
|
||||
+ // Set the changed properties
|
||||
+ $appointment = mapi_setprops($appointment_msg,$appointment);
|
||||
+ // Recurring values
|
||||
+ $recur["type"] = 13;
|
||||
+ $recur["subtype"] = 2;
|
||||
+ $recur["month"] = $arrayMonth[gmdate("m",$starttime)-1];
|
||||
+ $recur["everyn"] = 12;
|
||||
+ $recur["regen"] = 1;
|
||||
+ $recur["monthday"] = gmdate("j",$starttime);
|
||||
+ $recur["term"] = 0x23;
|
||||
+ $recur["numoccur"] = 0;
|
||||
+ $recur["start"] = $starttime;
|
||||
+ $recur["end"] = 79870662000; // no end
|
||||
+ $recur["startocc"] = 0;
|
||||
+ $recur["endocc"] = 1440;
|
||||
+ // Let class.recurrence do its job.
|
||||
+ $recurrence->setRecurrence($tz, $recur);
|
||||
+ // Save the changes to message
|
||||
+ mapi_savechanges($appointment_msg);
|
||||
+ $appointment = mapi_getprops($appointment_msg);
|
||||
+ mapi_setprops($mapimessage,array($entryprop => $appointment[$aprops['entryid']]));
|
||||
+ mapi_savechanges($mapimessage);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ /**
|
||||
+ * unpacks the Contact Link Entry IDs
|
||||
+ *
|
||||
+ * @param string in hex with the value
|
||||
+ * @return array with all binary Contact Link Entry IDS
|
||||
+ *
|
||||
+ */
|
||||
+ function _unpackContactLinkEntryIDS($value)
|
||||
+ {
|
||||
+ $contact_link_entry_ids = unpack("Vcount",hex2bin(substr($value,0,8)));
|
||||
+ $contact_link_entry_ids["entry_ids"] = array();
|
||||
+ $length=8;
|
||||
+ for ($j=0,$i=8;$j<$contact_link_entry_ids["count"];$j++,$i=$i+$length+8) {
|
||||
+ $l = unpack("Vlength",hex2bin(substr($value,$i,8)));
|
||||
+ $length=$l["length"];
|
||||
+ $temp = unpack ("VFlags/A16ProviderUID/VVersion/VType/VIndext/Vcbid/A*abeid",hex2bin(substr($value,$i+8,($length*2))));
|
||||
+ $temp["abeid"] = hex2bin(substr(bin2hex($temp["abeid"]),0,$temp["cbid"]*2));
|
||||
+ $contact_link_entry_ids["entry_ids"][]=$temp["abeid"];
|
||||
+ }
|
||||
+ return $contact_link_entry_ids["entry_ids"];
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * packs the Contact Link Entry IDs
|
||||
+ *
|
||||
+ * @param array with all binary Contact Link Entry IDs
|
||||
+ * @return string in hex with the value
|
||||
+ *
|
||||
+ */
|
||||
+ function _packContactLinkEntryIDS($values) {
|
||||
+ $temp="";
|
||||
+ for ($i=0;$i<sizeof($values);$i++) {
|
||||
+ $temp .= pack("V",0).makeguid("{0aaa42fe-c718-101a-e885-0b651c240000}").pack("VVVV",3,4,0,(strlen(bin2hex($values[$i]))/2)).$values[$i];
|
||||
+ }
|
||||
+ $temp = bin2hex(pack("VV",sizeof($values),(strlen(bin2hex($temp))/2)).$temp);
|
||||
+ return $temp;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * unpacks the Contact Link Search key
|
||||
+ *
|
||||
+ * @param string in hex with the value
|
||||
+ * @return array with all binary Contact Link Search Keys
|
||||
+ *
|
||||
+ */
|
||||
+ function _unpackContactLinkSearchKeys($value) {
|
||||
+ $contact_link_search_keys = unpack("Vcount/Vlength",hex2bin(substr($value,0,16)));
|
||||
+ $contact_link_search_keys["skeys"] = array();
|
||||
+ $length=0;
|
||||
+ for ($i=16,$j=0;$i-16<($contact_link_search_keys["length"]*2) && $j<$contact_link_search_keys["count"];$i=$i+($length*2)+8,$j++) {
|
||||
+ $l = unpack("Vlength",hex2bin(substr($value,$i,8)));
|
||||
+ $length=$l["length"];
|
||||
+ $contact_link_search_keys["skeys"][] = hex2bin(substr($value,$i+8,($length*2)));
|
||||
+ };
|
||||
+ return $contact_link_search_keys["skeys"];
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * packs the Contact Link Search key
|
||||
+ *
|
||||
+ * @param array with all binary Contact Link Search Keys
|
||||
+ * @return string in hex with the value
|
||||
+ *
|
||||
+ */
|
||||
+ function _packContactLinkSearchKeys($values) {
|
||||
+ $temp="";
|
||||
+ for ($i=0;$i<sizeof($values);$i++) {
|
||||
+ $temp .= pack("V",strlen($values[$i])).$values[$i];
|
||||
+ }
|
||||
+ $temp = bin2hex(pack("VV",sizeof($values),strlen($temp)).$temp);
|
||||
+ return $temp;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ function GetPropIDFromString($store, $mapiprop) {
|
||||
+ if(is_string($mapiprop)) {
|
||||
+ $split = explode(":", $mapiprop);
|
||||
+
|
||||
+ if(count($split) != 3)
|
||||
+ continue;
|
||||
+
|
||||
+ if(substr($split[2], 0, 2) == "0x") {
|
||||
+ $id = hexdec(substr($split[2], 2));
|
||||
+ } else
|
||||
+ $id = $split[2];
|
||||
+
|
||||
+ $named = mapi_getidsfromnames($store, array($id), array(makeguid($split[1])));
|
||||
+
|
||||
+ $mapiprop = mapi_prop_tag(constant($split[0]), mapi_prop_id($named[0]));
|
||||
+ } else {
|
||||
+ return $mapiprop;
|
||||
+ }
|
||||
+
|
||||
+ return $mapiprop;
|
||||
+ }
|
||||
+}
|
||||
+?>
|
||||
diff -ruN /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/class.recurrence.php mapi/class.recurrence.php
|
||||
--- /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/class.recurrence.php Fri Oct 16 21:05:22 2009
|
||||
+++ mapi/class.recurrence.php Tue Oct 20 19:29:54 2009
|
||||
@@ -363,9 +363,13 @@
|
||||
* @param array $exception_props the exception properties (same properties as normal recurring items)
|
||||
* @param date $base_date the base date of the exception (actual GMT time of non-exception occurrence)
|
||||
* @param boolean $delete true - delete occurrence, false - create new exception or modify existing
|
||||
+ * @param boolean $islocal true - expect the base_date in local time (happens in case basedate is returned from WA!
|
||||
*/
|
||||
- function createException($exception_props, $base_date, $delete = false)
|
||||
+ function createException($exception_props, $base_date, $delete = false, $islocal=false)
|
||||
{
|
||||
+ // CHANGED dw2412 to support local base_date as delivered from WebAccess
|
||||
+ if ($islocal == true) $base_date = $this->toGMT($this->tz, $base_date);
|
||||
+
|
||||
$baseday = $this->dayStartOf($this->fromGMT($this->tz, $base_date));
|
||||
$basetime = $baseday + $this->recur["startocc"] * 60;
|
||||
|
||||
@@ -447,8 +451,10 @@
|
||||
* Modifies an existing exception, but only updates the given properties
|
||||
* NOTE: You can't remove properites from an exception, only add new ones
|
||||
*/
|
||||
- function modifyException($exception_props, $base_date)
|
||||
+ function modifyException($exception_props, $base_date, $islocal=false)
|
||||
{
|
||||
+ // ADDED dw2412 to support local base_date as delivered from WebAccess
|
||||
+ if ($islocal == true) $base_date = $this->toGMT($this->tz, $base_date);
|
||||
if(!$this->isValidExceptionDate($base_date, $exception_props[$this->proptags["startdate"]]))
|
||||
return false;
|
||||
|
||||
@@ -573,13 +579,17 @@
|
||||
|
||||
// Returns the start or end time of the occurrence on the given base date.
|
||||
// This assumes that the basedate you supply is correct .. !
|
||||
- function getOccurrenceStart($basedate) {
|
||||
- $daystart = $this->dayStartOf($this->fromGMT($this->tz, $basedate));
|
||||
+ function getOccurrenceStart($basedate, $islocal = false) {
|
||||
+ // CHANGED dw2412 to support local base_date as delivered from WebAccess
|
||||
+ if ($islocal == false) $daystart = $this->dayStartOf($this->fromGMT($this->tz, $basedate));
|
||||
+ else $daystart = $this->dayStartOf($basedate);
|
||||
return $this->toGMT($this->tz, $daystart + $this->recur["startocc"] * 60);
|
||||
}
|
||||
|
||||
- function getOccurrenceEnd($basedate) {
|
||||
- $daystart = $this->dayStartOf($this->fromGMT($this->tz, $basedate));
|
||||
+ function getOccurrenceEnd($basedate, $islocal = false) {
|
||||
+ // CHANGED dw2412 to support local base_date as delivered from WebAccess
|
||||
+ if ($islocal == false) $daystart = $this->dayStartOf($this->fromGMT($this->tz, $basedate));
|
||||
+ else $daystart = $this->dayStartOf($basedate);
|
||||
return $this->toGMT($this->tz, $daystart + $this->recur["endocc"] * 60);
|
||||
}
|
||||
|
||||
@@ -1229,8 +1239,12 @@
|
||||
/**
|
||||
* Returns the exception if there is a CHANGE exception on the given base date, or FALSE otherwise
|
||||
*/
|
||||
- function getChangeException($basedate)
|
||||
+ function getChangeException($basedate, $islocal)
|
||||
{
|
||||
+ // CHANGED dw2412 to support local base_date as delivered from WebAccess
|
||||
+ if ($islocal == true) $basedate = $this->toGMT($this->tz, $basedate);
|
||||
+
|
||||
+
|
||||
// Check if the occurrence is modified on the specified date
|
||||
foreach($this->recur["changed_occurences"] as $changed)
|
||||
{
|
||||
@@ -1263,7 +1277,6 @@
|
||||
function dayStartOf($date)
|
||||
{
|
||||
$time1 = $this->gmtime($date);
|
||||
-
|
||||
return gmmktime(0, 0, 0, $time1["tm_mon"] + 1, $time1["tm_mday"], $time1["tm_year"] + 1900);
|
||||
}
|
||||
|
||||
diff -ruN /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/mapiguid.php mapi/mapiguid.php
|
||||
--- /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/mapiguid.php Fri Oct 16 21:05:22 2009
|
||||
+++ mapi/mapiguid.php Tue Oct 20 19:29:54 2009
|
||||
@@ -67,4 +67,7 @@
|
||||
define('PS_MAPI', makeguid("{00020328-0000-0000-C000-000000000046}"));
|
||||
define('PS_PUBLIC_STRINGS', makeguid("{00020329-0000-0000-C000-000000000046}"));
|
||||
define('PS_INTERNET_HEADERS', makeguid("{00020386-0000-0000-c000-000000000046}"));
|
||||
+
|
||||
+define('MAPIUID_LinkContactEntryID', makeguid("{0aaa42fe-c718-101a-e885-0b651c240000}")); // http://msdn.microsoft.com/en-us/library/bb820924.aspx misc2 in CONTAB structure in Internet This parameter is reserved for Outlook internal use and is not supported.
|
||||
+
|
||||
?>
|
||||
diff -ruN /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/mapitags.php mapi/mapitags.php
|
||||
--- /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/include/mapi/mapitags.php Fri Oct 16 21:05:22 2009
|
||||
+++ mapi/mapitags.php Tue Oct 20 19:29:54 2009
|
||||
@@ -601,7 +601,25 @@
|
||||
define('PR_FINDER_ENTRYID' ,mapi_prop_tag(PT_BINARY, 0x35E7));
|
||||
define('PR_IPM_FAVORITES_ENTRYID' ,mapi_prop_tag(PT_BINARY, 0x6630));
|
||||
define('PR_IPM_PUBLIC_FOLDERS_ENTRYID' ,mapi_prop_tag(PT_BINARY, 0x6631));
|
||||
+//* start: Added dw2412 source www.cdolive.com/cdo10.htm
|
||||
+define('PR_HAS_RULES' ,mapi_prop_tag(PT_BINARY, 0x663A));
|
||||
|
||||
+// Outlook AutoArchive Properties
|
||||
+define('PR_AGING_PERIOD' ,mapi_prop_tag(PT_LONG, 0x36EC));
|
||||
+define('PR_AGING_GRANULARITY' ,mapi_prop_tag(PT_LONG, 0x36EE));
|
||||
+define('PR_AGING_FILENAME' ,mapi_prop_tag(PT_TSTRING, 0x6856));
|
||||
+define('PR_AGING_AGE_FOLDER' ,mapi_prop_tag(PT_BOOLEAN, 0x6857));
|
||||
+define('PR_AGING_DELETE_ITEMS' ,mapi_prop_tag(PT_BOOLEAN, 0x6855));
|
||||
+define('PR_AGING_FILE_NAME_AFTER9' ,mapi_prop_tag(PT_TSTRING, 0x6859));
|
||||
+define('PR_AGING_DONT_AGE_ME' ,mapi_prop_tag(PT_BOOLEAN, 0x6858));
|
||||
+define('PR_AGING_WHEN_DELETED_ON_SERVER' ,mapi_prop_tag(PT_BOOLEAN, 0x685B));
|
||||
+define('PR_AGING_WAIT_UNTIL_EXPIRED' ,mapi_prop_tag(PT_BOOLEAN, 0x685C));
|
||||
+define('PR_AGING_VERSION' ,mapi_prop_tag(PT_LONG, 0x685D));
|
||||
+define('PR_AGING_DEFAULT' ,mapi_prop_tag(PT_LONG, 0x685E));
|
||||
+
|
||||
+
|
||||
+
|
||||
+//* End : added dw2412
|
||||
|
||||
/* Proptags 0x35E8-0x35FF reserved for folders "guaranteed" by 'PR_VALID_FOLDER_MASK */
|
||||
|
||||
@@ -637,6 +655,19 @@
|
||||
define('PR_DEFAULT_VIEW_ENTRYID' ,mapi_prop_tag(PT_BINARY, 0x3616));
|
||||
define('PR_ASSOC_CONTENT_COUNT' ,mapi_prop_tag(PT_LONG, 0x3617));
|
||||
|
||||
+//* start: Added dw2412 source www.cdolive.com/cdo10.htm
|
||||
+define('PR_DEF_FORM_ALLOWED' ,mapi_prop_tag(PT_LONG, 0x3FE2));
|
||||
+define('PR_PUBLISH_IN_ADDRESS_BOOK' ,mapi_prop_tag(PT_BOOLEAN, 0x3FE6));
|
||||
+define('PR_WEBPAGE' ,mapi_prop_tag(PT_TSTRING, 0x36DF));
|
||||
+define('PR_FOLDER_VIEWS_ONLY' ,mapi_prop_tag(PT_LONG, 0x36E1));
|
||||
+define('PR_DEF_MSG_CLASS' ,mapi_prop_tag(PT_TSTRING, 0x36E5));
|
||||
+define('PR_DEF_FORM_NAME' ,mapi_prop_tag(PT_TSTRING, 0x36E6));
|
||||
+define('PR_GENERATE_EXCHANGE_VIEWS' ,mapi_prop_tag(PT_BOOLEAN, 0x36E9));
|
||||
+define('PR_VIEW_NAME' ,mapi_prop_tag(PT_TSTRING, 0x7006));
|
||||
+define('PR_OFFLINE_FLAG' ,mapi_prop_tag(PT_LONG, 0x663D));
|
||||
+define('PR_REPLICA_VERSION' ,mapi_prop_tag(PT_LONG, 0x664B));
|
||||
+//* end : Added dw2412
|
||||
+
|
||||
define('PR_RIGHTS' ,mapi_prop_tag(PT_LONG, 0x6639));
|
||||
|
||||
/* Reserved 0x36C0-0x36FF */
|
||||
@@ -1231,6 +1262,9 @@
|
||||
|
||||
define('PR_PROCESSED', mapi_prop_tag(PT_BOOLEAN, 0x7D01));
|
||||
|
||||
+// ADDED dw2412 Contact Photo Attachment
|
||||
+define('PR_ATTACHMENT_CONTACTPHOTO' ,mapi_prop_tag(PT_BOOLEAN, 0x7FFF));
|
||||
+
|
||||
// Delegates properties
|
||||
define('PR_DELEGATES_SEE_PRIVATE', mapi_prop_tag(PT_MV_LONG, 0x686B));
|
||||
define('PR_SCHDINFO_DELEGATE_ENTRYIDS', mapi_prop_tag(PT_MV_BINARY, 0x6845));
|
||||
--- /usr/src/zarafa/zarafa-6.30.4.17264/php-ext/Makefile.am 2009-10-16 15:55:59.000000000 +0200
|
||||
+++ zarafa-6.30.4/php-ext/Makefile.am.brodowski 2009-10-24 23:48:37.000000000 +0200
|
||||
@@ -23,7 +23,7 @@
|
||||
# and be missing at runtime.
|
||||
# therefore, we explicitly link mapi.so with -lpthread :(
|
||||
|
||||
-dist_data_DATA = include/mapi/mapicode.php include/mapi/mapidefs.php include/mapi/mapitags.php include/mapi/mapi.util.php include/mapi/class.recurrence.php include/mapi/class.meetingrequest.php include/mapi/class.freebusypublish.php include/mapi/mapiguid.php
|
||||
+dist_data_DATA = include/mapi/mapicode.php include/mapi/mapidefs.php include/mapi/mapitags.php include/mapi/mapi.util.php include/mapi/class.recurrence.php include/mapi/class.meetingrequest.php include/mapi/class.freebusypublish.php include/mapi/mapiguid.php include/mapi/class.autoarchivesettings.php include/mapi/class.linkedappointment.php
|
||||
datadir = ${datarootdir}/php/mapi
|
||||
|
||||
mapi_la_SOURCES = main.cpp Session.cpp SessionPool.cpp util.cpp \
|
||||
48
zarafa-6.30.4-package.patch
Normal file
48
zarafa-6.30.4-package.patch
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
Patch by Robert Scheck <robert@fedoraproject.org> for zarafa >= 6.30.4, which only
|
||||
removes the paths from autoconf/automake related files, that don't exist in the OSS
|
||||
version of Zarafa. Having these paths not removed causes autoreconf to fail, but a
|
||||
re-run of autoreconf is needed in order to get the rpaths completely out of all the
|
||||
libraries and binaries built during the make process.
|
||||
|
||||
--- zarafa-6.30.4/configure.ac 2009-03-17 17:30:45.000000000 +0100
|
||||
+++ zarafa-6.30.4/configure.ac.fedora 2009-03-31 20:34:29.000000000 +0200
|
||||
@@ -591,17 +591,6 @@
|
||||
version
|
||||
specialbuild
|
||||
])
|
||||
-dnl non-oss files
|
||||
-if test -d `dirname $0`/licensed; then
|
||||
-AC_CONFIG_FILES([
|
||||
- liblicense/Makefile
|
||||
- licensed/Makefile
|
||||
- ECtools/zarafa-backup/Makefile
|
||||
- ECtools/zarafa-backup/helpers/Makefile
|
||||
- ECtools/zarafa-report/Makefile
|
||||
- debian/zarafa.install
|
||||
-])
|
||||
-fi
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
--- zarafa-6.30.4/ECtools/Makefile.am 2009-04-23 22:10:44.000000000 +0200
|
||||
+++ zarafa-6.30.4/ECtools/Makefile.am.fedora 2009-04-25 21:20:43.000000000 +0200
|
||||
@@ -1,7 +1,3 @@
|
||||
-if ! OSS_ONLY
|
||||
-PROSUBS = zarafa-backup zarafa-report
|
||||
-endif
|
||||
-
|
||||
if WITH_TESTTOOLS
|
||||
TESTSUBS = ECTestTools
|
||||
endif
|
||||
--- zarafa-6.30.4/Makefile.am 2009-04-23 22:10:44.000000000 +0200
|
||||
+++ zarafa-6.30.4/Makefile.am.fedora 2009-04-25 21:20:26.000000000 +0200
|
||||
@@ -1,9 +1,5 @@
|
||||
AUTOMAKE_OPTIONS = 1.8 foreign
|
||||
|
||||
-if ! OSS_ONLY
|
||||
-PROSUBS = liblicense licensed
|
||||
-endif
|
||||
-
|
||||
SUBDIRS = common libfreebusy mapi4linux $(PROSUBS) provider libicalmapi inetmapi php-ext spooler gateway caldav ECtools installer po doc
|
||||
|
||||
if WITH_PERL
|
||||
53
zarafa-6.30.4-perl.patch
Normal file
53
zarafa-6.30.4-perl.patch
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
Patch by Robert Scheck <robert@fedoraproject.org> for Zarafa >= 6.30.3, which
|
||||
replaces the hardcoded perl directories by correct ones (in a dynamic way). Only
|
||||
Debian and Ubuntu have ExtUtils in /usr/share, openSUSE, Fedora and RHEL/CentOS
|
||||
use /usr/lib. So let us use the correct way to detect the directory.
|
||||
|
||||
This patch should be an advantage to OSS users on non-Debian distributions when
|
||||
using Perl API, as the correct directory will get picked up.
|
||||
|
||||
--- zarafa-6.30.0/configure.ac 2009-07-20 18:41:07.000000000 +0200
|
||||
+++ zarafa-6.30.0/configure.ac.perl 2009-10-16 00:23:52.000000000 +0200
|
||||
@@ -127,6 +127,22 @@
|
||||
# build perl stuff
|
||||
AC_ARG_ENABLE(perl, AC_HELP_STRING([--enable-perl], [enable building perl bindings]), [want_perl=${enableval}], [want_perl=no])
|
||||
AM_CONDITIONAL(WITH_PERL, test "$want_perl" = "yes")
|
||||
+if test "x$want_perl" = "xyes"; then
|
||||
+ AC_PATH_PROG([PERL], [perl], [no])
|
||||
+ if test "x$PERL" = "xno"; then
|
||||
+ AC_MSG_ERROR([perl is required for building perl bindings])
|
||||
+ fi
|
||||
+
|
||||
+ AC_MSG_CHECKING([for perl installarchlib])
|
||||
+ PERL_ARCHLIB=`$PERL -V:installarchlib | sed -e "s/^.*='//" -e "s/';$//"`
|
||||
+ AC_MSG_RESULT([$PERL_ARCHLIB])
|
||||
+ AC_SUBST(PERL_ARCHLIB)
|
||||
+
|
||||
+ AC_MSG_CHECKING([for perl privlib])
|
||||
+ PERL_PRIVLIB=`$PERL -V:privlib | sed -e "s/^.*='//" -e "s/';$//"`
|
||||
+ AC_MSG_RESULT([$PERL_PRIVLIB])
|
||||
+ AC_SUBST(PERL_PRIVLIB)
|
||||
+fi
|
||||
|
||||
# testtools require ncurses
|
||||
if test "$want_tests" = "yes"; then
|
||||
--- zarafa-6.30.0/perl/Makefile.am 2009-07-20 18:41:06.000000000 +0200
|
||||
+++ zarafa-6.30.0/perl/Makefile.am.perl 2009-10-16 00:24:51.000000000 +0200
|
||||
@@ -1,7 +1,6 @@
|
||||
lib_LTLIBRARIES = libperlmapi.la
|
||||
|
||||
-PVERSION=5.8.8
|
||||
-AM_CPPFLAGS = $(DEBUGFLAGS) -DLINUX -I$(top_srcdir)/mapi4linux/include -I$(top_srcdir)/provider/common -I${top_srcdir}/common -I/usr/lib/perl/$(PVERSION)/CORE
|
||||
+AM_CPPFLAGS = $(DEBUGFLAGS) -DLINUX -I$(top_srcdir)/mapi4linux/include -I$(top_srcdir)/provider/common -I${top_srcdir}/common -I$(PERL_ARCHLIB)/CORE
|
||||
|
||||
libperlmapi_la_LIBADD = ${top_builddir}/mapi4linux/src/libmapi.la \
|
||||
${top_builddir}/common/libcommon_mapi.la \
|
||||
@@ -12,7 +11,7 @@
|
||||
CLEANFILES = MAPI.cpp
|
||||
|
||||
.xs.cpp: typemap
|
||||
- xsubpp -noprototypes -nolinenumbers -C++ -typemap /usr/share/perl/$(PVERSION)/ExtUtils/typemap $< > $@; \
|
||||
+ xsubpp -noprototypes -nolinenumbers -C++ -typemap $(PERL_PRIVLIB)/ExtUtils/typemap $< > $@; \
|
||||
if [ $$? -ne 0 ]; then rm $@; fi
|
||||
|
||||
check-syntax:
|
||||
2
zarafa.ini
Normal file
2
zarafa.ini
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
; Enable Zarafa mapi extension module
|
||||
extension=mapi.so
|
||||
844
zarafa.spec
Normal file
844
zarafa.spec
Normal file
|
|
@ -0,0 +1,844 @@
|
|||
#
|
||||
# Releasing with this .spec, for fun and profit;
|
||||
#
|
||||
# = Beta Release or Release Candidate =
|
||||
#
|
||||
# 1. Set beta_or_rc to 1
|
||||
# 2. Set actual_release to the actual_release value of the previous
|
||||
# build attempt, +1
|
||||
# - The release tag in case of a beta_or_rc release is (statically)
|
||||
# prefixed with "0.", so that the first final release ("1") is always
|
||||
# newer (in rpm-compver).
|
||||
# 3. Set the SVN revision to the current SVN revision;
|
||||
# - This ensures a future SVN revision is always *more* recent in
|
||||
# rpm-compver
|
||||
# - Lacking a unique zarafa-<version>.svn<revision>.tar.gz source
|
||||
# tarball, setting the correct SVN revision in the .spec is
|
||||
# critical in order to be able to determine exactly what was in
|
||||
# the tarball at the time of this build. You may recover the exact
|
||||
# SVN revision used from the resulting SRPM and RPMs because it ends
|
||||
# up in the RPM release tag.
|
||||
# 4. Update %%changelog, considering the following;
|
||||
# - Possibly change only the release tag for the most recent changelog
|
||||
# %%changelog entry, if appropriate
|
||||
# - Add a message about the changes to either the product or the RPM
|
||||
# packaging
|
||||
# 5. Build locally
|
||||
# 6. Build in mock for;
|
||||
# a) fedora-rawhide-x86_64,
|
||||
# b) fedora-12-x86_64,
|
||||
# c) fedora-11-x86_64,
|
||||
# d) epel-5-x86_64,
|
||||
# e) epel-4-x86_64
|
||||
#
|
||||
# or scratch build in koji;
|
||||
#
|
||||
# for tag in dist-f13 dist-f12-updates-candidate dist-f11-updates-candidate \
|
||||
# dist-5E-epel dist-4E-epel; do
|
||||
# echo "- $tag: `koji build --scratch --nowait $tag $srpm 2>&1 | grep \"Task info\" | awk '{print $3}'`"
|
||||
# done
|
||||
#
|
||||
# 7. Should builds fail, repeat the process.
|
||||
#
|
||||
# = Final Release =
|
||||
#
|
||||
# NOTE: A final release of a version, or multiple final releases of the
|
||||
# same version, of Zarafa 6.30.10 requires one unique tarball, probably
|
||||
# named similar to zarafa-6.30.10.tar.gz.
|
||||
#
|
||||
# Once this tarball is used for an RPM package that is actually released,
|
||||
# the .tar.gz source should not change anymore. You may, though, include
|
||||
# patches for the 6.30.10 RPM package in this .spec and bumping the release
|
||||
# number.
|
||||
#
|
||||
# When you do so, however, you will need to take into account upgrade paths
|
||||
# between distribution versions. E.g., when releasing 6.30.10-2 to F-11, you
|
||||
# would also need to release 6.30.10-2 to F-12.
|
||||
#
|
||||
# An alternative is to release 6.30.10.1 with a zarafa-6.30.10.1.tar.gz (yet
|
||||
# again ensuring there is an upgrade path to later distribution versions)
|
||||
#
|
||||
# The point behind this has to do with reproducibility, though admittedly,
|
||||
# the Source RPM corresponding to the binary RPM (comparing the
|
||||
# <version>-<release>.src.rpm vs. the installed
|
||||
# <version>-<release>.<arch>.rpm) does reveal the actual SVN revision number,
|
||||
# and should thus also build the exact same thing running in production (euh,
|
||||
# at customers, that is).
|
||||
#
|
||||
# 1. Set beta_or_rc to 0
|
||||
# 2. Set actual_release to 1, or the value of actual_release of
|
||||
# the previous stable release, +1 in case have already released
|
||||
# this SVN revision as a stable product.
|
||||
# 3. Set the SVN revision to the current SVN revision;
|
||||
# - Lacking a unique zarafa-<version>.svn<revision>.tar.gz source
|
||||
# tarball, setting the correct SVN revision in the .spec is
|
||||
# critical in order to be able to determine exactly what was in
|
||||
# the tarball at the time of this build. You may recover the exact
|
||||
# SVN revision used from the resulting SRPM, as the .spec in that
|
||||
# SRPM contains the SVN revision number (but not the resulting RPMs
|
||||
# just for the sake of appearance).
|
||||
# 4. Update %%changelog, considering the following;
|
||||
# - Remove all %%changelog stamps that have a beta_or_rc type of versioning,
|
||||
# again just for appearances sake, possibly preserving the important
|
||||
# messages from each beta_or_rc type of changelog entries, e.g.:
|
||||
#
|
||||
# * Some Time Your Name <your@email> - 6.30.10-0.1svn12345
|
||||
# - Improve packaging
|
||||
#
|
||||
# might, in a final release, become:
|
||||
#
|
||||
# * Some Time Zarafa Release Engineering <releng@zarafa.com> - 6.30.10-1
|
||||
# - Release 6.30.10
|
||||
# - Improve packaging
|
||||
#
|
||||
# - Possibly change only the release tag for the most recent changelog
|
||||
# %%changelog entry, if appropriate. This is assuming there is no
|
||||
# important or significant changes between the beta_or_rc and the final
|
||||
# product.
|
||||
# - Add a message about the changes to either the product or the RPM
|
||||
# packaging if appropriate.
|
||||
# 5. Build locally
|
||||
# 6. Build in mock for;
|
||||
# a) fedora-rawhide-x86_64,
|
||||
# b) fedora-12-x86_64,
|
||||
# c) fedora-11-x86_64,
|
||||
# d) epel-5-x86_64,
|
||||
# e) epel-4-x86_64
|
||||
#
|
||||
# or scratch build in koji;
|
||||
#
|
||||
# for tag in dist-f13 dist-f12-updates-candidate dist-f11-updates-candidate \
|
||||
# dist-5E-epel dist-4E-epel; do
|
||||
# echo "- $tag: `koji build --scratch --nowait $tag $srpm 2>&1 | grep \"Task info\" | awk '{print $3}'`"
|
||||
# done
|
||||
#
|
||||
# 7. When mock or koji scratch builds fail, repeat the process.
|
||||
#
|
||||
|
||||
%define beta_or_rc 0
|
||||
%define actual_release 1
|
||||
%define svnrevision 20002
|
||||
%define with_ldap 1
|
||||
%define with_xmlto 1
|
||||
|
||||
Summary: Zarafa Outlook Sharing and Open Source Collaboration
|
||||
Name: zarafa
|
||||
Version: 6.30.14
|
||||
%if %{beta_or_rc}
|
||||
Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}
|
||||
%else
|
||||
Release: %{actual_release}%{?dist}
|
||||
%endif
|
||||
# Red Hat Legal has been advised by email from Zarafa that no license is
|
||||
# required in order to use the letter string "zarafa" (combined with other
|
||||
# words) in the package naming, to refer to the software as "Zarafa" to
|
||||
# indicate its intended purpose, and to modify packages with bug fixes and
|
||||
# enhancements.
|
||||
License: AGPLv3 with exceptions
|
||||
Group: Applications/Productivity
|
||||
URL: http://www.zarafa.com/
|
||||
# http://www.zarafa.com/download-community -> "Zarafa Source Package"
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
Source1: %{name}.ini
|
||||
|
||||
Patch0: zarafa-6.30.4-package.patch
|
||||
# Patch 1, 2 and 3 were sent to upstream
|
||||
Patch1: zarafa-6.30.4-perl.patch
|
||||
Patch2: zarafa-6.30.10-undefined-symbol.patch
|
||||
Patch3: zarafa-6.30.10-chmod.patch
|
||||
# http://www.brodowski.org/zarafa/php-mapi/6.30.10.18495/18495_patch.diff
|
||||
Patch10: zarafa-6.30.4-brodowski.patch
|
||||
|
||||
BuildRequires: bison
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: byacc
|
||||
BuildRequires: flex
|
||||
BuildRequires: gettext
|
||||
BuildRequires: libical-devel >= 0.42
|
||||
BuildRequires: libvmime07-devel
|
||||
BuildRequires: libxml2-devel
|
||||
BuildRequires: mysql-devel >= 4.1
|
||||
BuildRequires: ncurses-devel
|
||||
BuildRequires: pam-devel
|
||||
BuildRequires: php-devel
|
||||
BuildRequires: libtool, automake, autoconf
|
||||
|
||||
%if 0%{?fedora} > 8
|
||||
BuildRequires: libcurl-devel
|
||||
BuildRequires: perl-devel
|
||||
%else
|
||||
BuildRequires: curl-devel
|
||||
BuildRequires: perl
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora} >= 12
|
||||
BuildRequires: libuuid-devel
|
||||
%endif
|
||||
|
||||
%if %{with_ldap}
|
||||
BuildRequires: openldap-devel
|
||||
%endif
|
||||
|
||||
%if %{with_xmlto}
|
||||
BuildRequires: xmlto
|
||||
%endif
|
||||
|
||||
# The normal zarafa package pulls in all of zarafa
|
||||
Requires: zarafa(ical) = %{version}-%{release}
|
||||
Requires: zarafa(dagent) = %{version}-%{release}
|
||||
Requires: zarafa(gateway) = %{version}-%{release}
|
||||
Requires: zarafa(monitor) = %{version}-%{release}
|
||||
Requires: zarafa(server) = %{version}-%{release}
|
||||
Requires: zarafa(spooler) = %{version}-%{release}
|
||||
Requires: zarafa(utils) = %{version}-%{release}
|
||||
Requires: zarafa(config) = %{version}-%{release}
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
%description
|
||||
Zarafa Outlook Sharing is a Microsoft Exchange replacement. The Open Source
|
||||
Collaboration provides an integration with your existing Linux mail server,
|
||||
native mobile phone support by ActiveSync compatibility and a webaccess with
|
||||
'Look & Feel' similar to Outlook using Ajax. Including an IMAP4 and a POP3
|
||||
gateway as well as an iCal/CalDAV gateway, Zarafa can combine the usability
|
||||
with the stability and flexibility of a Linux server.
|
||||
|
||||
The proven Zarafa groupware solution is using MAPI objects, provides a MAPI
|
||||
client library as well as programming interfaces for C++, PHP and Perl. The
|
||||
other Zarafa related packages need to be installed to gain all the features
|
||||
and benefits of Zarafa Outlook Sharing and Open Source Collaboration.
|
||||
|
||||
##
|
||||
## Zarafa Client
|
||||
##
|
||||
%package client
|
||||
Summary: Zarafa Client Library
|
||||
Group: System Environment/Libraries
|
||||
Requires: zarafa(common) = %{version}-%{release}
|
||||
Provides: zarafa(client) = %{version}-%{release}
|
||||
|
||||
%description client
|
||||
Zarafa client libraries for use with integrated MAPI clients.
|
||||
|
||||
##
|
||||
## Zarafa Common files
|
||||
##
|
||||
%package common
|
||||
Summary: Zarafa common files
|
||||
Group: System Environment/Daemons
|
||||
Requires(pre): shadow-utils
|
||||
Provides: zarafa(common) = %{version}-%{release}
|
||||
|
||||
%description common
|
||||
Common files and directories required by most Zarafa packages.
|
||||
|
||||
##
|
||||
## Zarafa Delivery Agent
|
||||
##
|
||||
%package dagent
|
||||
Summary: Zarafa Delivery Agent
|
||||
Group: System Environment/Daemons
|
||||
Requires: zarafa(client) = %{version}-%{release}
|
||||
Requires: zarafa(common) = %{version}-%{release}
|
||||
Requires(post): /sbin/chkconfig
|
||||
Requires(preun): /sbin/service
|
||||
Requires(preun): /sbin/chkconfig
|
||||
Requires(postun): /sbin/service
|
||||
Provides: zarafa(dagent) = %{version}-%{release}
|
||||
Provides: zarafa(config::dagent) = %{version}-%{release}
|
||||
|
||||
%description dagent
|
||||
The delivery agent delivers e-mails into the Zarafa server.
|
||||
It can be used to trigger the local mailer or act as the LMTP
|
||||
server.
|
||||
|
||||
##
|
||||
## Zarafa Development Headers
|
||||
##
|
||||
%package devel
|
||||
Summary: Development files for several Zarafa libraries
|
||||
Group: Development/Libraries
|
||||
Requires: %{name} = %{version}-%{release}, pkgconfig
|
||||
Requires: zarafa(common) = %{version}-%{release}
|
||||
Provides: %{name}-static = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The zarafa-devel package includes header files and libraries necessary for
|
||||
developing programs which use features from the Zarafa Outlook Sharing and
|
||||
Open Source Collaboration. The proven Zarafa groupware solution is using
|
||||
MAPI objects, provides a MAPI client library and programming interfaces for
|
||||
C++, PHP and Perl.
|
||||
|
||||
##
|
||||
## Zarafa Gateway
|
||||
##
|
||||
%package gateway
|
||||
Summary: Zarafa Gateway server (POP3/IMAP access)
|
||||
Group: System Environment/Daemons
|
||||
Requires: zarafa(client) = %{version}-%{release}
|
||||
Requires: zarafa(common) = %{version}-%{release}
|
||||
Requires(post): /sbin/chkconfig
|
||||
Requires(preun): /sbin/service
|
||||
Requires(preun): /sbin/chkconfig
|
||||
Requires(postun): /sbin/service
|
||||
Provides: zarafa(gateway) = %{version}-%{release}
|
||||
Provides: zarafa(config::gateway) = %{version}-%{release}
|
||||
|
||||
%description gateway
|
||||
The gateway enables other e-mail clients to connect through
|
||||
POP3 or IMAP to the Zarafa server to read their e-mail. With
|
||||
IMAP, it is also possible to view the contents of shared
|
||||
folders and subfolders. The gateway can be configured to
|
||||
listen for POP3, POP3S, IMAP and/or IMAPS.
|
||||
|
||||
##
|
||||
## Zarafa iCal/CalDAV server
|
||||
##
|
||||
%package ical
|
||||
Summary: The Zarafa iCal/CalDAV gateway
|
||||
Group: System Environment/Daemons
|
||||
Requires: zarafa(client) = %{version}-%{release}
|
||||
Requires: zarafa(common) = %{version}-%{release}
|
||||
Requires(post): /sbin/chkconfig
|
||||
Requires(preun): /sbin/service
|
||||
Requires(preun): /sbin/chkconfig
|
||||
Requires(postun): /sbin/service
|
||||
Provides: zarafa(ical) = %{version}-%{release}
|
||||
Provides: zarafa(caldav) = %{version}-%{release}
|
||||
Provides: zarafa(config::ical) = %{version}-%{release}
|
||||
Provides: zarafa(config::caldav) = %{version}-%{release}
|
||||
|
||||
%description ical
|
||||
The iCal/CalDAV gateway enables users to retrieve their
|
||||
calendar using iCalendar compliant clients. The iCal/CalDAV
|
||||
gateway can be configured to listen for HTTP and HTTPS
|
||||
requests.
|
||||
|
||||
##
|
||||
## Zarafa CalDAV package, merely an alias for zarafa-ical
|
||||
##
|
||||
%package caldav
|
||||
Summary: The Zarafa iCal/CalDAV gateway
|
||||
Group: System Environment/Daemons
|
||||
Requires: zarafa(ical) = %{version}-%{release}
|
||||
|
||||
%description caldav
|
||||
The iCal/CalDAV gateway enables users to retrieve their
|
||||
calendar using iCalendar compliant clients. The iCal/CalDAV
|
||||
gateway can be configured to listen for HTTP and HTTPS
|
||||
requests.
|
||||
|
||||
##
|
||||
## Zarafa Monitor Service
|
||||
##
|
||||
%package monitor
|
||||
Summary: Zarafa Monitoring service
|
||||
Group: System Environment/Daemons
|
||||
Requires: zarafa(client) = %{version}-%{release}
|
||||
Requires: zarafa(common) = %{version}-%{release}
|
||||
Requires(post): /sbin/chkconfig
|
||||
Requires(preun): /sbin/service
|
||||
Requires(preun): /sbin/chkconfig
|
||||
Requires(postun): /sbin/service
|
||||
Provides: zarafa(monitor) = %{version}-%{release}
|
||||
Provides: zarafa(config::monitor) = %{version}-%{release}
|
||||
|
||||
%description monitor
|
||||
The monitor checks user mailbox sizes. When a quotum is reached
|
||||
the monitor sends a quota notification email.
|
||||
|
||||
##
|
||||
## Zarafa Backend Server
|
||||
##
|
||||
%package server
|
||||
Summary: Zarafa Backend Server
|
||||
Group: System Environment/Daemons
|
||||
Requires: zarafa(common) = %{version}-%{release}
|
||||
Requires(post): /sbin/chkconfig
|
||||
Requires(preun): /sbin/service
|
||||
Requires(preun): /sbin/chkconfig
|
||||
Requires(postun): /sbin/service
|
||||
Provides: zarafa(server) = %{version}-%{release}
|
||||
Provides: zarafa(config) = %{version}-%{release}
|
||||
Provides: zarafa(config::server) = %{version}-%{release}
|
||||
|
||||
%description server
|
||||
The Zarafa groupware backend server
|
||||
|
||||
##
|
||||
## Zarafa Spooler Service
|
||||
##
|
||||
%package spooler
|
||||
Summary: Zarafa Spooler Service
|
||||
Group: System Environment/Daemons
|
||||
Requires: zarafa(client) = %{version}-%{release}
|
||||
Requires: zarafa(common) = %{version}-%{release}
|
||||
Requires(post): /sbin/chkconfig
|
||||
Requires(preun): /sbin/service
|
||||
Requires(preun): /sbin/chkconfig
|
||||
Requires(postun): /sbin/service
|
||||
Provides: zarafa(spooler) = %{version}-%{release}
|
||||
Provides: zarafa(config::spooler) = %{version}-%{release}
|
||||
|
||||
%description spooler
|
||||
The spooler sends all pending Zarafa e-mail to the recipients,
|
||||
from the Outbox of a user/all users.
|
||||
|
||||
##
|
||||
## Zarafa Utilities
|
||||
##
|
||||
%package utils
|
||||
Summary: Zarafa Utilities
|
||||
Group: Applications/System
|
||||
Requires: zarafa(client) = %{version}-%{release}
|
||||
Requires: zarafa(common) = %{version}-%{release}
|
||||
Provides: zarafa(utils) = %{version}-%{release}
|
||||
|
||||
%description utils
|
||||
Administration utilities for the Zarafa Groupware environment
|
||||
including reporting and password management.
|
||||
|
||||
##
|
||||
## MAPI System Libraries
|
||||
##
|
||||
%package -n libmapi
|
||||
Summary: Mapi libraries by Zarafa
|
||||
Group: System Environment/Libraries
|
||||
Requires: zarafa(client) = %{version}-%{release}
|
||||
Requires(post): /sbin/ldconfig
|
||||
Requires(postun): /sbin/ldconfig
|
||||
|
||||
%description -n libmapi
|
||||
MAPI libraries by Zarafa.
|
||||
|
||||
##
|
||||
## MAPI Perl extension
|
||||
##
|
||||
%package -n perl-libmapi
|
||||
Summary: Perl Mapi extension libraries by Zarafa
|
||||
Group: System Environment/Libraries
|
||||
Requires: perl
|
||||
|
||||
%description -n perl-libmapi
|
||||
Perl MAPI extension libraries by Zarafa.
|
||||
|
||||
##
|
||||
## MAPI PHP Extension
|
||||
##
|
||||
%package -n php-mapi
|
||||
Summary: A PHP Mapi client by Zarafa
|
||||
Group: Applications/Communications
|
||||
# Bug: Without mod_ssl, reloading httpd causes core dump
|
||||
Requires: mod_ssl
|
||||
Requires: php >= 4.3
|
||||
Provides: php(mapi) = %{version}-%{release}
|
||||
|
||||
%description -n php-mapi
|
||||
PHP MAPI extension by Zarafa to enable MAPI communication in PHP.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1 -b .package
|
||||
%patch1 -p1 -b .perl
|
||||
%patch2 -p1 -b .symbol
|
||||
%patch3 -p1 -b .chmod
|
||||
#%%patch10 -p5 -b .brodowski
|
||||
|
||||
# Needed to get rid of rpath
|
||||
libtoolize --force
|
||||
autoreconf --force --install
|
||||
|
||||
%build
|
||||
CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -g -ggdb"
|
||||
export CFLAGS
|
||||
%configure \
|
||||
--with-userscript-prefix=%{_sysconfdir}/%{name}/userscripts \
|
||||
--with-quotatemplate-prefix=%{_sysconfdir}/%{name}/quotamail \
|
||||
%if 0%{?rhel} > 0
|
||||
--enable-release \
|
||||
%endif
|
||||
--disable-static \
|
||||
--disable-testtools \
|
||||
--enable-perl
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
make \
|
||||
%if 0%{?rhel} > 0
|
||||
docdir=%{_datadir}/doc/%{name}/ \
|
||||
datarootdir=%{_datadir} \
|
||||
%endif
|
||||
DESTDIR=$RPM_BUILD_ROOT \
|
||||
INSTALL='install -p' \
|
||||
install
|
||||
|
||||
# Nuke all overlefts from licensed, managed or other proprietary items
|
||||
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/report-ca
|
||||
rm -f $RPM_BUILD_ROOT%{_mandir}/man?/zarafa-{backup,restore,report,ldapms.cfg,licensed{,.cfg}}.*
|
||||
|
||||
# Move all the initscripts to their appropriate place and
|
||||
# ensure that all services are off by default at boot time
|
||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/
|
||||
for service in server spooler dagent gateway monitor ical; do
|
||||
if [ -f $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/%{name}-$service.init.fc ]; then
|
||||
sed -e 's@345@-@' $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/%{name}-$service.init.fc > \
|
||||
$RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/%{name}-$service
|
||||
chmod 755 $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/%{name}-$service
|
||||
touch -c -r $RPM_BUILD_ROOT{%{_datadir}/doc/%{name}/%{name}-$service.init.fc,%{_sysconfdir}/rc.d/init.d/%{name}-$service}
|
||||
fi
|
||||
done
|
||||
|
||||
# Move the configuration files to their correct place and handle
|
||||
# /usr/lib vs. /usr/lib64 for all architectures correct and set
|
||||
# run_as_user, run_as_group and local_admin_users values correct
|
||||
for config in $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/*.cfg; do
|
||||
config=$(basename $config)
|
||||
if [ -f $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/$config ]; then
|
||||
sed -e 's@\(run_as_\(user\|group\)[[:space:]]*=\).*@\1 %{name}@' -e 's@/usr/lib/zarafa@%{_libdir}/%{name}@' \
|
||||
-e 's@\(local_admin_users[[:space:]]*=[[:space:]]*root.*\)@\1 %{name}@' \
|
||||
$RPM_BUILD_ROOT%{_datadir}/doc/%{name}/$config > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/$config
|
||||
chmod 640 $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/$config
|
||||
touch -c -r $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/$config $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/$config
|
||||
fi
|
||||
done
|
||||
|
||||
# Move the logrotate configuration file to it's correct place
|
||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/
|
||||
sed -e 's@\(}\)@ create 0644 %{name} %{name}\n\1@' -e '1,6d' \
|
||||
$RPM_BUILD_ROOT%{_datadir}/doc/%{name}/%{name}.logrotate > $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name}
|
||||
touch -c -r $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/%{name}.logrotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name}
|
||||
|
||||
# Install the PHP module configuration file appropriate
|
||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/php.d/
|
||||
install -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/php.d/%{name}.ini
|
||||
|
||||
# Create missing userscript directories for packaging them
|
||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/userscripts/{create,delete}{user,group,company}.d/
|
||||
|
||||
# Move the userscripts to their correct place and symlink them
|
||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/userscripts/
|
||||
for userscript in companies_common.sh groups_common.sh users_common.sh \
|
||||
createcompany creategroup createuser deletecompany deletegroup deleteuser; do
|
||||
mv -f $RPM_BUILD_ROOT{%{_sysconfdir},%{_datadir}}/%{name}/userscripts/$userscript
|
||||
ln -sf ../../..%{_datadir}/%{name}/userscripts/$userscript $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/userscripts/$userscript
|
||||
done
|
||||
|
||||
# Create the data directory and install some files into
|
||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/
|
||||
install -p -m 755 installer/linux/db-{calc-storesize,convert-attachments-to-files} $RPM_BUILD_ROOT%{_datadir}/%{name}/
|
||||
install -p -m 755 installer/linux/ssl-certificates.sh $RPM_BUILD_ROOT%{_datadir}/%{name}/
|
||||
install -p -m 644 installer/ldap/%{name}.schema $RPM_BUILD_ROOT%{_datadir}/%{name}/
|
||||
|
||||
# Create the default log and lib directory for packaging
|
||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/{log,lib}/%{name}/
|
||||
|
||||
# Remove all libtool .la files to avoid packaging of them
|
||||
rm -f $RPM_BUILD_ROOT%{_libdir}/{,php/modules,%{name}}/*.la
|
||||
|
||||
# Remove files that are anyway in %doc or %{_datadir}/%{name}/
|
||||
rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/
|
||||
|
||||
%find_lang %{name}
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%pre common
|
||||
getent group %{name} > /dev/null || %{_sbindir}/groupadd -r %{name}
|
||||
getent passwd %{name} > /dev/null || %{_sbindir}/useradd -r -g %{name} -d %{_localstatedir}/lib/%{name} -s /sbin/nologin -c "Zarafa Service Account" %{name}
|
||||
exit 0
|
||||
|
||||
%post dagent
|
||||
[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-dagent
|
||||
# Ensure correct log file ownership after upgrade from official packages
|
||||
chown %{name}:%{name} %{_localstatedir}/log/%{name}/dagent.* > /dev/null 2>&1 || :
|
||||
|
||||
%post ical
|
||||
[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-ical
|
||||
# Ensure correct log file ownership after upgrade from official packages
|
||||
chown %{name}:%{name} %{_localstatedir}/log/%{name}/ical.* > /dev/null 2>&1 || :
|
||||
|
||||
%post gateway
|
||||
[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-gateway
|
||||
# Ensure correct log file ownership after upgrade from official packages
|
||||
chown %{name}:%{name} %{_localstatedir}/log/%{name}/gateway.* > /dev/null 2>&1 || :
|
||||
|
||||
%post monitor
|
||||
[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-monitor
|
||||
# Ensure correct log file ownership after upgrade from official packages
|
||||
chown %{name}:%{name} %{_localstatedir}/log/%{name}/monitor.* > /dev/null 2>&1 || :
|
||||
|
||||
%post server
|
||||
[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-server
|
||||
# Ensure correct log file ownership after upgrade from official packages
|
||||
chown %{name}:%{name} %{_localstatedir}/log/%{name}/server.* > /dev/null 2>&1 || :
|
||||
|
||||
%post spooler
|
||||
[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-spooler
|
||||
# Ensure correct log file ownership after upgrade from official packages
|
||||
chown %{name}:%{name} %{_localstatedir}/log/%{name}/spooler.* > /dev/null 2>&1 || :
|
||||
|
||||
%post -n libmapi -p /sbin/ldconfig
|
||||
|
||||
%preun dagent
|
||||
if [ $1 -eq 0 ]; then
|
||||
/sbin/service %{name}-dagent stop > /dev/null 2>&1 || :
|
||||
/sbin/chkconfig --del %{name}-dagent
|
||||
fi
|
||||
|
||||
%preun ical
|
||||
if [ $1 -eq 0 ]; then
|
||||
/sbin/service %{name}-ical stop > /dev/null 2>&1 || :
|
||||
/sbin/chkconfig --del %{name}-ical
|
||||
fi
|
||||
|
||||
%preun gateway
|
||||
if [ $1 -eq 0 ]; then
|
||||
/sbin/service %{name}-gateway stop > /dev/null 2>&1 || :
|
||||
/sbin/chkconfig --del %{name}-gateway
|
||||
fi
|
||||
|
||||
%preun monitor
|
||||
if [ $1 -eq 0 ]; then
|
||||
/sbin/service %{name}-monitor stop > /dev/null 2>&1 || :
|
||||
/sbin/chkconfig --del %{name}-monitor
|
||||
fi
|
||||
|
||||
%preun server
|
||||
if [ $1 -eq 0 ]; then
|
||||
/sbin/service %{name}-server stop > /dev/null 2>&1 || :
|
||||
/sbin/chkconfig --del %{name}-server
|
||||
fi
|
||||
|
||||
%preun spooler
|
||||
if [ $1 -eq 0 ]; then
|
||||
/sbin/service %{name}-spooler stop > /dev/null 2>&1 || :
|
||||
/sbin/chkconfig --del %{name}-spooler
|
||||
fi
|
||||
|
||||
%postun dagent
|
||||
if [ $1 -ne 0 ]; then
|
||||
/sbin/service %{name}-dagent condrestart > /dev/null 2>&1 || :
|
||||
fi
|
||||
|
||||
%postun ical
|
||||
if [ $1 -ne 0 ]; then
|
||||
/sbin/service %{name}-ical condrestart > /dev/null 2>&1 || :
|
||||
fi
|
||||
|
||||
%postun gateway
|
||||
if [ $1 -ne 0 ]; then
|
||||
/sbin/service %{name}-gateway condrestart > /dev/null 2>&1 || :
|
||||
fi
|
||||
|
||||
%postun monitor
|
||||
if [ $1 -ne 0 ]; then
|
||||
/sbin/service %{name}-monitor condrestart > /dev/null 2>&1 || :
|
||||
fi
|
||||
|
||||
%postun server
|
||||
if [ $1 -ne 0 ]; then
|
||||
/sbin/service %{name}-server condrestart > /dev/null 2>&1 || :
|
||||
fi
|
||||
|
||||
%postun spooler
|
||||
if [ $1 -ne 0 ]; then
|
||||
/sbin/service %{name}-spooler condrestart > /dev/null 2>&1 || :
|
||||
fi
|
||||
|
||||
%postun -n libmapi -p /sbin/ldconfig
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
|
||||
%files caldav
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
|
||||
%files client
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_libdir}/libzarafaclient.so
|
||||
|
||||
%files common
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3 doc/performance-tuning.txt
|
||||
%dir %{_sysconfdir}/%{name}/
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
|
||||
%dir %{_libdir}/%{name}/
|
||||
%{_mandir}/man1/%{name}.1*
|
||||
%dir %{_datadir}/%{name}/
|
||||
%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/
|
||||
%dir %attr(0755,%{name},%{name}) %{_localstatedir}/log/%{name}/
|
||||
|
||||
%files dagent
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3 installer/linux/createuser.dotforward
|
||||
%{_bindir}/%{name}-autorespond
|
||||
%{_bindir}/%{name}-dagent
|
||||
%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/dagent.cfg
|
||||
%{_sysconfdir}/rc.d/init.d/%{name}-dagent
|
||||
%{_mandir}/man1/%{name}-dagent.1*
|
||||
%{_mandir}/man5/%{name}-dagent.cfg.5*
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_libdir}/libicalmapi.so
|
||||
%{_libdir}/libinetmapi.so
|
||||
%{_libdir}/libmapi.so
|
||||
%{_libdir}/libperlmapi.so
|
||||
%{_libdir}/libcommon_mapi.a
|
||||
%{_libdir}/libcommon_ssl.a
|
||||
%{_libdir}/libcommon_util.a
|
||||
%{_libdir}/libfreebusy.a
|
||||
%{_includedir}/icalmapi/
|
||||
%{_includedir}/inetmapi/
|
||||
%{_includedir}/mapi4linux/
|
||||
%{_includedir}/%{name}/
|
||||
%{_libdir}/pkgconfig/%{name}.pc
|
||||
|
||||
%files gateway
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_bindir}/%{name}-gateway
|
||||
%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/gateway.cfg
|
||||
%{_sysconfdir}/rc.d/init.d/%{name}-gateway
|
||||
%{_mandir}/man1/%{name}-gateway.1*
|
||||
%{_mandir}/man5/%{name}-gateway.cfg.5*
|
||||
|
||||
%files ical
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_bindir}/%{name}-ical
|
||||
%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ical.cfg
|
||||
%{_sysconfdir}/rc.d/init.d/%{name}-ical
|
||||
%{_mandir}/man1/%{name}-ical.1*
|
||||
%{_mandir}/man5/%{name}-ical.cfg.5*
|
||||
|
||||
%files monitor
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_bindir}/%{name}-monitor
|
||||
%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/monitor.cfg
|
||||
%dir %{_sysconfdir}/%{name}/quotamail/
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/quotamail/companyhard.mail
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/quotamail/companysoft.mail
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/quotamail/companywarning.mail
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/quotamail/userhard.mail
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/quotamail/usersoft.mail
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/quotamail/userwarning.mail
|
||||
%{_sysconfdir}/rc.d/init.d/%{name}-monitor
|
||||
%{_mandir}/man1/%{name}-monitor.1*
|
||||
%{_mandir}/man5/%{name}-monitor.cfg.5*
|
||||
|
||||
%files server -f %{name}.lang
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_bindir}/%{name}-server
|
||||
%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/server.cfg
|
||||
%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/unix.cfg
|
||||
%{_sysconfdir}/rc.d/init.d/%{name}-server
|
||||
%dir %{_sysconfdir}/%{name}/userscripts/
|
||||
%{_sysconfdir}/%{name}/userscripts/createuser
|
||||
%{_sysconfdir}/%{name}/userscripts/creategroup
|
||||
%{_sysconfdir}/%{name}/userscripts/createcompany
|
||||
%{_sysconfdir}/%{name}/userscripts/deleteuser
|
||||
%{_sysconfdir}/%{name}/userscripts/deletegroup
|
||||
%{_sysconfdir}/%{name}/userscripts/deletecompany
|
||||
%{_sysconfdir}/%{name}/userscripts/*common.sh
|
||||
%dir %{_sysconfdir}/%{name}/userscripts/createuser.d/
|
||||
%dir %{_sysconfdir}/%{name}/userscripts/creategroup.d/
|
||||
%dir %{_sysconfdir}/%{name}/userscripts/createcompany.d/
|
||||
%dir %{_sysconfdir}/%{name}/userscripts/deleteuser.d/
|
||||
%dir %{_sysconfdir}/%{name}/userscripts/deletegroup.d/
|
||||
%dir %{_sysconfdir}/%{name}/userscripts/deletecompany.d/
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/userscripts/createcompany.d/00createpublic
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/userscripts/createuser.d/00createstore
|
||||
%{_datadir}/%{name}/userscripts/
|
||||
%{_libdir}/%{name}/dbplugin.so
|
||||
%{_libdir}/%{name}/unixplugin.so
|
||||
%{_mandir}/man1/%{name}-server.1*
|
||||
%{_mandir}/man5/%{name}-server.cfg.5*
|
||||
%{_mandir}/man5/%{name}-unix.cfg.5*
|
||||
%if %{with_ldap}
|
||||
%{_datadir}/%{name}/%{name}.schema
|
||||
%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ldap.active-directory.cfg
|
||||
%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ldap.openldap.cfg
|
||||
%{_libdir}/%{name}/ldapplugin.so
|
||||
%{_mandir}/man5/%{name}-ldap.cfg.5*
|
||||
%endif
|
||||
|
||||
%files spooler
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_bindir}/%{name}-spooler
|
||||
%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/spooler.cfg
|
||||
%{_sysconfdir}/rc.d/init.d/%{name}-spooler
|
||||
%{_mandir}/man1/%{name}-spooler.1*
|
||||
%{_mandir}/man5/%{name}-spooler.cfg.5*
|
||||
|
||||
%files utils
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_bindir}/%{name}-admin
|
||||
%{_bindir}/%{name}-fsck
|
||||
%{_bindir}/%{name}-passwd
|
||||
%{_bindir}/%{name}-stats
|
||||
%{_datadir}/%{name}/db-calc-storesize
|
||||
%{_datadir}/%{name}/db-convert-attachments-to-files
|
||||
%{_datadir}/%{name}/ssl-certificates.sh
|
||||
%{_mandir}/man1/%{name}-admin.1*
|
||||
%{_mandir}/man1/%{name}-fsck.1*
|
||||
%{_mandir}/man1/%{name}-passwd.1*
|
||||
%{_mandir}/man1/%{name}-stats.1*
|
||||
|
||||
%files -n libmapi
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_libdir}/libicalmapi.so.*
|
||||
%{_libdir}/libinetmapi.so.*
|
||||
%{_libdir}/libmapi.so.*
|
||||
|
||||
%files -n perl-libmapi
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%{_libdir}/libperlmapi.so.*
|
||||
|
||||
%files -n php-mapi
|
||||
%defattr(-,root,root,-)
|
||||
%doc installer/licenseagreement/AGPL-3
|
||||
%config(noreplace) %{_sysconfdir}/php.d/%{name}.ini
|
||||
%{_datadir}/php/mapi/
|
||||
%if 0%{?rhel}%{?fedora} > 4
|
||||
%{_libdir}/php/modules/mapi.so
|
||||
%else
|
||||
%{_libdir}/php4/mapi.so
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Sat May 01 2010 Robert Scheck <robert@fedoraproject.org> 6.30.14-1
|
||||
- Upgrade to 6.30.14
|
||||
|
||||
* Sun Apr 25 2010 Robert Scheck <robert@fedoraproject.org> 6.30.13-1
|
||||
- Upgrade to 6.30.13
|
||||
- Moved zarafa.schema file from %%doc to %%{_datadir}/%%{name}
|
||||
|
||||
* Sat Mar 20 2010 Robert Scheck <robert@fedoraproject.org> 6.30.12-1
|
||||
- Upgrade to 6.30.12
|
||||
|
||||
* Fri Mar 19 2010 Robert Scheck <robert@fedoraproject.org> 6.30.11-1
|
||||
- Upgrade to 6.30.11
|
||||
|
||||
* Tue Feb 23 2010 Robert Scheck <robert@fedoraproject.org> 6.30.10-2
|
||||
- Backported a patch from trunk to avoid the crash of zarafa-server
|
||||
when creating new user with db or unix plugin (#564282, #567262)
|
||||
- Backported another patch from trunk to avoid the crash of httpd
|
||||
caused by PHP mapi.so during the logon in the webaccess (#564129)
|
||||
|
||||
* Sat Feb 06 2010 Robert Scheck <robert@fedoraproject.org> 6.30.10-1
|
||||
- Upgrade to 6.30.10 (#498194)
|
||||
- Initial spec file for Fedora and Red Hat Enterprise Linux (thanks
|
||||
to Jeroen van Meeuwen, John van der Kamp and Steve Hardy)
|
||||
Loading…
Add table
Add a link
Reference in a new issue