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 @@
+
+
+
+
+
+ 客户端下载
+
+
+
+
+
+
+
+
+
+
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({