Skip to content

Commit

Permalink
Add HTTP proxy support in es-hadoop
Browse files Browse the repository at this point in the history
relates #166
  • Loading branch information
costin committed Mar 14, 2014
1 parent ab246d0 commit 263ebe3
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 2 deletions.
Expand Up @@ -141,4 +141,12 @@ public interface ConfigurationOptions {

String ES_UPSERT_DOC = "es.upsert.doc";
String ES_UPSERT_DOC_DEFAULT = "true";

/** Network options */
String ES_NET_PROXY_HTTP_HOST = "es.net.proxy.http.host";
String ES_NET_PROXY_HTTP_PORT = "es.net.proxy.http.port";
String ES_NET_PROXY_HTTP_USER = "es.net.proxy.http.user";
String ES_NET_PROXY_HTTP_PASS = "es.net.proxy.http.pass";
String ES_NET_PROXY_HTTP_USE_SYSTEM_PROPS = "es.net.proxy.http.use.system.props";
String ES_NET_PROXY_HTTP_USE_SYSTEM_PROPS_DEFAULT = "yes";
}
21 changes: 20 additions & 1 deletion src/main/java/org/elasticsearch/hadoop/cfg/Settings.java
Expand Up @@ -198,6 +198,26 @@ public TimeValue getHeartBeatLead() {
return TimeValue.parseTimeValue(getProperty(ES_HEART_BEAT_LEAD, ES_HEART_BEAT_LEAD_DEFAULT));
}

public String getNetworkProxyHttpHost() {
return getProperty(ES_NET_PROXY_HTTP_HOST);
}

public int getNetworkProxyHttpPort() {
return Integer.valueOf(getProperty(ES_NET_PROXY_HTTP_PORT, "-1"));
}

public String getNetworkProxyHttpUser() {
return getProperty(ES_NET_PROXY_HTTP_USER);
}

public String getNetworkProxyHttpPass() {
return getProperty(ES_NET_PROXY_HTTP_PASS);
}

public boolean getNetworkUseSystemProperties() {
return Booleans.parseBoolean(getProperty(ES_NET_PROXY_HTTP_USE_SYSTEM_PROPS, ES_NET_PROXY_HTTP_USE_SYSTEM_PROPS_DEFAULT));
}

public Settings setHosts(String hosts) {
setProperty(ES_NODES, hosts);
return this;
Expand Down Expand Up @@ -234,7 +254,6 @@ public String getResourceRead() {
public String getResourceWrite() {
return getProperty(ES_RESOURCE_WRITE, getResource());
}

String getTargetHosts() {
String hosts = getProperty(INTERNAL_ES_HOSTS);
return (StringUtils.hasText(hosts) ? hosts : getNodes());
Expand Down
Expand Up @@ -28,9 +28,12 @@
import org.apache.commons.httpclient.HttpConnection;
import org.apache.commons.httpclient.HttpConnectionManager;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpState;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.DeleteMethod;
import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
import org.apache.commons.httpclient.methods.GetMethod;
Expand Down Expand Up @@ -133,8 +136,30 @@ public boolean retryMethod(HttpMethod method, IOException exception, int executi
params.setConnectionManagerTimeout(settings.getHttpTimeout());
params.setSoTimeout((int) settings.getHttpTimeout());
client = new HttpClient(params, new SocketTrackingConnectionManager());

HostConfiguration hostConfig = new HostConfiguration();
// set proxy settings
String proxyHost = null;
int proxyPort = -1;
if (settings.getNetworkUseSystemProperties()) {
proxyHost = System.getProperty("http.proxyHost");
proxyPort = Integer.getInteger("http.proxyPort", -1);
}
if (StringUtils.hasText(settings.getNetworkProxyHttpHost())) {
proxyHost = settings.getNetworkProxyHttpHost();
}
if (settings.getNetworkProxyHttpPort() > 0) {
proxyPort = settings.getNetworkProxyHttpPort();
}

if (StringUtils.hasText(proxyHost)) {
hostConfig.setProxy(proxyHost, proxyPort);

if (StringUtils.hasText(settings.getNetworkProxyHttpUser())) {
HttpState state = new HttpState();
state.setProxyCredentials(AuthScope.ANY, new UsernamePasswordCredentials(settings.getNetworkProxyHttpUser(), settings.getNetworkProxyHttpPass()));
client.setState(state);
}
}

try {
hostConfig.setHost(new URI(prefixUri(host), false));
Expand Down

0 comments on commit 263ebe3

Please sign in to comment.