You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2005/07/26 18:23:44 UTC
cvs commit: ws-axis/c/tests/auto_build/testcases/tests CalculatorDocSSLConfigFile.xml
dicka 2005/07/26 09:23:44
Modified: c/build executeTest.xml
c/include/axis/client Stub.hpp
c/src/engine/client Call.cpp Stub.cpp
c/src/transport/axis3 HTTPTransport.cpp
c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal
ClientStubHeaderWriter.java ClientStubWriter.java
c/tests/auto_build/testcases/client/cpp
CalculatorDocSSLClient.cpp
Added: c/tests/auto_build/testcases/client/cpp
CalculatorDocSSLConfigFileClient.cpp
c/tests/auto_build/testcases/tests
CalculatorDocSSLConfigFile.xml
Log:
Resolve problems being seen with setting SSL properties via API and configuration file.
Submitted by: Adrian Dick
Revision Changes Path
1.39 +1 -0 ws-axis/c/build/executeTest.xml
Index: executeTest.xml
===================================================================
RCS file: /home/cvs/ws-axis/c/build/executeTest.xml,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- executeTest.xml 12 Jul 2005 11:46:00 -0000 1.38
+++ executeTest.xml 26 Jul 2005 16:23:43 -0000 1.39
@@ -301,6 +301,7 @@
<then>
<echo file="${axiscpp.conf}" append="true">
ClientLogPath:${test.directory}/ClientLog.taw
+SecureInfo:${env.SSL_KEYS_HOME}/myKeyRing.kdb,axis4all,AXIS,NONE,05,NONE,false
</echo>
</then>
</if>
1.26 +15 -0 ws-axis/c/include/axis/client/Stub.hpp
Index: Stub.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/include/axis/client/Stub.hpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- Stub.hpp 22 Jul 2005 05:32:56 -0000 1.25
+++ Stub.hpp 26 Jul 2005 16:23:43 -0000 1.26
@@ -636,6 +636,11 @@
* automatically deleted by Axis C++ if it is passed as a parameter to a web service.
*/
ISoapAttachment* createSoapAttachment();
+
+ /**
+ * Set SSL configuration properties.
+ */
+ void AXISCALL SetSecure( char *, ...);
protected:
/**
@@ -646,6 +651,10 @@
*/
void applyUserPreferences();
+ /**
+ * Apply SSL configuration properties.
+ */
+ void includeSecure();
/**
* Set SOAP Headers stored in m_vSOAPHeaderBlock vector.
@@ -706,6 +715,12 @@
* proxy Password
*/
char* m_proxyPassword;
+
+private:
+ /**
+ * SSL configuration parameters
+ */
+ std::string m_sArguments[8];
};
AXIS_CPP_NAMESPACE_END
1.122 +0 -27 ws-axis/c/src/engine/client/Call.cpp
Index: Call.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/engine/client/Call.cpp,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -r1.121 -r1.122
--- Call.cpp 7 Jul 2005 16:29:01 -0000 1.121
+++ Call.cpp 26 Jul 2005 16:23:43 -0000 1.122
@@ -72,33 +72,6 @@
}
}
- // SSL channel related initilizations
- char * pcSSLChannelInfo = g_pConfig->getAxisConfProperty( AXCONF_SECUREINFO);
- if( pcSSLChannelInfo && strlen( pcSSLChannelInfo) > 0)
- {
- char * pszArgPtr = NULL;
- int iArgIndex = 0;
- string sArguments[8];
-
- pszArgPtr = strtok( pcSSLChannelInfo, ",");
-
- while( pszArgPtr != NULL && iArgIndex < 8)
- {
- sArguments[iArgIndex] = pszArgPtr;
-
- iArgIndex++;
-
- pszArgPtr = strtok( NULL, ",");
-
- while( pszArgPtr != NULL && *pszArgPtr == ' ' && *pszArgPtr != '\0')
- {
- pszArgPtr++;
- }
- }
-
- m_nStatus = m_pTransport->setTransportProperty( SECURE_PROPERTIES, (const char *) &sArguments);
- }
-
// Engine initialization
m_pAxisEngine = new ClientAxisEngine ();
if (!m_pAxisEngine)
1.50 +65 -0 ws-axis/c/src/engine/client/Stub.cpp
Index: Stub.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/engine/client/Stub.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- Stub.cpp 22 Jul 2005 05:32:56 -0000 1.49
+++ Stub.cpp 26 Jul 2005 16:23:43 -0000 1.50
@@ -25,6 +25,10 @@
#include "../../soap/SoapSerializer.h"
#include "../../common/AxisUtils.h"
#include "../../soap/apr_base64.h"
+#include "../../common/AxisConfig.h"
+#include "../../common/AxisGenException.h"
+
+extern AXIS_CPP_NAMESPACE_PREFIX AxisConfig* g_pConfig;
AXIS_CPP_NAMESPACE_USE
Stub::Stub (const char *pcEndPointUri, AXIS_PROTOCOL_TYPE eProtocol):
@@ -37,6 +41,30 @@
m_pCall->setProtocol (eProtocol);
m_pTransport = m_pCall->getTransport ();
m_pTransport->setEndpointUri( pcEndPointUri);
+
+ // SSL channel related initilizations
+ char * pcSSLChannelInfo = g_pConfig->getAxisConfProperty( AXCONF_SECUREINFO);
+ if( pcSSLChannelInfo && strlen( pcSSLChannelInfo) > 0)
+ {
+ char * pszArgPtr = NULL;
+ int iArgIndex = 0;
+
+ pszArgPtr = strtok( pcSSLChannelInfo, ",");
+
+ while( pszArgPtr != NULL && iArgIndex < 8)
+ {
+ m_sArguments[iArgIndex] = pszArgPtr;
+
+ iArgIndex++;
+
+ pszArgPtr = strtok( NULL, ",");
+
+ while( pszArgPtr != NULL && *pszArgPtr == ' ' && *pszArgPtr != '\0')
+ {
+ pszArgPtr++;
+ }
+ }
+ }
}
Stub::~Stub ()
@@ -527,4 +555,41 @@
return m_pCall->createSoapAttachment();
}
+/*Methods for supporting SecureChannel*/
+void Stub::SetSecure( char * pszArguments, ...)
+{
+ int iArgIndex = 0;
+ va_list args;
+ char * pszArg = NULL;
+
+ va_start( args, pszArguments);
+
+ if( (pszArg = pszArguments) != NULL)
+ {
+ do
+ {
+ if( pszArg == (char *) 1)
+ {
+ m_sArguments[iArgIndex] = "true";
+ }
+ else
+ {
+ m_sArguments[iArgIndex] = pszArg;
+ }
+
+ iArgIndex++;
+ } while( (pszArg = va_arg( args, char *)) != NULL && iArgIndex < 8);
+
+ if( iArgIndex == 6)
+ {
+ m_sArguments[iArgIndex] = "false";
+ }
+ }
+ va_end( args);
+}
+
+void Stub::includeSecure()
+{
+ m_pCall->setTransportProperty( SECURE_PROPERTIES, (const char *) &m_sArguments);
+}
1.37 +1 -1 ws-axis/c/src/transport/axis3/HTTPTransport.cpp
Index: HTTPTransport.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/transport/axis3/HTTPTransport.cpp,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- HTTPTransport.cpp 11 Jul 2005 05:43:52 -0000 1.36
+++ HTTPTransport.cpp 26 Jul 2005 16:23:43 -0000 1.37
@@ -104,7 +104,7 @@
}
/*
- * HTTPTransport destuctor
+ * HTTPTransport destructor
*/
HTTPTransport::~HTTPTransport()
{
1.37 +0 -7 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java
Index: ClientStubHeaderWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- ClientStubHeaderWriter.java 21 Jun 2005 14:14:13 -0000 1.36
+++ ClientStubHeaderWriter.java 26 Jul 2005 16:23:43 -0000 1.37
@@ -58,8 +58,6 @@
try
{
writer.write("public: \n");
- writer.write("\tSTORAGE_CLASS_INFO void SetSecure( char *, ...);\n");
- // FJP Secure Channel
for (int i = 0; i < methods.size(); i++)
{
@@ -151,11 +149,6 @@
}
writer.write(");\n");
}
-
- writer.write("\nprivate:\n"); // FJP - SecureChannel
- writer.write("\tvoid includeSecure();\n\n"); // FJP - SecureChannel
- writer.write("protected:\n"); // FJP - SecureChannel
- writer.write("\tstd::string sArguments[8];\n"); // FJP - SecureChannel
}
catch (Exception e)
{
1.94 +0 -38 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
Index: ClientStubWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -r1.93 -r1.94
--- ClientStubWriter.java 21 Jun 2005 15:45:26 -0000 1.93
+++ ClientStubWriter.java 26 Jul 2005 16:23:43 -0000 1.94
@@ -97,44 +97,6 @@
this.writeMethodInWrapper(minfo);
writer.write("\n");
}
-
- writer.write("/*Methods for supporting SecureChannel*/\n\n");
- writer.write( "void " + classname + "::SetSecure( char * pszArguments, ...)\n");
- writer.write("{\n");
- writer.write("\tint\t\tiArgIndex = 0;\n");
- writer.write("\tva_list\targs;\n");
- writer.write("\tchar *\tpszArg = NULL;\n");
- writer.write("\t\n");
- writer.write("\tva_start( args, pszArguments);\n");
- writer.write("\t\n");
- writer.write("\tif( (pszArg = pszArguments) != NULL)\n");
- writer.write("\t{\n");
- writer.write("\t\tdo\n");
- writer.write("\t\t{\n");
- writer.write("\t\t\tif( pszArg == (char *) 1)\n");
- writer.write("\t\t\t{\n");
- writer.write("\t\t\t\tsArguments[iArgIndex] = \"true\";\n");
- writer.write("\t\t\t}\n");
- writer.write("\t\t\telse\n");
- writer.write("\t\t\t{\n");
- writer.write("\t\t\t\tsArguments[iArgIndex] = pszArg;\n");
- writer.write("\t\t\t}\n");
- writer.write("\n");
- writer.write("\t\tiArgIndex++;\n");
- writer.write("\t\t} while( (pszArg = va_arg( args, char *)) != NULL && iArgIndex < 8);\n");
- writer.write("\n");
- writer.write("\t\tif( iArgIndex == 6)\n");
- writer.write("\t\t{\n");
- writer.write("\t\t\tsArguments[iArgIndex] = \"false\";\n");
- writer.write("\t\t}\n");
- writer.write("\t}\n");
- writer.write("\n");
- writer.write("\tva_end( args);\n");
- writer.write("}\n\n");
- writer.write("void " + classname + "::includeSecure()\n");
- writer.write("{\n");
- writer.write("\tm_pCall->setTransportProperty( SECURE_PROPERTIES, (const char *) &sArguments);\n");
- writer.write("}\n");
}
catch (IOException e)
{
1.7 +24 -23 ws-axis/c/tests/auto_build/testcases/client/cpp/CalculatorDocSSLClient.cpp
Index: CalculatorDocSSLClient.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/tests/auto_build/testcases/client/cpp/CalculatorDocSSLClient.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- CalculatorDocSSLClient.cpp 1 Apr 2005 09:28:48 -0000 1.6
+++ CalculatorDocSSLClient.cpp 26 Jul 2005 16:23:44 -0000 1.7
@@ -28,11 +28,11 @@
int main(int argc, char* argv[])
{
- char endpoint[256];
+ char endpoint[256];
const char* sslkeyhome = 0;
- char keylocation[255];
+ char keylocation[255];
- const char* url="https://localhost:80/axis/Calculator";
+ const char* url="https://localhost:80/axis/Calculator";
signal(SIGILL, sig_handler);
signal(SIGABRT, sig_handler);
@@ -40,33 +40,34 @@
//signal(SIGQUIT, sig_handler);
//signal(SIGBUS, sig_handler);
signal(SIGFPE, sig_handler);
- int iResult;
+ int iResult;
- url = argv[1];
+ url = argv[1];
- bool bSuccess = false;
- int iRetryIterationCount = 3;
+ bool bSuccess = false;
+ int iRetryIterationCount = 3;
- do
- {
+ do
+ {
try
{
- sprintf(endpoint, "%s", url);
- Calculator ws(endpoint);
+ sprintf(endpoint, "%s", url);
+ Calculator ws(endpoint);
//ws.SetSecure("/home/axistest/ssl/myKeyRing.kdb", "axis4all", "AXIS", "NONE", "05", "NONE", false);
- sslkeyhome=getenv("SSL_KEYS_HOME");
+ sslkeyhome=getenv("SSL_KEYS_HOME");
- if (!sslkeyhome)
- { cout << "SSL_KEYS_HOME not set" << endl;
- return 1;
- }
-
- sprintf(keylocation,"%s/%s",sslkeyhome,"myKeyRing.kdb");
- ws.SetSecure(keylocation, "axis4all", "AXIS", "NONE", "05", "NONE", false);
-
- iResult = ws.add(2,3);
- cout << iResult << endl;
- bSuccess = true;
+ if (!sslkeyhome)
+ {
+ cout << "SSL_KEYS_HOME not set" << endl;
+ return 1;
+ }
+
+ sprintf(keylocation,"%s/%s",sslkeyhome,"myKeyRing.kdb");
+ ws.SetSecure(keylocation, "axis4all", "AXIS", "NONE", "05", "NONE", false);
+
+ iResult = ws.add(2,3);
+ cout << iResult << endl;
+ bSuccess = true;
}
catch(AxisException& e)
{
1.1 ws-axis/c/tests/auto_build/testcases/client/cpp/CalculatorDocSSLConfigFileClient.cpp
Index: CalculatorDocSSLConfigFileClient.cpp
===================================================================
// Copyright 2003-2004 The Apache Software Foundation.
// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
//
// 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.
/*****************************************************************************
* This test is written to test the functionality of SetSecure() API
******************************************************************************
*/
#include "Calculator.hpp"
#include <iostream>
#include <stdlib.h>
#include <signal.h>
void sig_handler(int);
int main(int argc, char* argv[])
{
char endpoint[256];
const char* sslkeyhome = 0;
char keylocation[255];
const char* url="https://localhost:80/axis/Calculator";
signal(SIGILL, sig_handler);
signal(SIGABRT, sig_handler);
signal(SIGSEGV, sig_handler);
//signal(SIGQUIT, sig_handler);
//signal(SIGBUS, sig_handler);
signal(SIGFPE, sig_handler);
int iResult;
url = argv[1];
bool bSuccess = false;
int iRetryIterationCount = 3;
do
{
try
{
sprintf(endpoint, "%s", url);
Calculator ws(endpoint);
iResult = ws.add(2,3);
cout << iResult << endl;
bSuccess = true;
}
catch(AxisException& e)
{
bool bSilent = false;
if( e.getExceptionCode() == CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED)
{
if( iRetryIterationCount > 0)
{
bSilent = true;
}
}
else
{
iRetryIterationCount = 0;
}
if( !bSilent)
{
cout << "Exception : " << e.what() << endl;
}
}
catch(exception& e)
{
cout << "Unknown exception has occured" << endl;
}
catch(...)
{
cout << "Unknown exception has occured" << endl;
}
iRetryIterationCount--;
} while( iRetryIterationCount > 0 && !bSuccess);
cout<< "---------------------- TEST COMPLETE -----------------------------"<< endl;
return 0;
}
void sig_handler(int sig) {
signal(sig, sig_handler);
cout << "SIGNAL RECEIVED " << sig << endl;
exit(1);
}
1.1 ws-axis/c/tests/auto_build/testcases/tests/CalculatorDocSSLConfigFile.xml
Index: CalculatorDocSSLConfigFile.xml
===================================================================
<test>
<name>CalculatorDocSSLConfigFile</name>
<description>CalculatorDocSSL test using SSL properties in config file</description>
<clientLang>cpp</clientLang>
<clientCode>CalculatorDocSSLConfigFileClient.cpp</clientCode>
<wsdl>CalculatorDoc.wsdl</wsdl>
<expected>
<output>
CalculatorDocSSL.expected
</output>
</expected>
<endpoint>https://localhost:80/axis/CalculatorDoc</endpoint>
<nomonitor>true</nomonitor>
<port>9443</port>
<ssl>true</ssl>
</test>