[server] [ scheduler.script ] - 优化定时脚本任务部分的代码
This commit is contained in:
@@ -40,7 +40,7 @@ public class XrayController {
|
||||
)
|
||||
);
|
||||
|
||||
/*ArrayList<ProxyNode> pathB = new ArrayList<>(
|
||||
ArrayList<ProxyNode> pathB = new ArrayList<>(
|
||||
Arrays.asList(
|
||||
shanghai,
|
||||
seoul2,
|
||||
@@ -53,9 +53,16 @@ public class XrayController {
|
||||
seoul2,
|
||||
phoenix2
|
||||
)
|
||||
);*/
|
||||
);
|
||||
|
||||
allNetworkPathList.add(pathA);
|
||||
ArrayList<ProxyNode> pathD = new ArrayList<>(
|
||||
Arrays.asList(
|
||||
chengduAgent
|
||||
)
|
||||
);
|
||||
|
||||
// allNetworkPathList.add(pathA);
|
||||
allNetworkPathList.add(pathD);
|
||||
// allNetworkPathList.add(pathB);
|
||||
// allNetworkPathList.add(pathC);
|
||||
|
||||
@@ -63,6 +70,8 @@ public class XrayController {
|
||||
|
||||
xrayConfigDistribute.uploadXrayConfigToOSS(allNetworkPathList.get(0));
|
||||
|
||||
xrayConfigDistribute.buildXrayUpdateResult(allNetworkPathList.get(0));
|
||||
|
||||
System.out.println("结束!");
|
||||
|
||||
}
|
||||
|
||||
@@ -7,8 +7,6 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@@ -26,6 +24,9 @@ public class ProxyNode {
|
||||
*/
|
||||
int num;
|
||||
|
||||
String agentName;
|
||||
|
||||
|
||||
String agentTopicName;
|
||||
|
||||
String location;
|
||||
@@ -41,6 +42,6 @@ public class ProxyNode {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProxyNode: [ " + agentTopicName + " ]";
|
||||
return "ProxyNode: [ " + agentName + " ]";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@ public class ProxyNodeSet {
|
||||
public static ProxyNode phoenix2;
|
||||
public static ProxyNode london2;
|
||||
|
||||
public static ProxyNode chengduAgent;
|
||||
|
||||
|
||||
static {
|
||||
|
||||
@@ -24,7 +26,7 @@ public class ProxyNodeSet {
|
||||
.publicIPv4("43.136.177.228")
|
||||
.proxyNodeType(ProxyNodeType.INTERFACE)
|
||||
.name("cd-agent")
|
||||
.agentTopicName("Chengdu-amd-01")
|
||||
.agentName("Chengdu-amd-01")
|
||||
.build();
|
||||
|
||||
|
||||
@@ -35,7 +37,7 @@ public class ProxyNodeSet {
|
||||
.publicIPv4("42.192.52.227")
|
||||
.proxyNodeType(ProxyNodeType.RELAY)
|
||||
.name("tc-sh")
|
||||
.agentTopicName("Shanghai-amd64-01")
|
||||
.agentName("Shanghai-amd64-01")
|
||||
.build();
|
||||
|
||||
hongkong = ProxyNode
|
||||
@@ -45,7 +47,7 @@ public class ProxyNodeSet {
|
||||
.publicIPv4("43.154.83.213")
|
||||
.proxyNodeType(ProxyNodeType.EXTERNAL)
|
||||
.name("tc-hk")
|
||||
.agentTopicName("Hongkong-amd64-01")
|
||||
.agentName("Hongkong-amd64-01")
|
||||
.build();
|
||||
|
||||
|
||||
@@ -56,7 +58,7 @@ public class ProxyNodeSet {
|
||||
.publicIPv4("140.238.30.110")
|
||||
.proxyNodeType(ProxyNodeType.EXTERNAL)
|
||||
.name("seoul-2")
|
||||
.agentTopicName("Seoul-amd64-02")
|
||||
.agentName("Seoul-amd64-02")
|
||||
.build();
|
||||
|
||||
|
||||
@@ -67,7 +69,7 @@ public class ProxyNodeSet {
|
||||
.publicIPv4("140.238.52.228")
|
||||
.proxyNodeType(ProxyNodeType.EXTERNAL)
|
||||
.name("tokyo-2")
|
||||
.agentTopicName("Tokyo-amd64-02")
|
||||
.agentName("Tokyo-amd64-02")
|
||||
.build();
|
||||
|
||||
phoenix2 = ProxyNode
|
||||
@@ -77,7 +79,7 @@ public class ProxyNodeSet {
|
||||
.publicIPv4("129.146.171.163")
|
||||
.proxyNodeType(ProxyNodeType.EXTERNAL)
|
||||
.name("phoenix-2")
|
||||
.agentTopicName("Phoenix-amd64-02")
|
||||
.agentName("Phoenix-amd64-02")
|
||||
.build();
|
||||
|
||||
london2 = ProxyNode
|
||||
@@ -87,7 +89,18 @@ public class ProxyNodeSet {
|
||||
.publicIPv4("141.147.106.62")
|
||||
.proxyNodeType(ProxyNodeType.EXTERNAL)
|
||||
.name("london-2")
|
||||
.agentTopicName("London-amd64-02")
|
||||
.agentName("London-amd64-02")
|
||||
.build();
|
||||
|
||||
chengduAgent = ProxyNode
|
||||
.builder()
|
||||
.location("Chengdu")
|
||||
.num(99)
|
||||
.publicIPv4("183.220.112.113")
|
||||
.proxyNodeType(ProxyNodeType.EXTERNAL)
|
||||
.name("chengdu-agent")
|
||||
.agentName("Chengdu-amd64-77")
|
||||
.agentTopicName("Chengdu-amd64-77-remote")
|
||||
.build();
|
||||
|
||||
ProxyNodeMap.put(chengdu.getNum(), chengdu);
|
||||
@@ -97,7 +110,7 @@ public class ProxyNodeSet {
|
||||
ProxyNodeMap.put(tokyo2.getNum(), tokyo2);
|
||||
ProxyNodeMap.put(phoenix2.getNum(), phoenix2);
|
||||
ProxyNodeMap.put(london2.getNum(), london2);
|
||||
|
||||
ProxyNodeMap.put(chengduAgent.getNum(), chengduAgent);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.wdd.func.xray.service;
|
||||
|
||||
import io.wdd.common.utils.TimeUtils;
|
||||
import io.wdd.func.oss.config.OctopusObjectSummary;
|
||||
import io.wdd.func.oss.config.OssConfig;
|
||||
import io.wdd.func.oss.service.OSSCoreService;
|
||||
@@ -41,10 +42,9 @@ public class XrayConfigDistribute {
|
||||
static {
|
||||
ArrayList<String> first = new ArrayList<>(
|
||||
List.of(
|
||||
"cp",
|
||||
"mv",
|
||||
"/usr/local/etc/xray/config.json",
|
||||
"/usr/local/etc/xray/config-bak-$(date +%Y-%m-%d-%H-%M-%S)"
|
||||
|
||||
"/usr/local/etc/xray/config-bak-TIME"
|
||||
)
|
||||
);
|
||||
|
||||
@@ -126,6 +126,7 @@ public class XrayConfigDistribute {
|
||||
|
||||
public void buildXrayUpdateResult(ArrayList<ProxyNode> networkPathList) {
|
||||
|
||||
String formatTimeString = TimeUtils.currentFormatTimeString();
|
||||
|
||||
List<String> resultKeyList = networkPathList
|
||||
.stream()
|
||||
@@ -136,13 +137,25 @@ public class XrayConfigDistribute {
|
||||
.getObjectSummary()
|
||||
.getAccess();
|
||||
|
||||
String realUrl = access
|
||||
.getOriginUrl()
|
||||
.getPath();
|
||||
String realUrl = String.valueOf(access
|
||||
.getOriginUrl());
|
||||
|
||||
if (StringUtils.isNotEmpty(access.getCloudflareUrl())) {
|
||||
// 优先使用 被cloudflare包装过的的下载网址
|
||||
realUrl = access.getCloudflareUrl();
|
||||
}
|
||||
// 修改命令中的时间
|
||||
String s = updateXrayCommandList
|
||||
.get(0)
|
||||
.get(2);
|
||||
updateXrayCommandList
|
||||
.get(0)
|
||||
.set(
|
||||
2,
|
||||
s.replace("TIME",
|
||||
formatTimeString)
|
||||
);
|
||||
|
||||
// 修改命令中的下载url
|
||||
updateXrayCommandList
|
||||
.get(1)
|
||||
@@ -165,7 +178,10 @@ public class XrayConfigDistribute {
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
log.debug("发送所有的配置到各个Agent成功, 结果查看为 => {}", resultKeyList);
|
||||
log.info(
|
||||
"发送所有的配置到各个Agent成功, 结果查看为 => {}",
|
||||
resultKeyList
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ import javax.annotation.Resource;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -81,18 +80,10 @@ public class XrayCoreServiceImpl implements XrayCoreService {
|
||||
|
||||
private void generateXrayJsonSinglePath(ArrayList<ProxyNode> networkPathList) {
|
||||
int pathLength = networkPathList.size();
|
||||
if (pathLength == 1) {
|
||||
log.error("网络路径节点仅为一个");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// 忽略掉 null的字段
|
||||
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
|
||||
|
||||
|
||||
ArrayList<XrayConfig> tmpXrayConfigList = new ArrayList<>();
|
||||
|
||||
// 采用 VMESS + websocket的形式形成 链状代理
|
||||
// 由于 Vlss+XTLS的形式形成 链状结构
|
||||
String tag = generatePathTag(networkPathList);
|
||||
@@ -119,7 +110,10 @@ public class XrayCoreServiceImpl implements XrayCoreService {
|
||||
|
||||
ProxyNode proxyNode = networkPathList.get(pos);
|
||||
|
||||
// 最后一个节点需要进行 FreeOutbound的构造
|
||||
boolean isOutBoundFree = pos == pathLength - 1;
|
||||
|
||||
// 构造 xrayConfig
|
||||
XrayConfig xrayConfig = doBuildXrayConfig(
|
||||
isOutBoundFree,
|
||||
tag,
|
||||
@@ -129,9 +123,6 @@ public class XrayCoreServiceImpl implements XrayCoreService {
|
||||
pos
|
||||
);
|
||||
|
||||
// 添加到临时缓存中
|
||||
tmpXrayConfigList.add(xrayConfig);
|
||||
|
||||
// 持久化
|
||||
try {
|
||||
String resultContent = objectMapper
|
||||
@@ -169,7 +160,7 @@ public class XrayCoreServiceImpl implements XrayCoreService {
|
||||
|
||||
private String buildXrayConfigFileName(ProxyNode proxyNode, String timeString) {
|
||||
|
||||
return proxyNode.getNum() + "-" + proxyNode.getAgentTopicName() + "-" + timeString + ".json";
|
||||
return proxyNode.getNum() + "-" + proxyNode.getAgentName() + "-" + timeString + ".json";
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user