[shibboleth-sp2] 40/89: SSPCPP-696 - Config schema prevents use of SHIBSP_LISTENER_ADDRESS
Ferenc Wágner
wferi at moszumanska.debian.org
Thu Sep 1 09:24:07 UTC 2016
This is an automated email from the git hooks/post-receive script.
wferi pushed a commit to branch master
in repository shibboleth-sp2.
commit 8e0d0eea188799255a45a3c06e579ea3f91b5b83
Author: Scott Cantor <cantor.2 at osu.edu>
Date: Wed Jun 1 20:04:54 2016 -0400
SSPCPP-696 - Config schema prevents use of SHIBSP_LISTENER_ADDRESS
https://issues.shibboleth.net/jira/browse/SSPCPP-696
Add clientAddress/clientPort attributes for split deployments.
---
schemas/shibboleth-2.0-native-sp-config.xsd | 3 +++
shibsp/remoting/impl/TCPListener.cpp | 37 ++++++++++++++++++++---------
shibsp/remoting/impl/UnixListener.cpp | 19 +++++++++++----
3 files changed, 44 insertions(+), 15 deletions(-)
diff --git a/schemas/shibboleth-2.0-native-sp-config.xsd b/schemas/shibboleth-2.0-native-sp-config.xsd
index 13c4a98..ce7f468 100644
--- a/schemas/shibboleth-2.0-native-sp-config.xsd
+++ b/schemas/shibboleth-2.0-native-sp-config.xsd
@@ -786,6 +786,7 @@
<element name="UnixListener">
<complexType>
<attribute name="address" type="conf:string"/>
+ <attribute name="clientAddress" type="conf:string"/>
<attribute name="stackSize" type="unsignedInt"/>
</complexType>
</element>
@@ -793,6 +794,8 @@
<complexType>
<attribute name="address" type="conf:string"/>
<attribute name="port" type="unsignedInt"/>
+ <attribute name="clientAddress" type="conf:string"/>
+ <attribute name="clientPort" type="unsignedInt"/>
<attribute name="acl" type="conf:listOfStrings"/>
<attribute name="stackSize" type="unsignedInt"/>
</complexType>
diff --git a/shibsp/remoting/impl/TCPListener.cpp b/shibsp/remoting/impl/TCPListener.cpp
index f99fa41..f4b91e1 100644
--- a/shibsp/remoting/impl/TCPListener.cpp
+++ b/shibsp/remoting/impl/TCPListener.cpp
@@ -105,28 +105,43 @@ namespace shibsp {
static const XMLCh address[] = UNICODE_LITERAL_7(a,d,d,r,e,s,s);
static const XMLCh port[] = UNICODE_LITERAL_4(p,o,r,t);
static const XMLCh acl[] = UNICODE_LITERAL_3(a,c,l);
+ static const XMLCh clientAddress[] = UNICODE_LITERAL_13(c,l,i,e,n,t,A,d,d,r,e,s,s);
+ static const XMLCh clientPort[] = UNICODE_LITERAL_10(c,l,i,e,n,t,P,o,r,t);
};
-TCPListener::TCPListener(const DOMElement* e)
- : SocketListener(e),
- m_address(XMLHelper::getAttrString(e, getenv("SHIBSP_LISTENER_ADDRESS"), address)),
- m_port(XMLHelper::getAttrInt(e, 0, port))
+TCPListener::TCPListener(const DOMElement* e) : SocketListener(e), m_port(0)
{
+ // In-process, check the clientAddress/clientPort settings first.
+ if (SPConfig::getConfig().isEnabled(SPConfig::InProcess)) {
+ m_address = XMLHelper::getAttrString(e, nullptr, clientAddress);
+ m_port = XMLHelper::getAttrInt(e, 0, clientPort);
+ }
+
+ // Back-off to address setting, environment, or default.
if (m_address.empty()) {
- m_address = "127.0.0.1";
- log->info("defaulting socket address to %s", m_address.c_str());
+ m_address = XMLHelper::getAttrString(e, getenv("SHIBSP_LISTENER_ADDRESS"), address);
+ if (m_address.empty()) {
+ m_address = "127.0.0.1";
+ }
}
+ log->info("using socket address: %s", m_address.c_str());
+
+ // Back-off to port setting, environment, or default.
if (m_port == 0) {
- const char* p = getenv("SHIBSP_LISTENER_PORT");
- if (p && *p)
- m_port = atoi(p);
+ m_port = XMLHelper::getAttrInt(e, 0, port);
if (m_port == 0) {
- m_port = 1600;
- log->info("defaulting socket port to %u", m_port);
+ const char* p = getenv("SHIBSP_LISTENER_PORT");
+ if (p && *p)
+ m_port = atoi(p);
+ if (m_port == 0) {
+ m_port = 1600;
+ }
}
}
+ log->info("using socket port: %u", m_port);
+
vector<string> rawacls;
string aclbuf = XMLHelper::getAttrString(e, "127.0.0.1", acl);
boost::trim(aclbuf);
diff --git a/shibsp/remoting/impl/UnixListener.cpp b/shibsp/remoting/impl/UnixListener.cpp
index 95dd28b..0e52720 100644
--- a/shibsp/remoting/impl/UnixListener.cpp
+++ b/shibsp/remoting/impl/UnixListener.cpp
@@ -85,15 +85,26 @@ namespace shibsp {
}
static const XMLCh address[] = UNICODE_LITERAL_7(a,d,d,r,e,s,s);
+ static const XMLCh clientAddress[] = UNICODE_LITERAL_13(c,l,i,e,n,t,A,d,d,r,e,s,s);
};
-UnixListener::UnixListener(const DOMElement* e)
- : SocketListener(e), m_address(XMLHelper::getAttrString(e, getenv("SHIBSP_LISTENER_ADDRESS"), address)), m_bound(false)
+UnixListener::UnixListener(const DOMElement* e) : SocketListener(e), m_bound(false)
{
+ // In-process, check the clientAddress/clientPort settings first.
+ if (SPConfig::getConfig().isEnabled(SPConfig::InProcess)) {
+ m_address = XMLHelper::getAttrString(e, nullptr, clientAddress);
+ }
+
+ // Back-off to address setting, environment, or default.
if (m_address.empty()) {
- m_address = "shibd.sock";
- m_log->info("defaulting socket address to %s", m_address.c_str());
+ m_address = XMLHelper::getAttrString(e, getenv("SHIBSP_LISTENER_ADDRESS"), address);
+ if (m_address.empty()) {
+ m_address = "shibd.sock";
+ }
}
+
+ log->info("using socket address: %s", m_address.c_str());
+
XMLToolingConfig::getConfig().getPathResolver()->resolve(m_address, PathResolver::XMLTOOLING_RUN_FILE);
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-shibboleth/shibboleth-sp2.git
More information about the Pkg-shibboleth-devel
mailing list