org.htmlunit.ProxyConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xlt Show documentation
Show all versions of xlt Show documentation
XLT (Xceptance LoadTest) is an extensive load and performance test tool developed and maintained by Xceptance.
/*
* Copyright (c) 2002-2023 Gargoyle Software Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.htmlunit;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
/**
* Class which centralizes proxy configuration, in an effort to reduce clutter in the {@link WebClient}
* class. One instance of this class exists for each WebClient
instance.
*
* @author Daniel Gredler
* @author Ronald Brill
* @see WebClientOptions#getProxyConfig()
*/
public class ProxyConfig implements Serializable {
private String proxyHost_;
private int proxyPort_;
private String proxyScheme_;
private boolean isSocksProxy_;
private final Map proxyBypassHosts_ = new HashMap<>();
private String proxyAutoConfigUrl_;
private String proxyAutoConfigContent_;
/**
* Creates a new instance.
*/
public ProxyConfig() {
this(null, 0, null, false);
}
/**
* Creates a new instance.
* @param proxyHost the proxy host
* @param proxyPort the proxy port
* @param proxyScheme the scheme http/https; null defaults to http
*/
public ProxyConfig(final String proxyHost, final int proxyPort, final String proxyScheme) {
this(proxyHost, proxyPort, proxyScheme, false);
}
/**
* Creates a new instance.
* @param proxyHost the proxy host
* @param proxyPort the proxy port
* @param proxyScheme the scheme http/https
* @param isSocks whether SOCKS proxy or not
*/
public ProxyConfig(final String proxyHost, final int proxyPort, final String proxyScheme, final boolean isSocks) {
proxyHost_ = proxyHost;
proxyPort_ = proxyPort;
proxyScheme_ = proxyScheme;
isSocksProxy_ = isSocks;
}
/**
* Returns the proxy host used to perform HTTP requests.
* @return the proxy host used to perform HTTP requests
*/
public String getProxyHost() {
return proxyHost_;
}
/**
* Sets the proxy host used to perform HTTP requests.
* @param proxyHost the proxy host used to perform HTTP requests
*/
public void setProxyHost(final String proxyHost) {
proxyHost_ = proxyHost;
}
/**
* Returns the proxy port used to perform HTTP requests.
* @return the proxy port used to perform HTTP requests
*/
public int getProxyPort() {
return proxyPort_;
}
/**
* Sets the proxy port used to perform HTTP requests.
* @param proxyPort the proxy port used to perform HTTP requests
*/
public void setProxyPort(final int proxyPort) {
proxyPort_ = proxyPort;
}
/**
* Returns the proxy scheme used to perform HTTP requests.
* @return the proxy scheme used to perform HTTP requests
*/
public String getProxyScheme() {
return proxyScheme_;
}
/**
* Sets the proxy scheme used to perform HTTP requests.
* @param proxyScheme the proxy scheme used to perform HTTP requests
*/
public void setProxyPort(final String proxyScheme) {
proxyScheme_ = proxyScheme;
}
/**
* Returns whether SOCKS proxy or not.
* @return whether SOCKS proxy or not
*/
public boolean isSocksProxy() {
return isSocksProxy_;
}
/**
* Sets whether SOCKS proxy or not.
* @param isSocksProxy whether SOCKS proxy or not
*/
public void setSocksProxy(final boolean isSocksProxy) {
isSocksProxy_ = isSocksProxy;
}
/**
* Any hosts matched by the specified regular expression pattern will bypass the configured proxy.
* @param pattern a regular expression pattern that matches the hostnames of the hosts which should
* bypass the configured proxy.
* @see Pattern
*/
public void addHostsToProxyBypass(final String pattern) {
proxyBypassHosts_.put(pattern, Pattern.compile(pattern));
}
/**
* Any hosts matched by the specified regular expression pattern will no longer bypass the configured proxy.
* @param pattern the previously added regular expression pattern
* @see Pattern
*/
public void removeHostsFromProxyBypass(final String pattern) {
proxyBypassHosts_.remove(pattern);
}
/**
* Returns {@code true} if the host with the specified hostname should be accessed bypassing the
* configured proxy.
* @param hostname the name of the host to check
* @return {@code true} if the host with the specified hostname should be accessed bypassing the
* configured proxy, {@code false} otherwise.
*/
protected boolean shouldBypassProxy(final String hostname) {
boolean bypass = false;
for (final Pattern p : proxyBypassHosts_.values()) {
if (p.matcher(hostname).find()) {
bypass = true;
break;
}
}
return bypass;
}
/**
* Returns the proxy auto-config URL.
* @return the proxy auto-config URL
*/
public String getProxyAutoConfigUrl() {
return proxyAutoConfigUrl_;
}
/**
* Sets the proxy auto-config URL.
* @param proxyAutoConfigUrl the proxy auto-config URL
*/
public void setProxyAutoConfigUrl(final String proxyAutoConfigUrl) {
proxyAutoConfigUrl_ = proxyAutoConfigUrl;
setProxyAutoConfigContent(null);
}
/**
* Returns the proxy auto-config content.
* @return the proxy auto-config content
*/
protected String getProxyAutoConfigContent() {
return proxyAutoConfigContent_;
}
/**
* Sets the proxy auto-config content.
* @param proxyAutoConfigContent the proxy auto-config content
*/
protected void setProxyAutoConfigContent(final String proxyAutoConfigContent) {
proxyAutoConfigContent_ = proxyAutoConfigContent;
}
}