1 package com.atlassian.sal.core.net;
2
3 import org.apache.commons.lang3.StringUtils;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6
7 import java.util.Arrays;
8
9
10
11
12 public class SystemPropertiesProxyConfig implements ProxyConfig {
13
14 private static final Logger log = LoggerFactory.getLogger(SystemPropertiesProxyConfig.class);
15
16 public static final String PROXY_HOST_PROPERTY_NAME = "http.proxyHost";
17 public static final String PROXY_PORT_PROPERTY_NAME = "http.proxyPort";
18 public static final String PROXY_USER_PROPERTY_NAME = "http.proxyUser";
19 public static final String PROXY_PASSWORD_PROPERTY_NAME = "http.proxyPassword";
20 public static final String PROXY_NON_HOSTS_PROPERTY_NAME = "http.nonProxyHosts";
21
22 public static final int DEFAULT_PROXY_PORT = 80;
23
24 private final String proxyHost;
25 private final int proxyPort;
26 private final String proxyUser;
27 private final String proxyPassword;
28 private final String[] nonProxyHosts;
29
30 public SystemPropertiesProxyConfig() {
31 proxyHost = System.getProperty(PROXY_HOST_PROPERTY_NAME);
32 proxyPort = Integer.getInteger(PROXY_PORT_PROPERTY_NAME, DEFAULT_PROXY_PORT);
33 proxyUser = System.getProperty(PROXY_USER_PROPERTY_NAME);
34 proxyPassword = System.getProperty(PROXY_PASSWORD_PROPERTY_NAME);
35 nonProxyHosts = System.getProperty(PROXY_NON_HOSTS_PROPERTY_NAME, "").split("\\|");
36 if (log.isDebugEnabled()) {
37 log.debug("Found nonProxyHosts - " + Arrays.toString(nonProxyHosts));
38 }
39 }
40
41 @Override
42 public boolean isSet() {
43 return StringUtils.isNotBlank(proxyHost);
44 }
45
46 @Override
47 public boolean requiresAuthentication() {
48 return isSet() && StringUtils.isNotBlank(proxyUser);
49 }
50
51 @Override
52 public String getHost() {
53 return proxyHost;
54 }
55
56 @Override
57 public int getPort() {
58 return proxyPort;
59 }
60
61 @Override
62 public String getUser() {
63 return proxyUser;
64 }
65
66 @Override
67 public String getPassword() {
68 return proxyPassword;
69 }
70
71 @Override
72 public String[] getNonProxyHosts() {
73 return nonProxyHosts;
74 }
75
76 @Override
77 public String toString() {
78 return "SystemPropertiesProxyConfig{" +
79 "proxyHost='" + proxyHost + '\'' +
80 ", proxyPort=" + proxyPort +
81 ", proxyUser='" + proxyUser + '\'' +
82 ", proxyPassword='" + proxyPassword + '\'' +
83 ", nonProxyHosts=" + Arrays.toString(nonProxyHosts) +
84 '}';
85 }
86 }