From eecaad8b8e2c447429c31a01d49260ddd6b4ee03 Mon Sep 17 00:00:00 2001
From: Paul Martin <paul@paulsputer.com>
Date: Sat, 16 Apr 2016 17:35:32 -0400
Subject: [PATCH] Proof of concept #1026

---
 src/main/java/com/gitblit/manager/PluginManager.java |   28 +++++++++++++++++-----------
 1 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/gitblit/manager/PluginManager.java b/src/main/java/com/gitblit/manager/PluginManager.java
index 3e7bc1f..b3936e5 100644
--- a/src/main/java/com/gitblit/manager/PluginManager.java
+++ b/src/main/java/com/gitblit/manager/PluginManager.java
@@ -15,13 +15,15 @@
  */
 package com.gitblit.manager;
 
-import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.HttpURLConnection;
+import java.net.InetSocketAddress;
 import java.net.Proxy;
 import java.net.URL;
 import java.net.URLConnection;
@@ -60,8 +62,7 @@
 import com.gitblit.utils.FileUtils;
 import com.gitblit.utils.JsonUtils;
 import com.gitblit.utils.StringUtils;
-import com.google.common.io.Files;
-import com.google.common.io.InputSupplier;
+import com.google.common.io.ByteStreams;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
@@ -532,12 +533,9 @@
 		// try to get the server-specified last-modified date of this artifact
 		long lastModified = conn.getHeaderFieldDate("Last-Modified", System.currentTimeMillis());
 
-		Files.copy(new InputSupplier<InputStream>() {
-			@Override
-			public InputStream getInput() throws IOException {
-				return new BufferedInputStream(conn.getInputStream());
-			}
-		}, tmpFile);
+		try (InputStream is = conn.getInputStream(); OutputStream os = new FileOutputStream(tmpFile);) {
+			ByteStreams.copy(is, os);
+		}
 
 		File destFile = new File(pFolder, StringUtils.getLastPathElement(u.getPath()));
 		if (destFile.exists()) {
@@ -586,11 +584,19 @@
 	}
 
 	protected Proxy getProxy(URL url) {
-		return java.net.Proxy.NO_PROXY;
+		String proxyHost = runtimeManager.getSettings().getString(Keys.plugins.httpProxyHost, "");
+		String proxyPort = runtimeManager.getSettings().getString(Keys.plugins.httpProxyPort, "");
+
+		if (!StringUtils.isEmpty(proxyHost)  && !StringUtils.isEmpty(proxyPort)) {
+			return new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, Integer.parseInt(proxyPort)));
+		} else {
+			return java.net.Proxy.NO_PROXY;
+		}
 	}
 
 	protected String getProxyAuthorization(URL url) {
-		return "";
+		String proxyAuth = runtimeManager.getSettings().getString(Keys.plugins.httpProxyAuthorization, "");
+		return proxyAuth;
 	}
 
 	/**

--
Gitblit v1.9.1