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 cd...@apache.org on 2005/07/22 07:32:56 UTC
cvs commit: ws-axis/c/src/engine/client Stub.cpp
cdinapala 2005/07/21 22:32:56
Modified: c/include/axis/client Stub.hpp
c/src/engine/client Stub.cpp
Log:
Include the proxy authentication support in client stub.
-Chinthana
Revision Changes Path
1.25 +35 -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.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- Stub.hpp 21 Jun 2005 14:14:13 -0000 1.24
+++ Stub.hpp 22 Jul 2005 05:32:56 -0000 1.25
@@ -605,6 +605,26 @@
const char* getPassword();
/**
+ * Sets the username to be used for Proxy authentication
+ */
+ void setProxyUsername(const char* pcProxyUsername);
+
+ /**
+ * Sets the password to be used for Proxy authentication
+ */
+ void setProxyPassword(const char* pcProxyPassword);
+
+ /**
+ * Gets the username used for Proxy authentication
+ */
+ const char* getProxyUsername();
+
+ /**
+ * Gets the password used for Proxy authentication
+ */
+ const char* getProxyPassword();
+
+ /**
* Call object of the Stub. This is the point of access to the internals
* of the Axis engine.
*/
@@ -637,6 +657,12 @@
* Set Authorization header for basic authentication
*/
void setAuthorizationHeader();
+
+ /**
+ * Set Authorization header for Proxy authentication
+ */
+ void setProxyAuthorizationHeader();
+
Call *m_pCall;
@@ -671,6 +697,15 @@
* Password
*/
char* m_pcPassword;
+ /**
+ * proxy Username
+ */
+ char* m_proxyUsername;
+
+ /**
+ * proxy Password
+ */
+ char* m_proxyPassword;
};
AXIS_CPP_NAMESPACE_END
1.49 +79 -1 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.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- Stub.cpp 21 Jun 2005 14:14:13 -0000 1.48
+++ Stub.cpp 22 Jul 2005 05:32:56 -0000 1.49
@@ -29,7 +29,9 @@
AXIS_CPP_NAMESPACE_USE
Stub::Stub (const char *pcEndPointUri, AXIS_PROTOCOL_TYPE eProtocol):
m_pcUsername (NULL),
-m_pcPassword (NULL)
+m_pcPassword (NULL),
+m_proxyUsername (NULL),
+m_proxyPassword (NULL)
{
m_pCall = new Call ();
m_pCall->setProtocol (eProtocol);
@@ -385,6 +387,27 @@
}
void
+Stub::setProxyUsername (const char *pcProxyUsername)
+{
+ if (m_proxyUsername)
+ {
+ delete[]m_proxyUsername;
+ m_proxyUsername = NULL;
+ }
+
+ if (!pcProxyUsername)
+ return;
+
+ m_proxyUsername = new char[strlen (pcProxyUsername) + 1];
+ strcpy (m_proxyUsername, pcProxyUsername);
+
+ if (m_proxyPassword)
+ {
+ setProxyAuthorizationHeader ();
+ }
+}
+
+void
Stub::setPassword (const char *pcPassword)
{
if (m_pcPassword)
@@ -405,6 +428,27 @@
}
}
+void
+Stub::setProxyPassword (const char *pcProxyPassword)
+{
+ if (m_proxyPassword)
+ {
+ delete[]m_proxyPassword;
+ m_proxyPassword = NULL;
+ }
+
+ if (!pcProxyPassword)
+ return;
+
+ m_proxyPassword = new char[strlen (pcProxyPassword) + 1];
+ strcpy (m_proxyPassword, pcProxyPassword);
+
+ if (m_proxyUsername)
+ {
+ setProxyAuthorizationHeader ();
+ }
+}
+
const char *
Stub::getUsername ()
{
@@ -412,11 +456,23 @@
}
const char *
+Stub::getProxyUsername ()
+{
+ return m_proxyUsername;
+}
+
+const char *
Stub::getPassword ()
{
return m_pcPassword;
}
+const char *
+Stub::getProxyPassword ()
+{
+ return m_proxyPassword;
+}
+
void
Stub::setAuthorizationHeader ()
{
@@ -444,6 +500,28 @@
delete[]base64Value;
}
+void
+Stub::setProxyAuthorizationHeader ()
+{
+ char* cpUsernamePassword = new char[strlen( m_proxyUsername) + strlen( m_proxyPassword ) + 2];
+ strcpy( cpUsernamePassword, m_proxyUsername );
+ strcat( cpUsernamePassword, ":" );
+ strcat( cpUsernamePassword, m_proxyPassword );
+ int len = apr_base64_encode_len (strlen(cpUsernamePassword));
+
+ AxisChar* base64Value = new AxisChar[len + 1];
+ len = apr_base64_encode_binary ( base64Value, (const unsigned char*)cpUsernamePassword, strlen
+ (cpUsernamePassword));
+
+ std::string strValue = "Basic ";
+ strValue += base64Value;
+
+ this->setTransportProperty( "Proxy-Authorization", strValue.c_str());
+ delete [] cpUsernamePassword;
+ delete [] base64Value;
+
+}
+
ISoapAttachment* Stub::createSoapAttachment()
{
return m_pCall->createSoapAttachment();