启动xray时是否可以强制重启

This commit is contained in:
lys 2026-03-25 10:58:35 +08:00
parent 68c9bb10f5
commit 0325dfedd1
3 changed files with 12 additions and 8 deletions

View File

@ -30,13 +30,15 @@ public class NetNodeConfigController extends BaseController {
* 启动节点Xray
*
* @param nodeId 节点ID
* @param forceRestart 是否强制重启已启动的情况下默认false
*/
@SaCheckPermission("net:node:edit")
@Log(title = "启动Xray", businessType = BusinessType.UPDATE)
@PostMapping("/xray/start/{nodeId}")
public R<XrayStartResponse> startXray(@NotNull(message = "节点ID不能为空")
@PathVariable Long nodeId) {
return R.ok(netNodeConfigService.startXray(nodeId));
@PathVariable Long nodeId,
@RequestParam(defaultValue = "false") boolean forceRestart) {
return R.ok(netNodeConfigService.startXray(nodeId, forceRestart));
}
/**

View File

@ -26,17 +26,19 @@ public interface INetNodeConfigService {
*
* @param node 节点信息
* @param config 节点配置
* @param forceRestart 是否强制重启已启动的情况下
* @return Xray启动请求
*/
XrayStartRequest buildXrayStartRequest(NetNodeVo node, NetNodeConfigVo config);
XrayStartRequest buildXrayStartRequest(NetNodeVo node, NetNodeConfigVo config, boolean forceRestart);
/**
* 启动节点Xray
*
* @param nodeId 节点ID
* @param forceRestart 是否强制重启已启动的情况下
* @return 启动响应
*/
XrayStartResponse startXray(Long nodeId);
XrayStartResponse startXray(Long nodeId, boolean forceRestart);
/**
* 停止节点Xray

View File

@ -57,12 +57,12 @@ public class NetNodeConfigServiceImpl implements INetNodeConfigService {
@Override
public XrayStartRequest buildXrayStartRequest(NetNodeVo node, NetNodeConfigVo config) {
public XrayStartRequest buildXrayStartRequest(NetNodeVo node, NetNodeConfigVo config, boolean forceRestart) {
XrayStartRequest request = new XrayStartRequest();
// 设置内部配置
XrayStartRequest.Internals internals = new XrayStartRequest.Internals();
internals.setForceRestart(false);
internals.setForceRestart(forceRestart);
XrayStartRequest.Hashes hashes = new XrayStartRequest.Hashes();
hashes.setEmptyConfig(generateEmptyConfigHash());
@ -329,7 +329,7 @@ public class NetNodeConfigServiceImpl implements INetNodeConfigService {
}
@Override
public XrayStartResponse startXray(Long nodeId) {
public XrayStartResponse startXray(Long nodeId, boolean forceRestart) {
// 获取节点信息
NetNodeVo node = netNodeMapper.selectVoById(nodeId);
if (node == null) {
@ -341,7 +341,7 @@ public class NetNodeConfigServiceImpl implements INetNodeConfigService {
Assert.notNull(config, "节点配置不存在!");
// 构建启动请求
XrayStartRequest request = buildXrayStartRequest(node, config);
XrayStartRequest request = buildXrayStartRequest(node, config, forceRestart);
// 构建节点URL
String nodeUrl = RemnaNodeHttpClient.buildNodeUrl(node);