diff --git a/internal/utils/email.go b/internal/utils/email.go new file mode 100644 index 00000000..a729e6e7 --- /dev/null +++ b/internal/utils/email.go @@ -0,0 +1,12 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package utils + +import "regexp" + +var emailReg = regexp.MustCompile(`(?i)^[a-z\d]+([._+-]*[a-z\d]+)*@([a-z\d]+[a-z\d-]*[a-z\d]+\.)+[a-z\d]+$`) + +// ValidateEmail 校验电子邮箱格式 +func ValidateEmail(email string) bool { + return emailReg.MatchString(email) +} diff --git a/internal/utils/email_test.go b/internal/utils/email_test.go new file mode 100644 index 00000000..713acf1a --- /dev/null +++ b/internal/utils/email_test.go @@ -0,0 +1,22 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package utils_test + +import ( + "github.com/TeaOSLab/EdgeAPI/internal/utils" + "github.com/iwind/TeaGo/assert" + "testing" +) + +func TestValidateEmail(t *testing.T) { + var a = assert.NewAssertion(t) + a.IsTrue(utils.ValidateEmail("aaaa@gmail.com")) + a.IsTrue(utils.ValidateEmail("a.b@gmail.com")) + a.IsTrue(utils.ValidateEmail("a.b.c.d@gmail.com")) + a.IsTrue(utils.ValidateEmail("aaaa@gmail.com.cn")) + a.IsTrue(utils.ValidateEmail("hello.world.123@gmail.123.com")) + a.IsTrue(utils.ValidateEmail("10000@qq.com")) + a.IsFalse(utils.ValidateEmail("aaaa.@gmail.com")) + a.IsFalse(utils.ValidateEmail("aaaa@gmail")) + a.IsFalse(utils.ValidateEmail("aaaa@123")) +} diff --git a/web/public/js/components/ns/ns-access-log-box.js b/web/public/js/components/ns/ns-access-log-box.js index 3eebd225..30d34383 100644 --- a/web/public/js/components/ns/ns-access-log-box.js +++ b/web/public/js/components/ns/ns-access-log-box.js @@ -2,8 +2,25 @@ Vue.component("ns-access-log-box", { props: ["v-access-log", "v-keyword"], data: function () { let accessLog = this.vAccessLog + let isFailure = false + + if (accessLog.isRecursive) { + if (accessLog.recordValue == null || accessLog.recordValue.length == 0) { + isFailure = true + } + } else { + if (accessLog.recordType == "SOA" || accessLog.recordType == "NS") { + if (accessLog.recordValue == null || accessLog.recordValue.length == 0) { + isFailure = true + } + } else if (accessLog.nsRecordId == null || accessLog.nsRecordId == 0) { + isFailure = true + } + } + return { - accessLog: accessLog + accessLog: accessLog, + isFailure: isFailure } }, methods: { @@ -32,7 +49,7 @@ Vue.component("ns-access-log-box", { this.$refs.box.parentNode.style.cssText = "" } }, - template: `