Compare commits

..

91 commits

Author SHA1 Message Date
edecf3addf Package is retired 2014-12-07 19:58:25 +01:00
Kevin Kofler
2fe388869b Rebuild for reference-counting-enabled clucene09
* Sat Oct 25 2014 Kevin Kofler <Kevin@tigcc.ticalc.org> 7.1.11-2
- Rebuild for reference-counting-enabled clucene09
2014-10-26 00:21:57 +02:00
510c99822c Also upload sources :) 2014-10-15 03:38:30 +02:00
07cc786753 - Upgrade to 7.1.11 (#1139442)
- Removed bundled PHP PEAR files/libraries
- Added patch to allow mitigation of SSLv3/POODLE vulnerability
- Added patch to implement ECDHE support (depending on OpenSSL)
- Added patch to allow plaintext authentication from 127.0.0.1
2014-10-15 03:13:44 +02:00
David Tardon
e638a4f4d6 rebuild for ICU 53.1 2014-08-26 14:26:52 +02:00
00cb5e0f90 Merge branch 'master' of ssh://pkgs.fedoraproject.org/zarafa
Conflicts:
	zarafa.spec
2014-08-25 22:46:52 +02:00
7739e805bc Fixed multiple incorrect default permissions (#1133439) 2014-08-25 22:44:57 +02:00
d37b1b3a55 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild 2014-08-18 11:29:37 +00:00
61f6cf2560 Rebuild for gSOAP 2.8.17 2014-07-14 22:36:33 +02:00
815006aaf2 - Added a workaround to really support MariaDB (#995870)
- Re-added a patch to allow building without zarafa-search
2014-07-11 00:34:10 +02:00
1920954713 Avoid same (default) PASSWORD_KEY/PASSWORD_IV for all installations of zarafa-webaccess, see also https://bugzilla.redhat.com/show_bug.cgi?id=1073618#c4 and later (CVE-2014-0103 zarafa: passwords stored in cleartext on server) 2014-06-29 16:40:57 +02:00
7675831392 Upgrade to 7.1.10 2014-06-29 16:10:40 +02:00
7a0cf2ce1b rebuild for https://fedoraproject.org/wiki/Changes/Php56 2014-06-20 09:30:53 +02:00
Dennis Gilmore
3087390db6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild 2014-06-07 13:01:58 -05:00
Petr Machata
f4c0ef34ab Properly bump release for Boost rebuild 2014-05-25 17:22:06 +02:00
Petr Machata
f5d6af1400 Rebuild for boost 1.55.0 2014-05-22 19:21:56 +02:00
9c2ceb71fe Upgrade to 7.1.9 2014-05-01 00:52:54 +02:00
4d1d1cd761 Upgrade to 7.1.8 (re-released) 2014-02-21 20:52:35 +01:00
Parag Nemade
673220e876 Rebuild for icu 52 2014-02-14 10:35:44 +05:30
53437ee5ce Merge branch 'master' of ssh://pkgs.fedoraproject.org/zarafa 2014-01-30 23:43:27 +01:00
83053f8fb1 Upgrade to 7.1.8 (#1056767, #1059903) 2014-01-30 23:42:43 +01:00
839a8c8eb6 RHEL 7 ships a newer clucene that Zarafa does not (yet?) support, use compatibility package 2014-01-12 21:08:55 +01:00
310ac542a5 - Upgrade to 7.1.7 (#1008068)
- Added dependency from gateway and spooler to python-MAPI
- Added requirements to virtual libvmime ABI/API provides
2013-12-08 17:34:22 +01:00
6ac2e41dad - Upgrade to 7.1.5 (#747241, #863498, #926039, #946900)
- Added configuration compatibility for Apache 2.2 and 2.4
2013-08-05 01:54:36 +02:00
Dennis Gilmore
abe49a955c - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild 2013-08-04 04:44:18 -05:00
Petr Machata
290283cdac Rebuild for boost 1.54.0 2013-07-27 15:02:58 +02:00
Rex Dieter
38173f51e7 rebuild (libical) 2013-05-25 11:38:28 -05:00
d83551f679 Upgrade to 7.1.4 2013-03-24 01:20:17 +01:00
e55f815f8f rebuild for http://fedoraproject.org/wiki/Features/Php55 2013-03-22 19:49:45 +01:00
5bfb490b64 Upgrade to 7.0.13 2013-03-03 19:41:44 +01:00
6c74fcb750 More wildcard 2013-02-10 23:41:05 +01:00
94b5b59949 Merge branch 'master' of ssh://pkgs.fedoraproject.org/zarafa
Conflicts:
	zarafa.spec
2013-02-10 23:15:12 +01:00
8e0248cdb8 Upgrade to 7.0.12 2013-02-10 23:13:32 +01:00
Denis Arnaud
0a221ff30c Rebuild for Boost-1.53.0 2013-02-10 21:27:18 +01:00
Denis Arnaud
736578b14c Rebuild for Boost-1.53.0 2013-02-10 21:25:18 +01:00
Denis Arnaud
2a9ed1e408 Rebuild for Boost-1.53.0 2013-02-09 23:25:55 +01:00
Parag Nemade
bb2302c6dd Rebuild for icu 50 2013-02-01 21:08:08 +05:30
e68a2f3cf5 Upgrade to 7.0.9 (#847534) 2012-08-13 03:16:46 +02:00
663f100df7 rebuild (boost) 2012-08-12 13:16:50 -05:00
Dennis Gilmore
bcde06c2f4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild 2012-07-22 03:02:26 -05:00
e14f982e66 Added patch to build Zarafa on armv5tel and armv7hl 2012-06-26 01:35:25 +02:00
7700964948 Added patch to solve invalid conversion conflicting with zlib >= 1.2.8 2012-06-19 23:42:39 +02:00
5c5bb01851 Upgrade to 7.0.8 2012-06-19 23:03:27 +02:00
43789b1eaa Upgrade to 7.0.7 2012-05-09 00:33:01 +02:00
c5df23f34c It's /etc/mapi/ not /etc/zarafa/ 2012-04-23 00:45:03 +02:00
2d71de1ca5 Upgrade to 7.0.6 2012-04-22 05:47:32 +02:00
Dennis Gilmore
8a43b1b936 - Rebuilt for c++ ABI breakage 2012-02-28 14:41:48 -06:00
remi
af3ac7fe3f bump release 2012-01-20 18:26:07 +01:00
remi
d46d959e0d PHP 5.4.0 Build 2012-01-20 18:24:30 +01:00
04b111c156 Uploaded source for 7.0.4 2012-01-13 01:29:40 +01:00
d4b9b96d28 - Upgrade to 7.0.4
- Added patch for rebuilding with PHP 5.4 (thanks to Remi Collet)
- Work around crashs by reducing open file descriptors (#760888)
2012-01-13 01:28:55 +01:00
b2a9f5349a Enabled non-optional build of epoll socket handling (#760888) 2011-12-17 16:17:06 +01:00
48446669ef Added patch to compile with Boost 1.49 on Rawhide 2011-12-17 15:07:14 +01:00
e315db38d6 Upgrade to 7.0.3 2011-11-20 02:11:12 +01:00
970966be09 Disable CLucene support on Fedora 16+ because of incompatibility (for now) 2011-10-01 14:17:20 +02:00
6ee8c0a5af Upgrade to 7.0.2 (#717968) 2011-10-01 12:57:09 +02:00
67ea84810b Merge branch 'master' of ssh://pkgs.fedoraproject.org/zarafa
Conflicts:
	zarafa.spec
2011-10-01 12:55:30 +02:00
9d719ee444 Upgrade to 7.0.2 (#717968) 2011-10-01 12:54:29 +02:00
Adam Jackson
b7e65a1021 Rebuild for new icu 2011-09-23 17:40:23 -04:00
552319a638 Disable CLucene support on Fedora 16+ because of incompatibility (for now) 2011-08-14 02:01:37 +02:00
28e9711af6 Upgrade to 7.0.1 (#725250, #725909, #727346) 2011-08-14 01:57:02 +02:00
e36b99035f Disable CLucene support on Rawhide because of incompatibility (for now) 2011-06-27 15:09:49 +02:00
bd187d113a Upgrade to 7.0.0 2011-06-27 15:06:35 +02:00
410170d2e7 Upgrade to 6.40.9 2011-06-14 00:59:58 +02:00
d7947196bd Upgrade to 6.40.8 2011-05-28 14:56:46 +02:00
810c7cefe3 Add a forgotten backslash 2011-04-06 01:14:56 +02:00
b4fce50f37 Upgrade to 6.40.7 2011-04-06 01:01:14 +02:00
df8baf3d2b Worked around the broken result of the mass rebuild script... 2011-03-24 06:56:00 +01:00
Dan Horák
42c1e498ee rebuilt for mysql 5.5.10 (soname bump in libmysqlclient) 2011-03-23 19:58:35 +01:00
4486627ab2 Upgrade to 6.40.6 2011-03-21 16:29:59 +01:00
9373172dca Use %filter_setup macro only in EPEL > 4 or at all Fedora releases 2011-02-27 23:51:26 +01:00
cc7b75a487 Upgrade to 6.40.5 2011-02-27 23:31:59 +01:00
39fcbdb446 Worked around the broken result of the mass rebuild script... 2011-02-10 01:49:49 +01:00
Dennis Gilmore
f22fb56970 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild 2011-02-08 02:29:38 -06:00
407dbd8bd9 Upgrade to 6.40.4 2010-12-12 21:05:47 +01:00
fe126ce41f Upgrade to 6.40.3 2010-10-29 23:21:28 +02:00
64f29bf514 Upgrade to 6.40.2 2010-08-31 21:18:10 +02:00
295fbd2d19 Upgrade to 6.40.1 2010-08-09 21:47:53 +02:00
Fedora Release Engineering
e6cba73712 dist-git conversion 2010-07-29 16:27:59 +00:00
2c4dd64218 Rebuild for perl 5.12.1 2010-06-14 22:02:06 +00:00
f58a1b9661 Really add & commit zarafa-6.40.0-pthread.patch 2010-06-10 22:15:22 +00:00
a0d1629707 Added patch to ensure -pthread for -lclucene configure test 2010-06-10 22:12:36 +00:00
aa026f211f Upgrade to 6.40.0 (#564135, #565252, #600993) 2010-06-10 19:50:38 +00:00
Marcela Mašláňová
5cf9985710 - Mass rebuild with perl-5.12.0 2010-05-07 15:38:30 +00:00
3284666756 Upgrade to 6.30.14 2010-05-01 12:14:14 +00:00
5c62cedd3c - Upgrade to 6.30.13
- Moved zarafa.schema file from %doc to %{_datadir}/%{name}
2010-04-25 17:06:17 +00:00
8d61ba98a5 Move zarafa.schema from %doc to %{_datadir}/%{name} for easier symlinking
etc.
2010-03-28 19:08:24 +00:00
b1896bd667 Upgrade to 6.30.12 2010-03-20 11:54:40 +00:00
b208e604da Upgrade to 6.30.11 2010-03-18 23:33:23 +00:00
abbcbf91a8 - 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)
2010-02-23 21:24:37 +00:00
0e0b238e33 Initial import of Zarafa into Fedora and EPEL 2010-02-08 14:21:33 +00:00
10 changed files with 1 additions and 1771 deletions

1
.gitignore vendored
View file

@ -1 +0,0 @@
zarafa-6.30.14.tar.gz

1
dead.package Normal file
View file

@ -0,0 +1 @@
Package is retired

View file

@ -1 +0,0 @@
fa3183f71027b8025373b05f27aaf742 zarafa-6.30.14.tar.gz

View file

@ -1,13 +0,0 @@
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

View file

@ -1,35 +0,0 @@
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

View file

@ -1,774 +0,0 @@
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 \

View file

@ -1,48 +0,0 @@
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

View file

@ -1,53 +0,0 @@
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:

View file

@ -1,2 +0,0 @@
; Enable Zarafa mapi extension module
extension=mapi.so

View file

@ -1,844 +0,0 @@
#
# 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)