From e14f982e66a7e57d8435127fcc89e41bbf15f724 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Tue, 26 Jun 2012 01:35:25 +0200 Subject: [PATCH 01/38] 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 02/38] - 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 03/38] 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 04/38] 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 05/38] 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 06/38] 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 07/38] 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 08/38] 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 09/38] 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 10/38] 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 11/38] 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 12/38] 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 13/38] 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 14/38] 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 15/38] 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 16/38] - 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 17/38] - 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 18/38] - 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 19/38] 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 20/38] 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 21/38] 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 22/38] 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 23/38] 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 24/38] 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 25/38] 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 26/38] - 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 27/38] 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 28/38] 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 29/38] 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 30/38] - 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 31/38] 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 32/38] - 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 33/38] 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 34/38] 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 35/38] - 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 36/38] 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 37/38] 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 38/38] 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)