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 = *
