I googled quite a bit and it appears that it is as easy as setting the
proxy properties for java to use. There is a Proxy.java in
org.hackystat.kernel.installer.util that I have written. I haven't been
able to test it but it is basically a simplified version of the Ant
"SetProxy" task I believe.
The hackyInstaller.xml is currently saving proxy properties but right
now we have not added a way for the user to access and change these
properties. I think as of now if you checked your hackyInstaller.xml
(if you have used the last stable release) it would have proxy elements
in the file. This can easily be put into sensor.properties if needed
though.
I have also been wondering how I would test this. Setting these
properties would ultimately change the environment settings that java
uses during the testing and nothing would be able access to internet (to
send build data etc.) I think. This would be because I have set the
proxy settings but I wouldn't be behind a proxy.
~Julie
Philip Johnson wrote:
Greetings, all,
I started wondering about how to send data from a sensor to a server
that is located across a firewall (and thus requires that the sensor
set a proxy host and so forth).
Team Instahack is providing the ability for the user to specify a
proxy host and port within the GUI and Command line. Once we have
that information from the user and available within sensor.properties,
there are two questions:
(1) How can hackyInstaller use these proxy settings to communicate
with the Hackystat server in order to download sensors?
(2) How can a running sensor (i.e. SensorShell) use these proxy
settings in order to send SOAP data to the server?
So, I did a little googling, and here's what I came up with:
-----------------------------------------------------------------------
From <http://www.soapuser.com/faq.html>:
My SOAP Service needs to make external connections to other sites but
it is behind a proxy server. How do I configure this?
[Francis Ho, 29 September 2001]
Suppose your proxy server is called "proxy.foo.com" and it is on port
9999. There are a couple of ways of configuring Apache to use a proxy.
Solution A1, using the JVM capabilities to deal with proxies:
System.getProperties().put("proxySet","true");
System.getProperties().put("proxyHost","proxy.foo.com");
System.getProperties().put("proxyPort","9999");
Solution A2, for socks:
System.getProperties().put("socksProxyHost","socks.foo.com");
System.getProperties().put("socksProxyPort","1080");
Solution B1 (similar to solution A, for Tomcat):
set CATALINA_OPTS="-DproxyHost=proxy.foo.com -DproxyPort=9999"
Solution B2, for socks:
set CATALINA_OPTS="-DsocksProxyHost=socks.foo.com -DsocksProxyPort=1080"
Finally, you can also specify servers that won't be proxied with:
-DnonProxyHosts=CommaSeparatedListOfNonProxiedSites
---------------------------------------------------------------------------
---
If a FAQ entry from 2001 is to be believed, then enhancing Hackystat
to support proxy servers is trivially easy:
(a) HackyInstaller must ensure that sensor.properties contains the
following properties, with whatever settings are appropriate as
specified by the user:
proxySet=true
proxyHost=proxy.foo.com
proxyPort=9999
socksProxyHost=socks.foo.com
socksProxyPort=1080
HackyInstaller must also add these values to its own System properties
instance whenever the user has them specified or modified (and add
them to its System properties on startup if they aren't there already).
That would appear to be it on the client side: hackyInstaller can now
communicate through the specified proxy, and since all of the
properties in sensor.properties are added to the System properties
automatically when a sensorshell starts up, the sensors can now send
data through the proxy.
(b) If a server needs to communicate through a proxy, then the
Hackystat administrator just adds the appropriate info to the
CATALINA_OPTS variable prior to starting up Hackystat. (To
"implement" this, we simply update the administrator documentation.)
So, my questions to the Hackystat Hacker community are:
* Am I hallucinating? Is it really this easy?
* How do you test this? I've never actually been behind a proxfied
firewall, nor have I access to one as far as I know. Any ideas?
Cheers,
Philip