[SCM] Debian packaging for the Shibboleth Apache SP branch, debian, updated. upstream/1.3.1.dfsg1-143-gb58a785
Russ Allbery
rra at debian.org
Fri Jun 27 00:23:06 UTC 2008
The following commit has been merged in the debian branch:
commit b58a785cd4d06b40d2fd6cfabfa000643543a381
Author: Russ Allbery <rra at debian.org>
Date: Thu Jun 26 09:57:18 2008 -0700
Remove old quilt patches
Remove old quilt patches to avoid confusing the new dpkg source
format. Since switching to Git, they were no longer used.
Closes: #485039
diff --git a/debian/changelog b/debian/changelog
index 1f39e58..84f7773 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+shibboleth-sp (1.3.1.dfsg1-2) UNRELEASED; urgency=low
+
+ * Remove old quilt patches to avoid confusing the new dpkg source
+ format. Since switching to Git, they were no longer used. Thanks,
+ Raphael Hertzog. (Closes: #485039)
+
+ -- Russ Allbery <rra at debian.org> Thu, 26 Jun 2008 09:56:26 -0700
+
shibboleth-sp (1.3.1.dfsg1-1) unstable; urgency=low
* New upstream release.
diff --git a/debian/patches/64-bit b/debian/patches/64-bit
deleted file mode 100644
index ec22aa4..0000000
--- a/debian/patches/64-bit
+++ /dev/null
@@ -1,49 +0,0 @@
-Patch from Andreas Jochens to resolve FTBFS on 64-bit platforms due to
-C++ compilation errors (which are correct; an int is too small to hold
-a pointer). Not yet submitted upstream.
-
-Index: shibboleth-sp/apache/mod_apache.cpp
-===================================================================
---- shibboleth-sp.orig/apache/mod_apache.cpp 2006-10-03 12:00:05.000000000 -0700
-+++ shibboleth-sp/apache/mod_apache.cpp 2006-11-27 19:24:28.000000000 -0800
-@@ -193,7 +193,7 @@ extern "C" const char* ap_set_global_str
- extern "C" const char* shib_set_server_string_slot(cmd_parms* parms, void*, const char* arg)
- {
- char* base=(char*)ap_get_module_config(parms->server->module_config,&mod_shib);
-- int offset=(int)parms->info;
-+ long offset=(long)parms->info;
- *((char**)(base + offset))=ap_pstrdup(parms->pool,arg);
- return NULL;
- }
-@@ -341,11 +341,11 @@ extern "C" int shib_check_user(request_r
- // Check user authentication and export information, then set the handler bypass
- pair<bool,void*> res = sta.doCheckAuthN(true);
- apr_pool_userdata_setn((const void*)42,g_UserDataKey,NULL,r->pool);
-- if (res.first) return (int)res.second;
-+ if (res.first) return (long)res.second;
-
- // user auth was okay -- export the assertions now
- res = sta.doExportAssertions();
-- if (res.first) return (int)res.second;
-+ if (res.first) return (long)res.second;
-
- // export happened successfully.. this user is ok.
- return OK;
-@@ -390,7 +390,7 @@ extern "C" int shib_handler(request_rec*
- ShibTargetApache sta(r);
-
- pair<bool,void*> res = sta.doHandler();
-- if (res.first) return (int)res.second;
-+ if (res.first) return (long)res.second;
-
- ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, SH_AP_R(r), "doHandler() did not do anything.");
- return SERVER_ERROR;
-@@ -427,7 +427,7 @@ extern "C" int shib_auth_checker(request
- ShibTargetApache sta(r);
-
- pair<bool,void*> res = sta.doCheckAuthZ();
-- if (res.first) return (int)res.second;
-+ if (res.first) return (long)res.second;
-
- // We're all okay.
- return OK;
diff --git a/debian/patches/dfsg b/debian/patches/dfsg
deleted file mode 100644
index d9615c1..0000000
--- a/debian/patches/dfsg
+++ /dev/null
@@ -1,15 +0,0 @@
-Remove from the build machinery references to files that we had to remove
-from the upstream source due to DFSG freeness problems.
-
-Index: shibboleth-sp/schemas/Makefile.am
-===================================================================
---- shibboleth-sp.orig/schemas/Makefile.am 2006-11-03 12:53:19.000000000 -0800
-+++ shibboleth-sp/schemas/Makefile.am 2006-11-03 12:53:28.000000000 -0800
-@@ -19,7 +19,6 @@ pkgxml_DATA = \
- shibboleth-targetconfig-1.0.xsd \
- saml-schema-assertion-2.0.xsd \
- saml-schema-metadata-2.0.xsd \
-- WS-Trust.xsd \
- metadata_v12_to_v11.xsl \
- metadata_v12_to_v13.xsl \
- metadata_v13_to_v12.xsl \
diff --git a/debian/patches/gcc-4.3 b/debian/patches/gcc-4.3
deleted file mode 100644
index 65db0de..0000000
--- a/debian/patches/gcc-4.3
+++ /dev/null
@@ -1,236 +0,0 @@
-Patch from Martin Michlmayr to clean up some C++ header sloppiness that
-causes compilation failures with gcc 4.3. Submitted upstream.
-
-Debian Bug#417710
-Upstream bug #644
-
-Index: shibboleth-sp/adfs/listener.cpp
-===================================================================
---- shibboleth-sp.orig/adfs/listener.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/adfs/listener.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -26,6 +26,7 @@
-
- #include <log4cpp/FixedContextCategory.hh>
- #include <xercesc/framework/MemBufInputSource.hpp>
-+#include <memory>
-
- using namespace std;
- using namespace log4cpp;
-Index: shibboleth-sp/shib/ShibbolethTrust.cpp
-===================================================================
---- shibboleth-sp.orig/shib/ShibbolethTrust.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib/ShibbolethTrust.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -30,6 +30,8 @@
- #include <xsec/dsig/DSIGKeyInfoX509.hpp>
- #include <xsec/enc/OpenSSL/OpenSSLCryptoX509.hpp>
-
-+#include <memory>
-+
- using namespace shibboleth;
- using namespace saml;
- using namespace log4cpp;
-Index: shibboleth-sp/shib/ScopedAttribute.cpp
-===================================================================
---- shibboleth-sp.orig/shib/ScopedAttribute.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib/ScopedAttribute.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include "internal.h"
- #include <xercesc/util/regx/RegularExpression.hpp>
- #include <log4cpp/Category.hh>
-+#include <memory>
-
- using namespace shibboleth;
- using namespace saml;
-Index: shibboleth-sp/shib-target/MemoryListener.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/MemoryListener.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/MemoryListener.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -23,6 +23,7 @@
- */
-
- #include "internal.h"
-+#include <memory>
-
- using namespace std;
- using namespace log4cpp;
-Index: shibboleth-sp/shib-target/RPCListener.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/RPCListener.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/RPCListener.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include <saml/saml.h> // need this to "prime" the xmlsec-constrained windows.h declaration
- #include <shib-target/shibrpc.h>
- #include "internal.h"
-+#include <memory>
-
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
-Index: shibboleth-sp/shib-target/shib-ccache.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/shib-ccache.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/shib-ccache.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -24,6 +24,7 @@
- */
-
- #include "internal.h"
-+#include <memory>
-
- #if HAVE_UNISTD_H
- # include <unistd.h>
-Index: shibboleth-sp/shib-target/shib-ini.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/shib-ini.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/shib-ini.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -28,6 +28,7 @@
-
- #include <sys/types.h>
- #include <sys/stat.h>
-+#include <memory>
-
- using namespace std;
- using namespace saml;
-Index: shibboleth-sp/shib-target/shib-target.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/shib-target.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/shib-target.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -32,6 +32,7 @@
- #include <sstream>
- #include <fstream>
- #include <stdexcept>
-+#include <memory>
-
- #include <shib/shib-threads.h>
- #include <xercesc/util/Base64.hpp>
-Index: shibboleth-sp/shib-target/XMLRequestMapper.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/XMLRequestMapper.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/XMLRequestMapper.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include "internal.h"
-
- #include <log4cpp/Category.hh>
-+#include <memory>
-
- using namespace std;
- using namespace log4cpp;
-Index: shibboleth-sp/test/shibtest.cpp
-===================================================================
---- shibboleth-sp.orig/test/shibtest.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/test/shibtest.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -15,6 +15,7 @@
- */
-
- #include "../shib-target/shib-target.h"
-+#include <memory>
-
- using namespace std;
- using namespace saml;
-Index: shibboleth-sp/test/posttest.cpp
-===================================================================
---- shibboleth-sp.orig/test/posttest.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/test/posttest.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -15,6 +15,7 @@
- */
-
- #include "../shib/shib.h"
-+#include <memory>
- #include <sstream>
-
- #include <openssl/bio.h>
-Index: shibboleth-sp/apache/mod_apache.cpp
-===================================================================
---- shibboleth-sp.orig/apache/mod_apache.cpp 2007-04-28 13:16:19.000000000 -0700
-+++ shibboleth-sp/apache/mod_apache.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -52,6 +52,7 @@
-
- #include <fstream>
- #include <sstream>
-+#include <memory>
-
- #ifdef HAVE_UNISTD_H
- #include <unistd.h> // for getpid()
-Index: shibboleth-sp/siterefresh/siterefresh.cpp
-===================================================================
---- shibboleth-sp.orig/siterefresh/siterefresh.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/siterefresh/siterefresh.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include <shib-target/shib-target.h>
-
- #include <fstream>
-+#include <memory>
- #include <log4cpp/Category.hh>
- #include <log4cpp/OstreamAppender.hh>
- #include <xercesc/framework/URLInputSource.hpp>
-Index: shibboleth-sp/xmlproviders/XMLAAP.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLAAP.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLAAP.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include "internal.h"
-
- #include <log4cpp/Category.hh>
-+#include <memory>
-
- using namespace shibboleth;
- using namespace saml;
-Index: shibboleth-sp/xmlproviders/XMLAccessControl.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLAccessControl.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLAccessControl.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -24,6 +24,7 @@
- #include <shib-target/shib-target.h>
-
- #include <log4cpp/Category.hh>
-+#include <memory>
-
- #ifndef HAVE_STRCASECMP
- # define strcasecmp stricmp
-Index: shibboleth-sp/xmlproviders/XMLCredentials.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLCredentials.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLCredentials.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -28,6 +28,7 @@
- #include <sys/stat.h>
-
- #include <log4cpp/Category.hh>
-+#include <memory>
-
- using namespace shibboleth;
- using namespace saml;
-Index: shibboleth-sp/xmlproviders/XMLMetadata.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLMetadata.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLMetadata.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -38,6 +38,7 @@
- #include <xsec/enc/OpenSSL/OpenSSLCryptoX509.hpp>
- #include <xsec/framework/XSECException.hpp>
- #include <xsec/framework/XSECProvider.hpp>
-+#include <memory>
-
- using namespace shibboleth;
- using namespace saml;
-Index: shibboleth-sp/xmlproviders/XMLTrust.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLTrust.cpp 2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLTrust.cpp 2007-04-28 13:16:19.000000000 -0700
-@@ -37,6 +37,8 @@
- #include <xsec/enc/XSECCryptoException.hpp>
- #include <xsec/enc/XSECKeyInfoResolverDefault.hpp>
-
-+#include <memory>
-+
- using namespace shibboleth;
- using namespace saml;
- using namespace log4cpp;
-Index: shibboleth-sp/shib-target/shib-mlp.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/shib-mlp.cpp 2007-04-28 13:16:30.000000000 -0700
-+++ shibboleth-sp/shib-target/shib-mlp.cpp 2007-04-28 13:16:45.000000000 -0700
-@@ -26,6 +26,7 @@
-
- #include <sstream>
- #include <ctype.h>
-+#include <typeinfo>
- #include <xercesc/util/XercesDefs.hpp>
- #include <log4cpp/Category.hh>
-
diff --git a/debian/patches/log4cpp-1.0 b/debian/patches/log4cpp-1.0
deleted file mode 100644
index 475fa05..0000000
--- a/debian/patches/log4cpp-1.0
+++ /dev/null
@@ -1,275 +0,0 @@
-log4cpp 1.0 removed the ENDLINE enum from CategoryStream and instead uses
-log4cpp::eol. Not yet reported upstream.
-
---- shibboleth-sp.orig/shib-target/ArtifactMapper.cpp
-+++ shibboleth-sp/shib-target/ArtifactMapper.cpp
-@@ -99,7 +99,7 @@
- try {
- response = binding->send(ep->getLocation(),*request,&callCtx);
- if (log.isDebugEnabled())
-- log.debugStream() << "SAML response from artifact request:\n" << *response << CategoryStream::ENDLINE;
-+ log.debugStream() << "SAML response from artifact request:\n" << *response << log4cpp::eol;
-
- if (!response->getAssertions().hasNext()) {
- delete response;
-@@ -138,7 +138,7 @@
- try {
- response = binding->send(ep->getLocation(),*request,&callCtx);
- if (log.isDebugEnabled())
-- log.debugStream() << "SAML response from artifact request:\n" << *response << CategoryStream::ENDLINE;
-+ log.debugStream() << "SAML response from artifact request:\n" << *response << log4cpp::eol;
-
- if (!response->getAssertions().hasNext()) {
- delete response;
---- shibboleth-sp.orig/shib-target/RPCListener.cpp
-+++ shibboleth-sp/shib-target/RPCListener.cpp
-@@ -238,21 +238,21 @@
-
- istringstream authstream(ret.auth_statement);
- log.debugStream() << "trying to decode authentication statement: "
-- << ((ret.auth_statement && *ret.auth_statement) ? ret.auth_statement : "(none)") << CategoryStream::ENDLINE;
-+ << ((ret.auth_statement && *ret.auth_statement) ? ret.auth_statement : "(none)") << log4cpp::eol;
- auto_ptr<SAMLAuthenticationStatement> s(
- (ret.auth_statement && *ret.auth_statement) ? new SAMLAuthenticationStatement(authstream) : NULL
- );
-
- istringstream prestream(ret.attr_response_pre);
- log.debugStream() << "trying to decode unfiltered attribute response: "
-- << ((ret.attr_response_pre && *ret.attr_response_pre) ? ret.attr_response_pre : "(none)") << CategoryStream::ENDLINE;
-+ << ((ret.attr_response_pre && *ret.attr_response_pre) ? ret.attr_response_pre : "(none)") << log4cpp::eol;
- auto_ptr<SAMLResponse> pre(
- (ret.attr_response_pre && *ret.attr_response_pre) ? new SAMLResponse(prestream,minor) : NULL
- );
-
- istringstream poststream(ret.attr_response_post);
- log.debugStream() << "trying to decode filtered attribute response: "
-- << ((ret.attr_response_post && *ret.attr_response_post) ? ret.attr_response_post : "(none)") << CategoryStream::ENDLINE;
-+ << ((ret.attr_response_post && *ret.attr_response_post) ? ret.attr_response_post : "(none)") << log4cpp::eol;
- auto_ptr<SAMLResponse> post(
- (ret.attr_response_post && *ret.attr_response_post) ? new SAMLResponse(poststream,minor) : NULL
- );
---- shibboleth-sp.orig/shib-target/XMLRequestMapper.cpp
-+++ shibboleth-sp/shib-target/XMLRequestMapper.cpp
-@@ -461,7 +461,7 @@
- }
- }
- catch (SAMLException& e) {
-- log->errorStream() << "Error while parsing request mapping configuration: " << e.what() << CategoryStream::ENDLINE;
-+ log->errorStream() << "Error while parsing request mapping configuration: " << e.what() << log4cpp::eol;
- throw;
- }
- #ifndef _DEBUG
---- shibboleth-sp.orig/shib-target/shib-ini.cpp
-+++ shibboleth-sp/shib-target/shib-ini.cpp
-@@ -567,7 +567,7 @@
- }
- }
- catch (SAMLException& e) {
-- log.errorStream() << "Error while processing applicaton element: " << e.what() << CategoryStream::ENDLINE;
-+ log.errorStream() << "Error while processing applicaton element: " << e.what() << log4cpp::eol;
- cleanup();
- throw;
- }
-@@ -1137,7 +1137,7 @@
- }
- }
- catch (SAMLException& e) {
-- log.errorStream() << "Error while loading SP configuration: " << e.what() << CategoryStream::ENDLINE;
-+ log.errorStream() << "Error while loading SP configuration: " << e.what() << log4cpp::eol;
- throw;
- }
- #ifndef _DEBUG
---- shibboleth-sp.orig/shib/ReloadableXMLFile.cpp
-+++ shibboleth-sp/shib/ReloadableXMLFile.cpp
-@@ -53,12 +53,12 @@
- m_doc=p.parse(dsrc);
- m_root=m_doc->getDocumentElement();
-
-- log.infoStream() << "Loaded and parsed XML file (" << pathname << ")" << CategoryStream::ENDLINE;
-+ log.infoStream() << "Loaded and parsed XML file (" << pathname << ")" << log4cpp::eol;
- }
- catch (XMLException& e)
- {
- auto_ptr_char msg(e.getMessage());
-- log.errorStream() << "Xerces error while opening configuration file (" << pathname << "): " << msg.get() << CategoryStream::ENDLINE;
-+ log.errorStream() << "Xerces error while opening configuration file (" << pathname << "): " << msg.get() << log4cpp::eol;
- if (m_doc) {
- m_doc->release();
- m_doc=NULL;
-@@ -67,7 +67,7 @@
- }
- catch (SAMLException& e)
- {
-- log.errorStream() << "XML error while parsing configuration file (" << pathname << "): " << e.what() << CategoryStream::ENDLINE;
-+ log.errorStream() << "XML error while parsing configuration file (" << pathname << "): " << e.what() << log4cpp::eol;
- if (m_doc) {
- m_doc->release();
- m_doc=NULL;
-@@ -77,7 +77,7 @@
- #ifndef _DEBUG
- catch (...)
- {
-- log.errorStream() << "Unexpected error while parsing configuration file (" << pathname << ")" << CategoryStream::ENDLINE;
-+ log.errorStream() << "Unexpected error while parsing configuration file (" << pathname << ")" << log4cpp::eol;
- if (m_doc) {
- m_doc->release();
- m_doc=NULL;
---- shibboleth-sp.orig/shib/ShibbolethTrust.cpp
-+++ shibboleth-sp/shib/ShibbolethTrust.cpp
-@@ -47,9 +47,9 @@
- unsigned long code=ERR_get_error_line_data(&file,&line,&data,&flags);
- while (code) {
- Category& log=Category::getInstance("OpenSSL");
-- log.errorStream() << "error code: " << code << " in " << file << ", line " << line << CategoryStream::ENDLINE;
-+ log.errorStream() << "error code: " << code << " in " << file << ", line " << line << log4cpp::eol;
- if (data && (flags & ERR_TXT_STRING))
-- log.errorStream() << "error data: " << data << CategoryStream::ENDLINE;
-+ log.errorStream() << "error data: " << data << log4cpp::eol;
- code=ERR_get_error_line_data(&file,&line,&data,&flags);
- }
- }
-@@ -314,7 +314,7 @@
- buf[len] = '\0';
- subjectstr+=buf;
- }
-- log.infoStream() << "certificate subject: " << subjectstr << CategoryStream::ENDLINE;
-+ log.infoStream() << "certificate subject: " << subjectstr << log4cpp::eol;
- // The flags give us LDAP order instead of X.500, with a comma plus space separator.
- len=X509_NAME_print_ex(b2,subject,0,XN_FLAG_RFC2253 + XN_FLAG_SEP_CPLUS_SPC - XN_FLAG_SEP_COMMA_PLUS);
- BIO_flush(b2);
---- shibboleth-sp.orig/siterefresh/siterefresh.cpp
-+++ shibboleth-sp/siterefresh/siterefresh.cpp
-@@ -270,25 +270,25 @@
- ret=-1;
- }
- catch(SAMLException& e) {
-- log.errorStream() << "caught a SAML exception: " << e.what() << CategoryStream::ENDLINE;
-+ log.errorStream() << "caught a SAML exception: " << e.what() << log4cpp::eol;
- ret=-2;
- }
- catch(XMLException& e) {
- auto_ptr_char temp(e.getMessage());
-- log.errorStream() << "caught an XML exception: " << temp.get() << CategoryStream::ENDLINE;
-+ log.errorStream() << "caught an XML exception: " << temp.get() << log4cpp::eol;
- ret=-3;
- }
- catch(XSECException& e) {
- auto_ptr_char temp(e.getMsg());
-- log.errorStream() << "caught an XMLSec exception: " << temp.get() << CategoryStream::ENDLINE;
-+ log.errorStream() << "caught an XMLSec exception: " << temp.get() << log4cpp::eol;
- ret=-4;
- }
- catch(XSECCryptoException& e) {
-- log.errorStream() << "caught an XMLSecCrypto exception: " << e.getMsg() << CategoryStream::ENDLINE;
-+ log.errorStream() << "caught an XMLSecCrypto exception: " << e.getMsg() << log4cpp::eol;
- ret=-5;
- }
- catch(...) {
-- log.errorStream() << "caught an unknown exception" << CategoryStream::ENDLINE;
-+ log.errorStream() << "caught an unknown exception" << log4cpp::eol;
- ret=-6;
- }
-
---- shibboleth-sp.orig/xmlproviders/XMLAAP.cpp
-+++ shibboleth-sp/xmlproviders/XMLAAP.cpp
-@@ -200,7 +200,7 @@
- }
- catch (SAMLException& e)
- {
-- log.errorStream() << "Error while parsing AAP: " << e.what() << CategoryStream::ENDLINE;
-+ log.errorStream() << "Error while parsing AAP: " << e.what() << log4cpp::eol;
- this->~XMLAAPImpl();
- throw;
- }
-@@ -398,7 +398,7 @@
- {
- auto_ptr<char> tmp(XMLString::transcode(ex.getMessage()));
- Category::getInstance(XMLPROVIDERS_LOGCAT".XMLAAPImpl").errorStream()
-- << "caught exception while parsing regular expression: " << tmp.get() << CategoryStream::ENDLINE;
-+ << "caught exception while parsing regular expression: " << tmp.get() << log4cpp::eol;
- }
- return false;
- }
---- shibboleth-sp.orig/xmlproviders/XMLAccessControl.cpp
-+++ shibboleth-sp/xmlproviders/XMLAccessControl.cpp
-@@ -264,7 +264,7 @@
- m_rootAuthz=new Operator(rootElement);
- }
- catch (SAMLException& e) {
-- log->errorStream() << "Error while parsing access control configuration: " << e.what() << CategoryStream::ENDLINE;
-+ log->errorStream() << "Error while parsing access control configuration: " << e.what() << log4cpp::eol;
- throw;
- }
- #ifndef _DEBUG
---- shibboleth-sp.orig/xmlproviders/XMLCredentials.cpp
-+++ shibboleth-sp/xmlproviders/XMLCredentials.cpp
-@@ -131,7 +131,7 @@
- }
- }
- catch (SAMLException& e) {
-- log.errorStream() << "Error while parsing creds configuration: " << e.what() << CategoryStream::ENDLINE;
-+ log.errorStream() << "Error while parsing creds configuration: " << e.what() << log4cpp::eol;
- this->~XMLCredentialsImpl();
- throw;
- }
---- shibboleth-sp.orig/xmlproviders/XMLMetadata.cpp
-+++ shibboleth-sp/xmlproviders/XMLMetadata.cpp
-@@ -1183,7 +1183,7 @@
- }
- catch (SAMLException& e)
- {
-- log.errorStream() << "Error while parsing SAML metadata: " << e.what() << CategoryStream::ENDLINE;
-+ log.errorStream() << "Error while parsing SAML metadata: " << e.what() << log4cpp::eol;
- this->~XMLMetadataImpl();
- throw;
- }
-@@ -1355,13 +1355,13 @@
- }
- catch(XSECException& e) {
- auto_ptr_char msg(e.getMsg());
-- log.errorStream() << "caught XMLSec exception while verifying metadata signature: " << msg.get() << CategoryStream::ENDLINE;
-+ log.errorStream() << "caught XMLSec exception while verifying metadata signature: " << msg.get() << log4cpp::eol;
- if (sig)
- prov.releaseSignature(sig);
- return false;
- }
- catch(XSECCryptoException& e) {
-- log.errorStream() << "caught XMLSecCrypto exception while verifying metadata signature: " << e.getMsg() << CategoryStream::ENDLINE;
-+ log.errorStream() << "caught XMLSecCrypto exception while verifying metadata signature: " << e.getMsg() << log4cpp::eol;
- if (sig)
- prov.releaseSignature(sig);
- return false;
---- shibboleth-sp.orig/xmlproviders/XMLProviders.cpp
-+++ shibboleth-sp/xmlproviders/XMLProviders.cpp
-@@ -100,9 +100,9 @@
- unsigned long code=ERR_get_error_line_data(&file,&line,&data,&flags);
- while (code) {
- Category& log=Category::getInstance("OpenSSL");
-- log.errorStream() << "error code: " << code << " in " << file << ", line " << line << CategoryStream::ENDLINE;
-+ log.errorStream() << "error code: " << code << " in " << file << ", line " << line << log4cpp::eol;
- if (data && (flags & ERR_TXT_STRING))
-- log.errorStream() << "error data: " << data << CategoryStream::ENDLINE;
-+ log.errorStream() << "error data: " << data << log4cpp::eol;
- code=ERR_get_error_line_data(&file,&line,&data,&flags);
- }
- }
---- shibboleth-sp.orig/xmlproviders/XMLTrust.cpp
-+++ shibboleth-sp/xmlproviders/XMLTrust.cpp
-@@ -332,7 +332,7 @@
- walker->release(); // This just cleans up aggressively, but there's no leak if we don't.
- }
- catch (SAMLException& e) {
-- log.errorStream() << "Error while parsing trust configuration: " << e.what() << CategoryStream::ENDLINE;
-+ log.errorStream() << "Error while parsing trust configuration: " << e.what() << log4cpp::eol;
- this->~XMLTrustImpl();
- throw;
- }
-@@ -473,7 +473,7 @@
- buf[len] = '\0';
- subjectstr+=buf;
- }
-- log.infoStream() << "certificate subject: " << subjectstr << CategoryStream::ENDLINE;
-+ log.infoStream() << "certificate subject: " << subjectstr << log4cpp::eol;
- // The flags give us LDAP order instead of X.500, with a comma plus space separator.
- len=X509_NAME_print_ex(b2,subject,0,XN_FLAG_RFC2253 + XN_FLAG_SEP_CPLUS_SPC - XN_FLAG_SEP_COMMA_PLUS);
- BIO_flush(b2);
diff --git a/debian/patches/native-syslog b/debian/patches/native-syslog
deleted file mode 100644
index 15a5787..0000000
--- a/debian/patches/native-syslog
+++ /dev/null
@@ -1,38 +0,0 @@
-Switch the native.log over to syslog instead of trying to write to a
-file where Apache doesn't have permissions. Not sent upstream, but
-they're aware of the problem and I don't think they are making changes
-in this area.
-
---- shibboleth-sp.orig/configs/native.logger.in
-+++ shibboleth-sp/configs/native.logger.in
-@@ -10,10 +10,23 @@
-
- # define the appenders
-
--log4j.appender.native_log=org.apache.log4j.RollingFileAppender
--log4j.appender.native_log.fileName=@-SHIRELOGDIR-@/native.log
--log4j.appender.native_log.maxFileSize=1000000
--log4j.appender.native_log.maxBackupIndex=10
--#log4j.appender.native_log.layout=org.apache.log4j.BasicLayout
--log4j.appender.native_log.layout=org.apache.log4j.PatternLayout
--log4j.appender.native_log.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} %p %c %x: %m%n
-+# This is the default, but it's essentially useless under normal
-+# circumstances since Apache doesn't have access to write to that
-+# directory.
-+#log4j.appender.native_log=org.apache.log4j.RollingFileAppender
-+#log4j.appender.native_log.fileName=@-SHIRELOGDIR-@/native.log
-+#log4j.appender.native_log.maxFileSize=1000000
-+#log4j.appender.native_log.maxBackupIndex=10
-+##log4j.appender.native_log.layout=org.apache.log4j.BasicLayout
-+#log4j.appender.native_log.layout=org.apache.log4j.PatternLayout
-+#log4j.appender.native_log.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} %p %c %x: %m%n
-+
-+# Use syslog instead, since then at least the messages will go somewhere.
-+# That facility is (3 << 3) or LOG_DAEMON, since log4cpp apparently
-+# doesn't recognize symbolic log facilities.
-+#
-+# This is a Debian-specific change.
-+log4j.appender.native_log=org.apache.log4j.LocalSyslogAppender
-+log4j.appender.native_log.syslogName=shibboleth-sp
-+log4j.appender.native_log.facility=24
-+log4j.appender.native_log.layout=org.apache.log4j.BasicLayout
diff --git a/debian/patches/remote-mysql b/debian/patches/remote-mysql
deleted file mode 100644
index 9f45781..0000000
--- a/debian/patches/remote-mysql
+++ /dev/null
@@ -1,1277 +0,0 @@
-Index: shibboleth-sp/Makefile.am
-===================================================================
---- shibboleth-sp.orig/Makefile.am 2006-09-29 11:58:09.000000000 -0700
-+++ shibboleth-sp/Makefile.am 2006-09-29 23:33:28.000000000 -0700
-@@ -23,7 +23,8 @@ WANT_SUBDIRS = @WANT_SUBDIRS@
- SUBDIRS = $(WANT_SUBDIRS)
-
- DIST_SUBDIRS = adfs doc oncrpc shib schemas configs shib-target shar test \
-- apache siterefresh shib-mysql-ccache xmlproviders nsapi_shib selinux
-+ apache siterefresh shib-mysql-ccache xmlproviders nsapi_shib selinux \
-+ shib-remote-mysql-ccache
-
- all-local: shibboleth.spec pkginfo
-
-Index: shibboleth-sp/configure.ac
-===================================================================
---- shibboleth-sp.orig/configure.ac 2006-09-29 11:58:09.000000000 -0700
-+++ shibboleth-sp/configure.ac 2006-09-29 23:33:28.000000000 -0700
-@@ -556,6 +556,7 @@ fi
- #
-
- AC_CONFIG_FILES([shib-mysql-ccache/Makefile])
-+AC_CONFIG_FILES([shib-remote-mysql-ccache/Makefile])
-
- # determine whether we should enable the mysql ccache
- AC_ARG_ENABLE([mysql],
-@@ -627,16 +628,40 @@ if test "$mysql_version_ok" = "yes" ; th
- if test $? != 0 ; then
- found_mysql=no
- if test "$mysql_enabled" = "yes" ; then
-- AC_MSG_ERROR(Could not find the MySQL Embedded-server libraries.)
-+ AC_MSG_WARN(Could not find the MySQL Embedded-server libraries.)
- else
-- AC_MSG_RESULT(no.. skipping MySQL)
-+ AC_MSG_RESULT(no.. skipping Embedded MySQL)
- fi
- else
- found_mysql=yes
- AC_MSG_RESULT(yes)
- fi
-+
-+ AC_MSG_CHECKING(for MySQL client libraries)
-+ MYSQL_CLIENT_LIBS=`$MYSQL_CONFIG --libs_r`
-+ if test $? != 0 ; then
-+ MYSQL_CLIENT_LIBS=`$MYSQL_CONFIG --libs`
-+ if test $? != 0; then
-+ found_mysql_client=no
-+ if test "$mysql_enabled" = "yes" ; then
-+ AC_MSG_WARN(Could not find the MySQL client libraries.)
-+ else
-+ AC_MSG_RESULT(no.. skipping MySQL client)
-+ fi
-+ else
-+ found_mysql_client=yes
-+ fi
-+ else
-+ found_mysql_client=yes
-+ AC_MSG_RESULT(yes)
-+ fi
-+
-+ if test "$found_mysql" = "no" -a "$found_mysql_client" = "no"; then
-+ AC_MSG_ERROR(Could not find the MySQL embedded server or client libraries)
-+ fi
- fi
-
-+
- # if found_mysql=yes then test that we can actually build mysql
- if test "$found_mysql" = yes ; then
- MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags`
-@@ -654,7 +679,7 @@ if test "$found_mysql" = yes ; then
- if test "$have_mysql_h" = yes ; then
- save_LIBS="$LIBS"
- LIBS="$LIBS $MYSQL_LIBS"
-- AC_MSG_CHECKING(if we can link againt mysql)
-+ AC_MSG_CHECKING(if we can link against MySQL Embedded Server Library)
- AC_TRY_LINK(
- [#include <mysql.h>
- #include <stdio.h>],
-@@ -664,17 +689,51 @@ if test "$found_mysql" = yes ; then
- LIBS="$save_LIBS"
-
- if test "$have_mysql_libs" = no ; then
-- if test "$mysql_enabled" = "yes" ; then
-- AC_MSG_ERROR([unable to link with MySQL Embedded Server Library])
-- else
-- AC_MSG_RESULT(no. skipping MySQL)
-- fi
-+ AC_MSG_RESULT(no. skipping MySQL Embedded Server Library)
-+ fi
-+ fi
-+
-+ CPPFLAGS="$save_CPPFLAGS"
-+fi
-+
-+# if found_mysql_client=yes then test that we can actually build mysql
-+if test "$found_mysql_client" = yes ; then
-+ MYSQL_CLIENT_CFLAGS=`$MYSQL_CONFIG --cflags`
-+ MYSQL_CLIENT_CFLAGS=`eval echo $MYSQL_CLIENT_CFLAGS`
-+ MYSQL_CLIENT_LIBS=`eval echo $MYSQL_CLIENT_LIBS`
-+
-+ save_CPPFLAGS="$CPPFLAGS"
-+ CPPFLAGS="$CPPFLAGS $MYSQL_CFLAGS"
-+
-+ AC_CHECK_HEADER([mysql.h], [have_mysql_h=yes], [have_mysql_h=no])
-+ if test "$have_mysql_h" = no -a "$mysql_enabled" = "yes" ; then
-+ AC_MSG_ERROR(unable to find MySQL header files)
-+ fi
-+
-+ if test "$have_mysql_h" = yes ; then
-+ save_LIBS="$LIBS"
-+ LIBS="$LIBS $MYSQL_CLIENT_LIBS"
-+ AC_MSG_CHECKING(if we can link againt MySQL Client Library)
-+ AC_TRY_LINK(
-+ [#include <mysql.h>
-+ #include <stdio.h>],
-+ [mysql_library_init(0, NULL, NULL)],
-+ [have_mysql_client_libs=yes],
-+ [have_mysql_client_libs=no])
-+ LIBS="$save_LIBS"
-+
-+ if test "$have_mysql_client_libs" = no ; then
-+ AC_MSG_RESULT(no. skipping MySQL CLient Library)
- fi
- fi
-
- CPPFLAGS="$save_CPPFLAGS"
- fi
-
-+if test "$have_mysql_libs" = "no" -a "$have_mysql_client_libs" = "no"; then
-+ AC_MSG_ERROR([unable to link with either the MySQL Embedded Server or Client Library])
-+fi
-+
- # if have_mysql_libs=yes then go ahead with building MySQL
- if test "$have_mysql_libs" = yes ; then
- # this AC_MSG_RESULT is from above!
-@@ -684,6 +743,15 @@ if test "$have_mysql_libs" = yes ; then
- AC_SUBST(MYSQL_LIBS)
- fi
-
-+# if have_mysql_client_libs=yes then go ahead with building MySQL
-+if test "$have_mysql_client_libs" = yes ; then
-+ # this AC_MSG_RESULT is from above!
-+ AC_MSG_RESULT(yes)
-+ WANT_SUBDIRS="$WANT_SUBDIRS shib-remote-mysql-ccache"
-+ AC_SUBST(MYSQL_CLIENT_CFLAGS)
-+ AC_SUBST(MYSQL_CLIENT_LIBS)
-+fi
-+
-
- AC_SUBST(WANT_SUBDIRS)
-
-Index: shibboleth-sp/shib-remote-mysql-ccache/Makefile.am
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/Makefile.am 2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,23 @@
-+AUTOMAKE_OPTIONS = foreign
-+
-+plugindir = $(libexecdir)
-+plugin_LTLIBRARIES = shib-remote-mysql-ccache.la
-+
-+AM_CFLAGS = $(MYSQL_CLIENT_CFLAGS)
-+AM_CXXFLAGS = $(AM_CFLAGS)
-+
-+shib_remote_mysql_ccache_la_LIBADD = \
-+ ../shib-target/libshib-target.la \
-+ ../shib/libshib.la \
-+ $(MYSQL_CLIENT_LIBS)
-+
-+shib_remote_mysql_ccache_la_SOURCES = \
-+ shib-remote-mysql-ccache.cpp
-+
-+shib_remote_mysql_ccache_la_LDFLAGS = -module -avoid-version
-+
-+install-exec-hook:
-+ for la in $(plugin_LTLIBRARIES) ; do rm -f $(DESTDIR)$(plugindir)/$$la ; done
-+
-+EXTRA_DIST = shib_remote_mysql_ccache.dsp shib_remote_mysql_ccache.rc resource.h
-+
-Index: shibboleth-sp/shib-remote-mysql-ccache/resource.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/resource.h 2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,15 @@
-+//{{NO_DEPENDENCIES}}
-+// Microsoft Developer Studio generated include file.
-+// Used by shib_remote_mysql_ccache.rc
-+//
-+
-+// Next default values for new objects
-+//
-+#ifdef APSTUDIO_INVOKED
-+#ifndef APSTUDIO_READONLY_SYMBOLS
-+#define _APS_NEXT_RESOURCE_VALUE 101
-+#define _APS_NEXT_COMMAND_VALUE 40001
-+#define _APS_NEXT_CONTROL_VALUE 1000
-+#define _APS_NEXT_SYMED_VALUE 101
-+#endif
-+#endif
-Index: shibboleth-sp/shib-remote-mysql-ccache/shib-remote-mysql-ccache.cpp
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/shib-remote-mysql-ccache.cpp 2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,851 @@
-+/*
-+ * Copyright 2001-2005 Internet2
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the "License");
-+ * you may not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+/*
-+ * shib-mysql-ccache.cpp: Shibboleth Credential Cache using MySQL.
-+ *
-+ * Created by: Derek Atkins <derek at ihtfp.com>
-+ *
-+ * $Id: shib-mysql-ccache.cpp,v 1.28 2005/07/18 01:00:09 cantor Exp $
-+ */
-+
-+/* This file is loosely based off the Shibboleth Credential Cache.
-+ * This plug-in is designed as a two-layer cache. Layer 1, the
-+ * long-term cache, stores data in a MySQL embedded database.
-+ *
-+ * Short-term data is cached in memory as SAML objects in the layer 2
-+ * cache.
-+ */
-+
-+// eventually we might be able to support autoconf via cygwin...
-+#if defined (_MSC_VER) || defined(__BORLANDC__)
-+# include "config_win32.h"
-+#else
-+# include "config.h"
-+#endif
-+
-+#ifdef WIN32
-+# define SHIBMYSQL_EXPORTS __declspec(dllexport)
-+#else
-+# define SHIBMYSQL_EXPORTS
-+#endif
-+
-+#ifdef HAVE_UNISTD_H
-+# include <unistd.h>
-+#endif
-+
-+#include <shib-target/shib-target.h>
-+#include <shib/shib-threads.h>
-+#include <log4cpp/Category.hh>
-+
-+#include <sstream>
-+#include <stdexcept>
-+
-+#include <mysql.h>
-+
-+// wanted to use MySQL codes for this, but can't seem to get back a 145
-+#define isCorrupt(s) strstr(s,"(errno: 145)")
-+
-+#ifdef HAVE_LIBDMALLOCXX
-+#include <dmalloc.h>
-+#endif
-+
-+using namespace std;
-+using namespace saml;
-+using namespace shibboleth;
-+using namespace shibtarget;
-+using namespace log4cpp;
-+
-+#define _DEBUG 1
-+
-+static const XMLCh Argument[] =
-+{ chLatin_A, chLatin_r, chLatin_g, chLatin_u, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chNull };
-+static const XMLCh cleanupInterval[] =
-+{ chLatin_c, chLatin_l, chLatin_e, chLatin_a, chLatin_n, chLatin_u, chLatin_p,
-+ chLatin_I, chLatin_n, chLatin_t, chLatin_e, chLatin_r, chLatin_v, chLatin_a, chLatin_l, chNull
-+};
-+static const XMLCh cacheTimeout[] =
-+{ chLatin_c, chLatin_a, chLatin_c, chLatin_h, chLatin_e, chLatin_T, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull };
-+static const XMLCh mysqlTimeout[] =
-+{ chLatin_m, chLatin_y, chLatin_s, chLatin_q, chLatin_l, chLatin_T, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull };
-+static const XMLCh storeAttributes[] =
-+{ chLatin_s, chLatin_t, chLatin_o, chLatin_r, chLatin_e, chLatin_A, chLatin_t, chLatin_t, chLatin_r, chLatin_i, chLatin_b, chLatin_u, chLatin_t, chLatin_e, chLatin_s, chNull };
-+
-+static const XMLCh db_group[] = { chLatin_g, chLatin_r, chLatin_o, chLatin_u, chLatin_p, chNull };
-+static const XMLCh db_user[] = { chLatin_u, chLatin_s, chLatin_e, chLatin_r, chNull };
-+static const XMLCh db_host[] = { chLatin_h, chLatin_o, chLatin_s, chLatin_t, chNull };
-+static const XMLCh db_db[] = { chLatin_d, chLatin_b, chNull };
-+static const XMLCh db_port[] = { chLatin_p, chLatin_o, chLatin_r, chLatin_t, chNull };
-+static const XMLCh db_password[] = { chLatin_p, chLatin_a, chLatin_s, chLatin_s, chLatin_w, chLatin_o, chLatin_r, chLatin_d, chNull };
-+
-+class MySQLRemoteBase
-+{
-+public:
-+ MySQLRemoteBase(const DOMElement* e);
-+ virtual ~MySQLRemoteBase();
-+
-+ void thread_init();
-+ void thread_end() {}
-+
-+ MYSQL* getMYSQL() const;
-+
-+ log4cpp::Category* log;
-+
-+protected:
-+ ThreadKey* m_mysql;
-+ const DOMElement* m_root; // can only use this during initialization
-+
-+ bool initialized;
-+
-+ char *group;
-+ char *user, *host, *password, *db;
-+ int port;
-+
-+};
-+
-+// Forward declarations
-+static void mysqlInit(const DOMElement* e, Category& log);
-+
-+extern "C" void shib_remote_mysql_destroy_handle(void* data)
-+{
-+ MYSQL* mysql = (MYSQL*) data;
-+ if (mysql) mysql_close(mysql);
-+}
-+
-+MySQLRemoteBase::MySQLRemoteBase(const DOMElement* e) : m_root(e)
-+{
-+#ifdef _DEBUG
-+ saml::NDC ndc("MySQLRemoteBase");
-+#endif
-+ log = &(Category::getInstance("shibmysql.MySQLRemoteBase"));
-+
-+ m_mysql = ThreadKey::create(&shib_remote_mysql_destroy_handle);
-+
-+ initialized = false;
-+
-+ if ((group = XMLString::transcode(e->getAttribute(db_group)))) {
-+ if (!group || !*group)
-+ group = NULL;
-+ }
-+
-+ if ((user = XMLString::transcode(e->getAttribute(db_user)))) {
-+ if (!user || !*user)
-+ user = NULL;
-+ }
-+
-+ if ((host = XMLString::transcode(e->getAttribute(db_host)))) {
-+ if (!host || !*host)
-+ host = NULL;
-+ }
-+
-+ if ((db = XMLString::transcode(e->getAttribute(db_db)))) {
-+ if (!db || !*db)
-+ db = NULL;
-+ }
-+
-+ if ((password = XMLString::transcode(e->getAttribute(db_password)))) {
-+ if (!password || !*password)
-+ password = NULL;
-+ }
-+
-+ char *portStr;
-+ if ((portStr = XMLString::transcode(e->getAttribute(db_port)))) {
-+ if (!portStr || !*portStr) {
-+ port = 0;
-+ } else {
-+ port = strtol(portStr, 0, 10);
-+ }
-+ XMLString::release(&portStr);
-+ }
-+
-+ if (group == NULL && (user == NULL || host == NULL)) {
-+ log->crit("user and host, or group must be specified for Remote MySQL cache");
-+ throw SAMLException("MySQLRemoteBase::MySQLRemoteBase: missing configuration attributes");
-+ }
-+
-+ mysqlInit(e,*log);
-+ thread_init();
-+ initialized = true;
-+}
-+
-+MySQLRemoteBase::~MySQLRemoteBase()
-+{
-+ thread_end();
-+
-+ delete m_mysql;
-+ if (group)
-+ XMLString::release(&group);
-+ if (user)
-+ XMLString::release(&user);
-+ if (host)
-+ XMLString::release(&host);
-+ if (db)
-+ XMLString::release(&host);
-+ if (password)
-+ XMLString::release(&db);
-+}
-+
-+MYSQL* MySQLRemoteBase::getMYSQL() const
-+{
-+ return (MYSQL*)m_mysql->getData();
-+}
-+
-+void MySQLRemoteBase::thread_init()
-+{
-+#ifdef _DEBUG
-+ saml::NDC ndc("thread_init");
-+#endif
-+
-+ // Connect to the database
-+ MYSQL* mysql = mysql_init(NULL);
-+ if (!mysql) {
-+ log->error("mysql_init failed");
-+ mysql_close(mysql);
-+ throw SAMLException("MySQLRemoteBase::thread_init(): mysql_init() failed");
-+ }
-+
-+ my_bool reconnect = 1;
-+#if MYSQL_VERSION_ID < 50000
-+ mysql->reconnect = 1;
-+#else
-+ mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
-+#endif
-+ if (group)
-+ mysql_options(mysql, MYSQL_READ_DEFAULT_GROUP, group);
-+
-+ if (!mysql_real_connect(mysql, host, user, password, db, port, NULL, 0)) {
-+ log->crit("mysql_real_connect failed: %s", mysql_error(mysql));
-+ mysql_close(mysql);
-+ throw SAMLException("MySQLRemoteBase::thread_init(): mysql_real_connect() failed");
-+ }
-+
-+ // We're all set.. Save off the handle for this thread.
-+ log->info("thread_init() completed");
-+ m_mysql->setData(mysql);
-+}
-+
-+static void mysqlInit(const DOMElement* e, Category& log)
-+{
-+ static bool done = false;
-+ if (done) {
-+ log.info("MySQL remote connection already initialized");
-+ return;
-+ }
-+ log.info("initializing MySQL remote connection");
-+
-+ // Setup the argument array
-+ vector<string> arg_array;
-+ arg_array.push_back("shibboleth");
-+
-+ // grab any MySQL parameters from the config file
-+ // e=saml::XML::getFirstChildElement(e,shibtarget::XML::SHIBTARGET_NS,Argument);
-+ // while (e) {
-+ // auto_ptr_char arg(e->getFirstChild()->getNodeValue());
-+ // if (arg.get())
-+ // arg_array.push_back(arg.get());
-+ // e=saml::XML::getNextSiblingElement(e,shibtarget::XML::SHIBTARGET_NS,Argument);
-+ // }
-+
-+ // Compute the argument array
-+ int arg_count = arg_array.size();
-+ const char** args=new const char*[arg_count];
-+ for (int i = 0; i < arg_count; i++)
-+ args[i] = arg_array[i].c_str();
-+
-+ // Initialize MySQL with the arguments
-+ mysql_library_init(arg_count, (char **)args, NULL);
-+
-+ delete[] args;
-+ done = true;
-+}
-+
-+class ShibMySQLCCache;
-+class ShibMySQLCCacheEntry : public ISessionCacheEntry
-+{
-+public:
-+ ShibMySQLCCacheEntry(const char* key, ISessionCacheEntry* entry, ShibMySQLCCache* cache)
-+ : m_cacheEntry(entry), m_key(key), m_cache(cache), m_responseId(NULL) {}
-+ ~ShibMySQLCCacheEntry() {if (m_responseId) XMLString::release(&m_responseId);}
-+
-+ virtual void lock() {}
-+ virtual void unlock() { m_cacheEntry->unlock(); delete this; }
-+ virtual bool isValid(time_t lifetime, time_t timeout) const;
-+ virtual const char* getClientAddress() const { return m_cacheEntry->getClientAddress(); }
-+ virtual ShibProfile getProfile() const { return m_cacheEntry->getProfile(); }
-+ virtual const char* getProviderId() const { return m_cacheEntry->getProviderId(); }
-+ virtual const SAMLAuthenticationStatement* getAuthnStatement() const { return m_cacheEntry->getAuthnStatement(); }
-+ virtual CachedResponse getResponse();
-+
-+private:
-+ bool touch() const;
-+
-+ ISessionCacheEntry* m_cacheEntry;
-+ string m_key;
-+ ShibMySQLCCache* m_cache;
-+ XMLCh* m_responseId;
-+};
-+
-+class ShibMySQLCCache : public MySQLRemoteBase, virtual public ISessionCache
-+{
-+public:
-+ ShibMySQLCCache(const DOMElement* e);
-+ virtual ~ShibMySQLCCache();
-+
-+ virtual void thread_init() {MySQLRemoteBase::thread_init();}
-+ virtual void thread_end() {MySQLRemoteBase::thread_end();}
-+
-+ virtual string generateKey() const {return m_cache->generateKey();}
-+ virtual ISessionCacheEntry* find(const char* key, const IApplication* application);
-+ virtual void insert(
-+ const char* key,
-+ const IApplication* application,
-+ const char* client_addr,
-+ ShibProfile profile,
-+ const char* providerId,
-+ saml::SAMLAuthenticationStatement* s,
-+ saml::SAMLResponse* r=NULL,
-+ const shibboleth::IRoleDescriptor* source=NULL,
-+ time_t created=0,
-+ time_t accessed=0
-+ );
-+ virtual void remove(const char* key);
-+
-+ virtual void cleanup();
-+
-+ bool m_storeAttributes;
-+
-+private:
-+ ISessionCache* m_cache;
-+ CondWait* shutdown_wait;
-+ bool shutdown;
-+ Thread* cleanup_thread;
-+
-+ static void* cleanup_fcn(void*); // XXX Assumed an ShibMySQLCCache
-+};
-+
-+ShibMySQLCCache::ShibMySQLCCache(const DOMElement* e) : MySQLRemoteBase(e), m_storeAttributes(false)
-+{
-+#ifdef _DEBUG
-+ saml::NDC ndc("ShibMySQLCCache");
-+#endif
-+
-+ log = &(Category::getInstance("shibmysql.SessionCache"));
-+ log->info("ShibMySQLCCache constructor started");
-+
-+ shutdown_wait = CondWait::create();
-+ shutdown = false;
-+
-+ m_cache = dynamic_cast<ISessionCache*>(
-+ SAMLConfig::getConfig().getPlugMgr().newPlugin(
-+ "edu.internet2.middleware.shibboleth.sp.provider.MemorySessionCacheProvider", e
-+ )
-+ );
-+
-+ log->info("ShibMySQLCCache constructor A");
-+ // Load our configuration details...
-+ const XMLCh* tag=m_root->getAttributeNS(NULL,storeAttributes);
-+ if (tag && *tag && (*tag==chLatin_t || *tag==chDigit_1))
-+ m_storeAttributes=true;
-+
-+ // Initialize the cleanup thread
-+ cleanup_thread = Thread::create(&cleanup_fcn, (void*)this);
-+ log->info("ShibMySQLCCache constructor ended");
-+}
-+
-+ShibMySQLCCache::~ShibMySQLCCache()
-+{
-+ shutdown = true;
-+ shutdown_wait->signal();
-+ cleanup_thread->join(NULL);
-+
-+ delete m_cache;
-+}
-+
-+ISessionCacheEntry* ShibMySQLCCache::find(const char* key, const IApplication* application)
-+{
-+#ifdef _DEBUG
-+ saml::NDC ndc("find");
-+#endif
-+
-+ ISessionCacheEntry* res = m_cache->find(key, application);
-+ if (!res) {
-+
-+ log->debug("Looking in database...");
-+
-+ // nothing cached; see if this exists in the database
-+ string q = string("SELECT application_id,UNIX_TIMESTAMP(ctime),UNIX_TIMESTAMP(atime),addr,profile,provider,statement,response FROM state WHERE cookie='") + key + "' LIMIT 1";
-+
-+ MYSQL* mysql = getMYSQL();
-+ if (mysql_query(mysql, q.c_str())) {
-+ const char* err=mysql_error(mysql);
-+ log->error("Error searching for %s: %s", key, err);
-+ }
-+
-+ MYSQL_RES* rows = mysql_store_result(mysql);
-+
-+ // Nope, doesn't exist.
-+ if (!rows)
-+ return NULL;
-+
-+ // Make sure we got 1 and only 1 rows.
-+ if (mysql_num_rows(rows) != 1) {
-+ log->error("Select returned wrong number of rows: %d", mysql_num_rows(rows));
-+ mysql_free_result(rows);
-+ return NULL;
-+ }
-+
-+ log->debug("Match found. Parsing...");
-+
-+ /* Columns in query:
-+ 0: application_id
-+ 1: ctime
-+ 2: atime
-+ 3: address
-+ 4: profile
-+ 5: provider
-+ 6: statement
-+ 7: response
-+ */
-+
-+ // Pull apart the row and process the results
-+ MYSQL_ROW row = mysql_fetch_row(rows);
-+ if (strcmp(application->getId(),row[0])) {
-+ log->crit("An application (%s) attempted to access another application's (%s) session!", application->getId(), row[0]);
-+ mysql_free_result(rows);
-+ return NULL;
-+ }
-+
-+ Metadata m(application->getMetadataProviders());
-+ const IEntityDescriptor* provider=m.lookup(row[5]);
-+ if (!provider) {
-+ log->crit("no metadata found for identity provider (%s) responsible for the session.", row[5]);
-+ mysql_free_result(rows);
-+ return NULL;
-+ }
-+
-+ SAMLAuthenticationStatement* s=NULL;
-+ SAMLResponse* r=NULL;
-+ ShibProfile profile=static_cast<ShibProfile>(atoi(row[4]));
-+ const IRoleDescriptor* role=NULL;
-+ if (profile==SAML11_POST || profile==SAML11_ARTIFACT)
-+ role=provider->getIDPSSODescriptor(saml::XML::SAML11_PROTOCOL_ENUM);
-+ else if (profile==SAML10_POST || profile==SAML10_ARTIFACT)
-+ role=provider->getIDPSSODescriptor(saml::XML::SAML10_PROTOCOL_ENUM);
-+ if (!role) {
-+ log->crit(
-+ "no matching IdP role for profile (%s) found for identity provider (%s) responsible for the session.", row[4], row[5]
-+ );
-+ mysql_free_result(rows);
-+ return NULL;
-+ }
-+
-+ // Try to parse the SAML data
-+ try {
-+ istringstream istr(row[6]);
-+ s = new SAMLAuthenticationStatement(istr);
-+ if (row[7]) {
-+ istringstream istr2(row[7]);
-+ r = new SAMLResponse(istr2);
-+ }
-+ }
-+ catch (SAMLException& e) {
-+ log->error(string("caught SAML exception while loading objects from SQL record: ") + e.what());
-+ delete s;
-+ delete r;
-+ mysql_free_result(rows);
-+ return NULL;
-+ }
-+#ifndef _DEBUG
-+ catch (...) {
-+ log->error("caught unknown exception while loading objects from SQL record");
-+ delete s;
-+ delete r;
-+ mysql_free_result(rows);
-+ return NULL;
-+ }
-+#endif
-+
-+ // Insert it into the memory cache
-+ m_cache->insert(
-+ key,
-+ application,
-+ row[3],
-+ profile,
-+ row[5],
-+ s,
-+ r,
-+ role,
-+ atoi(row[1]),
-+ atoi(row[2])
-+ );
-+
-+ // Free the results, and then re-run the 'find' query
-+ mysql_free_result(rows);
-+ res = m_cache->find(key,application);
-+ if (!res)
-+ return NULL;
-+ }
-+
-+ return new ShibMySQLCCacheEntry(key, res, this);
-+}
-+
-+void ShibMySQLCCache::insert(
-+ const char* key,
-+ const IApplication* application,
-+ const char* client_addr,
-+ ShibProfile profile,
-+ const char* providerId,
-+ saml::SAMLAuthenticationStatement* s,
-+ saml::SAMLResponse* r,
-+ const shibboleth::IRoleDescriptor* source,
-+ time_t created,
-+ time_t accessed
-+ )
-+{
-+#ifdef _DEBUG
-+ saml::NDC ndc("insert");
-+#endif
-+
-+ ostringstream q;
-+ q << "INSERT INTO state VALUES('" << key << "','" << application->getId() << "',";
-+ if (created==0)
-+ q << "NOW(),";
-+ else
-+ q << "FROM_UNIXTIME(" << created << "),";
-+ if (accessed==0)
-+ q << "NOW(),'";
-+ else
-+ q << "FROM_UNIXTIME(" << accessed << "),'";
-+ q << client_addr << "'," << profile << ",'" << providerId << "',";
-+ if (m_storeAttributes && r) {
-+ auto_ptr_char id(r->getId());
-+ q << "'" << id.get() << "','" << *r << "','";
-+ }
-+ else
-+ q << "null,null,'";
-+ q << *s << "')";
-+
-+ log->debug("Query: %s", q.str().c_str());
-+
-+ // then add it to the database
-+ MYSQL* mysql = getMYSQL();
-+ if (mysql_query(mysql, q.str().c_str())) {
-+ const char* err=mysql_error(mysql);
-+ log->error("Error inserting %s: %s", key, err);
-+ throw SAMLException("ShibMySQLCCache::insert(): insertion failed");
-+ }
-+
-+ // Add it to the memory cache
-+ m_cache->insert(key, application, client_addr, profile, providerId, s, r, source, created, accessed);
-+}
-+
-+void ShibMySQLCCache::remove(const char* key)
-+{
-+#ifdef _DEBUG
-+ saml::NDC ndc("remove");
-+#endif
-+
-+ // Remove the cached version
-+ m_cache->remove(key);
-+
-+ // Remove from the database
-+ string q = string("DELETE FROM state WHERE cookie='") + key + "'";
-+ MYSQL* mysql = getMYSQL();
-+ if (mysql_query(mysql, q.c_str())) {
-+ const char* err=mysql_error(mysql);
-+ log->error("Error deleting entry %s: %s", key, err);
-+ }
-+}
-+
-+void ShibMySQLCCache::cleanup()
-+{
-+#ifdef _DEBUG
-+ saml::NDC ndc("cleanup");
-+#endif
-+
-+ Mutex* mutex = Mutex::create();
-+ MySQLRemoteBase::thread_init();
-+
-+ int rerun_timer = 0;
-+ int timeout_life = 0;
-+
-+ // Load our configuration details...
-+ const XMLCh* tag=m_root->getAttributeNS(NULL,cleanupInterval);
-+ if (tag && *tag)
-+ rerun_timer = XMLString::parseInt(tag);
-+
-+ // search for 'mysql-cache-timeout' and then the regular cache timeout
-+ tag=m_root->getAttributeNS(NULL,mysqlTimeout);
-+ if (tag && *tag)
-+ timeout_life = XMLString::parseInt(tag);
-+ else {
-+ tag=m_root->getAttributeNS(NULL,cacheTimeout);
-+ if (tag && *tag)
-+ timeout_life = XMLString::parseInt(tag);
-+ }
-+
-+ if (rerun_timer <= 0)
-+ rerun_timer = 300; // rerun every 5 minutes
-+
-+ if (timeout_life <= 0)
-+ timeout_life = 28800; // timeout after 8 hours
-+
-+ mutex->lock();
-+
-+ MYSQL* mysql = getMYSQL();
-+
-+ while (shutdown == false) {
-+ shutdown_wait->timedwait(mutex, rerun_timer);
-+
-+ if (shutdown == true)
-+ break;
-+
-+ // Find all the entries in the database that haven't been used
-+ // recently In particular, find all entries that have not been
-+ // accessed in 'timeout_life' seconds.
-+ ostringstream q;
-+ q << "SELECT cookie FROM state WHERE " <<
-+ "UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(atime) >= " << timeout_life;
-+
-+ if (mysql_query(mysql, q.str().c_str())) {
-+ const char* err=mysql_error(mysql);
-+ log->error("Error searching for old items: %s", err);
-+ }
-+
-+ MYSQL_RES* rows = mysql_store_result(mysql);
-+ if (!rows)
-+ continue;
-+
-+ if (mysql_num_fields(rows) != 1) {
-+ log->error("Wrong number of columns, 1 != %d", mysql_num_fields(rows));
-+ mysql_free_result(rows);
-+ continue;
-+ }
-+
-+ // For each row, remove the entry from the database.
-+ MYSQL_ROW row;
-+ while ((row = mysql_fetch_row(rows)) != NULL)
-+ remove(row[0]);
-+
-+ mysql_free_result(rows);
-+ }
-+
-+ log->info("cleanup thread exiting...");
-+
-+ mutex->unlock();
-+ delete mutex;
-+ MySQLRemoteBase::thread_end();
-+ Thread::exit(NULL);
-+}
-+
-+void* ShibMySQLCCache::cleanup_fcn(void* cache_p)
-+{
-+ ShibMySQLCCache* cache = (ShibMySQLCCache*)cache_p;
-+
-+ // First, let's block all signals
-+ Thread::mask_all_signals();
-+
-+ // Now run the cleanup process.
-+ cache->cleanup();
-+ return NULL;
-+}
-+
-+/*************************************************************************
-+ * The CCacheEntry here is mostly a wrapper around the "memory"
-+ * cacheentry provided by shibboleth. The only difference is that we
-+ * intercept isSessionValid() so that we can "touch()" the
-+ * database if the session is still valid and getResponse() so we can
-+ * store the data if we need to.
-+ */
-+
-+bool ShibMySQLCCacheEntry::isValid(time_t lifetime, time_t timeout) const
-+{
-+ bool res = m_cacheEntry->isValid(lifetime, timeout);
-+ if (res == true)
-+ res = touch();
-+ return res;
-+}
-+
-+bool ShibMySQLCCacheEntry::touch() const
-+{
-+ string q=string("UPDATE state SET atime=NOW() WHERE cookie='") + m_key + "'";
-+
-+ MYSQL* mysql = m_cache->getMYSQL();
-+ if (mysql_query(mysql, q.c_str())) {
-+ m_cache->log->info("Error updating timestamp on %s: %s", m_key.c_str(), mysql_error(mysql));
-+ return false;
-+ }
-+ return true;
-+}
-+
-+ISessionCacheEntry::CachedResponse ShibMySQLCCacheEntry::getResponse()
-+{
-+ // Let the memory cache do the work first.
-+ // If we're hands off, just pass it back.
-+ if (!m_cache->m_storeAttributes)
-+ return m_cacheEntry->getResponse();
-+
-+ CachedResponse r=m_cacheEntry->getResponse();
-+ if (r.empty()) return r;
-+
-+ // Load the key from state if needed.
-+ if (!m_responseId) {
-+ string qselect=string("SELECT response_id from state WHERE cookie='") + m_key + "' LIMIT 1";
-+ MYSQL* mysql = m_cache->getMYSQL();
-+ if (mysql_query(mysql, qselect.c_str())) {
-+ const char* err=mysql_error(mysql);
-+ m_cache->log->error("error accessing response ID for %s: %s", m_key.c_str(), err);
-+ }
-+ MYSQL_RES* rows = mysql_store_result(mysql);
-+
-+ // Make sure we got 1 and only 1 row.
-+ if (!rows || mysql_num_rows(rows) != 1) {
-+ m_cache->log->error("select returned wrong number of rows");
-+ if (rows) mysql_free_result(rows);
-+ return r;
-+ }
-+
-+ MYSQL_ROW row=mysql_fetch_row(rows);
-+ if (row)
-+ m_responseId=XMLString::transcode(row[0]);
-+ mysql_free_result(rows);
-+ }
-+
-+ // Compare it with what we have now.
-+ if (m_responseId && !XMLString::compareString(m_responseId,r.unfiltered->getId()))
-+ return r;
-+
-+ // No match, so we need to update our copy.
-+ if (m_responseId) XMLString::release(&m_responseId);
-+ m_responseId = XMLString::replicate(r.unfiltered->getId());
-+ auto_ptr_char id(m_responseId);
-+
-+ ostringstream q;
-+ q << "UPDATE state SET response_id='" << id.get() << "',response='" << *r.unfiltered << "' WHERE cookie='" << m_key << "'";
-+ m_cache->log->debug("Query: %s", q.str().c_str());
-+
-+ MYSQL* mysql = m_cache->getMYSQL();
-+ if (mysql_query(mysql, q.str().c_str())) {
-+ const char* err=mysql_error(mysql);
-+ m_cache->log->error("Error updating response for %s: %s", m_key.c_str(), err);
-+ }
-+
-+ return r;
-+}
-+
-+class MySQLReplayCache : public MySQLRemoteBase, virtual public IReplayCache
-+{
-+public:
-+ MySQLReplayCache(const DOMElement* e);
-+ virtual ~MySQLReplayCache() {}
-+
-+ void thread_init() {MySQLRemoteBase::thread_init();}
-+ void thread_end() {MySQLRemoteBase::thread_end();}
-+
-+ bool check(const XMLCh* str, time_t expires) {auto_ptr_XMLCh temp(str); return check(temp.get(),expires);}
-+ bool check(const char* str, time_t expires);
-+};
-+
-+MySQLReplayCache::MySQLReplayCache(const DOMElement* e) : MySQLRemoteBase(e)
-+{
-+#ifdef _DEBUG
-+ saml::NDC ndc("MySQLReplayCache");
-+#endif
-+
-+ log = &(Category::getInstance("shibmysql.ReplayCache"));
-+}
-+
-+bool MySQLReplayCache::check(const char* str, time_t expires)
-+{
-+#ifdef _DEBUG
-+ saml::NDC ndc("check");
-+#endif
-+
-+ // Remove expired entries
-+ string q = string("DELETE FROM replay WHERE expires < NOW()");
-+ MYSQL* mysql = getMYSQL();
-+ if (mysql_query(mysql, q.c_str())) {
-+ const char* err=mysql_error(mysql);
-+ log->error("Error deleting expired entries: %s", err);
-+ }
-+
-+ string q2 = string("SELECT id FROM replay WHERE id='") + str + "'";
-+ if (mysql_query(mysql, q2.c_str())) {
-+ const char* err=mysql_error(mysql);
-+ log->error("Error searching for %s: %s", str, err);
-+ throw SAMLException("Replay cache failed, please inform application support staff.");
-+ }
-+
-+ // Did we find it?
-+ MYSQL_RES* rows = mysql_store_result(mysql);
-+ if (rows && mysql_num_rows(rows)>0) {
-+ mysql_free_result(rows);
-+ return false;
-+ }
-+
-+ ostringstream q3;
-+ q3 << "INSERT INTO replay VALUES('" << str << "'," << "FROM_UNIXTIME(" << expires << "))";
-+
-+ // then add it to the database
-+ if (mysql_query(mysql, q3.str().c_str())) {
-+ const char* err=mysql_error(mysql);
-+ log->error("Error inserting %s: %s", str, err);
-+ throw SAMLException("Replay cache failed, please inform application support staff.");
-+ }
-+
-+ return true;
-+}
-+
-+/*************************************************************************
-+ * The registration functions here...
-+ */
-+
-+IPlugIn* new_mysql_ccache(const DOMElement* e)
-+{
-+ std::cerr << "returning new ShibMySQLCCache object" << std::endl << std::flush;
-+ ShibMySQLCCache* cc = new ShibMySQLCCache(e);
-+ if (cc) {
-+ std::cerr << "Got a new cache" << std::endl;
-+ } else {
-+ std::cerr << "FAILED to get a new cache" << std::endl;
-+ }
-+ return new ShibMySQLCCache(e);
-+}
-+
-+IPlugIn* new_mysql_replay(const DOMElement* e)
-+{
-+ std::cerr << "returning new MySQLReplayCache object" << std::endl << std::flush;
-+ return new MySQLReplayCache(e);
-+}
-+
-+#define REPLAYPLUGINTYPE "edu.internet2.middleware.shibboleth.sp.provider.MySQLRemoteReplayCacheProvider"
-+#define SESSIONPLUGINTYPE "edu.internet2.middleware.shibboleth.sp.provider.MySQLRemoteSessionCacheProvider"
-+
-+extern "C" int SHIBMYSQL_EXPORTS saml_extension_init(void*)
-+{
-+ // register this ccache type
-+ SAMLConfig::getConfig().getPlugMgr().regFactory(REPLAYPLUGINTYPE, &new_mysql_replay);
-+ SAMLConfig::getConfig().getPlugMgr().regFactory(SESSIONPLUGINTYPE, &new_mysql_ccache);
-+ return 0;
-+}
-+
-+extern "C" void SHIBMYSQL_EXPORTS saml_extension_term()
-+{
-+ // Shutdown MySQL
-+ mysql_library_end();
-+ SAMLConfig::getConfig().getPlugMgr().unregFactory(REPLAYPLUGINTYPE);
-+ SAMLConfig::getConfig().getPlugMgr().unregFactory(SESSIONPLUGINTYPE);
-+}
-Index: shibboleth-sp/shib-remote-mysql-ccache/shib_remote_mysql_ccache.dsp
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/shib_remote_mysql_ccache.dsp 2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,103 @@
-+# Microsoft Developer Studio Project File - Name="shib_mysql_ccache" - Package Owner=<4>
-+# Microsoft Developer Studio Generated Build File, Format Version 6.00
-+# ** DO NOT EDIT **
-+
-+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-+
-+CFG=shib_mysql_ccache - Win32 Debug
-+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-+!MESSAGE use the Export Makefile command and run
-+!MESSAGE
-+!MESSAGE NMAKE /f "shib_mysql_ccache.mak".
-+!MESSAGE
-+!MESSAGE You can specify a configuration when running NMAKE
-+!MESSAGE by defining the macro CFG on the command line. For example:
-+!MESSAGE
-+!MESSAGE NMAKE /f "shib_mysql_ccache.mak" CFG="shib_mysql_ccache - Win32 Debug"
-+!MESSAGE
-+!MESSAGE Possible choices for configuration are:
-+!MESSAGE
-+!MESSAGE "shib_mysql_ccache - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-+!MESSAGE "shib_mysql_ccache - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-+!MESSAGE
-+
-+# Begin Project
-+# PROP AllowPerConfigDependencies 0
-+# PROP Scc_ProjName ""
-+# PROP Scc_LocalPath ""
-+CPP=cl.exe
-+MTL=midl.exe
-+RSC=rc.exe
-+
-+!IF "$(CFG)" == "shib_mysql_ccache - Win32 Release"
-+
-+# PROP BASE Use_MFC 0
-+# PROP BASE Use_Debug_Libraries 0
-+# PROP BASE Output_Dir "Release"
-+# PROP BASE Intermediate_Dir "Release"
-+# PROP BASE Target_Dir ""
-+# PROP Use_MFC 0
-+# PROP Use_Debug_Libraries 0
-+# PROP Output_Dir "Release"
-+# PROP Intermediate_Dir "Release"
-+# PROP Ignore_Export_Lib 0
-+# PROP Target_Dir ""
-+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SHIB_MYSQL_CCACHE_EXPORTS" /YX /FD /c
-+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I ".." /I "..\..\..\opensaml\c" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-+# ADD BASE RSC /l 0x409 /d "NDEBUG"
-+# ADD RSC /l 0x409 /d "NDEBUG"
-+BSC32=bscmake.exe
-+# ADD BASE BSC32 /nologo
-+# ADD BSC32 /nologo
-+LINK32=link.exe
-+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-+# ADD LINK32 log4cpp.lib libmysqld.lib xerces-c_2.lib saml_5.lib /nologo /dll /machine:I386 /out:"Release/shib-mysql-ccache.so" /libpath:"..\..\..\opensaml\c\saml\Release" /libpath:"\mysql-4.1.12\lib_release"
-+
-+!ELSEIF "$(CFG)" == "shib_mysql_ccache - Win32 Debug"
-+
-+# PROP BASE Use_MFC 0
-+# PROP BASE Use_Debug_Libraries 1
-+# PROP BASE Output_Dir "Debug"
-+# PROP BASE Intermediate_Dir "Debug"
-+# PROP BASE Target_Dir ""
-+# PROP Use_MFC 0
-+# PROP Use_Debug_Libraries 1
-+# PROP Output_Dir "Debug"
-+# PROP Intermediate_Dir "Debug"
-+# PROP Ignore_Export_Lib 0
-+# PROP Target_Dir ""
-+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SHIB_MYSQL_CCACHE_EXPORTS" /YX /FD /GZ /c
-+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I ".." /I "..\..\..\opensaml\c" /D "_WINDOWS" /D "WIN32" /D "_DEBUG" /D "_MBCS" /FR /YX /FD /GZ /c
-+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-+# ADD BASE RSC /l 0x409 /d "_DEBUG"
-+# ADD RSC /l 0x409 /d "_DEBUG"
-+BSC32=bscmake.exe
-+# ADD BASE BSC32 /nologo
-+# ADD BSC32 /nologo
-+LINK32=link.exe
-+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-+# ADD LINK32 log4cppD.lib libmysqld.lib xerces-c_2D.lib saml_5D.lib /nologo /dll /debug /machine:I386 /out:"Debug/shib-mysql-ccache.so" /pdbtype:sept /libpath:"..\..\..\opensaml\c\saml\Debug" /libpath:"\mysql-4.1.12\lib_debug"
-+
-+!ENDIF
-+
-+# Begin Target
-+
-+# Name "shib_mysql_ccache - Win32 Release"
-+# Name "shib_mysql_ccache - Win32 Debug"
-+# Begin Source File
-+
-+SOURCE=.\resource.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=".\shib-mysql-ccache.cpp"
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\shib_mysql_ccache.rc
-+# End Source File
-+# End Target
-+# End Project
-Index: shibboleth-sp/shib-remote-mysql-ccache/shib_remote_mysql_ccache.rc
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/shib_remote_mysql_ccache.rc 2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,109 @@
-+//Microsoft Developer Studio generated resource script.
-+//
-+#include "resource.h"
-+
-+#define APSTUDIO_READONLY_SYMBOLS
-+/////////////////////////////////////////////////////////////////////////////
-+//
-+// Generated from the TEXTINCLUDE 2 resource.
-+//
-+#include "afxres.h"
-+
-+/////////////////////////////////////////////////////////////////////////////
-+#undef APSTUDIO_READONLY_SYMBOLS
-+
-+/////////////////////////////////////////////////////////////////////////////
-+// English (U.S.) resources
-+
-+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-+#ifdef _WIN32
-+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-+#pragma code_page(1252)
-+#endif //_WIN32
-+
-+#ifndef _MAC
-+/////////////////////////////////////////////////////////////////////////////
-+//
-+// Version
-+//
-+
-+VS_VERSION_INFO VERSIONINFO
-+ FILEVERSION 1,3,0,0
-+ PRODUCTVERSION 1,3,0,0
-+ FILEFLAGSMASK 0x3fL
-+#ifdef _DEBUG
-+ FILEFLAGS 0x1L
-+#else
-+ FILEFLAGS 0x0L
-+#endif
-+ FILEOS 0x40004L
-+ FILETYPE 0x2L
-+ FILESUBTYPE 0x0L
-+BEGIN
-+ BLOCK "StringFileInfo"
-+ BEGIN
-+ BLOCK "040904b0"
-+ BEGIN
-+ VALUE "Comments", "\0"
-+ VALUE "CompanyName", "Internet2\0"
-+ VALUE "FileDescription", "Shibboleth MySQL Cache Plugin\0"
-+ VALUE "FileVersion", "1, 3, 0, 0\0"
-+ VALUE "InternalName", "shib-mysql-ccache\0"
-+ VALUE "LegalCopyright", "Copyright © 2005 Internet2\0"
-+ VALUE "LegalTrademarks", "\0"
-+ VALUE "OriginalFilename", "shib-mysql-ccache.so\0"
-+ VALUE "PrivateBuild", "\0"
-+ VALUE "ProductName", "Shibboleth 1.3\0"
-+ VALUE "ProductVersion", "1, 3, 0, 0\0"
-+ VALUE "SpecialBuild", "\0"
-+ END
-+ END
-+ BLOCK "VarFileInfo"
-+ BEGIN
-+ VALUE "Translation", 0x409, 1200
-+ END
-+END
-+
-+#endif // !_MAC
-+
-+
-+#ifdef APSTUDIO_INVOKED
-+/////////////////////////////////////////////////////////////////////////////
-+//
-+// TEXTINCLUDE
-+//
-+
-+1 TEXTINCLUDE DISCARDABLE
-+BEGIN
-+ "resource.h\0"
-+END
-+
-+2 TEXTINCLUDE DISCARDABLE
-+BEGIN
-+ "#include ""afxres.h""\r\n"
-+ "\0"
-+END
-+
-+3 TEXTINCLUDE DISCARDABLE
-+BEGIN
-+ "\r\n"
-+ "\0"
-+END
-+
-+#endif // APSTUDIO_INVOKED
-+
-+#endif // English (U.S.) resources
-+/////////////////////////////////////////////////////////////////////////////
-+
-+
-+
-+#ifndef APSTUDIO_INVOKED
-+/////////////////////////////////////////////////////////////////////////////
-+//
-+// Generated from the TEXTINCLUDE 3 resource.
-+//
-+
-+
-+/////////////////////////////////////////////////////////////////////////////
-+#endif // not APSTUDIO_INVOKED
-+
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 76e4100..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1,6 +0,0 @@
-dfsg
-remote-mysql
-64-bit
-gcc-4.3
-log4cpp-1.0
-native-syslog
--
Debian packaging for the Shibboleth Apache SP
More information about the Pkg-shibboleth-devel
mailing list