[server][xary] - 完成实际Xray配置更新的全流程 - 2

This commit is contained in:
zeaslity
2023-03-03 16:23:09 +08:00
parent 0a5941a3ff
commit 758f133ea1
5 changed files with 43 additions and 22 deletions

View File

@@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="RunServerToRemote" type="docker-deploy" factoryName="dockerfile"
server-name="UbuntuStation">
server-name="Oracle-Seoul-0">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="remote-idea"/>

View File

@@ -32,10 +32,7 @@ public class TcpHttpHeaderTemplate {
);
List<String> xrayFakePath = List.of(
"/news/",
"/finance/",
"/sports/",
"/weathers"
"/"
);

View File

@@ -79,7 +79,7 @@ public class XrayOssOperator {
// 存储到特定的桶中
OssConfig ossConfig = ossBackendSelect.one(SUBSCRIBE_OSS_BUCKET_PREFIX);
log.debug(
log.info(
"开始存储 Xray订阅文件 [ {} ] 至OSS [ {} ]中",
subscribeXrayConfigInfo,
ossConfig
@@ -93,8 +93,9 @@ public class XrayOssOperator {
);
if (!deleteObject) {
log.error(
"删除旧的订阅信息失败! 请检查桶 => [{}]",
ossConfig
"删除旧的订阅信息失败! 请检查桶 => [{}] 文件名称为 => [ {} ]",
ossConfig,
subscribeXrayConfigInfo.getXrayConfigFileName()
);
throw new MyRuntimeException();
}
@@ -102,7 +103,7 @@ public class XrayOssOperator {
// 上传新的订阅信息
OctopusObjectSummary objectSummary = ossCoreService.createObject(
ossConfig,
SUBSCRIBE_OSS_BUCKET_PREFIX,
subscribeXrayConfigInfo.getXrayConfigFileName(),
subscribeXrayConfigInfo.getXrayConfigFile()
);

View File

@@ -1,5 +1,6 @@
package io.wdd.func.xray.service;
import io.wdd.common.handler.MyRuntimeException;
import io.wdd.func.xray.beans.node.ProxyNode;
import io.wdd.func.xray.beans.node.XrayConfigInfo;
import io.wdd.func.xray.beans.xray.RoutingObject;
@@ -10,6 +11,7 @@ import io.wdd.func.xray.beans.xray.protocol.inbound.vmess.InboundConfigurationOb
import io.wdd.func.xray.beans.xray.protocol.inbound.vmess.VMESS;
import io.wdd.func.xray.beans.xray.protocol.outbound.Freedom;
import io.wdd.func.xray.beans.xray.protocol.outbound.OutboundConfigurationObject;
import io.wdd.func.xray.beans.xray.protocol.outbound.VmessOutSettings;
import io.wdd.func.xray.beans.xray.share.VmessShare;
import io.wdd.func.xray.beans.xray.transport.InboundObject;
import io.wdd.func.xray.beans.xray.transport.OutboundObject;
@@ -473,25 +475,33 @@ public class XrayCoreServiceImpl implements XrayCoreService {
// 中间节点,需要进行特定的构建
io.wdd.func.xray.beans.xray.protocol.outbound.VMESS vmessOutbound = new io.wdd.func.xray.beans.xray.protocol.outbound.VMESS();
// 深拷贝的问题
ClientObject realClientObject = new ClientObject();
try {
BeanUtils.copyProperties(
vmessOutbound,
OutboundVmessHTTPTemplate
);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
// 解决深拷贝的问题
BeanUtils.copyProperties(
realClientObject,
clientObject
);
} catch (IllegalAccessException | InvocationTargetException e) {
log.error("复制模板OutBound失败");
throw new MyRuntimeException(e);
}
// 设置Tag信息
vmessOutbound.setTag(chainTag);
// 设置出口信息
OutboundConfigurationObject.ServerObject serverObject = vmessOutbound
.getSettings()
.getVnext()
.get(0);
//
OutboundConfigurationObject.ServerObject serverObject = new OutboundConfigurationObject.ServerObject();
// 出口的IP应该为下一节点
serverObject.setAddress(networkPathList
@@ -500,11 +510,23 @@ public class XrayCoreServiceImpl implements XrayCoreService {
// 端口
serverObject.setPort(chainPort);
// 用户
serverObject.setUsers(
List.of(clientObject)
List.of(realClientObject)
);
// 直接新建一个Settings的对象
VmessOutSettings vmessOutSettings = new VmessOutSettings();
vmessOutSettings.setVnext(
List.of(
serverObject
)
);
// 设置 Settings对象
vmessOutbound.setSettings(vmessOutSettings);
outboundObjectList.add(vmessOutbound);
}

View File

@@ -2,7 +2,7 @@
##### environment variables ######
JAVA_OPTS="-Xms2048m -Xmx2048m -Dfile.encoding=utf-8 -Dspring.profiles.active=k3s -Dspring.cloud.nacos.config.group=k3s -Dspring.cloud.nacos.config.extension-configs[0].dataId=common-k3s.yaml -Dspring.cloud.nacos.config.extension-configs[0].group=k3s -Ddebug=false -Dlogging.level.io.wdd.server=info"
JAVA_OPTS="-Xms4096m -Xmx4096m -Dfile.encoding=utf-8 -Dspring.profiles.active=k3s -Dspring.cloud.nacos.config.group=k3s -Dspring.cloud.nacos.config.extension-configs[0].dataId=common-k3s.yaml -Dspring.cloud.nacos.config.extension-configs[0].group=k3s -Ddebug=false -Dlogging.level.io.wdd.server=info"
DOCKER_VERSION="20.10.10"
@@ -558,9 +558,10 @@ BootUPServer() {
FunctionSuccess
colorEcho $BLUE "[ Octopus Server] - start to boot up octopus server!"
docker run -d \
-p 9999:9999 \
-p 29999:9999 \
--name ${OctopusServerContainerName} \
--env JAVA_OPTS="${JAVA_OPTS}" \
-v /octopus-server:/octopus-server \
docker.io/icederce/wdd-octopus-server:latest
FunctionSuccess