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