更新域名管理功能:添加SSL证书状态字段,支持强制HTTPS设置

This commit is contained in:
suxiang
2024-07-23 14:26:47 +08:00
parent 1145467c11
commit 4a016d8102
8 changed files with 78 additions and 8 deletions
@@ -38,6 +38,11 @@
<span>{{scope.row.updateTime | parseTime('{y}-{m}-{d} {h}:{i}')}}</span>
</template>
</el-table-column>
<el-table-column class-name="status-col" :label="$t('SSL证书状态')" width="110">
<template slot-scope="scope">
<el-tag :type="scope.row.sslStatus | statusFilter">{{scope.row.sslStatus | sslStatusName}}</el-tag>
</template>
</el-table-column>
<el-table-column class-name="status-col" :label="$t('默认域名')" width="100">
<template slot-scope="scope">
<el-tag :type="scope.row.isDefault | statusFilter">{{scope.row.isDefault | httpStatusName}}</el-tag>
@@ -77,6 +82,12 @@
<el-form-item :label="$t('主域名')" prop="domain">
<el-input v-model="temp.domain"></el-input>
</el-form-item>
<el-form-item :label="$t('强制HTTPS')" prop="userId">
<el-select style="width: 280px" class="filter-item" v-model="temp.forceHttps" placeholder="请选择">
<el-option label="开启" :value="1"></el-option>
<el-option label="关闭" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('JKS文件上传')" prop="file">
<el-upload
ref="upload"
@@ -170,8 +181,7 @@
timestamp: new Date(),
title: '',
type: '',
status: 'published',
fileList: []
status: 'published'
},
dialogFormVisible: false,
dialogStatus: '',
@@ -209,6 +219,14 @@
}
return statusMap[status]
},
sslStatusName(status) {
const statusMap = {
1: '已上传',
2: '未上传',
3: '已验证'
}
return statusMap[status]
},
httpStatusName(status) {
const statusMap = {
1: '开启',
@@ -316,7 +334,8 @@
this.temp = {
domain: undefined,
jks: undefined,
keyStorePassword: undefined
keyStorePassword: undefined,
forceHttps: undefined
}
},
handleCreate() {
@@ -3,6 +3,11 @@ package org.dromara.neutrinoproxy.server.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 仅Https状态枚举
* @author Mirac
@@ -13,7 +18,12 @@ import lombok.Getter;
public enum HttpsStatusEnum {
ONLY_HTTPS(1, "仅HTTPS"),
DISABLE_ONLY_HTTPS(2, "关闭仅HTTPS");
private static Map<Integer, HttpsStatusEnum> CACHE = Stream.of(HttpsStatusEnum.values()).collect(Collectors.toMap(HttpsStatusEnum::getStatus, Function.identity()));
private Integer status;
private String desc;
public static HttpsStatusEnum of(Integer status) {
return CACHE.get(status);
}
}
@@ -0,0 +1,25 @@
package org.dromara.neutrinoproxy.server.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 仅Https状态枚举
* @author Mirac
* @date 21/7/2024
*/
@Getter
@AllArgsConstructor
public enum SslStatusEnum {
UPLOADED(1, "已上传"),
NOT_UPLOADED(2, "未上传"),
CERTIFIED(3, "已认证");//预留,用于证书验证
private Integer status;
private String desc;
}
@@ -26,4 +26,9 @@ public class DomainCreateReq {
* KeyStore密码
*/
private String keyStorePassword;
/**
* 强制Https
*/
private Integer forceHttps;
}
@@ -22,4 +22,9 @@ public class DomainUpdateReq {
* KeyStore密码
*/
private String keyStorePassword;
/**
* 强制Https
*/
private Integer forceHttps;
}
@@ -7,6 +7,7 @@ import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.constant.DefaultDomainStatusEnum;
import org.dromara.neutrinoproxy.server.constant.EnableStatusEnum;
import org.dromara.neutrinoproxy.server.constant.HttpsStatusEnum;
import org.dromara.neutrinoproxy.server.constant.SslStatusEnum;
import java.util.Date;
@@ -53,6 +54,12 @@ public class DomainListRes {
*/
private Integer enable;
/**
* SSLStatusEnum
* {@link SslStatusEnum}
*/
private Integer sslStatus;
/**
* 创建时间
*/
@@ -28,10 +28,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.constant.DefaultDomainStatusEnum;
import org.dromara.neutrinoproxy.server.constant.EnableStatusEnum;
import org.dromara.neutrinoproxy.server.constant.HttpsStatusEnum;
import org.dromara.neutrinoproxy.server.constant.OnlineStatusEnum;
import org.dromara.neutrinoproxy.server.constant.*;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainListRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.PortMappingListRes;
@@ -101,6 +98,7 @@ public class DomainNameDO {
public DomainListRes toRes() {
DomainListRes res = new DomainListRes();
BeanUtil.copyProperties(this, res);
res.setSslStatus(this.getJks() == null ? SslStatusEnum.NOT_UPLOADED.getStatus() : SslStatusEnum.UPLOADED.getStatus());
return res;
}
}
@@ -94,7 +94,7 @@ public class DomainService {
Date now = new Date();
domainNameDO.setDomain(req.getDomain());
domainNameDO.setIsDefault(DefaultDomainStatusEnum.DISABLE.getStatus());
domainNameDO.setForceHttps(HttpsStatusEnum.DISABLE_ONLY_HTTPS.getStatus());
domainNameDO.setForceHttps(req.getForceHttps() != null ? HttpsStatusEnum.of(req.getForceHttps()).getStatus(): HttpsStatusEnum.DISABLE_ONLY_HTTPS.getStatus());
domainNameDO.setUserId(userId);
domainNameDO.setEnable(EnableStatusEnum.ENABLE.getStatus());
domainNameDO.setCreateTime(now);
@@ -132,6 +132,7 @@ public class DomainService {
}
updateWrapper.set(DomainNameDO::getDomain, req.getDomain());
updateWrapper.set(DomainNameDO::getUpdateTime, new Date());
updateWrapper.set(req.getForceHttps() != null, DomainNameDO::getForceHttps, req.getForceHttps());
int update = domainMapper.update(updateWrapper);
System.out.println(update);
}