diff --git a/build_web.sh b/build_web.sh index afeaf01..df3f625 100644 --- a/build_web.sh +++ b/build_web.sh @@ -1,7 +1,9 @@ #!/bin/bash +rm -rf web/ui server/ui + 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" -rm -rf server/ui + cp -r web/ui server/ui diff --git a/index_template/自定义首页2.html b/index_template/自定义首页2.html new file mode 100644 index 0000000..232a902 --- /dev/null +++ b/index_template/自定义首页2.html @@ -0,0 +1,165 @@ + + + + + + 客户端下载 + + + + + +
+
+

请选择对应平台下载

+

Windows 系统

+ Win X86_64 + Win ARM64 + +

移动端

+ Android + iPhone + +

MacOS 系统

+ Mac Intel + Mac ARM64 + +

TOTP 移动客户端

+ Android + iPhone +
+
+ + + + diff --git a/server/dbdata/db.go b/server/dbdata/db.go index bb738f7..ed867e6 100644 --- a/server/dbdata/db.go +++ b/server/dbdata/db.go @@ -1,6 +1,7 @@ package dbdata import ( + "net/http" "time" "github.com/bjdgyc/anylink/base" @@ -121,6 +122,7 @@ func addInitData() error { other := &SettingOther{ LinkAddr: "vpn.xx.com", Banner: "您已接入公司网络,请按照公司规定使用。\n请勿进行非工作下载及视频行为!", + Homecode: http.StatusOK, Homeindex: "AnyLink 是一个企业级远程办公 sslvpn 的软件,可以支持多人同时在线使用。", AccountMail: accountMail, } diff --git a/server/dbdata/setting.go b/server/dbdata/setting.go index 690930b..5c3f559 100644 --- a/server/dbdata/setting.go +++ b/server/dbdata/setting.go @@ -29,6 +29,7 @@ type SettingAuditLog struct { type SettingOther struct { LinkAddr string `json:"link_addr"` Banner string `json:"banner"` + Homecode int `json:"homecode"` Homeindex string `json:"homeindex"` AccountMail string `json:"account_mail"` } diff --git a/server/handler/link_home.go b/server/handler/link_home.go index 0028bec..f79e717 100644 --- a/server/handler/link_home.go +++ b/server/handler/link_home.go @@ -27,10 +27,16 @@ func LinkHome(w http.ResponseWriter, r *http.Request) { if err := dbdata.SettingGet(index); err != nil { return } - w.WriteHeader(http.StatusOK) - if index.Homeindex == "" { - index.Homeindex = "AnyLink 是一个企业级远程办公 SSL VPN 软件,可以支持多人同时在线使用。" + + if index.Homecode > 0 { + w.WriteHeader(index.Homecode) + } else { + w.WriteHeader(http.StatusOK) } + + // if index.Homeindex == "" { + // index.Homeindex = "AnyLink 是一个企业级远程办公 SSL VPN 软件,可以支持多人同时在线使用。" + // } fmt.Fprintln(w, index.Homeindex) } diff --git a/server/handler/link_tun.go b/server/handler/link_tun.go index a2f3eeb..0d41fcc 100644 --- a/server/handler/link_tun.go +++ b/server/handler/link_tun.go @@ -51,6 +51,9 @@ func checkTun() { // 添加注释 natRule := []string{"-s", base.Cfg.Ipv4CIDR, "-o", base.Cfg.Ipv4Master, "-m", "comment", "--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...) if err != nil { base.Error(err) @@ -58,6 +61,9 @@ func checkTun() { // 添加注释 forwardRule := []string{"-m", "comment", "--comment", "AnyLink", "-j", "ACCEPT"} + if base.InContainer { + forwardRule = []string{"-j", "ACCEPT"} + } err = ipt.InsertUnique("filter", "FORWARD", 1, forwardRule...) if err != nil { base.Error(err) diff --git a/web/src/pages/set/Other.vue b/web/src/pages/set/Other.vue index 769e209..2e7ebea 100644 --- a/web/src/pages/set/Other.vue +++ b/web/src/pages/set/Other.vue @@ -3,11 +3,11 @@ @@ -20,9 +20,9 @@ @@ -37,7 +37,8 @@ 保存保存 + 重置 @@ -46,19 +47,19 @@

@@ -68,11 +69,11 @@

@@ -82,22 +83,23 @@ 保存保存 + 重置 @@ -105,33 +107,34 @@ 证书文件证书文件 + @@ -139,19 +142,20 @@ 私钥文件私钥文件 + @@ -159,23 +163,24 @@ 上传上传 + @@ -191,30 +196,31 @@ 申请申请 + 重置 @@ -224,11 +230,11 @@ @@ -237,49 +243,58 @@ + + + + - + - + 保存保存 + 重置 @@ -324,19 +339,19 @@ export default { authToken: "", }, }, - customCert: { cert: "", key: "" }, + customCert: {cert: "", key: ""}, dataOther: {}, rules: { - host: { required: true, message: "请输入服务器地址", trigger: "blur" }, + host: {required: true, message: "请输入服务器地址", trigger: "blur"}, port: [ - { required: true, message: "请输入服务器端口", trigger: "blur" }, + {required: true, message: "请输入服务器端口", trigger: "blur"}, { type: "number", message: "请输入正确的服务器端口", trigger: ["blur", "change"], }, ], - issuer: { required: true, message: "请输入系统名称", trigger: "blur" }, + issuer: {required: true, message: "请输入系统名称", trigger: "blur"}, domain: { required: true, message: "请输入需要申请证书的域名", @@ -347,7 +362,7 @@ export default { message: "请输入申请证书的邮箱地址", trigger: "blur", }, - name: { required: true, message: "请选择域名服务商", trigger: "blur" }, + name: {required: true, message: "请选择域名服务商", trigger: "blur"}, }, certUpload: "/set/other/customcert", dnsProvider: { @@ -449,71 +464,71 @@ export default { }, getSmtp() { axios - .get("/set/other/smtp") - .then((resp) => { - let rdata = resp.data; - console.log(rdata); - if (rdata.code !== 0) { - this.$message.error(rdata.msg); - return; - } - this.dataSmtp = rdata.data; - }) - .catch((error) => { - this.$message.error("哦,请求出错"); - console.log(error); - }); + .get("/set/other/smtp") + .then((resp) => { + let rdata = resp.data; + console.log(rdata); + if (rdata.code !== 0) { + this.$message.error(rdata.msg); + return; + } + this.dataSmtp = rdata.data; + }) + .catch((error) => { + this.$message.error("哦,请求出错"); + console.log(error); + }); }, getAuditLog() { axios - .get("/set/other/audit_log") - .then((resp) => { - let rdata = resp.data; - console.log(rdata); - if (rdata.code !== 0) { - this.$message.error(rdata.msg); - return; - } - this.dataAuditLog = rdata.data; - }) - .catch((error) => { - this.$message.error("哦,请求出错"); - console.log(error); - }); + .get("/set/other/audit_log") + .then((resp) => { + let rdata = resp.data; + console.log(rdata); + if (rdata.code !== 0) { + this.$message.error(rdata.msg); + return; + } + this.dataAuditLog = rdata.data; + }) + .catch((error) => { + this.$message.error("哦,请求出错"); + console.log(error); + }); }, getletsCert() { axios - .get("/set/other/getcertset") - .then((resp) => { - let rdata = resp.data; - console.log(rdata); - if (rdata.code !== 0) { - this.$message.error(rdata.msg); - return; - } - this.letsCert = Object.assign({}, this.letsCert, rdata.data); - }) - .catch((error) => { - this.$message.error("哦,请求出错"); - console.log(error); - }); + .get("/set/other/getcertset") + .then((resp) => { + let rdata = resp.data; + console.log(rdata); + if (rdata.code !== 0) { + this.$message.error(rdata.msg); + return; + } + this.letsCert = Object.assign({}, this.letsCert, rdata.data); + }) + .catch((error) => { + this.$message.error("哦,请求出错"); + console.log(error); + }); }, getOther() { axios - .get("/set/other") - .then((resp) => { - let rdata = resp.data; - console.log(rdata); - if (rdata.code !== 0) { - this.$message.error(rdata.msg); - return; - } - this.dataOther = rdata.data; - }) - .catch((error) => { - this.$message.error("哦,请求出错"); - console.log(error); - }); + .get("/set/other") + .then((resp) => { + let rdata = resp.data; + console.log(rdata); + if (rdata.code !== 0) { + this.$message.error(rdata.msg); + return; + } + this.dataOther = rdata.data; + }) + .catch((error) => { + this.$message.error("哦,请求出错"); + console.log(error); + }); }, submitForm(formName) { this.$refs[formName].validate((valid) => { @@ -535,16 +550,16 @@ export default { break; case "dataAuditLog": axios - .post("/set/other/audit_log/edit", this.dataAuditLog) - .then((resp) => { - var rdata = resp.data; - console.log(rdata); - if (rdata.code === 0) { - this.$message.success(rdata.msg); - } else { - this.$message.error(rdata.msg); - } - }); + .post("/set/other/audit_log/edit", this.dataAuditLog) + .then((resp) => { + var rdata = resp.data; + console.log(rdata); + if (rdata.code === 0) { + this.$message.success(rdata.msg); + } else { + this.$message.error(rdata.msg); + } + }); break; case "letsCert": var loading = this.$loading({