From 9f82faee71599c868053e6fed261082300d1a961 Mon Sep 17 00:00:00 2001
From: xiaojie <550345579@qq.com>
Date: Thu, 7 Mar 2024 17:37:25 +0800
Subject: [PATCH] =?UTF-8?q?=E5=9F=9F=E5=90=8D=E8=A7=A3=E6=9E=90-=E6=9C=8D?=
=?UTF-8?q?=E5=8A=A1=E7=AB=AF=E7=9B=B4=E6=8E=A5=E8=BD=AC=E5=8F=91=EF=BC=8C?=
=?UTF-8?q?=E6=97=A0=E9=9C=80=E9=83=A8=E7=BD=B2=E5=AE=A2=E6=88=B7=E7=AB=AF?=
=?UTF-8?q?=E5=BE=85=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/views/proxy/portMapping.vue | 22 ++++----
.../server/dal/entity/DomainMappingDO.java | 1 +
.../server/proxy/domain/ProxyMapping.java | 27 ++++++++--
.../server/service/DomainMappingService.java | 40 +++++++--------
.../server/service/PortMappingService.java | 9 ++--
.../server/service/VisitorChannelService.java | 50 ++++++++++---------
.../main/resources/sql/h2/init-structure.sql | 1 -
.../resources/sql/h2/port_mapping.data.sql | 12 ++---
.../sql/mariadb/port_mapping.data.sql | 12 ++---
.../resources/sql/mysql/port_mapping.data.sql | 12 ++---
10 files changed, 104 insertions(+), 82 deletions(-)
diff --git a/neutrino-proxy-admin/src/views/proxy/portMapping.vue b/neutrino-proxy-admin/src/views/proxy/portMapping.vue
index 25e4626c..c61d1651 100644
--- a/neutrino-proxy-admin/src/views/proxy/portMapping.vue
+++ b/neutrino-proxy-admin/src/views/proxy/portMapping.vue
@@ -49,11 +49,11 @@
{{ scope.row.protocal }}
-
+
{{ scope.row.serverPort }}
@@ -117,22 +117,22 @@
-
-
+
+
+ @selectedData="selectedFeeItem" placeholder="请选择" :width="500" :disabled="dialogStatus === 'update'" />
-
+
-
-
+
@@ -162,7 +162,7 @@
-
+
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/dal/entity/DomainMappingDO.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/dal/entity/DomainMappingDO.java
index a8c66f96..9a00e1da 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/dal/entity/DomainMappingDO.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/dal/entity/DomainMappingDO.java
@@ -116,4 +116,5 @@ public class DomainMappingDO {
BeanUtil.copyProperties(this, dto);
return dto;
}
+
}
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/domain/ProxyMapping.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/domain/ProxyMapping.java
index 8f4f1bf7..8db6e2c3 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/domain/ProxyMapping.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/domain/ProxyMapping.java
@@ -16,6 +16,10 @@ import java.util.List;
@Accessors(chain = true)
@Data
public class ProxyMapping {
+ /**
+ * licenseId
+ */
+ private Integer licenseId;
/**
* 服务端端口
*/
@@ -29,7 +33,18 @@ public class ProxyMapping {
*/
private String protocal;
- public static List buildList(List portMappingList) {
+
+ public ProxyMapping() {
+ }
+
+ public ProxyMapping(Integer licenseId, Integer serverPort, String lanInfo, String protocal) {
+ this.licenseId = licenseId;
+ this.serverPort = serverPort;
+ this.lanInfo = lanInfo;
+ this.protocal = protocal;
+ }
+
+ public static List buildList(List portMappingList) {
List list = new ArrayList<>();
if (CollectionUtil.isEmpty(portMappingList)) {
return list;
@@ -42,9 +57,13 @@ public class ProxyMapping {
public static ProxyMapping build(PortMappingDO portMappingDO) {
return new ProxyMapping()
- .setServerPort(portMappingDO.getServerPort())
- .setLanInfo(String.format("%s:%s", portMappingDO.getClientIp(), portMappingDO.getClientPort()))
- .setProtocal(portMappingDO.getProtocal());
+ .setLicenseId(portMappingDO.getLicenseId())
+ .setServerPort(portMappingDO.getServerPort())
+ .setLanInfo(String.format("%s:%s", portMappingDO.getClientIp(), portMappingDO.getClientPort()))
+ .setProtocal(portMappingDO.getProtocal());
}
+
+
+
}
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/DomainMappingService.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/DomainMappingService.java
index 5b95264a..c2e9e2f5 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/DomainMappingService.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/DomainMappingService.java
@@ -32,6 +32,7 @@ import org.dromara.neutrinoproxy.server.dal.PortPoolMapper;
import org.dromara.neutrinoproxy.server.dal.UserMapper;
import org.dromara.neutrinoproxy.server.dal.entity.*;
import org.dromara.neutrinoproxy.server.proxy.domain.DomainMapping;
+import org.dromara.neutrinoproxy.server.proxy.domain.ProxyMapping;
import org.dromara.neutrinoproxy.server.service.bo.FlowLimitBO;
import org.dromara.neutrinoproxy.server.util.ParamCheckUtil;
import org.dromara.neutrinoproxy.server.util.PortAvailableUtil;
@@ -42,6 +43,7 @@ import org.noear.solon.annotation.Init;
import org.noear.solon.annotation.Inject;
import org.noear.solon.core.bean.LifecycleBean;
import org.noear.solon.core.runtime.NativeDetector;
+import org.noear.solon.data.annotation.Tran;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -131,40 +133,38 @@ public class DomainMappingService implements LifecycleBean {
return PageInfo.of(respList, page.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
- public PortMappingCreateRes modify(DomainMappingDO domainMappingDO) {
- LicenseDO licenseDO = licenseMapper.findById(domainMappingDO.getLicenseId());
+ @Tran
+ public PortMappingCreateRes modify(DomainMappingDO dmd) {
+ LicenseDO licenseDO = licenseMapper.findById(dmd.getLicenseId());
ParamCheckUtil.checkNotNull(licenseDO, ExceptionConstant.LICENSE_NOT_EXIST);
if (!SystemContextHolder.isAdmin()) {
// 临时处理,如果当前用户不是管理员,则操作userId不能为1
ParamCheckUtil.checkExpression(!licenseDO.getUserId().equals(1), ExceptionConstant.NO_PERMISSION_VISIT);
}
- if (null != domainMappingDO.getId()) { // 编辑
- ParamCheckUtil.checkExpression(!domainMappingMapper.checkRepeatByDomain(domainMappingDO.getDomain(), new HashSet<>(){{add(domainMappingDO.getId());}}), ExceptionConstant.DONAME_CONNOT_REPEAT);
+ if (null != dmd.getId()) { // 编辑
+ ParamCheckUtil.checkExpression(!domainMappingMapper.checkRepeatByDomain(dmd.getDomain(), new HashSet<>(){{add(dmd.getId());}}), ExceptionConstant.DONAME_CONNOT_REPEAT);
Date now = new Date();
- domainMappingDO.setEnable(EnableStatusEnum.ENABLE.getStatus());
- domainMappingDO.setUpdateTime(now);
- domainMappingMapper.updateById(domainMappingDO);
+ dmd.setEnable(EnableStatusEnum.ENABLE.getStatus());
+ dmd.setUpdateTime(now);
+ domainMappingMapper.updateById(dmd);
} else { // 新增
- ParamCheckUtil.checkExpression(!domainMappingMapper.checkRepeatByDomain(domainMappingDO.getDomain(), null), ExceptionConstant.DONAME_CONNOT_REPEAT);
+ ParamCheckUtil.checkExpression(!domainMappingMapper.checkRepeatByDomain(dmd.getDomain(), null), ExceptionConstant.DONAME_CONNOT_REPEAT);
Date now = new Date();
- domainMappingDO.setIsOnline(OnlineStatusEnum.OFFLINE.getStatus());
- domainMappingDO.setEnable(EnableStatusEnum.ENABLE.getStatus());
- domainMappingDO.setCreateTime(now);
- domainMappingDO.setUpdateTime(now);
- domainMappingMapper.insert(domainMappingDO);
+ dmd.setEnable(EnableStatusEnum.ENABLE.getStatus());
+ dmd.setCreateTime(now);
+ dmd.setUpdateTime(now);
+ domainMappingMapper.insert(dmd);
}
// 更新VisitorChannel
-// visitorChannelService.addVisitorChannelByPortMapping(domainMappingDO);
+ visitorChannelService.addVisitorChannelByProxyMapping(new ProxyMapping(dmd.getLicenseId(),dmd.getId(),dmd.getTargetPath(), NetworkProtocolEnum.HTTP.getDesc()));
// 更新域名映射
-// ProxyUtil.setSubdomainToServerPort(domainMappingDO.getDomain(), domainMappingDO.getServerPort());
- ProxyUtil.domainMapingMap.put(domainMappingDO.getDomain(), new DomainMapping(domainMappingDO.getId(), domainMappingDO.getLicenseId(), domainMappingDO.getDomain(), domainMappingDO.getTargetPath()));
-
+ ProxyUtil.domainMapingMap.put(dmd.getDomain(), new DomainMapping(dmd.getId(), dmd.getLicenseId(), dmd.getDomain(), dmd.getTargetPath()));
return new PortMappingCreateRes();
}
-
+ @Tran
public PortMappingUpdateEnableStatusRes updateEnableStatus(PortMappingUpdateEnableStatusReq req) {
DomainMappingDO domainMappingDO = domainMappingMapper.findById(req.getId());
ParamCheckUtil.checkNotNull(domainMappingDO, ExceptionConstant.PORT_MAPPING_NOT_EXIST);
@@ -180,9 +180,9 @@ public class DomainMappingService implements LifecycleBean {
// 更新VisitorChannel
domainMappingDO.setEnable(req.getEnable());
if (EnableStatusEnum.ENABLE == EnableStatusEnum.of(req.getEnable())) {
-// visitorChannelService.addVisitorChannelByPortMapping(domainMappingDO);
+ visitorChannelService.addVisitorChannelByProxyMapping(new ProxyMapping(domainMappingDO.getLicenseId(),domainMappingDO.getId(),domainMappingDO.getTargetPath(), NetworkProtocolEnum.HTTP.getDesc()));
} else {
-// visitorChannelService.removeVisitorChannelByPortMapping(domainMappingDO);
+ visitorChannelService.removeVisitorChannelByProxyMapping(new ProxyMapping(domainMappingDO.getLicenseId(),domainMappingDO.getId(),domainMappingDO.getTargetPath(), NetworkProtocolEnum.HTTP.getDesc()));
}
return new PortMappingUpdateEnableStatusRes();
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/PortMappingService.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/PortMappingService.java
index 3b5d44fd..934a3638 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/PortMappingService.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/PortMappingService.java
@@ -39,6 +39,7 @@ import org.dromara.neutrinoproxy.server.dal.entity.LicenseDO;
import org.dromara.neutrinoproxy.server.dal.entity.PortMappingDO;
import org.dromara.neutrinoproxy.server.dal.entity.PortPoolDO;
import org.dromara.neutrinoproxy.server.dal.entity.UserDO;
+import org.dromara.neutrinoproxy.server.proxy.domain.ProxyMapping;
import org.dromara.neutrinoproxy.server.service.bo.FlowLimitBO;
import org.dromara.neutrinoproxy.server.util.ParamCheckUtil;
import org.dromara.neutrinoproxy.server.util.ProxyUtil;
@@ -175,7 +176,7 @@ public class PortMappingService implements LifecycleBean {
portMappingDO.setUpdateTime(now);
portMappingMapper.insert(portMappingDO);
// 更新VisitorChannel
- visitorChannelService.addVisitorChannelByPortMapping(portMappingDO);
+ visitorChannelService.addVisitorChannelByProxyMapping(ProxyMapping.build(portMappingDO));
// 更新域名映射
if (NetworkProtocolEnum.isHttp(portMappingDO.getProtocal()) && StrUtil.isNotBlank(proxyConfig.getServer().getTcp().getDomainName()) && StrUtil.isNotBlank(portMappingDO.getSubdomain())) {
ProxyUtil.setSubdomainToServerPort(portMappingDO.getSubdomain(), portMappingDO.getServerPort());
@@ -294,9 +295,9 @@ public class PortMappingService implements LifecycleBean {
// 更新VisitorChannel
portMappingDO.setEnable(req.getEnable());
if (EnableStatusEnum.ENABLE == EnableStatusEnum.of(req.getEnable())) {
- visitorChannelService.addVisitorChannelByPortMapping(portMappingDO);
+ visitorChannelService.addVisitorChannelByProxyMapping(ProxyMapping.build(portMappingDO));
} else {
- visitorChannelService.removeVisitorChannelByPortMapping(portMappingDO);
+ visitorChannelService.removeVisitorChannelByProxyMapping(ProxyMapping.build(portMappingDO));
}
return new PortMappingUpdateEnableStatusRes();
@@ -315,7 +316,7 @@ public class PortMappingService implements LifecycleBean {
portMappingMapper.deleteById(id);
// 更新VisitorChannel
- visitorChannelService.removeVisitorChannelByPortMapping(portMappingDO);
+ visitorChannelService.removeVisitorChannelByProxyMapping(ProxyMapping.build(portMappingDO));
// 更新域名映射
if (NetworkProtocolEnum.isHttp(portMappingDO.getProtocal()) && StrUtil.isNotBlank(portMappingDO.getSubdomain())) {
ProxyUtil.removeSubdomainToServerPort(portMappingDO.getSubdomain());
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/VisitorChannelService.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/VisitorChannelService.java
index a2c51abf..799c8eba 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/VisitorChannelService.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/VisitorChannelService.java
@@ -90,9 +90,9 @@ public class VisitorChannelService {
EnableStatusEnum enableStatusEnum = EnableStatusEnum.of(enable);
for (PortMappingDO portMappingDO : portMappingDOList) {
if (EnableStatusEnum.DISABLE == enableStatusEnum) {
- removeVisitorChannelByPortMapping(portMappingDO);
+ removeVisitorChannelByProxyMapping(ProxyMapping.build(portMappingDO));
} else if (EnableStatusEnum.ENABLE == EnableStatusEnum.of(portMappingDO.getEnable())) {
- addVisitorChannelByPortMapping(portMappingDO);
+ addVisitorChannelByProxyMapping(ProxyMapping.build(portMappingDO));
}
}
}
@@ -135,9 +135,9 @@ public class VisitorChannelService {
if (!CollectionUtil.isEmpty(portMappingDOList)) {
for (PortMappingDO portMappingDO : portMappingDOList) {
if (EnableStatusEnum.DISABLE == enableStatusEnum) {
- removeVisitorChannelByPortMapping(portMappingDO);
+ removeVisitorChannelByProxyMapping(ProxyMapping.build(portMappingDO));
} else if (EnableStatusEnum.ENABLE == EnableStatusEnum.of(portMappingDO.getEnable())) {
- addVisitorChannelByPortMapping(portMappingDO);
+ addVisitorChannelByProxyMapping(ProxyMapping.build(portMappingDO));
}
}
}
@@ -153,60 +153,63 @@ public class VisitorChannelService {
if (null == oldPortMappingDO || null == newPortMappingDO) {
return;
}
- removeVisitorChannelByPortMapping(oldPortMappingDO);
- addVisitorChannelByPortMapping(newPortMappingDO);
+
+ removeVisitorChannelByProxyMapping(ProxyMapping.build(oldPortMappingDO));
+ addVisitorChannelByProxyMapping(ProxyMapping.build(newPortMappingDO));
+
}
+
/**
* 新增VisitorChannel
* 触发时机:新增端口映射、启用端口映射
- * @param portMappingDO
+ * @param proxyMapping
*/
- public void addVisitorChannelByPortMapping(PortMappingDO portMappingDO) {
- if (null == portMappingDO) {
+ public void addVisitorChannelByProxyMapping(ProxyMapping proxyMapping) {
+ if (null == proxyMapping) {
return;
}
- Channel cmdChannel = ProxyUtil.getCmdChannelByLicenseId(portMappingDO.getLicenseId());
+ Channel cmdChannel = ProxyUtil.getCmdChannelByLicenseId(proxyMapping.getLicenseId());
if (null == cmdChannel) {
// 如果不存在有效的cmdChannel,则无需更新VisitorChannel
return;
}
// 判断端口映射是否启用
- if (EnableStatusEnum.DISABLE != EnableStatusEnum.of(portMappingDO.getEnable())) {
- LicenseDO licenseDO = licenseMapper.findById(portMappingDO.getLicenseId());
+// if (EnableStatusEnum.DISABLE != EnableStatusEnum.of(portMappingDO.getEnable())) {
+ LicenseDO licenseDO = licenseMapper.findById(proxyMapping.getLicenseId());
// 判断license是否启用
if (null != licenseDO && EnableStatusEnum.ENABLE == EnableStatusEnum.of(licenseDO.getEnable())) {
UserDO userDO = userMapper.findById(licenseDO.getUserId());
// 判断用户是否启用
if (null != userDO && EnableStatusEnum.ENABLE == EnableStatusEnum.of(userDO.getEnable())) {
- PortPoolDO portPoolDO = portPoolMapper.findByPort(portMappingDO.getServerPort());
+ PortPoolDO portPoolDO = portPoolMapper.findByPort(proxyMapping.getServerPort());
// 判断端口池是否启用
if (null != portPoolDO && EnableStatusEnum.ENABLE == EnableStatusEnum.of(portPoolDO.getEnable())) {
// 未删除且未禁用,则开启代理
- ProxyUtil.addProxyInfo(portMappingDO.getLicenseId(), ProxyMapping.build(portMappingDO));
- ProxyUtil.addCmdChannel(portMappingDO.getLicenseId(), cmdChannel, Sets.newHashSet(portMappingDO.getServerPort()));
- startUserPortServer(ProxyUtil.getAttachInfo(cmdChannel), Lists.newArrayList(ProxyMapping.build(portMappingDO)));
+ ProxyUtil.addProxyInfo(proxyMapping.getLicenseId(), proxyMapping);
+ ProxyUtil.addCmdChannel(proxyMapping.getLicenseId(), cmdChannel, Sets.newHashSet(proxyMapping.getServerPort()));
+ startUserPortServer(ProxyUtil.getAttachInfo(cmdChannel), Lists.newArrayList(proxyMapping));
}
}
}
- }
+// }
}
/**
* 删除VisitorChannel
* 触发时机:删除端口映射、禁用端口映射
- * @param portMappingDO
+ * @param proxyMapping
*/
- public void removeVisitorChannelByPortMapping(PortMappingDO portMappingDO) {
- if (null == portMappingDO) {
+ public void removeVisitorChannelByProxyMapping(ProxyMapping proxyMapping) {
+ if (null == proxyMapping) {
return;
}
- Channel cmdChannel = ProxyUtil.getCmdChannelByLicenseId(portMappingDO.getLicenseId());
+ Channel cmdChannel = ProxyUtil.getCmdChannelByLicenseId(proxyMapping.getLicenseId());
if (null == cmdChannel) {
// 如果不存在有效的cmdChannel,则无需更新VisitorChannel
return;
}
- Channel visitorChannel = ProxyUtil.getVisitorChannelByServerPort(portMappingDO.getServerPort());
+ Channel visitorChannel = ProxyUtil.getVisitorChannelByServerPort(proxyMapping.getServerPort());
if (null != visitorChannel) {
Channel proxyChannel = visitorChannel.attr(Constants.NEXT_CHANNEL).get();
if (null != proxyChannel) {
@@ -215,14 +218,13 @@ public class VisitorChannelService {
// TODO 此处如果时UDP的visitorChannel,则不能close,后续重构考虑
// visitorChannel.close();
}
- ProxyUtil.removeProxyInfo(portMappingDO.getServerPort());
+ ProxyUtil.removeProxyInfo(proxyMapping.getServerPort());
}
private void startUserPortServer(CmdChannelAttachInfo cmdChannelAttachInfo, List proxyMappingList) {
if (CollectionUtil.isEmpty(proxyMappingList)) {
return;
}
-
for (ProxyMapping proxyMapping : proxyMappingList) {
// if (EnableStatusEnum.DISABLE.getStatus().equals(proxyMapping.getEnable())) {
// // 端口映射被禁用了,忽略 TODO 映射没被禁用,但端口被禁用了也需要处理 修改方案 20240306查询时就处理了【端口禁用】和【端口映射禁用】的情况,待验证
diff --git a/neutrino-proxy-server/src/main/resources/sql/h2/init-structure.sql b/neutrino-proxy-server/src/main/resources/sql/h2/init-structure.sql
index afd00586..4ad4dda8 100644
--- a/neutrino-proxy-server/src/main/resources/sql/h2/init-structure.sql
+++ b/neutrino-proxy-server/src/main/resources/sql/h2/init-structure.sql
@@ -97,7 +97,6 @@ CREATE TABLE IF NOT EXISTS `port_mapping` (
`id` INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
`license_id` INTEGER(20) NOT NULL,
`protocal` VARCHAR(10) NOT NULL DEFAULT 'TCP',
- `subdomain` VARCHAR(50) DEFAULT NULL,
`server_port` INTEGER NOT NULL,
`client_ip` VARCHAR(20) NOT NULL,
`client_port` INTEGER NOT NULL,
diff --git a/neutrino-proxy-server/src/main/resources/sql/h2/port_mapping.data.sql b/neutrino-proxy-server/src/main/resources/sql/h2/port_mapping.data.sql
index 403143a1..461da66d 100644
--- a/neutrino-proxy-server/src/main/resources/sql/h2/port_mapping.data.sql
+++ b/neutrino-proxy-server/src/main/resources/sql/h2/port_mapping.data.sql
@@ -1,7 +1,7 @@
#port_mapping
-INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `subdomain`,`client_ip`, `client_port`, `is_online`, `enable`,`description`,`create_time`, `update_time`) VALUES
-(1, 1, 9101, 'HTTP', 'test1', '127.0.0.1', 8080, 2, 1,'test1', now(), now());
-INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `subdomain`, `client_ip`, `client_port`, `is_online`, `enable`,`description`, `create_time`, `update_time`) VALUES
-(2, 1, 9102, 'TCP', '', '127.0.0.1', 3306, 2, 1,'test2', now(), now());
-INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `subdomain`, `client_ip`, `client_port`, `is_online`, `enable`,`description`, `create_time`, `update_time`) VALUES
-(3, 1, 9103, 'HTTP', 'test2', '127.0.0.1', 8081, 2, 1,'test3', now(), now());
\ No newline at end of file
+INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `client_ip`, `client_port`, `is_online`, `enable`,`description`,`create_time`, `update_time`) VALUES
+(1, 1, 9101, 'HTTP', '127.0.0.1', 8080, 2, 1,'test1', now(), now());
+INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `client_ip`, `client_port`, `is_online`, `enable`,`description`, `create_time`, `update_time`) VALUES
+(2, 1, 9102, 'TCP', '127.0.0.1', 3306, 2, 1,'test2', now(), now());
+INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `client_ip`, `client_port`, `is_online`, `enable`,`description`, `create_time`, `update_time`) VALUES
+(3, 1, 9103, 'HTTP', '127.0.0.1', 8081, 2, 1,'test3', now(), now());
\ No newline at end of file
diff --git a/neutrino-proxy-server/src/main/resources/sql/mariadb/port_mapping.data.sql b/neutrino-proxy-server/src/main/resources/sql/mariadb/port_mapping.data.sql
index 9063ecea..461da66d 100644
--- a/neutrino-proxy-server/src/main/resources/sql/mariadb/port_mapping.data.sql
+++ b/neutrino-proxy-server/src/main/resources/sql/mariadb/port_mapping.data.sql
@@ -1,7 +1,7 @@
#port_mapping
-INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `subdomain`, `client_ip`, `client_port`, `is_online`, `enable`, `create_time`, `update_time`) VALUES
-(1, 1, 9101, 'HTTP', 'test1', '127.0.0.1', 8080, 2, 1, now(), now());
-INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `subdomain`, `client_ip`, `client_port`, `is_online`, `enable`, `create_time`, `update_time`) VALUES
-(2, 1, 9102, 'TCP', '', '127.0.0.1', 3306, 2, 1, now(), now());
-INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `subdomain`, `client_ip`, `client_port`, `is_online`, `enable`, `create_time`, `update_time`) VALUES
-(3, 1, 9103, 'HTTP', 'test2', '127.0.0.1', 8081, 2, 1, now(), now());
+INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `client_ip`, `client_port`, `is_online`, `enable`,`description`,`create_time`, `update_time`) VALUES
+(1, 1, 9101, 'HTTP', '127.0.0.1', 8080, 2, 1,'test1', now(), now());
+INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `client_ip`, `client_port`, `is_online`, `enable`,`description`, `create_time`, `update_time`) VALUES
+(2, 1, 9102, 'TCP', '127.0.0.1', 3306, 2, 1,'test2', now(), now());
+INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `client_ip`, `client_port`, `is_online`, `enable`,`description`, `create_time`, `update_time`) VALUES
+(3, 1, 9103, 'HTTP', '127.0.0.1', 8081, 2, 1,'test3', now(), now());
\ No newline at end of file
diff --git a/neutrino-proxy-server/src/main/resources/sql/mysql/port_mapping.data.sql b/neutrino-proxy-server/src/main/resources/sql/mysql/port_mapping.data.sql
index 9063ecea..461da66d 100644
--- a/neutrino-proxy-server/src/main/resources/sql/mysql/port_mapping.data.sql
+++ b/neutrino-proxy-server/src/main/resources/sql/mysql/port_mapping.data.sql
@@ -1,7 +1,7 @@
#port_mapping
-INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `subdomain`, `client_ip`, `client_port`, `is_online`, `enable`, `create_time`, `update_time`) VALUES
-(1, 1, 9101, 'HTTP', 'test1', '127.0.0.1', 8080, 2, 1, now(), now());
-INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `subdomain`, `client_ip`, `client_port`, `is_online`, `enable`, `create_time`, `update_time`) VALUES
-(2, 1, 9102, 'TCP', '', '127.0.0.1', 3306, 2, 1, now(), now());
-INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `subdomain`, `client_ip`, `client_port`, `is_online`, `enable`, `create_time`, `update_time`) VALUES
-(3, 1, 9103, 'HTTP', 'test2', '127.0.0.1', 8081, 2, 1, now(), now());
+INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `client_ip`, `client_port`, `is_online`, `enable`,`description`,`create_time`, `update_time`) VALUES
+(1, 1, 9101, 'HTTP', '127.0.0.1', 8080, 2, 1,'test1', now(), now());
+INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `client_ip`, `client_port`, `is_online`, `enable`,`description`, `create_time`, `update_time`) VALUES
+(2, 1, 9102, 'TCP', '127.0.0.1', 3306, 2, 1,'test2', now(), now());
+INSERT INTO port_mapping(`id`, `license_id`, `server_port`, `protocal`, `client_ip`, `client_port`, `is_online`, `enable`,`description`, `create_time`, `update_time`) VALUES
+(3, 1, 9103, 'HTTP', '127.0.0.1', 8081, 2, 1,'test3', now(), now());
\ No newline at end of file