You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by j0llyr0g3r <ti...@wincor-nixdorf.com> on 2008/05/06 13:15:54 UTC
Patch for authenticating http-proxies finished. Interested?
Hey folks,
originating from this thread:
http://www.nabble.com/Request-for-patch%3A-http-proxy--%3E-setting-user---password-not-possible-td16823746s2354.html
i wrote a patch for the current stable AMQ sourcecode.(->
http://www.nabble.com/file/p17080298/amq-proxy-cred.patch
amq-proxy-cred.patch )
The patch itself is quite simple (thank god you already used apache
http-client):
Patched files:
We have to patch the following files
* HttpClientTransport.java
* HttpTransportSupport.java
in the directory
apache-activemq-5.0.0/src/activemq-optional/src/main/java/org/apache/activemq/transport/http
and the file
* pom.xml
in the directory
apache-activemq-5.0.0/src/
Modifications:
* HttpClientTransport
a) Add
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
to the import-statements.
b) Change
protected HttpClient createHttpClient() {
HttpClient client = new HttpClient();
if (getProxyHost() != null) {
client.getHostConfiguration().setProxy(getProxyHost(),
getProxyPort());
}
return client;
}
to
protected HttpClient createHttpClient() {
HttpClient client = new HttpClient();
if (getProxyHost() != null) {
client.getHostConfiguration().setProxy(getProxyHost(),
getProxyPort());
}
if(getProxyUser() != null && getProxyPassword() != null) {
client.getState().setProxyCredentials(
new AuthScope(getProxyHost(), getProxyPort()),
new UsernamePasswordCredentials(getProxyUser(),
getProxyPassword()));
}
return client;
}
c) Change the run() method, find the last catch-block
} catch (IOException e) {
onException(IOExceptionSupport.create("Failed to perform GET on: " +
remoteUrl + " Reason: " + e.getMessage(), e));
break;
} finally {
httpMethod.getResponseBody();
httpMethod.releaseConnection();
}
and change it to
finally {
try {
httpMethod.getResponseBody();
} catch (IOException e) {
e.printStackTrace();
}
httpMethod.releaseConnection();
}
* HttpTransportSupport
Add this to the source-code:
private String proxyUser;
private String proxyPassword;
and the corresponding getter and setter-methods.
*pom.xml
Change line 46 from
<commons-httpclient-version>2.0.1</commons-httpclient-version>
to
<commons-httpclient-version>3.1</commons-httpclient-version>
Apply the patch:
cd $unpacked_amq_source
patch -p1 <amq-proxy-cred.patch
I tested the patch using:
* 2 SLES 9 hosts running two patched brokers
* squid-proxy (2.6.14) running on Ubuntu 7.10 with
mandatory authentication
Works like a charm!
Last problem:
I have not been able to figure out how to pass the proxy-parameters to the
http-transport connector.
Something like:
<networkConnector name="outbound_http"
uri="static://(http://esf-proto-2:61617)?trace=true&proxyHost=sdoesmon&proxyPort=3128"
networkTTL="5"/>
doesn't cause any errors on start-up but seems to be simply ignored (For the
tests - in lack of better knowlegde - i had compiled those configuration
values into the source-code).
Is this patch helpfull for you?
I believe i am not the only one in need of support for http-proxy-support
with AMQ using credentials....
Any advice on the above mentioned configuration issue?
--
View this message in context: http://www.nabble.com/Patch-for-authenticating-http-proxies-finished.-Interested--tp17080298s2354p17080298.html
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.