mirror of https://github.com/bjdgyc/anylink.git
添加自定义首页 状态码
This commit is contained in:
parent
11f39d0b78
commit
8777501391
|
@ -1,7 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
rm -rf web/ui server/ui
|
||||||
|
|
||||||
docker run -it --rm -v $PWD/web:/app -w /app node:16-alpine \
|
docker run -it --rm -v $PWD/web:/app -w /app node:16-alpine \
|
||||||
sh -c "yarn install --registry=https://registry.npmmirror.com && yarn run build"
|
sh -c "yarn install --registry=https://registry.npmmirror.com && yarn run build"
|
||||||
|
|
||||||
rm -rf server/ui
|
|
||||||
cp -r web/ui server/ui
|
cp -r web/ui server/ui
|
||||||
|
|
|
@ -0,0 +1,165 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset=UTF-8">
|
||||||
|
<title id="pageTitle">客户端下载</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
background-color: #fff;
|
||||||
|
background-image: linear-gradient(0deg, transparent 24%, rgba(207, 207, 207, 0.2) 25%, rgba(207, 207, 207, 0.2) 26%, transparent 27%, transparent 74%, rgba(207, 207, 207, 0.2) 75%, rgba(207, 207, 207, 0.2) 76%, transparent 77%, transparent),
|
||||||
|
linear-gradient(90deg, transparent 24%, rgba(207, 207, 207, 0.2) 25%, rgba(207, 207, 207, 0.2) 26%, transparent 27%, transparent 74%, rgba(207, 207, 207, 0.2) 75%, rgba(207, 207, 207, 0.2) 76%, transparent 77%, transparent);
|
||||||
|
background-size: 50px 50px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box {
|
||||||
|
background-color: #ffffff;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||||
|
position: relative;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
max-width: 550px;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #333;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 28px;
|
||||||
|
margin: 0 0 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: #666;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
background-color: #ddd;
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 44px;
|
||||||
|
padding: 9px 42px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 16px;
|
||||||
|
-webkit-transition: background-color 0.25s ease-out 0s;
|
||||||
|
-moz-transition: background-color 0.25s ease-out 0s;
|
||||||
|
transition: background-color 0.25s ease-out 0s;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:hover {
|
||||||
|
background-color: #CCC;
|
||||||
|
color: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:active {
|
||||||
|
background-color: #666;
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blue {
|
||||||
|
background-color: #007BFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.deep-blue {
|
||||||
|
background-color: #0056B3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.green {
|
||||||
|
background-color: #28A745;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grey {
|
||||||
|
background-color: #6C757D;
|
||||||
|
}
|
||||||
|
|
||||||
|
.black {
|
||||||
|
background-color: #343A40;
|
||||||
|
}
|
||||||
|
|
||||||
|
.light-blue {
|
||||||
|
background-color: #17A2B8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-grey {
|
||||||
|
background-color: #495057;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
h2 {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
padding: 7px 35px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="app">
|
||||||
|
<div id="box">
|
||||||
|
<h2 id="title">请选择对应平台下载</h2>
|
||||||
|
<p id="windowsTab">Windows 系统</p>
|
||||||
|
<a id="linkWindowsX86_64" class="button blue" href="#">Win X86_64</a>
|
||||||
|
<a id="linkWindowsARM64" class="button deep-blue" href="#">Win ARM64</a>
|
||||||
|
|
||||||
|
<p id="mobileTab">移动端</p>
|
||||||
|
<a id="linkAndroid" class="button green" href="#">Android</a>
|
||||||
|
<a id="linkIphone" class="button grey" href="#" target="_blank">iPhone</a>
|
||||||
|
|
||||||
|
<p id="macOSTab">MacOS 系统</p>
|
||||||
|
<a id="linkMacos" class="button black" href="#">Mac Intel</a>
|
||||||
|
<a id="linkMacosARM64" class="button blue" href="#">Mac ARM64</a>
|
||||||
|
|
||||||
|
<p id="totpTab">TOTP 移动客户端</p>
|
||||||
|
<a id="linkTotpAndroid" class="button light-blue" href="#">Android</a>
|
||||||
|
<a id="linkTotpIphone" class="button dark-grey" href="#" target="_blank">iPhone</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
const data = {
|
||||||
|
links: {
|
||||||
|
windowsX86_64: '/files/anyconnect-win-4.10.05111.msi',
|
||||||
|
windowsARM64: '/files/anyconnect-win-4.10.05111.msi',
|
||||||
|
android: '/files/CiscoSecureClientAnyConnect_v5.0.00247.apk',
|
||||||
|
iphone: 'https://apps.apple.com/cn/app/cisco-anyconnect/id1135064690',
|
||||||
|
macosIntel: '/files/anyconnect-macos-4.10.05111.dmg',
|
||||||
|
macosARM64: '/files/anyconnect-macos-4.10.05111.dmg',
|
||||||
|
totpAndroid: '/files/Authenticator_v5.10_apkpure.com.apk',
|
||||||
|
totpIphone: 'https://apps.apple.com/cn/app/google-authenticator/id388497605',
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
window.onload = function () {
|
||||||
|
document.getElementById('linkWindowsX86_64').href = data.links.windowsX86_64;
|
||||||
|
document.getElementById('linkWindowsARM64').href = data.links.windowsARM64;
|
||||||
|
document.getElementById('linkAndroid').href = data.links.android;
|
||||||
|
document.getElementById('linkIphone').href = data.links.iphone;
|
||||||
|
document.getElementById('linkMacos').href = data.links.macosIntel;
|
||||||
|
document.getElementById('linkMacosARM64').href = data.links.macosARM64;
|
||||||
|
document.getElementById('linkTotpAndroid').href = data.links.totpAndroid;
|
||||||
|
document.getElementById('linkTotpIphone').href = data.links.totpIphone;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -1,6 +1,7 @@
|
||||||
package dbdata
|
package dbdata
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bjdgyc/anylink/base"
|
"github.com/bjdgyc/anylink/base"
|
||||||
|
@ -121,6 +122,7 @@ func addInitData() error {
|
||||||
other := &SettingOther{
|
other := &SettingOther{
|
||||||
LinkAddr: "vpn.xx.com",
|
LinkAddr: "vpn.xx.com",
|
||||||
Banner: "您已接入公司网络,请按照公司规定使用。\n请勿进行非工作下载及视频行为!",
|
Banner: "您已接入公司网络,请按照公司规定使用。\n请勿进行非工作下载及视频行为!",
|
||||||
|
Homecode: http.StatusOK,
|
||||||
Homeindex: "AnyLink 是一个企业级远程办公 sslvpn 的软件,可以支持多人同时在线使用。",
|
Homeindex: "AnyLink 是一个企业级远程办公 sslvpn 的软件,可以支持多人同时在线使用。",
|
||||||
AccountMail: accountMail,
|
AccountMail: accountMail,
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ type SettingAuditLog struct {
|
||||||
type SettingOther struct {
|
type SettingOther struct {
|
||||||
LinkAddr string `json:"link_addr"`
|
LinkAddr string `json:"link_addr"`
|
||||||
Banner string `json:"banner"`
|
Banner string `json:"banner"`
|
||||||
|
Homecode int `json:"homecode"`
|
||||||
Homeindex string `json:"homeindex"`
|
Homeindex string `json:"homeindex"`
|
||||||
AccountMail string `json:"account_mail"`
|
AccountMail string `json:"account_mail"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,16 @@ func LinkHome(w http.ResponseWriter, r *http.Request) {
|
||||||
if err := dbdata.SettingGet(index); err != nil {
|
if err := dbdata.SettingGet(index); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
w.WriteHeader(http.StatusOK)
|
|
||||||
if index.Homeindex == "" {
|
if index.Homecode > 0 {
|
||||||
index.Homeindex = "AnyLink 是一个企业级远程办公 SSL VPN 软件,可以支持多人同时在线使用。"
|
w.WriteHeader(index.Homecode)
|
||||||
|
} else {
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if index.Homeindex == "" {
|
||||||
|
// index.Homeindex = "AnyLink 是一个企业级远程办公 SSL VPN 软件,可以支持多人同时在线使用。"
|
||||||
|
// }
|
||||||
fmt.Fprintln(w, index.Homeindex)
|
fmt.Fprintln(w, index.Homeindex)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,9 @@ func checkTun() {
|
||||||
// 添加注释
|
// 添加注释
|
||||||
natRule := []string{"-s", base.Cfg.Ipv4CIDR, "-o", base.Cfg.Ipv4Master, "-m", "comment",
|
natRule := []string{"-s", base.Cfg.Ipv4CIDR, "-o", base.Cfg.Ipv4Master, "-m", "comment",
|
||||||
"--comment", "AnyLink", "-j", "MASQUERADE"}
|
"--comment", "AnyLink", "-j", "MASQUERADE"}
|
||||||
|
if base.InContainer {
|
||||||
|
natRule = []string{"-s", base.Cfg.Ipv4CIDR, "-o", base.Cfg.Ipv4Master, "-j", "MASQUERADE"}
|
||||||
|
}
|
||||||
err = ipt.InsertUnique("nat", "POSTROUTING", 1, natRule...)
|
err = ipt.InsertUnique("nat", "POSTROUTING", 1, natRule...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
base.Error(err)
|
base.Error(err)
|
||||||
|
@ -58,6 +61,9 @@ func checkTun() {
|
||||||
|
|
||||||
// 添加注释
|
// 添加注释
|
||||||
forwardRule := []string{"-m", "comment", "--comment", "AnyLink", "-j", "ACCEPT"}
|
forwardRule := []string{"-m", "comment", "--comment", "AnyLink", "-j", "ACCEPT"}
|
||||||
|
if base.InContainer {
|
||||||
|
forwardRule = []string{"-j", "ACCEPT"}
|
||||||
|
}
|
||||||
err = ipt.InsertUnique("filter", "FORWARD", 1, forwardRule...)
|
err = ipt.InsertUnique("filter", "FORWARD", 1, forwardRule...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
base.Error(err)
|
base.Error(err)
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||||
<el-tab-pane label="邮件配置" name="dataSmtp">
|
<el-tab-pane label="邮件配置" name="dataSmtp">
|
||||||
<el-form
|
<el-form
|
||||||
:model="dataSmtp"
|
:model="dataSmtp"
|
||||||
ref="dataSmtp"
|
ref="dataSmtp"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
class="tab-one"
|
class="tab-one"
|
||||||
>
|
>
|
||||||
<el-form-item label="服务器地址" prop="host">
|
<el-form-item label="服务器地址" prop="host">
|
||||||
<el-input v-model="dataSmtp.host"></el-input>
|
<el-input v-model="dataSmtp.host"></el-input>
|
||||||
|
@ -20,9 +20,9 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="密码" prop="password">
|
<el-form-item label="密码" prop="password">
|
||||||
<el-input
|
<el-input
|
||||||
type="password"
|
type="password"
|
||||||
v-model="dataSmtp.password"
|
v-model="dataSmtp.password"
|
||||||
placeholder="密码为空则不修改"
|
placeholder="密码为空则不修改"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="加密类型" prop="encryption">
|
<el-form-item label="加密类型" prop="encryption">
|
||||||
|
@ -37,7 +37,8 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="submitForm('dataSmtp')"
|
<el-button type="primary" @click="submitForm('dataSmtp')"
|
||||||
>保存</el-button
|
>保存
|
||||||
|
</el-button
|
||||||
>
|
>
|
||||||
<el-button @click="resetForm('dataSmtp')">重置</el-button>
|
<el-button @click="resetForm('dataSmtp')">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -46,19 +47,19 @@
|
||||||
|
|
||||||
<el-tab-pane label="审计日志" name="dataAuditLog">
|
<el-tab-pane label="审计日志" name="dataAuditLog">
|
||||||
<el-form
|
<el-form
|
||||||
:model="dataAuditLog"
|
:model="dataAuditLog"
|
||||||
ref="dataAuditLog"
|
ref="dataAuditLog"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
class="tab-one"
|
class="tab-one"
|
||||||
>
|
>
|
||||||
<el-form-item label="审计去重间隔" prop="audit_interval">
|
<el-form-item label="审计去重间隔" prop="audit_interval">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="dataAuditLog.audit_interval"
|
v-model="dataAuditLog.audit_interval"
|
||||||
:min="-1"
|
:min="-1"
|
||||||
size="small"
|
size="small"
|
||||||
label="秒"
|
label="秒"
|
||||||
:disabled="true"
|
:disabled="true"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
秒
|
秒
|
||||||
<p class="input_tip">
|
<p class="input_tip">
|
||||||
|
@ -68,11 +69,11 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="存储时长" prop="life_day">
|
<el-form-item label="存储时长" prop="life_day">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="dataAuditLog.life_day"
|
v-model="dataAuditLog.life_day"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="365"
|
:max="365"
|
||||||
size="small"
|
size="small"
|
||||||
label="天数"
|
label="天数"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
天
|
天
|
||||||
<p class="input_tip">
|
<p class="input_tip">
|
||||||
|
@ -82,22 +83,23 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="清理时间" prop="clear_time">
|
<el-form-item label="清理时间" prop="clear_time">
|
||||||
<el-time-select
|
<el-time-select
|
||||||
v-model="dataAuditLog.clear_time"
|
v-model="dataAuditLog.clear_time"
|
||||||
:picker-options="{
|
:picker-options="{
|
||||||
start: '00:00',
|
start: '00:00',
|
||||||
step: '01:00',
|
step: '01:00',
|
||||||
end: '23:00',
|
end: '23:00',
|
||||||
}"
|
}"
|
||||||
:editable="false"
|
:editable="false"
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
style="width: 130px"
|
style="width: 130px"
|
||||||
>
|
>
|
||||||
</el-time-select>
|
</el-time-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="submitForm('dataAuditLog')"
|
<el-button type="primary" @click="submitForm('dataAuditLog')"
|
||||||
>保存</el-button
|
>保存
|
||||||
|
</el-button
|
||||||
>
|
>
|
||||||
<el-button @click="resetForm('dataAuditLog')">重置</el-button>
|
<el-button @click="resetForm('dataAuditLog')">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -105,33 +107,34 @@
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="证书设置" name="datacertManage">
|
<el-tab-pane label="证书设置" name="datacertManage">
|
||||||
<el-tabs
|
<el-tabs
|
||||||
tab-position="left"
|
tab-position="left"
|
||||||
v-model="datacertManage"
|
v-model="datacertManage"
|
||||||
@tab-click="handleClick"
|
@tab-click="handleClick"
|
||||||
>
|
>
|
||||||
<el-tab-pane label="自定义证书" name="customCert">
|
<el-tab-pane label="自定义证书" name="customCert">
|
||||||
<el-form
|
<el-form
|
||||||
ref="customCert"
|
ref="customCert"
|
||||||
:model="customCert"
|
:model="customCert"
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
size="small"
|
size="small"
|
||||||
class="tab-one"
|
class="tab-one"
|
||||||
>
|
>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-upload
|
<el-upload
|
||||||
class="uploadCert"
|
class="uploadCert"
|
||||||
:before-upload="beforeCertUpload"
|
:before-upload="beforeCertUpload"
|
||||||
:action="certUpload"
|
:action="certUpload"
|
||||||
:limit="1"
|
:limit="1"
|
||||||
>
|
>
|
||||||
<el-button size="mini" icon="el-icon-plus" slot="trigger"
|
<el-button size="mini" icon="el-icon-plus" slot="trigger"
|
||||||
>证书文件</el-button
|
>证书文件
|
||||||
|
</el-button
|
||||||
>
|
>
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
class="item"
|
class="item"
|
||||||
effect="dark"
|
effect="dark"
|
||||||
content="请上传 .pem 格式的 cert 文件"
|
content="请上传 .pem 格式的 cert 文件"
|
||||||
placement="top"
|
placement="top"
|
||||||
>
|
>
|
||||||
<i class="el-icon-info"></i>
|
<i class="el-icon-info"></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
@ -139,19 +142,20 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-upload
|
<el-upload
|
||||||
class="uploadCert"
|
class="uploadCert"
|
||||||
:before-upload="beforeKeyUpload"
|
:before-upload="beforeKeyUpload"
|
||||||
:action="certUpload"
|
:action="certUpload"
|
||||||
:limit="1"
|
:limit="1"
|
||||||
>
|
>
|
||||||
<el-button size="mini" icon="el-icon-plus" slot="trigger"
|
<el-button size="mini" icon="el-icon-plus" slot="trigger"
|
||||||
>私钥文件</el-button
|
>私钥文件
|
||||||
|
</el-button
|
||||||
>
|
>
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
class="item"
|
class="item"
|
||||||
effect="dark"
|
effect="dark"
|
||||||
content="请上传 .pem 格式的 key 文件"
|
content="请上传 .pem 格式的 key 文件"
|
||||||
placement="top"
|
placement="top"
|
||||||
>
|
>
|
||||||
<i class="el-icon-info"></i>
|
<i class="el-icon-info"></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
@ -159,23 +163,24 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button
|
<el-button
|
||||||
size="small"
|
size="small"
|
||||||
icon="el-icon-upload"
|
icon="el-icon-upload"
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="submitForm('customCert')"
|
@click="submitForm('customCert')"
|
||||||
>上传</el-button
|
>上传
|
||||||
|
</el-button
|
||||||
>
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="Let's Encrypt证书" name="letsCert">
|
<el-tab-pane label="Let's Encrypt证书" name="letsCert">
|
||||||
<el-form
|
<el-form
|
||||||
:model="letsCert"
|
:model="letsCert"
|
||||||
ref="letsCert"
|
ref="letsCert"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
label-width="120px"
|
label-width="120px"
|
||||||
size="small"
|
size="small"
|
||||||
class="tab-one"
|
class="tab-one"
|
||||||
>
|
>
|
||||||
<el-form-item label="域名" prop="domain">
|
<el-form-item label="域名" prop="domain">
|
||||||
<el-input v-model="letsCert.domain"></el-input>
|
<el-input v-model="letsCert.domain"></el-input>
|
||||||
|
@ -191,30 +196,31 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-for="component in dnsProvider[letsCert.name]"
|
v-for="component in dnsProvider[letsCert.name]"
|
||||||
:key="component.prop"
|
:key="component.prop"
|
||||||
:label="component.label"
|
:label="component.label"
|
||||||
:rules="component.rules"
|
:rules="component.rules"
|
||||||
>
|
>
|
||||||
<component
|
<component
|
||||||
:is="component.component"
|
:is="component.component"
|
||||||
:type="component.type"
|
:type="component.type"
|
||||||
v-model="letsCert[letsCert.name][component.prop]"
|
v-model="letsCert[letsCert.name][component.prop]"
|
||||||
></component>
|
></component>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-switch
|
<el-switch
|
||||||
style="display: block"
|
style="display: block"
|
||||||
v-model="letsCert.renew"
|
v-model="letsCert.renew"
|
||||||
active-color="#13ce66"
|
active-color="#13ce66"
|
||||||
inactive-color="#ff4949"
|
inactive-color="#ff4949"
|
||||||
inactive-text="自动续期"
|
inactive-text="自动续期"
|
||||||
>
|
>
|
||||||
</el-switch>
|
</el-switch>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="submitForm('letsCert')"
|
<el-button type="primary" @click="submitForm('letsCert')"
|
||||||
>申请</el-button
|
>申请
|
||||||
|
</el-button
|
||||||
>
|
>
|
||||||
<el-button @click="resetForm('letsCert')">重置</el-button>
|
<el-button @click="resetForm('letsCert')">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -224,11 +230,11 @@
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="其他设置" name="dataOther">
|
<el-tab-pane label="其他设置" name="dataOther">
|
||||||
<el-form
|
<el-form
|
||||||
:model="dataOther"
|
:model="dataOther"
|
||||||
ref="dataOther"
|
ref="dataOther"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
label-width="100px"
|
label-width="130px"
|
||||||
class="tab-one"
|
class="tab-one"
|
||||||
>
|
>
|
||||||
<el-form-item label="vpn对外地址" prop="link_addr">
|
<el-form-item label="vpn对外地址" prop="link_addr">
|
||||||
<el-input placeholder="请输入内容" v-model="dataOther.link_addr">
|
<el-input placeholder="请输入内容" v-model="dataOther.link_addr">
|
||||||
|
@ -237,49 +243,58 @@
|
||||||
|
|
||||||
<el-form-item label="Banner信息" prop="banner">
|
<el-form-item label="Banner信息" prop="banner">
|
||||||
<el-input
|
<el-input
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:rows="5"
|
:rows="5"
|
||||||
placeholder="请输入内容"
|
placeholder="请输入内容"
|
||||||
v-model="dataOther.banner"
|
v-model="dataOther.banner"
|
||||||
>
|
>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="自定义首页状态码" prop="homecode">
|
||||||
|
<el-input-number
|
||||||
|
v-model="dataOther.homecode"
|
||||||
|
:min="0"
|
||||||
|
:max="1000"
|
||||||
|
></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="自定义首页" prop="homeindex">
|
<el-form-item label="自定义首页" prop="homeindex">
|
||||||
<el-input
|
<el-input
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:rows="10"
|
:rows="10"
|
||||||
placeholder="请输入内容"
|
placeholder="请输入内容"
|
||||||
v-model="dataOther.homeindex"
|
v-model="dataOther.homeindex"
|
||||||
>
|
>
|
||||||
</el-input>
|
</el-input>
|
||||||
<el-tooltip content="自定义内容可以参考 home 目录下的文件" placement="top">
|
<el-tooltip content="自定义内容可以参考 index_template 目录下的文件" placement="top">
|
||||||
<i class="el-icon-question"></i>
|
<i class="el-icon-question"></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="账户开通邮件" prop="account_mail">
|
<el-form-item label="账户开通邮件模板" prop="account_mail">
|
||||||
<el-input
|
<el-input
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:rows="10"
|
:rows="10"
|
||||||
placeholder="请输入内容"
|
placeholder="请输入内容"
|
||||||
v-model="dataOther.account_mail"
|
v-model="dataOther.account_mail"
|
||||||
>
|
>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="邮件展示">
|
<el-form-item label="邮件展示">
|
||||||
<iframe
|
<iframe
|
||||||
width="500px"
|
width="500px"
|
||||||
height="300px"
|
height="300px"
|
||||||
:srcdoc="dataOther.account_mail"
|
:srcdoc="dataOther.account_mail"
|
||||||
>
|
>
|
||||||
</iframe>
|
</iframe>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="submitForm('dataOther')"
|
<el-button type="primary" @click="submitForm('dataOther')"
|
||||||
>保存</el-button
|
>保存
|
||||||
|
</el-button
|
||||||
>
|
>
|
||||||
<el-button @click="resetForm('dataOther')">重置</el-button>
|
<el-button @click="resetForm('dataOther')">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -324,19 +339,19 @@ export default {
|
||||||
authToken: "",
|
authToken: "",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
customCert: { cert: "", key: "" },
|
customCert: {cert: "", key: ""},
|
||||||
dataOther: {},
|
dataOther: {},
|
||||||
rules: {
|
rules: {
|
||||||
host: { required: true, message: "请输入服务器地址", trigger: "blur" },
|
host: {required: true, message: "请输入服务器地址", trigger: "blur"},
|
||||||
port: [
|
port: [
|
||||||
{ required: true, message: "请输入服务器端口", trigger: "blur" },
|
{required: true, message: "请输入服务器端口", trigger: "blur"},
|
||||||
{
|
{
|
||||||
type: "number",
|
type: "number",
|
||||||
message: "请输入正确的服务器端口",
|
message: "请输入正确的服务器端口",
|
||||||
trigger: ["blur", "change"],
|
trigger: ["blur", "change"],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
issuer: { required: true, message: "请输入系统名称", trigger: "blur" },
|
issuer: {required: true, message: "请输入系统名称", trigger: "blur"},
|
||||||
domain: {
|
domain: {
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入需要申请证书的域名",
|
message: "请输入需要申请证书的域名",
|
||||||
|
@ -347,7 +362,7 @@ export default {
|
||||||
message: "请输入申请证书的邮箱地址",
|
message: "请输入申请证书的邮箱地址",
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
name: { required: true, message: "请选择域名服务商", trigger: "blur" },
|
name: {required: true, message: "请选择域名服务商", trigger: "blur"},
|
||||||
},
|
},
|
||||||
certUpload: "/set/other/customcert",
|
certUpload: "/set/other/customcert",
|
||||||
dnsProvider: {
|
dnsProvider: {
|
||||||
|
@ -449,71 +464,71 @@ export default {
|
||||||
},
|
},
|
||||||
getSmtp() {
|
getSmtp() {
|
||||||
axios
|
axios
|
||||||
.get("/set/other/smtp")
|
.get("/set/other/smtp")
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
let rdata = resp.data;
|
let rdata = resp.data;
|
||||||
console.log(rdata);
|
console.log(rdata);
|
||||||
if (rdata.code !== 0) {
|
if (rdata.code !== 0) {
|
||||||
this.$message.error(rdata.msg);
|
this.$message.error(rdata.msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.dataSmtp = rdata.data;
|
this.dataSmtp = rdata.data;
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.$message.error("哦,请求出错");
|
this.$message.error("哦,请求出错");
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getAuditLog() {
|
getAuditLog() {
|
||||||
axios
|
axios
|
||||||
.get("/set/other/audit_log")
|
.get("/set/other/audit_log")
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
let rdata = resp.data;
|
let rdata = resp.data;
|
||||||
console.log(rdata);
|
console.log(rdata);
|
||||||
if (rdata.code !== 0) {
|
if (rdata.code !== 0) {
|
||||||
this.$message.error(rdata.msg);
|
this.$message.error(rdata.msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.dataAuditLog = rdata.data;
|
this.dataAuditLog = rdata.data;
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.$message.error("哦,请求出错");
|
this.$message.error("哦,请求出错");
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getletsCert() {
|
getletsCert() {
|
||||||
axios
|
axios
|
||||||
.get("/set/other/getcertset")
|
.get("/set/other/getcertset")
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
let rdata = resp.data;
|
let rdata = resp.data;
|
||||||
console.log(rdata);
|
console.log(rdata);
|
||||||
if (rdata.code !== 0) {
|
if (rdata.code !== 0) {
|
||||||
this.$message.error(rdata.msg);
|
this.$message.error(rdata.msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.letsCert = Object.assign({}, this.letsCert, rdata.data);
|
this.letsCert = Object.assign({}, this.letsCert, rdata.data);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.$message.error("哦,请求出错");
|
this.$message.error("哦,请求出错");
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getOther() {
|
getOther() {
|
||||||
axios
|
axios
|
||||||
.get("/set/other")
|
.get("/set/other")
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
let rdata = resp.data;
|
let rdata = resp.data;
|
||||||
console.log(rdata);
|
console.log(rdata);
|
||||||
if (rdata.code !== 0) {
|
if (rdata.code !== 0) {
|
||||||
this.$message.error(rdata.msg);
|
this.$message.error(rdata.msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.dataOther = rdata.data;
|
this.dataOther = rdata.data;
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.$message.error("哦,请求出错");
|
this.$message.error("哦,请求出错");
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
submitForm(formName) {
|
submitForm(formName) {
|
||||||
this.$refs[formName].validate((valid) => {
|
this.$refs[formName].validate((valid) => {
|
||||||
|
@ -535,16 +550,16 @@ export default {
|
||||||
break;
|
break;
|
||||||
case "dataAuditLog":
|
case "dataAuditLog":
|
||||||
axios
|
axios
|
||||||
.post("/set/other/audit_log/edit", this.dataAuditLog)
|
.post("/set/other/audit_log/edit", this.dataAuditLog)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
var rdata = resp.data;
|
var rdata = resp.data;
|
||||||
console.log(rdata);
|
console.log(rdata);
|
||||||
if (rdata.code === 0) {
|
if (rdata.code === 0) {
|
||||||
this.$message.success(rdata.msg);
|
this.$message.success(rdata.msg);
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(rdata.msg);
|
this.$message.error(rdata.msg);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "letsCert":
|
case "letsCert":
|
||||||
var loading = this.$loading({
|
var loading = this.$loading({
|
||||||
|
|
Loading…
Reference in New Issue