initial proxy server commit
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/159615bb Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/159615bb Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/159615bb Branch: refs/heads/master Commit: 159615bb8e6ca6e48a8418e9059874cdd4b4eee1 Parents: 74b4800 Author: Andrew Hulbert <andrew.hulb...@ccri.com> Authored: Fri Jun 5 23:10:16 2015 -0400 Committer: Mark Payne <marka...@hotmail.com> Committed: Fri Jul 3 12:48:44 2015 -0400 ---------------------------------------------------------------------- .../nifi/processors/standard/GetHTTP.java | 30 ++++++++++++++++ .../nifi/processors/standard/PostHTTP.java | 36 +++++++++++++++++--- 2 files changed, 61 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/159615bb/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetHTTP.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetHTTP.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetHTTP.java index 0001bb3..6e9acdd 100644 --- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetHTTP.java +++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetHTTP.java @@ -50,6 +50,7 @@ import java.util.regex.Pattern; import javax.net.ssl.SSLContext; import org.apache.http.Header; +import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; @@ -171,6 +172,18 @@ public class GetHTTP extends AbstractSessionFactoryProcessor { .required(false) .identifiesControllerService(SSLContextService.class) .build(); + public static final PropertyDescriptor PROXY_HOST = new PropertyDescriptor.Builder() + .name("Proxy Host") + .description("The fully qualified hostname or IP address of the proxy server") + .required(false) + .addValidator(StandardValidators.NON_EMPTY_VALIDATOR) + .build(); + public static final PropertyDescriptor PROXY_PORT = new PropertyDescriptor.Builder() + .name("Proxy Port") + .description("The port of the proxy server") + .required(false) + .addValidator(StandardValidators.PORT_VALIDATOR) + .build(); public static final Relationship REL_SUCCESS = new Relationship.Builder() .name("success") @@ -222,6 +235,8 @@ public class GetHTTP extends AbstractSessionFactoryProcessor { properties.add(USER_AGENT); properties.add(ACCEPT_CONTENT_TYPE); properties.add(FOLLOW_REDIRECTS); + properties.add(PROXY_HOST); + properties.add(PROXY_PORT); this.properties = Collections.unmodifiableList(properties); // load etag and lastModified from file @@ -276,6 +291,14 @@ public class GetHTTP extends AbstractSessionFactoryProcessor { .build()); } + if (context.getProperty(PROXY_HOST).isSet() && !context.getProperty(PROXY_PORT).isSet()) { + results.add(new ValidationResult.Builder() + .explanation("Proxy Host was set but no Proxy Port was specified") + .valid(false) + .subject("Proxy server configuration") + .build()); + } + return results; } @@ -378,6 +401,13 @@ public class GetHTTP extends AbstractSessionFactoryProcessor { clientBuilder.setDefaultCredentialsProvider(credentialsProvider); } + // Set the proxy if specified + if (context.getProperty(PROXY_HOST).isSet() && context.getProperty(PROXY_PORT).isSet()) { + final String host = context.getProperty(PROXY_HOST).getValue(); + final int port = context.getProperty(PROXY_PORT).asInteger(); + clientBuilder.setProxy(new HttpHost(host, port)); + } + // create the http client final HttpClient client = clientBuilder.build(); http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/159615bb/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java index 9509790..31b5698 100644 --- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java +++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java @@ -49,10 +49,7 @@ import javax.net.ssl.SSLSession; import javax.security.cert.X509Certificate; import javax.servlet.http.HttpServletResponse; -import org.apache.http.Header; -import org.apache.http.HttpException; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; +import org.apache.http.*; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; @@ -225,13 +222,24 @@ public class PostHTTP extends AbstractProcessor { .allowableValues("true", "false") .defaultValue("true") .build(); - public static final PropertyDescriptor SSL_CONTEXT_SERVICE = new PropertyDescriptor.Builder() .name("SSL Context Service") .description("The Controller Service to use in order to obtain an SSL Context") .required(false) .identifiesControllerService(SSLContextService.class) .build(); + public static final PropertyDescriptor PROXY_HOST = new PropertyDescriptor.Builder() + .name("Proxy Host") + .description("The fully qualified hostname or IP address of the proxy server") + .required(false) + .addValidator(StandardValidators.NON_EMPTY_VALIDATOR) + .build(); + public static final PropertyDescriptor PROXY_PORT = new PropertyDescriptor.Builder() + .name("Proxy Port") + .description("The port of the proxy server") + .required(false) + .addValidator(StandardValidators.PORT_VALIDATOR) + .build(); public static final Relationship REL_SUCCESS = new Relationship.Builder() .name("success") @@ -270,6 +278,8 @@ public class PostHTTP extends AbstractProcessor { properties.add(DATA_TIMEOUT); properties.add(ATTRIBUTES_AS_HEADERS_REGEX); properties.add(USER_AGENT); + properties.add(PROXY_HOST); + properties.add(PROXY_PORT); this.properties = Collections.unmodifiableList(properties); } @@ -293,6 +303,14 @@ public class PostHTTP extends AbstractProcessor { .valid(false).subject("SSL Context").build()); } + if (context.getProperty(PROXY_HOST).isSet() && !context.getProperty(PROXY_PORT).isSet()) { + results.add(new ValidationResult.Builder() + .explanation("Proxy Host was set but no Proxy Port was specified") + .valid(false) + .subject("Proxy server configuration") + .build()); + } + return results; } @@ -479,6 +497,14 @@ public class PostHTTP extends AbstractProcessor { } clientBuilder.setDefaultCredentialsProvider(credentialsProvider); } + + // Set the proxy if specified + if (context.getProperty(PROXY_HOST).isSet() && context.getProperty(PROXY_PORT).isSet()) { + final String host = context.getProperty(PROXY_HOST).getValue(); + final int port = context.getProperty(PROXY_PORT).asInteger(); + clientBuilder.setProxy(new HttpHost(host, port)); + } + client = clientBuilder.build(); // determine whether or not destination accepts flowfile/gzip