Modified: incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp?rev=705534&r1=705533&r2=705534&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp Fri Oct 17 02:41:26 2008
@@ -63,6 +63,7 @@
     bool check;
     int wait;
     std::string piddir;
+    std::string transport;
 
     DaemonOptions() : qpid::Options("Daemon options"), daemon(false), 
quit(false), check(false), wait(10)
     {
@@ -76,6 +77,7 @@
 
         addOptions()
             ("daemon,d", optValue(daemon), "Run as a daemon. --log-output 
defaults to syslog in this mode.")
+            ("transport", optValue(transport, "TRANSPORT"), "The transport for 
which to return the port")
             ("pid-dir", optValue(piddir, "DIR"), "Directory where 
port-specific PID file is stored")
             ("wait,w", optValue(wait, "SECONDS"), "Sets the maximum wait time 
to initialize the daemon. If the daemon fails to initialize, prints an error 
and returns 1")
             ("check,c", optValue(check), "Prints the daemon's process ID to 
stdout and returns 0 if the daemon is running, otherwise returns 1")
@@ -130,7 +132,7 @@
     /** Code for parent process */
     void parent() {
         uint16_t port = wait(options->daemon.wait);
-        if (options->broker.port == 0)
+        if (options->broker.port == 0 || !options->daemon.transport.empty())
             cout << port << endl; 
     }
 
@@ -138,7 +140,7 @@
     void child() {
         boost::intrusive_ptr<Broker> brokerPtr(new Broker(options->broker));
         broker::SignalHandler::setBroker(brokerPtr);
-        uint16_t port=brokerPtr->getPort();
+        uint16_t port=brokerPtr->getPort(options->daemon.transport);
         ready(port);            // Notify parent.
         brokerPtr->run();
     }
@@ -238,8 +240,8 @@
         else {                  // Non-daemon broker.
             boost::intrusive_ptr<Broker> brokerPtr(new 
Broker(options->broker));
             broker::SignalHandler::setBroker(brokerPtr);
-            if (options->broker.port == 0)
-                cout << uint16_t(brokerPtr->getPort()) << endl; 
+            if (options->broker.port == 0 || 
!options->daemon.transport.empty())
+                cout << 
uint16_t(brokerPtr->getPort(options->daemon.transport)) << endl; 
             brokerPtr->run();
         }
         return 0;

Added: incubator/qpid/trunk/qpid/cpp/src/ssl.mk
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/ssl.mk?rev=705534&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/ssl.mk (added)
+++ incubator/qpid/trunk/qpid/cpp/src/ssl.mk Fri Oct 17 02:41:26 2008
@@ -0,0 +1,46 @@
+#
+# Makefile fragment, conditionally included in Makefile.am
+# 
+libsslcommon_la_SOURCES = \
+  qpid/sys/ssl/check.h \
+  qpid/sys/ssl/check.cpp \
+  qpid/sys/ssl/util.h \
+  qpid/sys/ssl/util.cpp \
+  qpid/sys/ssl/SslSocket.h \
+  qpid/sys/ssl/SslSocket.cpp \
+  qpid/sys/ssl/SslIo.h \
+  qpid/sys/ssl/SslIo.cpp
+
+libsslcommon_la_LIBADD= -lnss3 -lssl3 -lnspr4 libqpidcommon.la
+
+libsslcommon_la_CXXFLAGS=$(AM_CXXFLAGS) $(SSL_CFLAGS) 
-DCERT_DB=\"$(sysconfdir)/qpid_cert_db\"
+
+lib_LTLIBRARIES +=  libsslcommon.la
+
+ssl_la_SOURCES = \
+  qpid/sys/SslPlugin.cpp \
+  qpid/sys/ssl/SslHandler.h \
+  qpid/sys/ssl/SslHandler.cpp
+
+ssl_la_LIBADD= libqpidbroker.la libsslcommon.la
+
+ssl_la_CXXFLAGS=$(AM_CXXFLAGS) $(SSL_CFLAGS)
+
+ssl_la_LDFLAGS = $(PLUGINLDFLAGS)
+
+dmodule_LTLIBRARIES += ssl.la
+
+
+sslconnector_la_SOURCES = \
+  qpid/client/SslConnector.cpp
+
+sslconnector_la_LIBADD = \
+  libqpidclient.la \
+  libsslcommon.la
+
+sslconnector_la_CXXFLAGS = $(AM_CXXFLAGS) 
-DCONF_FILE=\"$(confdir)/sslclient.conf\"
+
+sslconnector_la_LDFLAGS = $(PLUGINLDFLAGS)
+
+cmodule_LTLIBRARIES += \
+  sslconnector.la

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/Makefile.am
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/Makefile.am?rev=705534&r1=705533&r2=705534&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/Makefile.am (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/Makefile.am Fri Oct 17 02:41:26 2008
@@ -85,6 +85,9 @@
 libshlibtest_la_SOURCES = shlibtest.cpp
 
 include cluster.mk
+if SSL
+include ssl.mk
+endif
 
 #
 # Other test programs

Added: incubator/qpid/trunk/qpid/cpp/src/tests/ssl.mk
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/ssl.mk?rev=705534&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/ssl.mk (added)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/ssl.mk Fri Oct 17 02:41:26 2008
@@ -0,0 +1,4 @@
+TESTS+=ssl_test
+EXTRA_DIST+=ssl_test
+clean-local:
+       rm -rf test_cert_db cert.password
\ No newline at end of file

Added: incubator/qpid/trunk/qpid/cpp/src/tests/ssl_test
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/ssl_test?rev=705534&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/ssl_test (added)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/ssl_test Fri Oct 17 02:41:26 2008
@@ -0,0 +1,43 @@
+#!/bin/sh
+# Run a simple test over SSL
+MY_DIR=$(dirname $(which $0))
+CERT_DIR=${MY_DIR}/test_cert_db
+CERT_PW_FILE=${MY_DIR}/cert.password
+HOSTNAME=`hostname`
+COUNT=10000
+
+trap stop_broker EXIT
+
+error() { echo $*; exit 1; }
+
+create_certs() {
+    #create certificate and key databases with single, simple, self-signed 
certificate in it
+    mkdir ${CERT_DIR}
+    certutil -N -d ${CERT_DIR} -f ${CERT_PW_FILE}
+    certutil -S -d ${CERT_DIR} -n ${HOSTNAME} -s "CN=${HOSTNAME}" -t "CT,," -x 
-f ${CERT_PW_FILE} -z /usr/bin/certutil 
+}
+
+start_broker() {
+    ${MY_DIR}/../qpidd --daemon --transport ssl --port 0 --ssl-port 0 
--no-data-dir --no-module-dir --auth no\
+        --load-module ${MY_DIR}/../.libs/ssl.so --ssl-cert-db $CERT_DIR 
--ssl-cert-password-file $CERT_PW_FILE > qpidd.port
+    PORT=`cat qpidd.port`
+}
+
+stop_broker() {
+    ${MY_DIR}/../qpidd -q --port $PORT
+}
+
+if [[ !(-e ${CERT_PW_FILE}) ]] ;  then
+    echo password > ${CERT_PW_FILE}
+fi
+if [[ !(-e ${CERT_DIR}) ]] ;  then
+    create_certs || error "Could not create test certificate"
+fi
+
+start_broker || error "Could not start broker"
+echo "Running SSL test on port $PORT"
+export QPID_LOAD_MODULE=${MY_DIR}/../.libs/sslconnector.so
+export QPID_SSL_CERT_DB=${CERT_DIR}
+export QPID_SSL_CERT_PASSWORD_FILE=${CERT_PW_FILE}
+${MY_DIR}/perftest --count ${COUNT} --port ${PORT} -P ssl -b $HOSTNAME 
--summary
+

Propchange: incubator/qpid/trunk/qpid/cpp/src/tests/ssl_test
------------------------------------------------------------------------------
    svn:executable = *


Reply via email to