From c5a16bea4d8a75c37100270773810b9e8718213f Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Wed, 17 Feb 2010 03:35:34 +0000 Subject: [PATCH 01/69] Initialize branch F-13 for zarafa --- branch | 1 + 1 file changed, 1 insertion(+) create mode 100644 branch diff --git a/branch b/branch new file mode 100644 index 0000000..baa94ef --- /dev/null +++ b/branch @@ -0,0 +1 @@ +F-13 From 19841a0e3a1bbe19f2e360f20e1d66de16909452 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Tue, 23 Feb 2010 21:24:36 +0000 Subject: [PATCH 02/69] - 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) --- zarafa-6.30.10-fortify.patch | 36 ++++++++++ zarafa-6.30.10-long-ulong.patch | 123 ++++++++++++++++++++++++++++++++ zarafa.spec | 15 +++- 3 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 zarafa-6.30.10-fortify.patch create mode 100644 zarafa-6.30.10-long-ulong.patch diff --git a/zarafa-6.30.10-fortify.patch b/zarafa-6.30.10-fortify.patch new file mode 100644 index 0000000..3a4a4a1 --- /dev/null +++ b/zarafa-6.30.10-fortify.patch @@ -0,0 +1,36 @@ +Remerged changeset of Subversion Revision 18952 from 6.40.0 (trunk) to 6.30.10 + +--- zarafa-6.30.10/provider/common/ZarafaUtil.cpp 2010-01-26 17:34:51.000000000 +0100 ++++ zarafa-6.30.10/provider/common/ZarafaUtil.cpp.fortify 2010-02-22 15:52:11.000000000 +0100 +@@ -355,7 +355,8 @@ + if (!strExternId.empty()) + { + lpUserEid->ulVersion = 1; +- lstrcpy(lpUserEid->szExId, strEncExId.c_str()); ++ // avoid FORTIFY_SOURCE checks in strcpy to an address that the compiler thinks is 1 size large ++ memcpy(lpUserEid->szExId, strEncExId.c_str(), strEncExId.length()+1); + } + + lpsEntryId->__size = ulLen; +--- zarafa-6.30.10/provider/libserver/ECUserManagement.cpp 2010-01-26 17:34:51.000000000 +0100 ++++ zarafa-6.30.10/provider/libserver/ECUserManagement.cpp.fortify 2010-02-22 16:03:33.000000000 +0100 +@@ -4152,7 +4152,8 @@ + if (!strEncExId.empty()) + { + lpAbeid->ulVersion = 1; +- strcpy(lpAbeid->szExId, strEncExId.c_str()); ++ // avoid FORTIFY_SOURCE checks in strcpy to an address that the compiler thinks is 1 size large ++ memcpy(lpAbeid->szExId, strEncExId.c_str(), strEncExId.length()+1); + } + + *lpsSourceKey = SOURCEKEY(ulLen, (char*)lpAbeid); +@@ -4190,7 +4191,8 @@ + memset(lpEid, 0, CbNewABEID(strEncExId.c_str())); + + lpEid->ulVersion = 1; +- lstrcpy(lpEid->szExId, strEncExId.c_str()); ++ // avoid FORTIFY_SOURCE checks in strcpy to an address that the compiler thinks is 1 size large ++ memcpy(lpEid->szExId, strEncExId.c_str(), strEncExId.length()+1); + + } + diff --git a/zarafa-6.30.10-long-ulong.patch b/zarafa-6.30.10-long-ulong.patch new file mode 100644 index 0000000..97e07e0 --- /dev/null +++ b/zarafa-6.30.10-long-ulong.patch @@ -0,0 +1,123 @@ +Remerged changeset of Subversion Revision 18968 from 6.40.0 (trunk) to 6.30.10 + +--- zarafa-6.30.10/php-ext/main.cpp 2010-01-26 17:34:48.000000000 +0100 ++++ zarafa-6.30.10/php-ext/main.cpp.php.long-ulong 2010-02-23 20:39:15.000000000 +0100 +@@ -2125,10 +2125,11 @@ + { + // params + zval * res; +- LPMAPITABLE lpTable = NULL; + zval * sortArray; ++ long ulFlags = 0; ++ // local ++ LPMAPITABLE lpTable = NULL; + LPSSortOrderSet lpSortCriteria = NULL; +- ULONG ulFlags = 0; + + RETVAL_FALSE; + MAPI_G(hr) = hrSuccess; +@@ -2189,10 +2190,11 @@ + { + // params + zval *res; ++ zval *restrictionArray; ++ ulong ulFlags = 0; ++ // local + LPMAPITABLE lpTable = NULL; +- zval *restrictionArray; + LPSRestriction lpRestrict = NULL; +- ULONG ulFlags = 0; + + RETVAL_FALSE; + MAPI_G(hr) = hrSuccess; +@@ -2213,7 +2215,7 @@ + } + } + +- MAPI_G(hr) = lpTable->Restrict(lpRestrict, ulFlags); // TODO: set flags from php? ++ MAPI_G(hr) = lpTable->Restrict(lpRestrict, ulFlags); + if(MAPI_G(hr) != hrSuccess) + goto exit; + +@@ -3696,11 +3698,13 @@ + } + + ZEND_FUNCTION(mapi_folder_getsearchcriteria) { ++ // params + zval *res = NULL; + zval *restriction = NULL; + zval *folderlist = NULL; + LPMAPIFOLDER lpFolder = NULL; + long ulFlags = 0; ++ // local + LPSRestriction lpRestriction = NULL; + LPENTRYLIST lpFolderList = NULL; + ULONG ulSearchState = 0; +@@ -3734,13 +3738,15 @@ + } + + ZEND_FUNCTION(mapi_folder_setsearchcriteria) { +- LPMAPIFOLDER lpFolder = NULL; +- LPENTRYLIST lpFolderList = NULL; +- LPSRestriction lpRestriction = NULL; +- long ulFlags = 0; ++ // param + zval *res = NULL; + zval *restriction = NULL; + zval *folderlist = NULL; ++ long ulFlags = 0; ++ // local ++ LPMAPIFOLDER lpFolder = NULL; ++ LPENTRYLIST lpFolderList = NULL; ++ LPSRestriction lpRestriction = NULL; + + RETVAL_FALSE; + MAPI_G(hr) = hrSuccess; +@@ -6396,9 +6402,11 @@ + + ZEND_FUNCTION(mapi_freebusyupdate_publish) + { ++ // params ++ zval* resFBUpdate = NULL; + zval* aBlocks = NULL; + IFreeBusyUpdate* lpFBUpdate = NULL; +- zval* resFBUpdate = NULL; ++ // local + FBBlock_1* lpBlocks = NULL; + ULONG cBlocks = 0; + HashTable* target_hash = NULL; +@@ -6495,12 +6503,14 @@ + + ZEND_FUNCTION(mapi_freebusyupdate_savechanges) + { +- IFreeBusyUpdate* lpFBUpdate = NULL; ++ // params + zval* resFBUpdate = NULL; +- FILETIME ftmStart; +- FILETIME ftmEnd; + time_t ulUnixStart = 0; + time_t ulUnixEnd = 0; ++ IFreeBusyUpdate* lpFBUpdate = NULL; ++ // local ++ FILETIME ftmStart; ++ FILETIME ftmEnd; + + RETVAL_FALSE; + MAPI_G(hr) = hrSuccess; +@@ -6523,13 +6533,14 @@ + + ZEND_FUNCTION(mapi_favorite_add) + { ++ // params + zval * resSession = NULL; + zval * resFolder = NULL; + Session *lpSession = NULL; +- LPMAPIFOLDER lpShortCutFolder = NULL; +- + LPMAPIFOLDER lpFolder = NULL; + long ulFlags = 0; ++ // local ++ LPMAPIFOLDER lpShortCutFolder = NULL; + ULONG cbAliasName = 0; + LPSTR lpszAliasName = NULL; + diff --git a/zarafa.spec b/zarafa.spec index a034b78..fae8eb8 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -116,7 +116,7 @@ # %define beta_or_rc 0 -%define actual_release 1 +%define actual_release 2 %define svnrevision 18495 %define with_ldap 1 %define with_xmlto 1 @@ -146,6 +146,9 @@ Patch0: zarafa-6.30.4-package.patch Patch1: zarafa-6.30.4-perl.patch Patch2: zarafa-6.30.10-undefined-symbol.patch Patch3: zarafa-6.30.10-chmod.patch +# Patch 4 and 5 are backports from upstream +Patch4: zarafa-6.30.10-fortify.patch +Patch5: zarafa-6.30.10-long-ulong.patch # http://www.brodowski.org/zarafa/php-mapi/6.30.10.18495/18495_patch.diff Patch10: zarafa-6.30.4-brodowski.patch @@ -198,7 +201,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} - %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 compatiblity and a webaccess with +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. @@ -442,6 +445,8 @@ PHP MAPI extension by Zarafa to enable MAPI communication in PHP. %patch1 -p1 -b .perl %patch2 -p1 -b .symbol %patch3 -p1 -b .chmod +%patch4 -p1 -b .fortify +%patch5 -p1 -b .long-ulong #%%patch10 -p5 -b .brodowski # Needed to get rid of rpath @@ -818,6 +823,12 @@ fi %endif %changelog +* Tue Feb 23 2010 Robert Scheck 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 6.30.10-1 - Upgrade to 6.30.10 (#498194) - Initial spec file for Fedora and Red Hat Enterprise Linux (thanks From a257d7d3bb67e9d3b5cce362c263f8fde844d561 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Thu, 18 Mar 2010 23:33:23 +0000 Subject: [PATCH 03/69] Upgrade to 6.30.11 --- .cvsignore | 2 +- sources | 2 +- zarafa.spec | 11 +++++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.cvsignore b/.cvsignore index 0e7e07b..2272e42 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -zarafa-6.30.10.tar.gz +zarafa-6.30.11.tar.gz diff --git a/sources b/sources index 2a2ea20..596764d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -da636f09fb149cf60db1c6f91a734ca3 zarafa-6.30.10.tar.gz +bb5ba3037499dfd85ae509e02534924b zarafa-6.30.11.tar.gz diff --git a/zarafa.spec b/zarafa.spec index fae8eb8..e3ad186 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -116,14 +116,14 @@ # %define beta_or_rc 0 -%define actual_release 2 -%define svnrevision 18495 +%define actual_release 1 +%define svnrevision 18984 %define with_ldap 1 %define with_xmlto 1 Summary: Zarafa Outlook Sharing and Open Source Collaboration Name: zarafa -Version: 6.30.10 +Version: 6.30.11 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -480,7 +480,7 @@ make \ # 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,ldapms.cfg,licensed{,.cfg}}.* +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 @@ -823,6 +823,9 @@ fi %endif %changelog +* Fri Mar 19 2010 Robert Scheck 6.30.11-1 +- Upgrade to 6.30.11 + * Tue Feb 23 2010 Robert Scheck 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) From b5485207f1e60acdaec3e81e6cae9c7171756fb8 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sat, 20 Mar 2010 11:54:40 +0000 Subject: [PATCH 04/69] Upgrade to 6.30.12 --- .cvsignore | 2 +- sources | 2 +- zarafa.spec | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.cvsignore b/.cvsignore index 2272e42..69f5881 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -zarafa-6.30.11.tar.gz +zarafa-6.30.12.tar.gz diff --git a/sources b/sources index 596764d..d2e9a9a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -bb5ba3037499dfd85ae509e02534924b zarafa-6.30.11.tar.gz +959801e02912fbc6b74dd2b3ac3a599d zarafa-6.30.12.tar.gz diff --git a/zarafa.spec b/zarafa.spec index e3ad186..8f1cb99 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -117,13 +117,13 @@ %define beta_or_rc 0 %define actual_release 1 -%define svnrevision 18984 +%define svnrevision 19435 %define with_ldap 1 %define with_xmlto 1 Summary: Zarafa Outlook Sharing and Open Source Collaboration Name: zarafa -Version: 6.30.11 +Version: 6.30.12 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -823,6 +823,9 @@ fi %endif %changelog +* Sat Mar 20 2010 Robert Scheck 6.30.12-1 +- Upgrade to 6.30.12 + * Fri Mar 19 2010 Robert Scheck 6.30.11-1 - Upgrade to 6.30.11 From 61e4b0a7a24715570186ad258c5437346cd4a3a7 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 25 Apr 2010 17:06:17 +0000 Subject: [PATCH 05/69] - Upgrade to 6.30.13 - Moved zarafa.schema file from %doc to %{_datadir}/%{name} --- .cvsignore | 2 +- sources | 2 +- zarafa-6.30.10-fortify.patch | 36 ---------- zarafa-6.30.10-long-ulong.patch | 123 -------------------------------- zarafa.spec | 16 ++--- 5 files changed, 10 insertions(+), 169 deletions(-) delete mode 100644 zarafa-6.30.10-fortify.patch delete mode 100644 zarafa-6.30.10-long-ulong.patch diff --git a/.cvsignore b/.cvsignore index 69f5881..d2059e6 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -zarafa-6.30.12.tar.gz +zarafa-6.30.13.tar.gz diff --git a/sources b/sources index d2e9a9a..7519e15 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -959801e02912fbc6b74dd2b3ac3a599d zarafa-6.30.12.tar.gz +50b4399ace1499bc9175fcaa26571c7b zarafa-6.30.13.tar.gz diff --git a/zarafa-6.30.10-fortify.patch b/zarafa-6.30.10-fortify.patch deleted file mode 100644 index 3a4a4a1..0000000 --- a/zarafa-6.30.10-fortify.patch +++ /dev/null @@ -1,36 +0,0 @@ -Remerged changeset of Subversion Revision 18952 from 6.40.0 (trunk) to 6.30.10 - ---- zarafa-6.30.10/provider/common/ZarafaUtil.cpp 2010-01-26 17:34:51.000000000 +0100 -+++ zarafa-6.30.10/provider/common/ZarafaUtil.cpp.fortify 2010-02-22 15:52:11.000000000 +0100 -@@ -355,7 +355,8 @@ - if (!strExternId.empty()) - { - lpUserEid->ulVersion = 1; -- lstrcpy(lpUserEid->szExId, strEncExId.c_str()); -+ // avoid FORTIFY_SOURCE checks in strcpy to an address that the compiler thinks is 1 size large -+ memcpy(lpUserEid->szExId, strEncExId.c_str(), strEncExId.length()+1); - } - - lpsEntryId->__size = ulLen; ---- zarafa-6.30.10/provider/libserver/ECUserManagement.cpp 2010-01-26 17:34:51.000000000 +0100 -+++ zarafa-6.30.10/provider/libserver/ECUserManagement.cpp.fortify 2010-02-22 16:03:33.000000000 +0100 -@@ -4152,7 +4152,8 @@ - if (!strEncExId.empty()) - { - lpAbeid->ulVersion = 1; -- strcpy(lpAbeid->szExId, strEncExId.c_str()); -+ // avoid FORTIFY_SOURCE checks in strcpy to an address that the compiler thinks is 1 size large -+ memcpy(lpAbeid->szExId, strEncExId.c_str(), strEncExId.length()+1); - } - - *lpsSourceKey = SOURCEKEY(ulLen, (char*)lpAbeid); -@@ -4190,7 +4191,8 @@ - memset(lpEid, 0, CbNewABEID(strEncExId.c_str())); - - lpEid->ulVersion = 1; -- lstrcpy(lpEid->szExId, strEncExId.c_str()); -+ // avoid FORTIFY_SOURCE checks in strcpy to an address that the compiler thinks is 1 size large -+ memcpy(lpEid->szExId, strEncExId.c_str(), strEncExId.length()+1); - - } - diff --git a/zarafa-6.30.10-long-ulong.patch b/zarafa-6.30.10-long-ulong.patch deleted file mode 100644 index 97e07e0..0000000 --- a/zarafa-6.30.10-long-ulong.patch +++ /dev/null @@ -1,123 +0,0 @@ -Remerged changeset of Subversion Revision 18968 from 6.40.0 (trunk) to 6.30.10 - ---- zarafa-6.30.10/php-ext/main.cpp 2010-01-26 17:34:48.000000000 +0100 -+++ zarafa-6.30.10/php-ext/main.cpp.php.long-ulong 2010-02-23 20:39:15.000000000 +0100 -@@ -2125,10 +2125,11 @@ - { - // params - zval * res; -- LPMAPITABLE lpTable = NULL; - zval * sortArray; -+ long ulFlags = 0; -+ // local -+ LPMAPITABLE lpTable = NULL; - LPSSortOrderSet lpSortCriteria = NULL; -- ULONG ulFlags = 0; - - RETVAL_FALSE; - MAPI_G(hr) = hrSuccess; -@@ -2189,10 +2190,11 @@ - { - // params - zval *res; -+ zval *restrictionArray; -+ ulong ulFlags = 0; -+ // local - LPMAPITABLE lpTable = NULL; -- zval *restrictionArray; - LPSRestriction lpRestrict = NULL; -- ULONG ulFlags = 0; - - RETVAL_FALSE; - MAPI_G(hr) = hrSuccess; -@@ -2213,7 +2215,7 @@ - } - } - -- MAPI_G(hr) = lpTable->Restrict(lpRestrict, ulFlags); // TODO: set flags from php? -+ MAPI_G(hr) = lpTable->Restrict(lpRestrict, ulFlags); - if(MAPI_G(hr) != hrSuccess) - goto exit; - -@@ -3696,11 +3698,13 @@ - } - - ZEND_FUNCTION(mapi_folder_getsearchcriteria) { -+ // params - zval *res = NULL; - zval *restriction = NULL; - zval *folderlist = NULL; - LPMAPIFOLDER lpFolder = NULL; - long ulFlags = 0; -+ // local - LPSRestriction lpRestriction = NULL; - LPENTRYLIST lpFolderList = NULL; - ULONG ulSearchState = 0; -@@ -3734,13 +3738,15 @@ - } - - ZEND_FUNCTION(mapi_folder_setsearchcriteria) { -- LPMAPIFOLDER lpFolder = NULL; -- LPENTRYLIST lpFolderList = NULL; -- LPSRestriction lpRestriction = NULL; -- long ulFlags = 0; -+ // param - zval *res = NULL; - zval *restriction = NULL; - zval *folderlist = NULL; -+ long ulFlags = 0; -+ // local -+ LPMAPIFOLDER lpFolder = NULL; -+ LPENTRYLIST lpFolderList = NULL; -+ LPSRestriction lpRestriction = NULL; - - RETVAL_FALSE; - MAPI_G(hr) = hrSuccess; -@@ -6396,9 +6402,11 @@ - - ZEND_FUNCTION(mapi_freebusyupdate_publish) - { -+ // params -+ zval* resFBUpdate = NULL; - zval* aBlocks = NULL; - IFreeBusyUpdate* lpFBUpdate = NULL; -- zval* resFBUpdate = NULL; -+ // local - FBBlock_1* lpBlocks = NULL; - ULONG cBlocks = 0; - HashTable* target_hash = NULL; -@@ -6495,12 +6503,14 @@ - - ZEND_FUNCTION(mapi_freebusyupdate_savechanges) - { -- IFreeBusyUpdate* lpFBUpdate = NULL; -+ // params - zval* resFBUpdate = NULL; -- FILETIME ftmStart; -- FILETIME ftmEnd; - time_t ulUnixStart = 0; - time_t ulUnixEnd = 0; -+ IFreeBusyUpdate* lpFBUpdate = NULL; -+ // local -+ FILETIME ftmStart; -+ FILETIME ftmEnd; - - RETVAL_FALSE; - MAPI_G(hr) = hrSuccess; -@@ -6523,13 +6533,14 @@ - - ZEND_FUNCTION(mapi_favorite_add) - { -+ // params - zval * resSession = NULL; - zval * resFolder = NULL; - Session *lpSession = NULL; -- LPMAPIFOLDER lpShortCutFolder = NULL; -- - LPMAPIFOLDER lpFolder = NULL; - long ulFlags = 0; -+ // local -+ LPMAPIFOLDER lpShortCutFolder = NULL; - ULONG cbAliasName = 0; - LPSTR lpszAliasName = NULL; - diff --git a/zarafa.spec b/zarafa.spec index 8f1cb99..719f618 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -117,13 +117,13 @@ %define beta_or_rc 0 %define actual_release 1 -%define svnrevision 19435 +%define svnrevision 19788 %define with_ldap 1 %define with_xmlto 1 Summary: Zarafa Outlook Sharing and Open Source Collaboration Name: zarafa -Version: 6.30.12 +Version: 6.30.13 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -146,9 +146,6 @@ Patch0: zarafa-6.30.4-package.patch Patch1: zarafa-6.30.4-perl.patch Patch2: zarafa-6.30.10-undefined-symbol.patch Patch3: zarafa-6.30.10-chmod.patch -# Patch 4 and 5 are backports from upstream -Patch4: zarafa-6.30.10-fortify.patch -Patch5: zarafa-6.30.10-long-ulong.patch # http://www.brodowski.org/zarafa/php-mapi/6.30.10.18495/18495_patch.diff Patch10: zarafa-6.30.4-brodowski.patch @@ -445,8 +442,6 @@ PHP MAPI extension by Zarafa to enable MAPI communication in PHP. %patch1 -p1 -b .perl %patch2 -p1 -b .symbol %patch3 -p1 -b .chmod -%patch4 -p1 -b .fortify -%patch5 -p1 -b .long-ulong #%%patch10 -p5 -b .brodowski # Needed to get rid of rpath @@ -533,6 +528,7 @@ done 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}/ @@ -768,7 +764,7 @@ fi %{_mandir}/man5/%{name}-server.cfg.5* %{_mandir}/man5/%{name}-unix.cfg.5* %if %{with_ldap} -%doc installer/ldap/%{name}.schema +%{_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 @@ -823,6 +819,10 @@ fi %endif %changelog +* Sun Apr 25 2010 Robert Scheck 6.30.13-1 +- Upgrade to 6.30.13 +- Moved zarafa.schema file from %%doc to %%{_datadir}/%%{name} + * Sat Mar 20 2010 Robert Scheck 6.30.12-1 - Upgrade to 6.30.12 From d19790803d19e9389c40aca8389d3246dc7d1c63 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sat, 1 May 2010 12:14:13 +0000 Subject: [PATCH 06/69] Upgrade to 6.30.14 --- .cvsignore | 2 +- sources | 2 +- zarafa.spec | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.cvsignore b/.cvsignore index d2059e6..7bd5793 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -zarafa-6.30.13.tar.gz +zarafa-6.30.14.tar.gz diff --git a/sources b/sources index 7519e15..8af1e15 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -50b4399ace1499bc9175fcaa26571c7b zarafa-6.30.13.tar.gz +fa3183f71027b8025373b05f27aaf742 zarafa-6.30.14.tar.gz diff --git a/zarafa.spec b/zarafa.spec index 719f618..ea52ca7 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -117,13 +117,13 @@ %define beta_or_rc 0 %define actual_release 1 -%define svnrevision 19788 +%define svnrevision 20002 %define with_ldap 1 %define with_xmlto 1 Summary: Zarafa Outlook Sharing and Open Source Collaboration Name: zarafa -Version: 6.30.13 +Version: 6.30.14 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -819,6 +819,9 @@ fi %endif %changelog +* Sat May 01 2010 Robert Scheck 6.30.14-1 +- Upgrade to 6.30.14 + * Sun Apr 25 2010 Robert Scheck 6.30.13-1 - Upgrade to 6.30.13 - Moved zarafa.schema file from %%doc to %%{_datadir}/%%{name} From 77c66b7d10ee7e937e5f45f1af48d94d284dd272 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Thu, 10 Jun 2010 19:50:37 +0000 Subject: [PATCH 07/69] Upgrade to 6.40.0 (#564135, #565252, #600993) --- .cvsignore | 2 +- sources | 2 +- zarafa-6.30.10-chmod.patch | 13 - zarafa-6.30.10-undefined-symbol.patch | 35 -- zarafa-6.30.4-brodowski.patch | 774 -------------------------- zarafa-6.30.4-package.patch | 48 -- zarafa-6.30.4-perl.patch | 53 -- zarafa-6.40.0-clucene.patch | 56 ++ zarafa-6.40.0-krb5.patch | 20 + zarafa-6.40.0-openssl.patch | 23 + zarafa-6.40.0-package.patch | 61 ++ zarafa-6.40.0-undefined-symbol.patch | 42 ++ zarafa-webaccess.conf | 32 ++ zarafa.logrotate | 13 + zarafa.spec | 505 +++++++++++------ 15 files changed, 591 insertions(+), 1088 deletions(-) delete mode 100644 zarafa-6.30.10-chmod.patch delete mode 100644 zarafa-6.30.10-undefined-symbol.patch delete mode 100644 zarafa-6.30.4-brodowski.patch delete mode 100644 zarafa-6.30.4-package.patch delete mode 100644 zarafa-6.30.4-perl.patch create mode 100644 zarafa-6.40.0-clucene.patch create mode 100644 zarafa-6.40.0-krb5.patch create mode 100644 zarafa-6.40.0-openssl.patch create mode 100644 zarafa-6.40.0-package.patch create mode 100644 zarafa-6.40.0-undefined-symbol.patch create mode 100644 zarafa-webaccess.conf create mode 100644 zarafa.logrotate diff --git a/.cvsignore b/.cvsignore index 7bd5793..86578d6 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -zarafa-6.30.14.tar.gz +zarafa-6.40.0.tar.gz diff --git a/sources b/sources index 8af1e15..5c51e95 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -fa3183f71027b8025373b05f27aaf742 zarafa-6.30.14.tar.gz +389d195eb7659ccd05769208686e4b0d zarafa-6.40.0.tar.gz diff --git a/zarafa-6.30.10-chmod.patch b/zarafa-6.30.10-chmod.patch deleted file mode 100644 index ef7a706..0000000 --- a/zarafa-6.30.10-chmod.patch +++ /dev/null @@ -1,13 +0,0 @@ -Patch by Robert Scheck 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 - #ifdef HAVE_SYS_UN_H - #include - #endif diff --git a/zarafa-6.30.10-undefined-symbol.patch b/zarafa-6.30.10-undefined-symbol.patch deleted file mode 100644 index c4b2083..0000000 --- a/zarafa-6.30.10-undefined-symbol.patch +++ /dev/null @@ -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 -- -+*/ - #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 diff --git a/zarafa-6.30.4-brodowski.patch b/zarafa-6.30.4-brodowski.patch deleted file mode 100644 index 9c97208..0000000 --- a/zarafa-6.30.4-brodowski.patch +++ /dev/null @@ -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 @@ -+. -+ * -+ */ -+ -+?> -+ -+ */ -+ -+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 @@ -+. -+ * -+ */ -+?> -+ -+ */ -+ -+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 -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 \ diff --git a/zarafa-6.30.4-package.patch b/zarafa-6.30.4-package.patch deleted file mode 100644 index 3c42aa1..0000000 --- a/zarafa-6.30.4-package.patch +++ /dev/null @@ -1,48 +0,0 @@ -Patch by Robert Scheck 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 diff --git a/zarafa-6.30.4-perl.patch b/zarafa-6.30.4-perl.patch deleted file mode 100644 index 3c5bed5..0000000 --- a/zarafa-6.30.4-perl.patch +++ /dev/null @@ -1,53 +0,0 @@ -Patch by Robert Scheck 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: diff --git a/zarafa-6.40.0-clucene.patch b/zarafa-6.40.0-clucene.patch new file mode 100644 index 0000000..2badd27 --- /dev/null +++ b/zarafa-6.40.0-clucene.patch @@ -0,0 +1,56 @@ +Patch by Robert Scheck for zarafa >= 6.40.0, which adds +some more flexibility to detect CLucene headers and libraries. Right now, Zarafa is +linking static to CLucene, which is a no-go at Fedora. That means CLucene on Fedora +doesn't provide static library files at all. To keep Zarafa's behaviour for their +own builds, the patch looks for "libclucene.a" and links static; otherwise (Fedora) +it links dynamically using -lclucene. More details about static linking and Fedora: +http://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries + +Zarafa's internal CLucene build for Zarafa seems to violate upstream's decision, as +CLucene upstream decided with 0.9.20 release to put "CLucene/clucene-config.h" file +into /usr/lib{,64}/CLucene/clucene-config.h because of arch-specific values. Fedora +is shipping CLucene using upstream's decision, thus ./configure needs to handle the +include path with GCC CPP, too. To avoid CPP telling "rejected by the preprocessor" +as of the missing include path (/usr/include is standard, but /usr/lib{,64} isn't), +$CXXCPP needs to be temporarily extended to contain this special path as well. + +--- zarafa-6.40.0/configure.ac 2010-06-06 14:47:37.000000000 +0200 ++++ zarafa-6.40.0/configure.ac.clucene 2010-06-06 15:16:18.000000000 +0200 +@@ -394,17 +394,26 @@ + [CLUCENE_INCLUDE_PREFIX=${withval}],[CLUCENE_INCLUDE_PREFIX=/usr/include]) + cflags_keep=$CFLAGS + cxxflags_keep=$CXXFLAGS ++cxxcpp_keep=$CXXCPP + if test "x$CLUCENE_LIB_PREFIX" != "x"; then + CFLAGS="$CFLAGS -I$CLUCENE_LIB_PREFIX" + CXXFLAGS="$CFLAGS -I$CLUCENE_LIB_PREFIX" ++ CXXCPP="$CXXCPP -I$CLUCENE_LIB_PREFIX" + fi + if test "x$CLUCENE_INCLUDE_PREFIX" != "x"; then + CFLAGS="$CFLAGS -I$CLUCENE_INCLUDE_PREFIX" + CXXFLAGS="$CFLAGS -I$CLUCENE_INCLUDE_PREFIX" ++ CXXCPP="$CXXCPP -I$CLUCENE_INCLUDE_PREFIX" ++fi ++if test -e "${CLUCENE_LIB_PREFIX}/libclucene.a"; then ++ AC_CHECK_LIB(clucene, [open], ++ [ CLUCENE_LIBS="${CLUCENE_LIB_PREFIX}/libclucene.a" ], ++ [ WITH_CLUCENE=no ]) ++else ++ AC_CHECK_LIB(clucene, [open], ++ [ CLUCENE_LIBS="-lclucene" ], ++ [ WITH_CLUCENE=no ]) + fi +-AC_CHECK_LIB(clucene, [open], +- [ CLUCENE_LIBS="${CLUCENE_LIB_PREFIX}/libclucene.a" ], +- [ WITH_CLUCENE=no ]) + AC_CHECK_HEADERS([CLucene.h], + [ CLUCENE_CFLAGS="-DLUCENE_DISABLE_MEMTRACKING" ], + [ WITH_CLUCENE=no ]) +@@ -419,6 +428,7 @@ + AC_SUBST(CLUCENE_LIBS) + CFLAGS=$cflags_keep + CXXFLAGS=$cxxflags_keep ++CXXCPP=$cxxcpp_keep + AC_LANG_POP + + # Check for google perftools tcmalloc availability diff --git a/zarafa-6.40.0-krb5.patch b/zarafa-6.40.0-krb5.patch new file mode 100644 index 0000000..b7016df --- /dev/null +++ b/zarafa-6.40.0-krb5.patch @@ -0,0 +1,20 @@ +Patch by Robert Scheck for zarafa >= 6.40.0, which removes a +wrong include causing a build failure on native Fedora 11 and/or later as well as on RHEL +4 and/or later. According to some Kerberos people, "com_err.h" is already included by the +"krb5.h" include and thus doesn't need to be included once more. + +The build failure on RHEL/Fedora is caused due the non-existence of this include, on RHEL/ +Fedora, only "" would be available. If you really need the "com_err.h" for +some other Linux distributions (where I didn't find a real difference so far), you have to +conditionalize the include using preprocessor flags after detection in ./configure. + +--- zarafa-6.40.0/provider/libserver/ECKrbAuth.cpp 2010-05-31 19:28:59.000000000 +0200 ++++ zarafa-6.40.0/provider/libserver/ECKrbAuth.cpp.krb5 2010-06-05 21:48:51.000000000 +0200 +@@ -58,7 +58,6 @@ + // error_message() is wrongly typed in c++ context + extern "C" { + #include +-#include + } + + ECRESULT ECKrb5AuthenticateUser(const std::string &strUsername, const std::string &strPassword, std::string *lpstrError) diff --git a/zarafa-6.40.0-openssl.patch b/zarafa-6.40.0-openssl.patch new file mode 100644 index 0000000..23219a1 --- /dev/null +++ b/zarafa-6.40.0-openssl.patch @@ -0,0 +1,23 @@ +Patch by Robert Scheck for zarafa >= 6.40.0, which adds some +forward compatibility regarding OpenSSL 1.0.0. Without this patch, compiling while using +OpenSSL 1.0.0 will fail with "stdsoap2.cpp:4095: error: invalid conversion from 'const +X509V3_EXT_METHOD*' to 'X509V3_EXT_METHOD*'". Right now, Fedora 12 and/or later as well +as RHEL 6 and/or later are using OpenSSL 1.0.0 and thus depend on this patch. In order to +get OpenSSL 0.9.x and OpenSSL 1.0.0 working, the preprocessor condition is required. + +--- zarafa-6.40.0/provider/soap/stdsoap2.cpp 2010-05-31 19:28:55.000000000 +0200 ++++ zarafa-6.40.0/provider/soap/stdsoap2.cpp.openssl 2010-06-05 21:29:00.000000000 +0200 +@@ -4092,7 +4092,12 @@ + { X509_EXTENSION *ext = X509_get_ext(peer, i); + const char *ext_str = OBJ_nid2sn(OBJ_obj2nid(X509_EXTENSION_get_object(ext))); + if (ext_str && !strcmp(ext_str, "subjectAltName")) +- { X509V3_EXT_METHOD *meth = X509V3_EXT_get(ext); ++ { ++#if (OPENSSL_VERSION_NUMBER >= 0x10000000L) ++ const X509V3_EXT_METHOD *meth = X509V3_EXT_get(ext); ++#else ++ X509V3_EXT_METHOD *meth = X509V3_EXT_get(ext); ++#endif + void *ext_data; + #if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) + const unsigned char *data; diff --git a/zarafa-6.40.0-package.patch b/zarafa-6.40.0-package.patch new file mode 100644 index 0000000..1a4877e --- /dev/null +++ b/zarafa-6.40.0-package.patch @@ -0,0 +1,61 @@ +Patch by Robert Scheck for zarafa >= 6.40.0, 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.40.0/configure.ac 2010-05-31 15:45:19.000000000 +0200 ++++ zarafa-6.40.0/configure.ac.package 2010-06-06 02:48:22.000000000 +0200 +@@ -772,19 +772,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 +- ECtools/libarchiver/Makefile +- ECtools/zarafa-archiver/Makefile +- debian/zarafa.install +-]) +-fi + + AC_OUTPUT + +--- zarafa-6.40.0/Makefile.am 2010-05-31 15:45:19.000000000 +0200 ++++ zarafa-6.40.0/Makefile.am.package 2010-06-06 02:51:29.000000000 +0200 +@@ -1,9 +1,5 @@ + AUTOMAKE_OPTIONS = 1.9 foreign + +-if ! OSS_ONLY +-PROSUBS = liblicense licensed +-endif +- + SUBDIRS = common libfreebusy zarafa-libsync mapi4linux $(PROSUBS) provider libicalmapi inetmapi php-ext spooler gateway caldav ECtools installer po doc + + if WITH_PERL +@@ -17,10 +13,6 @@ + common/ecversion.h: versionheader.sh + sh ${top_srcdir}/versionheader.sh > common/ecversion.h + +-if ! OSS_ONLY +-CLEANFILES=common/ecversion.h +-endif +- + dist-hook: + find $(distdir) -type d -name .svn -exec rm -rf {} \; 2>/dev/null || true + if OSS_ONLY +--- zarafa-6.40.0/ECtools/Makefile.am 2010-05-31 15:45:18.000000000 +0200 ++++ zarafa-6.40.0/ECtools/Makefile.am.package 2010-06-06 02:48:37.000000000 +0200 +@@ -1,7 +1,3 @@ +-if ! OSS_ONLY +-PROSUBS = zarafa-backup zarafa-report libarchiver zarafa-archiver +-endif +- + if WITH_TESTTOOLS + TESTSUBS = ECTestTools + endif diff --git a/zarafa-6.40.0-undefined-symbol.patch b/zarafa-6.40.0-undefined-symbol.patch new file mode 100644 index 0000000..0e569fe --- /dev/null +++ b/zarafa-6.40.0-undefined-symbol.patch @@ -0,0 +1,42 @@ +Re-merged patch by Robert Scheck for zarafa >= 6.40.0, which corrects +the linking between the libraries. Without this patch, any PHP usage causes the PHP error message +"undefined symbol: _ZN10ECMemTable6CreateEP14_SPropTagArrayjPPS_". The second hunk is required to +avoid linking errors like "(.rodata+0x0): multiple definition of `IID_IUnknown'". This patch was +originally by Michel de Ron (Zarafa); http://forums.zarafa.com/viewtopic.php?f=1&t=2418&start=15 +is providing some more details and information. + +--- zarafa-6.40.0/mapi4linux/src/Makefile.am 2010-05-31 15:44:42.000000000 +0200 ++++ zarafa-6.40.0/mapi4linux/src/Makefile.am.undefined-symbol 2010-06-08 22:32:12.000000000 +0200 +@@ -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 +--- zarafa-6.40.0/mapi4linux/src/m4lguids.cpp 2010-05-31 19:28:56.000000000 +0200 ++++ zarafa-6.40.0/mapi4linux/src/m4lguids.cpp.undefined-symbol 2010-06-08 22:47:30.000000000 +0200 +@@ -48,19 +48,5 @@ + */ + + #include "platform.h" +-#define USES_IID_IUnknown +-#define USES_IID_IStream +-#define USES_IID_ISequentialStream +-#define USES_IID_IProfAdmin +-#define USES_IID_IProviderAdmin +-#define USES_IID_IMAPIAdviseSink +-#define USES_IID_IMsgServiceAdmin +-#define USES_IID_IProfSect +-#define USES_IID_IMAPISession +-#define USES_IID_IMAPIProp +-#define USES_IID_IMAPIFolder +-#define USES_IID_IMAPITable +-#include +- + #include "mapiguid.h" + #include "m4l.mapiutil.h" diff --git a/zarafa-webaccess.conf b/zarafa-webaccess.conf new file mode 100644 index 0000000..7e6a7f6 --- /dev/null +++ b/zarafa-webaccess.conf @@ -0,0 +1,32 @@ +# +# Zarafa Webaccess featuring a 'Look & Feel' similar to Outlook +# + +Alias /webaccess /usr/share/zarafa-webaccess/ + +# Following Apache and PHP settings need to be set to work correct +# + + # Some apache settings + Options -Indexes +FollowSymLinks + + # Register globals must be off + php_flag register_globals off + + # Magic quotes must be off + php_flag magic_quotes_gpc off + php_flag magic_quotes_runtime off + + # The maximum POST limit. To upload large files, this value must + # be larger than upload_max_filesize. + php_value post_max_size 31M + php_value upload_max_filesize 30M + + # Short open tags must be on + php_flag short_open_tag on + + # Uncomment for debugging purposes only. Make sure Apache/PHP can + # write to this file or no errors will be logged! +# php_flag log_errors on +# php_value error_log /var/lib/zarafa-webaccess/error_log + diff --git a/zarafa.logrotate b/zarafa.logrotate new file mode 100644 index 0000000..f2a0b80 --- /dev/null +++ b/zarafa.logrotate @@ -0,0 +1,13 @@ +/var/log/zarafa/SERVICE.log { + weekly + missingok + rotate 52 + compress + delaycompress + notifempty + postrotate + killall -HUP zarafa-SERVICE 2> /dev/null || true + endscript + create 0644 zarafa zarafa +} + diff --git a/zarafa.spec b/zarafa.spec index ea52ca7..d83acd9 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -26,15 +26,15 @@ # 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 +# b) fedora-13-x86_64, +# c) fedora-12-x86_64, +# d) epel-6-x86_64, +# e) epel-5-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 +# for tag in dist-f14 dist-f13-updates-candidate dist-f12-updates-candidate \ +# dist-6E-epel dist-5E-epel; do # echo "- $tag: `koji build --scratch --nowait $tag $srpm 2>&1 | grep \"Task info\" | awk '{print $3}'`" # done # @@ -43,19 +43,19 @@ # = 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. +# same version, of Zarafa 6.40.0 requires one unique tarball, probably +# named similar to zarafa-6.40.0.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 +# patches for the 6.40.0 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. +# between distribution versions. E.g., when releasing 6.40.0-2 to F-12, you +# would also need to release 6.40.0-2 to F-13. # -# An alternative is to release 6.30.10.1 with a zarafa-6.30.10.1.tar.gz (yet +# An alternative is to release 6.40.1 with a zarafa-6.40.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, @@ -82,13 +82,13 @@ # 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 - 6.30.10-0.1svn12345 +# * Some Time Your Name - 6.40.0-0.1svn12345 # - Improve packaging # # might, in a final release, become: # -# * Some Time Zarafa Release Engineering - 6.30.10-1 -# - Release 6.30.10 +# * Some Time Zarafa Release Engineering - 6.40.0-1 +# - Release 6.40.0 # - Improve packaging # # - Possibly change only the release tag for the most recent changelog @@ -100,15 +100,15 @@ # 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 +# b) fedora-13-x86_64, +# c) fedora-12-x86_64, +# d) epel-6-x86_64, +# e) epel-5-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 +# for tag in dist-f14 dist-f13-updates-candidate dist-f12-updates-candidate \ +# dist-6E-epel dist-5E-epel; do # echo "- $tag: `koji build --scratch --nowait $tag $srpm 2>&1 | grep \"Task info\" | awk '{print $3}'`" # done # @@ -117,13 +117,15 @@ %define beta_or_rc 0 %define actual_release 1 -%define svnrevision 20002 +%define svnrevision 20653 +%define with_clucene 1 %define with_ldap 1 %define with_xmlto 1 +%define php_apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1) -Summary: Zarafa Outlook Sharing and Open Source Collaboration +Summary: The Open Source Zarafa Collaboration Platform Name: zarafa -Version: 6.30.14 +Version: 6.40.0 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -140,14 +142,15 @@ URL: http://www.zarafa.com/ # http://www.zarafa.com/download-community -> "Zarafa Source Package" Source0: %{name}-%{version}.tar.gz Source1: %{name}.ini +Source2: %{name}.logrotate +Source3: %{name}-webaccess.conf -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 +Patch0: zarafa-6.40.0-package.patch +# Patch 1, 2, 3 and 4 were sent to upstream +Patch1: zarafa-6.40.0-undefined-symbol.patch +Patch2: zarafa-6.40.0-openssl.patch +Patch3: zarafa-6.40.0-krb5.patch +Patch4: zarafa-6.40.0-clucene.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -160,19 +163,14 @@ BuildRequires: libxml2-devel BuildRequires: mysql-devel >= 4.1 BuildRequires: ncurses-devel BuildRequires: pam-devel -BuildRequires: php-devel +BuildRequires: php-devel >= 4.3 BuildRequires: libtool, automake, autoconf +BuildRequires: %{_includedir}/uuid/uuid.h +BuildRequires: %{_includedir}/curl/curl.h +BuildRequires: %{_bindir}/xsubpp -%if 0%{?fedora} > 8 -BuildRequires: libcurl-devel -BuildRequires: perl-devel -%else -BuildRequires: curl-devel -BuildRequires: perl -%endif - -%if 0%{?fedora} >= 12 -BuildRequires: libuuid-devel +%if %{with_clucene} +BuildRequires: clucene-core-devel >= 0.9.21b-1 %endif %if %{with_ldap} @@ -183,7 +181,7 @@ BuildRequires: openldap-devel BuildRequires: xmlto %endif -# The normal zarafa package pulls in all of zarafa +# The normal zarafa package pulls in all of zarafa except indexer Requires: zarafa(ical) = %{version}-%{release} Requires: zarafa(dagent) = %{version}-%{release} Requires: zarafa(gateway) = %{version}-%{release} @@ -196,49 +194,56 @@ 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 Zarafa Collaboration Platform 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 +IMAP and a POP3 gateway as well as an iCal/CalDAV gateway, the Zarafa Open +Source Collaboration can combine the usability with the stability and the +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. +and benefits of the Zarafa Collaboration Platform (ZCP). ## -## Zarafa Client +## Zarafa Client library ## %package client -Summary: Zarafa Client Library +Summary: The 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. +The zarafa-client package provides the Zarafa Client library, which gets +used by the Open Source MAPI (Messaging Application Programming Interface) +implementation of Zarafa as provider between MAPI and Zarafa. ## -## Zarafa Common files +## Common Zarafa files and directories ## %package common -Summary: Zarafa common files -Group: System Environment/Daemons +Summary: Common Zarafa files and directories +Group: Applications/Productivity Requires(pre): shadow-utils Provides: zarafa(common) = %{version}-%{release} +%if 0%{?rhel}%{?fedora} > 5 +BuildArch: noarch +%endif %description common -Common files and directories required by most Zarafa packages. +The zarafa-common package provides the filesystem structure and includes +common files required by most other Zarafa packages. It also provides the +creation of the zarafa user for the different Zarafa services. ## ## Zarafa Delivery Agent ## %package dagent -Summary: Zarafa Delivery Agent +Summary: The 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 @@ -248,12 +253,13 @@ 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 +The zarafa-dagent package includes the Zarafa Delivery Agent to import +e-mail messages from Internet Mail format to Zarafa. The Zarafa Delivery +Agent can be used trigger the local mailer (MDA) or even act as the LMTP server. ## -## Zarafa Development Headers +## Zarafa development files ## %package devel Summary: Development files for several Zarafa libraries @@ -264,18 +270,16 @@ 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. +developing own programs which use functions and interfaces from the Zarafa +Collaboration Platform. The Zarafa Open Source Collaboration is using MAPI +objects, provides a MAPI client library and a C++ programming interface. ## -## Zarafa Gateway +## Zarafa POP3/IMAP Gateway service ## %package gateway -Summary: Zarafa Gateway server (POP3/IMAP access) +Summary: The Zarafa POP3/IMAP Gateway service Group: System Environment/Daemons -Requires: zarafa(client) = %{version}-%{release} Requires: zarafa(common) = %{version}-%{release} Requires(post): /sbin/chkconfig Requires(preun): /sbin/service @@ -285,19 +289,19 @@ 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. +The zarafa-gateway package includes the Zarafa POP3/IMAP Gateway service +to enable regular non-MAPI e-mail clients to connect through POP3 or IMAP +to the Zarafa server to access their e-mails. Using IMAP, it is possible +as well to view the contents of shared folders and subfolders. The Zarafa +POP3/IMAP Gateway service can be configured to listen for POP3, POP3S, +IMAP and/or IMAPS. ## -## Zarafa iCal/CalDAV server +## Zarafa iCal/CalDAV gateway ## %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 @@ -309,13 +313,37 @@ 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. +The zarafa-ical package includes the Zarafa iCal/CalDAV gateway service +to enable users to access their calendar using iCalendar (RFC 2445/5545) +or CalDAV (RFC 4791) compliant clients. The iCal/CalDAV gateway service +can be configured to listen for HTTP and HTTPS requests. + +%if %{with_clucene} +## +## Zarafa Indexing service +## +%package indexer +Summary: The Zarafa Indexing service +Group: System Environment/Daemons +Requires: zarafa(common) = %{version}-%{release}, file +Requires: catdoc, libxslt, lynx, unzip, %{_bindir}/pdftotext +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/service +Requires(preun): /sbin/chkconfig +Requires(postun): /sbin/service +Provides: zarafa(indexer) = %{version}-%{release} +Provides: zarafa(config::indexer) = %{version}-%{release} + +%description indexer +The zarafa-indexer package includes the Zarafa Indexing service for fast +and full-text searching. Using CLucene search engine, this service makes +an index per user of messages and attachments for the Zarafa server. At +search queries, the server will use this index to quickly find messages, +items and even in contents of attached documents. +%endif ## -## Zarafa CalDAV package, merely an alias for zarafa-ical +## Zarafa CalDAV gateway (merely an alias for zarafa-ical) ## %package caldav Summary: The Zarafa iCal/CalDAV gateway @@ -323,18 +351,17 @@ 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. +The zarafa-caldav package includes the Zarafa CalDAV gateway service to +enable users to access their calendar using iCalendar (RFC 2445/5545) or +CalDAV (RFC 4791) compliant clients. The iCal/CalDAV gateway service can +be configured to listen for HTTP and HTTPS requests. ## -## Zarafa Monitor Service +## Zarafa Monitoring service ## %package monitor -Summary: Zarafa Monitoring service +Summary: The 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 @@ -344,14 +371,15 @@ 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. +The zarafa-monitor package includes the Zarafa Monitoring service which +is responsible for checking the users store (mailbox) size, and sending +them (and administrators) a warning e-mail when limits are exceeded. ## -## Zarafa Backend Server +## Zarafa Server service ## %package server -Summary: Zarafa Backend Server +Summary: The main Zarafa Server service Group: System Environment/Daemons Requires: zarafa(common) = %{version}-%{release} Requires(post): /sbin/chkconfig @@ -363,15 +391,17 @@ Provides: zarafa(config) = %{version}-%{release} Provides: zarafa(config::server) = %{version}-%{release} %description server -The Zarafa groupware backend server +The zarafa-server package includes the main Zarafa Server and Storage +process. It contacts a database server and provides services to Zarafa +clients. The user base can be either retrieved from an external source +or can be setup with a separate list of users. ## -## Zarafa Spooler Service +## Zarafa Spooler service ## %package spooler -Summary: Zarafa Spooler Service +Summary: The 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 @@ -381,80 +411,130 @@ 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. +The zarafa-spooler package includes the Zarafa Spooler service which is +responsible for converting the Zarafa e-mails from outboxes to Internet +Mail and send it using the configured SMTP server to the recipients. ## ## Zarafa Utilities ## %package utils -Summary: Zarafa Utilities +Summary: Zarafa Utilities for administration and management 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. +The zarafa-utils package includes various administration and management +utilities for the Zarafa Open Source Collaboration environment including +reporting, user and password management. ## -## MAPI System Libraries +## Zarafa Webaccess +## +%package webaccess +Summary: Zarafa Webaccess featuring a 'Look & Feel' similar to Outlook +Group: Applications/Productivity +Requires: httpd +Requires: php >= 4.3 +Requires: php(mapi) = %{version}-%{release} +%if 0%{?rhel}%{?fedora} > 5 +BuildArch: noarch +%endif + +%description webaccess +Zarafa Webaccess features the familiar Outlook 'Look & Feel' interface +and you can keep using the features in Outlook that have always allowed +you to work efficiently. View your e-mail, calendar and contacts via a +web browser. And opening your colleagues calendar or sending a meeting +request is only a piece of cake. The Zarafa Webaccess is using the ajax +technology to give a more interactive feeling to the users. + +## +## MAPI library ## %package -n libmapi -Summary: Mapi libraries by Zarafa +Summary: MAPI implementation and library 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. +The libmapi package provides the Open Source MAPI (Messaging Application +Programming Interface) implementation by Zarafa. The MAPI is a messaging +architecture and a Component Object Model based API for Microsoft Windows +which allows control over the messaging system on the client computer, +creation and management of messages, management of the client mailbox, +service providers, etc. This MAPI implementation by Zarafa is also known +as MAPI4Linux. ## -## MAPI Perl extension +## Perl MAPI extension ## -%package -n perl-libmapi -Summary: Perl Mapi extension libraries by Zarafa -Group: System Environment/Libraries -Requires: perl +%package -n perl-MAPI +Summary: The Perl MAPI extension by Zarafa +Group: Development/Libraries +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Provides: perl-libmapi = %{version}-%{release} +Obsoletes: perl-libmapi < 6.40.0-1 -%description -n perl-libmapi -Perl MAPI extension libraries by Zarafa. +%description -n perl-MAPI +The perl-MAPI package contains the Perl MAPI extension to provide access +to Microsoft MAPI functions while using Perl. ## -## MAPI PHP Extension +## PHP MAPI extension ## %package -n php-mapi -Summary: A PHP Mapi client by Zarafa -Group: Applications/Communications +Summary: The PHP MAPI extension by Zarafa +Group: Development/Languages # Bug: Without mod_ssl, reloading httpd causes core dump Requires: mod_ssl +%if 0%{?rhel}%{?fedora} > 4 +%if 0%{?php_zend_api} +Requires: php(zend-abi) = %{php_zend_api}, php(api) = %{php_core_api} +%else +Requires: php-api = %{php_apiver} +%endif +%else Requires: php >= 4.3 +%endif Provides: php(mapi) = %{version}-%{release} %description -n php-mapi -PHP MAPI extension by Zarafa to enable MAPI communication in PHP. +The php-mapi package contains the PHP MAPI extension to provide access to +Microsoft MAPI functions while using PHP. Although not all MAPI functions +and interfaces are supported so far, most functions have a PHP counterpart +in this extension. Using this PHP MAPI extension, developers can create +e.g. webbased e-mail and calendaring systems and interfaces with existing +PHP projects, using the MAPI functions like a normal MAPI program. %prep %setup -q %patch0 -p1 -b .package -%patch1 -p1 -b .perl -%patch2 -p1 -b .symbol -%patch3 -p1 -b .chmod -#%%patch10 -p5 -b .brodowski +%patch1 -p1 -b .undefined-symbol +%patch2 -p1 -b .openssl +%patch3 -p1 -b .krb5 +%patch4 -p1 -b .clucene # Needed to get rid of rpath libtoolize --force autoreconf --force --install %build -CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -g -ggdb" -export CFLAGS +export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -g -ggdb" %configure \ --with-userscript-prefix=%{_sysconfdir}/%{name}/userscripts \ --with-quotatemplate-prefix=%{_sysconfdir}/%{name}/quotamail \ -%if 0%{?rhel} > 0 + --with-indexerscripts-prefix=%{_datadir}/%{name}/indexerscripts \ +%if %{with_clucene} + --with-clucene-lib-prefix=%{_libdir} \ + --with-clucene-include-prefix=%{_includedir} \ +%else + --with-clucene-lib-prefix= \ +%endif +%if 0%{?rhel}%{?fedora} < 6 --enable-release \ %endif --disable-static \ @@ -465,56 +545,52 @@ make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make \ -%if 0%{?rhel} > 0 +%if 0%{?rhel}%{?fedora} < 6 docdir=%{_datadir}/doc/%{name}/ \ datarootdir=%{_datadir} \ %endif DESTDIR=$RPM_BUILD_ROOT \ INSTALL='install -p' \ - install + install \ + install-ajax-webaccess # Nuke all overlefts from licensed, managed or other proprietary items -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/report-ca +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{license,licensed.cfg,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 +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/init.d/ 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 > \ +for service in dagent gateway ical indexer monitor server spooler; do + if [ -f installer/linux/%{name}-$service.init.rhel ]; then + sed -e 's@345@-@' installer/linux/%{name}-$service.init.rhel > \ $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} + touch -c -r installer/linux/%{name}-$service.init.rhel $RPM_BUILD_ROOT%{_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 +for config in $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/example-config/*.cfg; do config=$(basename $config) - if [ -f $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/$config ]; then + if [ -f $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/example-config/$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 + $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/example-config/$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 + touch -c -r $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/example-config/$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 logrotate configuration file to its correct place +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/* +for service in dagent gateway ical indexer licensed monitor server spooler; do + sed -e "s@SERVICE@$service@" %{SOURCE2} >> $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name} +done +touch -c -r %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name} # Move the userscripts to their correct place and symlink them mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/userscripts/ @@ -526,18 +602,56 @@ 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/linux/db-{calc-storesize,convert-attachments-to-files} $RPM_BUILD_ROOT%{_datadir}/%{name}/ +install -p -m 644 installer/linux/ssl-certificates.sh $RPM_BUILD_ROOT%{_datadir}/%{name}/ +%if %{with_ldap} +install -p -m 644 installer/linux/{db-upgrade-objectsid-to-objectguid,ldap-switch-sendas}.pl $RPM_BUILD_ROOT%{_datadir}/%{name}/ install -p -m 644 installer/ldap/%{name}.schema $RPM_BUILD_ROOT%{_datadir}/%{name}/ +%else +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ldap.{active-directory,openldap,propmap}.cfg +rm -f $RPM_BUILD_ROOT%{_mandir}/man5/%{name}-ldap.cfg.5* +%endif # 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 +rm -f $RPM_BUILD_ROOT{%{_libdir}/{,php/modules,php4,%{name}},%{perl_vendorarch}/auto/MAPI}/*.la # Remove files that are anyway in %doc or %{_datadir}/%{name}/ -rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/ +rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}{,-indexer}/ + +# Remove unwanted/unused files that shouldn't exist anyway... +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}-indexer + +# Move Indexer/CLucene related files to its correct places +%if %{with_clucene} +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/indexerscripts/ +mv -f $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/%{name}/indexerscripts/attachments_parser.db +for helper in attachments_parser xmltotext.xslt zmktemp; do + ln -s ../../..%{_datadir}/%{name}/indexerscripts/$helper $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/indexerscripts/$helper +done +%else +rm -f $RPM_BUILD_ROOT{%{_sysconfdir}/{rc.d/init.d,sysconfig},%{_mandir}/man?}/%{name}-indexer* +rm -rf $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/indexer.cfg,%{_datadir}/%{name}/indexerscripts/} +%endif + +# Move the webaccess configuration file to its correct place +mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess{-ajax,} +rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/config.php +ln -sf ../../..%{_sysconfdir}/%{name}/webaccess/config.php $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/config.php + +# Install the apache configuration file for webaccess +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/ +install -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/%{name}-webaccess.conf + +# Move the webaccess plugins directory to its correct place +rm -rf $RPM_BUILD_ROOT{%{_datadir},%{_localstatedir}/lib}/%{name}-webaccess/plugins +mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/plugins/ + +# Remove unwanted language connectors and webaccess files +rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/client/widgets/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.{cfm,pl} +rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.htaccess,%{name}-webaccess.conf} %find_lang %{name} @@ -554,15 +668,22 @@ exit 0 # Ensure correct log file ownership after upgrade from official packages chown %{name}:%{name} %{_localstatedir}/log/%{name}/dagent.* > /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 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 +%if %{with_clucene} +%post indexer +[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-indexer # Ensure correct log file ownership after upgrade from official packages -chown %{name}:%{name} %{_localstatedir}/log/%{name}/gateway.* > /dev/null 2>&1 || : +chown %{name}:%{name} %{_localstatedir}/log/%{name}/indexer.* > /dev/null 2>&1 || : +%endif %post monitor [ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-monitor @@ -587,17 +708,25 @@ if [ $1 -eq 0 ]; then /sbin/chkconfig --del %{name}-dagent fi +%preun gateway +if [ $1 -eq 0 ]; then + /sbin/service %{name}-gateway stop > /dev/null 2>&1 || : + /sbin/chkconfig --del %{name}-gateway +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 %{with_clucene} +%preun indexer if [ $1 -eq 0 ]; then - /sbin/service %{name}-gateway stop > /dev/null 2>&1 || : - /sbin/chkconfig --del %{name}-gateway + /sbin/service %{name}-indexer stop > /dev/null 2>&1 || : + /sbin/chkconfig --del %{name}-indexer fi +%endif %preun monitor if [ $1 -eq 0 ]; then @@ -622,15 +751,22 @@ if [ $1 -ne 0 ]; then /sbin/service %{name}-dagent condrestart > /dev/null 2>&1 || : fi +%postun gateway +if [ $1 -ne 0 ]; then + /sbin/service %{name}-gateway 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 %{with_clucene} +%postun indexer if [ $1 -ne 0 ]; then - /sbin/service %{name}-gateway condrestart > /dev/null 2>&1 || : + /sbin/service %{name}-indexer condrestart > /dev/null 2>&1 || : fi +%endif %postun monitor if [ $1 -ne 0 ]; then @@ -664,10 +800,9 @@ fi %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}/ +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} %{_mandir}/man1/%{name}.1* %dir %{_datadir}/%{name}/ %dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/ @@ -679,6 +814,7 @@ fi %{_bindir}/%{name}-autorespond %{_bindir}/%{name}-dagent %config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/dagent.cfg +%config(noreplace) %{_sysconfdir}/%{name}/autorespond %{_sysconfdir}/rc.d/init.d/%{name}-dagent %{_mandir}/man1/%{name}-dagent.1* %{_mandir}/man5/%{name}-dagent.cfg.5* @@ -689,14 +825,16 @@ fi %{_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 +%{_libdir}/libzarafasync.a %{_includedir}/icalmapi/ %{_includedir}/inetmapi/ %{_includedir}/mapi4linux/ +%{_includedir}/libfreebusy/ +%{_includedir}/libzarafasync/ %{_includedir}/%{name}/ %{_libdir}/pkgconfig/%{name}.pc @@ -718,6 +856,26 @@ fi %{_mandir}/man1/%{name}-ical.1* %{_mandir}/man5/%{name}-ical.cfg.5* +%if %{with_clucene} +%files indexer +%defattr(-,root,root,-) +%doc installer/licenseagreement/AGPL-3 +%{_bindir}/%{name}-indexer +%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/indexer.cfg +%{_sysconfdir}/rc.d/init.d/%{name}-indexer +%dir %{_sysconfdir}/%{name}/indexerscripts/ +%config(noreplace) %{_sysconfdir}/%{name}/indexerscripts/attachments_parser.db +%{_sysconfdir}/%{name}/indexerscripts/attachments_parser +%{_sysconfdir}/%{name}/indexerscripts/xmltotext.xslt +%{_sysconfdir}/%{name}/indexerscripts/zmktemp +%dir %{_datadir}/%{name}/indexerscripts/ +%{_datadir}/%{name}/indexerscripts/attachments_parser +%{_datadir}/%{name}/indexerscripts/xmltotext.xslt +%{_datadir}/%{name}/indexerscripts/zmktemp +%{_mandir}/man1/%{name}-indexer.1* +%{_mandir}/man5/%{name}-indexer.cfg.5* +%endif + %files monitor %defattr(-,root,root,-) %doc installer/licenseagreement/AGPL-3 @@ -758,6 +916,7 @@ fi %config(noreplace) %{_sysconfdir}/%{name}/userscripts/createcompany.d/00createpublic %config(noreplace) %{_sysconfdir}/%{name}/userscripts/createuser.d/00createstore %{_datadir}/%{name}/userscripts/ +%dir %{_libdir}/%{name}/ %{_libdir}/%{name}/dbplugin.so %{_libdir}/%{name}/unixplugin.so %{_mandir}/man1/%{name}-server.1* @@ -765,8 +924,11 @@ fi %{_mandir}/man5/%{name}-unix.cfg.5* %if %{with_ldap} %{_datadir}/%{name}/%{name}.schema +%{_datadir}/%{name}/db-upgrade-objectsid-to-objectguid.pl +%{_datadir}/%{name}/ldap-switch-sendas.pl %config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ldap.active-directory.cfg %config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ldap.openldap.cfg +%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ldap.propmap.cfg %{_libdir}/%{name}/ldapplugin.so %{_mandir}/man5/%{name}-ldap.cfg.5* %endif @@ -784,6 +946,7 @@ fi %defattr(-,root,root,-) %doc installer/licenseagreement/AGPL-3 %{_bindir}/%{name}-admin +%{_bindir}/%{name}-cfgchecker %{_bindir}/%{name}-fsck %{_bindir}/%{name}-passwd %{_bindir}/%{name}-stats @@ -791,10 +954,22 @@ fi %{_datadir}/%{name}/db-convert-attachments-to-files %{_datadir}/%{name}/ssl-certificates.sh %{_mandir}/man1/%{name}-admin.1* +%{_mandir}/man1/%{name}-cfgchecker.1* %{_mandir}/man1/%{name}-fsck.1* %{_mandir}/man1/%{name}-passwd.1* %{_mandir}/man1/%{name}-stats.1* +%files webaccess +%defattr(-,root,root,-) +%doc installer/licenseagreement/AGPL-3 +%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}-webaccess.conf +%dir %{_sysconfdir}/%{name}/ +%dir %{_sysconfdir}/%{name}/webaccess/ +%config(noreplace) %{_sysconfdir}/%{name}/webaccess/config.php +%{_datadir}/%{name}-webaccess/ +%dir %{_localstatedir}/lib/%{name}-webaccess/ +%attr(-,apache,apache) %dir %{_localstatedir}/lib/%{name}-webaccess/tmp/ + %files -n libmapi %defattr(-,root,root,-) %doc installer/licenseagreement/AGPL-3 @@ -802,10 +977,11 @@ fi %{_libdir}/libinetmapi.so.* %{_libdir}/libmapi.so.* -%files -n perl-libmapi +%files -n perl-MAPI %defattr(-,root,root,-) %doc installer/licenseagreement/AGPL-3 -%{_libdir}/libperlmapi.so.* +%{perl_vendorarch}/MAPI.pm +%{perl_vendorarch}/auto/MAPI/ %files -n php-mapi %defattr(-,root,root,-) @@ -819,6 +995,9 @@ fi %endif %changelog +* Thu Jun 10 2010 Robert Scheck 6.40.0-1 +- Upgrade to 6.40.0 (#564135, #565252, #600993) + * Sat May 01 2010 Robert Scheck 6.30.14-1 - Upgrade to 6.30.14 From fdc1a3fb30eb918e7be3717abaf7c405f1e53917 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Thu, 10 Jun 2010 22:12:35 +0000 Subject: [PATCH 08/69] Added patch to ensure -pthread for -lclucene configure test --- zarafa.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index d83acd9..a21fb31 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -116,7 +116,7 @@ # %define beta_or_rc 0 -%define actual_release 1 +%define actual_release 2 %define svnrevision 20653 %define with_clucene 1 %define with_ldap 1 @@ -146,11 +146,12 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.0-package.patch -# Patch 1, 2, 3 and 4 were sent to upstream +# Patch 1, 2, 3, 4 and 5 were sent to upstream Patch1: zarafa-6.40.0-undefined-symbol.patch Patch2: zarafa-6.40.0-openssl.patch Patch3: zarafa-6.40.0-krb5.patch Patch4: zarafa-6.40.0-clucene.patch +Patch5: zarafa-6.40.0-pthread.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -517,6 +518,7 @@ PHP projects, using the MAPI functions like a normal MAPI program. %patch2 -p1 -b .openssl %patch3 -p1 -b .krb5 %patch4 -p1 -b .clucene +%patch5 -p1 -b .pthread # Needed to get rid of rpath libtoolize --force @@ -995,6 +997,9 @@ fi %endif %changelog +* Fri Jun 11 2010 Robert Scheck 6.40.0-2 +- Added patch to ensure -pthread for -lclucene configure test + * Thu Jun 10 2010 Robert Scheck 6.40.0-1 - Upgrade to 6.40.0 (#564135, #565252, #600993) From 8751e849b51c23d0b75a6ccc9662a27b2cea03ef Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Thu, 10 Jun 2010 22:15:22 +0000 Subject: [PATCH 09/69] Really add & commit zarafa-6.40.0-pthread.patch --- zarafa-6.40.0-pthread.patch | 59 +++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 zarafa-6.40.0-pthread.patch diff --git a/zarafa-6.40.0-pthread.patch b/zarafa-6.40.0-pthread.patch new file mode 100644 index 0000000..4908fc5 --- /dev/null +++ b/zarafa-6.40.0-pthread.patch @@ -0,0 +1,59 @@ +Patch by Robert Scheck for zarafa >= 6.40.0, which adds +the missing -pthread linking to $CXXFLAGS for the later compile check whether open +is in -lclucene/libclucene.a. Unfortunately, Fedora was shipping CLucene 0.9.21 so +far; today the update to the important 0.9.21b happened. If -pthread is not passed +to $CXXFLAGS, the g++ compiling check fails simply with "undefined reference to +`pthread_mutexattr_settype'" and "undefined reference to `pthread_mutexattr_init'" +on Fedora >= 12 and RHEL >= 6. + +Beside of that, the -pthread check must be moved before the CLucene check or the +CLucene check must be moved post -pthread. This patch is completing the previously +suggested and applied zarafa-6.40.0-clucene.patch. + +--- zarafa-6.40.0/configure.ac 2010-06-10 23:12:32.000000000 +0200 ++++ zarafa-6.40.0/configure.ac.pthread 2010-06-10 23:54:21.000000000 +0200 +@@ -384,6 +384,14 @@ + AC_SUBST(ICAL_LIBS) + CFLAGS=$cflags_keep + ++# Everything links with pthread ++libs_keep=$LIBS ++# check lib, but do not set in link list ++AC_CHECK_LIB([pthread], [pthread_create],, AC_MSG_ERROR([required library libpthread missing or unusable])) ++LIBS=$libs_keep ++# because it seems this is better... (gnu c/c++ only?) ++CXXFLAGS="$CXXFLAGS -pthread" ++ + # Check for CLucene availability + AC_LANG_PUSH(C++) + AC_ARG_WITH(clucene-lib-prefix, +@@ -397,12 +405,12 @@ + cxxcpp_keep=$CXXCPP + if test "x$CLUCENE_LIB_PREFIX" != "x"; then + CFLAGS="$CFLAGS -I$CLUCENE_LIB_PREFIX" +- CXXFLAGS="$CFLAGS -I$CLUCENE_LIB_PREFIX" ++ CXXFLAGS="$CFLAGS $CXXFLAGS -I$CLUCENE_LIB_PREFIX" + CXXCPP="$CXXCPP -I$CLUCENE_LIB_PREFIX" + fi + if test "x$CLUCENE_INCLUDE_PREFIX" != "x"; then + CFLAGS="$CFLAGS -I$CLUCENE_INCLUDE_PREFIX" +- CXXFLAGS="$CFLAGS -I$CLUCENE_INCLUDE_PREFIX" ++ CXXFLAGS="$CFLAGS $CXXFLAGS -I$CLUCENE_INCLUDE_PREFIX" + CXXCPP="$CXXCPP -I$CLUCENE_INCLUDE_PREFIX" + fi + if test -e "${CLUCENE_LIB_PREFIX}/libclucene.a"; then +@@ -546,14 +554,6 @@ + LIBS=$libs_keep + AC_SUBST(CRYPT_LIBS) + +-# Everything links with pthread +-libs_keep=$LIBS +-# check lib, but do not set in link list +-AC_CHECK_LIB([pthread], [pthread_create],, AC_MSG_ERROR([required library libpthread missing or unusable])) +-LIBS=$libs_keep +-# because it seems this is better... (gnu c/c++ only?) +-CXXFLAGS="$CXXFLAGS -pthread" +- + # Only specific links with uuid and dl, clients only with crypto and ssl for ssl connections + libs_keep=$LIBS + AC_CHECK_LIB([crypto], [BIO_accept],, AC_MSG_ERROR([required library libcrypto missing or unusable])) From 917ffc7dc0e86a9b249ed974ce61ea277438ddf9 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 29 Jul 2010 16:27:57 +0000 Subject: [PATCH 10/69] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- branch | 1 - 3 files changed, 22 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile delete mode 100644 branch diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index e73f362..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: zarafa -# $Id$ -NAME := zarafa -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/branch b/branch deleted file mode 100644 index baa94ef..0000000 --- a/branch +++ /dev/null @@ -1 +0,0 @@ -F-13 From bd187d113adbfe596314c315d0c40eee3d570bdc Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Mon, 27 Jun 2011 15:06:35 +0200 Subject: [PATCH 11/69] Upgrade to 7.0.0 --- .gitignore | 2 +- sources | 2 +- zarafa-7.0.0-cpp_std.patch | 14 ++++ zarafa.spec | 160 ++++++------------------------------- 4 files changed, 40 insertions(+), 138 deletions(-) create mode 100644 zarafa-7.0.0-cpp_std.patch diff --git a/.gitignore b/.gitignore index f26cb86..57993fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -zcp-6.40.9.tar.gz +zcp-7.0.0.tar.gz diff --git a/sources b/sources index feeb516..00d7b04 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -744a8c4b39da172717c1dd7ea7d03910 zcp-6.40.9.tar.gz +bed709709c175858414aa8965b4aa20f zcp-7.0.0.tar.gz diff --git a/zarafa-7.0.0-cpp_std.patch b/zarafa-7.0.0-cpp_std.patch new file mode 100644 index 0000000..f4640d7 --- /dev/null +++ b/zarafa-7.0.0-cpp_std.patch @@ -0,0 +1,14 @@ +Patch by Robert Scheck for zarafa >= 7.0.0, which solves the make failure +"error: 'string' was not declared in this scope" on Fedora 16 (Rawhide) using GCC 4.6.0. + +--- zarafa-7.0.0/ECtools/zarafa-indexer/ECSearcherRequest.cpp 2011-06-10 03:37:37.000000000 +0200 ++++ zarafa-7.0.0/ECtools/zarafa-indexer/ECSearcherRequest.cpp.cpp_std 2011-06-26 19:42:15.000000000 +0200 +@@ -153,7 +153,7 @@ + } + + while (!m_lpThreadData->bShutdown) { +- string strLine; ++ std::string strLine; + command_t ulCommand; + std::vector listArgs; + std::string strResponse; diff --git a/zarafa.spec b/zarafa.spec index dfab5f8..03a6303 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,125 +1,6 @@ -# -# 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-.svn.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-14-x86_64, -# c) fedora-13-x86_64, -# d) epel-6-x86_64, -# e) epel-5-x86_64, -# f) epel-4-x86_64 -# -# or scratch build in koji; -# -# for tag in dist-f15 dist-f14-updates-candidate dist-f13-updates-candidate \ -# dist-6E-epel 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.40.0 requires one unique tarball, probably -# named similar to zarafa-6.40.0.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.40.0 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.40.0-2 to F-13, you -# would also need to release 6.40.0-2 to F-14. -# -# An alternative is to release 6.40.1 with a zarafa-6.40.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 -# -.src.rpm vs. the installed -# -..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-.svn.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 - 6.40.0-0.1svn12345 -# - Improve packaging -# -# might, in a final release, become: -# -# * Some Time Zarafa Release Engineering - 6.40.0-1 -# - Release 6.40.0 -# - 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-14-x86_64, -# c) fedora-13-x86_64, -# d) epel-6-x86_64, -# e) epel-5-x86_64, -# f) epel-4-x86_64 -# -# or scratch build in koji; -# -# for tag in dist-f15 dist-f14-updates-candidate dist-f13-updates-candidate \ -# dist-6E-epel 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. -# - %global beta_or_rc 0 %global actual_release 1 -%global svnrevision 27553 +%global svnrevision 27791 %global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 @@ -137,7 +18,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 6.40.9 +Version: 7.0.0 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -152,15 +33,16 @@ License: AGPLv3 with exceptions Group: Applications/Productivity URL: http://www.zarafa.com/ %if %{beta_or_rc} -Source0: http://download.zarafa.com/community/beta/6.40/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz +Source0: http://download.zarafa.com/community/beta/7.0/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz %else -Source0: http://download.zarafa.com/community/final/6.40/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz +Source0: http://download.zarafa.com/community/final/7.0/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz %endif Source1: %{name}.ini Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.5-rpath.patch +Patch1: zarafa-7.0.0-cpp_std.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -168,7 +50,7 @@ BuildRequires: byacc BuildRequires: flex BuildRequires: gettext BuildRequires: libical-devel >= 0.42 -BuildRequires: libvmime07-devel +BuildRequires: libvmime-devel >= 0.9.0 BuildRequires: libxml2-devel BuildRequires: mysql-devel >= 4.1 BuildRequires: ncurses-devel @@ -176,6 +58,7 @@ BuildRequires: pam-devel BuildRequires: php-devel >= 4.3 BuildRequires: %{_includedir}/uuid/uuid.h BuildRequires: %{_includedir}/curl/curl.h +BuildRequires: libicu-devel >= 3.4 %if 0%{?rhel}%{?fedora} > 5 BuildRequires: boost-devel >= 1.35.0 %else @@ -335,7 +218,7 @@ can be configured to listen for HTTP and HTTPS requests. Summary: The Zarafa Indexing service Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release}, file -Requires: catdoc, libxslt, lynx, unzip, %{_bindir}/pdftotext +Requires: catdoc, libxslt, w3m, unzip, %{_bindir}/pdftotext Requires(post): /sbin/chkconfig Requires(preun): /sbin/service, /sbin/chkconfig Requires(postun): /sbin/service @@ -511,6 +394,7 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 +%patch1 -p1 -b .cpp_std %build export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -ggdb" @@ -530,6 +414,7 @@ export LDFLAGS="$LDFLAGS -L%{_libdir}/boost141" --with-clucene-lib-prefix= \ %endif --enable-swig \ + --disable-perl \ %if 0%{?rhel}%{?fedora} > 4 --enable-python \ %else @@ -553,8 +438,7 @@ make \ # Nuke all overlefts from licensed, managed or other proprietary items rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{license,licensed.cfg,report-ca} -rm -f $RPM_BUILD_ROOT%{_mandir}/man?/zarafa-{backup,restore,report,msr,ldapms.cfg,licensed{,.cfg},archiver{,.cfg}}.* -rm -f $RPM_BUILD_ROOT%{_bindir}/%{name}-msr +rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,ldapms.cfg,licensed{,.cfg},archiver{,.cfg}},za-aclsync}.* # Move all the initscripts to their appropriate place and # ensure that all services are off by default at boot time @@ -584,7 +468,6 @@ for config in $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/example-config/*.cfg; do done # Move the logrotate configuration file to its correct place -rm -f $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/* install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name} # Move the userscripts to their correct place and symlink them @@ -598,7 +481,7 @@ done # Create the data directory and install some files into mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/ install -p -m 644 installer/linux/db-{calc-storesize,convert-attachments-to-files} $RPM_BUILD_ROOT%{_datadir}/%{name}/ -install -p -m 644 installer/linux/ssl-certificates.sh $RPM_BUILD_ROOT%{_datadir}/%{name}/ +install -p -m 644 installer/linux/{ssl-certificates.sh,audit-parse.pl,zarafa7-upgrade} $RPM_BUILD_ROOT%{_datadir}/%{name}/ %if %{with_ldap} install -p -m 644 installer/linux/{db-upgrade-objectsid-to-objectguid,ldap-switch-sendas}.pl $RPM_BUILD_ROOT%{_datadir}/%{name}/ install -p -m 644 installer/ldap/%{name}.schema $RPM_BUILD_ROOT%{_datadir}/%{name}/ @@ -607,6 +490,10 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ldap.{active-directory,openldap,prop rm -f $RPM_BUILD_ROOT%{_mandir}/man5/%{name}-ldap.cfg.5* %endif +# Install the script to optimize IMAP headers for new gateway +mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-gateway/ +install -p -m 644 tools/python-scripts/optimize-imap.py $RPM_BUILD_ROOT%{_datadir}/%{name}-gateway/ + # Create the default log and lib directory for packaging mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/{log,lib}/%{name}/ @@ -614,10 +501,7 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/{log,lib}/%{name}/ rm -f $RPM_BUILD_ROOT{%{_libdir}/{,php/modules,php4,%{name}},%{perl_vendorarch}/auto/MAPI,%{python_sitearch}}/*.la # Remove files that are anyway in %doc or %{_datadir}/%{name}/ -rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}{,-indexer}/ - -# Remove unwanted/unused files that shouldn't exist anyway... -rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}-indexer +rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}{,-gateway}/ # Move Indexer/CLucene related files to its correct places %if %{with_clucene} @@ -658,7 +542,7 @@ mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} # Remove flash-based multi-attachment upload (missing source) %if %{no_multiupload} -sed '119,126d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ +sed '122,129d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php.new touch -c -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{,.new} mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} @@ -854,6 +738,7 @@ fi %{_bindir}/%{name}-gateway %config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/gateway.cfg %{_sysconfdir}/rc.d/init.d/%{name}-gateway +%{_datadir}/%{name}-gateway/ %{_mandir}/man1/%{name}-gateway.1* %{_mandir}/man5/%{name}-gateway.cfg.5* @@ -956,15 +841,15 @@ fi %defattr(-,root,root,-) %doc installer/licenseagreement/AGPL-3 %{_bindir}/%{name}-admin -%{_bindir}/%{name}-cfgchecker %{_bindir}/%{name}-fsck %{_bindir}/%{name}-passwd %{_bindir}/%{name}-stats +%{_datadir}/%{name}/audit-parse.pl %{_datadir}/%{name}/db-calc-storesize %{_datadir}/%{name}/db-convert-attachments-to-files %{_datadir}/%{name}/ssl-certificates.sh +%{_datadir}/%{name}/zarafa7-upgrade %{_mandir}/man1/%{name}-admin.1* -%{_mandir}/man1/%{name}-cfgchecker.1* %{_mandir}/man1/%{name}-fsck.1* %{_mandir}/man1/%{name}-passwd.1* %{_mandir}/man1/%{name}-stats.1* @@ -1015,6 +900,9 @@ fi %endif %changelog +* Mon Jun 27 2011 Robert Scheck 7.0.0-1 +- Upgrade to 7.0.0 + * Tue Jun 14 2011 Robert Scheck 6.40.9-1 - Upgrade to 6.40.9 From e36b99035f4e248ada3ce337492c2c1ebcde6b94 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Mon, 27 Jun 2011 15:09:49 +0200 Subject: [PATCH 12/69] Disable CLucene support on Rawhide because of incompatibility (for now) --- zarafa.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 03a6303..5e3c65d 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,7 +1,7 @@ %global beta_or_rc 0 %global actual_release 1 %global svnrevision 27791 -%global with_clucene 1 +%global with_clucene 0 %global with_ldap 1 %global with_xmlto 1 %global no_multiupload 1 From 28e9711af63302e012d639ed5909eb5e597d444d Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 14 Aug 2011 01:57:02 +0200 Subject: [PATCH 13/69] Upgrade to 7.0.1 (#725250, #725909, #727346) --- .gitignore | 2 +- sources | 2 +- zarafa-7.0.0-cpp_std.patch | 14 ---- zarafa.logrotate | 10 +++ zarafa.spec | 130 ++++++++++++++----------------------- 5 files changed, 60 insertions(+), 98 deletions(-) delete mode 100644 zarafa-7.0.0-cpp_std.patch diff --git a/.gitignore b/.gitignore index 57993fa..32dc724 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -zcp-7.0.0.tar.gz +zcp-7.0.1.tar.gz diff --git a/sources b/sources index 00d7b04..5e18ab7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -bed709709c175858414aa8965b4aa20f zcp-7.0.0.tar.gz +2c268b1e5cba538c7d84ec9a742c3347 zcp-7.0.1.tar.gz diff --git a/zarafa-7.0.0-cpp_std.patch b/zarafa-7.0.0-cpp_std.patch deleted file mode 100644 index f4640d7..0000000 --- a/zarafa-7.0.0-cpp_std.patch +++ /dev/null @@ -1,14 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.0.0, which solves the make failure -"error: 'string' was not declared in this scope" on Fedora 16 (Rawhide) using GCC 4.6.0. - ---- zarafa-7.0.0/ECtools/zarafa-indexer/ECSearcherRequest.cpp 2011-06-10 03:37:37.000000000 +0200 -+++ zarafa-7.0.0/ECtools/zarafa-indexer/ECSearcherRequest.cpp.cpp_std 2011-06-26 19:42:15.000000000 +0200 -@@ -153,7 +153,7 @@ - } - - while (!m_lpThreadData->bShutdown) { -- string strLine; -+ std::string strLine; - command_t ulCommand; - std::vector listArgs; - std::string strResponse; diff --git a/zarafa.logrotate b/zarafa.logrotate index 4daf882..17a12ed 100644 --- a/zarafa.logrotate +++ b/zarafa.logrotate @@ -1,3 +1,13 @@ +/var/log/zarafa/archiver.log { + weekly + missingok + rotate 52 + compress + delaycompress + notifempty + create 0644 zarafa zarafa +} + /var/log/zarafa/dagent.log { weekly missingok diff --git a/zarafa.spec b/zarafa.spec index 5e3c65d..8f44767 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,7 +1,7 @@ %global beta_or_rc 0 %global actual_release 1 -%global svnrevision 27791 -%global with_clucene 0 +%global svnrevision 28479 +%global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 %global no_multiupload 1 @@ -18,7 +18,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.0 +Version: 7.0.1 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -42,7 +42,6 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.5-rpath.patch -Patch1: zarafa-7.0.0-cpp_std.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -84,7 +83,7 @@ BuildRequires: openldap-devel BuildRequires: xmlto %endif -# The main package pulls in all of zarafa except indexer and webaccess +# The main package pulls in all of classical zarafa core packages Requires: zarafa-dagent%{?_isa} = %{version}-%{release} Requires: zarafa-gateway%{?_isa} = %{version}-%{release} Requires: zarafa-ical%{?_isa} = %{version}-%{release} @@ -109,9 +108,17 @@ 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 the Zarafa Collaboration Platform (ZCP). -## -## Zarafa Client library -## +%package archiver +Summary: Archive messages to a secondary Zarafa server +Group: Applications/Archiving +Requires: zarafa-common = %{version}-%{release} + +%description archiver +The zarafa-archiver package includes the Zarafa Archiver to decrease the +size of a production Zarafa server by copying or moving the messages to +a secondary Zarafa server. Clients will still be able to open the message +from the secondary Zarafa server directly. + %package client Summary: The Zarafa Client library Group: System Environment/Libraries @@ -122,9 +129,6 @@ The zarafa-client package provides the Zarafa Client library, which gets used by the Open Source MAPI (Messaging Application Programming Interface) implementation of Zarafa as provider between MAPI and Zarafa. -## -## Common Zarafa files and directories -## %package common Summary: Common Zarafa files and directories Group: Applications/Productivity @@ -138,11 +142,8 @@ The zarafa-common package provides the filesystem structure and includes common files required by most other Zarafa packages. It also provides the creation of the zarafa user for the different Zarafa services. -## -## Zarafa Delivery Agent -## %package dagent -Summary: The Zarafa Delivery Agent +Summary: Mail Delivery Agent for Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release} Requires(post): /sbin/chkconfig @@ -150,14 +151,11 @@ Requires(preun): /sbin/service, /sbin/chkconfig Requires(postun): /sbin/service %description dagent -The zarafa-dagent package includes the Zarafa Delivery Agent to import +The zarafa-dagent package includes the Zarafa Delivery Agent to deliver e-mail messages from Internet Mail format to Zarafa. The Zarafa Delivery Agent can be used trigger the local mailer (MDA) or even act as the LMTP server. -## -## Zarafa development files -## %package devel Summary: Development files for several Zarafa libraries Group: Development/Libraries @@ -171,11 +169,8 @@ developing own programs which use functions and interfaces from the Zarafa Collaboration Platform. The Zarafa Open Source Collaboration is using MAPI objects, provides a MAPI client library and a C++ programming interface. -## -## Zarafa POP3/IMAP Gateway service -## %package gateway -Summary: The Zarafa POP3/IMAP Gateway service +Summary: POP3/IMAP Gateway for the Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release} Requires(post): /sbin/chkconfig @@ -190,11 +185,8 @@ as well to view the contents of shared folders and subfolders. The Zarafa POP3/IMAP Gateway service can be configured to listen for POP3, POP3S, IMAP and/or IMAPS. -## -## Zarafa iCal/CalDAV gateway -## %package ical -Summary: The Zarafa iCal/CalDAV gateway +Summary: iCal/CalDAV gateway for the Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release} Requires(post): /sbin/chkconfig @@ -211,11 +203,8 @@ or CalDAV (RFC 4791) compliant clients. The iCal/CalDAV gateway service can be configured to listen for HTTP and HTTPS requests. %if %{with_clucene} -## -## Zarafa Indexing service -## %package indexer -Summary: The Zarafa Indexing service +Summary: Indexer search engine for the Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release}, file Requires: catdoc, libxslt, w3m, unzip, %{_bindir}/pdftotext @@ -231,11 +220,8 @@ search queries, the server will use this index to quickly find messages, items and even in contents of attached documents. %endif -## -## Zarafa Monitoring service -## %package monitor -Summary: The Zarafa Monitoring service +Summary: Quota Monitor for the Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release} Requires(post): /sbin/chkconfig @@ -247,11 +233,8 @@ The zarafa-monitor package includes the Zarafa Monitoring service which is responsible for checking the users store (mailbox) size, and sending them (and administrators) a warning e-mail when limits are exceeded. -## -## Zarafa Server service -## %package server -Summary: The main Zarafa Server service +Summary: Server component for the Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release} Requires(post): /sbin/chkconfig @@ -264,11 +247,8 @@ process. It contacts a database server and provides services to Zarafa clients. The user base can be either retrieved from an external source or can be setup with a separate list of users. -## -## Zarafa Spooler service -## %package spooler -Summary: The Zarafa Spooler service +Summary: Mail Spooler for the Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release} Requires(post): /sbin/chkconfig @@ -280,9 +260,6 @@ The zarafa-spooler package includes the Zarafa Spooler service which is responsible for converting the Zarafa e-mails from outboxes to Internet Mail and send it using the configured SMTP server to the recipients. -## -## Zarafa Utilities -## %package utils Summary: Zarafa Utilities for administration and management Group: Applications/System @@ -293,14 +270,16 @@ The zarafa-utils package includes various administration and management utilities for the Zarafa Open Source Collaboration environment including reporting, user and password management. -## -## Zarafa Webaccess -## %package webaccess Summary: Zarafa Webaccess featuring a 'Look & Feel' similar to Outlook Group: Applications/Productivity -Requires: httpd -Requires: php >= 4.3, php-mapi = %{version}-%{release} +Requires: httpd, php-mapi = %{version}-%{release} +# Bug: php53 from RHEL 5 does not provide php (#717158) +%if 0%{?rhel} == 5 +Requires: mod_php >= 4.3 +%else +Requires: php >= 4.3 +%endif %if 0%{?rhel}%{?fedora} > 5 BuildArch: noarch %endif @@ -313,9 +292,6 @@ web browser. And opening your colleagues calendar or sending a meeting request is only a piece of cake. The Zarafa Webaccess is using the ajax technology to give a more interactive feeling to the users. -## -## MAPI library -## %package -n libmapi Summary: MAPI implementation and library by Zarafa Group: System Environment/Libraries @@ -334,9 +310,6 @@ service providers, etc. This MAPI implementation by Zarafa is also known as MAPI4Linux. %if 0 -## -## Perl MAPI extension -## %package -n perl-MAPI Summary: The Perl MAPI extension by Zarafa Group: Development/Libraries @@ -349,9 +322,6 @@ The perl-MAPI package contains the Perl MAPI extension to provide access to Microsoft MAPI functions while using Perl. %endif -## -## PHP MAPI extension -## %package -n php-mapi Summary: The PHP MAPI extension by Zarafa Group: Development/Languages @@ -376,9 +346,6 @@ e.g. webbased e-mail and calendaring systems and interfaces with existing PHP projects, using the MAPI functions like a normal MAPI program. %if 0%{?rhel}%{?fedora} > 4 -## -## Python MAPI extension -## %package -n python-MAPI Summary: The Python MAPI extension by Zarafa Group: Development/Languages @@ -394,10 +361,8 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 -%patch1 -p1 -b .cpp_std %build -export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -ggdb" %if 0%{?rhel}%{?fedora} < 6 export CPPFLAGS="$CPPFLAGS -I%{_includedir}/boost141" export LDFLAGS="$LDFLAGS -L%{_libdir}/boost141" @@ -413,6 +378,7 @@ export LDFLAGS="$LDFLAGS -L%{_libdir}/boost141" %else --with-clucene-lib-prefix= \ %endif + --enable-release \ --enable-swig \ --disable-perl \ %if 0%{?rhel}%{?fedora} > 4 @@ -438,7 +404,7 @@ make \ # Nuke all overlefts from licensed, managed or other proprietary items rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{license,licensed.cfg,report-ca} -rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,ldapms.cfg,licensed{,.cfg},archiver{,.cfg}},za-aclsync}.* +rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,ldapms.cfg,licensed{,.cfg}},za-aclsync}.* # Move all the initscripts to their appropriate place and # ensure that all services are off by default at boot time @@ -559,6 +525,10 @@ 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 archiver +# Ensure correct log file ownership after upgrade from official packages +chown %{name}:%{name} %{_localstatedir}/log/%{name}/archiver.* > /dev/null 2>&1 || : + %post dagent [ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-dagent # Ensure correct log file ownership after upgrade from official packages @@ -684,15 +654,21 @@ fi %files %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 + +%files archiver +%defattr(-,root,root,-) +%{_bindir}/%{name}-archiver +%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/archiver.cfg +%{_mandir}/man1/%{name}-archiver.1* +%{_mandir}/man5/%{name}-archiver.cfg.5* %files client -f %{name}.lang %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 %{_libdir}/libzarafaclient.so %files common %defattr(-,root,root,-) +%doc installer/licenseagreement/AGPL-3 %dir %{_sysconfdir}/%{name}/ %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %config(noreplace) %{_sysconfdir}/sysconfig/%{name} @@ -703,7 +679,7 @@ fi %files dagent %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 installer/linux/createuser.dotforward +%doc installer/linux/createuser.dotforward %{_bindir}/%{name}-autorespond %{_bindir}/%{name}-dagent %config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/dagent.cfg @@ -714,7 +690,6 @@ fi %files devel %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 %{_libdir}/libarchiver.so %{_libdir}/libicalmapi.so %{_libdir}/libinetmapi.so @@ -734,7 +709,6 @@ fi %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 @@ -744,7 +718,6 @@ fi %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 @@ -754,7 +727,6 @@ fi %if %{with_clucene} %files indexer %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 %{_bindir}/%{name}-indexer %config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/indexer.cfg %{_sysconfdir}/rc.d/init.d/%{name}-indexer @@ -773,7 +745,6 @@ fi %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/ @@ -789,7 +760,6 @@ fi %files server %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 @@ -830,7 +800,6 @@ fi %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 @@ -839,7 +808,6 @@ fi %files utils %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 %{_bindir}/%{name}-admin %{_bindir}/%{name}-fsck %{_bindir}/%{name}-passwd @@ -856,7 +824,6 @@ fi %files webaccess %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 %config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}-webaccess.conf %dir %{_sysconfdir}/%{name}/ %dir %{_sysconfdir}/%{name}/webaccess/ @@ -867,7 +834,6 @@ fi %files -n libmapi %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 %{_libdir}/libarchiver.so.* %{_libdir}/libicalmapi.so.* %{_libdir}/libinetmapi.so.* @@ -876,14 +842,12 @@ fi %if 0 %files -n perl-MAPI %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 %{perl_vendorarch}/MAPI.pm %{perl_vendorarch}/auto/MAPI/ %endif %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 @@ -895,11 +859,13 @@ fi %if 0%{?rhel}%{?fedora} > 4 %files -n python-MAPI %defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 %{python_sitearch}/* %endif %changelog +* Sun Aug 14 2011 Robert Scheck 7.0.1-1 +- Upgrade to 7.0.1 (#725250, #725909, #727346) + * Mon Jun 27 2011 Robert Scheck 7.0.0-1 - Upgrade to 7.0.0 From 552319a638986416640fd5d0ead6e9fd6fb9fff8 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 14 Aug 2011 02:01:37 +0200 Subject: [PATCH 14/69] Disable CLucene support on Fedora 16+ because of incompatibility (for now) --- zarafa.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 8f44767..1ce5518 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,7 +1,7 @@ %global beta_or_rc 0 %global actual_release 1 %global svnrevision 28479 -%global with_clucene 1 +%global with_clucene 0 %global with_ldap 1 %global with_xmlto 1 %global no_multiupload 1 From b7e65a1021153fb2216cf1b1cc0d3a1c7e0151f3 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 23 Sep 2011 17:40:23 -0400 Subject: [PATCH 15/69] Rebuild for new icu --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 1ce5518..de8705c 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 28479 %global with_clucene 0 %global with_ldap 1 @@ -863,6 +863,9 @@ fi %endif %changelog +* Fri Sep 23 2011 Adam Jackson 7.0.1-2 +- Rebuild for new icu + * Sun Aug 14 2011 Robert Scheck 7.0.1-1 - Upgrade to 7.0.1 (#725250, #725909, #727346) From 9d719ee444b159200f62e4163488c4fba0d951d3 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sat, 1 Oct 2011 12:54:29 +0200 Subject: [PATCH 16/69] Upgrade to 7.0.2 (#717968) --- .gitignore | 2 +- sources | 2 +- zarafa.spec | 17 ++++++----------- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 32dc724..5ad4ea6 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -zcp-7.0.1.tar.gz +zcp-7.0.2.tar.gz diff --git a/sources b/sources index 5e18ab7..3ba76ec 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -2c268b1e5cba538c7d84ec9a742c3347 zcp-7.0.1.tar.gz +9a0604a9b769057941a1e83781134176 zcp-7.0.2.tar.gz diff --git a/zarafa.spec b/zarafa.spec index 1ce5518..93c8d75 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,7 +1,7 @@ %global beta_or_rc 0 %global actual_release 1 -%global svnrevision 28479 -%global with_clucene 0 +%global svnrevision 29470 +%global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 %global no_multiupload 1 @@ -18,7 +18,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.1 +Version: 7.0.2 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -498,14 +498,6 @@ mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/plugins/ rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/client/widgets/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.{cfm,pl} rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.htaccess,%{name}-webaccess.conf} -# Replace example timezone by default from PHP configuration -sed -e 's@"Europe/London"@date_default_timezone_get()@' \ - -e 's@\(Defines the default time zone\)@\1, change e.g. to "Europe/Amsterdam" when needed@' \ - $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ - $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php.new -touch -c -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{,.new} -mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} - # Remove flash-based multi-attachment upload (missing source) %if %{no_multiupload} sed '122,129d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ @@ -863,6 +855,9 @@ fi %endif %changelog +* Sat Oct 01 2011 Robert Scheck 7.0.2-1 +- Upgrade to 7.0.2 (#717968) + * Sun Aug 14 2011 Robert Scheck 7.0.1-1 - Upgrade to 7.0.1 (#725250, #725909, #727346) From 6ee8c0a5afb58834752602d9d82a9f7f23b769bd Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sat, 1 Oct 2011 12:57:09 +0200 Subject: [PATCH 17/69] Upgrade to 7.0.2 (#717968) --- zarafa.spec | 6 ------ 1 file changed, 6 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index a1e23c6..93c8d75 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,13 +1,7 @@ %global beta_or_rc 0 -<<<<<<< HEAD %global actual_release 1 %global svnrevision 29470 %global with_clucene 1 -======= -%global actual_release 2 -%global svnrevision 28479 -%global with_clucene 0 ->>>>>>> b7e65a1021153fb2216cf1b1cc0d3a1c7e0151f3 %global with_ldap 1 %global with_xmlto 1 %global no_multiupload 1 From 970966be09fd0a274b6021cd397b53f01573a604 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sat, 1 Oct 2011 14:17:20 +0200 Subject: [PATCH 18/69] Disable CLucene support on Fedora 16+ because of incompatibility (for now) --- zarafa.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 93c8d75..192ac87 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,7 +1,7 @@ %global beta_or_rc 0 %global actual_release 1 %global svnrevision 29470 -%global with_clucene 1 +%global with_clucene 0 %global with_ldap 1 %global with_xmlto 1 %global no_multiupload 1 From e315db38d63957ae50455380f590b89878d4815a Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 20 Nov 2011 02:11:12 +0100 Subject: [PATCH 19/69] Upgrade to 7.0.3 --- .gitignore | 2 +- sources | 2 +- zarafa.spec | 24 +++++++++++++++++++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 5ad4ea6..48c5bed 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -zcp-7.0.2.tar.gz +zcp-7.0.3.tar.gz diff --git a/sources b/sources index 3ba76ec..1491604 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -9a0604a9b769057941a1e83781134176 zcp-7.0.2.tar.gz +ca99502e89089286357e724937917eaa zcp-7.0.3.tar.gz diff --git a/zarafa.spec b/zarafa.spec index 192ac87..da829f6 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,7 +1,7 @@ %global beta_or_rc 0 %global actual_release 1 -%global svnrevision 29470 -%global with_clucene 0 +%global svnrevision 30515 +%global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 %global no_multiupload 1 @@ -18,7 +18,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.2 +Version: 7.0.3 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -72,8 +72,12 @@ BuildRequires: python-devel >= 2.4 %endif %if %{with_clucene} +%if 0%{?fedora} > 15 +BuildRequires: clucene09-core-devel >= 0.9.21b-1 +%else BuildRequires: clucene-core-devel >= 0.9.21b-1 %endif +%endif %if %{with_ldap} BuildRequires: openldap-devel @@ -146,6 +150,7 @@ creation of the zarafa user for the different Zarafa services. Summary: Mail Delivery Agent for Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release} +Requires: php-mapi%{?_isa} = %{version}-%{release} Requires(post): /sbin/chkconfig Requires(preun): /sbin/service, /sbin/chkconfig Requires(postun): /sbin/service @@ -368,13 +373,22 @@ export CPPFLAGS="$CPPFLAGS -I%{_includedir}/boost141" export LDFLAGS="$LDFLAGS -L%{_libdir}/boost141" %endif +%if 0%{?fedora} > 15 +export LDFLAGS="$LDFLAGS -L%{_libdir}/clucene09" +%endif + %configure \ --with-userscript-prefix=%{_sysconfdir}/%{name}/userscripts \ --with-quotatemplate-prefix=%{_sysconfdir}/%{name}/quotamail \ --with-indexerscripts-prefix=%{_datadir}/%{name}/indexerscripts \ %if %{with_clucene} +%if 0%{?fedora} > 15 + --with-clucene-lib-prefix=%{_libdir}/clucene09 \ + --with-clucene-include-prefix=%{_includedir}/clucene09 \ +%else --with-clucene-lib-prefix=%{_libdir} \ --with-clucene-include-prefix=%{_includedir} \ +%endif %else --with-clucene-lib-prefix= \ %endif @@ -674,6 +688,7 @@ fi %doc installer/linux/createuser.dotforward %{_bindir}/%{name}-autorespond %{_bindir}/%{name}-dagent +%{_bindir}/%{name}-mr-accept %config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/dagent.cfg %config(noreplace) %{_sysconfdir}/%{name}/autorespond %{_sysconfdir}/rc.d/init.d/%{name}-dagent @@ -855,6 +870,9 @@ fi %endif %changelog +* Sun Nov 20 2011 Robert Scheck 7.0.3-1 +- Upgrade to 7.0.3 + * Sat Oct 01 2011 Robert Scheck 7.0.2-1 - Upgrade to 7.0.2 (#717968) From 48446669ef956099c5acded37f3b854b9343bd57 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sat, 17 Dec 2011 15:07:14 +0100 Subject: [PATCH 20/69] Added patch to compile with Boost 1.49 on Rawhide --- zarafa-7.0.3-boost149.patch | 28 ++++++++++++++++++++++++++++ zarafa.spec | 3 +++ 2 files changed, 31 insertions(+) create mode 100644 zarafa-7.0.3-boost149.patch diff --git a/zarafa-7.0.3-boost149.patch b/zarafa-7.0.3-boost149.patch new file mode 100644 index 0000000..6f50c8d --- /dev/null +++ b/zarafa-7.0.3-boost149.patch @@ -0,0 +1,28 @@ +Patch by Robert Scheck for zarafa >= 7.0.3, which allows +to compile Zarafa 7.0.3 using Boost 1.49. This is neccessary, because Zarafa uses +Boost filesystem version 2 while it got deprecated with Boost 1.48. However, Boost +1.49 is still shipping filesystem version 2. For the time being, this allows us to +compile Zarafa still with newer Boost versions. + +--- zarafa-7.0.3/configure 2011-12-17 14:47:32.000000000 +0100 ++++ zarafa-7.0.3/configure.boost149 2011-12-17 14:48:34.000000000 +0100 +@@ -30975,7 +30975,7 @@ + { echo "$as_me:$LINENO: checking boost version compatibility" >&5 + echo $ECHO_N "checking boost version compatibility... $ECHO_C" >&6; } + if test -n "$boost_major_version" -a $boost_major_version -ge 146; then +- if test $boost_major_version -ge 148; then ++ if test $boost_major_version -ge 149; then + { { echo "$as_me:$LINENO: error: boost version is too new" >&5 + echo "$as_me: error: boost version is too new" >&2;} + { (exit 1); exit 1; }; } +--- zarafa-7.0.3/configure.ac 2011-11-16 23:00:21.000000000 +0100 ++++ zarafa-7.0.3/configure.ac.boost149 2011-12-17 14:48:20.000000000 +0100 +@@ -657,7 +657,7 @@ + BOOST_DATE_TIME([mt]) + AC_MSG_CHECKING([boost version compatibility]) + if test -n "$boost_major_version" -a $boost_major_version -ge 146; then +- if test $boost_major_version -ge 148; then ++ if test $boost_major_version -ge 149; then + AC_MSG_ERROR([boost version is too new]) + fi + AC_MSG_RESULT([adding backward compatible flags]) diff --git a/zarafa.spec b/zarafa.spec index da829f6..2b838d5 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -42,6 +42,7 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.5-rpath.patch +Patch1: zarafa-7.0.3-boost149.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -366,6 +367,8 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 +%patch1 -p1 -b .boost149 +touch -c -r configure.ac.boost149 configure.ac %build %if 0%{?rhel}%{?fedora} < 6 From b2a9f5349a090f69c0be157342adf23d70e46bda Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sat, 17 Dec 2011 16:17:06 +0100 Subject: [PATCH 21/69] Enabled non-optional build of epoll socket handling (#760888) --- zarafa.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index 2b838d5..d3de4c0 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 30515 %global with_clucene 1 %global with_ldap 1 @@ -396,6 +396,7 @@ export LDFLAGS="$LDFLAGS -L%{_libdir}/clucene09" --with-clucene-lib-prefix= \ %endif --enable-release \ + --enable-epoll \ --enable-swig \ --disable-perl \ %if 0%{?rhel}%{?fedora} > 4 @@ -517,7 +518,7 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.htaccess,%{name}-webaccess. # Remove flash-based multi-attachment upload (missing source) %if %{no_multiupload} -sed '122,129d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ +sed '125,132d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php.new touch -c -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{,.new} mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} @@ -873,6 +874,9 @@ fi %endif %changelog +* Sat Dec 17 2011 Robert Scheck 7.0.3-2 +- Enabled non-optional build of epoll socket handling (#760888) + * Sun Nov 20 2011 Robert Scheck 7.0.3-1 - Upgrade to 7.0.3 From d4b9b96d28925d00965292fa1b66ea8bf11dac20 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Fri, 13 Jan 2012 01:28:55 +0100 Subject: [PATCH 22/69] - 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) --- zarafa-7.0.4-fd_setsize.patch | 36 ++++++++++ zarafa-7.0.4-php54.patch | 130 ++++++++++++++++++++++++++++++++++ zarafa.spec | 23 ++++-- 3 files changed, 183 insertions(+), 6 deletions(-) create mode 100644 zarafa-7.0.4-fd_setsize.patch create mode 100644 zarafa-7.0.4-php54.patch diff --git a/zarafa-7.0.4-fd_setsize.patch b/zarafa-7.0.4-fd_setsize.patch new file mode 100644 index 0000000..14764cb --- /dev/null +++ b/zarafa-7.0.4-fd_setsize.patch @@ -0,0 +1,36 @@ +Patch by Robert Scheck for Zarafa >= 7.0.4, which works around +the issue that Zarafa is using up to 8192 open file descriptors, while the system glibc is +allowing at maximum 1024. Of course glibc supports more open file descriptors, however the +usage seems to be non-POSIX conform and non-portable. Finally a check was implemented into +glibc by upstream developers to catch such strange usage cases. That check causes Zarafa +to fail with a segmentation fault when built with -D_FORTIFY_SOURCE=2 and glibc-2.14.90-8 +or newer (actually Fedora 16 with updates and newer). + +This patch is a workaround until gSOAP parts are updated/changed/rewritten to use poll(2) +instead of select(2). Lowering FD_SETSIZE was suggested by Milo Oostergo from Zarafa B.V. + +--- zarafa-7.0.4/provider/soap/soapdefs.h 2011-12-22 01:02:31.000000000 +0100 ++++ zarafa-7.0.4/provider/soap/soapdefs.h.fd_setsize 2012-01-12 22:36:40.000000000 +0100 +@@ -8,6 +8,6 @@ + + #include + #undef __FD_SETSIZE +-#define __FD_SETSIZE 8192 ++#define __FD_SETSIZE 1024 + + #endif // ndef SOAPDEFS_H_ +--- zarafa-7.0.4/common/platform.h 2011-12-22 01:02:34.000000000 +0100 ++++ zarafa-7.0.4/common/platform.h.fd_setsize 2012-01-12 22:37:03.000000000 +0100 +@@ -52,10 +52,10 @@ + + + // We have to include this now in case select.h is included too soon. +- // Increase our maximum amount of file descriptors to 8192 ++ // Increase our maximum amount of file descriptors to 1024 + #include + #undef __FD_SETSIZE +- #define __FD_SETSIZE 8192 ++ #define __FD_SETSIZE 1024 + + // Log the pthreads locks + #define DEBUG_PTHREADS 0 diff --git a/zarafa-7.0.4-php54.patch b/zarafa-7.0.4-php54.patch new file mode 100644 index 0000000..9684ac3 --- /dev/null +++ b/zarafa-7.0.4-php54.patch @@ -0,0 +1,130 @@ +Patch by Robert Scheck for Zarafa >= 7.0.4, which fixes building of the PHP +extension of Zarafa with PHP >= 5.4.0. It is heavily based on the work of Remi Collet. Fedora 17+ will +ship PHP >= 5.4.0, so the changes are here mandatory. According to /usr/include/php/main/php3_compat.h +the "typedef zval pval;" definition exists for ages and I wasn't able to figure out any build issue in +Red Hat Enterprise Linux 5 (as oldest supported version of Zarafa 7.0.x) during my tests. References: + + - https://github.com/remicollet/remirepo/blob/1e741d6002a34add940c15711cf061c35d4c9e91/zarafa/zarafa-7.0.3-php54.patch + - http://forums.zarafa.com/viewtopic.php?f=22&t=7826 + +--- zarafa-7.0.4/php-ext/ECImportContentsChangesProxy.cpp 2011-12-22 01:02:33.000000000 +0100 ++++ zarafa-7.0.4/php-ext/ECImportContentsChangesProxy.cpp.php54 2012-01-08 23:58:33.000000000 +0100 +@@ -150,9 +150,9 @@ + HRESULT ECImportContentsChangesProxy::Config(LPSTREAM lpStream, ULONG ulFlags) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[2]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[2]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -192,9 +192,9 @@ + HRESULT ECImportContentsChangesProxy::UpdateState(LPSTREAM lpStream) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[1]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[1]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -228,9 +228,9 @@ + } + + HRESULT ECImportContentsChangesProxy::ImportMessageChange(ULONG cValues, LPSPropValue lpPropArray, ULONG ulFlags, LPMESSAGE * lppMessage) { +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[3]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[3]; + IMessage *lpMessage = NULL; + HRESULT hr = hrSuccess; + +@@ -287,9 +287,9 @@ + HRESULT ECImportContentsChangesProxy::ImportMessageDeletion(ULONG ulFlags, LPENTRYLIST lpSourceEntryList) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[2]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[2]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -323,9 +323,9 @@ + HRESULT ECImportContentsChangesProxy::ImportPerUserReadStateChange(ULONG cElements, LPREADSTATE lpReadState) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[1]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[1]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +--- zarafa-7.0.4/php-ext/ECImportHierarchyChangesProxy.cpp 2011-12-22 01:02:33.000000000 +0100 ++++ zarafa-7.0.4/php-ext/ECImportHierarchyChangesProxy.cpp.php54 2012-01-08 23:58:33.000000000 +0100 +@@ -147,9 +147,9 @@ + HRESULT ECImportHierarchyChangesProxy::Config(LPSTREAM lpStream, ULONG ulFlags) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[2]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[2]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -189,9 +189,9 @@ + HRESULT ECImportHierarchyChangesProxy::UpdateState(LPSTREAM lpStream) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[1]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[1]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -225,9 +225,9 @@ + } + + HRESULT ECImportHierarchyChangesProxy::ImportFolderChange(ULONG cValues, LPSPropValue lpPropArray) { +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[1]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[1]; + HRESULT hr = hrSuccess; + + MAKE_STD_ZVAL(pvalFuncName); +@@ -265,9 +265,9 @@ + HRESULT ECImportHierarchyChangesProxy::ImportFolderDeletion(ULONG ulFlags, LPENTRYLIST lpSourceEntryList) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[2]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[2]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); diff --git a/zarafa.spec b/zarafa.spec index d3de4c0..e9cd0e3 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 30515 +%global actual_release 1 +%global svnrevision 31235 %global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 @@ -12,13 +12,14 @@ %if 0%{?rhel}%{?fedora} > 4 %{?filter_setup: %filter_provides_in %{_libdir}/%{name}/.*\.so$ +%filter_provides_in %{_libdir}/php/modules/.*\.so$ %filter_setup } %endif Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.3 +Version: 7.0.4 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -43,6 +44,8 @@ Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.5-rpath.patch Patch1: zarafa-7.0.3-boost149.patch +Patch2: zarafa-7.0.4-php54.patch +Patch3: zarafa-7.0.4-fd_setsize.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -369,6 +372,8 @@ to interact with Zarafa. touch -c -r aclocal.m4.rpath aclocal.m4 %patch1 -p1 -b .boost149 touch -c -r configure.ac.boost149 configure.ac +%patch2 -p1 -b .php54 +%patch3 -p1 -b .fd_setsize %build %if 0%{?rhel}%{?fedora} < 6 @@ -377,7 +382,7 @@ export LDFLAGS="$LDFLAGS -L%{_libdir}/boost141" %endif %if 0%{?fedora} > 15 -export LDFLAGS="$LDFLAGS -L%{_libdir}/clucene09" +export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}/clucene09" %endif %configure \ @@ -421,7 +426,7 @@ make \ install-ajax-webaccess # Nuke all overlefts from licensed, managed or other proprietary items -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{license,licensed.cfg,report-ca} +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/{%{name}/{license,licensed.cfg,report-ca},cron.daily/%{name}-client-update} rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,ldapms.cfg,licensed{,.cfg}},za-aclsync}.* # Move all the initscripts to their appropriate place and @@ -675,6 +680,7 @@ fi %files client -f %{name}.lang %defattr(-,root,root,-) %{_libdir}/libzarafaclient.so +%{_libdir}/libzarafasync.so.* %files common %defattr(-,root,root,-) @@ -709,7 +715,7 @@ fi %{_libdir}/libcommon_ssl.a %{_libdir}/libcommon_util.a %{_libdir}/libfreebusy.a -%{_libdir}/libzarafasync.a +%{_libdir}/libzarafasync.so %{_includedir}/icalmapi/ %{_includedir}/inetmapi/ %{_includedir}/mapi4linux/ @@ -874,6 +880,11 @@ fi %endif %changelog +* Fri Jan 13 2012 Robert Scheck 7.0.4-1 +- 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) + * Sat Dec 17 2011 Robert Scheck 7.0.3-2 - Enabled non-optional build of epoll socket handling (#760888) From 04b111c1564715ed86436d7d598565695f374348 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Fri, 13 Jan 2012 01:29:40 +0100 Subject: [PATCH 23/69] Uploaded source for 7.0.4 --- .gitignore | 2 +- sources | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 48c5bed..1f1e1f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -zcp-7.0.3.tar.gz +zcp-7.0.4.tar.gz diff --git a/sources b/sources index 1491604..a168457 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -ca99502e89089286357e724937917eaa zcp-7.0.3.tar.gz +4c9774c7f07e8eaeb8fd62cc1dd7c0fd zcp-7.0.4.tar.gz From d46d959e0d3c5a27c8cc36ef057babd98f498e72 Mon Sep 17 00:00:00 2001 From: remi Date: Fri, 20 Jan 2012 18:24:30 +0100 Subject: [PATCH 24/69] PHP 5.4.0 Build --- zarafa.spec | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index e9cd0e3..07c86ed 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -9,13 +9,13 @@ %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") # Private libraries are not be exposed globally by RPM -%if 0%{?rhel}%{?fedora} > 4 -%{?filter_setup: -%filter_provides_in %{_libdir}/%{name}/.*\.so$ -%filter_provides_in %{_libdir}/php/modules/.*\.so$ -%filter_setup -} -%endif +# RPM 4.8 +%{?filter_provides_in: %filter_provides_in %{_libdir}/%{name}/modules/.*\.so$} +%{?filter_provides_in: %filter_provides_in %{_libdir}/php/modules/.*\.so$} +%{?filter_setup} +# RPM 4.9 +%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{_libdir}/%{name}/modules/.*\\.so$ +%global __provides_exclude_from %{__provides_exclude_from}|%{_libdir}/php/modules/.*\\.so$ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa @@ -880,6 +880,10 @@ fi %endif %changelog +* Thu Jan 19 2012 Remi Collet - 7.0.4-2 +- build against php 5.4.0 +- fix so filters + * Fri Jan 13 2012 Robert Scheck 7.0.4-1 - Upgrade to 7.0.4 - Added patch for rebuilding with PHP 5.4 (thanks to Remi Collet) From af3ac7fe3f5696ce9c88714026a12d1e5ffe77b5 Mon Sep 17 00:00:00 2001 From: remi Date: Fri, 20 Jan 2012 18:26:07 +0100 Subject: [PATCH 25/69] bump release --- zarafa.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 07c86ed..499f2fb 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 31235 %global with_clucene 1 %global with_ldap 1 From 8a43b1b936700996887cea07942fb6d3095d26f1 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Tue, 28 Feb 2012 14:41:48 -0600 Subject: [PATCH 26/69] - Rebuilt for c++ ABI breakage --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 499f2fb..a4d36ab 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -21,7 +21,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.0.4 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 %else Release: %{actual_release}%{?dist} %endif @@ -880,6 +880,9 @@ fi %endif %changelog +* Tue Feb 28 2012 Fedora Release Engineering - 7.0.4-2 +- Rebuilt for c++ ABI breakage + * Thu Jan 19 2012 Remi Collet - 7.0.4-2 - build against php 5.4.0 - fix so filters From 2d71de1ca5f66062ee292afbe940ba5f60306e00 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 22 Apr 2012 05:47:32 +0200 Subject: [PATCH 27/69] Upgrade to 7.0.6 --- .gitignore | 2 +- sources | 2 +- zarafa-7.0.3-boost149.patch | 28 -------- zarafa-7.0.4-php54.patch | 130 ------------------------------------ zarafa.spec | 65 +++++++++--------- 5 files changed, 35 insertions(+), 192 deletions(-) delete mode 100644 zarafa-7.0.3-boost149.patch delete mode 100644 zarafa-7.0.4-php54.patch diff --git a/.gitignore b/.gitignore index 1f1e1f9..56f9780 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -zcp-7.0.4.tar.gz +/zcp-?.?.?.tar.gz diff --git a/sources b/sources index a168457..6c03f3e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -4c9774c7f07e8eaeb8fd62cc1dd7c0fd zcp-7.0.4.tar.gz +9cd644262663cf2cce7bfc963cfbaef2 zcp-7.0.6.tar.gz diff --git a/zarafa-7.0.3-boost149.patch b/zarafa-7.0.3-boost149.patch deleted file mode 100644 index 6f50c8d..0000000 --- a/zarafa-7.0.3-boost149.patch +++ /dev/null @@ -1,28 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.0.3, which allows -to compile Zarafa 7.0.3 using Boost 1.49. This is neccessary, because Zarafa uses -Boost filesystem version 2 while it got deprecated with Boost 1.48. However, Boost -1.49 is still shipping filesystem version 2. For the time being, this allows us to -compile Zarafa still with newer Boost versions. - ---- zarafa-7.0.3/configure 2011-12-17 14:47:32.000000000 +0100 -+++ zarafa-7.0.3/configure.boost149 2011-12-17 14:48:34.000000000 +0100 -@@ -30975,7 +30975,7 @@ - { echo "$as_me:$LINENO: checking boost version compatibility" >&5 - echo $ECHO_N "checking boost version compatibility... $ECHO_C" >&6; } - if test -n "$boost_major_version" -a $boost_major_version -ge 146; then -- if test $boost_major_version -ge 148; then -+ if test $boost_major_version -ge 149; then - { { echo "$as_me:$LINENO: error: boost version is too new" >&5 - echo "$as_me: error: boost version is too new" >&2;} - { (exit 1); exit 1; }; } ---- zarafa-7.0.3/configure.ac 2011-11-16 23:00:21.000000000 +0100 -+++ zarafa-7.0.3/configure.ac.boost149 2011-12-17 14:48:20.000000000 +0100 -@@ -657,7 +657,7 @@ - BOOST_DATE_TIME([mt]) - AC_MSG_CHECKING([boost version compatibility]) - if test -n "$boost_major_version" -a $boost_major_version -ge 146; then -- if test $boost_major_version -ge 148; then -+ if test $boost_major_version -ge 149; then - AC_MSG_ERROR([boost version is too new]) - fi - AC_MSG_RESULT([adding backward compatible flags]) diff --git a/zarafa-7.0.4-php54.patch b/zarafa-7.0.4-php54.patch deleted file mode 100644 index 9684ac3..0000000 --- a/zarafa-7.0.4-php54.patch +++ /dev/null @@ -1,130 +0,0 @@ -Patch by Robert Scheck for Zarafa >= 7.0.4, which fixes building of the PHP -extension of Zarafa with PHP >= 5.4.0. It is heavily based on the work of Remi Collet. Fedora 17+ will -ship PHP >= 5.4.0, so the changes are here mandatory. According to /usr/include/php/main/php3_compat.h -the "typedef zval pval;" definition exists for ages and I wasn't able to figure out any build issue in -Red Hat Enterprise Linux 5 (as oldest supported version of Zarafa 7.0.x) during my tests. References: - - - https://github.com/remicollet/remirepo/blob/1e741d6002a34add940c15711cf061c35d4c9e91/zarafa/zarafa-7.0.3-php54.patch - - http://forums.zarafa.com/viewtopic.php?f=22&t=7826 - ---- zarafa-7.0.4/php-ext/ECImportContentsChangesProxy.cpp 2011-12-22 01:02:33.000000000 +0100 -+++ zarafa-7.0.4/php-ext/ECImportContentsChangesProxy.cpp.php54 2012-01-08 23:58:33.000000000 +0100 -@@ -150,9 +150,9 @@ - HRESULT ECImportContentsChangesProxy::Config(LPSTREAM lpStream, ULONG ulFlags) { - HRESULT hr = hrSuccess; - -- pval *pvalFuncName; -- pval *pvalReturn; -- pval *pvalArgs[2]; -+ zval *pvalFuncName; -+ zval *pvalReturn; -+ zval *pvalArgs[2]; - - MAKE_STD_ZVAL(pvalFuncName); - MAKE_STD_ZVAL(pvalReturn); -@@ -192,9 +192,9 @@ - HRESULT ECImportContentsChangesProxy::UpdateState(LPSTREAM lpStream) { - HRESULT hr = hrSuccess; - -- pval *pvalFuncName; -- pval *pvalReturn; -- pval *pvalArgs[1]; -+ zval *pvalFuncName; -+ zval *pvalReturn; -+ zval *pvalArgs[1]; - - MAKE_STD_ZVAL(pvalFuncName); - MAKE_STD_ZVAL(pvalReturn); -@@ -228,9 +228,9 @@ - } - - HRESULT ECImportContentsChangesProxy::ImportMessageChange(ULONG cValues, LPSPropValue lpPropArray, ULONG ulFlags, LPMESSAGE * lppMessage) { -- pval *pvalFuncName; -- pval *pvalReturn; -- pval *pvalArgs[3]; -+ zval *pvalFuncName; -+ zval *pvalReturn; -+ zval *pvalArgs[3]; - IMessage *lpMessage = NULL; - HRESULT hr = hrSuccess; - -@@ -287,9 +287,9 @@ - HRESULT ECImportContentsChangesProxy::ImportMessageDeletion(ULONG ulFlags, LPENTRYLIST lpSourceEntryList) { - HRESULT hr = hrSuccess; - -- pval *pvalFuncName; -- pval *pvalReturn; -- pval *pvalArgs[2]; -+ zval *pvalFuncName; -+ zval *pvalReturn; -+ zval *pvalArgs[2]; - - MAKE_STD_ZVAL(pvalFuncName); - MAKE_STD_ZVAL(pvalReturn); -@@ -323,9 +323,9 @@ - HRESULT ECImportContentsChangesProxy::ImportPerUserReadStateChange(ULONG cElements, LPREADSTATE lpReadState) { - HRESULT hr = hrSuccess; - -- pval *pvalFuncName; -- pval *pvalReturn; -- pval *pvalArgs[1]; -+ zval *pvalFuncName; -+ zval *pvalReturn; -+ zval *pvalArgs[1]; - - MAKE_STD_ZVAL(pvalFuncName); - MAKE_STD_ZVAL(pvalReturn); ---- zarafa-7.0.4/php-ext/ECImportHierarchyChangesProxy.cpp 2011-12-22 01:02:33.000000000 +0100 -+++ zarafa-7.0.4/php-ext/ECImportHierarchyChangesProxy.cpp.php54 2012-01-08 23:58:33.000000000 +0100 -@@ -147,9 +147,9 @@ - HRESULT ECImportHierarchyChangesProxy::Config(LPSTREAM lpStream, ULONG ulFlags) { - HRESULT hr = hrSuccess; - -- pval *pvalFuncName; -- pval *pvalReturn; -- pval *pvalArgs[2]; -+ zval *pvalFuncName; -+ zval *pvalReturn; -+ zval *pvalArgs[2]; - - MAKE_STD_ZVAL(pvalFuncName); - MAKE_STD_ZVAL(pvalReturn); -@@ -189,9 +189,9 @@ - HRESULT ECImportHierarchyChangesProxy::UpdateState(LPSTREAM lpStream) { - HRESULT hr = hrSuccess; - -- pval *pvalFuncName; -- pval *pvalReturn; -- pval *pvalArgs[1]; -+ zval *pvalFuncName; -+ zval *pvalReturn; -+ zval *pvalArgs[1]; - - MAKE_STD_ZVAL(pvalFuncName); - MAKE_STD_ZVAL(pvalReturn); -@@ -225,9 +225,9 @@ - } - - HRESULT ECImportHierarchyChangesProxy::ImportFolderChange(ULONG cValues, LPSPropValue lpPropArray) { -- pval *pvalFuncName; -- pval *pvalReturn; -- pval *pvalArgs[1]; -+ zval *pvalFuncName; -+ zval *pvalReturn; -+ zval *pvalArgs[1]; - HRESULT hr = hrSuccess; - - MAKE_STD_ZVAL(pvalFuncName); -@@ -265,9 +265,9 @@ - HRESULT ECImportHierarchyChangesProxy::ImportFolderDeletion(ULONG ulFlags, LPENTRYLIST lpSourceEntryList) { - HRESULT hr = hrSuccess; - -- pval *pvalFuncName; -- pval *pvalReturn; -- pval *pvalArgs[2]; -+ zval *pvalFuncName; -+ zval *pvalReturn; -+ zval *pvalArgs[2]; - - MAKE_STD_ZVAL(pvalFuncName); - MAKE_STD_ZVAL(pvalReturn); diff --git a/zarafa.spec b/zarafa.spec index a4d36ab..a9518e8 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 31235 +%global actual_release 1 +%global svnrevision 32752 %global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 @@ -19,9 +19,9 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.4 +Version: 7.0.6 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else Release: %{actual_release}%{?dist} %endif @@ -43,9 +43,7 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.5-rpath.patch -Patch1: zarafa-7.0.3-boost149.patch -Patch2: zarafa-7.0.4-php54.patch -Patch3: zarafa-7.0.4-fd_setsize.patch +Patch1: zarafa-7.0.4-fd_setsize.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -71,9 +69,7 @@ BuildRequires: swig %if 0 BuildRequires: %{_bindir}/xsubpp %endif -%if 0%{?rhel}%{?fedora} > 4 BuildRequires: python-devel >= 2.4 -%endif %if %{with_clucene} %if 0%{?fedora} > 15 @@ -112,8 +108,8 @@ Source Collaboration can combine the usability with the stability and the 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 +client library as well as programming interfaces for C++, PHP and Python. +The other Zarafa related packages need to be installed to gain all features and benefits of the Zarafa Collaboration Platform (ZCP). %package archiver @@ -150,6 +146,17 @@ The zarafa-common package provides the filesystem structure and includes common files required by most other Zarafa packages. It also provides the creation of the zarafa user for the different Zarafa services. +%package contacts +Summary: MAPI provider adding contact folders to the address book +Group: System Environment/Libraries +Requires: zarafa-common = %{version}-%{release} + +%description contacts +The zarafa-contacts package contains an additional MAPI provider to find +all contact folders of a user and add the contents transparently into the +MAPI address book. The MAPI provider allows Zarafa WebApp users to select +which contact folders will be listed in the WebApp address book. + %package dagent Summary: Mail Delivery Agent for Zarafa Collaboration Platform Group: System Environment/Daemons @@ -336,15 +343,11 @@ Summary: The PHP MAPI extension by Zarafa Group: Development/Languages # Bug: Without mod_ssl, reloading httpd causes core dump Requires: mod_ssl -%if 0%{?rhel}%{?fedora} > 4 %if 0%{?php_zend_api:1} Requires: php(zend-abi) = %{php_zend_api}, php(api) = %{php_core_api} %else Requires: php-api = %{php_apiver} %endif -%else -Requires: php >= 4.3 -%endif %description -n php-mapi The php-mapi package contains the PHP MAPI extension to provide access to @@ -354,7 +357,6 @@ in this extension. Using this PHP MAPI extension, developers can create e.g. webbased e-mail and calendaring systems and interfaces with existing PHP projects, using the MAPI functions like a normal MAPI program. -%if 0%{?rhel}%{?fedora} > 4 %package -n python-MAPI Summary: The Python MAPI extension by Zarafa Group: Development/Languages @@ -364,16 +366,12 @@ The python-MAPI package contains the Python MAPI extension to provide the access to Microsoft MAPI functions while using Python. Using this Python MAPI extension, developers can create Python programs which use MAPI calls to interact with Zarafa. -%endif %prep %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 -%patch1 -p1 -b .boost149 -touch -c -r configure.ac.boost149 configure.ac -%patch2 -p1 -b .php54 -%patch3 -p1 -b .fd_setsize +%patch1 -p1 -b .fd_setsize %build %if 0%{?rhel}%{?fedora} < 6 @@ -404,11 +402,7 @@ export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}/clucene09" --enable-epoll \ --enable-swig \ --disable-perl \ -%if 0%{?rhel}%{?fedora} > 4 --enable-python \ -%else - --disable-python \ -%endif --disable-static \ --disable-testtools make %{?_smp_mflags} @@ -427,7 +421,7 @@ make \ # Nuke all overlefts from licensed, managed or other proprietary items rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/{%{name}/{license,licensed.cfg,report-ca},cron.daily/%{name}-client-update} -rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,ldapms.cfg,licensed{,.cfg}},za-aclsync}.* +rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,msr-verify,ldapms.cfg,licensed{,.cfg}},za-aclsync}.* # Move all the initscripts to their appropriate place and # ensure that all services are off by default at boot time @@ -679,6 +673,7 @@ fi %files client -f %{name}.lang %defattr(-,root,root,-) +%config(noreplace) %{_sysconfdir}/mapi/%{name}.inf %{_libdir}/libzarafaclient.so %{_libdir}/libzarafasync.so.* @@ -693,6 +688,11 @@ fi %dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/ %dir %attr(0755,%{name},%{name}) %{_localstatedir}/log/%{name}/ +%files contacts +%defattr(-,root,root,-) +%config(noreplace) %{_sysconfdir}/mapi/zcontacts.inf +%{_libdir}/libzarafacontacts.so + %files dagent %defattr(-,root,root,-) %doc installer/linux/createuser.dotforward @@ -851,6 +851,7 @@ fi %files -n libmapi %defattr(-,root,root,-) +%dir %{_sysconfdir}/%{name}/ %{_libdir}/libarchiver.so.* %{_libdir}/libicalmapi.so.* %{_libdir}/libinetmapi.so.* @@ -867,19 +868,19 @@ fi %defattr(-,root,root,-) %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 -%if 0%{?rhel}%{?fedora} > 4 %files -n python-MAPI %defattr(-,root,root,-) %{python_sitearch}/* -%endif %changelog +* Sun Apr 22 2012 Robert Scheck 7.0.6-1 +- Upgrade to 7.0.6 + +* Sat Mar 10 2012 Robert Scheck 7.0.5-1 +- Upgrade to 7.0.5 + * Tue Feb 28 2012 Fedora Release Engineering - 7.0.4-2 - Rebuilt for c++ ABI breakage From c5df23f34c18efba6bad059223919f8ff86bb3ea Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Mon, 23 Apr 2012 00:45:03 +0200 Subject: [PATCH 28/69] It's /etc/mapi/ not /etc/zarafa/ --- zarafa.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index a9518e8..11cf048 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -851,7 +851,7 @@ fi %files -n libmapi %defattr(-,root,root,-) -%dir %{_sysconfdir}/%{name}/ +%dir %{_sysconfdir}/mapi/ %{_libdir}/libarchiver.so.* %{_libdir}/libicalmapi.so.* %{_libdir}/libinetmapi.so.* From 43789b1eaa369d54228251b838df9dfaa8be394a Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Wed, 9 May 2012 00:33:01 +0200 Subject: [PATCH 29/69] Upgrade to 7.0.7 --- .gitignore | 2 +- sources | 2 +- zarafa-7.0.4-fd_setsize.patch | 36 ----------------------------------- zarafa.spec | 12 +++++++----- 4 files changed, 9 insertions(+), 43 deletions(-) delete mode 100644 zarafa-7.0.4-fd_setsize.patch diff --git a/.gitignore b/.gitignore index 56f9780..205edf5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/zcp-?.?.?.tar.gz +zcp-7.?.?.tar.gz diff --git a/sources b/sources index 6c03f3e..1da7020 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -9cd644262663cf2cce7bfc963cfbaef2 zcp-7.0.6.tar.gz +87d6c9ce1cd71b4a09fe72685e29d206 zcp-7.0.7.tar.gz diff --git a/zarafa-7.0.4-fd_setsize.patch b/zarafa-7.0.4-fd_setsize.patch deleted file mode 100644 index 14764cb..0000000 --- a/zarafa-7.0.4-fd_setsize.patch +++ /dev/null @@ -1,36 +0,0 @@ -Patch by Robert Scheck for Zarafa >= 7.0.4, which works around -the issue that Zarafa is using up to 8192 open file descriptors, while the system glibc is -allowing at maximum 1024. Of course glibc supports more open file descriptors, however the -usage seems to be non-POSIX conform and non-portable. Finally a check was implemented into -glibc by upstream developers to catch such strange usage cases. That check causes Zarafa -to fail with a segmentation fault when built with -D_FORTIFY_SOURCE=2 and glibc-2.14.90-8 -or newer (actually Fedora 16 with updates and newer). - -This patch is a workaround until gSOAP parts are updated/changed/rewritten to use poll(2) -instead of select(2). Lowering FD_SETSIZE was suggested by Milo Oostergo from Zarafa B.V. - ---- zarafa-7.0.4/provider/soap/soapdefs.h 2011-12-22 01:02:31.000000000 +0100 -+++ zarafa-7.0.4/provider/soap/soapdefs.h.fd_setsize 2012-01-12 22:36:40.000000000 +0100 -@@ -8,6 +8,6 @@ - - #include - #undef __FD_SETSIZE --#define __FD_SETSIZE 8192 -+#define __FD_SETSIZE 1024 - - #endif // ndef SOAPDEFS_H_ ---- zarafa-7.0.4/common/platform.h 2011-12-22 01:02:34.000000000 +0100 -+++ zarafa-7.0.4/common/platform.h.fd_setsize 2012-01-12 22:37:03.000000000 +0100 -@@ -52,10 +52,10 @@ - - - // We have to include this now in case select.h is included too soon. -- // Increase our maximum amount of file descriptors to 8192 -+ // Increase our maximum amount of file descriptors to 1024 - #include - #undef __FD_SETSIZE -- #define __FD_SETSIZE 8192 -+ #define __FD_SETSIZE 1024 - - // Log the pthreads locks - #define DEBUG_PTHREADS 0 diff --git a/zarafa.spec b/zarafa.spec index 11cf048..1cec247 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 %global actual_release 1 -%global svnrevision 32752 +%global svnrevision 34256 %global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 @@ -19,7 +19,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.6 +Version: 7.0.7 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -43,7 +43,6 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.5-rpath.patch -Patch1: zarafa-7.0.4-fd_setsize.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -371,7 +370,6 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 -%patch1 -p1 -b .fd_setsize %build %if 0%{?rhel}%{?fedora} < 6 @@ -467,7 +465,7 @@ install -p -m 644 installer/linux/db-{calc-storesize,convert-attachments-to-file install -p -m 644 installer/linux/{ssl-certificates.sh,audit-parse.pl,zarafa7-upgrade} $RPM_BUILD_ROOT%{_datadir}/%{name}/ %if %{with_ldap} install -p -m 644 installer/linux/{db-upgrade-objectsid-to-objectguid,ldap-switch-sendas}.pl $RPM_BUILD_ROOT%{_datadir}/%{name}/ -install -p -m 644 installer/ldap/%{name}.schema $RPM_BUILD_ROOT%{_datadir}/%{name}/ +install -p -m 644 installer/{ldap/%{name}.schema,%{name}.ldif} $RPM_BUILD_ROOT%{_datadir}/%{name}/ %else rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ldap.{active-directory,openldap,propmap}.cfg rm -f $RPM_BUILD_ROOT%{_mandir}/man5/%{name}-ldap.cfg.5* @@ -806,6 +804,7 @@ fi %{_mandir}/man5/%{name}-unix.cfg.5* %if %{with_ldap} %{_datadir}/%{name}/%{name}.schema +%{_datadir}/%{name}/%{name}.ldif %{_datadir}/%{name}/db-upgrade-objectsid-to-objectguid.pl %{_datadir}/%{name}/ldap-switch-sendas.pl %config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ldap.active-directory.cfg @@ -875,6 +874,9 @@ fi %{python_sitearch}/* %changelog +* Wed May 09 2012 Robert Scheck 7.0.7-1 +- Upgrade to 7.0.7 + * Sun Apr 22 2012 Robert Scheck 7.0.6-1 - Upgrade to 7.0.6 From 5c5bb01851006612581527322e3b327f09255807 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Tue, 19 Jun 2012 23:03:27 +0200 Subject: [PATCH 30/69] Upgrade to 7.0.8 --- sources | 2 +- zarafa.spec | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sources b/sources index 1da7020..a077964 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -87d6c9ce1cd71b4a09fe72685e29d206 zcp-7.0.7.tar.gz +fb5dcb22f07cb4d687422ea4d13d7246 zcp-7.0.8.tar.gz diff --git a/zarafa.spec b/zarafa.spec index 1cec247..3d5cdbc 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 %global actual_release 1 -%global svnrevision 34256 +%global svnrevision 35178 %global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 @@ -19,7 +19,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.7 +Version: 7.0.8 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -515,7 +515,7 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.htaccess,%{name}-webaccess. # Remove flash-based multi-attachment upload (missing source) %if %{no_multiupload} -sed '125,132d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ +sed '131,138d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php.new touch -c -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{,.new} mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} @@ -874,6 +874,9 @@ fi %{python_sitearch}/* %changelog +* Tue Jun 19 2012 Robert Scheck 7.0.8-1 +- Upgrade to 7.0.8 + * Wed May 09 2012 Robert Scheck 7.0.7-1 - Upgrade to 7.0.7 From 77009649489505e9c3cf54b154cf7e3f094947d0 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Tue, 19 Jun 2012 23:42:39 +0200 Subject: [PATCH 31/69] Added patch to solve invalid conversion conflicting with zlib >= 1.2.8 --- zarafa-7.0.8-zlib127.patch | 27 +++++++++++++++++++++++++++ zarafa.spec | 2 ++ 2 files changed, 29 insertions(+) create mode 100644 zarafa-7.0.8-zlib127.patch diff --git a/zarafa-7.0.8-zlib127.patch b/zarafa-7.0.8-zlib127.patch new file mode 100644 index 0000000..49f1e16 --- /dev/null +++ b/zarafa-7.0.8-zlib127.patch @@ -0,0 +1,27 @@ +Patch by Robert Scheck for zarafa >= 7.0.8, which solves +the invalid conversion that causes since zlib >= 1.2.8 a build failure like this: + +ECLogger.cpp:169:14: error: invalid conversion from 'gzFile_s* (*)(const char*, + const char*)' to 'ECLogger_File::open_func {aka void* (*)(const char*, const + char*)}' [-fpermissive] +ECLogger.cpp:170:15: error: invalid conversion from 'int (*)(gzFile) {aka int (*) + (gzFile_s*)}' to 'ECLogger_File::close_func {aka int (*)(void*)}' [-fpermissive] +ECLogger.cpp:171:16: error: invalid conversion from 'int (*)(gzFile, const char*, + ...) {aka int (*)(gzFile_s*, const char*, ...)}' to 'ECLogger_File::printf_func + {aka int (*)(void*, const char*, ...)}' [-fpermissive] + +--- zarafa-7.0.8/common/ECLogger.cpp 2012-06-18 18:55:28.000000000 +0200 ++++ zarafa-7.0.8/common/ECLogger.cpp.zlib127 2012-06-19 23:23:06.000000000 +0200 +@@ -166,9 +166,9 @@ + szMode = NULL; + } else { + if (compress) { +- fnOpen = &gzopen; +- fnClose = &gzclose; +- fnPrintf = &gzprintf; ++ fnOpen = (open_func)&gzopen; ++ fnClose = (close_func)&gzclose; ++ fnPrintf = (printf_func)&gzprintf; + fnFileno = NULL; + fnFlush = NULL; // gzflush does exist, but degrades performance + szMode = "wb"; diff --git a/zarafa.spec b/zarafa.spec index 3d5cdbc..1eb63c9 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -43,6 +43,7 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.5-rpath.patch +Patch1: zarafa-7.0.8-zlib127.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -370,6 +371,7 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 +%patch1 -p1 -b .zlib127 %build %if 0%{?rhel}%{?fedora} < 6 From e14f982e66a7e57d8435127fcc89e41bbf15f724 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Tue, 26 Jun 2012 01:35:25 +0200 Subject: [PATCH 32/69] Added patch to build Zarafa on armv5tel and armv7hl --- zarafa-7.0.8-va_list.patch | 44 ++++++++++++++++++++++++++++++++++++++ zarafa.spec | 2 ++ 2 files changed, 46 insertions(+) create mode 100644 zarafa-7.0.8-va_list.patch diff --git a/zarafa-7.0.8-va_list.patch b/zarafa-7.0.8-va_list.patch new file mode 100644 index 0000000..1e7430f --- /dev/null +++ b/zarafa-7.0.8-va_list.patch @@ -0,0 +1,44 @@ +Patch by Robert Scheck for zarafa >= 7.0.8, which works +around the insane written C/C++ code. I am not a C/C++ developer, but you only can +use four macros for handling va_list at all: va_start, va_arg, va_copy and va_end. + +As a developer you should not assume that va_list is always internally typed as an +integer because it is case on i?86 and x86_64 for example. Architectures like ARM +handle va_list not as an integer and thus fail during compiling like this: + +Trace.cpp:129:16: error: invalid operands of types 'va_list {aka __va_list}' and + 'int' to binary 'operator!=' +Trace.cpp:142:16: error: invalid operands of types 'va_list {aka __va_list}' and + 'int' to binary 'operator!=' + +As it is unfortunately not safe to assume that format does not contain attributes +while va is empty this workaround is only applied on the affected ARM architecture +for now. The only real solution is a clean rewrite of the code that should happen +upstream. + +--- zarafa-7.0.8/common/Trace.cpp 2012-06-18 18:55:29.000000000 +0200 ++++ zarafa-7.0.8/common/Trace.cpp.va_list 2012-06-20 01:20:06.000000000 +0200 +@@ -126,7 +126,11 @@ + + len = pos + 3; + ++#if defined __ARM_EABI__ ++ if (format) { ++#else + if (format && va) { ++#endif + va_copy(va_lentest, va); + len += _vsnprintf(NULL, 0, format, va_lentest); + va_end(va_lentest); +@@ -139,7 +143,11 @@ + + memcpy(buffer, debug, pos); + ++#if defined __ARM_EABI__ ++ if (format) ++#else + if (format && va) ++#endif + pos = _vsnprintf(buffer+pos, len-pos, format, va); + + if(pos == -1) { diff --git a/zarafa.spec b/zarafa.spec index 1eb63c9..d740365 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -44,6 +44,7 @@ Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.5-rpath.patch Patch1: zarafa-7.0.8-zlib127.patch +Patch2: zarafa-7.0.8-va_list.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -372,6 +373,7 @@ to interact with Zarafa. %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 %patch1 -p1 -b .zlib127 +%patch2 -p1 -b .va_list %build %if 0%{?rhel}%{?fedora} < 6 From bcde06c2f49f867ba063fecd4924c7ef1b1279e6 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 22 Jul 2012 03:02:26 -0500 Subject: [PATCH 33/69] - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index d740365..c952c4b 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -21,7 +21,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.0.8 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 %else Release: %{actual_release}%{?dist} %endif @@ -878,6 +878,9 @@ fi %{python_sitearch}/* %changelog +* Sun Jul 22 2012 Fedora Release Engineering - 7.0.8-1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + * Tue Jun 19 2012 Robert Scheck 7.0.8-1 - Upgrade to 7.0.8 From 663f100df7e17b81c2e04385a99787987e1bf7af Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Sun, 12 Aug 2012 13:16:50 -0500 Subject: [PATCH 34/69] rebuild (boost) --- zarafa.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index c952c4b..c7820e9 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 35178 %global with_clucene 1 %global with_ldap 1 @@ -21,7 +21,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.0.8 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else Release: %{actual_release}%{?dist} %endif @@ -878,6 +878,9 @@ fi %{python_sitearch}/* %changelog +* Sun Aug 12 2012 Rex Dieter 7.0.8-2 +- rebuild (boost) + * Sun Jul 22 2012 Fedora Release Engineering - 7.0.8-1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild From e68a2f3cf548c0557dc4a637c8968891492ac518 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Mon, 13 Aug 2012 03:16:46 +0200 Subject: [PATCH 35/69] Upgrade to 7.0.9 (#847534) --- sources | 2 +- zarafa-7.0.9-boost150.patch | 254 ++++++++++++++++++ ....5-rpath.patch => zarafa-7.0.9-rpath.patch | 52 +--- zarafa.spec | 17 +- 4 files changed, 277 insertions(+), 48 deletions(-) create mode 100644 zarafa-7.0.9-boost150.patch rename zarafa-6.40.5-rpath.patch => zarafa-7.0.9-rpath.patch (66%) diff --git a/sources b/sources index a077964..5ad1bcb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -fb5dcb22f07cb4d687422ea4d13d7246 zcp-7.0.8.tar.gz +2729d8052e3d63215290005ba708c7ae zcp-7.0.9.tar.gz diff --git a/zarafa-7.0.9-boost150.patch b/zarafa-7.0.9-boost150.patch new file mode 100644 index 0000000..0409998 --- /dev/null +++ b/zarafa-7.0.9-boost150.patch @@ -0,0 +1,254 @@ +Patch by Robert Scheck for zarafa >= 7.0.9 which adds support for boost +1.50 only providing filesystem version 3 while previous versions still supported version 2. Finally +this patch really adds version 3 support while it does not remove support for version 2. Version 2 +is still required to build for example against Red Hat Enterprise Linux 6 shipping boost 1.41, thus +filesystem version 2 only. Boost added filesystem version 3 with boost version 1.44 and made it the +default with version 1.46. + +--- zarafa-7.0.9/configure 2012-08-03 13:58:18.000000000 +0200 ++++ zarafa-7.0.9/configure.boost150 2012-08-12 23:57:39.000000000 +0200 +@@ -20363,48 +20363,6 @@ + fi + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking boost version compatibility" >&5 +-$as_echo_n "checking boost version compatibility... " >&6; } +-if test -n "$boost_major_version" -a $boost_major_version -ge 146; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: adding backward compatible flags" >&5 +-$as_echo "adding backward compatible flags" >&6; } +- BOOST_CPPFLAGS="$BOOSTCPPFLAGS -DBOOST_FILESYSTEM_VERSION=2" +- +- CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS" +- LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" +- +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for boost filesystem version 2 presence" >&5 +-$as_echo_n "checking for boost filesystem version 2 presence... " >&6; } +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +- +- +-#include +-namespace bfs = boost::filesystem; +-int main() { +- bfs::path path; +- bfs::directory_iterator pi(path); +- pi->path().file_string(); +-} +- +-_ACEOF +-if ac_fn_cxx_try_link "$LINENO"; then : +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +-$as_echo "ok" >&6; } +-else +- as_fn_error $? "no, boost is too new" "$LINENO" 5 +- +-fi +-rm -f core conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- +- LIBS=$libs_keep +- CFLAGS=$cflags_keep +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +-$as_echo "ok" >&6; } +-fi +- + # Check whether --enable-icu was given. + if test "${enable_icu+set}" = set; then : + enableval=$enable_icu; want_icu=${enableval} +--- zarafa-7.0.9/configure.ac 2012-08-03 13:57:12.000000000 +0200 ++++ zarafa-7.0.9/configure.ac.boost150 2012-08-12 23:57:39.000000000 +0200 +@@ -693,32 +693,6 @@ + # BOOST_THREADS([mt]) + BOOST_FILESYSTEM([mt]) + BOOST_DATE_TIME([mt]) +-AC_MSG_CHECKING([boost version compatibility]) +-if test -n "$boost_major_version" -a $boost_major_version -ge 146; then +- AC_MSG_RESULT([adding backward compatible flags]) +- BOOST_CPPFLAGS="$BOOSTCPPFLAGS -DBOOST_FILESYSTEM_VERSION=2" +- +- CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS" +- LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" +- +- AC_MSG_CHECKING([for boost filesystem version 2 presence]) +- AC_LINK_IFELSE([ +- AC_LANG_SOURCE([ +-#include +-namespace bfs = boost::filesystem; +-int main() { +- bfs::path path; +- bfs::directory_iterator pi(path); +- pi->path().file_string(); +-} +- ]) ], [ AC_MSG_RESULT([ok]) ], [ AC_MSG_ERROR([no, boost is too new]) +- ]) +- +- LIBS=$libs_keep +- CFLAGS=$cflags_keep +-else +- AC_MSG_RESULT([ok]) +-fi + + AC_ARG_ENABLE(icu, AC_HELP_STRING([--enable-icu],[enable icu support]), [want_icu=${enableval}],[want_icu=auto]) + if test "$want_icu" = "no"; then +--- zarafa-7.0.9/common/ECConfigImpl.cpp 2012-08-03 14:58:31.000000000 +0200 ++++ zarafa-7.0.9/common/ECConfigImpl.cpp.boost150 2012-08-13 01:05:29.000000000 +0200 +@@ -322,11 +322,19 @@ + m_currentFile = file; + + if (!exists(file)) { ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 ++ errors.push_back("Config file '" + file.string() + "' does not exist."); ++#else + errors.push_back("Config file '" + file.file_string() + "' does not exist."); ++#endif + goto exit; + } + if (is_directory(file)) { ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 ++ errors.push_back("Config file '" + file.string() + "' is a directory."); ++#else + errors.push_back("Config file '" + file.file_string() + "' is a directory."); ++#endif + goto exit; + } + +@@ -338,8 +346,13 @@ + + m_readFiles.insert(file); + ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 ++ if(!(fp = fopen(file.string().c_str(), "rt"))) { ++ errors.push_back("Unable to open config file '" + file.string() + "'"); ++#else + if(!(fp = fopen(file.file_string().c_str(), "rt"))) { + errors.push_back("Unable to open config file '" + file.file_string() + "'"); ++#endif + goto exit; + } + +@@ -424,9 +437,6 @@ + } + + +-#if (((BOOST_VERSION / 100) % 1000) < 36) +- #define remove_filename remove_leaf +-#endif + bool ECConfigImpl::HandleInclude(const char *lpszArgs, unsigned int ulFlags) + { + string strValue; +@@ -435,7 +445,11 @@ + file = (strValue = trim(lpszArgs, " \t\r\n")); + if (!file.is_complete()) { + // Rebuild the path ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 + file = m_currentFile.remove_filename(); ++#else ++ file = m_currentFile.remove_leaf(); ++#endif + file /= strValue; + } + +@@ -639,8 +653,13 @@ + fs::path pathBakFile; + + pathOutFile = pathBakFile = szFileName; ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 + pathOutFile.remove_filename() /= "config_out.cfg"; + pathBakFile.remove_filename() /= "config_bak.cfg"; ++#else ++ pathOutFile.remove_leaf() /= "config_out.cfg"; ++ pathBakFile.remove_leaf() /= "config_bak.cfg"; ++#endif + + ifstream in(szFileName); + +@@ -659,7 +678,11 @@ + } + + // open temp output file ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 ++ ofstream out(pathOutFile.string().c_str()); ++#else + ofstream out(pathOutFile.file_string().c_str()); ++#endif + + settingmap_t::iterator iterSettings; + const char* szName = NULL; +@@ -680,7 +703,11 @@ + + // the stdio functions does not work in win release mode in some cases + remove(szFileName); ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 ++ rename(pathOutFile.string().c_str(),szFileName); ++#else + rename(pathOutFile.file_string().c_str(),szFileName); ++#endif + + return true; + } +--- zarafa-7.0.9/mapi4linux/src/m4l.mapisvc.cpp 2012-08-03 14:58:31.000000000 +0200 ++++ zarafa-7.0.9/mapi4linux/src/m4l.mapisvc.cpp.boost150 2012-08-13 01:06:24.000000000 +0200 +@@ -125,14 +125,22 @@ + if (is_directory(inffile->status())) + continue; + ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 ++ string strFilename = inffile->path().string(); ++#else + string strFilename = inffile->path().file_string(); ++#endif + string::size_type pos = strFilename.rfind(".inf", strFilename.size(), strlen(".inf")); + + if (pos == string::npos || strFilename.size() - pos != strlen(".inf")) + // silently skip files not ending in pos + continue; + ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 ++ hr = LoadINF(inffile->path().string().c_str()); ++#else + hr = LoadINF(inffile->path().file_string().c_str()); ++#endif + if (hr != hrSuccess) + goto exit; + } +--- zarafa-7.0.9/provider/libserver/ECSession.cpp 2012-08-03 14:58:34.000000000 +0200 ++++ zarafa-7.0.9/provider/libserver/ECSession.cpp.boost150 2012-08-13 01:07:07.000000000 +0200 +@@ -935,7 +935,11 @@ + if (is_directory(key->status())) + continue; + ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 ++ lpFileName = key->path().string().c_str(); ++#else + lpFileName = key->path().file_string().c_str(); ++#endif + + biofile = BIO_new_file(lpFileName, "r"); + if (!biofile) { +--- zarafa-7.0.9/provider/server/ECClientUpdate.cpp 2012-08-03 14:58:32.000000000 +0200 ++++ zarafa-7.0.9/provider/server/ECClientUpdate.cpp.boost150 2012-08-13 01:10:13.000000000 +0200 +@@ -357,6 +357,15 @@ + + bfs::directory_iterator update_last; + for (bfs::directory_iterator update(updatesdir); update != update_last; update++) { ++#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 ++ std::string strFilename = update->path().filename().string(); ++ ++ if (!bfs::is_regular_file(*update) && !bfs::is_symlink(*update)) { ++ continue; ++ } ++ ++ if (!ba::starts_with(update->path().filename().string(), strFileStart)) { ++#else + std::string strFilename = update->path().leaf(); + + if (!bfs::is_regular(*update) && !bfs::is_symlink(*update)) { +@@ -364,6 +373,7 @@ + } + + if (!ba::starts_with(update->path().leaf(), strFileStart)) { ++#endif + g_lpLogger->Log(EC_LOGLEVEL_DEBUG, "Client update: trackid: 0x%08X, Ignoring file %s for client update", ulTrackid, strFilename.c_str()); + continue; + } diff --git a/zarafa-6.40.5-rpath.patch b/zarafa-7.0.9-rpath.patch similarity index 66% rename from zarafa-6.40.5-rpath.patch rename to zarafa-7.0.9-rpath.patch index b39097c..47c5c3b 100644 --- a/zarafa-6.40.5-rpath.patch +++ b/zarafa-7.0.9-rpath.patch @@ -1,4 +1,4 @@ -Patch by Robert Scheck for zarafa >= 6.40.5, which works +Patch by Robert Scheck for zarafa >= 7.0.9, which works around the broken libtool of Debian. Multilib/multiarch systems like Fedora or Red Hat Enterprise Linux are using /usr/lib64 for 64 bit libraries and /usr/lib is used for 32 bit libraries. That allows to run 32 bit software on 64 bit systems. Debian @@ -34,9 +34,9 @@ More information regarding this topic can be found for example at: - http://lists.gnu.org/archive/html/libtool/2009-01/msg00039.html - http://thread.gmane.org/gmane.comp.gnu.libtool.general/8339/focus=8345 ---- zarafa-6.40.5/aclocal.m4 2011-01-24 13:06:08.000000000 +0100 -+++ zarafa-6.40.5/aclocal.m4.rpath 2011-02-27 14:00:53.371489885 +0100 -@@ -1708,10 +1708,13 @@ +--- zarafa-7.0.9/aclocal.m4 2012-08-03 13:58:18.000000000 +0200 ++++ zarafa-7.0.9/aclocal.m4.rpath 2012-08-12 22:57:31.000000000 +0200 +@@ -2485,10 +2485,13 @@ # before this can be enabled. hardcode_into_libs=yes @@ -45,15 +45,15 @@ More information regarding this topic can be found for example at: + # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on ---- zarafa-6.40.5/configure 2011-01-24 13:06:11.000000000 +0100 -+++ zarafa-6.40.5/configure.rpath 2011-02-27 14:00:35.902552604 +0100 -@@ -9614,10 +9614,13 @@ +--- zarafa-7.0.9/configure 2012-08-03 13:58:18.000000000 +0200 ++++ zarafa-7.0.9/configure.rpath 2012-08-12 22:59:05.000000000 +0200 +@@ -10097,10 +10097,13 @@ # before this can be enabled. hardcode_into_libs=yes @@ -62,13 +62,13 @@ More information regarding this topic can be found for example at: + # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on -@@ -13592,10 +13595,13 @@ +@@ -15288,10 +15291,13 @@ # before this can be enabled. hardcode_into_libs=yes @@ -77,37 +77,7 @@ More information regarding this topic can be found for example at: + # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on -@@ -16226,10 +16232,13 @@ - # before this can be enabled. - hardcode_into_libs=yes - -+ # Add ABI-specific directories to the system library path. -+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" -+ - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on -@@ -18860,10 +18869,13 @@ - # before this can be enabled. - hardcode_into_libs=yes - -+ # Add ABI-specific directories to the system library path. -+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" -+ - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi diff --git a/zarafa.spec b/zarafa.spec index c7820e9..dc124cb 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 35178 +%global actual_release 1 +%global svnrevision 36358 %global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 @@ -19,7 +19,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.8 +Version: 7.0.9 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -42,9 +42,10 @@ Source1: %{name}.ini Source2: %{name}.logrotate Source3: %{name}-webaccess.conf -Patch0: zarafa-6.40.5-rpath.patch +Patch0: zarafa-7.0.9-rpath.patch Patch1: zarafa-7.0.8-zlib127.patch Patch2: zarafa-7.0.8-va_list.patch +Patch3: zarafa-7.0.9-boost150.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -374,6 +375,8 @@ to interact with Zarafa. touch -c -r aclocal.m4.rpath aclocal.m4 %patch1 -p1 -b .zlib127 %patch2 -p1 -b .va_list +%patch3 -p1 -b .boost150 +touch -c -r configure.ac.boost150 configure.ac %build %if 0%{?rhel}%{?fedora} < 6 @@ -405,8 +408,7 @@ export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}/clucene09" --enable-swig \ --disable-perl \ --enable-python \ - --disable-static \ - --disable-testtools + --disable-static make %{?_smp_mflags} %install @@ -878,6 +880,9 @@ fi %{python_sitearch}/* %changelog +* Mon Aug 13 2012 Robert Scheck 7.0.9-1 +- Upgrade to 7.0.9 (#847534) + * Sun Aug 12 2012 Rex Dieter 7.0.8-2 - rebuild (boost) From bb2302c6ddc8a317f2764df9bded3b725d26dd4e Mon Sep 17 00:00:00 2001 From: Parag Nemade Date: Fri, 1 Feb 2013 21:08:08 +0530 Subject: [PATCH 36/69] Rebuild for icu 50 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index dc124cb..b698884 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 36358 %global with_clucene 1 %global with_ldap 1 @@ -880,6 +880,9 @@ fi %{python_sitearch}/* %changelog +* Fri Feb 01 2013 Parag Nemade - 7.0.9-2 +- Rebuild for icu 50 + * Mon Aug 13 2012 Robert Scheck 7.0.9-1 - Upgrade to 7.0.9 (#847534) From 2a9ed1e408feafc1222da1436ac263446014bb06 Mon Sep 17 00:00:00 2001 From: Denis Arnaud Date: Sat, 9 Feb 2013 23:25:55 +0100 Subject: [PATCH 37/69] Rebuild for Boost-1.53.0 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index b698884..1fb6c6d 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -21,7 +21,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.0.9 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 %else Release: %{actual_release}%{?dist} %endif @@ -880,6 +880,9 @@ fi %{python_sitearch}/* %changelog +* Sat Feb 09 2013 Denis Arnaud - 7.0.9-2 +- Rebuild for Boost-1.53.0 + * Fri Feb 01 2013 Parag Nemade - 7.0.9-2 - Rebuild for icu 50 From 736578b14c332f18c1b20f0087c717dc4569d443 Mon Sep 17 00:00:00 2001 From: Denis Arnaud Date: Sun, 10 Feb 2013 21:25:18 +0100 Subject: [PATCH 38/69] Rebuild for Boost-1.53.0 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 1fb6c6d..1b72c45 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -21,7 +21,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.0.9 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.2 %else Release: %{actual_release}%{?dist} %endif @@ -880,6 +880,9 @@ fi %{python_sitearch}/* %changelog +* Sun Feb 10 2013 Denis Arnaud - 7.0.9-2 +- Rebuild for Boost-1.53.0 + * Sat Feb 09 2013 Denis Arnaud - 7.0.9-2 - Rebuild for Boost-1.53.0 From 0a221ff30c58e5b18d90bc82c25787f732add4ec Mon Sep 17 00:00:00 2001 From: Denis Arnaud Date: Sun, 10 Feb 2013 21:27:18 +0100 Subject: [PATCH 39/69] Rebuild for Boost-1.53.0 --- zarafa.spec | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index 1b72c45..3d5849e 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 2 +%global actual_release 3 %global svnrevision 36358 %global with_clucene 1 %global with_ldap 1 @@ -880,10 +880,7 @@ fi %{python_sitearch}/* %changelog -* Sun Feb 10 2013 Denis Arnaud - 7.0.9-2 -- Rebuild for Boost-1.53.0 - -* Sat Feb 09 2013 Denis Arnaud - 7.0.9-2 +* Sun Feb 10 2013 Denis Arnaud - 7.0.9-3 - Rebuild for Boost-1.53.0 * Fri Feb 01 2013 Parag Nemade - 7.0.9-2 From 8e0248cdb8a0e1368d09feefdce7a640b3f8de32 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 10 Feb 2013 23:13:32 +0100 Subject: [PATCH 40/69] Upgrade to 7.0.12 --- .gitignore | 1 + sources | 2 +- zarafa-7.0.8-zlib127.patch | 27 ---- zarafa-7.0.9-boost150.patch | 254 ------------------------------------ zarafa.spec | 27 ++-- 5 files changed, 14 insertions(+), 297 deletions(-) delete mode 100644 zarafa-7.0.8-zlib127.patch delete mode 100644 zarafa-7.0.9-boost150.patch diff --git a/.gitignore b/.gitignore index 205edf5..ba2b6c4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ zcp-7.?.?.tar.gz +/zcp-7.0.12.tar.gz diff --git a/sources b/sources index 5ad1bcb..5714b86 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -2729d8052e3d63215290005ba708c7ae zcp-7.0.9.tar.gz +b09b2882c0d576cb88893290fec9c8f3 zcp-7.0.12.tar.gz diff --git a/zarafa-7.0.8-zlib127.patch b/zarafa-7.0.8-zlib127.patch deleted file mode 100644 index 49f1e16..0000000 --- a/zarafa-7.0.8-zlib127.patch +++ /dev/null @@ -1,27 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.0.8, which solves -the invalid conversion that causes since zlib >= 1.2.8 a build failure like this: - -ECLogger.cpp:169:14: error: invalid conversion from 'gzFile_s* (*)(const char*, - const char*)' to 'ECLogger_File::open_func {aka void* (*)(const char*, const - char*)}' [-fpermissive] -ECLogger.cpp:170:15: error: invalid conversion from 'int (*)(gzFile) {aka int (*) - (gzFile_s*)}' to 'ECLogger_File::close_func {aka int (*)(void*)}' [-fpermissive] -ECLogger.cpp:171:16: error: invalid conversion from 'int (*)(gzFile, const char*, - ...) {aka int (*)(gzFile_s*, const char*, ...)}' to 'ECLogger_File::printf_func - {aka int (*)(void*, const char*, ...)}' [-fpermissive] - ---- zarafa-7.0.8/common/ECLogger.cpp 2012-06-18 18:55:28.000000000 +0200 -+++ zarafa-7.0.8/common/ECLogger.cpp.zlib127 2012-06-19 23:23:06.000000000 +0200 -@@ -166,9 +166,9 @@ - szMode = NULL; - } else { - if (compress) { -- fnOpen = &gzopen; -- fnClose = &gzclose; -- fnPrintf = &gzprintf; -+ fnOpen = (open_func)&gzopen; -+ fnClose = (close_func)&gzclose; -+ fnPrintf = (printf_func)&gzprintf; - fnFileno = NULL; - fnFlush = NULL; // gzflush does exist, but degrades performance - szMode = "wb"; diff --git a/zarafa-7.0.9-boost150.patch b/zarafa-7.0.9-boost150.patch deleted file mode 100644 index 0409998..0000000 --- a/zarafa-7.0.9-boost150.patch +++ /dev/null @@ -1,254 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.0.9 which adds support for boost -1.50 only providing filesystem version 3 while previous versions still supported version 2. Finally -this patch really adds version 3 support while it does not remove support for version 2. Version 2 -is still required to build for example against Red Hat Enterprise Linux 6 shipping boost 1.41, thus -filesystem version 2 only. Boost added filesystem version 3 with boost version 1.44 and made it the -default with version 1.46. - ---- zarafa-7.0.9/configure 2012-08-03 13:58:18.000000000 +0200 -+++ zarafa-7.0.9/configure.boost150 2012-08-12 23:57:39.000000000 +0200 -@@ -20363,48 +20363,6 @@ - fi - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking boost version compatibility" >&5 --$as_echo_n "checking boost version compatibility... " >&6; } --if test -n "$boost_major_version" -a $boost_major_version -ge 146; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: adding backward compatible flags" >&5 --$as_echo "adding backward compatible flags" >&6; } -- BOOST_CPPFLAGS="$BOOSTCPPFLAGS -DBOOST_FILESYSTEM_VERSION=2" -- -- CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS" -- LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" -- -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for boost filesystem version 2 presence" >&5 --$as_echo_n "checking for boost filesystem version 2 presence... " >&6; } -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ -- -- --#include --namespace bfs = boost::filesystem; --int main() { -- bfs::path path; -- bfs::directory_iterator pi(path); -- pi->path().file_string(); --} -- --_ACEOF --if ac_fn_cxx_try_link "$LINENO"; then : -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 --$as_echo "ok" >&6; } --else -- as_fn_error $? "no, boost is too new" "$LINENO" 5 -- --fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -- -- LIBS=$libs_keep -- CFLAGS=$cflags_keep --else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 --$as_echo "ok" >&6; } --fi -- - # Check whether --enable-icu was given. - if test "${enable_icu+set}" = set; then : - enableval=$enable_icu; want_icu=${enableval} ---- zarafa-7.0.9/configure.ac 2012-08-03 13:57:12.000000000 +0200 -+++ zarafa-7.0.9/configure.ac.boost150 2012-08-12 23:57:39.000000000 +0200 -@@ -693,32 +693,6 @@ - # BOOST_THREADS([mt]) - BOOST_FILESYSTEM([mt]) - BOOST_DATE_TIME([mt]) --AC_MSG_CHECKING([boost version compatibility]) --if test -n "$boost_major_version" -a $boost_major_version -ge 146; then -- AC_MSG_RESULT([adding backward compatible flags]) -- BOOST_CPPFLAGS="$BOOSTCPPFLAGS -DBOOST_FILESYSTEM_VERSION=2" -- -- CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS" -- LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" -- -- AC_MSG_CHECKING([for boost filesystem version 2 presence]) -- AC_LINK_IFELSE([ -- AC_LANG_SOURCE([ --#include --namespace bfs = boost::filesystem; --int main() { -- bfs::path path; -- bfs::directory_iterator pi(path); -- pi->path().file_string(); --} -- ]) ], [ AC_MSG_RESULT([ok]) ], [ AC_MSG_ERROR([no, boost is too new]) -- ]) -- -- LIBS=$libs_keep -- CFLAGS=$cflags_keep --else -- AC_MSG_RESULT([ok]) --fi - - AC_ARG_ENABLE(icu, AC_HELP_STRING([--enable-icu],[enable icu support]), [want_icu=${enableval}],[want_icu=auto]) - if test "$want_icu" = "no"; then ---- zarafa-7.0.9/common/ECConfigImpl.cpp 2012-08-03 14:58:31.000000000 +0200 -+++ zarafa-7.0.9/common/ECConfigImpl.cpp.boost150 2012-08-13 01:05:29.000000000 +0200 -@@ -322,11 +322,19 @@ - m_currentFile = file; - - if (!exists(file)) { -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 -+ errors.push_back("Config file '" + file.string() + "' does not exist."); -+#else - errors.push_back("Config file '" + file.file_string() + "' does not exist."); -+#endif - goto exit; - } - if (is_directory(file)) { -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 -+ errors.push_back("Config file '" + file.string() + "' is a directory."); -+#else - errors.push_back("Config file '" + file.file_string() + "' is a directory."); -+#endif - goto exit; - } - -@@ -338,8 +346,13 @@ - - m_readFiles.insert(file); - -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 -+ if(!(fp = fopen(file.string().c_str(), "rt"))) { -+ errors.push_back("Unable to open config file '" + file.string() + "'"); -+#else - if(!(fp = fopen(file.file_string().c_str(), "rt"))) { - errors.push_back("Unable to open config file '" + file.file_string() + "'"); -+#endif - goto exit; - } - -@@ -424,9 +437,6 @@ - } - - --#if (((BOOST_VERSION / 100) % 1000) < 36) -- #define remove_filename remove_leaf --#endif - bool ECConfigImpl::HandleInclude(const char *lpszArgs, unsigned int ulFlags) - { - string strValue; -@@ -435,7 +445,11 @@ - file = (strValue = trim(lpszArgs, " \t\r\n")); - if (!file.is_complete()) { - // Rebuild the path -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 - file = m_currentFile.remove_filename(); -+#else -+ file = m_currentFile.remove_leaf(); -+#endif - file /= strValue; - } - -@@ -639,8 +653,13 @@ - fs::path pathBakFile; - - pathOutFile = pathBakFile = szFileName; -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 - pathOutFile.remove_filename() /= "config_out.cfg"; - pathBakFile.remove_filename() /= "config_bak.cfg"; -+#else -+ pathOutFile.remove_leaf() /= "config_out.cfg"; -+ pathBakFile.remove_leaf() /= "config_bak.cfg"; -+#endif - - ifstream in(szFileName); - -@@ -659,7 +678,11 @@ - } - - // open temp output file -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 -+ ofstream out(pathOutFile.string().c_str()); -+#else - ofstream out(pathOutFile.file_string().c_str()); -+#endif - - settingmap_t::iterator iterSettings; - const char* szName = NULL; -@@ -680,7 +703,11 @@ - - // the stdio functions does not work in win release mode in some cases - remove(szFileName); -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 -+ rename(pathOutFile.string().c_str(),szFileName); -+#else - rename(pathOutFile.file_string().c_str(),szFileName); -+#endif - - return true; - } ---- zarafa-7.0.9/mapi4linux/src/m4l.mapisvc.cpp 2012-08-03 14:58:31.000000000 +0200 -+++ zarafa-7.0.9/mapi4linux/src/m4l.mapisvc.cpp.boost150 2012-08-13 01:06:24.000000000 +0200 -@@ -125,14 +125,22 @@ - if (is_directory(inffile->status())) - continue; - -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 -+ string strFilename = inffile->path().string(); -+#else - string strFilename = inffile->path().file_string(); -+#endif - string::size_type pos = strFilename.rfind(".inf", strFilename.size(), strlen(".inf")); - - if (pos == string::npos || strFilename.size() - pos != strlen(".inf")) - // silently skip files not ending in pos - continue; - -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 -+ hr = LoadINF(inffile->path().string().c_str()); -+#else - hr = LoadINF(inffile->path().file_string().c_str()); -+#endif - if (hr != hrSuccess) - goto exit; - } ---- zarafa-7.0.9/provider/libserver/ECSession.cpp 2012-08-03 14:58:34.000000000 +0200 -+++ zarafa-7.0.9/provider/libserver/ECSession.cpp.boost150 2012-08-13 01:07:07.000000000 +0200 -@@ -935,7 +935,11 @@ - if (is_directory(key->status())) - continue; - -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 -+ lpFileName = key->path().string().c_str(); -+#else - lpFileName = key->path().file_string().c_str(); -+#endif - - biofile = BIO_new_file(lpFileName, "r"); - if (!biofile) { ---- zarafa-7.0.9/provider/server/ECClientUpdate.cpp 2012-08-03 14:58:32.000000000 +0200 -+++ zarafa-7.0.9/provider/server/ECClientUpdate.cpp.boost150 2012-08-13 01:10:13.000000000 +0200 -@@ -357,6 +357,15 @@ - - bfs::directory_iterator update_last; - for (bfs::directory_iterator update(updatesdir); update != update_last; update++) { -+#if BOOST_VERSION >= 105000 || BOOST_FILESYSTEM_VERSION >= 3 -+ std::string strFilename = update->path().filename().string(); -+ -+ if (!bfs::is_regular_file(*update) && !bfs::is_symlink(*update)) { -+ continue; -+ } -+ -+ if (!ba::starts_with(update->path().filename().string(), strFileStart)) { -+#else - std::string strFilename = update->path().leaf(); - - if (!bfs::is_regular(*update) && !bfs::is_symlink(*update)) { -@@ -364,6 +373,7 @@ - } - - if (!ba::starts_with(update->path().leaf(), strFileStart)) { -+#endif - g_lpLogger->Log(EC_LOGLEVEL_DEBUG, "Client update: trackid: 0x%08X, Ignoring file %s for client update", ulTrackid, strFilename.c_str()); - continue; - } diff --git a/zarafa.spec b/zarafa.spec index 1fb6c6d..597e517 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 36358 +%global actual_release 1 +%global svnrevision 40336 %global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 @@ -19,9 +19,9 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.9 +Version: 7.0.12 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else Release: %{actual_release}%{?dist} %endif @@ -43,9 +43,7 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-7.0.9-rpath.patch -Patch1: zarafa-7.0.8-zlib127.patch -Patch2: zarafa-7.0.8-va_list.patch -Patch3: zarafa-7.0.9-boost150.patch +Patch1: zarafa-7.0.8-va_list.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -373,10 +371,7 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 -%patch1 -p1 -b .zlib127 -%patch2 -p1 -b .va_list -%patch3 -p1 -b .boost150 -touch -c -r configure.ac.boost150 configure.ac +%patch1 -p1 -b .va_list %build %if 0%{?rhel}%{?fedora} < 6 @@ -425,7 +420,7 @@ make \ # Nuke all overlefts from licensed, managed or other proprietary items rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/{%{name}/{license,licensed.cfg,report-ca},cron.daily/%{name}-client-update} -rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,msr-verify,ldapms.cfg,licensed{,.cfg}},za-aclsync}.* +rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,msr-verify,ldapms.cfg,licensed{,.cfg}},za-{acl{set,sync},restore}}.* # Move all the initscripts to their appropriate place and # ensure that all services are off by default at boot time @@ -521,7 +516,7 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.htaccess,%{name}-webaccess. # Remove flash-based multi-attachment upload (missing source) %if %{no_multiupload} -sed '131,138d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ +sed '143,150d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php.new touch -c -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{,.new} mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} @@ -707,6 +702,7 @@ fi %config(noreplace) %{_sysconfdir}/%{name}/autorespond %{_sysconfdir}/rc.d/init.d/%{name}-dagent %{_mandir}/man1/%{name}-dagent.1* +%{_mandir}/man1/%{name}-autorespond.1* %{_mandir}/man5/%{name}-dagent.cfg.5* %files devel @@ -769,8 +765,6 @@ fi %{_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 @@ -880,6 +874,9 @@ fi %{python_sitearch}/* %changelog +* Sun Feb 10 2013 Robert Scheck 7.0.12-1 +- Upgrade to 7.0.12 + * Sat Feb 09 2013 Denis Arnaud - 7.0.9-2 - Rebuild for Boost-1.53.0 From 6c74fcb75016e03b30d02f5f09ea9c466633ae0e Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 10 Feb 2013 23:41:05 +0100 Subject: [PATCH 41/69] More wildcard --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ba2b6c4..594d8b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -zcp-7.?.?.tar.gz -/zcp-7.0.12.tar.gz +zcp-7.?.*.tar.gz From 5bfb490b6400a609af41fee10d164bda55365308 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 3 Mar 2013 19:41:44 +0100 Subject: [PATCH 42/69] Upgrade to 7.0.13 --- sources | 2 +- zarafa.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 5714b86..c0fd5a2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -b09b2882c0d576cb88893290fec9c8f3 zcp-7.0.12.tar.gz +8b8b9bf22044e618f5c01ee8271c681b zcp-7.0.13.tar.gz diff --git a/zarafa.spec b/zarafa.spec index 72dc4d1..7c08065 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 %global actual_release 1 -%global svnrevision 40336 +%global svnrevision 41388 %global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 @@ -19,7 +19,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.12 +Version: 7.0.13 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -874,6 +874,9 @@ fi %{python_sitearch}/* %changelog +* Sun Mar 03 2013 Robert Scheck 7.0.13-1 +- Upgrade to 7.0.13 + * Sun Feb 10 2013 Robert Scheck 7.0.12-1 - Upgrade to 7.0.12 From e55f815f8ff43221cb22d2f87a6041977c326615 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Fri, 22 Mar 2013 19:49:45 +0100 Subject: [PATCH 43/69] rebuild for http://fedoraproject.org/wiki/Features/Php55 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 7c08065..de51c90 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 41388 %global with_clucene 1 %global with_ldap 1 @@ -874,6 +874,9 @@ fi %{python_sitearch}/* %changelog +* Fri Mar 22 2013 Remi Collet 7.0.13-2 +- rebuild for http://fedoraproject.org/wiki/Features/Php55 + * Sun Mar 03 2013 Robert Scheck 7.0.13-1 - Upgrade to 7.0.13 From d83551f679d37187fbb413f19f7d8353e19aafe3 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 24 Mar 2013 01:20:17 +0100 Subject: [PATCH 44/69] Upgrade to 7.1.4 --- sources | 2 +- zarafa-7.1.4-kyotocabinet.patch | 138 +++++++++++++++++++++++ zarafa-7.1.4-swig20.patch | 22 ++++ zarafa.spec | 187 ++++++++++++++++++-------------- 4 files changed, 268 insertions(+), 81 deletions(-) create mode 100644 zarafa-7.1.4-kyotocabinet.patch create mode 100644 zarafa-7.1.4-swig20.patch diff --git a/sources b/sources index c0fd5a2..3961adc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -8b8b9bf22044e618f5c01ee8271c681b zcp-7.0.13.tar.gz +c1f8e8bf841a40db104e6149fb48830d zcp-7.1.4.tar.gz diff --git a/zarafa-7.1.4-kyotocabinet.patch b/zarafa-7.1.4-kyotocabinet.patch new file mode 100644 index 0000000..59bac11 --- /dev/null +++ b/zarafa-7.1.4-kyotocabinet.patch @@ -0,0 +1,138 @@ +Patch by Robert Scheck for zarafa >= 7.1.4, which allows to build Zarafa even +if Kyoto Cabinet is not available. In the end it's introducing the same behaviour like CLucene has at the +moment already. If you build using './configure --with-clucene-lib-prefix=' simply no zarafa-search gets +build. But if you build using './configure --with-clucene-lib-prefix= --disable-kyotocabinet', simply no +zarafa-search will be build on Zarafa 7.1. If you don't pass both options, it's looking for CLucene and +Kyoto Cabinet like before. However, there are (experimental) architectures, where one or both is not (yet) +available and this avoids building Zarafa on these architectures and/or systems. It should not introduce +any regressions, just give some more flexibility to packagers. https://jira.zarafa.com/browse/ZCP-9862 is +providing some more information. + +--- zarafa-7.1.4/configure.ac 2013-02-28 16:12:05.000000000 +0100 ++++ zarafa-7.1.4/configure.ac.kyotocabinetc 2013-03-23 22:32:04.000000000 +0100 +@@ -411,7 +411,15 @@ + CXXFLAGS=$CXXFLAGS_system + CPPFLAGS=$CPPFLAGS_system + ++AC_ARG_ENABLE(kyotocabinet, AC_HELP_STRING([--enable-kyotocabinet], [enable building with kyotocabinet support]), [want_kyotocabinet=${enableval}], [want_kyotocabinet=yes]) ++AM_CONDITIONAL(WITH_KYOTOCABINET, test "$want_kyotocabinet" = "yes") ++if test "$want_kyotocabinet" = "yes"; then + PKG_CHECK_MODULES([KYOTOCABINET], [kyotocabinet]) ++else ++AC_MSG_CHECKING([for KYOTOCABINET]) ++AC_MSG_RESULT([$want_kyotocabinet]) ++fi ++AM_CONDITIONAL([WITH_KYOTOCABINET], [test "$want_kyotocabinet" = "yes"]) + AC_SUBST(KYOTOCABINET_CFLAGS) + AC_SUBST(KYOTOCABINET_LIBS) + +--- zarafa-7.1.4/ECtools/zarafa-search/Makefile.am 2013-02-28 16:13:19.000000000 +0100 ++++ zarafa-7.1.4/ECtools/zarafa-search/Makefile.am.kyotocabinet 2013-03-23 22:32:58.000000000 +0100 +@@ -1,7 +1,9 @@ + if WITH_CLUCENE ++if WITH_KYOTOCABINET + bin_PROGRAMS = zarafa-search + noinst_PROGRAMS = dump-index + endif ++endif + + AM_CPPFLAGS = \ + -I${top_srcdir}/mapi4linux/include \ +--- zarafa-7.1.4/configure 2013-03-23 22:39:03.000000000 +0100 ++++ zarafa-7.1.4/configure.kyotocabinet 2013-03-23 22:43:14.000000000 +0100 +@@ -797,6 +797,8 @@ + ICAL_CFLAGS + KYOTOCABINET_LIBS + KYOTOCABINET_CFLAGS ++WITH_KYOTOCABINET_FALSE ++WITH_KYOTOCABINET_TRUE + VMIME_LIBS + VMIME_CFLAGS + PKG_CONFIG_LIBDIR +@@ -999,6 +1001,7 @@ + with_mysql_config + enable_embedded_mysql + with_vmime_prefix ++enable_kyotocabinet + with_ical_prefix + with_clucene_lib_prefix + with_clucene_include_prefix +@@ -1674,6 +1677,7 @@ + --enable-swig enable regenerating swig code + --enable-python enable building python binding + --enable-embedded-mysql Compile zarafa-server with the embedded MySQL server ++ --enable-kyotocabinet enable building with kyotocabinet support + --enable-epoll enable building epoll socket handling + --enable-static-boost Prefer the static boost libraries over the shared + ones [no] +@@ -18198,6 +18202,22 @@ + CXXFLAGS=$CXXFLAGS_system + CPPFLAGS=$CPPFLAGS_system + ++# Check whether --enable-kyotocabinet was given. ++if test "${enable_kyotocabinet+set}" = set; then : ++ enableval=$enable_kyotocabinet; want_kyotocabinet=${enableval} ++else ++ want_kyotocabinet=yes ++fi ++ ++ if test "$want_kyotocabinet" = "yes"; then ++ WITH_KYOTOCABINET_TRUE= ++ WITH_KYOTOCABINET_FALSE='#' ++else ++ WITH_KYOTOCABINET_TRUE='#' ++ WITH_KYOTOCABINET_FALSE= ++fi ++ ++if test "$want_kyotocabinet" = "yes"; then + + pkg_failed=no + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for KYOTOCABINET" >&5 +@@ -18287,6 +18307,19 @@ + $as_echo "yes" >&6; } + + fi ++else ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for KYOTOCABINET" >&5 ++$as_echo_n "checking for KYOTOCABINET... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $want_kyotocabinet" >&5 ++$as_echo "$want_kyotocabinet" >&6; } ++fi ++ if test "$want_kyotocabinet" = "yes"; then ++ WITH_KYOTOCABINET_TRUE= ++ WITH_KYOTOCABINET_FALSE='#' ++else ++ WITH_KYOTOCABINET_TRUE='#' ++ WITH_KYOTOCABINET_FALSE= ++fi + + + +@@ -20872,6 +20905,14 @@ + as_fn_error $? "conditional \"WITH_XML2\" was never defined. + Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi ++if test -z "${WITH_KYOTOCABINET_TRUE}" && test -z "${WITH_KYOTOCABINET_FALSE}"; then ++ as_fn_error $? "conditional \"WITH_KYOTOCABINET\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++if test -z "${WITH_KYOTOCABINET_TRUE}" && test -z "${WITH_KYOTOCABINET_FALSE}"; then ++ as_fn_error $? "conditional \"WITH_KYOTOCABINET\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi + if test -z "${WITH_CLUCENE_TRUE}" && test -z "${WITH_CLUCENE_FALSE}"; then + as_fn_error $? "conditional \"WITH_CLUCENE\" was never defined. + Usually this means the macro was only invoked conditionally." "$LINENO" 5 +--- zarafa-7.1.4/ECtools/zarafa-search/Makefile.in 2013-02-28 16:13:47.000000000 +0100 ++++ zarafa-7.1.4/ECtools/zarafa-search/Makefile.in.kyotocabinet 2013-03-23 22:53:45.000000000 +0100 +@@ -34,8 +34,8 @@ + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-@WITH_CLUCENE_TRUE@bin_PROGRAMS = zarafa-search$(EXEEXT) +-@WITH_CLUCENE_TRUE@noinst_PROGRAMS = dump-index$(EXEEXT) ++@WITH_CLUCENE_TRUE@@WITH_KYOTOCABINET_TRUE@bin_PROGRAMS = zarafa-search$(EXEEXT) ++@WITH_CLUCENE_TRUE@@WITH_KYOTOCABINET_TRUE@noinst_PROGRAMS = dump-index$(EXEEXT) + subdir = ECtools/zarafa-search + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 diff --git a/zarafa-7.1.4-swig20.patch b/zarafa-7.1.4-swig20.patch new file mode 100644 index 0000000..4f8802c --- /dev/null +++ b/zarafa-7.1.4-swig20.patch @@ -0,0 +1,22 @@ +Patch by Sander Hoentjen for zarafa >= 7.1.4, which ensures +building with swig 2.0.x by using PyInt_FromLong instead of SWIG_From_long. + +--- zarafa-7.1.4/swig/icalmapi.i 2013-02-28 16:13:24.000000000 +0100 ++++ zarafa-7.1.4/swig/icalmapi.i.swig20 2013-03-23 23:22:08.000000000 +0100 +@@ -24,14 +24,14 @@ + $1 = &temp; + } + %typemap(argout) (eIcalType* ) { +- %append_output(SWIG_From_long(*$1)); ++ %append_output(PyInt_FromLong(*$1)); + } + + %typemap(in,numinputs=0) (time_t *) (time_t temp) { + $1 = &temp; + } + %typemap(argout) (time_t* ) { +- %append_output(SWIG_From_long(*$1)); ++ %append_output(PyInt_FromLong(*$1)); + } + + %typemap(in,numinputs=0) (SBinary *) (SBinary temp) { diff --git a/zarafa.spec b/zarafa.spec index de51c90..48f4765 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,7 +1,7 @@ %global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 41388 -%global with_clucene 1 +%global actual_release 1 +%global svnrevision 41394 +%global with_search 1 %global with_ldap 1 %global with_xmlto 1 %global no_multiupload 1 @@ -19,7 +19,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.13 +Version: 7.1.4 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -34,9 +34,9 @@ License: AGPLv3 with exceptions Group: Applications/Productivity URL: http://www.zarafa.com/ %if %{beta_or_rc} -Source0: http://download.zarafa.com/community/beta/7.0/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz +Source0: http://download.zarafa.com/community/beta/7.1/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz %else -Source0: http://download.zarafa.com/community/final/7.0/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz +Source0: http://download.zarafa.com/community/final/7.1/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz %endif Source1: %{name}.ini Source2: %{name}.logrotate @@ -44,6 +44,8 @@ Source3: %{name}-webaccess.conf Patch0: zarafa-7.0.9-rpath.patch Patch1: zarafa-7.0.8-va_list.patch +Patch2: zarafa-7.1.4-kyotocabinet.patch +Patch3: zarafa-7.1.4-swig20.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -71,7 +73,8 @@ BuildRequires: %{_bindir}/xsubpp %endif BuildRequires: python-devel >= 2.4 -%if %{with_clucene} +%if %{with_search} +BuildRequires: kyotocabinet-devel %if 0%{?fedora} > 15 BuildRequires: clucene09-core-devel >= 0.9.21b-1 %else @@ -218,24 +221,6 @@ to enable users to access their calendar using iCalendar (RFC 2445/5545) or CalDAV (RFC 4791) compliant clients. The iCal/CalDAV gateway service can be configured to listen for HTTP and HTTPS requests. -%if %{with_clucene} -%package indexer -Summary: Indexer search engine for the Zarafa Collaboration Platform -Group: System Environment/Daemons -Requires: zarafa-common = %{version}-%{release}, file -Requires: catdoc, libxslt, w3m, unzip, %{_bindir}/pdftotext -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/service, /sbin/chkconfig -Requires(postun): /sbin/service - -%description indexer -The zarafa-indexer package includes the Zarafa Indexing service for fast -and full-text searching. Using CLucene search engine, this service makes -an index per user of messages and attachments for the Zarafa server. At -search queries, the server will use this index to quickly find messages, -items and even in contents of attached documents. -%endif - %package monitor Summary: Quota Monitor for the Zarafa Collaboration Platform Group: System Environment/Daemons @@ -249,6 +234,27 @@ The zarafa-monitor package includes the Zarafa Monitoring service which is responsible for checking the users store (mailbox) size, and sending them (and administrators) a warning e-mail when limits are exceeded. +%if %{with_search} +%package search +Summary: Indexer search engine for the Zarafa Collaboration Platform +Group: System Environment/Daemons +Requires: zarafa-common = %{version}-%{release}, file +Requires: catdoc, libxslt, w3m, unzip, %{_bindir}/pdftotext +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/service, /sbin/chkconfig +Requires(postun): /sbin/service +Provides: zarafa-indexer = %{version}-%{release} +Provides: zarafa-indexer%{?_isa} = %{version}-%{release} +Obsoletes: zarafa-indexer < 7.1.0-1 + +%description search +The zarafa-search package includes the Zarafa Indexing service for fast +and full-text searching. Using CLucene search engine, this service makes +an index per user of messages and attachments for the Zarafa server. At +search queries, the server will use this index to quickly find messages, +items and even in contents of attached documents. +%endif + %package server Summary: Server component for the Zarafa Collaboration Platform Group: System Environment/Daemons @@ -372,6 +378,11 @@ to interact with Zarafa. %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 %patch1 -p1 -b .va_list +%if !%{with_search} +%patch2 -p1 -b .kyotocabinet +touch -c -r configure.ac.kyotocabinet configure.ac +%endif +%patch3 -p1 -b .swig20 %build %if 0%{?rhel}%{?fedora} < 6 @@ -379,16 +390,16 @@ export CPPFLAGS="$CPPFLAGS -I%{_includedir}/boost141" export LDFLAGS="$LDFLAGS -L%{_libdir}/boost141" %endif -%if 0%{?fedora} > 15 +%if %{with_search} && 0%{?rhel}%{?fedora} > 6 export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}/clucene09" %endif %configure \ --with-userscript-prefix=%{_sysconfdir}/%{name}/userscripts \ --with-quotatemplate-prefix=%{_sysconfdir}/%{name}/quotamail \ - --with-indexerscripts-prefix=%{_datadir}/%{name}/indexerscripts \ -%if %{with_clucene} -%if 0%{?fedora} > 15 + --with-searchscripts-prefix=%{_datadir}/%{name}/searchscripts \ +%if %{with_search} +%if 0%{?rhel}%{?fedora} > 6 --with-clucene-lib-prefix=%{_libdir}/clucene09 \ --with-clucene-include-prefix=%{_includedir}/clucene09 \ %else @@ -396,12 +407,12 @@ export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}/clucene09" --with-clucene-include-prefix=%{_includedir} \ %endif %else + --disable-kyotocabinet \ --with-clucene-lib-prefix= \ %endif --enable-release \ --enable-epoll \ --enable-swig \ - --disable-perl \ --enable-python \ --disable-static make %{?_smp_mflags} @@ -426,7 +437,7 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,msr-veri # ensure that all services are off by default at boot time rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/init.d/ mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/ -for service in dagent gateway ical indexer monitor server spooler; do +for service in dagent gateway ical search monitor server spooler; do if [ -f installer/linux/%{name}-$service.init.rhel ]; then sed -e 's@345@-@' installer/linux/%{name}-$service.init.rhel > \ $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/%{name}-$service @@ -476,8 +487,8 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man5/%{name}-ldap.cfg.5* mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-gateway/ install -p -m 644 tools/python-scripts/optimize-imap.py $RPM_BUILD_ROOT%{_datadir}/%{name}-gateway/ -# Create the default log and lib directory for packaging -mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/{log,lib}/%{name}/ +# Create the default log and lib directories for packaging +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/{lib/%{name}/{dagent,spooler}/plugins,log/%{name}}/ # Remove all libtool .la files to avoid packaging of them rm -f $RPM_BUILD_ROOT{%{_libdir}/{,php/modules,php4,%{name}},%{perl_vendorarch}/auto/MAPI,%{python_sitearch}}/*.la @@ -486,15 +497,15 @@ rm -f $RPM_BUILD_ROOT{%{_libdir}/{,php/modules,php4,%{name}},%{perl_vendorarch}/ rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}{,-gateway}/ # Move Indexer/CLucene related files to its correct places -%if %{with_clucene} -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/indexerscripts/ -mv -f $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/%{name}/indexerscripts/attachments_parser.db +%if %{with_search} +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/searchscripts/ +mv -f $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/%{name}/searchscripts/attachments_parser.db for helper in attachments_parser xmltotext.xslt zmktemp; do - ln -s ../../..%{_datadir}/%{name}/indexerscripts/$helper $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/indexerscripts/$helper + ln -s ../../..%{_datadir}/%{name}/searchscripts/$helper $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/searchscripts/$helper done %else -rm -f $RPM_BUILD_ROOT{%{_sysconfdir}/{rc.d/init.d,sysconfig},%{_mandir}/man?}/%{name}-indexer* -rm -rf $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/indexer.cfg,%{_datadir}/%{name}/indexerscripts/} +rm -f $RPM_BUILD_ROOT{%{_sysconfdir}/{rc.d/init.d,sysconfig},%{_mandir}/man?}/%{name}-search* +rm -rf $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/search.cfg,%{_datadir}/%{name}/searchscripts/} %endif # Move the webaccess configuration file to its correct place @@ -552,18 +563,18 @@ chown %{name}:%{name} %{_localstatedir}/log/%{name}/gateway.* > /dev/null 2>&1 | # Ensure correct log file ownership after upgrade from official packages chown %{name}:%{name} %{_localstatedir}/log/%{name}/ical.* > /dev/null 2>&1 || : -%if %{with_clucene} -%post indexer -[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-indexer -# Ensure correct log file ownership after upgrade from official packages -chown %{name}:%{name} %{_localstatedir}/log/%{name}/indexer.* > /dev/null 2>&1 || : -%endif - %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 || : +%if %{with_search} +%post search +[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-search +# Ensure correct log file ownership after upgrade from official packages +chown %{name}:%{name} %{_localstatedir}/log/%{name}/search.* > /dev/null 2>&1 || : +%endif + %post server [ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-server # Ensure correct log file ownership after upgrade from official packages @@ -595,20 +606,20 @@ if [ $1 -eq 0 ]; then /sbin/chkconfig --del %{name}-ical fi -%if %{with_clucene} -%preun indexer -if [ $1 -eq 0 ]; then - /sbin/service %{name}-indexer stop > /dev/null 2>&1 || : - /sbin/chkconfig --del %{name}-indexer -fi -%endif - %preun monitor if [ $1 -eq 0 ]; then /sbin/service %{name}-monitor stop > /dev/null 2>&1 || : /sbin/chkconfig --del %{name}-monitor fi +%if %{with_search} +%preun search +if [ $1 -eq 0 ]; then + /sbin/service %{name}-search stop > /dev/null 2>&1 || : + /sbin/chkconfig --del %{name}-search +fi +%endif + %preun server if [ $1 -eq 0 ]; then /sbin/service %{name}-server stop > /dev/null 2>&1 || : @@ -636,18 +647,18 @@ if [ $1 -ne 0 ]; then /sbin/service %{name}-ical condrestart > /dev/null 2>&1 || : fi -%if %{with_clucene} -%postun indexer -if [ $1 -ne 0 ]; then - /sbin/service %{name}-indexer condrestart > /dev/null 2>&1 || : -fi -%endif - %postun monitor if [ $1 -ne 0 ]; then /sbin/service %{name}-monitor condrestart > /dev/null 2>&1 || : fi +%if %{with_search} +%postun search +if [ $1 -ne 0 ]; then + /sbin/service %{name}-search condrestart > /dev/null 2>&1 || : +fi +%endif + %postun server if [ $1 -ne 0 ]; then /sbin/service %{name}-server condrestart > /dev/null 2>&1 || : @@ -704,14 +715,19 @@ fi %{_mandir}/man1/%{name}-dagent.1* %{_mandir}/man1/%{name}-autorespond.1* %{_mandir}/man5/%{name}-dagent.cfg.5* +%{_datadir}/%{name}-dagent/ +%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/dagent/ +%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/dagent/plugins/ %files devel %defattr(-,root,root,-) %{_libdir}/libarchiver.so +%{_libdir}/libarchiver-core.so %{_libdir}/libicalmapi.so %{_libdir}/libinetmapi.so %{_libdir}/libmapi.so %{_libdir}/libcommon_mapi.a +%{_libdir}/libcommon_service.a %{_libdir}/libcommon_ssl.a %{_libdir}/libcommon_util.a %{_libdir}/libfreebusy.a @@ -741,25 +757,6 @@ fi %{_mandir}/man1/%{name}-ical.1* %{_mandir}/man5/%{name}-ical.cfg.5* -%if %{with_clucene} -%files indexer -%defattr(-,root,root,-) -%{_bindir}/%{name}-indexer -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/indexer.cfg -%{_sysconfdir}/rc.d/init.d/%{name}-indexer -%dir %{_sysconfdir}/%{name}/indexerscripts/ -%config(noreplace) %{_sysconfdir}/%{name}/indexerscripts/attachments_parser.db -%{_sysconfdir}/%{name}/indexerscripts/attachments_parser -%{_sysconfdir}/%{name}/indexerscripts/xmltotext.xslt -%{_sysconfdir}/%{name}/indexerscripts/zmktemp -%dir %{_datadir}/%{name}/indexerscripts/ -%{_datadir}/%{name}/indexerscripts/attachments_parser -%{_datadir}/%{name}/indexerscripts/xmltotext.xslt -%{_datadir}/%{name}/indexerscripts/zmktemp -%{_mandir}/man1/%{name}-indexer.1* -%{_mandir}/man5/%{name}-indexer.cfg.5* -%endif - %files monitor %defattr(-,root,root,-) %{_bindir}/%{name}-monitor @@ -773,6 +770,25 @@ fi %{_mandir}/man1/%{name}-monitor.1* %{_mandir}/man5/%{name}-monitor.cfg.5* +%if %{with_search} +%files search +%defattr(-,root,root,-) +%{_bindir}/%{name}-search +%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/search.cfg +%{_sysconfdir}/rc.d/init.d/%{name}-search +%dir %{_sysconfdir}/%{name}/searchscripts/ +%config(noreplace) %{_sysconfdir}/%{name}/searchscripts/attachments_parser.db +%{_sysconfdir}/%{name}/searchscripts/attachments_parser +%{_sysconfdir}/%{name}/searchscripts/xmltotext.xslt +%{_sysconfdir}/%{name}/searchscripts/zmktemp +%dir %{_datadir}/%{name}/searchscripts/ +%{_datadir}/%{name}/searchscripts/attachments_parser +%{_datadir}/%{name}/searchscripts/xmltotext.xslt +%{_datadir}/%{name}/searchscripts/zmktemp +%{_mandir}/man1/%{name}-search.1* +%{_mandir}/man5/%{name}-search.cfg.5* +%endif + %files server %defattr(-,root,root,-) %{_bindir}/%{name}-server @@ -821,12 +837,17 @@ fi %{_sysconfdir}/rc.d/init.d/%{name}-spooler %{_mandir}/man1/%{name}-spooler.1* %{_mandir}/man5/%{name}-spooler.cfg.5* +%{_datadir}/%{name}-spooler/ +%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/spooler/ +%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/spooler/plugins/ %files utils %defattr(-,root,root,-) %{_bindir}/%{name}-admin %{_bindir}/%{name}-fsck +%{_bindir}/%{name}-mailbox-permissions %{_bindir}/%{name}-passwd +%{_bindir}/%{name}-set-oof %{_bindir}/%{name}-stats %{_datadir}/%{name}/audit-parse.pl %{_datadir}/%{name}/db-calc-storesize @@ -835,7 +856,9 @@ fi %{_datadir}/%{name}/zarafa7-upgrade %{_mandir}/man1/%{name}-admin.1* %{_mandir}/man1/%{name}-fsck.1* +%{_mandir}/man1/%{name}-mailbox-permissions.1* %{_mandir}/man1/%{name}-passwd.1* +%{_mandir}/man1/%{name}-set-oof.1* %{_mandir}/man1/%{name}-stats.1* %files webaccess @@ -852,6 +875,7 @@ fi %defattr(-,root,root,-) %dir %{_sysconfdir}/mapi/ %{_libdir}/libarchiver.so.* +%{_libdir}/libarchiver-core.so.* %{_libdir}/libicalmapi.so.* %{_libdir}/libinetmapi.so.* %{_libdir}/libmapi.so.* @@ -874,6 +898,9 @@ fi %{python_sitearch}/* %changelog +* Sun Mar 24 2013 Robert Scheck 7.1.4-1 +- Upgrade to 7.1.4 + * Fri Mar 22 2013 Remi Collet 7.0.13-2 - rebuild for http://fedoraproject.org/wiki/Features/Php55 From 38173f51e7b9145921b211c5d979f0dc5c479fb9 Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Sat, 25 May 2013 11:38:28 -0500 Subject: [PATCH 45/69] rebuild (libical) --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 48f4765..35fbbe6 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 41394 %global with_search 1 %global with_ldap 1 @@ -898,6 +898,9 @@ fi %{python_sitearch}/* %changelog +* Sat May 25 2013 Rex Dieter 7.1.4-2 +- rebuild (libical) + * Sun Mar 24 2013 Robert Scheck 7.1.4-1 - Upgrade to 7.1.4 From 290283cdacee9e1635ac62b98901ca4612799936 Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Sat, 27 Jul 2013 15:02:58 +0200 Subject: [PATCH 46/69] Rebuild for boost 1.54.0 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 35fbbe6..62b7549 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -21,7 +21,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.1.4 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 %else Release: %{actual_release}%{?dist} %endif @@ -898,6 +898,9 @@ fi %{python_sitearch}/* %changelog +* Sat Jul 27 2013 pmachata@redhat.com - 7.1.4-2 +- Rebuild for boost 1.54.0 + * Sat May 25 2013 Rex Dieter 7.1.4-2 - rebuild (libical) From abe49a955c36d5f5aca5db43c1da8cd4f7113edb Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 4 Aug 2013 04:44:18 -0500 Subject: [PATCH 47/69] - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 62b7549..fa50a82 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -21,7 +21,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.1.4 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.2 %else Release: %{actual_release}%{?dist} %endif @@ -898,6 +898,9 @@ fi %{python_sitearch}/* %changelog +* Sun Aug 04 2013 Fedora Release Engineering - 7.1.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + * Sat Jul 27 2013 pmachata@redhat.com - 7.1.4-2 - Rebuild for boost 1.54.0 From 6ac2e41dadb61cddc551bf7abcca92e6da1b734f Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Mon, 5 Aug 2013 01:54:36 +0200 Subject: [PATCH 48/69] - Upgrade to 7.1.5 (#747241, #863498, #926039, #946900) - Added configuration compatibility for Apache 2.2 and 2.4 --- sources | 2 +- zarafa-7.1.4-kyotocabinet.patch | 138 ------------- zarafa-7.1.4-libvmime092.patch | 349 ++++++++++++++++++++++++++++++++ zarafa-webaccess.conf | 15 ++ zarafa.spec | 57 ++---- 5 files changed, 386 insertions(+), 175 deletions(-) delete mode 100644 zarafa-7.1.4-kyotocabinet.patch create mode 100644 zarafa-7.1.4-libvmime092.patch diff --git a/sources b/sources index 3961adc..eaa0ff7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c1f8e8bf841a40db104e6149fb48830d zcp-7.1.4.tar.gz +38b77a85939e6f1cdc19d099d3cbb9d6 zcp-7.1.5.tar.gz diff --git a/zarafa-7.1.4-kyotocabinet.patch b/zarafa-7.1.4-kyotocabinet.patch deleted file mode 100644 index 59bac11..0000000 --- a/zarafa-7.1.4-kyotocabinet.patch +++ /dev/null @@ -1,138 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.1.4, which allows to build Zarafa even -if Kyoto Cabinet is not available. In the end it's introducing the same behaviour like CLucene has at the -moment already. If you build using './configure --with-clucene-lib-prefix=' simply no zarafa-search gets -build. But if you build using './configure --with-clucene-lib-prefix= --disable-kyotocabinet', simply no -zarafa-search will be build on Zarafa 7.1. If you don't pass both options, it's looking for CLucene and -Kyoto Cabinet like before. However, there are (experimental) architectures, where one or both is not (yet) -available and this avoids building Zarafa on these architectures and/or systems. It should not introduce -any regressions, just give some more flexibility to packagers. https://jira.zarafa.com/browse/ZCP-9862 is -providing some more information. - ---- zarafa-7.1.4/configure.ac 2013-02-28 16:12:05.000000000 +0100 -+++ zarafa-7.1.4/configure.ac.kyotocabinetc 2013-03-23 22:32:04.000000000 +0100 -@@ -411,7 +411,15 @@ - CXXFLAGS=$CXXFLAGS_system - CPPFLAGS=$CPPFLAGS_system - -+AC_ARG_ENABLE(kyotocabinet, AC_HELP_STRING([--enable-kyotocabinet], [enable building with kyotocabinet support]), [want_kyotocabinet=${enableval}], [want_kyotocabinet=yes]) -+AM_CONDITIONAL(WITH_KYOTOCABINET, test "$want_kyotocabinet" = "yes") -+if test "$want_kyotocabinet" = "yes"; then - PKG_CHECK_MODULES([KYOTOCABINET], [kyotocabinet]) -+else -+AC_MSG_CHECKING([for KYOTOCABINET]) -+AC_MSG_RESULT([$want_kyotocabinet]) -+fi -+AM_CONDITIONAL([WITH_KYOTOCABINET], [test "$want_kyotocabinet" = "yes"]) - AC_SUBST(KYOTOCABINET_CFLAGS) - AC_SUBST(KYOTOCABINET_LIBS) - ---- zarafa-7.1.4/ECtools/zarafa-search/Makefile.am 2013-02-28 16:13:19.000000000 +0100 -+++ zarafa-7.1.4/ECtools/zarafa-search/Makefile.am.kyotocabinet 2013-03-23 22:32:58.000000000 +0100 -@@ -1,7 +1,9 @@ - if WITH_CLUCENE -+if WITH_KYOTOCABINET - bin_PROGRAMS = zarafa-search - noinst_PROGRAMS = dump-index - endif -+endif - - AM_CPPFLAGS = \ - -I${top_srcdir}/mapi4linux/include \ ---- zarafa-7.1.4/configure 2013-03-23 22:39:03.000000000 +0100 -+++ zarafa-7.1.4/configure.kyotocabinet 2013-03-23 22:43:14.000000000 +0100 -@@ -797,6 +797,8 @@ - ICAL_CFLAGS - KYOTOCABINET_LIBS - KYOTOCABINET_CFLAGS -+WITH_KYOTOCABINET_FALSE -+WITH_KYOTOCABINET_TRUE - VMIME_LIBS - VMIME_CFLAGS - PKG_CONFIG_LIBDIR -@@ -999,6 +1001,7 @@ - with_mysql_config - enable_embedded_mysql - with_vmime_prefix -+enable_kyotocabinet - with_ical_prefix - with_clucene_lib_prefix - with_clucene_include_prefix -@@ -1674,6 +1677,7 @@ - --enable-swig enable regenerating swig code - --enable-python enable building python binding - --enable-embedded-mysql Compile zarafa-server with the embedded MySQL server -+ --enable-kyotocabinet enable building with kyotocabinet support - --enable-epoll enable building epoll socket handling - --enable-static-boost Prefer the static boost libraries over the shared - ones [no] -@@ -18198,6 +18202,22 @@ - CXXFLAGS=$CXXFLAGS_system - CPPFLAGS=$CPPFLAGS_system - -+# Check whether --enable-kyotocabinet was given. -+if test "${enable_kyotocabinet+set}" = set; then : -+ enableval=$enable_kyotocabinet; want_kyotocabinet=${enableval} -+else -+ want_kyotocabinet=yes -+fi -+ -+ if test "$want_kyotocabinet" = "yes"; then -+ WITH_KYOTOCABINET_TRUE= -+ WITH_KYOTOCABINET_FALSE='#' -+else -+ WITH_KYOTOCABINET_TRUE='#' -+ WITH_KYOTOCABINET_FALSE= -+fi -+ -+if test "$want_kyotocabinet" = "yes"; then - - pkg_failed=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for KYOTOCABINET" >&5 -@@ -18287,6 +18307,19 @@ - $as_echo "yes" >&6; } - - fi -+else -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for KYOTOCABINET" >&5 -+$as_echo_n "checking for KYOTOCABINET... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $want_kyotocabinet" >&5 -+$as_echo "$want_kyotocabinet" >&6; } -+fi -+ if test "$want_kyotocabinet" = "yes"; then -+ WITH_KYOTOCABINET_TRUE= -+ WITH_KYOTOCABINET_FALSE='#' -+else -+ WITH_KYOTOCABINET_TRUE='#' -+ WITH_KYOTOCABINET_FALSE= -+fi - - - -@@ -20872,6 +20905,14 @@ - as_fn_error $? "conditional \"WITH_XML2\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${WITH_KYOTOCABINET_TRUE}" && test -z "${WITH_KYOTOCABINET_FALSE}"; then -+ as_fn_error $? "conditional \"WITH_KYOTOCABINET\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${WITH_KYOTOCABINET_TRUE}" && test -z "${WITH_KYOTOCABINET_FALSE}"; then -+ as_fn_error $? "conditional \"WITH_KYOTOCABINET\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${WITH_CLUCENE_TRUE}" && test -z "${WITH_CLUCENE_FALSE}"; then - as_fn_error $? "conditional \"WITH_CLUCENE\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 ---- zarafa-7.1.4/ECtools/zarafa-search/Makefile.in 2013-02-28 16:13:47.000000000 +0100 -+++ zarafa-7.1.4/ECtools/zarafa-search/Makefile.in.kyotocabinet 2013-03-23 22:53:45.000000000 +0100 -@@ -34,8 +34,8 @@ - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ --@WITH_CLUCENE_TRUE@bin_PROGRAMS = zarafa-search$(EXEEXT) --@WITH_CLUCENE_TRUE@noinst_PROGRAMS = dump-index$(EXEEXT) -+@WITH_CLUCENE_TRUE@@WITH_KYOTOCABINET_TRUE@bin_PROGRAMS = zarafa-search$(EXEEXT) -+@WITH_CLUCENE_TRUE@@WITH_KYOTOCABINET_TRUE@noinst_PROGRAMS = dump-index$(EXEEXT) - subdir = ECtools/zarafa-search - DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 diff --git a/zarafa-7.1.4-libvmime092.patch b/zarafa-7.1.4-libvmime092.patch new file mode 100644 index 0000000..133bf36 --- /dev/null +++ b/zarafa-7.1.4-libvmime092.patch @@ -0,0 +1,349 @@ +Experimental patch provided by by Michael Kromer +for Zarafa >= 7.1.4, which adds compatibility with current GIT upstream +of libvmime. +--- + inetmapi/ECVMIMEUtils.cpp | 11 +++++++++++ + inetmapi/MAPISMTPTransport.cpp | 19 +++++++++++-------- + inetmapi/SMIMEMessage.cpp | 20 +++++++++----------- + inetmapi/SMIMEMessage.h | 2 +- + inetmapi/VMIMEToMAPI.cpp | 35 ++++++++++++++++++----------------- + inetmapi/inputStreamMAPIAdapter.h | 2 +- + inetmapi/mapiTextPart.cpp | 7 ++++--- + inetmapi/mapiTextPart.h | 2 +- + inetmapi/outputStreamMAPIAdapter.h | 2 +- + inetmapi/vmime_helper.hpp | 8 ++++++++ + 10 files changed, 65 insertions(+), 43 deletions(-) + +Index: zarafa-7.1.4/inetmapi/ECVMIMEUtils.cpp +=================================================================== +--- zarafa-7.1.4.orig/inetmapi/ECVMIMEUtils.cpp ++++ zarafa-7.1.4/inetmapi/ECVMIMEUtils.cpp +@@ -68,6 +68,9 @@ + #include + #include "ECABEntryID.h" + #include "mapi_ptr.h" ++#include ++#include ++#include "vmime_helper.hpp" + + using namespace std; + +@@ -484,3 +487,11 @@ HRESULT ECVMIMESender::sendMail(LPADRBOO + exit: + return hr; + } ++ ++std::string vmime_email_to_string(const vmime::emailAddress &e) ++{ ++ std::string s; ++ vmime::utility::outputStreamStringAdapter adapter(s); ++ e.generate(adapter); ++ return s; ++} +Index: zarafa-7.1.4/inetmapi/MAPISMTPTransport.cpp +=================================================================== +--- zarafa-7.1.4.orig/inetmapi/MAPISMTPTransport.cpp ++++ zarafa-7.1.4/inetmapi/MAPISMTPTransport.cpp +@@ -97,6 +97,9 @@ + #include "vmime/net/tls/TLSSecuredConnectionInfos.hpp" + #endif // VMIME_HAVE_TLS_SUPPORT + ++#include ++#include ++#include "vmime_helper.hpp" + + // Helpers for service properties + #define GET_PROPERTY(type, prop) \ +@@ -167,7 +170,7 @@ void MAPISMTPTransport::connect() + if (m_isSMTPS) // dedicated port/SMTPS + { + ref tlsSession = +- vmime::create (getCertificateVerifier()); ++ tls::TLSSession::create(getCertificateVerifier()); + + ref tlsSocket = + tlsSession->getSocket(m_socket); +@@ -440,10 +443,10 @@ void MAPISMTPTransport::authenticateSASL + case 334: + { + byte_t* challenge = 0; +- int challengeLen = 0; ++ long challengeLen = 0; + + byte_t* resp = 0; +- int respLen = 0; ++ long respLen = 0; + + try + { +@@ -522,7 +525,7 @@ void MAPISMTPTransport::startTLS() + throw exceptions::command_error("STARTTLS", resp->getText()); + + ref tlsSession = +- vmime::create (getCertificateVerifier()); ++ tls::TLSSession::create(getCertificateVerifier()); + + ref tlsSocket = + tlsSession->getSocket(m_socket); +@@ -642,7 +645,7 @@ void MAPISMTPTransport::send(const mailb + bDSN = false; // Disable DSN because the server does not support this. + } + +- strSend = "MAIL FROM: <" + expeditor.getEmail() + ">"; ++ strSend = "MAIL FROM: <" + vmime_email_to_string(expeditor.getEmail()) + ">"; + if (bDSN) { + strSend += " RET=HDRS"; + if (!m_strDSNTrackid.empty()) +@@ -664,7 +667,7 @@ void MAPISMTPTransport::send(const mailb + const mailbox& mbox = *recipients.getMailboxAt(i); + unsigned int code; + +- strSend = "RCPT TO: <" + mbox.getEmail() + ">"; ++ strSend = "RCPT TO: <" + vmime_email_to_string(mbox.getEmail()) + ">"; + if (bDSN) + strSend += " NOTIFY=SUCCESS,DELAY"; + +@@ -676,7 +679,7 @@ void MAPISMTPTransport::send(const mailb + { + sFailedRecip entry; + entry.strRecipName = (WCHAR*)mbox.getName().getConvertedText(charset(CHARSET_WCHAR)).c_str(); // does this work?, or convert to utf-8 then wstring? +- entry.strRecipEmail = mbox.getEmail(); ++ entry.strRecipEmail = vmime_email_to_string(mbox.getEmail()); + entry.ulSMTPcode = code; + entry.strSMTPResponse = resp->getText(); + m_lstFailedRecipients.push_back(entry); +@@ -755,7 +758,7 @@ void MAPISMTPTransport::sendRequest(cons + + ref MAPISMTPTransport::readResponse() + { +- ref resp = SMTPResponse::readResponse(m_socket, m_timeoutHandler); ++ ref resp = SMTPResponse::readResponse(m_socket, m_timeoutHandler, SMTPResponse::state()); + if (m_lpLogger && m_lpLogger->Log(EC_LOGLEVEL_DEBUG)) + m_lpLogger->Log(EC_LOGLEVEL_DEBUG, "> %d %s", resp->getCode(), resp->getText().c_str()); + return resp; +Index: zarafa-7.1.4/inetmapi/SMIMEMessage.cpp +=================================================================== +--- zarafa-7.1.4.orig/inetmapi/SMIMEMessage.cpp ++++ zarafa-7.1.4/inetmapi/SMIMEMessage.cpp +@@ -56,21 +56,19 @@ SMIMEMessage::SMIMEMessage() + { + } + +-void SMIMEMessage::generate(vmime::utility::outputStream& os, const std::string::size_type maxLineLength, const std::string::size_type curLinePos, std::string::size_type* newLinePos) const ++const std::string ++SMIMEMessage::generate(const std::string::size_type maxLineLength, ++ const std::string::size_type curLinePos) const + { +- if(!m_body.empty()) { ++ if (m_body.empty()) ++ return vmime::message::generate(maxLineLength, curLinePos); ++ + // Generate headers +- getHeader()->generate(os, maxLineLength); ++ std::string s(getHeader()->generate()); + + // Concatenate S/MIME body without CRLF since it also contains some additional headers +- os << m_body; +- +- if (newLinePos) +- *newLinePos = 0; +- } else { +- // Normal generation +- vmime::message::generate(os, maxLineLength, curLinePos, newLinePos); +- } ++ s += m_body; ++ return s; + } + + void SMIMEMessage::setSMIMEBody(std::string &body) +Index: zarafa-7.1.4/inetmapi/SMIMEMessage.h +=================================================================== +--- zarafa-7.1.4.orig/inetmapi/SMIMEMessage.h ++++ zarafa-7.1.4/inetmapi/SMIMEMessage.h +@@ -78,7 +78,7 @@ class SMIMEMessage : public vmime::messa + public: + SMIMEMessage(); + +- void generate(vmime::utility::outputStream& os, const std::string::size_type maxLineLength = vmime::options::getInstance()->message.maxLineLength(), const std::string::size_type curLinePos = 0, std::string::size_type* newLinePos = NULL) const; ++ const std::string generate(const std::string::size_type maxLineLength = vmime::generationContext::getDefaultContext().getMaxLineLength(), const std::string::size_type curLinePos = 0) const; + + void setSMIMEBody(std::string &body); + +Index: zarafa-7.1.4/inetmapi/VMIMEToMAPI.cpp +=================================================================== +--- zarafa-7.1.4.orig/inetmapi/VMIMEToMAPI.cpp ++++ zarafa-7.1.4/inetmapi/VMIMEToMAPI.cpp +@@ -71,6 +71,7 @@ + #include + #include + #include ++#include "vmime_helper.hpp" + + // mapi + #include +@@ -638,10 +639,11 @@ HRESULT VMIMEToMAPI::handleHeaders(vmime + msgProps[nProps++].Value.lpszW = (WCHAR *)wstrSubject.c_str(); + + // set ReplyTo +- if (!vmHeader->ReplyTo()->getValue().dynamicCast()->isEmpty()) { ++ vmime::ref replyto_mbox = vmHeader->ReplyTo()->getValue().dynamicCast(); ++ if (!replyto_mbox->isEmpty()) { + // First, set PR_REPLY_RECIPIENT_NAMES +- wstrReplyTo = getWideFromVmimeText(vmHeader->ReplyTo()->getValue().dynamicCast()->getName()); +- wstrReplyToMail = m_converter.convert_to(vmHeader->ReplyTo()->getValue().dynamicCast()->getEmail()); ++ wstrReplyTo = getWideFromVmimeText(replyto_mbox->getName()); ++ wstrReplyToMail = m_converter.convert_to(vmime_email_to_string(replyto_mbox->getEmail())); + if (wstrReplyTo.empty()) + wstrReplyTo = wstrReplyToMail; + +@@ -719,10 +721,10 @@ HRESULT VMIMEToMAPI::handleHeaders(vmime + msgProps[nProps++].Value.ft = vmimeDatetimeToFiletime(date); + + // The real sender of the mail +- strFromEmail = vmHeader->From()->getValue().dynamicCast()->getEmail(); +- if (!vmHeader->From()->getValue().dynamicCast()->getName().isEmpty()) { +- wstrFromName = getWideFromVmimeText(vmHeader->From()->getValue().dynamicCast()->getName()); +- } ++ vmime::ref from_mbox = vmHeader->From()->getValue().dynamicCast(); ++ strFromEmail = vmime_email_to_string(from_mbox->getEmail()); ++ if (!from_mbox->getName().isEmpty()) ++ wstrFromName = getWideFromVmimeText(from_mbox->getName()); + + hr = modifyFromAddressBook(&lpRecipProps, &ulRecipProps, strFromEmail.c_str(), wstrFromName.c_str(), MAPI_ORIG, (LPSPropTagArray)&sptaRecipPropsSentRepr); + if (hr == hrSuccess) { +@@ -764,17 +766,16 @@ HRESULT VMIMEToMAPI::handleHeaders(vmime + } + + // The original sender of the mail account (if non sender exist then the FROM) +- strSenderEmail = vmHeader->Sender()->getValue().dynamicCast()->getEmail(); +- if(vmHeader->Sender()->getValue().dynamicCast()->getName().isEmpty() && strSenderEmail.empty()) { ++ vmime::ref sender_mbox = vmHeader->Sender()->getValue().dynamicCast(); ++ strSenderEmail = vmime_email_to_string(sender_mbox->getEmail()); ++ if (sender_mbox->getName().isEmpty() && strSenderEmail.empty()) { + // Fallback on the original from address + wstrSenderName = wstrFromName; + strSenderEmail = strFromEmail; ++ } else if (!sender_mbox->getName().isEmpty()) { ++ wstrSenderName = getWideFromVmimeText(sender_mbox->getName()); + } else { +- if (!vmHeader->Sender()->getValue().dynamicCast()->getName().isEmpty()) { +- wstrSenderName = getWideFromVmimeText(vmHeader->Sender()->getValue().dynamicCast()->getName()); +- } else { +- wstrSenderName = m_converter.convert_to(strSenderEmail); +- } ++ wstrSenderName = m_converter.convert_to(strSenderEmail); + } + + hr = modifyFromAddressBook(&lpRecipProps, &ulRecipProps, strSenderEmail.c_str(), wstrSenderName.c_str(), MAPI_ORIG, (LPSPropTagArray)&sptaRecipPropsSender); +@@ -949,7 +950,7 @@ HRESULT VMIMEToMAPI::handleHeaders(vmime + if (mbReadReceipt && !mbReadReceipt->isEmpty()) + { + wstring wstrRRName = getWideFromVmimeText(mbReadReceipt->getName()); +- wstring wstrRREmail = m_converter.convert_to(mbReadReceipt->getEmail()); ++ wstring wstrRREmail = m_converter.convert_to(vmime_email_to_string(mbReadReceipt->getEmail())); + + if (wstrRRName.empty()) + wstrRRName = wstrRREmail; +@@ -1277,7 +1278,7 @@ HRESULT VMIMEToMAPI::modifyRecipientList + mbx = vmAddress.dynamicCast(); + if (!mbx) + continue; +- strEmail = mbx->getEmail(); ++ strEmail = vmime_email_to_string(mbx->getEmail()); + vmText = mbx->getName(); + } + +@@ -2880,7 +2881,7 @@ std::string VMIMEToMAPI::mailboxToEnvelo + + lMBox.push_back("NIL"); // at-domain-list (source route) ... whatever that means + +- buffer = "\"" + mbox->getEmail() + "\""; ++ buffer = "\"" + vmime_email_to_string(mbox->getEmail()) + "\""; + pos = buffer.find("@"); + if (pos != string::npos) + boost::algorithm::replace_first(buffer, "@", "\" \""); +Index: zarafa-7.1.4/inetmapi/inputStreamMAPIAdapter.h +=================================================================== +--- zarafa-7.1.4.orig/inetmapi/inputStreamMAPIAdapter.h ++++ zarafa-7.1.4/inetmapi/inputStreamMAPIAdapter.h +@@ -51,7 +51,7 @@ + #define INPUT_STREAM_MAPI_ADAPTER_H + + #include "mapidefs.h" +-#include ++#include + + class inputStreamMAPIAdapter : public vmime::utility::inputStream { + public: +Index: zarafa-7.1.4/inetmapi/mapiTextPart.cpp +=================================================================== +--- zarafa-7.1.4.orig/inetmapi/mapiTextPart.cpp ++++ zarafa-7.1.4/inetmapi/mapiTextPart.cpp +@@ -83,6 +83,7 @@ + + #include "vmime/emptyContentHandler.hpp" + #include "vmime/stringContentHandler.hpp" ++#include + + + namespace vmime +@@ -123,9 +124,9 @@ const mediaType mapiTextPart::getType() + } + + +-int mapiTextPart::getPartCount() const ++size_t mapiTextPart::getPartCount() const + { +- int count = 0; ++ size_t count = 0; + if (!m_plainText->isEmpty()) + count++; + if (!m_text->isEmpty()) +@@ -224,7 +225,7 @@ void mapiTextPart::generateIn(ref p = vmime::create("method"); +- p->parse(m_otherMethod); ++ static_cast >(p)->parse(m_otherMethod); + otherPart->getHeader()->ContentType().dynamicCast()->appendParameter(p); + } + +Index: zarafa-7.1.4/inetmapi/mapiTextPart.h +=================================================================== +--- zarafa-7.1.4.orig/inetmapi/mapiTextPart.h ++++ zarafa-7.1.4/inetmapi/mapiTextPart.h +@@ -257,7 +257,7 @@ public: + */ + const string addObject(ref data, const encoding& enc, const mediaType& type, const string& id, const string& name = string(), const string& loc = string()); + +- int getPartCount() const; ++ size_t getPartCount() const; + + void generateIn(ref message, ref parent) const; + void parse(ref message, ref parent, ref textPart); +Index: zarafa-7.1.4/inetmapi/outputStreamMAPIAdapter.h +=================================================================== +--- zarafa-7.1.4.orig/inetmapi/outputStreamMAPIAdapter.h ++++ zarafa-7.1.4/inetmapi/outputStreamMAPIAdapter.h +@@ -51,7 +51,7 @@ + #define OUTPUT_STREAM_MAPI_ADAPTER_H + + #include "mapidefs.h" +-#include ++#include + + class outputStreamMAPIAdapter : public vmime::utility::outputStream { + public: +Index: zarafa-7.1.4/inetmapi/vmime_helper.hpp +=================================================================== +--- /dev/null ++++ zarafa-7.1.4/inetmapi/vmime_helper.hpp +@@ -0,0 +1,8 @@ ++#ifndef vmime_helper_1 ++#define vmime_helper_1 ++ ++#include ++ ++extern std::string vmime_email_to_string(const vmime::emailAddress &); ++ ++#endif /* vmime_helper_1 */ diff --git a/zarafa-webaccess.conf b/zarafa-webaccess.conf index 7e6a7f6..5c87ea0 100644 --- a/zarafa-webaccess.conf +++ b/zarafa-webaccess.conf @@ -8,8 +8,18 @@ Alias /webaccess /usr/share/zarafa-webaccess/ # # Some apache settings + DirectoryIndex index.php Options -Indexes +FollowSymLinks + + # Apache 2.4 + Require all granted + + + Order allow,deny + Allow from all + + # Register globals must be off php_flag register_globals off @@ -25,6 +35,11 @@ Alias /webaccess /usr/share/zarafa-webaccess/ # Short open tags must be on php_flag short_open_tag on + # Uncomment to enhance security of WebAccess by restricting cookies + # to only be provided over HTTPS connections +# php_flag session.cookie_secure on +# php_flag session.cookie_httponly on + # Uncomment for debugging purposes only. Make sure Apache/PHP can # write to this file or no errors will be logged! # php_flag log_errors on diff --git a/zarafa.spec b/zarafa.spec index fa50a82..1f4c063 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 41394 +%global actual_release 1 +%global svnrevision 42059 %global with_search 1 %global with_ldap 1 %global with_xmlto 1 @@ -10,18 +10,18 @@ # Private libraries are not be exposed globally by RPM # RPM 4.8 -%{?filter_provides_in: %filter_provides_in %{_libdir}/%{name}/modules/.*\.so$} +%{?filter_provides_in: %filter_provides_in %{_libdir}/%{name}/.*\.so$} %{?filter_provides_in: %filter_provides_in %{_libdir}/php/modules/.*\.so$} %{?filter_setup} # RPM 4.9 -%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{_libdir}/%{name}/modules/.*\\.so$ +%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{_libdir}/%{name}/.*\\.so$ %global __provides_exclude_from %{__provides_exclude_from}|%{_libdir}/php/modules/.*\\.so$ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.1.4 +Version: 7.1.5 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.2 +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else Release: %{actual_release}%{?dist} %endif @@ -44,8 +44,8 @@ Source3: %{name}-webaccess.conf Patch0: zarafa-7.0.9-rpath.patch Patch1: zarafa-7.0.8-va_list.patch -Patch2: zarafa-7.1.4-kyotocabinet.patch -Patch3: zarafa-7.1.4-swig20.patch +Patch2: zarafa-7.1.4-swig20.patch +Patch3: zarafa-7.1.4-libvmime092.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -320,7 +320,6 @@ Group: System Environment/Libraries Requires: zarafa-client%{?_isa} = %{version}-%{release} Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig -Obsoletes: perl-MAPI < 6.40.5-1, perl-libmapi < 6.40.0-1 %description -n libmapi The libmapi package provides the Open Source MAPI (Messaging Application @@ -331,19 +330,6 @@ creation and management of messages, management of the client mailbox, service providers, etc. This MAPI implementation by Zarafa is also known as MAPI4Linux. -%if 0 -%package -n perl-MAPI -Summary: The Perl MAPI extension by Zarafa -Group: Development/Libraries -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) -Provides: perl-libmapi = %{version}-%{release} -Obsoletes: perl-libmapi < 6.40.0-1 - -%description -n perl-MAPI -The perl-MAPI package contains the Perl MAPI extension to provide access -to Microsoft MAPI functions while using Perl. -%endif - %package -n php-mapi Summary: The PHP MAPI extension by Zarafa Group: Development/Languages @@ -378,11 +364,8 @@ to interact with Zarafa. %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 %patch1 -p1 -b .va_list -%if !%{with_search} -%patch2 -p1 -b .kyotocabinet -touch -c -r configure.ac.kyotocabinet configure.ac -%endif -%patch3 -p1 -b .swig20 +%patch2 -p1 -b .swig20 +%patch3 -p1 -b .libvmime092 %build %if 0%{?rhel}%{?fedora} < 6 @@ -473,7 +456,7 @@ done # Create the data directory and install some files into mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/ -install -p -m 644 installer/linux/db-{calc-storesize,convert-attachments-to-files} $RPM_BUILD_ROOT%{_datadir}/%{name}/ +install -p -m 644 installer/linux/db-{calc-storesize,*attachments*} $RPM_BUILD_ROOT%{_datadir}/%{name}/ install -p -m 644 installer/linux/{ssl-certificates.sh,audit-parse.pl,zarafa7-upgrade} $RPM_BUILD_ROOT%{_datadir}/%{name}/ %if %{with_ldap} install -p -m 644 installer/linux/{db-upgrade-objectsid-to-objectguid,ldap-switch-sendas}.pl $RPM_BUILD_ROOT%{_datadir}/%{name}/ @@ -491,7 +474,7 @@ install -p -m 644 tools/python-scripts/optimize-imap.py $RPM_BUILD_ROOT%{_datadi mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/{lib/%{name}/{dagent,spooler}/plugins,log/%{name}}/ # Remove all libtool .la files to avoid packaging of them -rm -f $RPM_BUILD_ROOT{%{_libdir}/{,php/modules,php4,%{name}},%{perl_vendorarch}/auto/MAPI,%{python_sitearch}}/*.la +rm -f $RPM_BUILD_ROOT{%{_libdir}/{,php/modules,%{name}},%{python_sitearch}}/*.la # Remove files that are anyway in %doc or %{_datadir}/%{name}/ rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}{,-gateway}/ @@ -586,6 +569,8 @@ chown %{name}:%{name} %{_localstatedir}/log/%{name}/audit.* > /dev/null 2>&1 || # Ensure correct log file ownership after upgrade from official packages chown %{name}:%{name} %{_localstatedir}/log/%{name}/spooler.* > /dev/null 2>&1 || : +%post client -p /sbin/ldconfig + %post -n libmapi -p /sbin/ldconfig %preun dagent @@ -669,6 +654,8 @@ if [ $1 -ne 0 ]; then /sbin/service %{name}-spooler condrestart > /dev/null 2>&1 || : fi +%postun client -p /sbin/ldconfig + %postun -n libmapi -p /sbin/ldconfig %files @@ -852,6 +839,7 @@ fi %{_datadir}/%{name}/audit-parse.pl %{_datadir}/%{name}/db-calc-storesize %{_datadir}/%{name}/db-convert-attachments-to-files +%{_datadir}/%{name}/db-remove-orphaned-attachments %{_datadir}/%{name}/ssl-certificates.sh %{_datadir}/%{name}/zarafa7-upgrade %{_mandir}/man1/%{name}-admin.1* @@ -880,13 +868,6 @@ fi %{_libdir}/libinetmapi.so.* %{_libdir}/libmapi.so.* -%if 0 -%files -n perl-MAPI -%defattr(-,root,root,-) -%{perl_vendorarch}/MAPI.pm -%{perl_vendorarch}/auto/MAPI/ -%endif - %files -n php-mapi %defattr(-,root,root,-) %config(noreplace) %{_sysconfdir}/php.d/%{name}.ini @@ -898,6 +879,10 @@ fi %{python_sitearch}/* %changelog +* Mon Aug 05 2013 Robert Scheck 7.1.5-1 +- Upgrade to 7.1.5 (#747241, #863498, #926039, #946900) +- Added configuration compatibility for Apache 2.2 and 2.4 + * Sun Aug 04 2013 Fedora Release Engineering - 7.1.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild From 310ac542a5c8e9b18be79fc73d34446a15cf0089 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 8 Dec 2013 17:34:22 +0100 Subject: [PATCH 49/69] - Upgrade to 7.1.7 (#1008068) - Added dependency from gateway and spooler to python-MAPI - Added requirements to virtual libvmime ABI/API provides --- sources | 2 +- zarafa-7.1.4-libvmime092.patch | 349 --------------------------------- zarafa-webaccess.conf | 1 + zarafa.spec | 26 ++- 4 files changed, 18 insertions(+), 360 deletions(-) delete mode 100644 zarafa-7.1.4-libvmime092.patch diff --git a/sources b/sources index eaa0ff7..002cfd7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -38b77a85939e6f1cdc19d099d3cbb9d6 zcp-7.1.5.tar.gz +7a47d6cfd35c6d2963a10b1920f08577 zcp-7.1.7.tar.gz diff --git a/zarafa-7.1.4-libvmime092.patch b/zarafa-7.1.4-libvmime092.patch deleted file mode 100644 index 133bf36..0000000 --- a/zarafa-7.1.4-libvmime092.patch +++ /dev/null @@ -1,349 +0,0 @@ -Experimental patch provided by by Michael Kromer -for Zarafa >= 7.1.4, which adds compatibility with current GIT upstream -of libvmime. ---- - inetmapi/ECVMIMEUtils.cpp | 11 +++++++++++ - inetmapi/MAPISMTPTransport.cpp | 19 +++++++++++-------- - inetmapi/SMIMEMessage.cpp | 20 +++++++++----------- - inetmapi/SMIMEMessage.h | 2 +- - inetmapi/VMIMEToMAPI.cpp | 35 ++++++++++++++++++----------------- - inetmapi/inputStreamMAPIAdapter.h | 2 +- - inetmapi/mapiTextPart.cpp | 7 ++++--- - inetmapi/mapiTextPart.h | 2 +- - inetmapi/outputStreamMAPIAdapter.h | 2 +- - inetmapi/vmime_helper.hpp | 8 ++++++++ - 10 files changed, 65 insertions(+), 43 deletions(-) - -Index: zarafa-7.1.4/inetmapi/ECVMIMEUtils.cpp -=================================================================== ---- zarafa-7.1.4.orig/inetmapi/ECVMIMEUtils.cpp -+++ zarafa-7.1.4/inetmapi/ECVMIMEUtils.cpp -@@ -68,6 +68,9 @@ - #include - #include "ECABEntryID.h" - #include "mapi_ptr.h" -+#include -+#include -+#include "vmime_helper.hpp" - - using namespace std; - -@@ -484,3 +487,11 @@ HRESULT ECVMIMESender::sendMail(LPADRBOO - exit: - return hr; - } -+ -+std::string vmime_email_to_string(const vmime::emailAddress &e) -+{ -+ std::string s; -+ vmime::utility::outputStreamStringAdapter adapter(s); -+ e.generate(adapter); -+ return s; -+} -Index: zarafa-7.1.4/inetmapi/MAPISMTPTransport.cpp -=================================================================== ---- zarafa-7.1.4.orig/inetmapi/MAPISMTPTransport.cpp -+++ zarafa-7.1.4/inetmapi/MAPISMTPTransport.cpp -@@ -97,6 +97,9 @@ - #include "vmime/net/tls/TLSSecuredConnectionInfos.hpp" - #endif // VMIME_HAVE_TLS_SUPPORT - -+#include -+#include -+#include "vmime_helper.hpp" - - // Helpers for service properties - #define GET_PROPERTY(type, prop) \ -@@ -167,7 +170,7 @@ void MAPISMTPTransport::connect() - if (m_isSMTPS) // dedicated port/SMTPS - { - ref tlsSession = -- vmime::create (getCertificateVerifier()); -+ tls::TLSSession::create(getCertificateVerifier()); - - ref tlsSocket = - tlsSession->getSocket(m_socket); -@@ -440,10 +443,10 @@ void MAPISMTPTransport::authenticateSASL - case 334: - { - byte_t* challenge = 0; -- int challengeLen = 0; -+ long challengeLen = 0; - - byte_t* resp = 0; -- int respLen = 0; -+ long respLen = 0; - - try - { -@@ -522,7 +525,7 @@ void MAPISMTPTransport::startTLS() - throw exceptions::command_error("STARTTLS", resp->getText()); - - ref tlsSession = -- vmime::create (getCertificateVerifier()); -+ tls::TLSSession::create(getCertificateVerifier()); - - ref tlsSocket = - tlsSession->getSocket(m_socket); -@@ -642,7 +645,7 @@ void MAPISMTPTransport::send(const mailb - bDSN = false; // Disable DSN because the server does not support this. - } - -- strSend = "MAIL FROM: <" + expeditor.getEmail() + ">"; -+ strSend = "MAIL FROM: <" + vmime_email_to_string(expeditor.getEmail()) + ">"; - if (bDSN) { - strSend += " RET=HDRS"; - if (!m_strDSNTrackid.empty()) -@@ -664,7 +667,7 @@ void MAPISMTPTransport::send(const mailb - const mailbox& mbox = *recipients.getMailboxAt(i); - unsigned int code; - -- strSend = "RCPT TO: <" + mbox.getEmail() + ">"; -+ strSend = "RCPT TO: <" + vmime_email_to_string(mbox.getEmail()) + ">"; - if (bDSN) - strSend += " NOTIFY=SUCCESS,DELAY"; - -@@ -676,7 +679,7 @@ void MAPISMTPTransport::send(const mailb - { - sFailedRecip entry; - entry.strRecipName = (WCHAR*)mbox.getName().getConvertedText(charset(CHARSET_WCHAR)).c_str(); // does this work?, or convert to utf-8 then wstring? -- entry.strRecipEmail = mbox.getEmail(); -+ entry.strRecipEmail = vmime_email_to_string(mbox.getEmail()); - entry.ulSMTPcode = code; - entry.strSMTPResponse = resp->getText(); - m_lstFailedRecipients.push_back(entry); -@@ -755,7 +758,7 @@ void MAPISMTPTransport::sendRequest(cons - - ref MAPISMTPTransport::readResponse() - { -- ref resp = SMTPResponse::readResponse(m_socket, m_timeoutHandler); -+ ref resp = SMTPResponse::readResponse(m_socket, m_timeoutHandler, SMTPResponse::state()); - if (m_lpLogger && m_lpLogger->Log(EC_LOGLEVEL_DEBUG)) - m_lpLogger->Log(EC_LOGLEVEL_DEBUG, "> %d %s", resp->getCode(), resp->getText().c_str()); - return resp; -Index: zarafa-7.1.4/inetmapi/SMIMEMessage.cpp -=================================================================== ---- zarafa-7.1.4.orig/inetmapi/SMIMEMessage.cpp -+++ zarafa-7.1.4/inetmapi/SMIMEMessage.cpp -@@ -56,21 +56,19 @@ SMIMEMessage::SMIMEMessage() - { - } - --void SMIMEMessage::generate(vmime::utility::outputStream& os, const std::string::size_type maxLineLength, const std::string::size_type curLinePos, std::string::size_type* newLinePos) const -+const std::string -+SMIMEMessage::generate(const std::string::size_type maxLineLength, -+ const std::string::size_type curLinePos) const - { -- if(!m_body.empty()) { -+ if (m_body.empty()) -+ return vmime::message::generate(maxLineLength, curLinePos); -+ - // Generate headers -- getHeader()->generate(os, maxLineLength); -+ std::string s(getHeader()->generate()); - - // Concatenate S/MIME body without CRLF since it also contains some additional headers -- os << m_body; -- -- if (newLinePos) -- *newLinePos = 0; -- } else { -- // Normal generation -- vmime::message::generate(os, maxLineLength, curLinePos, newLinePos); -- } -+ s += m_body; -+ return s; - } - - void SMIMEMessage::setSMIMEBody(std::string &body) -Index: zarafa-7.1.4/inetmapi/SMIMEMessage.h -=================================================================== ---- zarafa-7.1.4.orig/inetmapi/SMIMEMessage.h -+++ zarafa-7.1.4/inetmapi/SMIMEMessage.h -@@ -78,7 +78,7 @@ class SMIMEMessage : public vmime::messa - public: - SMIMEMessage(); - -- void generate(vmime::utility::outputStream& os, const std::string::size_type maxLineLength = vmime::options::getInstance()->message.maxLineLength(), const std::string::size_type curLinePos = 0, std::string::size_type* newLinePos = NULL) const; -+ const std::string generate(const std::string::size_type maxLineLength = vmime::generationContext::getDefaultContext().getMaxLineLength(), const std::string::size_type curLinePos = 0) const; - - void setSMIMEBody(std::string &body); - -Index: zarafa-7.1.4/inetmapi/VMIMEToMAPI.cpp -=================================================================== ---- zarafa-7.1.4.orig/inetmapi/VMIMEToMAPI.cpp -+++ zarafa-7.1.4/inetmapi/VMIMEToMAPI.cpp -@@ -71,6 +71,7 @@ - #include - #include - #include -+#include "vmime_helper.hpp" - - // mapi - #include -@@ -638,10 +639,11 @@ HRESULT VMIMEToMAPI::handleHeaders(vmime - msgProps[nProps++].Value.lpszW = (WCHAR *)wstrSubject.c_str(); - - // set ReplyTo -- if (!vmHeader->ReplyTo()->getValue().dynamicCast()->isEmpty()) { -+ vmime::ref replyto_mbox = vmHeader->ReplyTo()->getValue().dynamicCast(); -+ if (!replyto_mbox->isEmpty()) { - // First, set PR_REPLY_RECIPIENT_NAMES -- wstrReplyTo = getWideFromVmimeText(vmHeader->ReplyTo()->getValue().dynamicCast()->getName()); -- wstrReplyToMail = m_converter.convert_to(vmHeader->ReplyTo()->getValue().dynamicCast()->getEmail()); -+ wstrReplyTo = getWideFromVmimeText(replyto_mbox->getName()); -+ wstrReplyToMail = m_converter.convert_to(vmime_email_to_string(replyto_mbox->getEmail())); - if (wstrReplyTo.empty()) - wstrReplyTo = wstrReplyToMail; - -@@ -719,10 +721,10 @@ HRESULT VMIMEToMAPI::handleHeaders(vmime - msgProps[nProps++].Value.ft = vmimeDatetimeToFiletime(date); - - // The real sender of the mail -- strFromEmail = vmHeader->From()->getValue().dynamicCast()->getEmail(); -- if (!vmHeader->From()->getValue().dynamicCast()->getName().isEmpty()) { -- wstrFromName = getWideFromVmimeText(vmHeader->From()->getValue().dynamicCast()->getName()); -- } -+ vmime::ref from_mbox = vmHeader->From()->getValue().dynamicCast(); -+ strFromEmail = vmime_email_to_string(from_mbox->getEmail()); -+ if (!from_mbox->getName().isEmpty()) -+ wstrFromName = getWideFromVmimeText(from_mbox->getName()); - - hr = modifyFromAddressBook(&lpRecipProps, &ulRecipProps, strFromEmail.c_str(), wstrFromName.c_str(), MAPI_ORIG, (LPSPropTagArray)&sptaRecipPropsSentRepr); - if (hr == hrSuccess) { -@@ -764,17 +766,16 @@ HRESULT VMIMEToMAPI::handleHeaders(vmime - } - - // The original sender of the mail account (if non sender exist then the FROM) -- strSenderEmail = vmHeader->Sender()->getValue().dynamicCast()->getEmail(); -- if(vmHeader->Sender()->getValue().dynamicCast()->getName().isEmpty() && strSenderEmail.empty()) { -+ vmime::ref sender_mbox = vmHeader->Sender()->getValue().dynamicCast(); -+ strSenderEmail = vmime_email_to_string(sender_mbox->getEmail()); -+ if (sender_mbox->getName().isEmpty() && strSenderEmail.empty()) { - // Fallback on the original from address - wstrSenderName = wstrFromName; - strSenderEmail = strFromEmail; -+ } else if (!sender_mbox->getName().isEmpty()) { -+ wstrSenderName = getWideFromVmimeText(sender_mbox->getName()); - } else { -- if (!vmHeader->Sender()->getValue().dynamicCast()->getName().isEmpty()) { -- wstrSenderName = getWideFromVmimeText(vmHeader->Sender()->getValue().dynamicCast()->getName()); -- } else { -- wstrSenderName = m_converter.convert_to(strSenderEmail); -- } -+ wstrSenderName = m_converter.convert_to(strSenderEmail); - } - - hr = modifyFromAddressBook(&lpRecipProps, &ulRecipProps, strSenderEmail.c_str(), wstrSenderName.c_str(), MAPI_ORIG, (LPSPropTagArray)&sptaRecipPropsSender); -@@ -949,7 +950,7 @@ HRESULT VMIMEToMAPI::handleHeaders(vmime - if (mbReadReceipt && !mbReadReceipt->isEmpty()) - { - wstring wstrRRName = getWideFromVmimeText(mbReadReceipt->getName()); -- wstring wstrRREmail = m_converter.convert_to(mbReadReceipt->getEmail()); -+ wstring wstrRREmail = m_converter.convert_to(vmime_email_to_string(mbReadReceipt->getEmail())); - - if (wstrRRName.empty()) - wstrRRName = wstrRREmail; -@@ -1277,7 +1278,7 @@ HRESULT VMIMEToMAPI::modifyRecipientList - mbx = vmAddress.dynamicCast(); - if (!mbx) - continue; -- strEmail = mbx->getEmail(); -+ strEmail = vmime_email_to_string(mbx->getEmail()); - vmText = mbx->getName(); - } - -@@ -2880,7 +2881,7 @@ std::string VMIMEToMAPI::mailboxToEnvelo - - lMBox.push_back("NIL"); // at-domain-list (source route) ... whatever that means - -- buffer = "\"" + mbox->getEmail() + "\""; -+ buffer = "\"" + vmime_email_to_string(mbox->getEmail()) + "\""; - pos = buffer.find("@"); - if (pos != string::npos) - boost::algorithm::replace_first(buffer, "@", "\" \""); -Index: zarafa-7.1.4/inetmapi/inputStreamMAPIAdapter.h -=================================================================== ---- zarafa-7.1.4.orig/inetmapi/inputStreamMAPIAdapter.h -+++ zarafa-7.1.4/inetmapi/inputStreamMAPIAdapter.h -@@ -51,7 +51,7 @@ - #define INPUT_STREAM_MAPI_ADAPTER_H - - #include "mapidefs.h" --#include -+#include - - class inputStreamMAPIAdapter : public vmime::utility::inputStream { - public: -Index: zarafa-7.1.4/inetmapi/mapiTextPart.cpp -=================================================================== ---- zarafa-7.1.4.orig/inetmapi/mapiTextPart.cpp -+++ zarafa-7.1.4/inetmapi/mapiTextPart.cpp -@@ -83,6 +83,7 @@ - - #include "vmime/emptyContentHandler.hpp" - #include "vmime/stringContentHandler.hpp" -+#include - - - namespace vmime -@@ -123,9 +124,9 @@ const mediaType mapiTextPart::getType() - } - - --int mapiTextPart::getPartCount() const -+size_t mapiTextPart::getPartCount() const - { -- int count = 0; -+ size_t count = 0; - if (!m_plainText->isEmpty()) - count++; - if (!m_text->isEmpty()) -@@ -224,7 +225,7 @@ void mapiTextPart::generateIn(ref p = vmime::create("method"); -- p->parse(m_otherMethod); -+ static_cast >(p)->parse(m_otherMethod); - otherPart->getHeader()->ContentType().dynamicCast()->appendParameter(p); - } - -Index: zarafa-7.1.4/inetmapi/mapiTextPart.h -=================================================================== ---- zarafa-7.1.4.orig/inetmapi/mapiTextPart.h -+++ zarafa-7.1.4/inetmapi/mapiTextPart.h -@@ -257,7 +257,7 @@ public: - */ - const string addObject(ref data, const encoding& enc, const mediaType& type, const string& id, const string& name = string(), const string& loc = string()); - -- int getPartCount() const; -+ size_t getPartCount() const; - - void generateIn(ref message, ref parent) const; - void parse(ref message, ref parent, ref textPart); -Index: zarafa-7.1.4/inetmapi/outputStreamMAPIAdapter.h -=================================================================== ---- zarafa-7.1.4.orig/inetmapi/outputStreamMAPIAdapter.h -+++ zarafa-7.1.4/inetmapi/outputStreamMAPIAdapter.h -@@ -51,7 +51,7 @@ - #define OUTPUT_STREAM_MAPI_ADAPTER_H - - #include "mapidefs.h" --#include -+#include - - class outputStreamMAPIAdapter : public vmime::utility::outputStream { - public: -Index: zarafa-7.1.4/inetmapi/vmime_helper.hpp -=================================================================== ---- /dev/null -+++ zarafa-7.1.4/inetmapi/vmime_helper.hpp -@@ -0,0 +1,8 @@ -+#ifndef vmime_helper_1 -+#define vmime_helper_1 -+ -+#include -+ -+extern std::string vmime_email_to_string(const vmime::emailAddress &); -+ -+#endif /* vmime_helper_1 */ diff --git a/zarafa-webaccess.conf b/zarafa-webaccess.conf index 5c87ea0..e2b702a 100644 --- a/zarafa-webaccess.conf +++ b/zarafa-webaccess.conf @@ -16,6 +16,7 @@ Alias /webaccess /usr/share/zarafa-webaccess/ Require all granted + # Apache 2.2 Order allow,deny Allow from all diff --git a/zarafa.spec b/zarafa.spec index 1f4c063..964dfc5 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 %global actual_release 1 -%global svnrevision 42059 +%global svnrevision 42779 %global with_search 1 %global with_ldap 1 %global with_xmlto 1 @@ -19,7 +19,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.1.5 +Version: 7.1.7 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -45,7 +45,6 @@ Source3: %{name}-webaccess.conf Patch0: zarafa-7.0.9-rpath.patch Patch1: zarafa-7.0.8-va_list.patch Patch2: zarafa-7.1.4-swig20.patch -Patch3: zarafa-7.1.4-libvmime092.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -53,7 +52,7 @@ BuildRequires: byacc BuildRequires: flex BuildRequires: gettext BuildRequires: libical-devel >= 0.42 -BuildRequires: libvmime-devel >= 0.9.0 +BuildRequires: libvmime-devel >= 0.9.0, libvmime(api) <= 20120406 BuildRequires: libxml2-devel BuildRequires: mysql-devel >= 4.1 BuildRequires: ncurses-devel @@ -68,9 +67,6 @@ BuildRequires: boost-devel >= 1.35.0 BuildRequires: boost141-devel %endif BuildRequires: swig -%if 0 -BuildRequires: %{_bindir}/xsubpp -%endif BuildRequires: python-devel >= 2.4 %if %{with_search} @@ -192,6 +188,7 @@ objects, provides a MAPI client library and a C++ programming interface. Summary: POP3/IMAP Gateway for the Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release} +Requires: python-MAPI%{?_isa} = %{version}-%{release} Requires(post): /sbin/chkconfig Requires(preun): /sbin/service, /sbin/chkconfig Requires(postun): /sbin/service @@ -273,6 +270,7 @@ or can be setup with a separate list of users. Summary: Mail Spooler for the Zarafa Collaboration Platform Group: System Environment/Daemons Requires: zarafa-common = %{version}-%{release} +Requires: python-MAPI%{?_isa} = %{version}-%{release} Requires(post): /sbin/chkconfig Requires(preun): /sbin/service, /sbin/chkconfig Requires(postun): /sbin/service @@ -318,6 +316,7 @@ technology to give a more interactive feeling to the users. Summary: MAPI implementation and library by Zarafa Group: System Environment/Libraries Requires: zarafa-client%{?_isa} = %{version}-%{release} +Requires: libvmime(abi) <= 20120406 Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig @@ -365,7 +364,6 @@ to interact with Zarafa. touch -c -r aclocal.m4.rpath aclocal.m4 %patch1 -p1 -b .va_list %patch2 -p1 -b .swig20 -%patch3 -p1 -b .libvmime092 %build %if 0%{?rhel}%{?fedora} < 6 @@ -414,7 +412,7 @@ make \ # Nuke all overlefts from licensed, managed or other proprietary items rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/{%{name}/{license,licensed.cfg,report-ca},cron.daily/%{name}-client-update} -rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,msr-verify,ldapms.cfg,licensed{,.cfg}},za-{acl{set,sync},restore}}.* +rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,msr-verify,ldapms.cfg,{licensed,ws}{,.cfg}},za-{acl{set,sync},restore}}.* # Move all the initscripts to their appropriate place and # ensure that all services are off by default at boot time @@ -517,6 +515,9 @@ mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/client/widgets/swfupload/ %endif +# Remove files only required by proprietary web services +rm -rf $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/ws.cfg,%{_datadir}/zarafa/timezones} + %find_lang %{name} %clean @@ -879,6 +880,11 @@ fi %{python_sitearch}/* %changelog +* Sun Dec 08 2013 Robert Scheck 7.1.7-1 +- Upgrade to 7.1.7 (#1008068) +- Added dependency from gateway and spooler to python-MAPI +- Added requirements to virtual libvmime ABI/API provides + * Mon Aug 05 2013 Robert Scheck 7.1.5-1 - Upgrade to 7.1.5 (#747241, #863498, #926039, #946900) - Added configuration compatibility for Apache 2.2 and 2.4 @@ -886,7 +892,7 @@ fi * Sun Aug 04 2013 Fedora Release Engineering - 7.1.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild -* Sat Jul 27 2013 pmachata@redhat.com - 7.1.4-2 +* Sat Jul 27 2013 Petr Machata - 7.1.4-2 - Rebuild for boost 1.54.0 * Sat May 25 2013 Rex Dieter 7.1.4-2 From 839a8c8eb65c62271e360b7b1a041e5f2faeab54 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 12 Jan 2014 21:08:55 +0100 Subject: [PATCH 50/69] RHEL 7 ships a newer clucene that Zarafa does not (yet?) support, use compatibility package --- zarafa.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 964dfc5..8954400 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -71,7 +71,7 @@ BuildRequires: python-devel >= 2.4 %if %{with_search} BuildRequires: kyotocabinet-devel -%if 0%{?fedora} > 15 +%if 0%{?fedora} > 15 || 0%{?rhel} > 6 BuildRequires: clucene09-core-devel >= 0.9.21b-1 %else BuildRequires: clucene-core-devel >= 0.9.21b-1 From 83053f8fb13d6308ed20b7b95248afc1dba2b307 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Thu, 30 Jan 2014 23:42:43 +0100 Subject: [PATCH 51/69] Upgrade to 7.1.8 (#1056767, #1059903) --- sources | 2 +- zarafa-7.0.8-va_list.patch | 44 -------------------------------------- zarafa-7.1.4-swig20.patch | 22 ------------------- zarafa-7.1.8-nullptr.patch | 20 +++++++++++++++++ zarafa.spec | 21 ++++++++++++------ 5 files changed, 35 insertions(+), 74 deletions(-) delete mode 100644 zarafa-7.0.8-va_list.patch delete mode 100644 zarafa-7.1.4-swig20.patch create mode 100644 zarafa-7.1.8-nullptr.patch diff --git a/sources b/sources index 002cfd7..510a402 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -7a47d6cfd35c6d2963a10b1920f08577 zcp-7.1.7.tar.gz +277506397e3240d06203b94a948bd824 zcp-7.1.8.tar.gz diff --git a/zarafa-7.0.8-va_list.patch b/zarafa-7.0.8-va_list.patch deleted file mode 100644 index 1e7430f..0000000 --- a/zarafa-7.0.8-va_list.patch +++ /dev/null @@ -1,44 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.0.8, which works -around the insane written C/C++ code. I am not a C/C++ developer, but you only can -use four macros for handling va_list at all: va_start, va_arg, va_copy and va_end. - -As a developer you should not assume that va_list is always internally typed as an -integer because it is case on i?86 and x86_64 for example. Architectures like ARM -handle va_list not as an integer and thus fail during compiling like this: - -Trace.cpp:129:16: error: invalid operands of types 'va_list {aka __va_list}' and - 'int' to binary 'operator!=' -Trace.cpp:142:16: error: invalid operands of types 'va_list {aka __va_list}' and - 'int' to binary 'operator!=' - -As it is unfortunately not safe to assume that format does not contain attributes -while va is empty this workaround is only applied on the affected ARM architecture -for now. The only real solution is a clean rewrite of the code that should happen -upstream. - ---- zarafa-7.0.8/common/Trace.cpp 2012-06-18 18:55:29.000000000 +0200 -+++ zarafa-7.0.8/common/Trace.cpp.va_list 2012-06-20 01:20:06.000000000 +0200 -@@ -126,7 +126,11 @@ - - len = pos + 3; - -+#if defined __ARM_EABI__ -+ if (format) { -+#else - if (format && va) { -+#endif - va_copy(va_lentest, va); - len += _vsnprintf(NULL, 0, format, va_lentest); - va_end(va_lentest); -@@ -139,7 +143,11 @@ - - memcpy(buffer, debug, pos); - -+#if defined __ARM_EABI__ -+ if (format) -+#else - if (format && va) -+#endif - pos = _vsnprintf(buffer+pos, len-pos, format, va); - - if(pos == -1) { diff --git a/zarafa-7.1.4-swig20.patch b/zarafa-7.1.4-swig20.patch deleted file mode 100644 index 4f8802c..0000000 --- a/zarafa-7.1.4-swig20.patch +++ /dev/null @@ -1,22 +0,0 @@ -Patch by Sander Hoentjen for zarafa >= 7.1.4, which ensures -building with swig 2.0.x by using PyInt_FromLong instead of SWIG_From_long. - ---- zarafa-7.1.4/swig/icalmapi.i 2013-02-28 16:13:24.000000000 +0100 -+++ zarafa-7.1.4/swig/icalmapi.i.swig20 2013-03-23 23:22:08.000000000 +0100 -@@ -24,14 +24,14 @@ - $1 = &temp; - } - %typemap(argout) (eIcalType* ) { -- %append_output(SWIG_From_long(*$1)); -+ %append_output(PyInt_FromLong(*$1)); - } - - %typemap(in,numinputs=0) (time_t *) (time_t temp) { - $1 = &temp; - } - %typemap(argout) (time_t* ) { -- %append_output(SWIG_From_long(*$1)); -+ %append_output(PyInt_FromLong(*$1)); - } - - %typemap(in,numinputs=0) (SBinary *) (SBinary temp) { diff --git a/zarafa-7.1.8-nullptr.patch b/zarafa-7.1.8-nullptr.patch new file mode 100644 index 0000000..ffb2cb6 --- /dev/null +++ b/zarafa-7.1.8-nullptr.patch @@ -0,0 +1,20 @@ +Patch by Robert Scheck for Zarafa <= 7.1.8 which adds a check +to avoid a NULL pointer segfault. At least a Fedora build with this patch can no longer be +crashed. See https://bugzilla.redhat.com/show_bug.cgi?id=1059903 for further information. +Please do not confuse https://bugzilla.redhat.com/show_bug.cgi?id=1056767 with this patch. + +--- zarafa-7.1.8/provider/libserver/ECSession.cpp 2014-01-21 15:38:53.000000000 +0100 ++++ zarafa-7.1.8/provider/libserver/ECSession.cpp.rsc 2014-01-29 01:26:49.000000000 +0100 +@@ -865,10 +865,10 @@ + { + ECRESULT er = erSuccess; + +- if (!lpszName) ++ if (!lpszName || !lpszPassword) + { + // Commandment 2: Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end. +- m_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_FATAL, "Invalid argument lpszName in call to ECAuthSession::ValidateUserLogon()"); ++ m_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_FATAL, "Invalid argument %s in call to ECAuthSession::ValidateUserLogon()", (!lpszName) ? "lpszName" : "lpszPassword"); + er = ZARAFA_E_INVALID_PARAMETER; + goto exit; + } diff --git a/zarafa.spec b/zarafa.spec index 964dfc5..cce0e6f 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 %global actual_release 1 -%global svnrevision 42779 +%global svnrevision 43801 %global with_search 1 %global with_ldap 1 %global with_xmlto 1 @@ -19,7 +19,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.1.7 +Version: 7.1.8 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -43,8 +43,7 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-7.0.9-rpath.patch -Patch1: zarafa-7.0.8-va_list.patch -Patch2: zarafa-7.1.4-swig20.patch +Patch1: zarafa-7.1.8-nullptr.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -71,7 +70,7 @@ BuildRequires: python-devel >= 2.4 %if %{with_search} BuildRequires: kyotocabinet-devel -%if 0%{?fedora} > 15 +%if 0%{?fedora} > 15 || 0%{?rhel} > 6 BuildRequires: clucene09-core-devel >= 0.9.21b-1 %else BuildRequires: clucene-core-devel >= 0.9.21b-1 @@ -362,8 +361,7 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 -%patch1 -p1 -b .va_list -%patch2 -p1 -b .swig20 +%patch1 -p1 -b .nullptr %build %if 0%{?rhel}%{?fedora} < 6 @@ -714,6 +712,8 @@ fi %{_libdir}/libicalmapi.so %{_libdir}/libinetmapi.so %{_libdir}/libmapi.so +%{_libdir}/libmapicalendar.so +%{_libdir}/libmapitimezone.so %{_libdir}/libcommon_mapi.a %{_libdir}/libcommon_service.a %{_libdir}/libcommon_ssl.a @@ -722,8 +722,10 @@ fi %{_libdir}/libzarafasync.so %{_includedir}/icalmapi/ %{_includedir}/inetmapi/ +%{_includedir}/mapitimezone/ %{_includedir}/mapi4linux/ %{_includedir}/libfreebusy/ +%{_includedir}/libmapicalendar/ %{_includedir}/libzarafasync/ %{_includedir}/%{name}/ %{_libdir}/pkgconfig/%{name}.pc @@ -868,6 +870,8 @@ fi %{_libdir}/libicalmapi.so.* %{_libdir}/libinetmapi.so.* %{_libdir}/libmapi.so.* +%{_libdir}/libmapicalendar.so.* +%{_libdir}/libmapitimezone.so.* %files -n php-mapi %defattr(-,root,root,-) @@ -880,6 +884,9 @@ fi %{python_sitearch}/* %changelog +* Thu Jan 30 2014 Robert Scheck 7.1.8-1 +- Upgrade to 7.1.8 (#1056767, #1059903) + * Sun Dec 08 2013 Robert Scheck 7.1.7-1 - Upgrade to 7.1.7 (#1008068) - Added dependency from gateway and spooler to python-MAPI From 673220e8763c0d90c0cb65106ffdc1abb4cf4526 Mon Sep 17 00:00:00 2001 From: Parag Nemade Date: Fri, 14 Feb 2014 10:35:44 +0530 Subject: [PATCH 52/69] Rebuild for icu 52 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index cce0e6f..b170f1d 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 43801 %global with_search 1 %global with_ldap 1 @@ -884,6 +884,9 @@ fi %{python_sitearch}/* %changelog +* Fri Feb 14 2014 Parag Nemade - 7.1.8-2 +- Rebuild for icu 52 + * Thu Jan 30 2014 Robert Scheck 7.1.8-1 - Upgrade to 7.1.8 (#1056767, #1059903) From 4d1d1cd761301264efdc14950b92cb55eaccb632 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Fri, 21 Feb 2014 20:52:35 +0100 Subject: [PATCH 53/69] Upgrade to 7.1.8 (re-released) --- sources | 2 +- zarafa-7.1.8-man-pages.patch | 30 ++++++++++++++++++++++++++++++ zarafa.spec | 9 +++++++-- 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 zarafa-7.1.8-man-pages.patch diff --git a/sources b/sources index 510a402..20f9f26 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -277506397e3240d06203b94a948bd824 zcp-7.1.8.tar.gz +9fb95c4071bc21364834af951f4e8a10 zcp-7.1.8.tar.gz diff --git a/zarafa-7.1.8-man-pages.patch b/zarafa-7.1.8-man-pages.patch new file mode 100644 index 0000000..df4fb75 --- /dev/null +++ b/zarafa-7.1.8-man-pages.patch @@ -0,0 +1,30 @@ +Patch by Robert Scheck for Zarafa <= 7.1.8 which ensures that +the removed man pages for proprietary Zarafa Web Services are not tried to be installed. + +--- zarafa-7.1.8/doc/Makefile.am 2014-02-20 12:02:44.000000000 +0100 ++++ zarafa-7.1.8/doc/Makefile.am.man-pages 2014-02-21 08:55:04.000000000 +0100 +@@ -8,7 +8,11 @@ + zarafa-ical.cfg.5 zarafa-server.cfg.5 zarafa-ldap.cfg.5 zarafa-ldapms.cfg.5 zarafa-unix.cfg.5 zarafa-spooler.cfg.5 zarafa-gateway.cfg.5 \ + zarafa-monitor.cfg.5 zarafa-licensed.cfg.5 zarafa-dagent.cfg.5 zarafa-search.cfg.5 zarafa-archiver.1 zarafa-archiver.cfg.5 \ + zarafa-msr.1 zarafa-msr.cfg.5 zarafa-msr-verify.1 za-aclsync.1 za-aclset.1 zarafa-backup.cfg.5 za-restore.1 \ +- zarafa-set-oof.1 zarafa-mailbox-permissions.1 zarafa-autorespond.1 zarafa-ws.1 zarafa-ws.cfg.5 ++ zarafa-set-oof.1 zarafa-mailbox-permissions.1 zarafa-autorespond.1 ++ ++if ! OSS_ONLY ++allpages += zarafa-ws.1 zarafa-ws.cfg.5 ++endif + + CLEANFILES = zarafa-cfgchecker.1 + +--- zarafa-7.1.8/doc/Makefile.in 2014-02-20 12:08:17.000000000 +0100 ++++ zarafa-7.1.8/doc/Makefile.in.man-pages 2014-02-21 08:57:00.000000000 +0100 +@@ -294,7 +294,8 @@ + zarafa-ical.cfg.5 zarafa-server.cfg.5 zarafa-ldap.cfg.5 zarafa-ldapms.cfg.5 zarafa-unix.cfg.5 zarafa-spooler.cfg.5 zarafa-gateway.cfg.5 \ + zarafa-monitor.cfg.5 zarafa-licensed.cfg.5 zarafa-dagent.cfg.5 zarafa-search.cfg.5 zarafa-archiver.1 zarafa-archiver.cfg.5 \ + zarafa-msr.1 zarafa-msr.cfg.5 zarafa-msr-verify.1 za-aclsync.1 za-aclset.1 zarafa-backup.cfg.5 za-restore.1 \ +- zarafa-set-oof.1 zarafa-mailbox-permissions.1 zarafa-autorespond.1 zarafa-ws.1 zarafa-ws.cfg.5 ++ zarafa-set-oof.1 zarafa-mailbox-permissions.1 zarafa-autorespond.1 ++@OSS_ONLY_FALSE@allpages += zarafa-ws.1 zarafa-ws.cfg.5 + + CLEANFILES = zarafa-cfgchecker.1 + man_MANS = $(BUILT_SOURCES) $(allpages) diff --git a/zarafa.spec b/zarafa.spec index b170f1d..b77edb5 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 43801 +%global actual_release 3 +%global svnrevision 44004 %global with_search 1 %global with_ldap 1 %global with_xmlto 1 @@ -44,6 +44,7 @@ Source3: %{name}-webaccess.conf Patch0: zarafa-7.0.9-rpath.patch Patch1: zarafa-7.1.8-nullptr.patch +Patch2: zarafa-7.1.8-man-pages.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -362,6 +363,7 @@ to interact with Zarafa. %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 %patch1 -p1 -b .nullptr +%patch2 -p1 -b .man-pages %build %if 0%{?rhel}%{?fedora} < 6 @@ -884,6 +886,9 @@ fi %{python_sitearch}/* %changelog +* Fri Feb 21 2014 Robert Scheck 7.1.8-3 +- Upgrade to 7.1.8 (re-released) + * Fri Feb 14 2014 Parag Nemade - 7.1.8-2 - Rebuild for icu 52 From 9c2ceb71fe0be2700baebe443d16e5a3ebf87f32 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Thu, 1 May 2014 00:52:54 +0200 Subject: [PATCH 54/69] Upgrade to 7.1.9 --- sources | 2 +- zarafa.spec | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sources b/sources index 20f9f26..5f6d3d3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -9fb95c4071bc21364834af951f4e8a10 zcp-7.1.8.tar.gz +2d74bcca184e4c245fb06ef7db4ec0d8 zcp-7.1.9.tar.gz diff --git a/zarafa.spec b/zarafa.spec index b77edb5..41a5d63 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 -%global actual_release 3 -%global svnrevision 44004 +%global actual_release 1 +%global svnrevision 44333 %global with_search 1 %global with_ldap 1 %global with_xmlto 1 @@ -19,7 +19,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.1.8 +Version: 7.1.9 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -886,6 +886,9 @@ fi %{python_sitearch}/* %changelog +* Thu May 01 2014 Robert Scheck 7.1.9-1 +- Upgrade to 7.1.9 + * Fri Feb 21 2014 Robert Scheck 7.1.8-3 - Upgrade to 7.1.8 (re-released) From f5d6af14009aa3a5563914bd37f852acb2a31d0a Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Thu, 22 May 2014 19:21:56 +0200 Subject: [PATCH 55/69] Rebuild for boost 1.55.0 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 41a5d63..c0b6ed4 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -21,7 +21,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.1.9 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 %else Release: %{actual_release}%{?dist} %endif @@ -886,6 +886,9 @@ fi %{python_sitearch}/* %changelog +* Thu May 22 2014 Petr Machata - 7.1.9-1 +- Rebuild for boost 1.55.0 + * Thu May 01 2014 Robert Scheck 7.1.9-1 - Upgrade to 7.1.9 From f4c0ef34ab68e16dcd05cad970507c8d86f15942 Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Sun, 25 May 2014 17:22:06 +0200 Subject: [PATCH 56/69] Properly bump release for Boost rebuild --- zarafa.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index c0b6ed4..57c1499 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 44333 %global with_search 1 %global with_ldap 1 @@ -21,7 +21,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.1.9 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else Release: %{actual_release}%{?dist} %endif @@ -886,7 +886,7 @@ fi %{python_sitearch}/* %changelog -* Thu May 22 2014 Petr Machata - 7.1.9-1 +* Thu May 22 2014 Petr Machata - 7.1.9-2 - Rebuild for boost 1.55.0 * Thu May 01 2014 Robert Scheck 7.1.9-1 From 3087390db67ee406320028abee2136446bcca678 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 7 Jun 2014 13:01:58 -0500 Subject: [PATCH 57/69] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild --- zarafa.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index 57c1499..c1e13db 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -21,9 +21,9 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.1.9 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 %else -Release: %{actual_release}%{?dist} +Release: %{actual_release}%{?dist}.1 %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 @@ -886,6 +886,9 @@ fi %{python_sitearch}/* %changelog +* Sat Jun 07 2014 Fedora Release Engineering - 7.1.9-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + * Thu May 22 2014 Petr Machata - 7.1.9-2 - Rebuild for boost 1.55.0 From 7a0cf2ce1ba0009811224987839dbbd93b449c24 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Fri, 20 Jun 2014 09:30:53 +0200 Subject: [PATCH 58/69] rebuild for https://fedoraproject.org/wiki/Changes/Php56 --- zarafa.spec | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index c1e13db..97dc8af 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -16,6 +16,11 @@ # RPM 4.9 %global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{_libdir}/%{name}/.*\\.so$ %global __provides_exclude_from %{__provides_exclude_from}|%{_libdir}/php/modules/.*\\.so$ +%if "%{php_version}" < "5.6" +%global ini_name %{name}.ini +%else +%global ini_name 40-%{name}.ini +%endif Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa @@ -23,7 +28,7 @@ Version: 7.1.9 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 %else -Release: %{actual_release}%{?dist}.1 +Release: %{actual_release}%{?dist}.2 %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 @@ -518,8 +523,15 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/client/widgets/swfupload/ # Remove files only required by proprietary web services rm -rf $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/ws.cfg,%{_datadir}/zarafa/timezones} +# rename the PHP config file when needed (PHP 5.6+) +if [ "%{name}.ini" != "%{ini_name}" ]; then + mv %{buildroot}%{_sysconfdir}/php.d/%{name}.ini \ + %{buildroot}%{_sysconfdir}/php.d/%{ini_name} +fi + %find_lang %{name} + %clean rm -rf $RPM_BUILD_ROOT @@ -877,7 +889,7 @@ fi %files -n php-mapi %defattr(-,root,root,-) -%config(noreplace) %{_sysconfdir}/php.d/%{name}.ini +%config(noreplace) %{_sysconfdir}/php.d/%{ini_name} %{_datadir}/php/mapi/ %{_libdir}/php/modules/mapi.so @@ -886,6 +898,10 @@ fi %{python_sitearch}/* %changelog +* Fri Jun 20 2014 Remi Collet - 7.1.9-2.1 +- rebuild for https://fedoraproject.org/wiki/Changes/Php56 +- add numerical prefix to extension configuration file + * Sat Jun 07 2014 Fedora Release Engineering - 7.1.9-2.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild From 76758313926f5a578c01bf1419897914807e3385 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 29 Jun 2014 16:10:40 +0200 Subject: [PATCH 59/69] Upgrade to 7.1.10 --- sources | 2 +- zarafa-7.1.8-man-pages.patch | 30 --------------------------- zarafa-7.1.8-nullptr.patch | 20 ------------------ zarafa.spec | 40 ++++++++++++++++++++++-------------- 4 files changed, 26 insertions(+), 66 deletions(-) delete mode 100644 zarafa-7.1.8-man-pages.patch delete mode 100644 zarafa-7.1.8-nullptr.patch diff --git a/sources b/sources index 5f6d3d3..b03ae3d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -2d74bcca184e4c245fb06ef7db4ec0d8 zcp-7.1.9.tar.gz +244bf320f811fd375cfb8cb82bd324eb zcp-7.1.10.tar.gz diff --git a/zarafa-7.1.8-man-pages.patch b/zarafa-7.1.8-man-pages.patch deleted file mode 100644 index df4fb75..0000000 --- a/zarafa-7.1.8-man-pages.patch +++ /dev/null @@ -1,30 +0,0 @@ -Patch by Robert Scheck for Zarafa <= 7.1.8 which ensures that -the removed man pages for proprietary Zarafa Web Services are not tried to be installed. - ---- zarafa-7.1.8/doc/Makefile.am 2014-02-20 12:02:44.000000000 +0100 -+++ zarafa-7.1.8/doc/Makefile.am.man-pages 2014-02-21 08:55:04.000000000 +0100 -@@ -8,7 +8,11 @@ - zarafa-ical.cfg.5 zarafa-server.cfg.5 zarafa-ldap.cfg.5 zarafa-ldapms.cfg.5 zarafa-unix.cfg.5 zarafa-spooler.cfg.5 zarafa-gateway.cfg.5 \ - zarafa-monitor.cfg.5 zarafa-licensed.cfg.5 zarafa-dagent.cfg.5 zarafa-search.cfg.5 zarafa-archiver.1 zarafa-archiver.cfg.5 \ - zarafa-msr.1 zarafa-msr.cfg.5 zarafa-msr-verify.1 za-aclsync.1 za-aclset.1 zarafa-backup.cfg.5 za-restore.1 \ -- zarafa-set-oof.1 zarafa-mailbox-permissions.1 zarafa-autorespond.1 zarafa-ws.1 zarafa-ws.cfg.5 -+ zarafa-set-oof.1 zarafa-mailbox-permissions.1 zarafa-autorespond.1 -+ -+if ! OSS_ONLY -+allpages += zarafa-ws.1 zarafa-ws.cfg.5 -+endif - - CLEANFILES = zarafa-cfgchecker.1 - ---- zarafa-7.1.8/doc/Makefile.in 2014-02-20 12:08:17.000000000 +0100 -+++ zarafa-7.1.8/doc/Makefile.in.man-pages 2014-02-21 08:57:00.000000000 +0100 -@@ -294,7 +294,8 @@ - zarafa-ical.cfg.5 zarafa-server.cfg.5 zarafa-ldap.cfg.5 zarafa-ldapms.cfg.5 zarafa-unix.cfg.5 zarafa-spooler.cfg.5 zarafa-gateway.cfg.5 \ - zarafa-monitor.cfg.5 zarafa-licensed.cfg.5 zarafa-dagent.cfg.5 zarafa-search.cfg.5 zarafa-archiver.1 zarafa-archiver.cfg.5 \ - zarafa-msr.1 zarafa-msr.cfg.5 zarafa-msr-verify.1 za-aclsync.1 za-aclset.1 zarafa-backup.cfg.5 za-restore.1 \ -- zarafa-set-oof.1 zarafa-mailbox-permissions.1 zarafa-autorespond.1 zarafa-ws.1 zarafa-ws.cfg.5 -+ zarafa-set-oof.1 zarafa-mailbox-permissions.1 zarafa-autorespond.1 -+@OSS_ONLY_FALSE@allpages += zarafa-ws.1 zarafa-ws.cfg.5 - - CLEANFILES = zarafa-cfgchecker.1 - man_MANS = $(BUILT_SOURCES) $(allpages) diff --git a/zarafa-7.1.8-nullptr.patch b/zarafa-7.1.8-nullptr.patch deleted file mode 100644 index ffb2cb6..0000000 --- a/zarafa-7.1.8-nullptr.patch +++ /dev/null @@ -1,20 +0,0 @@ -Patch by Robert Scheck for Zarafa <= 7.1.8 which adds a check -to avoid a NULL pointer segfault. At least a Fedora build with this patch can no longer be -crashed. See https://bugzilla.redhat.com/show_bug.cgi?id=1059903 for further information. -Please do not confuse https://bugzilla.redhat.com/show_bug.cgi?id=1056767 with this patch. - ---- zarafa-7.1.8/provider/libserver/ECSession.cpp 2014-01-21 15:38:53.000000000 +0100 -+++ zarafa-7.1.8/provider/libserver/ECSession.cpp.rsc 2014-01-29 01:26:49.000000000 +0100 -@@ -865,10 +865,10 @@ - { - ECRESULT er = erSuccess; - -- if (!lpszName) -+ if (!lpszName || !lpszPassword) - { - // Commandment 2: Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end. -- m_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_FATAL, "Invalid argument lpszName in call to ECAuthSession::ValidateUserLogon()"); -+ m_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_FATAL, "Invalid argument %s in call to ECAuthSession::ValidateUserLogon()", (!lpszName) ? "lpszName" : "lpszPassword"); - er = ZARAFA_E_INVALID_PARAMETER; - goto exit; - } diff --git a/zarafa.spec b/zarafa.spec index 97dc8af..b08c3e0 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,9 +1,14 @@ %global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 44333 +%global actual_release 1 +%global svnrevision 44973 %global with_search 1 %global with_ldap 1 %global with_xmlto 1 +%if 0%{?fedora} > 15 || 0%{?rhel} > 6 +%global with_gsoap 1 +%else +%global with_gsoap 0 +%endif %global no_multiupload 1 %global php_apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1) %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") @@ -16,19 +21,20 @@ # RPM 4.9 %global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{_libdir}/%{name}/.*\\.so$ %global __provides_exclude_from %{__provides_exclude_from}|%{_libdir}/php/modules/.*\\.so$ + %if "%{php_version}" < "5.6" -%global ini_name %{name}.ini +%global ini_name %{name}.ini %else -%global ini_name 40-%{name}.ini +%global ini_name 40-%{name}.ini %endif Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.1.9 +Version: 7.1.10 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else -Release: %{actual_release}%{?dist}.2 +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 @@ -48,8 +54,6 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-7.0.9-rpath.patch -Patch1: zarafa-7.1.8-nullptr.patch -Patch2: zarafa-7.1.8-man-pages.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -74,6 +78,10 @@ BuildRequires: boost141-devel BuildRequires: swig BuildRequires: python-devel >= 2.4 +%if %{with_gsoap} +BuildRequires: gsoap-devel +%endif + %if %{with_search} BuildRequires: kyotocabinet-devel %if 0%{?fedora} > 15 || 0%{?rhel} > 6 @@ -367,8 +375,6 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 -%patch1 -p1 -b .nullptr -%patch2 -p1 -b .man-pages %build %if 0%{?rhel}%{?fedora} < 6 @@ -384,6 +390,9 @@ export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}/clucene09" --with-userscript-prefix=%{_sysconfdir}/%{name}/userscripts \ --with-quotatemplate-prefix=%{_sysconfdir}/%{name}/quotamail \ --with-searchscripts-prefix=%{_datadir}/%{name}/searchscripts \ +%if %{with_gsoap} + --with-system-gsoap \ +%endif %if %{with_search} %if 0%{?rhel}%{?fedora} > 6 --with-clucene-lib-prefix=%{_libdir}/clucene09 \ @@ -523,15 +532,13 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/client/widgets/swfupload/ # Remove files only required by proprietary web services rm -rf $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/ws.cfg,%{_datadir}/zarafa/timezones} -# rename the PHP config file when needed (PHP 5.6+) +# Rename the PHP config file when needed (PHP 5.6+) if [ "%{name}.ini" != "%{ini_name}" ]; then - mv %{buildroot}%{_sysconfdir}/php.d/%{name}.ini \ - %{buildroot}%{_sysconfdir}/php.d/%{ini_name} + mv -f $RPM_BUILD_ROOT%{_sysconfdir}/php.d/{%{name}.ini,%{ini_name}} fi %find_lang %{name} - %clean rm -rf $RPM_BUILD_ROOT @@ -898,6 +905,9 @@ fi %{python_sitearch}/* %changelog +* Sun Jun 29 2014 Robert Scheck 7.1.10-1 +- Upgrade to 7.1.10 + * Fri Jun 20 2014 Remi Collet - 7.1.9-2.1 - rebuild for https://fedoraproject.org/wiki/Changes/Php56 - add numerical prefix to extension configuration file From 1920954713f238bfe1371ee670bcc86166e044b7 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 29 Jun 2014 16:40:57 +0200 Subject: [PATCH 60/69] 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) --- zarafa.spec | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index b08c3e0..410e9f8 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -311,7 +311,7 @@ Requires: httpd, php-mapi = %{version}-%{release} %if 0%{?rhel} == 5 Requires: mod_php >= 4.3 %else -Requires: php >= 4.3 +Requires: php >= 4.3, php-openssl %endif %if 0%{?rhel}%{?fedora} > 5 BuildArch: noarch @@ -522,7 +522,7 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.htaccess,%{name}-webaccess. # Remove flash-based multi-attachment upload (missing source) %if %{no_multiupload} -sed '143,150d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ +sed '148,155d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php.new touch -c -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{,.new} mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} @@ -676,6 +676,13 @@ fi %postun client -p /sbin/ldconfig +%post webaccess +if [ -f %{_sysconfdir}/%{name}/webaccess/config.php ]; then + sed -e "s/\(define('PASSWORD_KEY','\)a75356b0d1b81b7\(');\)/\1$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1)\2/" \ + -e "s/\(define('PASSWORD_IV','\)b3f5a483\(');\)/\1$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)\2/" \ + -i %{_sysconfdir}/%{name}/webaccess/config.php +fi + %postun -n libmapi -p /sbin/ldconfig %files From 815006aaf215bd94b47b4a0a73d9e958bee0c13d Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Fri, 11 Jul 2014 00:34:10 +0200 Subject: [PATCH 61/69] - Added a workaround to really support MariaDB (#995870) - Re-added a patch to allow building without zarafa-search --- zarafa-7.1.10-kyotocabinet.patch | 28 ++++++++++++++++++++++++++++ zarafa-7.1.10-mariadb.patch | 22 ++++++++++++++++++++++ zarafa.spec | 10 +++++++++- 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 zarafa-7.1.10-kyotocabinet.patch create mode 100644 zarafa-7.1.10-mariadb.patch diff --git a/zarafa-7.1.10-kyotocabinet.patch b/zarafa-7.1.10-kyotocabinet.patch new file mode 100644 index 0000000..43e62a3 --- /dev/null +++ b/zarafa-7.1.10-kyotocabinet.patch @@ -0,0 +1,28 @@ +Patch by Robert Scheck for zarafa >= 7.1.10 which re-adds the ability to disable +zarafa-search during build-time. This is e.g. required if CLucene and/or Kyotocabinet is unavailable or +broken on the given system and/or architecture. Interestingly that patch is not new, I wrote these lines +in 2012 the first time, proposed them as a patch to Zarafa and got merged. With a recent Zarafa release it +seems they silently removed it again... + +--- zarafa-7.1.10/ECtools/zarafa-search/Makefile.am 2014-05-23 15:03:49.000000000 +0200 ++++ zarafa-7.1.10/ECtools/zarafa-search/Makefile.am.kyotocabinet 2014-07-10 21:48:42.000000000 +0200 +@@ -1,4 +1,8 @@ ++if WITH_CLUCENE ++if WITH_KYOTOCABINET + bin_PROGRAMS = zarafa-search ++endif ++endif + + AM_CPPFLAGS = ${ZCPPFLAGS} \ + -I${top_srcdir}/mapi4linux/include \ +--- zarafa-7.1.10/ECtools/zarafa-search/Makefile.in 2014-05-23 15:04:02.000000000 +0200 ++++ zarafa-7.1.10/ECtools/zarafa-search/Makefile.in.kyotocabinet 2014-07-10 21:49:16.000000000 +0200 +@@ -34,7 +34,7 @@ + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-bin_PROGRAMS = zarafa-search$(EXEEXT) ++@WITH_CLUCENE_TRUE@@WITH_KYOTOCABINET_TRUE@bin_PROGRAMS = zarafa-search$(EXEEXT) + subdir = ECtools/zarafa-search + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 diff --git a/zarafa-7.1.10-mariadb.patch b/zarafa-7.1.10-mariadb.patch new file mode 100644 index 0000000..419017a --- /dev/null +++ b/zarafa-7.1.10-mariadb.patch @@ -0,0 +1,22 @@ +Patch by Robert Scheck for zarafa >= 7.1.10 which really (!) adds support for +MariaDB. In theory, Zarafa 7.1.10 supports MariaDB, see https://jira.zarafa.com/browse/ZCP-11934 for some +upstream details. However it poorly fails if really trying it with e.g. MariaDB 5.5.38: + +Jul 10 23:40:40 tux zarafa-server[24633]: SQL [00000002] result failed: BIGINT UNSIGNED value is out of range in '(`zarafa`.`properties`.`tag` - 0x8501)', Query: "SELECT 0,properties.tag,properties.type,properties.val_ulong,properties.val_string,properties.val_binary,properties.val_double,properties.val_longint,properties.val_hi,properties.val_lo, hierarchyid, names.nameid, names.namestring, names.guid FROM properties FORCE INDEX (PRIMARY) LEFT JOIN names ON (properties.tag-0x8501)=names.id WHERE hierarchyid=3 AND (tag <= 0x8500 OR names.id IS NOT NULL)" +Jul 10 23:40:40 tux zarafa-server[24633]: SQL [00000004] result failed: BIGINT UNSIGNED value is out of range in '(`zarafa`.`properties`.`tag` - 0x8501)', Query: "SELECT 0,properties.tag,properties.type,properties.val_ulong,properties.val_string,properties.val_binary,properties.val_double,properties.val_longint,properties.val_hi,properties.val_lo, hierarchyid, names.nameid, names.namestring, names.guid FROM properties FORCE INDEX (PRIMARY) LEFT JOIN names ON (properties.tag-0x8501)=names.id WHERE hierarchyid=4 AND (tag <= 0x8500 OR names.id IS NOT NULL)" +Jul 10 23:40:40 tux zarafa-server[24633]: SQL [00000006] result failed: BIGINT UNSIGNED value is out of range in '(`zarafa`.`properties`.`tag` - 0x8501)', Query: "SELECT 0,properties.tag,properties.type,properties.val_ulong,properties.val_string,properties.val_binary,properties.val_double,properties.val_longint,properties.val_hi,properties.val_lo, hierarchyid, names.nameid, names.namestring, names.guid FROM properties FORCE INDEX (PRIMARY) LEFT JOIN names ON (properties.tag-0x8501)=names.id WHERE hierarchyid=4 AND (tag <= 0x8500 OR names.id IS NOT NULL)" + +Even this might not be a clean solution it at least makes Zarafa usable with MariaDB - which is important +nowadays as Red Hat Enterprise Linux and CentOS 7 are only shipping MariaDB by default rather MySQL. + +--- zarafa-7.1.10/provider/libserver/ECDatabaseMySQL.cpp 2014-05-23 15:56:38.000000000 +0200 ++++ zarafa-7.1.10/provider/libserver/ECDatabaseMySQL.cpp.mariadb 2014-07-10 23:44:19.000000000 +0200 +@@ -628,7 +628,7 @@ + + if (m_lpMySQL.server_version && m_lpMySQL.server_version[0] >= '5') { + // this option was introduced in mysql 5.0, so let's not even try on 4.1 servers +- strQuery = "SET SESSION sql_mode = 'STRICT_ALL_TABLES'"; ++ strQuery = "SET SESSION sql_mode = 'STRICT_ALL_TABLES,NO_UNSIGNED_SUBTRACTION'"; + Query(strQuery); // ignore error + } + diff --git a/zarafa.spec b/zarafa.spec index 410e9f8..2f61640 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 44973 %global with_search 1 %global with_ldap 1 @@ -54,6 +54,8 @@ Source2: %{name}.logrotate Source3: %{name}-webaccess.conf Patch0: zarafa-7.0.9-rpath.patch +Patch1: zarafa-7.1.10-kyotocabinet.patch +Patch2: zarafa-7.1.10-mariadb.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -375,6 +377,8 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 +%patch1 -p1 -b .kyotocabinet +%patch2 -p1 -b .mariadb %build %if 0%{?rhel}%{?fedora} < 6 @@ -912,6 +916,10 @@ fi %{python_sitearch}/* %changelog +* Fri Jul 11 2014 Robert Scheck 7.1.10-2 +- Added a workaround to really support MariaDB (#995870) +- Re-added a patch to allow building without zarafa-search + * Sun Jun 29 2014 Robert Scheck 7.1.10-1 - Upgrade to 7.1.10 From 61f6cf2560dab6a5b7f32518911feed7afb9da9c Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Mon, 14 Jul 2014 22:36:33 +0200 Subject: [PATCH 62/69] Rebuild for gSOAP 2.8.17 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 2f61640..209a177 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 2 +%global actual_release 3 %global svnrevision 44973 %global with_search 1 %global with_ldap 1 @@ -916,6 +916,9 @@ fi %{python_sitearch}/* %changelog +* Mon Jul 14 2014 Robert Scheck 7.1.10-3 +- Rebuild for gSOAP 2.8.17 + * Fri Jul 11 2014 Robert Scheck 7.1.10-2 - Added a workaround to really support MariaDB (#995870) - Re-added a patch to allow building without zarafa-search From d37b1b3a55146ed275fbfc10f50bd631ef567de4 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 18 Aug 2014 11:29:37 +0000 Subject: [PATCH 63/69] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 209a177..f310fb1 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -32,7 +32,7 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa Version: 7.1.10 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 %else Release: %{actual_release}%{?dist} %endif @@ -916,6 +916,9 @@ fi %{python_sitearch}/* %changelog +* Mon Aug 18 2014 Fedora Release Engineering - 7.1.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + * Mon Jul 14 2014 Robert Scheck 7.1.10-3 - Rebuild for gSOAP 2.8.17 From 7739e805bc476cfc3979649c5774c9a111bebe01 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Mon, 25 Aug 2014 22:44:57 +0200 Subject: [PATCH 64/69] Fixed multiple incorrect default permissions (#1133439) --- zarafa.spec | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/zarafa.spec b/zarafa.spec index 209a177..76337b0 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 3 +%global actual_release 4 %global svnrevision 44973 %global with_search 1 %global with_ldap 1 @@ -695,7 +695,7 @@ fi %files archiver %defattr(-,root,root,-) %{_bindir}/%{name}-archiver -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/archiver.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/archiver.cfg %{_mandir}/man1/%{name}-archiver.1* %{_mandir}/man5/%{name}-archiver.cfg.5* @@ -714,7 +714,7 @@ fi %{_mandir}/man1/%{name}.1* %dir %{_datadir}/%{name}/ %dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/ -%dir %attr(0755,%{name},%{name}) %{_localstatedir}/log/%{name}/ +%dir %attr(0770,root,%{name}) %{_localstatedir}/log/%{name}/ %files contacts %defattr(-,root,root,-) @@ -727,7 +727,7 @@ fi %{_bindir}/%{name}-autorespond %{_bindir}/%{name}-dagent %{_bindir}/%{name}-mr-accept -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/dagent.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/dagent.cfg %config(noreplace) %{_sysconfdir}/%{name}/autorespond %{_sysconfdir}/rc.d/init.d/%{name}-dagent %{_mandir}/man1/%{name}-dagent.1* @@ -765,7 +765,7 @@ fi %files gateway %defattr(-,root,root,-) %{_bindir}/%{name}-gateway -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/gateway.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/gateway.cfg %{_sysconfdir}/rc.d/init.d/%{name}-gateway %{_datadir}/%{name}-gateway/ %{_mandir}/man1/%{name}-gateway.1* @@ -774,7 +774,7 @@ fi %files ical %defattr(-,root,root,-) %{_bindir}/%{name}-ical -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ical.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/ical.cfg %{_sysconfdir}/rc.d/init.d/%{name}-ical %{_mandir}/man1/%{name}-ical.1* %{_mandir}/man5/%{name}-ical.cfg.5* @@ -782,7 +782,7 @@ fi %files monitor %defattr(-,root,root,-) %{_bindir}/%{name}-monitor -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/monitor.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/monitor.cfg %dir %{_sysconfdir}/%{name}/quotamail/ %config(noreplace) %{_sysconfdir}/%{name}/quotamail/companywarning.mail %config(noreplace) %{_sysconfdir}/%{name}/quotamail/userhard.mail @@ -796,7 +796,7 @@ fi %files search %defattr(-,root,root,-) %{_bindir}/%{name}-search -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/search.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/search.cfg %{_sysconfdir}/rc.d/init.d/%{name}-search %dir %{_sysconfdir}/%{name}/searchscripts/ %config(noreplace) %{_sysconfdir}/%{name}/searchscripts/attachments_parser.db @@ -814,8 +814,8 @@ fi %files server %defattr(-,root,root,-) %{_bindir}/%{name}-server -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/server.cfg -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/unix.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/server.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/unix.cfg %{_sysconfdir}/rc.d/init.d/%{name}-server %dir %{_sysconfdir}/%{name}/userscripts/ %{_sysconfdir}/%{name}/userscripts/createuser @@ -845,9 +845,9 @@ fi %{_datadir}/%{name}/%{name}.ldif %{_datadir}/%{name}/db-upgrade-objectsid-to-objectguid.pl %{_datadir}/%{name}/ldap-switch-sendas.pl -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ldap.active-directory.cfg -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ldap.openldap.cfg -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/ldap.propmap.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/ldap.active-directory.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/ldap.openldap.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/ldap.propmap.cfg %{_libdir}/%{name}/ldapplugin.so %{_mandir}/man5/%{name}-ldap.cfg.5* %endif @@ -855,7 +855,7 @@ fi %files spooler %defattr(-,root,root,-) %{_bindir}/%{name}-spooler -%config(noreplace) %attr(0640,%{name},%{name}) %{_sysconfdir}/%{name}/spooler.cfg +%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/spooler.cfg %{_sysconfdir}/rc.d/init.d/%{name}-spooler %{_mandir}/man1/%{name}-spooler.1* %{_mandir}/man5/%{name}-spooler.cfg.5* @@ -888,11 +888,11 @@ fi %defattr(-,root,root,-) %config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}-webaccess.conf %dir %{_sysconfdir}/%{name}/ -%dir %{_sysconfdir}/%{name}/webaccess/ -%config(noreplace) %{_sysconfdir}/%{name}/webaccess/config.php +%dir %attr(0750,root,apache) %{_sysconfdir}/%{name}/webaccess/ +%config(noreplace) %attr(0640,root,apache) %{_sysconfdir}/%{name}/webaccess/config.php %{_datadir}/%{name}-webaccess/ %dir %{_localstatedir}/lib/%{name}-webaccess/ -%attr(-,apache,apache) %dir %{_localstatedir}/lib/%{name}-webaccess/tmp/ +%dir %attr(0770,root,apache) %{_localstatedir}/lib/%{name}-webaccess/tmp/ %files -n libmapi %defattr(-,root,root,-) @@ -916,6 +916,9 @@ fi %{python_sitearch}/* %changelog +* Mon Aug 25 2014 Robert Scheck 7.1.10-4 +- Fixed multiple incorrect default permissions (#1133439) + * Mon Jul 14 2014 Robert Scheck 7.1.10-3 - Rebuild for gSOAP 2.8.17 From e638a4f4d66a7f1f9c1615decfababd8809418d6 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Tue, 26 Aug 2014 13:57:47 +0200 Subject: [PATCH 65/69] rebuild for ICU 53.1 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 2750d7f..3da0cf1 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 4 +%global actual_release 5 %global svnrevision 44973 %global with_search 1 %global with_ldap 1 @@ -916,6 +916,9 @@ fi %{python_sitearch}/* %changelog +* Tue Aug 26 2014 David Tardon - 7.1.10-5 +- rebuild for ICU 53.1 + * Mon Aug 25 2014 Robert Scheck 7.1.10-4 - Fixed multiple incorrect default permissions (#1133439) From 07cc7867537d78ea274413b6b2f451f97a61a8e0 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Wed, 15 Oct 2014 03:13:44 +0200 Subject: [PATCH 66/69] - 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 --- zarafa-7.1.10-mariadb.patch | 22 - zarafa-7.1.10-ssl_protocols_ciphers.patch | 446 ++++++++++++++++++ zarafa-7.1.11-php-unbundle.patch | 39 ++ zarafa-7.1.11-plaintext_auth_localhost.patch | 88 ++++ ...9-rpath.patch => zarafa-7.1.11-rpath.patch | 24 +- zarafa-7.1.9-ssl_ecdhe.patch | 82 ++++ zarafa.spec | 45 +- 7 files changed, 702 insertions(+), 44 deletions(-) delete mode 100644 zarafa-7.1.10-mariadb.patch create mode 100644 zarafa-7.1.10-ssl_protocols_ciphers.patch create mode 100644 zarafa-7.1.11-php-unbundle.patch create mode 100644 zarafa-7.1.11-plaintext_auth_localhost.patch rename zarafa-7.0.9-rpath.patch => zarafa-7.1.11-rpath.patch (87%) create mode 100644 zarafa-7.1.9-ssl_ecdhe.patch diff --git a/zarafa-7.1.10-mariadb.patch b/zarafa-7.1.10-mariadb.patch deleted file mode 100644 index 419017a..0000000 --- a/zarafa-7.1.10-mariadb.patch +++ /dev/null @@ -1,22 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.1.10 which really (!) adds support for -MariaDB. In theory, Zarafa 7.1.10 supports MariaDB, see https://jira.zarafa.com/browse/ZCP-11934 for some -upstream details. However it poorly fails if really trying it with e.g. MariaDB 5.5.38: - -Jul 10 23:40:40 tux zarafa-server[24633]: SQL [00000002] result failed: BIGINT UNSIGNED value is out of range in '(`zarafa`.`properties`.`tag` - 0x8501)', Query: "SELECT 0,properties.tag,properties.type,properties.val_ulong,properties.val_string,properties.val_binary,properties.val_double,properties.val_longint,properties.val_hi,properties.val_lo, hierarchyid, names.nameid, names.namestring, names.guid FROM properties FORCE INDEX (PRIMARY) LEFT JOIN names ON (properties.tag-0x8501)=names.id WHERE hierarchyid=3 AND (tag <= 0x8500 OR names.id IS NOT NULL)" -Jul 10 23:40:40 tux zarafa-server[24633]: SQL [00000004] result failed: BIGINT UNSIGNED value is out of range in '(`zarafa`.`properties`.`tag` - 0x8501)', Query: "SELECT 0,properties.tag,properties.type,properties.val_ulong,properties.val_string,properties.val_binary,properties.val_double,properties.val_longint,properties.val_hi,properties.val_lo, hierarchyid, names.nameid, names.namestring, names.guid FROM properties FORCE INDEX (PRIMARY) LEFT JOIN names ON (properties.tag-0x8501)=names.id WHERE hierarchyid=4 AND (tag <= 0x8500 OR names.id IS NOT NULL)" -Jul 10 23:40:40 tux zarafa-server[24633]: SQL [00000006] result failed: BIGINT UNSIGNED value is out of range in '(`zarafa`.`properties`.`tag` - 0x8501)', Query: "SELECT 0,properties.tag,properties.type,properties.val_ulong,properties.val_string,properties.val_binary,properties.val_double,properties.val_longint,properties.val_hi,properties.val_lo, hierarchyid, names.nameid, names.namestring, names.guid FROM properties FORCE INDEX (PRIMARY) LEFT JOIN names ON (properties.tag-0x8501)=names.id WHERE hierarchyid=4 AND (tag <= 0x8500 OR names.id IS NOT NULL)" - -Even this might not be a clean solution it at least makes Zarafa usable with MariaDB - which is important -nowadays as Red Hat Enterprise Linux and CentOS 7 are only shipping MariaDB by default rather MySQL. - ---- zarafa-7.1.10/provider/libserver/ECDatabaseMySQL.cpp 2014-05-23 15:56:38.000000000 +0200 -+++ zarafa-7.1.10/provider/libserver/ECDatabaseMySQL.cpp.mariadb 2014-07-10 23:44:19.000000000 +0200 -@@ -628,7 +628,7 @@ - - if (m_lpMySQL.server_version && m_lpMySQL.server_version[0] >= '5') { - // this option was introduced in mysql 5.0, so let's not even try on 4.1 servers -- strQuery = "SET SESSION sql_mode = 'STRICT_ALL_TABLES'"; -+ strQuery = "SET SESSION sql_mode = 'STRICT_ALL_TABLES,NO_UNSIGNED_SUBTRACTION'"; - Query(strQuery); // ignore error - } - diff --git a/zarafa-7.1.10-ssl_protocols_ciphers.patch b/zarafa-7.1.10-ssl_protocols_ciphers.patch new file mode 100644 index 0000000..756d2fd --- /dev/null +++ b/zarafa-7.1.10-ssl_protocols_ciphers.patch @@ -0,0 +1,446 @@ +Patch by Robert Scheck for Zarafa <= 7.1.10 which implements much more +fine granulated configuration settings for SSL/TLS protocol and cipher enabling and disabling. The +currently available "ssl_enable_v2" setting allows either to disable SSLv2 (and enables SSLv3 only +instead) or to enable all, thus SSLv2, SSLv3, TLSv1, TLSv1.1 and TLSv1.2 (TLSv1.1 and TLSv1.2 only +if Zarafa was linked against OpenSSL 1.0.1 or later). Since SSLv2 has known protocol weaknesses it +never should be enabled - but for Zarafa it currently must be enabled to support TLSv1 and better. + +This patch introduces the new setting "ssl_protocols" which replaces "ssl_enable_v2". The default +is "!SSLv2" to simply disable SSLv2 by default. The setting can be filled either with SSL protocols +that shall be enabled and/or disabled, e.g. "SSLv3 TLSv1" or "!SSLv2 !SSLv3". However only the more +usual disable/exclude option should be used as this does not exclude future protocols by default. + +Further this patch introduces the completely new setting "ssl_ciphers". This one allows to set SSL +cipher suites. Right now, all SSL ciphers are accepted which is just weak or might Zarafa even make +even vulnerable to known SSL attacks. The German Federal Office for Information Security (BSI) says +that RC4 should not be used anymore - but Zarafa does it by default. And without this patch there +is also no way for Zarafa administrators to avoid that. Indeed this setting has the risk to get the +administrators ending up in a cipher mismatch between different systems but this new setting still +could be declared as officially unsupported and only for the brave ones who know what they do. Thus +the default is already set to something less weak than before but still below BSI recommendations. + +Finally this patch introduces the also new setting "ssl_prefer_server_ciphers". It does what it is +named after: When choosing a cipher during an SSL/TLS handshake, normally the client's preference +is used. If this setting is enabled, the server's preference will be used instead. This comes handy +to administrators for strange cipher orderings required for special configurations and clients - or +new weaknesses where workarounds are required for the time being. + +Testing: Configure zarafa-gateway, zarafa-ical and zarafa-server for cleartext and SSL as usual. +Try to login via POP3S, IMAPS, CalDAV-SSL and MAPI in SOAP over HTTPS. Change SSL protocols and the +ciphers to something more weak ("SSLv2" and "LOW") or to something more strong ("TLSv1.2" and e.g. +"HIGH"). During all my tests I did not figure out any newly introduced issue or Zarafa breakage. + +Important: The technical implementation of this patch might be not perfect as I am not really a C/ +C++ developer. The logic and the implementation is heavily based on Dovecot, Postfix and hints from +https://docs.fedoraproject.org/en-US/Fedora_Security_Team/html/Defensive_Coding/. There should be +a code review and code clean up by an experienced C/C++ developer before merging into Zarafa core. + +This patch should be only applied in conjuction with the POP3 RESP-CODES and AUTH-RESP-CODE patch, +the POP3 CAPA (CAPABILITIES) patch as well as the POP3 STLS (STARTTLS) patch applied before. + +--- zarafa-7.1.10/caldav/CalDAV.cpp 2014-05-23 15:56:36.000000000 +0200 ++++ zarafa-7.1.10/caldav/CalDAV.cpp.rsc 2014-08-12 19:45:04.000000000 +0200 +@@ -220,7 +220,9 @@ + { "log_timestamp", "1" }, + { "ssl_private_key_file", "/etc/zarafa/ical/privkey.pem" }, + { "ssl_certificate_file", "/etc/zarafa/ical/cert.pem" }, +- { "ssl_enable_v2", "no" }, ++ { "ssl_protocols", "!SSLv2" }, ++ { "ssl_ciphers", "ALL:!LOW:!SSLv2:!EXP:!aNULL" }, ++ { "ssl_prefer_server_ciphers", "no" }, + { "ssl_verify_client", "no" }, + { "ssl_verify_file", "" }, + { "ssl_verify_path", "" }, +--- zarafa-7.1.10/common/ECChannel.cpp 2014-05-23 15:56:36.000000000 +0200 ++++ zarafa-7.1.10/common/ECChannel.cpp.rsc 2014-08-12 19:48:00.000000000 +0200 +@@ -92,6 +92,11 @@ + HRESULT hr = hrSuccess; + char *szFile = NULL; + char *szPath = NULL; ++ char *ssl_protocols = strdup(lpConfig->GetSetting("ssl_protocols")); ++ char *ssl_ciphers = lpConfig->GetSetting("ssl_ciphers"); ++ char *ssl_name; ++ int ssl_proto, ssl_op = 0, ssl_include = 0, ssl_exclude = 0; ++ bool ssl_neg; + + if (lpConfig == NULL) { + hr = MAPI_E_CALL_FAILED; +@@ -107,11 +112,79 @@ + SSL_load_error_strings(); + lpCTX = SSL_CTX_new(SSLv23_server_method()); + SSL_CTX_set_options(lpCTX, SSL_OP_ALL); +- SSL_CTX_set_default_verify_paths(lpCTX); + +- // disable SSLv2 support +- if (!parseBool(lpConfig->GetSetting("ssl_enable_v2", "", "no"))) +- SSL_CTX_set_options(lpCTX, SSL_OP_NO_SSLv2); ++ ssl_name = strtok(ssl_protocols, " "); ++ while(ssl_name != NULL) { ++ if (*ssl_name != '!') ++ ssl_neg = FALSE; ++ else { ++ ssl_name++; ++ ssl_neg = TRUE; ++ } ++ ++ if (strcasecmp(ssl_name, SSL_TXT_SSLV2) == 0) ++ ssl_proto = 0x01; ++ else if (strcasecmp(ssl_name, SSL_TXT_SSLV3) == 0) ++ ssl_proto = 0x02; ++ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1) == 0) ++ ssl_proto = 0x04; ++#ifdef SSL_TXT_TLSV1_1 ++ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1_1) == 0) ++ ssl_proto = 0x08; ++#endif ++#ifdef SSL_TXT_TLSV1_2 ++ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1_2) == 0) ++ ssl_proto = 0x10; ++#endif ++ else { ++ lpLogger->Log(EC_LOGLEVEL_ERROR, "Unknown protocol '%s' in ssl_protocols setting", ssl_name); ++ hr = MAPI_E_CALL_FAILED; ++ goto exit; ++ } ++ ++ if (ssl_neg) ++ ssl_exclude |= ssl_proto; ++ else ++ ssl_include |= ssl_proto; ++ ++ ssl_name = strtok(NULL, " "); ++ } ++ ++ if (ssl_include != 0) { ++ // Exclude everything, except those that are included (and let excludes still override those) ++ ssl_exclude |= 0x1f & ~ssl_include; ++ } ++ ++ if ((ssl_exclude & 0x01) != 0) ++ ssl_op |= SSL_OP_NO_SSLv2; ++ if ((ssl_exclude & 0x02) != 0) ++ ssl_op |= SSL_OP_NO_SSLv3; ++ if ((ssl_exclude & 0x04) != 0) ++ ssl_op |= SSL_OP_NO_TLSv1; ++#ifdef SSL_OP_NO_TLSv1_1 ++ if ((ssl_exclude & 0x08) != 0) ++ ssl_op |= SSL_OP_NO_TLSv1_1; ++#endif ++#ifdef SSL_OP_NO_TLSv1_2 ++ if ((ssl_exclude & 0x10) != 0) ++ ssl_op |= SSL_OP_NO_TLSv1_2; ++#endif ++ ++ if (ssl_protocols) { ++ SSL_CTX_set_options(lpCTX, ssl_op); ++ } ++ ++ if (ssl_ciphers && SSL_CTX_set_cipher_list(lpCTX, ssl_ciphers) != 1) { ++ lpLogger->Log(EC_LOGLEVEL_ERROR, "Can not set SSL cipher list to '%s': %s", ssl_ciphers, ERR_error_string(ERR_get_error(), 0)); ++ hr = MAPI_E_CALL_FAILED; ++ goto exit; ++ } ++ ++ if (parseBool(lpConfig->GetSetting("ssl_prefer_server_ciphers"))) { ++ SSL_CTX_set_options(lpCTX, SSL_OP_CIPHER_SERVER_PREFERENCE); ++ } ++ ++ SSL_CTX_set_default_verify_paths(lpCTX); + + if (SSL_CTX_use_certificate_chain_file(lpCTX, lpConfig->GetSetting("ssl_certificate_file")) != 1) { + lpLogger->Log(EC_LOGLEVEL_ERROR, "SSL CTX certificate file error: %s", ERR_error_string(ERR_get_error(), 0)); +--- zarafa-7.1.10/doc/manual.xml 2014-05-23 15:01:13.000000000 +0200 ++++ zarafa-7.1.10/doc/manual.xml.rsc 2014-08-12 19:45:04.000000000 +0200 +@@ -4226,11 +4226,33 @@ + + + +- ++ + +- Incoming SSL connections normally are v3. +- Default: no +- ++ Disabled or enabled protocol names. Supported protocol names ++ are SSLv2, SSLv3 ++ and TLSv1. If Zarafa was linked against ++ OpenSSL 1.0.1 or later there is additional support for the new protocols ++ TLSv1.1 and TLSv1.2. ++ To exclude both, SSLv2 and SSLv3 set ++ to !SSLv2 !SSLv3. SSLv2 is considered unsafe ++ and these connections should not be accepted. ++ Default: !SSLv2 ++ ++ ++ ++ ++ ++ ++ SSL ciphers to use, set to ALL for backward compatibility. ++ Default: ALL:!LOW:!SSLv2:!EXP:!aNULL ++ ++ ++ ++ ++ ++ ++ Prefer the server's order of SSL ciphers over client's. ++ Default: no + + + +@@ -8070,11 +8092,32 @@ + + + +- ++ ++ ++ Disabled or enabled protocol names. Supported protocol names ++ are SSLv2, SSLv3 ++ and TLSv1. If Zarafa was linked against ++ OpenSSL 1.0.1 or later there is additional support for the new protocols ++ TLSv1.1 and TLSv1.2. ++ To exclude both, SSLv2 and SSLv3 set ++ to !SSLv2 !SSLv3. SSLv2 is considered unsafe ++ and these connections should not be accepted. ++ Default: !SSLv2 ++ ++ ++ ++ ++ ++ ++ SSL ciphers to use, set to ALL for backward compatibility. ++ Default: ALL:!LOW:!SSLv2:!EXP:!aNULL ++ ++ ++ ++ ++ + +- Accept SSLv2 only connections. SSLv2 is considered +- unsafe, and these connections should not be +- accepted. ++ Prefer the server's order of SSL ciphers over client's. + Default: no + + +@@ -10075,11 +10118,32 @@ + + + +- ++ ++ ++ Disabled or enabled protocol names. Supported protocol names ++ are SSLv2, SSLv3 ++ and TLSv1. If Zarafa was linked against ++ OpenSSL 1.0.1 or later there is additional support for the new protocols ++ TLSv1.1 and TLSv1.2. ++ To exclude both, SSLv2 and SSLv3 set ++ to !SSLv2 !SSLv3. SSLv2 is considered unsafe ++ and these connections should not be accepted. ++ Default: !SSLv2 ++ ++ ++ ++ ++ ++ ++ SSL ciphers to use, set to ALL for backward compatibility. ++ Default: ALL:!LOW:!SSLv2:!EXP:!aNULL ++ ++ ++ ++ ++ + +- Accept SSLv2 only connections. SSLv2 is considered +- unsafe, and these connections should not be +- accepted. ++ Prefer the server's order of SSL ciphers over client's. + Default: no + + +--- zarafa-7.1.10/gateway/Gateway.cpp 2014-05-23 15:56:37.000000000 +0200 ++++ zarafa-7.1.10/gateway/Gateway.cpp.rsc 2014-08-12 19:45:04.000000000 +0200 +@@ -365,7 +365,9 @@ + { "ssl_verify_client", "no" }, + { "ssl_verify_file", "" }, + { "ssl_verify_path", "" }, +- { "ssl_enable_v2", "no" }, ++ { "ssl_protocols", "!SSLv2" }, ++ { "ssl_ciphers", "ALL:!LOW:!SSLv2:!EXP:!aNULL" }, ++ { "ssl_prefer_server_ciphers", "no" }, + { "log_method", "file" }, + { "log_file", "-" }, + { "log_level", "2", CONFIGSETTING_RELOADABLE }, +--- zarafa-7.1.10/installer/linux/gateway.cfg 2014-05-23 15:03:19.000000000 +0200 ++++ zarafa-7.1.10/installer/linux/gateway.cfg.rsc 2014-08-12 19:45:04.000000000 +0200 +@@ -84,8 +84,14 @@ + ssl_verify_file = + ssl_verify_path = + +-# Accept SSLv2 only incoming connections +-ssl_enable_v2 = no ++# SSL protocols to use, set to '!SSLv2' for 'ssl_enable_v2 = no' ++ssl_protocols = !SSLv2 ++ ++# SSL ciphers to use, set to 'ALL' for backward compatibility ++ssl_ciphers = ALL:!LOW:!SSLv2:!EXP:!aNULL ++ ++# Prefer the server's order of SSL ciphers over client's ++ssl_prefer_server_ciphers = no + + # Process model, using pthreads (thread) or processes (fork) + process_model = fork +--- zarafa-7.1.10/installer/linux/ical.cfg 2014-05-23 15:03:19.000000000 +0200 ++++ zarafa-7.1.10/installer/linux/ical.cfg.rsc 2014-08-12 19:45:04.000000000 +0200 +@@ -66,8 +66,14 @@ + ssl_verify_file = + ssl_verify_path = + +-# Accept SSLv2 only incoming connections +-ssl_enable_v2 = no ++# SSL protocols to use, set to '!SSLv2' for 'ssl_enable_v2 = no' ++ssl_protocols = !SSLv2 ++ ++# SSL ciphers to use, set to 'ALL' for backward compatibility ++ssl_ciphers = ALL:!LOW:!SSLv2:!EXP:!aNULL ++ ++# Prefer the server's order of SSL ciphers over client's ++ssl_prefer_server_ciphers = no + + ############################################################## + # OTHER ICAL SETTINGS +--- zarafa-7.1.10/installer/linux/server.cfg 2014-05-23 15:03:19.000000000 +0200 ++++ zarafa-7.1.10/installer/linux/server.cfg.rsc 2014-08-12 19:45:04.000000000 +0200 +@@ -154,8 +154,14 @@ + # Path with CA certificates, e.g. /etc/ssl/certs + server_ssl_ca_path = + +-# Accept SSLv2 only connections. Normally v3 connections are used. +-server_ssl_enable_v2 = no ++# SSL protocols to use, set to '!SSLv2' for 'server_ssl_enable_v2 = no' ++server_ssl_protocols = !SSLv2 ++ ++# SSL ciphers to use, set to 'ALL' for backward compatibility ++server_ssl_ciphers = ALL:!LOW:!SSLv2:!EXP:!aNULL ++ ++# Prefer the server's order of SSL ciphers over client's ++server_ssl_prefer_server_ciphers = no + + # Path of SSL Public keys of clients + sslkeys_path = /etc/zarafa/sslkeys +--- zarafa-7.1.10/provider/server/ECServer.cpp 2014-05-23 15:56:37.000000000 +0200 ++++ zarafa-7.1.10/provider/server/ECServer.cpp.rsc 2014-08-12 19:45:04.000000000 +0200 +@@ -919,7 +919,9 @@ + { "server_ssl_key_pass", "server", CONFIGSETTING_EXACT }, + { "server_ssl_ca_file", "/etc/zarafa/ssl/cacert.pem" }, + { "server_ssl_ca_path", "" }, +- { "server_ssl_enable_v2", "no" }, ++ { "server_ssl_protocols", "!SSLv2" }, ++ { "server_ssl_ciphers", "ALL:!LOW:!SSLv2:!EXP:!aNULL" }, ++ { "server_ssl_prefer_server_ciphers", "no" }, + { "sslkeys_path", "/etc/zarafa/sslkeys" }, // login keys + // Database options + { "database_engine", "mysql" }, +--- zarafa-7.1.10/provider/server/ECSoapServerConnection.cpp 2014-05-23 15:56:37.000000000 +0200 ++++ zarafa-7.1.10/provider/server/ECSoapServerConnection.cpp.rsc 2014-08-12 19:45:04.000000000 +0200 +@@ -240,6 +240,11 @@ + ECRESULT er = erSuccess; + int socket = SOAP_INVALID_SOCKET; + struct soap *lpsSoap = NULL; ++ char *server_ssl_protocols = strdup(m_lpConfig->GetSetting("server_ssl_protocols")); ++ char *server_ssl_ciphers = m_lpConfig->GetSetting("server_ssl_ciphers"); ++ char *ssl_name; ++ int ssl_proto, ssl_op = 0, ssl_include = 0, ssl_exclude = 0; ++ bool ssl_neg; + + if(lpServerName == NULL) { + er = ZARAFA_E_INVALID_PARAMETER; +@@ -270,10 +275,79 @@ + goto exit; + } + +- // disable SSLv2 support +- if (!parseBool(m_lpConfig->GetSetting("server_ssl_enable_v2", "", "no"))) +- SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_NO_SSLv2); +- ++ SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_ALL); ++ ++ ssl_name = strtok(server_ssl_protocols, " "); ++ while(ssl_name != NULL) { ++ if (*ssl_name != '!') ++ ssl_neg = FALSE; ++ else { ++ ssl_name++; ++ ssl_neg = TRUE; ++ } ++ ++ if (strcasecmp(ssl_name, SSL_TXT_SSLV2) == 0) ++ ssl_proto = 0x01; ++ else if (strcasecmp(ssl_name, SSL_TXT_SSLV3) == 0) ++ ssl_proto = 0x02; ++ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1) == 0) ++ ssl_proto = 0x04; ++#ifdef SSL_TXT_TLSV1_1 ++ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1_1) == 0) ++ ssl_proto = 0x08; ++#endif ++#ifdef SSL_TXT_TLSV1_2 ++ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1_2) == 0) ++ ssl_proto = 0x10; ++#endif ++ else { ++ m_lpLogger->Log(EC_LOGLEVEL_FATAL, "Unknown protocol '%s' in server_ssl_protocols setting", ssl_name); ++ er = ZARAFA_E_CALL_FAILED; ++ goto exit; ++ } ++ ++ if (ssl_neg) ++ ssl_exclude |= ssl_proto; ++ else ++ ssl_include |= ssl_proto; ++ ++ ssl_name = strtok(NULL, " "); ++ } ++ ++ if (ssl_include != 0) { ++ // Exclude everything, except those that are included (and let excludes still override those) ++ ssl_exclude |= 0x1f & ~ssl_include; ++ } ++ ++ if ((ssl_exclude & 0x01) != 0) ++ ssl_op |= SSL_OP_NO_SSLv2; ++ if ((ssl_exclude & 0x02) != 0) ++ ssl_op |= SSL_OP_NO_SSLv3; ++ if ((ssl_exclude & 0x04) != 0) ++ ssl_op |= SSL_OP_NO_TLSv1; ++#ifdef SSL_OP_NO_TLSv1_1 ++ if ((ssl_exclude & 0x08) != 0) ++ ssl_op |= SSL_OP_NO_TLSv1_1; ++#endif ++#ifdef SSL_OP_NO_TLSv1_2 ++ if ((ssl_exclude & 0x10) != 0) ++ ssl_op |= SSL_OP_NO_TLSv1_2; ++#endif ++ ++ if (server_ssl_protocols) { ++ SSL_CTX_set_options(lpsSoap->ctx, ssl_op); ++ } ++ ++ if (server_ssl_ciphers && SSL_CTX_set_cipher_list(lpsSoap->ctx, server_ssl_ciphers) != 1) { ++ m_lpLogger->Log(EC_LOGLEVEL_FATAL, "Can not set SSL cipher list to '%s': %s", server_ssl_ciphers, ERR_error_string(ERR_get_error(), 0)); ++ er = ZARAFA_E_CALL_FAILED; ++ goto exit; ++ } ++ ++ if (parseBool(m_lpConfig->GetSetting("server_ssl_prefer_server_ciphers"))) { ++ SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_CIPHER_SERVER_PREFERENCE); ++ } ++ + // request certificate from client, is OK if not present. + SSL_CTX_set_verify(lpsSoap->ctx, SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE, NULL); + diff --git a/zarafa-7.1.11-php-unbundle.patch b/zarafa-7.1.11-php-unbundle.patch new file mode 100644 index 0000000..0934c0e --- /dev/null +++ b/zarafa-7.1.11-php-unbundle.patch @@ -0,0 +1,39 @@ +Patch by Robert Scheck for zarafa >= 7.1.11 which removes the bundled PHP PEAR files/libraries +and replaces them by files and libraries shipped by the distribution. From file server/PEAR/JSON.php only the function +json_decode() is used, which can be provided by the php-json RPM package. The file server/PEAR/XML/Unserializer.php can +be provided by the php-pear-XML-Serializer RPM package. The rest of the PHP PEAR files/libraries are only dependencies of +these two files mentioned before (which are satisfied by the two newly required RPM packages). + +--- zarafa-7.1.11.rsc/php-webclient-ajax/config.php.dist 2014-09-03 09:56:49.000000000 +0200 ++++ zarafa-7.1.11.rsc/php-webclient-ajax/config.php.dist.php-unbundle 2014-09-07 18:24:28.000000000 +0200 +@@ -56,7 +56,7 @@ + + // Define the server paths + set_include_path(BASE_PATH. PATH_SEPARATOR . +- BASE_PATH."server/PEAR/" . PATH_SEPARATOR . ++ "/usr/share/pear/" . PATH_SEPARATOR . + "/usr/share/php/"); + + // Define the relative URL for dialogs, this string is appended with HTTP GET arguments +--- zarafa-7.1.11.rsc/php-webclient-ajax/zarafa.php 2014-09-03 10:45:06.000000000 +0200 ++++ zarafa-7.1.11.rsc/php-webclient-ajax/zarafa.php.php-unbundle 2014-09-07 18:21:36.000000000 +0200 +@@ -59,7 +59,7 @@ + include("config.php"); + include("defaults.php"); + include("server/util.php"); +- require("server/PEAR/JSON.php"); ++ @include("server/PEAR/JSON.php"); + + require("mapi/mapi.util.php"); + require("mapi/mapicode.php"); +--- zarafa-7.1.11.rsc/php-webclient-ajax/server/core/class.xmlparser.php 2014-09-03 10:45:06.000000000 +0200 ++++ zarafa-7.1.11.rsc/php-webclient-ajax/server/core/class.xmlparser.php.php-unbundle 2014-09-07 18:22:40.000000000 +0200 +@@ -50,7 +50,7 @@ + + ?> + for Zarafa <= 7.1.11 which enhances my earlier +this year implemented "disable_plaintext_auth" feature (new option in Zarafa >= 7.1.10 to disable +all plaintext authentications unless SSL/TLS is used), https://jira.zarafa.com/browse/ZCP-12142 +contains the initial implementation and a more verbose feature description. + +Given that there are unfortunately still Zarafa systems around using saslauthd without pam_mapi +but rimap instead the "disable_plaintext_auth" feature prevents them from enabling this option as +rimap doesn't support SSL/TLS; https://jira.zarafa.com/browse/ZCP-12473 contains an example report +by a Zarafa customer. Thus this patch adds an exception if the source IPv4 address is "127.0.0.1" +and allows even if "disable_plaintext_auth" is enabled a cleartext authentication. It was a design +decision to check only for 127.0.0.1/32 rather 127.0.0.0/8 because there seem to be systems where +the loopback network except 127.0.0.1/32 is routable?! + +Important: The technical implementation of this patch might be not perfect as I am not really a C/ +C++ developer. There should be a code review by an experienced C/C++ developer before merging into +Zarafa core. + +--- zarafa-7.1.11/gateway/IMAP.cpp 2014-09-03 10:45:06.000000000 +0200 ++++ zarafa-7.1.11/gateway/IMAP.cpp.plaintext_auth_localhost 2014-09-24 01:29:10.000000000 +0200 +@@ -757,7 +757,7 @@ + if (!lpChannel->UsingSsl() && lpChannel->sslctx()) + strCapabilities += " STARTTLS"; + +- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) ++ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) + strCapabilities += " LOGINDISABLED"; + else + strCapabilities += " AUTH=PLAIN"; +@@ -923,7 +923,7 @@ + char *plain = lpConfig->GetSetting("disable_plaintext_auth"); + + // If plaintext authentication was disabled any authentication attempt must be refused very soon +- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) { ++ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) { + hr2 = HrResponse(RESP_TAGGED_NO, strTag, "[PRIVACYREQUIRED] Plaintext authentication disallowed on non-secure " + "(SSL/TLS) connections."); + if (hr2 != hrSuccess) +@@ -1002,7 +1002,7 @@ + } + + // If plaintext authentication was disabled any login attempt must be refused very soon +- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) { ++ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) { + hr2 = HrResponse(RESP_UNTAGGED, "BAD [ALERT] Plaintext authentication not allowed without SSL/TLS, but your client " + "did it anyway. If anyone was listening, the password was exposed."); + if (hr2 != hrSuccess) +--- zarafa-7.1.11/gateway/POP3.cpp 2014-09-03 10:45:06.000000000 +0200 ++++ zarafa-7.1.11/gateway/POP3.cpp.plaintext_auth_localhost 2014-09-24 01:30:41.000000000 +0200 +@@ -320,7 +320,7 @@ + if (!lpChannel->UsingSsl() && lpChannel->sslctx()) + strCapabilities += "STLS\r\n"; + +- if (!(!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0)) ++ if (!(!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0)) + strCapabilities += "USER\r\n"; + } + +@@ -402,7 +402,7 @@ + HRESULT hr = hrSuccess; + char *plain = lpConfig->GetSetting("disable_plaintext_auth"); + +- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) { ++ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) { + hr = HrResponse(POP3_RESP_AUTH_ERROR, "Plaintext authentication disallowed on non-secure (SSL/TLS) connections"); + lpLogger->Log(EC_LOGLEVEL_ERROR, "Aborted login from %s with username \"%s\" (tried to use disallowed plaintext auth)", + lpChannel->GetIPAddress().c_str(), strUser.c_str()); +@@ -431,7 +431,7 @@ + HRESULT hr = hrSuccess; + char *plain = lpConfig->GetSetting("disable_plaintext_auth"); + +- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) { ++ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) { + hr = HrResponse(POP3_RESP_AUTH_ERROR, "Plaintext authentication disallowed on non-secure (SSL/TLS) connections"); + if(szUser.empty()) + lpLogger->Log(EC_LOGLEVEL_ERROR, "Aborted login from %s without username (tried to use disallowed " +--- zarafa-7.1.11/doc/manual.xml 2014-09-03 09:56:28.000000000 +0200 ++++ zarafa-7.1.11/doc/manual.xml.plaintext_auth_localhost 2014-10-15 01:22:14.000000000 +0200 +@@ -8024,7 +8024,9 @@ + + + Disable all plaintext POP3 and IMAP authentications unless +- SSL/TLS is used. Obviously this requires at least ++ SSL/TLS is used (except for connections originating from ++ 127.0.0.1 to allow saslauthd with rimap). ++ Obviously enabling this configuration option requires at least + ssl_private_key_file and + ssl_certificate_file to take effect. + Default: no diff --git a/zarafa-7.0.9-rpath.patch b/zarafa-7.1.11-rpath.patch similarity index 87% rename from zarafa-7.0.9-rpath.patch rename to zarafa-7.1.11-rpath.patch index 47c5c3b..88ac16f 100644 --- a/zarafa-7.0.9-rpath.patch +++ b/zarafa-7.1.11-rpath.patch @@ -1,4 +1,4 @@ -Patch by Robert Scheck for zarafa >= 7.0.9, which works +Patch by Robert Scheck for zarafa >= 7.1.11, which works around the broken libtool of Debian. Multilib/multiarch systems like Fedora or Red Hat Enterprise Linux are using /usr/lib64 for 64 bit libraries and /usr/lib is used for 32 bit libraries. That allows to run 32 bit software on 64 bit systems. Debian @@ -26,7 +26,7 @@ hunk is runtime-only if configure file has been already generated) or by running the following sed command after each aclocal run within the upstream build system: sed -e 's@\(# Append ld.so.conf contents to the search path\)@# Add ABI-specific directories to the system library path.\n sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"\n\n \1@' \ - -e 's@/lib /usr/lib $lt_ld_extra@$sys_lib_dlsearch_path_spec $lt_ld_extra@' -i zarafa-6.40.5/aclocal.m4 + -e 's@/lib /usr/lib $lt_ld_extra@$sys_lib_dlsearch_path_spec $lt_ld_extra@' -i zarafa-7.1.11/aclocal.m4 More information regarding this topic can be found for example at: @@ -34,9 +34,9 @@ More information regarding this topic can be found for example at: - http://lists.gnu.org/archive/html/libtool/2009-01/msg00039.html - http://thread.gmane.org/gmane.comp.gnu.libtool.general/8339/focus=8345 ---- zarafa-7.0.9/aclocal.m4 2012-08-03 13:58:18.000000000 +0200 -+++ zarafa-7.0.9/aclocal.m4.rpath 2012-08-12 22:57:31.000000000 +0200 -@@ -2485,10 +2485,13 @@ +--- zarafa-7.1.11/aclocal.m4 2014-09-03 09:56:52.000000000 +0200 ++++ zarafa-7.1.11/aclocal.m4.rpath 2014-09-07 17:20:37.000000000 +0200 +@@ -2672,10 +2672,13 @@ # before this can be enabled. hardcode_into_libs=yes @@ -45,15 +45,15 @@ More information regarding this topic can be found for example at: + # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on ---- zarafa-7.0.9/configure 2012-08-03 13:58:18.000000000 +0200 -+++ zarafa-7.0.9/configure.rpath 2012-08-12 22:59:05.000000000 +0200 -@@ -10097,10 +10097,13 @@ +--- zarafa-7.1.11/configure 2014-09-03 09:56:53.000000000 +0200 ++++ zarafa-7.1.11/configure.rpath 2014-09-07 17:28:07.000000000 +0200 +@@ -10983,10 +10983,13 @@ # before this can be enabled. hardcode_into_libs=yes @@ -62,13 +62,13 @@ More information regarding this topic can be found for example at: + # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on -@@ -15288,10 +15291,13 @@ +@@ -16025,10 +16028,13 @@ # before this can be enabled. hardcode_into_libs=yes @@ -77,7 +77,7 @@ More information regarding this topic can be found for example at: + # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi diff --git a/zarafa-7.1.9-ssl_ecdhe.patch b/zarafa-7.1.9-ssl_ecdhe.patch new file mode 100644 index 0000000..f1a1a8e --- /dev/null +++ b/zarafa-7.1.9-ssl_ecdhe.patch @@ -0,0 +1,82 @@ +Patch by Robert Scheck for Zarafa <= 7.1.9 which implements ECDHE (elliptic +curve diffie-hellman key exchange) support. http://en.wikipedia.org/wiki/Elliptic_curve_cryptography is +providing more information about elliptic curves. + +Suggestions for testing; run the following openssl(1) commands before and after applying this patch: + +1. echo QUIT | openssl s_client -connect :110 -starttls pop3 2>&1 | grep Cipher +2. echo QUIT | openssl s_client -connect :143 -starttls imap 2>&1 | grep Cipher +3. echo QUIT | openssl s_client -connect :237 2>&1 | grep Cipher +4. echo QUIT | openssl s_client -connect :993 2>&1 | grep Cipher +5. echo QUIT | openssl s_client -connect :995 2>&1 | grep Cipher +6. echo QUIT | openssl s_client -connect :8443 2>&1 | grep Cipher + +After applying this patch the output should contain e.g. "ECDHE-RSA-AES256-GCM-SHA384" on a Red Hat +Enterprise Linux 6.5 (only RHEL >= 6.5 has support for elliptic curve). Without this patch the result +is e.g. "AES256-GCM-SHA384". + +Important: The technical implementation of this patch might be not perfect as I am not really a C/C++ +developer. The logic and the implementation is heavily based on Sendmail. There should be a code review +by an experienced C/C++ and OpenSSL developer before merging into Zarafa core. + +This patch should be only applied after ZCP-12143 and its dependencies. However this patch might maybe +not directly apply due to some previous merge issues as mentioned in Ticket#2014030810000131. + +--- zarafa-7.1.9/common/ECChannel.cpp 2014-04-13 23:46:59.000000000 +0200 ++++ zarafa-7.1.9/common/ECChannel.cpp.ssl_ecdhe 2014-04-13 23:59:43.000000000 +0200 +@@ -97,6 +97,9 @@ + char *ssl_name; + int ssl_proto, ssl_op = 0, ssl_include = 0, ssl_exclude = 0; + bool ssl_neg; ++#if !defined(OPENSSL_NO_ECDH) && defined(NID_X9_62_prime256v1) ++ EC_KEY *ecdh; ++#endif + + if (lpConfig == NULL) { + hr = MAPI_E_CALL_FAILED; +@@ -113,6 +116,16 @@ + lpCTX = SSL_CTX_new(SSLv23_server_method()); + SSL_CTX_set_options(lpCTX, SSL_OP_ALL); + ++#if !defined(OPENSSL_NO_ECDH) && defined(NID_X9_62_prime256v1) ++ ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); ++ ++ if (ecdh != NULL) { ++ SSL_CTX_set_options(lpCTX, SSL_OP_SINGLE_ECDH_USE); ++ SSL_CTX_set_tmp_ecdh(lpCTX, ecdh); ++ EC_KEY_free(ecdh); ++ } ++#endif ++ + ssl_name = strtok(ssl_protocols, " "); + while(ssl_name != NULL) { + if (*ssl_name != '!') +--- zarafa-7.1.9/provider/server/ECSoapServerConnection.cpp 2014-04-13 23:46:59.000000000 +0200 ++++ zarafa-7.1.9/provider/server/ECSoapServerConnection.cpp.ssl_ecdhe 2014-04-14 00:00:54.000000000 +0200 +@@ -245,6 +245,9 @@ + char *ssl_name; + int ssl_proto, ssl_op = 0, ssl_include = 0, ssl_exclude = 0; + bool ssl_neg; ++#if !defined(OPENSSL_NO_ECDH) && defined(NID_X9_62_prime256v1) ++ EC_KEY *ecdh; ++#endif + + if(lpServerName == NULL) { + er = ZARAFA_E_INVALID_PARAMETER; +@@ -277,6 +280,16 @@ + + SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_ALL); + ++#if !defined(OPENSSL_NO_ECDH) && defined(NID_X9_62_prime256v1) ++ ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); ++ ++ if (ecdh != NULL) { ++ SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_SINGLE_ECDH_USE); ++ SSL_CTX_set_tmp_ecdh(lpsSoap->ctx, ecdh); ++ EC_KEY_free(ecdh); ++ } ++#endif ++ + ssl_name = strtok(server_ssl_protocols, " "); + while(ssl_name != NULL) { + if (*ssl_name != '!') diff --git a/zarafa.spec b/zarafa.spec index 3da0cf1..6801a2b 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 -%global actual_release 5 -%global svnrevision 44973 +%global actual_release 1 +%global svnrevision 46050 %global with_search 1 %global with_ldap 1 %global with_xmlto 1 @@ -10,6 +10,7 @@ %global with_gsoap 0 %endif %global no_multiupload 1 +%global no_bundled_php 1 %global php_apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1) %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") @@ -30,9 +31,9 @@ Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.1.10 +Version: 7.1.11 %if %{beta_or_rc} -Release: 0.%{actual_release}.svn%{svnrevision}%{?dist}.1 +Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else Release: %{actual_release}%{?dist} %endif @@ -53,9 +54,12 @@ Source1: %{name}.ini Source2: %{name}.logrotate Source3: %{name}-webaccess.conf -Patch0: zarafa-7.0.9-rpath.patch -Patch1: zarafa-7.1.10-kyotocabinet.patch -Patch2: zarafa-7.1.10-mariadb.patch +Patch0: zarafa-7.1.11-rpath.patch +Patch1: zarafa-7.1.11-php-unbundle.patch +Patch2: zarafa-7.1.10-kyotocabinet.patch +Patch3: zarafa-7.1.10-ssl_protocols_ciphers.patch +Patch4: zarafa-7.1.9-ssl_ecdhe.patch +Patch5: zarafa-7.1.11-plaintext_auth_localhost.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -315,6 +319,9 @@ Requires: mod_php >= 4.3 %else Requires: php >= 4.3, php-openssl %endif +%if %{no_bundled_php} +Requires: php-json, php-pear-XML-Serializer +%endif %if 0%{?rhel}%{?fedora} > 5 BuildArch: noarch %endif @@ -377,8 +384,13 @@ to interact with Zarafa. %setup -q %patch0 -p1 -b .rpath touch -c -r aclocal.m4.rpath aclocal.m4 -%patch1 -p1 -b .kyotocabinet -%patch2 -p1 -b .mariadb +%if %{no_bundled_php} +%patch1 -p1 -b .php-unbundle +%endif +%patch2 -p1 -b .kyotocabinet +%patch3 -p1 -b .ssl_protocols_ciphers +%patch4 -p1 -b .ssl_ecdhe +%patch5 -p1 -b .disable_plaintext_auth-localhost %build %if 0%{?rhel}%{?fedora} < 6 @@ -522,7 +534,7 @@ mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/plugins/ # Remove unwanted language connectors and webaccess files rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/client/widgets/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.{cfm,pl} -rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.htaccess,%{name}-webaccess.conf} +rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.htaccess,%{name}-webaccess.conf,senddocument.php} # Remove flash-based multi-attachment upload (missing source) %if %{no_multiupload} @@ -533,6 +545,12 @@ mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/client/widgets/swfupload/ %endif +# Remove bundled PHP PEAR files/libraries +%if %{no_bundled_php} +rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/server/PEAR +rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.,server/core}/*.php-unbundle +%endif + # Remove files only required by proprietary web services rm -rf $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/ws.cfg,%{_datadir}/zarafa/timezones} @@ -916,6 +934,13 @@ fi %{python_sitearch}/* %changelog +* Wed Oct 15 2014 Robert Scheck 7.1.11-1 +- 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 + * Tue Aug 26 2014 David Tardon - 7.1.10-5 - rebuild for ICU 53.1 From 510c99822c921c2754506ee30d195a870a327490 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Wed, 15 Oct 2014 03:38:30 +0200 Subject: [PATCH 67/69] Also upload sources :) --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index b03ae3d..cfbf649 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -244bf320f811fd375cfb8cb82bd324eb zcp-7.1.10.tar.gz +7317dd7889303abbbd30e39f04771f10 zcp-7.1.11.tar.gz From 2fe388869b31fa6faf57daead3083d8bb95bdc4d Mon Sep 17 00:00:00 2001 From: Kevin Kofler Date: Sun, 26 Oct 2014 00:21:57 +0200 Subject: [PATCH 68/69] Rebuild for reference-counting-enabled clucene09 * Sat Oct 25 2014 Kevin Kofler 7.1.11-2 - Rebuild for reference-counting-enabled clucene09 --- zarafa.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zarafa.spec b/zarafa.spec index 6801a2b..13819dc 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,5 +1,5 @@ %global beta_or_rc 0 -%global actual_release 1 +%global actual_release 2 %global svnrevision 46050 %global with_search 1 %global with_ldap 1 @@ -934,6 +934,9 @@ fi %{python_sitearch}/* %changelog +* Sat Oct 25 2014 Kevin Kofler 7.1.11-2 +- Rebuild for reference-counting-enabled clucene09 + * Wed Oct 15 2014 Robert Scheck 7.1.11-1 - Upgrade to 7.1.11 (#1139442) - Removed bundled PHP PEAR files/libraries From edecf3addf21c16ba1cc8cbfb8b877d5526f848f Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Sun, 7 Dec 2014 19:58:25 +0100 Subject: [PATCH 69/69] Package is retired --- .gitignore | 1 - dead.package | 1 + sources | 1 - zarafa-7.1.10-kyotocabinet.patch | 28 - zarafa-7.1.10-ssl_protocols_ciphers.patch | 446 ------- zarafa-7.1.11-php-unbundle.patch | 39 - zarafa-7.1.11-plaintext_auth_localhost.patch | 88 -- zarafa-7.1.11-rpath.patch | 85 -- zarafa-7.1.9-ssl_ecdhe.patch | 82 -- zarafa-webaccess.conf | 48 - zarafa.ini | 2 - zarafa.logrotate | 100 -- zarafa.spec | 1136 ------------------ 13 files changed, 1 insertion(+), 2056 deletions(-) delete mode 100644 .gitignore create mode 100644 dead.package delete mode 100644 sources delete mode 100644 zarafa-7.1.10-kyotocabinet.patch delete mode 100644 zarafa-7.1.10-ssl_protocols_ciphers.patch delete mode 100644 zarafa-7.1.11-php-unbundle.patch delete mode 100644 zarafa-7.1.11-plaintext_auth_localhost.patch delete mode 100644 zarafa-7.1.11-rpath.patch delete mode 100644 zarafa-7.1.9-ssl_ecdhe.patch delete mode 100644 zarafa-webaccess.conf delete mode 100644 zarafa.ini delete mode 100644 zarafa.logrotate delete mode 100644 zarafa.spec diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 594d8b8..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -zcp-7.?.*.tar.gz diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..0f98991 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Package is retired diff --git a/sources b/sources deleted file mode 100644 index cfbf649..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -7317dd7889303abbbd30e39f04771f10 zcp-7.1.11.tar.gz diff --git a/zarafa-7.1.10-kyotocabinet.patch b/zarafa-7.1.10-kyotocabinet.patch deleted file mode 100644 index 43e62a3..0000000 --- a/zarafa-7.1.10-kyotocabinet.patch +++ /dev/null @@ -1,28 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.1.10 which re-adds the ability to disable -zarafa-search during build-time. This is e.g. required if CLucene and/or Kyotocabinet is unavailable or -broken on the given system and/or architecture. Interestingly that patch is not new, I wrote these lines -in 2012 the first time, proposed them as a patch to Zarafa and got merged. With a recent Zarafa release it -seems they silently removed it again... - ---- zarafa-7.1.10/ECtools/zarafa-search/Makefile.am 2014-05-23 15:03:49.000000000 +0200 -+++ zarafa-7.1.10/ECtools/zarafa-search/Makefile.am.kyotocabinet 2014-07-10 21:48:42.000000000 +0200 -@@ -1,4 +1,8 @@ -+if WITH_CLUCENE -+if WITH_KYOTOCABINET - bin_PROGRAMS = zarafa-search -+endif -+endif - - AM_CPPFLAGS = ${ZCPPFLAGS} \ - -I${top_srcdir}/mapi4linux/include \ ---- zarafa-7.1.10/ECtools/zarafa-search/Makefile.in 2014-05-23 15:04:02.000000000 +0200 -+++ zarafa-7.1.10/ECtools/zarafa-search/Makefile.in.kyotocabinet 2014-07-10 21:49:16.000000000 +0200 -@@ -34,7 +34,7 @@ - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ --bin_PROGRAMS = zarafa-search$(EXEEXT) -+@WITH_CLUCENE_TRUE@@WITH_KYOTOCABINET_TRUE@bin_PROGRAMS = zarafa-search$(EXEEXT) - subdir = ECtools/zarafa-search - DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 diff --git a/zarafa-7.1.10-ssl_protocols_ciphers.patch b/zarafa-7.1.10-ssl_protocols_ciphers.patch deleted file mode 100644 index 756d2fd..0000000 --- a/zarafa-7.1.10-ssl_protocols_ciphers.patch +++ /dev/null @@ -1,446 +0,0 @@ -Patch by Robert Scheck for Zarafa <= 7.1.10 which implements much more -fine granulated configuration settings for SSL/TLS protocol and cipher enabling and disabling. The -currently available "ssl_enable_v2" setting allows either to disable SSLv2 (and enables SSLv3 only -instead) or to enable all, thus SSLv2, SSLv3, TLSv1, TLSv1.1 and TLSv1.2 (TLSv1.1 and TLSv1.2 only -if Zarafa was linked against OpenSSL 1.0.1 or later). Since SSLv2 has known protocol weaknesses it -never should be enabled - but for Zarafa it currently must be enabled to support TLSv1 and better. - -This patch introduces the new setting "ssl_protocols" which replaces "ssl_enable_v2". The default -is "!SSLv2" to simply disable SSLv2 by default. The setting can be filled either with SSL protocols -that shall be enabled and/or disabled, e.g. "SSLv3 TLSv1" or "!SSLv2 !SSLv3". However only the more -usual disable/exclude option should be used as this does not exclude future protocols by default. - -Further this patch introduces the completely new setting "ssl_ciphers". This one allows to set SSL -cipher suites. Right now, all SSL ciphers are accepted which is just weak or might Zarafa even make -even vulnerable to known SSL attacks. The German Federal Office for Information Security (BSI) says -that RC4 should not be used anymore - but Zarafa does it by default. And without this patch there -is also no way for Zarafa administrators to avoid that. Indeed this setting has the risk to get the -administrators ending up in a cipher mismatch between different systems but this new setting still -could be declared as officially unsupported and only for the brave ones who know what they do. Thus -the default is already set to something less weak than before but still below BSI recommendations. - -Finally this patch introduces the also new setting "ssl_prefer_server_ciphers". It does what it is -named after: When choosing a cipher during an SSL/TLS handshake, normally the client's preference -is used. If this setting is enabled, the server's preference will be used instead. This comes handy -to administrators for strange cipher orderings required for special configurations and clients - or -new weaknesses where workarounds are required for the time being. - -Testing: Configure zarafa-gateway, zarafa-ical and zarafa-server for cleartext and SSL as usual. -Try to login via POP3S, IMAPS, CalDAV-SSL and MAPI in SOAP over HTTPS. Change SSL protocols and the -ciphers to something more weak ("SSLv2" and "LOW") or to something more strong ("TLSv1.2" and e.g. -"HIGH"). During all my tests I did not figure out any newly introduced issue or Zarafa breakage. - -Important: The technical implementation of this patch might be not perfect as I am not really a C/ -C++ developer. The logic and the implementation is heavily based on Dovecot, Postfix and hints from -https://docs.fedoraproject.org/en-US/Fedora_Security_Team/html/Defensive_Coding/. There should be -a code review and code clean up by an experienced C/C++ developer before merging into Zarafa core. - -This patch should be only applied in conjuction with the POP3 RESP-CODES and AUTH-RESP-CODE patch, -the POP3 CAPA (CAPABILITIES) patch as well as the POP3 STLS (STARTTLS) patch applied before. - ---- zarafa-7.1.10/caldav/CalDAV.cpp 2014-05-23 15:56:36.000000000 +0200 -+++ zarafa-7.1.10/caldav/CalDAV.cpp.rsc 2014-08-12 19:45:04.000000000 +0200 -@@ -220,7 +220,9 @@ - { "log_timestamp", "1" }, - { "ssl_private_key_file", "/etc/zarafa/ical/privkey.pem" }, - { "ssl_certificate_file", "/etc/zarafa/ical/cert.pem" }, -- { "ssl_enable_v2", "no" }, -+ { "ssl_protocols", "!SSLv2" }, -+ { "ssl_ciphers", "ALL:!LOW:!SSLv2:!EXP:!aNULL" }, -+ { "ssl_prefer_server_ciphers", "no" }, - { "ssl_verify_client", "no" }, - { "ssl_verify_file", "" }, - { "ssl_verify_path", "" }, ---- zarafa-7.1.10/common/ECChannel.cpp 2014-05-23 15:56:36.000000000 +0200 -+++ zarafa-7.1.10/common/ECChannel.cpp.rsc 2014-08-12 19:48:00.000000000 +0200 -@@ -92,6 +92,11 @@ - HRESULT hr = hrSuccess; - char *szFile = NULL; - char *szPath = NULL; -+ char *ssl_protocols = strdup(lpConfig->GetSetting("ssl_protocols")); -+ char *ssl_ciphers = lpConfig->GetSetting("ssl_ciphers"); -+ char *ssl_name; -+ int ssl_proto, ssl_op = 0, ssl_include = 0, ssl_exclude = 0; -+ bool ssl_neg; - - if (lpConfig == NULL) { - hr = MAPI_E_CALL_FAILED; -@@ -107,11 +112,79 @@ - SSL_load_error_strings(); - lpCTX = SSL_CTX_new(SSLv23_server_method()); - SSL_CTX_set_options(lpCTX, SSL_OP_ALL); -- SSL_CTX_set_default_verify_paths(lpCTX); - -- // disable SSLv2 support -- if (!parseBool(lpConfig->GetSetting("ssl_enable_v2", "", "no"))) -- SSL_CTX_set_options(lpCTX, SSL_OP_NO_SSLv2); -+ ssl_name = strtok(ssl_protocols, " "); -+ while(ssl_name != NULL) { -+ if (*ssl_name != '!') -+ ssl_neg = FALSE; -+ else { -+ ssl_name++; -+ ssl_neg = TRUE; -+ } -+ -+ if (strcasecmp(ssl_name, SSL_TXT_SSLV2) == 0) -+ ssl_proto = 0x01; -+ else if (strcasecmp(ssl_name, SSL_TXT_SSLV3) == 0) -+ ssl_proto = 0x02; -+ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1) == 0) -+ ssl_proto = 0x04; -+#ifdef SSL_TXT_TLSV1_1 -+ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1_1) == 0) -+ ssl_proto = 0x08; -+#endif -+#ifdef SSL_TXT_TLSV1_2 -+ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1_2) == 0) -+ ssl_proto = 0x10; -+#endif -+ else { -+ lpLogger->Log(EC_LOGLEVEL_ERROR, "Unknown protocol '%s' in ssl_protocols setting", ssl_name); -+ hr = MAPI_E_CALL_FAILED; -+ goto exit; -+ } -+ -+ if (ssl_neg) -+ ssl_exclude |= ssl_proto; -+ else -+ ssl_include |= ssl_proto; -+ -+ ssl_name = strtok(NULL, " "); -+ } -+ -+ if (ssl_include != 0) { -+ // Exclude everything, except those that are included (and let excludes still override those) -+ ssl_exclude |= 0x1f & ~ssl_include; -+ } -+ -+ if ((ssl_exclude & 0x01) != 0) -+ ssl_op |= SSL_OP_NO_SSLv2; -+ if ((ssl_exclude & 0x02) != 0) -+ ssl_op |= SSL_OP_NO_SSLv3; -+ if ((ssl_exclude & 0x04) != 0) -+ ssl_op |= SSL_OP_NO_TLSv1; -+#ifdef SSL_OP_NO_TLSv1_1 -+ if ((ssl_exclude & 0x08) != 0) -+ ssl_op |= SSL_OP_NO_TLSv1_1; -+#endif -+#ifdef SSL_OP_NO_TLSv1_2 -+ if ((ssl_exclude & 0x10) != 0) -+ ssl_op |= SSL_OP_NO_TLSv1_2; -+#endif -+ -+ if (ssl_protocols) { -+ SSL_CTX_set_options(lpCTX, ssl_op); -+ } -+ -+ if (ssl_ciphers && SSL_CTX_set_cipher_list(lpCTX, ssl_ciphers) != 1) { -+ lpLogger->Log(EC_LOGLEVEL_ERROR, "Can not set SSL cipher list to '%s': %s", ssl_ciphers, ERR_error_string(ERR_get_error(), 0)); -+ hr = MAPI_E_CALL_FAILED; -+ goto exit; -+ } -+ -+ if (parseBool(lpConfig->GetSetting("ssl_prefer_server_ciphers"))) { -+ SSL_CTX_set_options(lpCTX, SSL_OP_CIPHER_SERVER_PREFERENCE); -+ } -+ -+ SSL_CTX_set_default_verify_paths(lpCTX); - - if (SSL_CTX_use_certificate_chain_file(lpCTX, lpConfig->GetSetting("ssl_certificate_file")) != 1) { - lpLogger->Log(EC_LOGLEVEL_ERROR, "SSL CTX certificate file error: %s", ERR_error_string(ERR_get_error(), 0)); ---- zarafa-7.1.10/doc/manual.xml 2014-05-23 15:01:13.000000000 +0200 -+++ zarafa-7.1.10/doc/manual.xml.rsc 2014-08-12 19:45:04.000000000 +0200 -@@ -4226,11 +4226,33 @@ - - - -- -+ - -- Incoming SSL connections normally are v3. -- Default: no -- -+ Disabled or enabled protocol names. Supported protocol names -+ are SSLv2, SSLv3 -+ and TLSv1. If Zarafa was linked against -+ OpenSSL 1.0.1 or later there is additional support for the new protocols -+ TLSv1.1 and TLSv1.2. -+ To exclude both, SSLv2 and SSLv3 set -+ to !SSLv2 !SSLv3. SSLv2 is considered unsafe -+ and these connections should not be accepted. -+ Default: !SSLv2 -+ -+ -+ -+ -+ -+ -+ SSL ciphers to use, set to ALL for backward compatibility. -+ Default: ALL:!LOW:!SSLv2:!EXP:!aNULL -+ -+ -+ -+ -+ -+ -+ Prefer the server's order of SSL ciphers over client's. -+ Default: no - - - -@@ -8070,11 +8092,32 @@ - - - -- -+ -+ -+ Disabled or enabled protocol names. Supported protocol names -+ are SSLv2, SSLv3 -+ and TLSv1. If Zarafa was linked against -+ OpenSSL 1.0.1 or later there is additional support for the new protocols -+ TLSv1.1 and TLSv1.2. -+ To exclude both, SSLv2 and SSLv3 set -+ to !SSLv2 !SSLv3. SSLv2 is considered unsafe -+ and these connections should not be accepted. -+ Default: !SSLv2 -+ -+ -+ -+ -+ -+ -+ SSL ciphers to use, set to ALL for backward compatibility. -+ Default: ALL:!LOW:!SSLv2:!EXP:!aNULL -+ -+ -+ -+ -+ - -- Accept SSLv2 only connections. SSLv2 is considered -- unsafe, and these connections should not be -- accepted. -+ Prefer the server's order of SSL ciphers over client's. - Default: no - - -@@ -10075,11 +10118,32 @@ - - - -- -+ -+ -+ Disabled or enabled protocol names. Supported protocol names -+ are SSLv2, SSLv3 -+ and TLSv1. If Zarafa was linked against -+ OpenSSL 1.0.1 or later there is additional support for the new protocols -+ TLSv1.1 and TLSv1.2. -+ To exclude both, SSLv2 and SSLv3 set -+ to !SSLv2 !SSLv3. SSLv2 is considered unsafe -+ and these connections should not be accepted. -+ Default: !SSLv2 -+ -+ -+ -+ -+ -+ -+ SSL ciphers to use, set to ALL for backward compatibility. -+ Default: ALL:!LOW:!SSLv2:!EXP:!aNULL -+ -+ -+ -+ -+ - -- Accept SSLv2 only connections. SSLv2 is considered -- unsafe, and these connections should not be -- accepted. -+ Prefer the server's order of SSL ciphers over client's. - Default: no - - ---- zarafa-7.1.10/gateway/Gateway.cpp 2014-05-23 15:56:37.000000000 +0200 -+++ zarafa-7.1.10/gateway/Gateway.cpp.rsc 2014-08-12 19:45:04.000000000 +0200 -@@ -365,7 +365,9 @@ - { "ssl_verify_client", "no" }, - { "ssl_verify_file", "" }, - { "ssl_verify_path", "" }, -- { "ssl_enable_v2", "no" }, -+ { "ssl_protocols", "!SSLv2" }, -+ { "ssl_ciphers", "ALL:!LOW:!SSLv2:!EXP:!aNULL" }, -+ { "ssl_prefer_server_ciphers", "no" }, - { "log_method", "file" }, - { "log_file", "-" }, - { "log_level", "2", CONFIGSETTING_RELOADABLE }, ---- zarafa-7.1.10/installer/linux/gateway.cfg 2014-05-23 15:03:19.000000000 +0200 -+++ zarafa-7.1.10/installer/linux/gateway.cfg.rsc 2014-08-12 19:45:04.000000000 +0200 -@@ -84,8 +84,14 @@ - ssl_verify_file = - ssl_verify_path = - --# Accept SSLv2 only incoming connections --ssl_enable_v2 = no -+# SSL protocols to use, set to '!SSLv2' for 'ssl_enable_v2 = no' -+ssl_protocols = !SSLv2 -+ -+# SSL ciphers to use, set to 'ALL' for backward compatibility -+ssl_ciphers = ALL:!LOW:!SSLv2:!EXP:!aNULL -+ -+# Prefer the server's order of SSL ciphers over client's -+ssl_prefer_server_ciphers = no - - # Process model, using pthreads (thread) or processes (fork) - process_model = fork ---- zarafa-7.1.10/installer/linux/ical.cfg 2014-05-23 15:03:19.000000000 +0200 -+++ zarafa-7.1.10/installer/linux/ical.cfg.rsc 2014-08-12 19:45:04.000000000 +0200 -@@ -66,8 +66,14 @@ - ssl_verify_file = - ssl_verify_path = - --# Accept SSLv2 only incoming connections --ssl_enable_v2 = no -+# SSL protocols to use, set to '!SSLv2' for 'ssl_enable_v2 = no' -+ssl_protocols = !SSLv2 -+ -+# SSL ciphers to use, set to 'ALL' for backward compatibility -+ssl_ciphers = ALL:!LOW:!SSLv2:!EXP:!aNULL -+ -+# Prefer the server's order of SSL ciphers over client's -+ssl_prefer_server_ciphers = no - - ############################################################## - # OTHER ICAL SETTINGS ---- zarafa-7.1.10/installer/linux/server.cfg 2014-05-23 15:03:19.000000000 +0200 -+++ zarafa-7.1.10/installer/linux/server.cfg.rsc 2014-08-12 19:45:04.000000000 +0200 -@@ -154,8 +154,14 @@ - # Path with CA certificates, e.g. /etc/ssl/certs - server_ssl_ca_path = - --# Accept SSLv2 only connections. Normally v3 connections are used. --server_ssl_enable_v2 = no -+# SSL protocols to use, set to '!SSLv2' for 'server_ssl_enable_v2 = no' -+server_ssl_protocols = !SSLv2 -+ -+# SSL ciphers to use, set to 'ALL' for backward compatibility -+server_ssl_ciphers = ALL:!LOW:!SSLv2:!EXP:!aNULL -+ -+# Prefer the server's order of SSL ciphers over client's -+server_ssl_prefer_server_ciphers = no - - # Path of SSL Public keys of clients - sslkeys_path = /etc/zarafa/sslkeys ---- zarafa-7.1.10/provider/server/ECServer.cpp 2014-05-23 15:56:37.000000000 +0200 -+++ zarafa-7.1.10/provider/server/ECServer.cpp.rsc 2014-08-12 19:45:04.000000000 +0200 -@@ -919,7 +919,9 @@ - { "server_ssl_key_pass", "server", CONFIGSETTING_EXACT }, - { "server_ssl_ca_file", "/etc/zarafa/ssl/cacert.pem" }, - { "server_ssl_ca_path", "" }, -- { "server_ssl_enable_v2", "no" }, -+ { "server_ssl_protocols", "!SSLv2" }, -+ { "server_ssl_ciphers", "ALL:!LOW:!SSLv2:!EXP:!aNULL" }, -+ { "server_ssl_prefer_server_ciphers", "no" }, - { "sslkeys_path", "/etc/zarafa/sslkeys" }, // login keys - // Database options - { "database_engine", "mysql" }, ---- zarafa-7.1.10/provider/server/ECSoapServerConnection.cpp 2014-05-23 15:56:37.000000000 +0200 -+++ zarafa-7.1.10/provider/server/ECSoapServerConnection.cpp.rsc 2014-08-12 19:45:04.000000000 +0200 -@@ -240,6 +240,11 @@ - ECRESULT er = erSuccess; - int socket = SOAP_INVALID_SOCKET; - struct soap *lpsSoap = NULL; -+ char *server_ssl_protocols = strdup(m_lpConfig->GetSetting("server_ssl_protocols")); -+ char *server_ssl_ciphers = m_lpConfig->GetSetting("server_ssl_ciphers"); -+ char *ssl_name; -+ int ssl_proto, ssl_op = 0, ssl_include = 0, ssl_exclude = 0; -+ bool ssl_neg; - - if(lpServerName == NULL) { - er = ZARAFA_E_INVALID_PARAMETER; -@@ -270,10 +275,79 @@ - goto exit; - } - -- // disable SSLv2 support -- if (!parseBool(m_lpConfig->GetSetting("server_ssl_enable_v2", "", "no"))) -- SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_NO_SSLv2); -- -+ SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_ALL); -+ -+ ssl_name = strtok(server_ssl_protocols, " "); -+ while(ssl_name != NULL) { -+ if (*ssl_name != '!') -+ ssl_neg = FALSE; -+ else { -+ ssl_name++; -+ ssl_neg = TRUE; -+ } -+ -+ if (strcasecmp(ssl_name, SSL_TXT_SSLV2) == 0) -+ ssl_proto = 0x01; -+ else if (strcasecmp(ssl_name, SSL_TXT_SSLV3) == 0) -+ ssl_proto = 0x02; -+ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1) == 0) -+ ssl_proto = 0x04; -+#ifdef SSL_TXT_TLSV1_1 -+ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1_1) == 0) -+ ssl_proto = 0x08; -+#endif -+#ifdef SSL_TXT_TLSV1_2 -+ else if (strcasecmp(ssl_name, SSL_TXT_TLSV1_2) == 0) -+ ssl_proto = 0x10; -+#endif -+ else { -+ m_lpLogger->Log(EC_LOGLEVEL_FATAL, "Unknown protocol '%s' in server_ssl_protocols setting", ssl_name); -+ er = ZARAFA_E_CALL_FAILED; -+ goto exit; -+ } -+ -+ if (ssl_neg) -+ ssl_exclude |= ssl_proto; -+ else -+ ssl_include |= ssl_proto; -+ -+ ssl_name = strtok(NULL, " "); -+ } -+ -+ if (ssl_include != 0) { -+ // Exclude everything, except those that are included (and let excludes still override those) -+ ssl_exclude |= 0x1f & ~ssl_include; -+ } -+ -+ if ((ssl_exclude & 0x01) != 0) -+ ssl_op |= SSL_OP_NO_SSLv2; -+ if ((ssl_exclude & 0x02) != 0) -+ ssl_op |= SSL_OP_NO_SSLv3; -+ if ((ssl_exclude & 0x04) != 0) -+ ssl_op |= SSL_OP_NO_TLSv1; -+#ifdef SSL_OP_NO_TLSv1_1 -+ if ((ssl_exclude & 0x08) != 0) -+ ssl_op |= SSL_OP_NO_TLSv1_1; -+#endif -+#ifdef SSL_OP_NO_TLSv1_2 -+ if ((ssl_exclude & 0x10) != 0) -+ ssl_op |= SSL_OP_NO_TLSv1_2; -+#endif -+ -+ if (server_ssl_protocols) { -+ SSL_CTX_set_options(lpsSoap->ctx, ssl_op); -+ } -+ -+ if (server_ssl_ciphers && SSL_CTX_set_cipher_list(lpsSoap->ctx, server_ssl_ciphers) != 1) { -+ m_lpLogger->Log(EC_LOGLEVEL_FATAL, "Can not set SSL cipher list to '%s': %s", server_ssl_ciphers, ERR_error_string(ERR_get_error(), 0)); -+ er = ZARAFA_E_CALL_FAILED; -+ goto exit; -+ } -+ -+ if (parseBool(m_lpConfig->GetSetting("server_ssl_prefer_server_ciphers"))) { -+ SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_CIPHER_SERVER_PREFERENCE); -+ } -+ - // request certificate from client, is OK if not present. - SSL_CTX_set_verify(lpsSoap->ctx, SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE, NULL); - diff --git a/zarafa-7.1.11-php-unbundle.patch b/zarafa-7.1.11-php-unbundle.patch deleted file mode 100644 index 0934c0e..0000000 --- a/zarafa-7.1.11-php-unbundle.patch +++ /dev/null @@ -1,39 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.1.11 which removes the bundled PHP PEAR files/libraries -and replaces them by files and libraries shipped by the distribution. From file server/PEAR/JSON.php only the function -json_decode() is used, which can be provided by the php-json RPM package. The file server/PEAR/XML/Unserializer.php can -be provided by the php-pear-XML-Serializer RPM package. The rest of the PHP PEAR files/libraries are only dependencies of -these two files mentioned before (which are satisfied by the two newly required RPM packages). - ---- zarafa-7.1.11.rsc/php-webclient-ajax/config.php.dist 2014-09-03 09:56:49.000000000 +0200 -+++ zarafa-7.1.11.rsc/php-webclient-ajax/config.php.dist.php-unbundle 2014-09-07 18:24:28.000000000 +0200 -@@ -56,7 +56,7 @@ - - // Define the server paths - set_include_path(BASE_PATH. PATH_SEPARATOR . -- BASE_PATH."server/PEAR/" . PATH_SEPARATOR . -+ "/usr/share/pear/" . PATH_SEPARATOR . - "/usr/share/php/"); - - // Define the relative URL for dialogs, this string is appended with HTTP GET arguments ---- zarafa-7.1.11.rsc/php-webclient-ajax/zarafa.php 2014-09-03 10:45:06.000000000 +0200 -+++ zarafa-7.1.11.rsc/php-webclient-ajax/zarafa.php.php-unbundle 2014-09-07 18:21:36.000000000 +0200 -@@ -59,7 +59,7 @@ - include("config.php"); - include("defaults.php"); - include("server/util.php"); -- require("server/PEAR/JSON.php"); -+ @include("server/PEAR/JSON.php"); - - require("mapi/mapi.util.php"); - require("mapi/mapicode.php"); ---- zarafa-7.1.11.rsc/php-webclient-ajax/server/core/class.xmlparser.php 2014-09-03 10:45:06.000000000 +0200 -+++ zarafa-7.1.11.rsc/php-webclient-ajax/server/core/class.xmlparser.php.php-unbundle 2014-09-07 18:22:40.000000000 +0200 -@@ -50,7 +50,7 @@ - - ?> - for Zarafa <= 7.1.11 which enhances my earlier -this year implemented "disable_plaintext_auth" feature (new option in Zarafa >= 7.1.10 to disable -all plaintext authentications unless SSL/TLS is used), https://jira.zarafa.com/browse/ZCP-12142 -contains the initial implementation and a more verbose feature description. - -Given that there are unfortunately still Zarafa systems around using saslauthd without pam_mapi -but rimap instead the "disable_plaintext_auth" feature prevents them from enabling this option as -rimap doesn't support SSL/TLS; https://jira.zarafa.com/browse/ZCP-12473 contains an example report -by a Zarafa customer. Thus this patch adds an exception if the source IPv4 address is "127.0.0.1" -and allows even if "disable_plaintext_auth" is enabled a cleartext authentication. It was a design -decision to check only for 127.0.0.1/32 rather 127.0.0.0/8 because there seem to be systems where -the loopback network except 127.0.0.1/32 is routable?! - -Important: The technical implementation of this patch might be not perfect as I am not really a C/ -C++ developer. There should be a code review by an experienced C/C++ developer before merging into -Zarafa core. - ---- zarafa-7.1.11/gateway/IMAP.cpp 2014-09-03 10:45:06.000000000 +0200 -+++ zarafa-7.1.11/gateway/IMAP.cpp.plaintext_auth_localhost 2014-09-24 01:29:10.000000000 +0200 -@@ -757,7 +757,7 @@ - if (!lpChannel->UsingSsl() && lpChannel->sslctx()) - strCapabilities += " STARTTLS"; - -- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) -+ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) - strCapabilities += " LOGINDISABLED"; - else - strCapabilities += " AUTH=PLAIN"; -@@ -923,7 +923,7 @@ - char *plain = lpConfig->GetSetting("disable_plaintext_auth"); - - // If plaintext authentication was disabled any authentication attempt must be refused very soon -- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) { -+ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) { - hr2 = HrResponse(RESP_TAGGED_NO, strTag, "[PRIVACYREQUIRED] Plaintext authentication disallowed on non-secure " - "(SSL/TLS) connections."); - if (hr2 != hrSuccess) -@@ -1002,7 +1002,7 @@ - } - - // If plaintext authentication was disabled any login attempt must be refused very soon -- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) { -+ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) { - hr2 = HrResponse(RESP_UNTAGGED, "BAD [ALERT] Plaintext authentication not allowed without SSL/TLS, but your client " - "did it anyway. If anyone was listening, the password was exposed."); - if (hr2 != hrSuccess) ---- zarafa-7.1.11/gateway/POP3.cpp 2014-09-03 10:45:06.000000000 +0200 -+++ zarafa-7.1.11/gateway/POP3.cpp.plaintext_auth_localhost 2014-09-24 01:30:41.000000000 +0200 -@@ -320,7 +320,7 @@ - if (!lpChannel->UsingSsl() && lpChannel->sslctx()) - strCapabilities += "STLS\r\n"; - -- if (!(!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0)) -+ if (!(!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0)) - strCapabilities += "USER\r\n"; - } - -@@ -402,7 +402,7 @@ - HRESULT hr = hrSuccess; - char *plain = lpConfig->GetSetting("disable_plaintext_auth"); - -- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) { -+ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) { - hr = HrResponse(POP3_RESP_AUTH_ERROR, "Plaintext authentication disallowed on non-secure (SSL/TLS) connections"); - lpLogger->Log(EC_LOGLEVEL_ERROR, "Aborted login from %s with username \"%s\" (tried to use disallowed plaintext auth)", - lpChannel->GetIPAddress().c_str(), strUser.c_str()); -@@ -431,7 +431,7 @@ - HRESULT hr = hrSuccess; - char *plain = lpConfig->GetSetting("disable_plaintext_auth"); - -- if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0) { -+ if (!lpChannel->UsingSsl() && lpChannel->sslctx() && plain && strcmp(plain, "yes") == 0 && strcmp(lpChannel->GetIPAddress().c_str(), "127.0.0.1") != 0) { - hr = HrResponse(POP3_RESP_AUTH_ERROR, "Plaintext authentication disallowed on non-secure (SSL/TLS) connections"); - if(szUser.empty()) - lpLogger->Log(EC_LOGLEVEL_ERROR, "Aborted login from %s without username (tried to use disallowed " ---- zarafa-7.1.11/doc/manual.xml 2014-09-03 09:56:28.000000000 +0200 -+++ zarafa-7.1.11/doc/manual.xml.plaintext_auth_localhost 2014-10-15 01:22:14.000000000 +0200 -@@ -8024,7 +8024,9 @@ - - - Disable all plaintext POP3 and IMAP authentications unless -- SSL/TLS is used. Obviously this requires at least -+ SSL/TLS is used (except for connections originating from -+ 127.0.0.1 to allow saslauthd with rimap). -+ Obviously enabling this configuration option requires at least - ssl_private_key_file and - ssl_certificate_file to take effect. - Default: no diff --git a/zarafa-7.1.11-rpath.patch b/zarafa-7.1.11-rpath.patch deleted file mode 100644 index 88ac16f..0000000 --- a/zarafa-7.1.11-rpath.patch +++ /dev/null @@ -1,85 +0,0 @@ -Patch by Robert Scheck for zarafa >= 7.1.11, which works -around the broken libtool of Debian. Multilib/multiarch systems like Fedora or Red -Hat Enterprise Linux are using /usr/lib64 for 64 bit libraries and /usr/lib is used -for 32 bit libraries. That allows to run 32 bit software on 64 bit systems. Debian -systems only use /usr/lib which contains only 32 or 64 bit systems depending on the -architecture. - -Libtool hardcodes the runtime search path in a library (rpath), if the library that -is used for linking is not within the default system library path. The result is, -that if aclocal.m4/configure files are generated by a Debian system, but used on a -Fedora or Red Hat Enterprise Linux 64 bit system for compiling, "-rpath /usr/lib64" -makes it into the binary. - -Fedora and EPEL (for Red Hat Enterprise Linux) do not allow binaries with rpath, as -the Linux dynamic linker is usually smarter than the hardcoded path. - -The fix for this issue is to add the optional /lib64 and /usr/lib64 directories at/ -within libtool in front of the regular /lib and /usr/lib directories at the system -library path. These libtool information are hold in aclocal.m4, which is generated -by running aclocal. As the content of aclocal.m4 is included into configure during -a run of autoconf, aclocal.m4 needs to be modified within the upstream build system -each time after a aclocal run - until Debian's libtool is fixed at Debian upstream. - -Applying the fix is either possible by using the first hunk of the patch (second -hunk is runtime-only if configure file has been already generated) or by running -the following sed command after each aclocal run within the upstream build system: - - sed -e 's@\(# Append ld.so.conf contents to the search path\)@# Add ABI-specific directories to the system library path.\n sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"\n\n \1@' \ - -e 's@/lib /usr/lib $lt_ld_extra@$sys_lib_dlsearch_path_spec $lt_ld_extra@' -i zarafa-7.1.11/aclocal.m4 - -More information regarding this topic can be found for example at: - - - http://osdir.com/ml/bug-libtool-gnu/2009-12/msg00034.html - - http://lists.gnu.org/archive/html/libtool/2009-01/msg00039.html - - http://thread.gmane.org/gmane.comp.gnu.libtool.general/8339/focus=8345 - ---- zarafa-7.1.11/aclocal.m4 2014-09-03 09:56:52.000000000 +0200 -+++ zarafa-7.1.11/aclocal.m4.rpath 2014-09-07 17:20:37.000000000 +0200 -@@ -2672,10 +2672,13 @@ - # before this can be enabled. - hardcode_into_libs=yes - -+ # Add ABI-specific directories to the system library path. -+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" -+ - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on ---- zarafa-7.1.11/configure 2014-09-03 09:56:53.000000000 +0200 -+++ zarafa-7.1.11/configure.rpath 2014-09-07 17:28:07.000000000 +0200 -@@ -10983,10 +10983,13 @@ - # before this can be enabled. - hardcode_into_libs=yes - -+ # Add ABI-specific directories to the system library path. -+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" -+ - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on -@@ -16025,10 +16028,13 @@ - # before this can be enabled. - hardcode_into_libs=yes - -+ # Add ABI-specific directories to the system library path. -+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" -+ - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on diff --git a/zarafa-7.1.9-ssl_ecdhe.patch b/zarafa-7.1.9-ssl_ecdhe.patch deleted file mode 100644 index f1a1a8e..0000000 --- a/zarafa-7.1.9-ssl_ecdhe.patch +++ /dev/null @@ -1,82 +0,0 @@ -Patch by Robert Scheck for Zarafa <= 7.1.9 which implements ECDHE (elliptic -curve diffie-hellman key exchange) support. http://en.wikipedia.org/wiki/Elliptic_curve_cryptography is -providing more information about elliptic curves. - -Suggestions for testing; run the following openssl(1) commands before and after applying this patch: - -1. echo QUIT | openssl s_client -connect :110 -starttls pop3 2>&1 | grep Cipher -2. echo QUIT | openssl s_client -connect :143 -starttls imap 2>&1 | grep Cipher -3. echo QUIT | openssl s_client -connect :237 2>&1 | grep Cipher -4. echo QUIT | openssl s_client -connect :993 2>&1 | grep Cipher -5. echo QUIT | openssl s_client -connect :995 2>&1 | grep Cipher -6. echo QUIT | openssl s_client -connect :8443 2>&1 | grep Cipher - -After applying this patch the output should contain e.g. "ECDHE-RSA-AES256-GCM-SHA384" on a Red Hat -Enterprise Linux 6.5 (only RHEL >= 6.5 has support for elliptic curve). Without this patch the result -is e.g. "AES256-GCM-SHA384". - -Important: The technical implementation of this patch might be not perfect as I am not really a C/C++ -developer. The logic and the implementation is heavily based on Sendmail. There should be a code review -by an experienced C/C++ and OpenSSL developer before merging into Zarafa core. - -This patch should be only applied after ZCP-12143 and its dependencies. However this patch might maybe -not directly apply due to some previous merge issues as mentioned in Ticket#2014030810000131. - ---- zarafa-7.1.9/common/ECChannel.cpp 2014-04-13 23:46:59.000000000 +0200 -+++ zarafa-7.1.9/common/ECChannel.cpp.ssl_ecdhe 2014-04-13 23:59:43.000000000 +0200 -@@ -97,6 +97,9 @@ - char *ssl_name; - int ssl_proto, ssl_op = 0, ssl_include = 0, ssl_exclude = 0; - bool ssl_neg; -+#if !defined(OPENSSL_NO_ECDH) && defined(NID_X9_62_prime256v1) -+ EC_KEY *ecdh; -+#endif - - if (lpConfig == NULL) { - hr = MAPI_E_CALL_FAILED; -@@ -113,6 +116,16 @@ - lpCTX = SSL_CTX_new(SSLv23_server_method()); - SSL_CTX_set_options(lpCTX, SSL_OP_ALL); - -+#if !defined(OPENSSL_NO_ECDH) && defined(NID_X9_62_prime256v1) -+ ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); -+ -+ if (ecdh != NULL) { -+ SSL_CTX_set_options(lpCTX, SSL_OP_SINGLE_ECDH_USE); -+ SSL_CTX_set_tmp_ecdh(lpCTX, ecdh); -+ EC_KEY_free(ecdh); -+ } -+#endif -+ - ssl_name = strtok(ssl_protocols, " "); - while(ssl_name != NULL) { - if (*ssl_name != '!') ---- zarafa-7.1.9/provider/server/ECSoapServerConnection.cpp 2014-04-13 23:46:59.000000000 +0200 -+++ zarafa-7.1.9/provider/server/ECSoapServerConnection.cpp.ssl_ecdhe 2014-04-14 00:00:54.000000000 +0200 -@@ -245,6 +245,9 @@ - char *ssl_name; - int ssl_proto, ssl_op = 0, ssl_include = 0, ssl_exclude = 0; - bool ssl_neg; -+#if !defined(OPENSSL_NO_ECDH) && defined(NID_X9_62_prime256v1) -+ EC_KEY *ecdh; -+#endif - - if(lpServerName == NULL) { - er = ZARAFA_E_INVALID_PARAMETER; -@@ -277,6 +280,16 @@ - - SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_ALL); - -+#if !defined(OPENSSL_NO_ECDH) && defined(NID_X9_62_prime256v1) -+ ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); -+ -+ if (ecdh != NULL) { -+ SSL_CTX_set_options(lpsSoap->ctx, SSL_OP_SINGLE_ECDH_USE); -+ SSL_CTX_set_tmp_ecdh(lpsSoap->ctx, ecdh); -+ EC_KEY_free(ecdh); -+ } -+#endif -+ - ssl_name = strtok(server_ssl_protocols, " "); - while(ssl_name != NULL) { - if (*ssl_name != '!') diff --git a/zarafa-webaccess.conf b/zarafa-webaccess.conf deleted file mode 100644 index e2b702a..0000000 --- a/zarafa-webaccess.conf +++ /dev/null @@ -1,48 +0,0 @@ -# -# Zarafa Webaccess featuring a 'Look & Feel' similar to Outlook -# - -Alias /webaccess /usr/share/zarafa-webaccess/ - -# Following Apache and PHP settings need to be set to work correct -# - - # Some apache settings - DirectoryIndex index.php - Options -Indexes +FollowSymLinks - - - # Apache 2.4 - Require all granted - - - # Apache 2.2 - Order allow,deny - Allow from all - - - # Register globals must be off - php_flag register_globals off - - # Magic quotes must be off - php_flag magic_quotes_gpc off - php_flag magic_quotes_runtime off - - # The maximum POST limit. To upload large files, this value must - # be larger than upload_max_filesize. - php_value post_max_size 31M - php_value upload_max_filesize 30M - - # Short open tags must be on - php_flag short_open_tag on - - # Uncomment to enhance security of WebAccess by restricting cookies - # to only be provided over HTTPS connections -# php_flag session.cookie_secure on -# php_flag session.cookie_httponly on - - # Uncomment for debugging purposes only. Make sure Apache/PHP can - # write to this file or no errors will be logged! -# php_flag log_errors on -# php_value error_log /var/lib/zarafa-webaccess/error_log - diff --git a/zarafa.ini b/zarafa.ini deleted file mode 100644 index 160434a..0000000 --- a/zarafa.ini +++ /dev/null @@ -1,2 +0,0 @@ -; Enable Zarafa mapi extension module -extension=mapi.so diff --git a/zarafa.logrotate b/zarafa.logrotate deleted file mode 100644 index 17a12ed..0000000 --- a/zarafa.logrotate +++ /dev/null @@ -1,100 +0,0 @@ -/var/log/zarafa/archiver.log { - weekly - missingok - rotate 52 - compress - delaycompress - notifempty - create 0644 zarafa zarafa -} - -/var/log/zarafa/dagent.log { - weekly - missingok - rotate 52 - compress - delaycompress - notifempty - postrotate - killall -HUP zarafa-dagent 2> /dev/null || true - endscript - create 0644 zarafa zarafa -} - -/var/log/zarafa/gateway.log { - weekly - missingok - rotate 52 - compress - delaycompress - notifempty - postrotate - killall -HUP zarafa-gateway 2> /dev/null || true - endscript - create 0644 zarafa zarafa -} - -/var/log/zarafa/ical.log { - weekly - missingok - rotate 52 - compress - delaycompress - notifempty - postrotate - killall -HUP zarafa-ical 2> /dev/null || true - endscript - create 0644 zarafa zarafa -} - -/var/log/zarafa/indexer.log { - weekly - missingok - rotate 52 - compress - delaycompress - notifempty - postrotate - killall -HUP zarafa-indexer 2> /dev/null || true - endscript - create 0644 zarafa zarafa -} - -/var/log/zarafa/monitor.log { - weekly - missingok - rotate 52 - compress - delaycompress - notifempty - postrotate - killall -HUP zarafa-monitor 2> /dev/null || true - endscript - create 0644 zarafa zarafa -} - -/var/log/zarafa/server.log /var/log/zarafa/audit.log { - weekly - missingok - rotate 52 - compress - delaycompress - notifempty - postrotate - killall -HUP zarafa-server 2> /dev/null || true - endscript - create 0644 zarafa zarafa -} - -/var/log/zarafa/spooler.log { - weekly - missingok - rotate 52 - compress - delaycompress - notifempty - postrotate - killall -HUP zarafa-spooler 2> /dev/null || true - endscript - create 0644 zarafa zarafa -} diff --git a/zarafa.spec b/zarafa.spec deleted file mode 100644 index 13819dc..0000000 --- a/zarafa.spec +++ /dev/null @@ -1,1136 +0,0 @@ -%global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 46050 -%global with_search 1 -%global with_ldap 1 -%global with_xmlto 1 -%if 0%{?fedora} > 15 || 0%{?rhel} > 6 -%global with_gsoap 1 -%else -%global with_gsoap 0 -%endif -%global no_multiupload 1 -%global no_bundled_php 1 -%global php_apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1) -%global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") - -# Private libraries are not be exposed globally by RPM -# RPM 4.8 -%{?filter_provides_in: %filter_provides_in %{_libdir}/%{name}/.*\.so$} -%{?filter_provides_in: %filter_provides_in %{_libdir}/php/modules/.*\.so$} -%{?filter_setup} -# RPM 4.9 -%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{_libdir}/%{name}/.*\\.so$ -%global __provides_exclude_from %{__provides_exclude_from}|%{_libdir}/php/modules/.*\\.so$ - -%if "%{php_version}" < "5.6" -%global ini_name %{name}.ini -%else -%global ini_name 40-%{name}.ini -%endif - -Summary: Open Source Edition of the Zarafa Collaboration Platform -Name: zarafa -Version: 7.1.11 -%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/ -%if %{beta_or_rc} -Source0: http://download.zarafa.com/community/beta/7.1/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz -%else -Source0: http://download.zarafa.com/community/final/7.1/%{version}-%{svnrevision}/sourcecode/zcp-%{version}.tar.gz -%endif -Source1: %{name}.ini -Source2: %{name}.logrotate -Source3: %{name}-webaccess.conf - -Patch0: zarafa-7.1.11-rpath.patch -Patch1: zarafa-7.1.11-php-unbundle.patch -Patch2: zarafa-7.1.10-kyotocabinet.patch -Patch3: zarafa-7.1.10-ssl_protocols_ciphers.patch -Patch4: zarafa-7.1.9-ssl_ecdhe.patch -Patch5: zarafa-7.1.11-plaintext_auth_localhost.patch - -BuildRequires: bison -BuildRequires: gcc-c++ -BuildRequires: byacc -BuildRequires: flex -BuildRequires: gettext -BuildRequires: libical-devel >= 0.42 -BuildRequires: libvmime-devel >= 0.9.0, libvmime(api) <= 20120406 -BuildRequires: libxml2-devel -BuildRequires: mysql-devel >= 4.1 -BuildRequires: ncurses-devel -BuildRequires: pam-devel -BuildRequires: php-devel >= 4.3 -BuildRequires: %{_includedir}/uuid/uuid.h -BuildRequires: %{_includedir}/curl/curl.h -BuildRequires: libicu-devel >= 3.4 -%if 0%{?rhel}%{?fedora} > 5 -BuildRequires: boost-devel >= 1.35.0 -%else -BuildRequires: boost141-devel -%endif -BuildRequires: swig -BuildRequires: python-devel >= 2.4 - -%if %{with_gsoap} -BuildRequires: gsoap-devel -%endif - -%if %{with_search} -BuildRequires: kyotocabinet-devel -%if 0%{?fedora} > 15 || 0%{?rhel} > 6 -BuildRequires: clucene09-core-devel >= 0.9.21b-1 -%else -BuildRequires: clucene-core-devel >= 0.9.21b-1 -%endif -%endif - -%if %{with_ldap} -BuildRequires: openldap-devel -%endif - -%if %{with_xmlto} -BuildRequires: xmlto -%endif - -# The main package pulls in all of classical zarafa core packages -Requires: zarafa-dagent%{?_isa} = %{version}-%{release} -Requires: zarafa-gateway%{?_isa} = %{version}-%{release} -Requires: zarafa-ical%{?_isa} = %{version}-%{release} -Requires: zarafa-monitor%{?_isa} = %{version}-%{release} -Requires: zarafa-server%{?_isa} = %{version}-%{release} -Requires: zarafa-spooler%{?_isa} = %{version}-%{release} -Requires: zarafa-utils%{?_isa} = %{version}-%{release} - -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) - -%description -The Zarafa Collaboration Platform 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 -IMAP and a POP3 gateway as well as an iCal/CalDAV gateway, the Zarafa Open -Source Collaboration can combine the usability with the stability and the -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 Python. -The other Zarafa related packages need to be installed to gain all features -and benefits of the Zarafa Collaboration Platform (ZCP). - -%package archiver -Summary: Archive messages to a secondary Zarafa server -Group: Applications/Archiving -Requires: zarafa-common = %{version}-%{release} - -%description archiver -The zarafa-archiver package includes the Zarafa Archiver to decrease the -size of a production Zarafa server by copying or moving the messages to -a secondary Zarafa server. Clients will still be able to open the message -from the secondary Zarafa server directly. - -%package client -Summary: The Zarafa Client library -Group: System Environment/Libraries -Requires: zarafa-common = %{version}-%{release} - -%description client -The zarafa-client package provides the Zarafa Client library, which gets -used by the Open Source MAPI (Messaging Application Programming Interface) -implementation of Zarafa as provider between MAPI and Zarafa. - -%package common -Summary: Common Zarafa files and directories -Group: Applications/Productivity -Requires(pre): shadow-utils -%if 0%{?rhel}%{?fedora} > 5 -BuildArch: noarch -%endif - -%description common -The zarafa-common package provides the filesystem structure and includes -common files required by most other Zarafa packages. It also provides the -creation of the zarafa user for the different Zarafa services. - -%package contacts -Summary: MAPI provider adding contact folders to the address book -Group: System Environment/Libraries -Requires: zarafa-common = %{version}-%{release} - -%description contacts -The zarafa-contacts package contains an additional MAPI provider to find -all contact folders of a user and add the contents transparently into the -MAPI address book. The MAPI provider allows Zarafa WebApp users to select -which contact folders will be listed in the WebApp address book. - -%package dagent -Summary: Mail Delivery Agent for Zarafa Collaboration Platform -Group: System Environment/Daemons -Requires: zarafa-common = %{version}-%{release} -Requires: php-mapi%{?_isa} = %{version}-%{release} -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/service, /sbin/chkconfig -Requires(postun): /sbin/service - -%description dagent -The zarafa-dagent package includes the Zarafa Delivery Agent to deliver -e-mail messages from Internet Mail format to Zarafa. The Zarafa Delivery -Agent can be used trigger the local mailer (MDA) or even act as the LMTP -server. - -%package devel -Summary: Development files for several Zarafa libraries -Group: Development/Libraries -Requires: libmapi%{?_isa} = %{version}-%{release}, pkgconfig -Provides: %{name}-static = %{version}-%{release} -Provides: %{name}-static%{?_isa} = %{version}-%{release} - -%description devel -The zarafa-devel package includes header files and libraries necessary for -developing own programs which use functions and interfaces from the Zarafa -Collaboration Platform. The Zarafa Open Source Collaboration is using MAPI -objects, provides a MAPI client library and a C++ programming interface. - -%package gateway -Summary: POP3/IMAP Gateway for the Zarafa Collaboration Platform -Group: System Environment/Daemons -Requires: zarafa-common = %{version}-%{release} -Requires: python-MAPI%{?_isa} = %{version}-%{release} -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/service, /sbin/chkconfig -Requires(postun): /sbin/service - -%description gateway -The zarafa-gateway package includes the Zarafa POP3/IMAP Gateway service -to enable regular non-MAPI e-mail clients to connect through POP3 or IMAP -to the Zarafa server to access their e-mails. Using IMAP, it is possible -as well to view the contents of shared folders and subfolders. The Zarafa -POP3/IMAP Gateway service can be configured to listen for POP3, POP3S, -IMAP and/or IMAPS. - -%package ical -Summary: iCal/CalDAV gateway for the Zarafa Collaboration Platform -Group: System Environment/Daemons -Requires: zarafa-common = %{version}-%{release} -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/service, /sbin/chkconfig -Requires(postun): /sbin/service -Provides: zarafa-caldav = %{version}-%{release} -Provides: zarafa-caldav%{?_isa} = %{version}-%{release} -Obsoletes: zarafa-caldav < 6.40.5-1 - -%description ical -The zarafa-ical package includes the Zarafa iCal/CalDAV gateway service -to enable users to access their calendar using iCalendar (RFC 2445/5545) -or CalDAV (RFC 4791) compliant clients. The iCal/CalDAV gateway service -can be configured to listen for HTTP and HTTPS requests. - -%package monitor -Summary: Quota Monitor for the Zarafa Collaboration Platform -Group: System Environment/Daemons -Requires: zarafa-common = %{version}-%{release} -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/service, /sbin/chkconfig -Requires(postun): /sbin/service - -%description monitor -The zarafa-monitor package includes the Zarafa Monitoring service which -is responsible for checking the users store (mailbox) size, and sending -them (and administrators) a warning e-mail when limits are exceeded. - -%if %{with_search} -%package search -Summary: Indexer search engine for the Zarafa Collaboration Platform -Group: System Environment/Daemons -Requires: zarafa-common = %{version}-%{release}, file -Requires: catdoc, libxslt, w3m, unzip, %{_bindir}/pdftotext -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/service, /sbin/chkconfig -Requires(postun): /sbin/service -Provides: zarafa-indexer = %{version}-%{release} -Provides: zarafa-indexer%{?_isa} = %{version}-%{release} -Obsoletes: zarafa-indexer < 7.1.0-1 - -%description search -The zarafa-search package includes the Zarafa Indexing service for fast -and full-text searching. Using CLucene search engine, this service makes -an index per user of messages and attachments for the Zarafa server. At -search queries, the server will use this index to quickly find messages, -items and even in contents of attached documents. -%endif - -%package server -Summary: Server component for the Zarafa Collaboration Platform -Group: System Environment/Daemons -Requires: zarafa-common = %{version}-%{release} -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/service, /sbin/chkconfig -Requires(postun): /sbin/service - -%description server -The zarafa-server package includes the main Zarafa Server and Storage -process. It contacts a database server and provides services to Zarafa -clients. The user base can be either retrieved from an external source -or can be setup with a separate list of users. - -%package spooler -Summary: Mail Spooler for the Zarafa Collaboration Platform -Group: System Environment/Daemons -Requires: zarafa-common = %{version}-%{release} -Requires: python-MAPI%{?_isa} = %{version}-%{release} -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/service, /sbin/chkconfig -Requires(postun): /sbin/service - -%description spooler -The zarafa-spooler package includes the Zarafa Spooler service which is -responsible for converting the Zarafa e-mails from outboxes to Internet -Mail and send it using the configured SMTP server to the recipients. - -%package utils -Summary: Zarafa Utilities for administration and management -Group: Applications/System -Requires: zarafa-common = %{version}-%{release} - -%description utils -The zarafa-utils package includes various administration and management -utilities for the Zarafa Open Source Collaboration environment including -reporting, user and password management. - -%package webaccess -Summary: Zarafa Webaccess featuring a 'Look & Feel' similar to Outlook -Group: Applications/Productivity -Requires: httpd, php-mapi = %{version}-%{release} -# Bug: php53 from RHEL 5 does not provide php (#717158) -%if 0%{?rhel} == 5 -Requires: mod_php >= 4.3 -%else -Requires: php >= 4.3, php-openssl -%endif -%if %{no_bundled_php} -Requires: php-json, php-pear-XML-Serializer -%endif -%if 0%{?rhel}%{?fedora} > 5 -BuildArch: noarch -%endif - -%description webaccess -Zarafa Webaccess features the familiar Outlook 'Look & Feel' interface -and you can keep using the features in Outlook that have always allowed -you to work efficiently. View your e-mail, calendar and contacts via a -web browser. And opening your colleagues calendar or sending a meeting -request is only a piece of cake. The Zarafa Webaccess is using the ajax -technology to give a more interactive feeling to the users. - -%package -n libmapi -Summary: MAPI implementation and library by Zarafa -Group: System Environment/Libraries -Requires: zarafa-client%{?_isa} = %{version}-%{release} -Requires: libvmime(abi) <= 20120406 -Requires(post): /sbin/ldconfig -Requires(postun): /sbin/ldconfig - -%description -n libmapi -The libmapi package provides the Open Source MAPI (Messaging Application -Programming Interface) implementation by Zarafa. The MAPI is a messaging -architecture and a Component Object Model based API for Microsoft Windows -which allows control over the messaging system on the client computer, -creation and management of messages, management of the client mailbox, -service providers, etc. This MAPI implementation by Zarafa is also known -as MAPI4Linux. - -%package -n php-mapi -Summary: The PHP MAPI extension by Zarafa -Group: Development/Languages -# Bug: Without mod_ssl, reloading httpd causes core dump -Requires: mod_ssl -%if 0%{?php_zend_api:1} -Requires: php(zend-abi) = %{php_zend_api}, php(api) = %{php_core_api} -%else -Requires: php-api = %{php_apiver} -%endif - -%description -n php-mapi -The php-mapi package contains the PHP MAPI extension to provide access to -Microsoft MAPI functions while using PHP. Although not all MAPI functions -and interfaces are supported so far, most functions have a PHP counterpart -in this extension. Using this PHP MAPI extension, developers can create -e.g. webbased e-mail and calendaring systems and interfaces with existing -PHP projects, using the MAPI functions like a normal MAPI program. - -%package -n python-MAPI -Summary: The Python MAPI extension by Zarafa -Group: Development/Languages - -%description -n python-MAPI -The python-MAPI package contains the Python MAPI extension to provide the -access to Microsoft MAPI functions while using Python. Using this Python -MAPI extension, developers can create Python programs which use MAPI calls -to interact with Zarafa. - -%prep -%setup -q -%patch0 -p1 -b .rpath -touch -c -r aclocal.m4.rpath aclocal.m4 -%if %{no_bundled_php} -%patch1 -p1 -b .php-unbundle -%endif -%patch2 -p1 -b .kyotocabinet -%patch3 -p1 -b .ssl_protocols_ciphers -%patch4 -p1 -b .ssl_ecdhe -%patch5 -p1 -b .disable_plaintext_auth-localhost - -%build -%if 0%{?rhel}%{?fedora} < 6 -export CPPFLAGS="$CPPFLAGS -I%{_includedir}/boost141" -export LDFLAGS="$LDFLAGS -L%{_libdir}/boost141" -%endif - -%if %{with_search} && 0%{?rhel}%{?fedora} > 6 -export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}/clucene09" -%endif - -%configure \ - --with-userscript-prefix=%{_sysconfdir}/%{name}/userscripts \ - --with-quotatemplate-prefix=%{_sysconfdir}/%{name}/quotamail \ - --with-searchscripts-prefix=%{_datadir}/%{name}/searchscripts \ -%if %{with_gsoap} - --with-system-gsoap \ -%endif -%if %{with_search} -%if 0%{?rhel}%{?fedora} > 6 - --with-clucene-lib-prefix=%{_libdir}/clucene09 \ - --with-clucene-include-prefix=%{_includedir}/clucene09 \ -%else - --with-clucene-lib-prefix=%{_libdir} \ - --with-clucene-include-prefix=%{_includedir} \ -%endif -%else - --disable-kyotocabinet \ - --with-clucene-lib-prefix= \ -%endif - --enable-release \ - --enable-epoll \ - --enable-swig \ - --enable-python \ - --disable-static -make %{?_smp_mflags} - -%install -rm -rf $RPM_BUILD_ROOT -make \ -%if 0%{?rhel}%{?fedora} < 6 - docdir=%{_datadir}/doc/%{name}/ \ - datarootdir=%{_datadir} \ -%endif - DESTDIR=$RPM_BUILD_ROOT \ - INSTALL='install -p' \ - install \ - install-ajax-webaccess - -# Nuke all overlefts from licensed, managed or other proprietary items -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/{%{name}/{license,licensed.cfg,report-ca},cron.daily/%{name}-client-update} -rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,msr-verify,ldapms.cfg,{licensed,ws}{,.cfg}},za-{acl{set,sync},restore}}.* - -# Move all the initscripts to their appropriate place and -# ensure that all services are off by default at boot time -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/init.d/ -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/ -for service in dagent gateway ical search monitor server spooler; do - if [ -f installer/linux/%{name}-$service.init.rhel ]; then - sed -e 's@345@-@' installer/linux/%{name}-$service.init.rhel > \ - $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 installer/linux/%{name}-$service.init.rhel $RPM_BUILD_ROOT%{_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}/example-config/*.cfg; do - config=$(basename $config) - if [ -f $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/example-config/$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}/example-config/$config > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/$config - chmod 640 $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/$config - touch -c -r $RPM_BUILD_ROOT%{_datadir}/doc/%{name}/example-config/$config $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/$config - fi -done - -# Move the logrotate configuration file to its correct place -install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name} - -# 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 644 installer/linux/db-{calc-storesize,*attachments*} $RPM_BUILD_ROOT%{_datadir}/%{name}/ -install -p -m 644 installer/linux/{ssl-certificates.sh,audit-parse.pl,zarafa7-upgrade} $RPM_BUILD_ROOT%{_datadir}/%{name}/ -%if %{with_ldap} -install -p -m 644 installer/linux/{db-upgrade-objectsid-to-objectguid,ldap-switch-sendas}.pl $RPM_BUILD_ROOT%{_datadir}/%{name}/ -install -p -m 644 installer/{ldap/%{name}.schema,%{name}.ldif} $RPM_BUILD_ROOT%{_datadir}/%{name}/ -%else -rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ldap.{active-directory,openldap,propmap}.cfg -rm -f $RPM_BUILD_ROOT%{_mandir}/man5/%{name}-ldap.cfg.5* -%endif - -# Install the script to optimize IMAP headers for new gateway -mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-gateway/ -install -p -m 644 tools/python-scripts/optimize-imap.py $RPM_BUILD_ROOT%{_datadir}/%{name}-gateway/ - -# Create the default log and lib directories for packaging -mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/{lib/%{name}/{dagent,spooler}/plugins,log/%{name}}/ - -# Remove all libtool .la files to avoid packaging of them -rm -f $RPM_BUILD_ROOT{%{_libdir}/{,php/modules,%{name}},%{python_sitearch}}/*.la - -# Remove files that are anyway in %doc or %{_datadir}/%{name}/ -rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}{,-gateway}/ - -# Move Indexer/CLucene related files to its correct places -%if %{with_search} -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/searchscripts/ -mv -f $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/%{name}/searchscripts/attachments_parser.db -for helper in attachments_parser xmltotext.xslt zmktemp; do - ln -s ../../..%{_datadir}/%{name}/searchscripts/$helper $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/searchscripts/$helper -done -%else -rm -f $RPM_BUILD_ROOT{%{_sysconfdir}/{rc.d/init.d,sysconfig},%{_mandir}/man?}/%{name}-search* -rm -rf $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/search.cfg,%{_datadir}/%{name}/searchscripts/} -%endif - -# Move the webaccess configuration file to its correct place -mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess{-ajax,} -rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/config.php -ln -sf ../../..%{_sysconfdir}/%{name}/webaccess/config.php $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/config.php - -# Install the apache configuration file for webaccess -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/ -install -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/%{name}-webaccess.conf - -# Move the webaccess plugins directory to its correct place -rm -rf $RPM_BUILD_ROOT{%{_datadir},%{_localstatedir}/lib}/%{name}-webaccess/plugins -mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/plugins/ - -# Remove unwanted language connectors and webaccess files -rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/client/widgets/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.{cfm,pl} -rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.htaccess,%{name}-webaccess.conf,senddocument.php} - -# Remove flash-based multi-attachment upload (missing source) -%if %{no_multiupload} -sed '148,155d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php > \ - $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php.new -touch -c -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{,.new} -mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/webaccess/config.php{.new,} -rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/client/widgets/swfupload/ -%endif - -# Remove bundled PHP PEAR files/libraries -%if %{no_bundled_php} -rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/server/PEAR -rm -f $RPM_BUILD_ROOT%{_datadir}/%{name}-webaccess/{.,server/core}/*.php-unbundle -%endif - -# Remove files only required by proprietary web services -rm -rf $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/ws.cfg,%{_datadir}/zarafa/timezones} - -# Rename the PHP config file when needed (PHP 5.6+) -if [ "%{name}.ini" != "%{ini_name}" ]; then - mv -f $RPM_BUILD_ROOT%{_sysconfdir}/php.d/{%{name}.ini,%{ini_name}} -fi - -%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 archiver -# Ensure correct log file ownership after upgrade from official packages -chown %{name}:%{name} %{_localstatedir}/log/%{name}/archiver.* > /dev/null 2>&1 || : - -%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 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 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 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 || : - -%if %{with_search} -%post search -[ $1 -eq 1 ] && /sbin/chkconfig --add %{name}-search -# Ensure correct log file ownership after upgrade from official packages -chown %{name}:%{name} %{_localstatedir}/log/%{name}/search.* > /dev/null 2>&1 || : -%endif - -%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 || : -chown %{name}:%{name} %{_localstatedir}/log/%{name}/audit.* > /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 client -p /sbin/ldconfig - -%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 gateway -if [ $1 -eq 0 ]; then - /sbin/service %{name}-gateway stop > /dev/null 2>&1 || : - /sbin/chkconfig --del %{name}-gateway -fi - -%preun ical -if [ $1 -eq 0 ]; then - /sbin/service %{name}-ical stop > /dev/null 2>&1 || : - /sbin/chkconfig --del %{name}-ical -fi - -%preun monitor -if [ $1 -eq 0 ]; then - /sbin/service %{name}-monitor stop > /dev/null 2>&1 || : - /sbin/chkconfig --del %{name}-monitor -fi - -%if %{with_search} -%preun search -if [ $1 -eq 0 ]; then - /sbin/service %{name}-search stop > /dev/null 2>&1 || : - /sbin/chkconfig --del %{name}-search -fi -%endif - -%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 gateway -if [ $1 -ne 0 ]; then - /sbin/service %{name}-gateway condrestart > /dev/null 2>&1 || : -fi - -%postun ical -if [ $1 -ne 0 ]; then - /sbin/service %{name}-ical condrestart > /dev/null 2>&1 || : -fi - -%postun monitor -if [ $1 -ne 0 ]; then - /sbin/service %{name}-monitor condrestart > /dev/null 2>&1 || : -fi - -%if %{with_search} -%postun search -if [ $1 -ne 0 ]; then - /sbin/service %{name}-search condrestart > /dev/null 2>&1 || : -fi -%endif - -%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 client -p /sbin/ldconfig - -%post webaccess -if [ -f %{_sysconfdir}/%{name}/webaccess/config.php ]; then - sed -e "s/\(define('PASSWORD_KEY','\)a75356b0d1b81b7\(');\)/\1$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1)\2/" \ - -e "s/\(define('PASSWORD_IV','\)b3f5a483\(');\)/\1$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)\2/" \ - -i %{_sysconfdir}/%{name}/webaccess/config.php -fi - -%postun -n libmapi -p /sbin/ldconfig - -%files -%defattr(-,root,root,-) - -%files archiver -%defattr(-,root,root,-) -%{_bindir}/%{name}-archiver -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/archiver.cfg -%{_mandir}/man1/%{name}-archiver.1* -%{_mandir}/man5/%{name}-archiver.cfg.5* - -%files client -f %{name}.lang -%defattr(-,root,root,-) -%config(noreplace) %{_sysconfdir}/mapi/%{name}.inf -%{_libdir}/libzarafaclient.so -%{_libdir}/libzarafasync.so.* - -%files common -%defattr(-,root,root,-) -%doc installer/licenseagreement/AGPL-3 -%dir %{_sysconfdir}/%{name}/ -%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} -%config(noreplace) %{_sysconfdir}/sysconfig/%{name} -%{_mandir}/man1/%{name}.1* -%dir %{_datadir}/%{name}/ -%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/ -%dir %attr(0770,root,%{name}) %{_localstatedir}/log/%{name}/ - -%files contacts -%defattr(-,root,root,-) -%config(noreplace) %{_sysconfdir}/mapi/zcontacts.inf -%{_libdir}/libzarafacontacts.so - -%files dagent -%defattr(-,root,root,-) -%doc installer/linux/createuser.dotforward -%{_bindir}/%{name}-autorespond -%{_bindir}/%{name}-dagent -%{_bindir}/%{name}-mr-accept -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/dagent.cfg -%config(noreplace) %{_sysconfdir}/%{name}/autorespond -%{_sysconfdir}/rc.d/init.d/%{name}-dagent -%{_mandir}/man1/%{name}-dagent.1* -%{_mandir}/man1/%{name}-autorespond.1* -%{_mandir}/man5/%{name}-dagent.cfg.5* -%{_datadir}/%{name}-dagent/ -%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/dagent/ -%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/dagent/plugins/ - -%files devel -%defattr(-,root,root,-) -%{_libdir}/libarchiver.so -%{_libdir}/libarchiver-core.so -%{_libdir}/libicalmapi.so -%{_libdir}/libinetmapi.so -%{_libdir}/libmapi.so -%{_libdir}/libmapicalendar.so -%{_libdir}/libmapitimezone.so -%{_libdir}/libcommon_mapi.a -%{_libdir}/libcommon_service.a -%{_libdir}/libcommon_ssl.a -%{_libdir}/libcommon_util.a -%{_libdir}/libfreebusy.a -%{_libdir}/libzarafasync.so -%{_includedir}/icalmapi/ -%{_includedir}/inetmapi/ -%{_includedir}/mapitimezone/ -%{_includedir}/mapi4linux/ -%{_includedir}/libfreebusy/ -%{_includedir}/libmapicalendar/ -%{_includedir}/libzarafasync/ -%{_includedir}/%{name}/ -%{_libdir}/pkgconfig/%{name}.pc - -%files gateway -%defattr(-,root,root,-) -%{_bindir}/%{name}-gateway -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/gateway.cfg -%{_sysconfdir}/rc.d/init.d/%{name}-gateway -%{_datadir}/%{name}-gateway/ -%{_mandir}/man1/%{name}-gateway.1* -%{_mandir}/man5/%{name}-gateway.cfg.5* - -%files ical -%defattr(-,root,root,-) -%{_bindir}/%{name}-ical -%config(noreplace) %attr(0640,root,%{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,-) -%{_bindir}/%{name}-monitor -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/monitor.cfg -%dir %{_sysconfdir}/%{name}/quotamail/ -%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* - -%if %{with_search} -%files search -%defattr(-,root,root,-) -%{_bindir}/%{name}-search -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/search.cfg -%{_sysconfdir}/rc.d/init.d/%{name}-search -%dir %{_sysconfdir}/%{name}/searchscripts/ -%config(noreplace) %{_sysconfdir}/%{name}/searchscripts/attachments_parser.db -%{_sysconfdir}/%{name}/searchscripts/attachments_parser -%{_sysconfdir}/%{name}/searchscripts/xmltotext.xslt -%{_sysconfdir}/%{name}/searchscripts/zmktemp -%dir %{_datadir}/%{name}/searchscripts/ -%{_datadir}/%{name}/searchscripts/attachments_parser -%{_datadir}/%{name}/searchscripts/xmltotext.xslt -%{_datadir}/%{name}/searchscripts/zmktemp -%{_mandir}/man1/%{name}-search.1* -%{_mandir}/man5/%{name}-search.cfg.5* -%endif - -%files server -%defattr(-,root,root,-) -%{_bindir}/%{name}-server -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/server.cfg -%config(noreplace) %attr(0640,root,%{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/ -%dir %{_libdir}/%{name}/ -%{_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 -%{_datadir}/%{name}/%{name}.ldif -%{_datadir}/%{name}/db-upgrade-objectsid-to-objectguid.pl -%{_datadir}/%{name}/ldap-switch-sendas.pl -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/ldap.active-directory.cfg -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/ldap.openldap.cfg -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/ldap.propmap.cfg -%{_libdir}/%{name}/ldapplugin.so -%{_mandir}/man5/%{name}-ldap.cfg.5* -%endif - -%files spooler -%defattr(-,root,root,-) -%{_bindir}/%{name}-spooler -%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/spooler.cfg -%{_sysconfdir}/rc.d/init.d/%{name}-spooler -%{_mandir}/man1/%{name}-spooler.1* -%{_mandir}/man5/%{name}-spooler.cfg.5* -%{_datadir}/%{name}-spooler/ -%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/spooler/ -%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/spooler/plugins/ - -%files utils -%defattr(-,root,root,-) -%{_bindir}/%{name}-admin -%{_bindir}/%{name}-fsck -%{_bindir}/%{name}-mailbox-permissions -%{_bindir}/%{name}-passwd -%{_bindir}/%{name}-set-oof -%{_bindir}/%{name}-stats -%{_datadir}/%{name}/audit-parse.pl -%{_datadir}/%{name}/db-calc-storesize -%{_datadir}/%{name}/db-convert-attachments-to-files -%{_datadir}/%{name}/db-remove-orphaned-attachments -%{_datadir}/%{name}/ssl-certificates.sh -%{_datadir}/%{name}/zarafa7-upgrade -%{_mandir}/man1/%{name}-admin.1* -%{_mandir}/man1/%{name}-fsck.1* -%{_mandir}/man1/%{name}-mailbox-permissions.1* -%{_mandir}/man1/%{name}-passwd.1* -%{_mandir}/man1/%{name}-set-oof.1* -%{_mandir}/man1/%{name}-stats.1* - -%files webaccess -%defattr(-,root,root,-) -%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}-webaccess.conf -%dir %{_sysconfdir}/%{name}/ -%dir %attr(0750,root,apache) %{_sysconfdir}/%{name}/webaccess/ -%config(noreplace) %attr(0640,root,apache) %{_sysconfdir}/%{name}/webaccess/config.php -%{_datadir}/%{name}-webaccess/ -%dir %{_localstatedir}/lib/%{name}-webaccess/ -%dir %attr(0770,root,apache) %{_localstatedir}/lib/%{name}-webaccess/tmp/ - -%files -n libmapi -%defattr(-,root,root,-) -%dir %{_sysconfdir}/mapi/ -%{_libdir}/libarchiver.so.* -%{_libdir}/libarchiver-core.so.* -%{_libdir}/libicalmapi.so.* -%{_libdir}/libinetmapi.so.* -%{_libdir}/libmapi.so.* -%{_libdir}/libmapicalendar.so.* -%{_libdir}/libmapitimezone.so.* - -%files -n php-mapi -%defattr(-,root,root,-) -%config(noreplace) %{_sysconfdir}/php.d/%{ini_name} -%{_datadir}/php/mapi/ -%{_libdir}/php/modules/mapi.so - -%files -n python-MAPI -%defattr(-,root,root,-) -%{python_sitearch}/* - -%changelog -* Sat Oct 25 2014 Kevin Kofler 7.1.11-2 -- Rebuild for reference-counting-enabled clucene09 - -* Wed Oct 15 2014 Robert Scheck 7.1.11-1 -- 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 - -* Tue Aug 26 2014 David Tardon - 7.1.10-5 -- rebuild for ICU 53.1 - -* Mon Aug 25 2014 Robert Scheck 7.1.10-4 -- Fixed multiple incorrect default permissions (#1133439) - -* Mon Aug 18 2014 Fedora Release Engineering - 7.1.10-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Mon Jul 14 2014 Robert Scheck 7.1.10-3 -- Rebuild for gSOAP 2.8.17 - -* Fri Jul 11 2014 Robert Scheck 7.1.10-2 -- Added a workaround to really support MariaDB (#995870) -- Re-added a patch to allow building without zarafa-search - -* Sun Jun 29 2014 Robert Scheck 7.1.10-1 -- Upgrade to 7.1.10 - -* Fri Jun 20 2014 Remi Collet - 7.1.9-2.1 -- rebuild for https://fedoraproject.org/wiki/Changes/Php56 -- add numerical prefix to extension configuration file - -* Sat Jun 07 2014 Fedora Release Engineering - 7.1.9-2.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Thu May 22 2014 Petr Machata - 7.1.9-2 -- Rebuild for boost 1.55.0 - -* Thu May 01 2014 Robert Scheck 7.1.9-1 -- Upgrade to 7.1.9 - -* Fri Feb 21 2014 Robert Scheck 7.1.8-3 -- Upgrade to 7.1.8 (re-released) - -* Fri Feb 14 2014 Parag Nemade - 7.1.8-2 -- Rebuild for icu 52 - -* Thu Jan 30 2014 Robert Scheck 7.1.8-1 -- Upgrade to 7.1.8 (#1056767, #1059903) - -* Sun Dec 08 2013 Robert Scheck 7.1.7-1 -- Upgrade to 7.1.7 (#1008068) -- Added dependency from gateway and spooler to python-MAPI -- Added requirements to virtual libvmime ABI/API provides - -* Mon Aug 05 2013 Robert Scheck 7.1.5-1 -- Upgrade to 7.1.5 (#747241, #863498, #926039, #946900) -- Added configuration compatibility for Apache 2.2 and 2.4 - -* Sun Aug 04 2013 Fedora Release Engineering - 7.1.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Sat Jul 27 2013 Petr Machata - 7.1.4-2 -- Rebuild for boost 1.54.0 - -* Sat May 25 2013 Rex Dieter 7.1.4-2 -- rebuild (libical) - -* Sun Mar 24 2013 Robert Scheck 7.1.4-1 -- Upgrade to 7.1.4 - -* Fri Mar 22 2013 Remi Collet 7.0.13-2 -- rebuild for http://fedoraproject.org/wiki/Features/Php55 - -* Sun Mar 03 2013 Robert Scheck 7.0.13-1 -- Upgrade to 7.0.13 - -* Sun Feb 10 2013 Robert Scheck 7.0.12-1 -- Upgrade to 7.0.12 - -* Sun Feb 10 2013 Denis Arnaud - 7.0.9-3 -- Rebuild for Boost-1.53.0 - -* Fri Feb 01 2013 Parag Nemade - 7.0.9-2 -- Rebuild for icu 50 - -* Mon Aug 13 2012 Robert Scheck 7.0.9-1 -- Upgrade to 7.0.9 (#847534) - -* Sun Aug 12 2012 Rex Dieter 7.0.8-2 -- rebuild (boost) - -* Sun Jul 22 2012 Fedora Release Engineering - 7.0.8-1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Tue Jun 19 2012 Robert Scheck 7.0.8-1 -- Upgrade to 7.0.8 - -* Wed May 09 2012 Robert Scheck 7.0.7-1 -- Upgrade to 7.0.7 - -* Sun Apr 22 2012 Robert Scheck 7.0.6-1 -- Upgrade to 7.0.6 - -* Sat Mar 10 2012 Robert Scheck 7.0.5-1 -- Upgrade to 7.0.5 - -* Tue Feb 28 2012 Fedora Release Engineering - 7.0.4-2 -- Rebuilt for c++ ABI breakage - -* Thu Jan 19 2012 Remi Collet - 7.0.4-2 -- build against php 5.4.0 -- fix so filters - -* Fri Jan 13 2012 Robert Scheck 7.0.4-1 -- 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) - -* Sat Dec 17 2011 Robert Scheck 7.0.3-2 -- Enabled non-optional build of epoll socket handling (#760888) - -* Sun Nov 20 2011 Robert Scheck 7.0.3-1 -- Upgrade to 7.0.3 - -* Sat Oct 01 2011 Robert Scheck 7.0.2-1 -- Upgrade to 7.0.2 (#717968) - -* Sun Aug 14 2011 Robert Scheck 7.0.1-1 -- Upgrade to 7.0.1 (#725250, #725909, #727346) - -* Mon Jun 27 2011 Robert Scheck 7.0.0-1 -- Upgrade to 7.0.0 - -* Tue Jun 14 2011 Robert Scheck 6.40.9-1 -- Upgrade to 6.40.9 - -* Sat May 28 2011 Robert Scheck 6.40.8-1 -- Upgrade to 6.40.8 - -* Wed Apr 06 2011 Robert Scheck 6.40.7-1 -- Upgrade to 6.40.7 - -* Thu Mar 24 2011 Robert Scheck 6.40.6-2 -- Rebuilt for mysql 5.5.10 (soname bump in libmysqlclient) - -* Mon Mar 21 2011 Robert Scheck 6.40.6-1 -- Upgrade to 6.40.6 - -* Sun Feb 27 2011 Robert Scheck 6.40.5-1 -- Upgrade to 6.40.5 - -* Tue Feb 08 2011 Fedora Release Engineering - 6.40.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Sun Dec 12 2010 Robert Scheck 6.40.4-1 -- Upgrade to 6.40.4 - -* Fri Oct 29 2010 Robert Scheck 6.40.3-1 -- Upgrade to 6.40.3 - -* Tue Aug 31 2010 Robert Scheck 6.40.2-1 -- Upgrade to 6.40.2 - -* Mon Aug 09 2010 Robert Scheck 6.40.1-1 -- Upgrade to 6.40.1 - -* Tue Jun 15 2010 Robert Scheck 6.40.0-3 -- Rebuild for perl 5.12.1 - -* Fri Jun 11 2010 Robert Scheck 6.40.0-2 -- Added patch to ensure -pthread for -lclucene configure test - -* Thu Jun 10 2010 Robert Scheck 6.40.0-1 -- Upgrade to 6.40.0 (#564135, #565252, #600993) - -* Sat May 01 2010 Robert Scheck 6.30.14-1 -- Upgrade to 6.30.14 - -* Sun Apr 25 2010 Robert Scheck 6.30.13-1 -- Upgrade to 6.30.13 -- Moved zarafa.schema file from %%doc to %%{_datadir}/%%{name} - -* Sat Mar 20 2010 Robert Scheck 6.30.12-1 -- Upgrade to 6.30.12 - -* Fri Mar 19 2010 Robert Scheck 6.30.11-1 -- Upgrade to 6.30.11 - -* Tue Feb 23 2010 Robert Scheck 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 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)