Prechádzať zdrojové kódy

fix #1682 use default proxy settings

Shinsuke Sugaya 7 rokov pred
rodič
commit
51b9cdc3c3

+ 21 - 0
src/main/java/org/codelibs/fess/es/config/exentity/CrawlingConfig.java

@@ -17,7 +17,12 @@ package org.codelibs.fess.es.config.exentity;
 
 import java.util.Map;
 
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.codelibs.core.lang.StringUtil;
 import org.codelibs.fess.crawler.client.CrawlerClientFactory;
+import org.codelibs.fess.crawler.client.http.HcHttpClient;
+import org.codelibs.fess.mylasta.direction.FessConfig;
+import org.codelibs.fess.util.ComponentUtil;
 
 public interface CrawlingConfig {
 
@@ -43,6 +48,22 @@ public interface CrawlingConfig {
 
     Map<String, String> getConfigParameterMap(ConfigName name);
 
+    public default void initializeDefaultHttpProxy(final Map<String, Object> paramMap) {
+        final FessConfig fessConfig = ComponentUtil.getFessConfig();
+        final String proxyHost = fessConfig.getHttpProxyHost();
+        final String proxyPort = fessConfig.getHttpProxyPort();
+        if (StringUtil.isNotBlank(proxyHost) && StringUtil.isNotBlank(proxyPort)) {
+            paramMap.put(HcHttpClient.PROXY_HOST_PROPERTY, proxyHost);
+            paramMap.put(HcHttpClient.PROXY_PORT_PROPERTY, proxyPort);
+            final String proxyUsername = fessConfig.getHttpProxyUsername();
+            final String proxyPassword = fessConfig.getHttpProxyPassword();
+            if (proxyUsername != null && proxyPassword != null) {
+                paramMap.put(HcHttpClient.PROXY_CREDENTIALS_PROPERTY, new UsernamePasswordCredentials(proxyUsername, proxyPassword));
+            }
+
+        }
+    }
+
     public enum ConfigType {
         WEB("W"), FILE("F"), DATA("D");
 

+ 2 - 0
src/main/java/org/codelibs/fess/es/config/exentity/DataConfig.java

@@ -250,6 +250,8 @@ public class DataConfig extends BsDataConfig implements CrawlingConfig {
             if (proxyUsername != null && proxyPassword != null) {
                 factoryParamMap.put(HcHttpClient.PROXY_CREDENTIALS_PROPERTY, new UsernamePasswordCredentials(proxyUsername, proxyPassword));
             }
+        } else {
+            initializeDefaultHttpProxy(factoryParamMap);
         }
 
         // file auth

+ 10 - 4
src/main/java/org/codelibs/fess/es/config/exentity/WebConfig.java

@@ -238,10 +238,16 @@ public class WebConfig extends BsWebConfig implements CrawlingConfig {
         paramMap.put(HcHttpClient.REQUERT_HEADERS_PROPERTY,
                 rhList.toArray(new org.codelibs.fess.crawler.client.http.RequestHeader[rhList.size()]));
 
-        // proxy credentials
-        if (paramMap.get("proxyUsername") != null && paramMap.get("proxyPassword") != null) {
-            paramMap.put(HcHttpClient.PROXY_CREDENTIALS_PROPERTY, new UsernamePasswordCredentials(paramMap.remove("proxyUsername")
-                    .toString(), paramMap.remove("proxyPassword").toString()));
+        final String proxyHost = (String) paramMap.get("proxyHost");
+        final String proxyPort = (String) paramMap.get("proxyPort");
+        if (StringUtil.isNotBlank(proxyHost) && StringUtil.isNotBlank(proxyPort)) {
+            // proxy credentials
+            if (paramMap.get("proxyUsername") != null && paramMap.get("proxyPassword") != null) {
+                paramMap.put(HcHttpClient.PROXY_CREDENTIALS_PROPERTY, new UsernamePasswordCredentials(paramMap.remove("proxyUsername")
+                        .toString(), paramMap.remove("proxyPassword").toString()));
+            }
+        } else {
+            initializeDefaultHttpProxy(paramMap);
         }
 
         return paramMap;