diff --git a/pom.xml b/pom.xml index 60af1c6..0949f4f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ org.jenkins-ci.plugins plugin - 1.420 + 1.443 org.jenkins-ci.plugins diff --git a/src/main/java/testflight/TestflightRecorder.java b/src/main/java/testflight/TestflightRecorder.java index 90f1b91..a6c246e 100644 --- a/src/main/java/testflight/TestflightRecorder.java +++ b/src/main/java/testflight/TestflightRecorder.java @@ -261,6 +261,7 @@ private TestflightUploader.UploadRequest createPartialUploadRequest(TestflightTe ur.lists = vars.expand(lists); ur.notifyTeam = notifyTeam; ProxyConfiguration proxy = getProxy(); + ur.noProxyHostPatterns = proxy.getNoProxyHostPatterns(); ur.proxyHost = proxy.name; ur.proxyPass = proxy.getPassword(); ur.proxyPort = proxy.port; diff --git a/src/main/java/testflight/TestflightUploader.java b/src/main/java/testflight/TestflightUploader.java index 1a0e402..79c9001 100644 --- a/src/main/java/testflight/TestflightUploader.java +++ b/src/main/java/testflight/TestflightUploader.java @@ -1,5 +1,14 @@ package testflight; + +import java.io.*; +import java.nio.charset.Charset; +import java.util.List; +import java.util.Map; +import java.util.Scanner; +import java.util.regex.Pattern; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; @@ -13,14 +22,6 @@ import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.DefaultHttpClient; import org.json.simple.parser.JSONParser; -import org.apache.commons.io.IOUtils; - -import java.io.*; -import java.nio.charset.Charset; -import java.util.Map; -import java.util.Scanner; - -import org.apache.commons.lang.builder.ToStringBuilder; /** * A testflight uploader @@ -45,8 +46,11 @@ static class UploadRequest implements Serializable { String proxyUser; String proxyPass; int proxyPort; + List noProxyHostPatterns; Boolean debug; - + static final String apiDomain = "testflightapp.com"; + static final String httpPost = "/api/builds.json"; + @Override public String toString() { return new ToStringBuilder(this) .append("filePaths", filePaths) @@ -83,6 +87,7 @@ static UploadRequest copy(UploadRequest r) { r2.proxyUser = r.proxyUser; r2.proxyPort = r.proxyPort; r2.proxyPass = r.proxyPass; + r2.noProxyHostPatterns = r.noProxyHostPatterns; r2.debug = r.debug; return r2; @@ -95,22 +100,41 @@ public void setLogger(Logger logger) { this.logger = logger; } + private boolean ignoreProxy(UploadRequest ur){ + for (Pattern pattern : ur.noProxyHostPatterns){ + if(pattern.matcher(UploadRequest.apiDomain).matches()){ + logDebug("Pattern '" + pattern.toString() + "' matches '" + UploadRequest.apiDomain +"'"); + return true; + } + logDebug("Pattern '" + pattern.toString() + "' does not match '" + UploadRequest.apiDomain +"'"); + } + return false; + } + public Map upload(UploadRequest ur) throws IOException, org.json.simple.parser.ParseException { DefaultHttpClient httpClient = new DefaultHttpClient(); - // Configure the proxy if necessary - if (ur.proxyHost != null && !ur.proxyHost.isEmpty() && ur.proxyPort > 0) { - Credentials cred = null; - if (ur.proxyUser != null && !ur.proxyUser.isEmpty()) - cred = new UsernamePasswordCredentials(ur.proxyUser, ur.proxyPass); - - httpClient.getCredentialsProvider().setCredentials(new AuthScope(ur.proxyHost, ur.proxyPort), cred); - HttpHost proxy = new HttpHost(ur.proxyHost, ur.proxyPort); - httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); + if(ignoreProxy(ur)){ + //clear proxy settings to provide correct debug messages + ur.proxyHost = ""; + ur.proxyPort = 0; + ur.proxyUser = ""; + ur.proxyPass = ""; + }else{ + // Configure the proxy if necessary + if (ur.proxyHost != null && !ur.proxyHost.isEmpty() && ur.proxyPort > 0) { + Credentials cred = null; + if (ur.proxyUser != null && !ur.proxyUser.isEmpty()) + cred = new UsernamePasswordCredentials(ur.proxyUser, ur.proxyPass); + + httpClient.getCredentialsProvider().setCredentials(new AuthScope(ur.proxyHost, ur.proxyPort), cred); + HttpHost proxy = new HttpHost(ur.proxyHost, ur.proxyPort); + httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); + } } - HttpHost targetHost = new HttpHost("testflightapp.com"); - HttpPost httpPost = new HttpPost("/api/builds.json"); + HttpHost targetHost = new HttpHost(UploadRequest.apiDomain); + HttpPost httpPost = new HttpPost(UploadRequest.httpPost); FileBody fileBody = new FileBody(ur.file); MultipartEntity entity = new MultipartEntity();