feat: 新增全局代理配置.
This commit is contained in:
@@ -40,4 +40,34 @@ public final class ConfigurationKeys {
|
|||||||
* ip地址提供器类型
|
* ip地址提供器类型
|
||||||
*/
|
*/
|
||||||
public static final String KEY_IP_PROVIDER_TYPE = "system.ip.provider.type";
|
public static final String KEY_IP_PROVIDER_TYPE = "system.ip.provider.type";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否启用HTTP代理
|
||||||
|
*/
|
||||||
|
public static final String KEY_HTTP_PROXY_ENABLE = "system.http.proxy.enable";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP代理主机地址
|
||||||
|
*/
|
||||||
|
public static final String KEY_HTTP_PROXY_HOST = "system.http.proxy.host";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP代理端口
|
||||||
|
*/
|
||||||
|
public static final String KEY_HTTP_PROXY_PORT = "system.http.proxy.port";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP代理是否需要认证
|
||||||
|
*/
|
||||||
|
public static final String KEY_HTTP_PROXY_AUTH = "system.http.proxy.auth";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP代理认证用户名
|
||||||
|
*/
|
||||||
|
public static final String KEY_HTTP_PROXY_USERNAME = "system.http.proxy.username";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP代理认证密码
|
||||||
|
*/
|
||||||
|
public static final String KEY_HTTP_PROXY_PASSWORD = "system.http.proxy.password";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,13 +2,12 @@ package com.serliunx.ddns.support.okhttp;
|
|||||||
|
|
||||||
import com.serliunx.ddns.config.Configuration;
|
import com.serliunx.ddns.config.Configuration;
|
||||||
import com.serliunx.ddns.constant.ConfigurationKeys;
|
import com.serliunx.ddns.constant.ConfigurationKeys;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.*;
|
||||||
import okhttp3.Request;
|
|
||||||
import okhttp3.Response;
|
|
||||||
import okhttp3.ResponseBody;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.net.Proxy;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,10 +68,35 @@ public final class HttpClient {
|
|||||||
* @param configuration 配置信息
|
* @param configuration 配置信息
|
||||||
*/
|
*/
|
||||||
public static void init(Configuration configuration) {
|
public static void init(Configuration configuration) {
|
||||||
Integer overtime = configuration.getInteger(ConfigurationKeys.KEY_HTTP_OVERTIME, DEFAULT_OVERTIME);
|
OkHttpClient.Builder builder = new OkHttpClient.Builder();
|
||||||
|
|
||||||
CLIENT = new OkHttpClient.Builder()
|
Integer overtime = configuration.getInteger(ConfigurationKeys.KEY_HTTP_OVERTIME, DEFAULT_OVERTIME);
|
||||||
.connectTimeout(overtime, TimeUnit.SECONDS)
|
boolean proxyEnable = configuration.getBoolean(ConfigurationKeys.KEY_HTTP_PROXY_ENABLE, false);
|
||||||
|
boolean authEnable = configuration.getBoolean(ConfigurationKeys.KEY_HTTP_PROXY_AUTH, false);
|
||||||
|
String host = configuration.getString(ConfigurationKeys.KEY_HTTP_PROXY_HOST);
|
||||||
|
Integer port = configuration.getInteger(ConfigurationKeys.KEY_HTTP_PROXY_PORT);
|
||||||
|
String username = configuration.getString(ConfigurationKeys.KEY_HTTP_PROXY_USERNAME);
|
||||||
|
String password = configuration.getString(ConfigurationKeys.KEY_HTTP_PROXY_PASSWORD);
|
||||||
|
|
||||||
|
// 配置代理
|
||||||
|
if (proxyEnable) {
|
||||||
|
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
|
||||||
|
|
||||||
|
builder.proxy(proxy);
|
||||||
|
|
||||||
|
// 是否需要认证
|
||||||
|
if (authEnable) {
|
||||||
|
Authenticator authenticator = (route, response) -> {
|
||||||
|
String credential = Credentials.basic(username, password);
|
||||||
|
return response.request().newBuilder()
|
||||||
|
.header("Proxy-Authorization", credential)
|
||||||
|
.build();
|
||||||
|
};
|
||||||
|
builder.proxyAuthenticator(authenticator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CLIENT = builder.connectTimeout(overtime, TimeUnit.SECONDS)
|
||||||
.readTimeout(overtime, TimeUnit.SECONDS)
|
.readTimeout(overtime, TimeUnit.SECONDS)
|
||||||
.writeTimeout(overtime, TimeUnit.SECONDS)
|
.writeTimeout(overtime, TimeUnit.SECONDS)
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -3,4 +3,10 @@ system.pool.core.size=4
|
|||||||
system.task.refresh.interval.ip=300
|
system.task.refresh.interval.ip=300
|
||||||
system.ip.provider.type=IP_API
|
system.ip.provider.type=IP_API
|
||||||
system.http.overtime=3
|
system.http.overtime=3
|
||||||
|
system.http.proxy.enable=true
|
||||||
|
system.http.proxy.host=127.0.0.1
|
||||||
|
system.http.proxy.port=7897
|
||||||
|
system.http.proxy.auth=false
|
||||||
|
system.http.proxy.username=username
|
||||||
|
system.http.proxy.password=password
|
||||||
instance.aliyun.endpoint.url=alidns.cn-hangzhou.aliyuncs.com
|
instance.aliyun.endpoint.url=alidns.cn-hangzhou.aliyuncs.com
|
||||||
|
|||||||
Reference in New Issue
Block a user