in azure-toolkit-libs/azure-toolkit-common-lib/src/main/java/com/microsoft/azure/toolkit/lib/common/proxy/ProxyManager.java [46:96]
public void applyProxy() {
final AzureConfiguration config = Azure.az().config();
String source = config.getProxySource();
if (StringUtils.isBlank(source)) {
ProxyInfo proxy = ObjectUtils.firstNonNull(
getProxyFromProgramArgument("http"),
getProxyFromProgramArgument("https"),
getSystemProxy()
);
if (proxy != null) {
config.setProxyInfo(proxy);
source = config.getProxySource();
}
}
if (StringUtils.isNotBlank(source)) {
final String proxyHost = config.getHttpProxyHost();
final int proxyPort = config.getHttpProxyPort();
AzureMessager.getMessager().info(AzureString.format("Use %s proxy: %s", source, proxyHost + ":" + proxyPort));
if (!StringUtils.equals(source, "system") && !StringUtils.equals(source, "intellij")) {
final Proxy proxy = createHttpProxy(proxyHost, proxyPort);
ProxySelector.setDefault(new ProxySelector() {
@Override
public List<Proxy> select(URI uri) {
return Collections.singletonList(proxy);
}
@Override
public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
}
});
// Java ignores http.proxyUser. Here comes the workaround.
// see https://stackoverflow.com/questions/1626549/authenticated-http-proxy-with-java
if (StringUtils.isNoneBlank(config.getProxyUsername(), config.getProxyPassword())) {
Authenticator.setDefault(
new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
if (getRequestorType() == RequestorType.PROXY) {
if (getRequestingHost().equalsIgnoreCase(proxyHost)) {
return new PasswordAuthentication(config.getProxyUsername(), config.getProxyPassword().toCharArray());
}
}
return null;
}
}
);
}
}
}
}