Compare commits

..

85 Commits

Author SHA1 Message Date
刘祥超
4a11ecb7b4 修复一处编译问题 2023-07-25 14:08:26 +08:00
刘祥超
5c8dff120a 增加 DefaultTCPLinger 值 2023-07-25 09:35:28 +08:00
刘祥超
df148bf027 删除TOA相关不需要的内容 2023-07-24 15:33:30 +08:00
刘祥超
d5bb623339 优化TOA相关API 2023-07-24 09:56:49 +08:00
刘祥超
58ec21d676 优化HTTP报头策略是否为空的判断 2023-07-22 15:00:15 +08:00
刘祥超
279e4025fd 默认自动检查版本更新 2023-07-20 09:37:47 +08:00
刘祥超
bedb18dd71 修复无法读取鉴权方法列表的问题 2023-07-17 09:32:39 +08:00
刘祥超
102b5859b3 5秒盾增加QPS限制选项 2023-07-14 11:01:14 +08:00
刘祥超
8426bf21be WAF-区域封禁增加提示内容设置 2023-07-14 11:01:01 +08:00
刘祥超
04d4895b7b 集群设置--网站设置增加“服务器旗标”设置 2023-07-12 17:39:26 +08:00
刘祥超
a328f75d89 生成IP库的时候自动指定省略的城市名 2023-07-12 15:34:40 +08:00
刘祥超
a9b28d55c1 增加页面优化相关API、配置、消息代号 2023-07-11 19:47:05 +08:00
刘祥超
fd4aff5ab5 增加是否在手机浏览器上也支持HTTP/3的选项 2023-07-09 16:17:03 +08:00
刘祥超
8639bd213e 增加部分API注释 2023-07-09 10:15:33 +08:00
刘祥超
1c192050c7 缓存策略移除“容纳Key数量”选项 2023-07-08 18:51:10 +08:00
刘祥超
83f5166d76 网站列表增加QPS和攻击QPS信息 2023-07-07 18:51:41 +08:00
刘祥超
05cd622456 优化WAF区域/省份封禁:增加仅允许、增加中国香港澳台、内地等特殊区域 2023-07-07 09:51:30 +08:00
刘祥超
64bac81b56 初始化访客IP配置时去除首尾可能的空格 2023-07-07 08:31:17 +08:00
刘祥超
f3cc573a2c 增加部分多语言代号 2023-07-06 10:56:08 +08:00
刘祥超
6d28a67fd4 官网URL放入到多语言消息中 2023-07-05 20:21:41 +08:00
刘祥超
1151eb6c92 优化硬盘空间不足的提示 2023-07-05 16:42:56 +08:00
刘祥超
ceceda22a6 “集群设置 -- 网站设置”增加“允许记录访问日志”选项 2023-07-05 15:29:04 +08:00
刘祥超
916cd0bf67 增加部分消息代号 2023-07-04 20:29:33 +08:00
刘祥超
28458d9cfc 优化代码 2023-07-03 17:12:00 +08:00
刘祥超
0b2e9fa864 优化全局设置的超时设置 2023-07-03 16:21:52 +08:00
刘祥超
ea35ad2dac 修改部分文字 2023-07-03 15:36:59 +08:00
刘祥超
c66adf989c 增加清空节点同步任务、清空DNS同步任务API 2023-07-02 17:29:41 +08:00
刘祥超
81af1caa6c 优化OSS相关代码 2023-07-02 11:04:59 +08:00
刘祥超
52ed467580 增加API注释 2023-07-01 19:27:49 +08:00
刘祥超
705ffcd087 增加部分数据清理周期设置 2023-07-01 17:55:10 +08:00
刘祥超
04d8a1db33 查找当前API节点版本中增加角色 2023-07-01 15:10:07 +08:00
刘祥超
1ef1a7d49e 优化代码 2023-06-30 19:02:31 +08:00
刘祥超
a720ea0373 优化代码 2023-06-30 19:00:53 +08:00
刘祥超
fd9849c9ff 部分中文转换为多语言代号 2023-06-30 18:09:43 +08:00
刘祥超
141dd89f6f 部分中文转换为多语言代号 2023-06-28 19:06:16 +08:00
刘祥超
9db82b0bea 部分中文转换为多语言代号 2023-06-28 16:19:05 +08:00
刘祥超
bd57d35d63 添加多语言最基础代码 2023-06-28 09:12:13 +08:00
刘祥超
4853363765 源站支持HTTP/2 2023-06-23 11:42:51 +08:00
刘祥超
d9233713e4 补充API注释 2023-06-21 08:45:06 +08:00
刘祥超
7f8dd70c9b 增加简化版的创建TCP网站API 2023-06-18 17:14:29 +08:00
刘祥超
1748637c31 增加简化版的创建HTTP网站API 2023-06-18 16:19:52 +08:00
刘祥超
90c06c4175 把“服务”改成“网站” 2023-06-18 10:57:07 +08:00
刘祥超
fe9bc332c1 增加API注释 2023-06-17 21:05:03 +08:00
刘祥超
f436763c8d 默认不启用性能优化 2023-06-17 19:19:40 +08:00
刘祥超
6bf017ee22 完善API注释 2023-06-16 18:27:16 +08:00
刘祥超
70bc6e7d8e 缓存条件类型增加“URL通配符” 2023-06-16 11:34:59 +08:00
刘祥超
e42b13f278 用户设置中增加登录状态下检查客户端区域的选项 2023-06-16 10:59:30 +08:00
刘祥超
cd545b25c9 80/443端口的源站自动修正HTTP和HTTPS协议,防止有些小白用户不知道HTTP和HTTPS的区别 2023-06-16 08:47:47 +08:00
刘祥超
574b264a37 缓存条件增加"强制返回区间内容"选项 2023-06-15 15:14:25 +08:00
刘祥超
12abb714e0 优化OSS源站相关代码 2023-06-13 15:44:43 +08:00
刘祥超
8bef580c2e 智能DNS实现DoH功能 2023-06-11 17:57:41 +08:00
刘祥超
b08064c1de 初步实现对象存储源站 2023-06-07 17:26:34 +08:00
刘祥超
555673b87d 允许在集群设置 -- “网站设置” 中设置节点IP访问显示的内容 2023-06-05 19:27:05 +08:00
刘祥超
e9145ec22c 网站全局设置增加“强制Ln请求“选项 2023-06-05 17:05:49 +08:00
刘祥超
ffd261b285 改进智能DNS验证相关API 2023-06-05 12:34:51 +08:00
刘祥超
2ff4c67e57 增加一处测试用例 2023-06-02 14:58:08 +08:00
刘祥超
1e1e6e7e81 查找HTTP3端口时只计算已经启用的 2023-06-01 19:42:40 +08:00
刘祥超
71e03f5e07 初步实现HTTP3 2023-06-01 17:48:01 +08:00
刘祥超
6a1a2640d3 Update rpc.json 2023-05-28 19:26:18 +08:00
刘祥超
be32bff7db 提供用户某日刷新/预热缓存数量查询API 2023-05-28 18:00:42 +08:00
刘祥超
afd9e3134d WAF增加“跳转”动作 2023-05-28 17:45:39 +08:00
刘祥超
a9dd5e3ba3 URL跳转精准匹配/匹配前缀支持URL查询参数 2023-05-27 21:00:34 +08:00
刘祥超
5caafcb99a 增加读取节点数配额接口 2023-05-27 15:30:05 +08:00
刘祥超
f34633f22a WAF国家/地区封禁、省份封禁增加例外URL、限制URL 2023-05-25 12:02:25 +08:00
刘祥超
2966240a5c 网站全局设置中增加“自动匹配证书”选项 2023-05-25 11:00:25 +08:00
刘祥超
05255c18d8 智能调度动作可以排序 2023-05-24 15:38:37 +08:00
刘祥超
a74a751a50 删除不需要的文件 2023-05-24 15:06:22 +08:00
刘祥超
c24fa291bd 改进流量相关的智能调度过期时间设置 2023-05-24 15:04:07 +08:00
刘祥超
e33f98f869 优化代码 2023-05-23 19:51:28 +08:00
刘祥超
e3ada6da81 实现集群CC防护策略设置 2023-05-23 19:16:09 +08:00
刘祥超
47c0ade078 实现集群自定义页面 2023-05-22 17:30:08 +08:00
刘祥超
2af8e6c7f8 HTTP Header中支持设置非标Header 2023-05-19 19:52:22 +08:00
刘祥超
e909d4c59a 优化代码 2023-05-19 16:44:02 +08:00
刘祥超
ee744d6c70 HTTP Header - CORS跨域设置增加多个选项 2023-05-19 16:33:13 +08:00
刘祥超
dbea336fee 增加复制节点动作API 2023-05-19 11:12:09 +08:00
刘祥超
5961d955d7 实现基础的智能调度 2023-05-17 18:42:35 +08:00
刘祥超
529a98e694 域名解析功能实现健康检查 2023-05-03 17:09:36 +08:00
刘祥超
48aeffba7e 防盗链增加”同时检查Origin选项“ 2023-05-02 17:05:56 +08:00
刘祥超
a7ac768709 优化编译脚本 2023-04-25 10:26:34 +08:00
刘祥超
ca8226fe9d 远程升级API节点时自动上传边缘节点安装文件 2023-04-23 19:43:01 +08:00
刘祥超
a6395b34a3 5秒盾“加入IP白名单”默认为true 2023-04-23 16:04:59 +08:00
刘祥超
97f56c7bb1 创建ACME用户、ACME任务时可以指定平台用户 2023-04-23 15:01:10 +08:00
刘祥超
c0856d3b46 安全设置中增加“检查客户端指纹”、“检查客户端区域”选项 2023-04-19 18:21:44 +08:00
刘祥超
4e80f62837 IP库查询增加更多信息 2023-04-19 18:20:34 +08:00
刘祥超
753552d4a4 修复证书数据可能获取不到的问题 2023-04-10 09:13:05 +08:00
315 changed files with 19984 additions and 6471 deletions

3
.gitignore vendored
View File

@@ -1,2 +1,3 @@
*_plus.go
*_plus_test.go
*_plus_test.go
*_plus.json

4
build/build-messages.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env bash
ROOT=$(dirname "$0")
/usr/local/bin/go run "${ROOT}"/../cmd/langs/main.go generate

View File

@@ -10,7 +10,7 @@ if [ "${RESULT}" != "0" ]; then
exit
fi
RESULT=`protoc --go_out=plugins=grpc:../pkg/rpc --proto_path=../pkg/rpc/protos ../pkg/rpc/protos/models/*.proto`
protoc --go_out=plugins=grpc:../pkg/rpc --proto_path=../pkg/rpc/protos ../pkg/rpc/protos/models/*.proto
RESULT=$?
if [ "${RESULT}" != "0" ]; then
exit

File diff suppressed because it is too large Load Diff

454
cmd/langs/main.go Normal file
View File

@@ -0,0 +1,454 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package main
import (
"bytes"
"encoding/json"
"fmt"
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
"github.com/iwind/TeaGo/Tea"
_ "github.com/iwind/TeaGo/bootstrap"
"github.com/iwind/TeaGo/lists"
"github.com/iwind/TeaGo/types"
"go/format"
"os"
"path/filepath"
"regexp"
"sort"
"strconv"
"strings"
)
func main() {
var args = os.Args
if len(args) >= 2 {
switch args[1] {
case "generate":
// generate go codes from json files
runGenerate()
case "search":
// search hans from dir path
runSearch()
}
} else {
fmt.Println("Usage: langs [generate|search]")
}
}
func runGenerate() {
var rootDir = filepath.Clean(Tea.Root + "/../pkg/langs/protos")
dir, err := os.Open(rootDir)
if err != nil {
fmt.Println("[ERROR]read dir failed: " + err.Error())
return
}
defer func() {
_ = dir.Close()
}()
files, err := dir.Readdir(0)
if err != nil {
fmt.Println("[ERROR]read dir failed: " + err.Error())
return
}
var dirRegexp = regexp.MustCompile(`^[a-z]+-[a-z]+$`)
var jsonFileNameRegexp = regexp.MustCompile(`^([a-zA-Z0-9]+)(_([a-zA-Z0-9]+))*\.json$`)
var messageCodeRegexp = regexp.MustCompile(`^[a-zA-Z0-9_]+$`)
var jsonCommentRegexp = regexp.MustCompile(`//\s+.+`)
var messageCodes = []string{}
var langMaps = map[string]*langs.Lang{} // lang => *langs.Lang
var defaultLang = langs.DefaultManager().DefaultLang()
const maxMessageCodeLen = 128
for _, file := range files {
var dirName = file.Name()
if !file.IsDir() || !dirRegexp.MatchString(dirName) {
continue
}
var langCode = dirName
var isBaseLang = langCode == defaultLang
var processOk = func() bool {
jsonFiles, err := filepath.Glob(rootDir + "/" + dirName + "/*.json")
if err != nil {
fmt.Println("[ERROR]list json files failed: " + err.Error())
return false
}
for _, jsonFile := range jsonFiles {
var jsonFileName = filepath.Base(jsonFile)
if len(jsonFileName) == 0 || !jsonFileNameRegexp.MatchString(jsonFileName) {
continue
}
var module = strings.TrimSuffix(jsonFileName, ".json")
data, err := os.ReadFile(jsonFile)
if err != nil {
fmt.Println("[ERROR]read json file '" + jsonFile + "' failed: " + err.Error())
return false
}
// remove comments in json
data = jsonCommentRegexp.ReplaceAll(data, []byte{})
var m = map[string]string{} // code => value
err = json.Unmarshal(data, &m)
if err != nil {
fmt.Println("[ERROR]decode json file '" + jsonFile + "' failed: " + err.Error())
return false
}
var newM = map[string]string{}
for code, value := range m {
if !messageCodeRegexp.MatchString(code) {
fmt.Println("[ERROR]invalid message code '" + code + "'")
return false
}
var fullCode = module + "@" + code
if len(fullCode) > maxMessageCodeLen {
fmt.Println("[ERROR]message code '" + fullCode + "' too long, max length: " + types.String(maxMessageCodeLen))
return false
}
if isBaseLang {
messageCodes = append(messageCodes, fullCode)
}
newM[fullCode] = value
}
finalLang, ok := langMaps[langCode]
if !ok {
finalLang = langs.NewLang(langCode)
langMaps[langCode] = finalLang
}
for code, value := range newM {
if finalLang.Has(langs.MessageCode(code)) {
fmt.Println("[ERROR]message code '" + code + "' duplicated")
return false
}
finalLang.Set(langs.MessageCode(code), value)
}
}
return true
}()
if !processOk {
return
}
}
// compile
for langCode, lang := range langMaps {
err = lang.Compile()
if err != nil {
fmt.Println("[ERROR]compile '" + langCode + "' failed: " + err.Error())
return
}
}
// check message codes
fmt.Println("checking message codes ...")
var defaultMessageMap = map[langs.MessageCode]string{}
for langCode, messageLang := range langMaps {
if langCode == defaultLang { // only check lang not equal to 'en-us'
defaultMessageMap = messageLang.GetAll()
continue
}
for messageCode := range messageLang.GetAll() {
if !lists.ContainsString(messageCodes, messageCode.String()) {
fmt.Println("[ERROR]message code '" + messageCode.String() + "' in lang '" + langCode + "' not exist in default lang file ('" + defaultLang + "')")
return
}
}
}
fmt.Println("found '" + types.String(len(messageCodes)) + "' message codes")
// generate codes/codes.go
sort.Strings(messageCodes)
var codesSource = `
// generated by run 'langs generate'
package codes
import(
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
)
const (
`
for index, messageCode := range messageCodes {
// add comment to message code
comment, _, _ := strings.Cut(defaultMessageMap[langs.MessageCode(messageCode)], "\n")
codesSource += upperWords(messageCode) + " langs.MessageCode = " + strconv.Quote(messageCode) + " // " + comment
// add NL
if index != len(messageCodes)-1 {
codesSource += "\n"
}
}
codesSource += `
)
`
formattedCodesSource, err := format.Source([]byte(codesSource))
if err != nil {
fmt.Println("[ERROR]format 'codes.go' failed: " + err.Error())
return
}
fmt.Println("generating 'codes/codes.go' ...")
err = os.WriteFile(Tea.Root+"/../pkg/langs/codes/codes.go", formattedCodesSource, 0666)
if err != nil {
fmt.Println("[ERROR]write to 'codes.go' failed: " + err.Error())
return
}
// generate messages_LANG.go
for langCode, messageLang := range langMaps {
var langFile = strings.ReplaceAll("messages/messages_"+langCode+".go", "-", "_")
fmt.Println("generating '" + langFile + "' ...")
var source = `
// generated by run 'langs generate'
package messages
import(
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
)
func init() {
langs.Load("` + langCode + `", map[langs.MessageCode]string{
`
for _, code := range messageCodes {
var value = messageLang.Get(langs.MessageCode(code))
source += strconv.Quote(code) + ": " + strconv.Quote(value) + ",\n"
}
source += `
})
}
`
formattedSource, err := format.Source([]byte(source))
if err != nil {
fmt.Println("[ERROR]format '" + langFile + "' failed: " + err.Error())
return
}
err = os.WriteFile(Tea.Root+"/../pkg/langs/"+langFile, formattedSource, 0666)
if err != nil {
fmt.Println("[ERROR]write file '" + langFile + "' failed: " + err.Error())
return
}
}
// generate language javascript files for EdgeAdmin and EdgeUser (commercial versions)
for lang, messageLang := range langMaps {
if lang != defaultLang {
// TODO merge messageMap with default message map
}
for _, component := range []string{"EdgeAdmin", "EdgeUser"} {
fmt.Println("generating '" + lang + ".js' for " + component + " ...")
var targetFile = filepath.Clean(Tea.Root + "/../../" + component + "/web/public/js/langs/" + lang + ".js")
var targetDir = filepath.Dir(targetFile)
dirStat, _ := os.Stat(targetDir)
if dirStat != nil {
var prefix = ""
switch component {
case "EdgeAdmin":
prefix = "admin_"
case "EdgeUser":
prefix = "user_"
}
if len(prefix) == 0 {
continue
}
var filteredMessages = map[langs.MessageCode]string{}
for code, value := range messageLang.GetAll() {
if strings.HasPrefix(code.String(), prefix) && strings.Contains(code.String(), "@ui_") /** must contains 'ui' **/ {
filteredMessages[code] = value
}
}
messageMapJSON, err := json.Marshal(filteredMessages)
if err != nil {
fmt.Println("[ERROR]marshal message map failed: " + err.Error())
return
}
err = os.WriteFile(targetFile, []byte(`// generated by 'langs generate'
window.LANG_MESSAGES = `+string(messageMapJSON)+";\n"), 0666)
if err != nil {
fmt.Println("[ERROR]write file '" + targetFile + "' failed: " + err.Error())
return
}
}
}
}
fmt.Println("success")
}
func upperWords(s string) string {
var pieces = strings.Split(s, "@")
for pieceIndex, piece := range pieces {
var words = strings.Split(piece, "_")
for index, word := range words {
words[index] = upperWord(word)
}
pieces[pieceIndex] = strings.Join(words, "")
}
return strings.Join(pieces, "_")
}
func upperWord(word string) string {
var l = len(word)
if l == 0 {
return ""
}
if l == 1 {
return strings.ToUpper(word)
}
// special words
switch word {
case "api", "http", "https", "tcp", "tls", "ssl", "udp", "ip", "dns", "ns",
"waf", "acme", "ssh", "toa", "http2", "http3", "uam", "cc",
"db", "isp", "sni", "ui", "soa", "ocsp", "en", "zh", "ad", "tsig",
"rpc", "dao":
return strings.ToUpper(word)
case "ipv6":
return "IPv6"
case "ddos":
return "DDoS"
case "webp":
return "WebP"
case "doh":
return "DoH"
}
return strings.ToUpper(word[:1]) + word[1:]
}
func runSearch() {
if len(os.Args) < 3 {
fmt.Println("Usage: langs search DIR")
return
}
var dir = os.Args[2]
stat, err := os.Stat(dir)
if err != nil {
fmt.Println("[ERROR]could not find dir '" + dir + "': " + err.Error())
return
}
if !stat.IsDir() {
fmt.Println("[ERROR]could not find dir '" + dir + "'")
return
}
fmt.Println("searching '" + dir + "' ...")
var ext = ".go"
var resultFiles = []string{}
for _, pattern := range []string{
"*" + ext,
strings.Repeat("*/", 1) + "*" + ext,
strings.Repeat("*/", 2) + "*" + ext,
strings.Repeat("*/", 3) + "*" + ext,
strings.Repeat("*/", 4) + "*" + ext,
strings.Repeat("*/", 5) + "*" + ext,
strings.Repeat("*/", 6) + "*" + ext,
strings.Repeat("*/", 7) + "*" + ext,
strings.Repeat("*/", 8) + "*" + ext,
strings.Repeat("*/", 9) + "*" + ext,
strings.Repeat("*/", 10) + "*" + ext,
} {
goFiles, err := filepath.Glob(dir + "/" + pattern)
if err != nil {
fmt.Println("[ERROR]search error: " + err.Error())
return
}
resultFiles = append(resultFiles, goFiles...)
}
if len(resultFiles) == 0 {
fmt.Println("no files found in the dir")
return
}
if err != nil {
fmt.Println("[ERROR]search dir '" + dir + "' failed: " + err.Error())
return
}
var hansRegexp = regexp.MustCompile(`\p{Han}+`)
var countMatches = 0
for _, goFile := range resultFiles {
if strings.HasSuffix(goFile, "_test.go") ||
strings.HasSuffix(goFile, "_plus_test.go") ||
strings.Contains(goFile, "/messages/messages_") {
continue
}
data, err := os.ReadFile(goFile)
if err != nil {
fmt.Println("[ERROR]read file '" + goFile + "' failed: " + err.Error())
return
}
var matches = hansRegexp.FindAllSubmatchIndex(data, -1)
if len(matches) > 0 {
for _, match := range matches {
// ignore comment
switch ext {
case ".go":
if checkIsInGoComment(data, match[0]) {
continue
}
}
countMatches++
fmt.Printf("%s %s\n", goFile+":"+types.String(bytes.Count(data[:match[0]], []byte{'\n'})+1), string(data[match[0]:match[1]]))
}
}
}
fmt.Println(countMatches, "matches")
}
func checkIsInGoComment(data []byte, start int) bool {
if start <= 1 {
return false
}
for {
start--
if start <= 1 || data[start] == '\n' {
return false
}
// 'SPACE //'
if data[start] == '/' && data[start-1] == '/' {
return true
}
// '/** SOMETHING **/'
if data[start] == '*' && data[start-1] == '/' {
return true
}
}
}

7
go.mod
View File

@@ -4,14 +4,17 @@ go 1.18
require (
github.com/golang/protobuf v1.5.2
github.com/iwind/TeaGo v0.0.0-20220304043459-0dd944a5b475
github.com/iwind/TeaGo v0.0.0-20230623080147-cd1e53b4915f
github.com/tdewolff/minify/v2 v2.12.7
golang.org/x/net v0.8.0
google.golang.org/grpc v1.45.0
google.golang.org/protobuf v1.27.1
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
gopkg.in/yaml.v3 v3.0.1
)
require (
github.com/kr/text v0.2.0 // indirect
github.com/tdewolff/parse/v2 v2.6.6 // indirect
golang.org/x/sys v0.6.0 // indirect
golang.org/x/text v0.8.0 // indirect
google.golang.org/genproto v0.0.0-20220317150908-0efb43f6373e // indirect

103
go.sum
View File

@@ -1,13 +1,10 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/DataDog/sketches-go v0.0.0-20190923095040-43f19ad77ff7/go.mod h1:Q5DbzQ+3AkgGwymQO7aZFNP7ns2lZKGtvRBzRXfdi60=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -15,21 +12,18 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP
github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgryski/go-rendezvous v0.0.0-20200624174652-8d2f3be8b2d9/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-redis/redis/v8 v8.0.0-beta.7/go.mod h1:FGJAWDWFht1sQ4qxyJHZZbVyvnVcKQN0E3u5/5lRz+g=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -53,68 +47,43 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/iwind/TeaGo v0.0.0-20220304043459-0dd944a5b475 h1:EseyfFaQOjWanGiby9KMw7PjDBMg/95tLDgIw/ns0Cw=
github.com/iwind/TeaGo v0.0.0-20220304043459-0dd944a5b475/go.mod h1:HRHK0zoC/og3c9/hKosD9yYVMTnnzm3PgXUdhRYHaLc=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/opentracing/opentracing-go v1.1.1-0.20190913142402-a7454ce5950e/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/iwind/TeaGo v0.0.0-20230623080147-cd1e53b4915f h1:xo6XmXLtveKcwcZAXV6VMxkWNzy/2dStfHEnyowsGAE=
github.com/iwind/TeaGo v0.0.0-20230623080147-cd1e53b4915f/go.mod h1:fi/Pq+/5m2HZoseM+39dMF57ANXRt6w4PkGu3NXPc5s=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
go.opentelemetry.io/otel v0.7.0/go.mod h1:aZMyHG5TqDOXEgH2tyLiXSUKly1jT3yqE9PmrzIeCdo=
github.com/tdewolff/minify/v2 v2.12.7 h1:pBzz2tAfz5VghOXiQIsSta6srhmTeinQPjRDHWoumCA=
github.com/tdewolff/minify/v2 v2.12.7/go.mod h1:ZRKTheiOGyLSK8hOZWWv+YoJAECzDivNgAlVYDHp/Ws=
github.com/tdewolff/parse/v2 v2.6.6 h1:Yld+0CrKUJaCV78DL1G2nk3C9lKrxyRTux5aaK/AkDo=
github.com/tdewolff/parse/v2 v2.6.6/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs=
github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/tdewolff/test v1.0.9 h1:SswqJCmeN4B+9gEAi/5uqT0qpi1y2/2O47V/1hhGZT0=
github.com/tdewolff/test v1.0.9/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -124,38 +93,26 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -163,7 +120,6 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20220317150908-0efb43f6373e h1:fNKDNuUyC4WH+inqDMpfXDdfvwfYILbsX+oskGZ8hxg=
@@ -172,7 +128,6 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M=
@@ -191,19 +146,11 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

View File

@@ -39,3 +39,8 @@ func TestIPVersion(t *testing.T) {
a.IsTrue(configutils.IPVersion(net.ParseIP("::1")) == 6)
a.IsTrue(configutils.IPVersion(net.ParseIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334")) == 6)
}
func TestQuoteIP(t *testing.T) {
t.Log(configutils.QuoteIP(configutils.QuoteIP("2001:da8:22::10")))
}

View File

@@ -12,7 +12,7 @@ type VariableHolders = []interface{}
var variableMapping = map[string][]interface{}{} // source => [holder1, ...]
var variableLocker = sync.RWMutex{}
var regexpNamedVariable = regexp.MustCompile(`\${[\w.-]+}`)
var regexpNamedVariable = regexp.MustCompile(`\${[@\w.-]+}`)
var stringBuilderPool = sync.Pool{
New: func() interface{} {
@@ -66,6 +66,18 @@ func ParseVariables(source string, replacer func(varName string) (value string))
return builder.String()
}
func ParseVariablesError(source string, replacer func(varName string) (value string, err error)) (string, error) {
var resultErr error
var result = ParseVariables(source, func(varName string) (value string) {
replacedValue, err := replacer(varName)
if err != nil {
resultErr = err
}
return replacedValue
})
return result, resultErr
}
// ParseVariablesFromHolders 从占位中分析变量
func ParseVariablesFromHolders(holders VariableHolders, replacer func(varName string) (value string)) string {
// no variables

View File

@@ -0,0 +1,29 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package dnsconfigs
import (
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
"github.com/iwind/TeaGo/types"
)
type DNSResolver struct {
Host string `json:"host"`
Port int `json:"port"`
Protocol string `json:"protocol"`
}
func (this *DNSResolver) Addr() string {
var port = this.Port
if port <= 0 {
// 暂时不支持DoH
// 实际应用中只支持udp
switch this.Protocol {
case "tls":
port = 853
default:
port = 53
}
}
return configutils.QuoteIP(this.Host) + ":" + types.String(port)
}

View File

@@ -70,6 +70,11 @@ func (this *Template) Extract(text string, emptyValues []string) (values map[str
}
}
// 自动修复省略的城市名
if len(values["city"]) == 0 && len(values["province"]) > 0 && len(values["town"]) > 0 {
values["city"] = values["province"]
}
ok = true
return
}

710
pkg/langs/codes/codes.go Normal file
View File

@@ -0,0 +1,710 @@
// generated by run 'langs generate'
package codes
import (
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
)
const (
ACMEProviderAccount_LogCreateACMEProviderAccount langs.MessageCode = "acme_provider_account@log_create_acme_provider_account" // 创建ACME服务商账号 %d
ACMEProviderAccount_LogDeleteACMEProviderAccount langs.MessageCode = "acme_provider_account@log_delete_acme_provider_account" // 删除ACME服务商账号 %d
ACMEProviderAccount_LogUpdateACMEProviderAccount langs.MessageCode = "acme_provider_account@log_update_acme_provider_account" // 修改ACME服务商账号 %d
ACMETask_LogCreateACMETask langs.MessageCode = "acme_task@log_create_acme_task" // 创建证书申请任务 %d
ACMETask_LogDeleteACMETask langs.MessageCode = "acme_task@log_delete_acme_task" // 删除证书申请任务 %d
ACMETask_LogRunACMETask langs.MessageCode = "acme_task@log_run_acme_task" // 执行ACME任务 %d
ACMETask_LogUpdateACMETask langs.MessageCode = "acme_task@log_update_acme_task" // 修改证书申请任务 %d
ACMEUser_LogCreateACMEUser langs.MessageCode = "acme_user@log_create_acme_user" // 创建ACME用户 %d
ACMEUser_LogDeleteACMEUser langs.MessageCode = "acme_user@log_delete_acme_user" // 删除ACME用户 %d
ACMEUser_LogUpdateACMEUser langs.MessageCode = "acme_user@log_update_acme_user" // 修改ACME用户 %d
ADNetwork_LogCreateADNetwork langs.MessageCode = "ad_network@log_create_ad_network" // 创建高防IP线路 %d
ADNetwork_LogDeleteADNetwork langs.MessageCode = "ad_network@log_delete_ad_network" // 删除高防IP线路
ADNetwork_LogUpdateADNetwork langs.MessageCode = "ad_network@log_update_ad_network" // 修改高防IP线路 %d
ADPackage_LogCreateADPackage langs.MessageCode = "ad_package@log_create_ad_package" // 创建高防产品 %d
ADPackage_LogDeleteADPackage langs.MessageCode = "ad_package@log_delete_ad_package" // 删除高防产品 %d
ADPackage_LogUpdateADPackage langs.MessageCode = "ad_package@log_update_ad_package" // 修改高防产品 %d
ADPackageInstance_LogCreateADPackageInstance langs.MessageCode = "ad_package_instance@log_create_ad_package_instance" // 创建高防实例 %d
ADPackageInstance_LogDeleteADPackageInstance langs.MessageCode = "ad_package_instance@log_delete_ad_package_instance" // 删除高防实例 %d
ADPackageInstance_LogUpdateADPackageInstance langs.MessageCode = "ad_package_instance@log_update_ad_package_instance" // 修改高防实例 %d
ADPackagePeriod_LogCreateADPackagePeriod langs.MessageCode = "ad_package_period@log_create_ad_package_period" // 创建高防IP实例有效期 %d
ADPackagePeriod_LogDeleteADPackagePeriod langs.MessageCode = "ad_package_period@log_delete_ad_package_period" // 删除高防IP实例有效期选项 %d
ADPackagePeriod_LogUpdateADPackagePeriod langs.MessageCode = "ad_package_period@log_update_ad_package_period" // 修改高防IP实例有效期选项 %d
ADPackagePrice_LogCreateADPackagePrice langs.MessageCode = "ad_package_price@log_create_ad_package_price" // 为用户 %d 创建高防实例:%d有效期%d数量%d
ADPackagePrice_LogUpdateADPackagePrice langs.MessageCode = "ad_package_price@log_update_ad_package_price" // 修改高防产品 %d 有效期 %d 的价格
Admin_LogCreateAdmin langs.MessageCode = "admin@log_create_admin" // 创建系统用户 %d
Admin_LogDeleteAdmin langs.MessageCode = "admin@log_delete_admin" // 删除系统用户 %d
Admin_LogUpdateAdmin langs.MessageCode = "admin@log_update_admin" // 修改系统用户 %d
AdminCommon_Canceled langs.MessageCode = "admin_common@canceled" // 已取消
AdminCommon_LogSystemError langs.MessageCode = "admin_common@log_system_error" // 系统发生错误:%s
AdminCommon_MenuSettingBasic langs.MessageCode = "admin_common@menu_setting_basic" // 基础设置
AdminCommon_MenuSettingCache langs.MessageCode = "admin_common@menu_setting_cache" // 缓存设置
AdminCommon_MenuSettingCachePolicy langs.MessageCode = "admin_common@menu_setting_cache_policy" // 缓存策略
AdminCommon_MenuSettingDDoSProtection langs.MessageCode = "admin_common@menu_setting_ddos_protection" // DDoS防护
AdminCommon_MenuSettingDNS langs.MessageCode = "admin_common@menu_setting_dns" // DNS设置
AdminCommon_MenuSettingHealthCheck langs.MessageCode = "admin_common@menu_setting_health_check" // 健康检查
AdminCommon_MenuSettingMetrics langs.MessageCode = "admin_common@menu_setting_metrics" // 统计指标
AdminCommon_MenuSettingWAFPolicy langs.MessageCode = "admin_common@menu_setting_waf_policy" // WAF策略
AdminCommon_MenuSettingWebP langs.MessageCode = "admin_common@menu_setting_webp" // WebP
AdminCommon_ServerError langs.MessageCode = "admin_common@server_error" // 服务器出了点小问题,请联系技术人员处理。
AdminCommon_System langs.MessageCode = "admin_common@system" // 系统
AdminDashboard_DiskUsageWarning langs.MessageCode = "admin_dashboard@disk_usage_warning" // 当前服务器磁盘空间不足,请立即扩充容量,文件路径:%s已使用%dG已使用比例%.2f%%,仅剩余空间:%.2f%%。<br/>如果是因为本机数据库数据过多,你可以:<a href="/settings/database/clean">[清理访问日志]</a> &nbsp; &nbsp; <a href="https://goedge.cn/docs/APINode/QA.md" target="_blank">[调整数据库binlog设置]</a>
AdminDashboard_UIDNS langs.MessageCode = "admin_dashboard@ui_dns" // DNS
AdminDashboard_UIEvents langs.MessageCode = "admin_dashboard@ui_events" // 事件
AdminDashboard_UIOverview langs.MessageCode = "admin_dashboard@ui_overview" // 概况
AdminDashboard_UIUser langs.MessageCode = "admin_dashboard@ui_user" // 用户
AdminDashboard_UIWAF langs.MessageCode = "admin_dashboard@ui_waf" // WAF
AdminLogin_LogFailed langs.MessageCode = "admin_login@log_failed" // 登录失败,用户名:%s
AdminLogin_LogOtpVerifiedSuccess langs.MessageCode = "admin_login@log_otp_verified_success" // 成功通过OTP验证登录系统
AdminLogin_LogSuccess langs.MessageCode = "admin_login@log_success" // 成功登录系统,用户名:%s
AdminLogin_LogSystemError langs.MessageCode = "admin_login@log_system_error" // 登录时发生系统错误:%s
AdminLogin_LogUpdateLogin langs.MessageCode = "admin_login@log_update_login" // 修改登录设置
AdminMenu_AdminRecipients langs.MessageCode = "admin_menu@admin_recipients" // 通知媒介
AdminMenu_Admins langs.MessageCode = "admin_menu@admins" // 系统用户
AdminMenu_Dashboard langs.MessageCode = "admin_menu@dashboard" // 数据看板
AdminMenu_DNS langs.MessageCode = "admin_menu@dns" // 域名解析
AdminMenu_DNSClusters langs.MessageCode = "admin_menu@dns_clusters" // 集群列表
AdminMenu_DNSIssues langs.MessageCode = "admin_menu@dns_issues" // 问题修复
AdminMenu_DNSProviders langs.MessageCode = "admin_menu@dns_providers" // DNS服务商
AdminMenu_Finance langs.MessageCode = "admin_menu@finance" // 财务管理
AdminMenu_FinanceAccounts langs.MessageCode = "admin_menu@finance_accounts" // 用户账户
AdminMenu_FinanceBills langs.MessageCode = "admin_menu@finance_bills" // 费用账单
AdminMenu_FinanceFee langs.MessageCode = "admin_menu@finance_fee" // 计费设置
AdminMenu_FinanceIncome langs.MessageCode = "admin_menu@finance_income" // 统计报表
AdminMenu_FinanceLogs langs.MessageCode = "admin_menu@finance_logs" // 收支明细
AdminMenu_FinanceOrders langs.MessageCode = "admin_menu@finance_orders" // 订单管理
AdminMenu_FinancePackages langs.MessageCode = "admin_menu@finance_packages" // 流量包
AdminMenu_Logs langs.MessageCode = "admin_menu@logs" // 日志审计
AdminMenu_NodeAntiDDoSProducts langs.MessageCode = "admin_menu@node_anti_ddos_products" // 高防IP
AdminMenu_NodeClusters langs.MessageCode = "admin_menu@node_clusters" // 集群列表
AdminMenu_NodeDistributedMonitors langs.MessageCode = "admin_menu@node_distributed_monitors" // 区域监控
AdminMenu_NodeIPList langs.MessageCode = "admin_menu@node_ip_list" // 节点IP
AdminMenu_NodeLogs langs.MessageCode = "admin_menu@node_logs" // 节点日志
AdminMenu_NodeRegions langs.MessageCode = "admin_menu@node_regions" // 区域设置
AdminMenu_NodeSSHGrants langs.MessageCode = "admin_menu@node_ssh_grants" // 节点SSH
AdminMenu_Nodes langs.MessageCode = "admin_menu@nodes" // 边缘节点
AdminMenu_NS langs.MessageCode = "admin_menu@ns" // 智能DNS
AdminMenu_NSAccessLogs langs.MessageCode = "admin_menu@ns_access_logs" // 访问日志
AdminMenu_NSClusters langs.MessageCode = "admin_menu@ns_clusters" // 集群管理
AdminMenu_NSDomainBatchOperations langs.MessageCode = "admin_menu@ns_domain_batch_operations" // 批量操作
AdminMenu_NSDomainGroups langs.MessageCode = "admin_menu@ns_domain_groups" // 域名分组
AdminMenu_NSDomains langs.MessageCode = "admin_menu@ns_domains" // 域名管理
AdminMenu_NSNodeLogs langs.MessageCode = "admin_menu@ns_node_logs" // 运行日志
AdminMenu_NSPlans langs.MessageCode = "admin_menu@ns_plans" // 套餐设置
AdminMenu_NSResolveTest langs.MessageCode = "admin_menu@ns_resolve_test" // 解析测试
AdminMenu_NSRoutes langs.MessageCode = "admin_menu@ns_routes" // 线路管理
AdminMenu_NSSettings langs.MessageCode = "admin_menu@ns_settings" // 全局配置
AdminMenu_NSUserPlans langs.MessageCode = "admin_menu@ns_user_plans" // 用户套餐
AdminMenu_PlanUserPlans langs.MessageCode = "admin_menu@plan_user_plans" // 已购套餐
AdminMenu_Plans langs.MessageCode = "admin_menu@plans" // 套餐管理
AdminMenu_ServerAccessLogPolicies langs.MessageCode = "admin_menu@server_access_log_policies" // 日志策略
AdminMenu_ServerAccessLogs langs.MessageCode = "admin_menu@server_access_logs" // 访问日志
AdminMenu_ServerCachePolicies langs.MessageCode = "admin_menu@server_cache_policies" // 缓存策略
AdminMenu_ServerCerts langs.MessageCode = "admin_menu@server_certs" // 证书管理
AdminMenu_ServerGlobalSettings langs.MessageCode = "admin_menu@server_global_settings" // 通用设置
AdminMenu_ServerGroups langs.MessageCode = "admin_menu@server_groups" // 网站分组
AdminMenu_ServerIPLists langs.MessageCode = "admin_menu@server_ip_lists" // IP名单
AdminMenu_ServerMetrics langs.MessageCode = "admin_menu@server_metrics" // 统计指标
AdminMenu_ServerPurgeFetchCaches langs.MessageCode = "admin_menu@server_purge_fetch_caches" // 刷新预热
AdminMenu_ServerScripts langs.MessageCode = "admin_menu@server_scripts" // 脚本库
AdminMenu_ServerTrafficStats langs.MessageCode = "admin_menu@server_traffic_stats" // 用量统计
AdminMenu_ServerWAFPolicies langs.MessageCode = "admin_menu@server_waf_policies" // WAF策略
AdminMenu_Servers langs.MessageCode = "admin_menu@servers" // 网站列表
AdminMenu_SettingAdvancedSettings langs.MessageCode = "admin_menu@setting_advanced_settings" // 高级设置
AdminMenu_SettingAuthority langs.MessageCode = "admin_menu@setting_authority" // 商业版本
AdminMenu_SettingBasicSettings langs.MessageCode = "admin_menu@setting_basic_settings" // 基础设置
AdminMenu_Settings langs.MessageCode = "admin_menu@settings" // 系统设置
AdminMenu_TicketCategory langs.MessageCode = "admin_menu@ticket_category" // 分类
AdminMenu_Tickets langs.MessageCode = "admin_menu@tickets" // 工单系统
AdminMenu_UserSettings langs.MessageCode = "admin_menu@user_settings" // 用户设置
AdminMenu_Users langs.MessageCode = "admin_menu@users" // 平台用户
AdminProfile_LogUpdateProfile langs.MessageCode = "admin_profile@log_update_profile" // 修改个人资料
AdminSecurity_LogUpdateSecuritySettings langs.MessageCode = "admin_security@log_update_security_settings" // 修改管理界面安全设置
AdminServer_LogUpdateServerHTTPSettings langs.MessageCode = "admin_server@log_update_server_http_settings" // 修改管理界面的HTTP设置
AdminServer_LogUpdateServerHTTPSSettings langs.MessageCode = "admin_server@log_update_server_https_settings" // 修改管理界面的HTTPS设置
AdminSetting_TabAccessLogDatabases langs.MessageCode = "admin_setting@tab_access_log_databases" // 日志数据库
AdminSetting_TabAdminSecuritySettings langs.MessageCode = "admin_setting@tab_admin_security_settings" // 安全设置
AdminSetting_TabAdminServer langs.MessageCode = "admin_setting@tab_admin_server" // Web服务
AdminSetting_TabAdminUI langs.MessageCode = "admin_setting@tab_admin_ui" // 管理界面设置
AdminSetting_TabAPINodes langs.MessageCode = "admin_setting@tab_api_nodes" // API节点
AdminSetting_TabAuthority langs.MessageCode = "admin_setting@tab_authority" // 商业版认证
AdminSetting_TabBackup langs.MessageCode = "admin_setting@tab_backup" // 备份
AdminSetting_TabClientBrowsers langs.MessageCode = "admin_setting@tab_client_browsers" // 浏览器库
AdminSetting_TabClientOperationSystems langs.MessageCode = "admin_setting@tab_client_operation_systems" // 操作系统库
AdminSetting_TabDatabase langs.MessageCode = "admin_setting@tab_database" // 数据库
AdminSetting_TabIPLibrary langs.MessageCode = "admin_setting@tab_ip_library" // IP库
AdminSetting_TabLogin langs.MessageCode = "admin_setting@tab_login" // 登录设置
AdminSetting_TabMonitorNodes langs.MessageCode = "admin_setting@tab_monitor_nodes" // 监控节点
AdminSetting_TabProfile langs.MessageCode = "admin_setting@tab_profile" // 个人资料
AdminSetting_TabTransfer langs.MessageCode = "admin_setting@tab_transfer" // 迁移
AdminSetting_TabUpdates langs.MessageCode = "admin_setting@tab_updates" // 检查更新
AdminSetting_TabUserNodes langs.MessageCode = "admin_setting@tab_user_nodes" // 用户节点
AdminSetting_TabUserUI langs.MessageCode = "admin_setting@tab_user_ui" // 用户界面设置
AdminUI_DefaultProductName langs.MessageCode = "admin_ui@default_product_name" // GoEdge
AdminUI_DefaultSystemName langs.MessageCode = "admin_ui@default_system_name" // GoEdge管理员系统
AdminUI_LogUpdateUISettings langs.MessageCode = "admin_ui@log_update_ui_settings" // 修改管理界面设置
AdminUpdate_LogIgnoreVersion langs.MessageCode = "admin_update@log_ignore_version" // 忽略升级版本 %s
AdminUpdate_LogResetIgnoreVersion langs.MessageCode = "admin_update@log_reset_ignore_version" // 重置忽略升级版本
AdminUpdate_LogUpdateCheckSettings langs.MessageCode = "admin_update@log_update_check_settings" // 修改检查更新设置
APINode_LogCreateAPINode langs.MessageCode = "api_node@log_create_api_node" // 创建API节点 %d
APINode_LogDeleteAPINode langs.MessageCode = "api_node@log_delete_api_node" // 删除API节点 %d
APINode_LogUpdateAPINode langs.MessageCode = "api_node@log_update_api_node" // 修改API节点 %d
ClientBrowser_LogCreateBrowser langs.MessageCode = "client_browser@log_create_browser" // 创建浏览器信息 %s
ClientBrowser_LogUpdateClientBrowser langs.MessageCode = "client_browser@log_update_client_browser" // 修改浏览器信息 %d
ClientSystem_LogCreateSystem langs.MessageCode = "client_system@log_create_system" // 创建操作系统信息 %s
ClientSystem_LogUpdateClientSystem langs.MessageCode = "client_system@log_update_client_system" // 修改操作系统信息 %d
Database_LogDeleteTable langs.MessageCode = "database@log_delete_table" // 删除数据表 %s
Database_LogTruncateTable langs.MessageCode = "database@log_truncate_table" // 清空数据表 %s 数据
Database_LogUpdateAPINodeDatabaseConfig langs.MessageCode = "database@log_update_api_node_database_config" // 修改API节点数据库设置
Database_LogUpdateCleanDays langs.MessageCode = "database@log_update_clean_days" // 修改数据库自动清理设置
DBNode_LogCreateDBNode langs.MessageCode = "db_node@log_create_db_node" // 创建数据库节点 %d
DBNode_LogDeleteDBNode langs.MessageCode = "db_node@log_delete_db_node" // 删除数据库节点 %d
DBNode_LogDeleteTable langs.MessageCode = "db_node@log_delete_table" // 删除数据库节点 %d 数据表 %s
DBNode_LogTruncateTable langs.MessageCode = "db_node@log_truncate_table" // 清空数据库节点 %d 数据表 %s 数据
DBNode_LogUpdateDBNode langs.MessageCode = "db_node@log_update_db_node" // 修改数据库节点 %d
DBNode_TabNodes langs.MessageCode = "db_node@tab_nodes" // 数据库节点
DDoSProtection_LogUpdateClusterDDoSProtection langs.MessageCode = "ddos_protection@log_update_cluster_ddos_protection" // 修改集群 %d 的DDOS防护设置
DDoSProtection_LogUpdateNodeDDoSProtection langs.MessageCode = "ddos_protection@log_update_node_ddos_protection" // 修改节点 %d 的DDOS防护设置
DNS_LogCreateDomain langs.MessageCode = "dns@log_create_domain" // 添加管理域名到DNS服务商 %d
DNS_LogDeleteDomain langs.MessageCode = "dns@log_delete_domain" // 从DNS服务商中删除域名 %d
DNS_LogRecoverDomain langs.MessageCode = "dns@log_recover_domain" // 从DNS服务商中恢复域名 %d
DNS_LogSyncCluster langs.MessageCode = "dns@log_sync_cluster" // 同步集群 %d 的DNS设置
DNS_LogSyncDomain langs.MessageCode = "dns@log_sync_domain" // 同步DNS域名数据 %d
DNS_LogUpdateClusterDNS langs.MessageCode = "dns@log_update_cluster_dns" // 修改集群 %d DNS设置
DNS_LogUpdateDomain langs.MessageCode = "dns@log_update_domain" // 修改DNS服务商域名 %d
DNS_LogUpdateNodeDNS langs.MessageCode = "dns@log_update_node_dns" // 修改节点 %d 的DNS设置
DNSProvider_LogCreateDNSProvider langs.MessageCode = "dns_provider@log_create_dns_provider" // 创建DNS服务商 %d
DNSProvider_LogDeleteDNSProvider langs.MessageCode = "dns_provider@log_delete_dns_provider" // 删除DNS服务商 %d
DNSProvider_LogUpdateDNSProvider langs.MessageCode = "dns_provider@log_update_dns_provider" // 修改DNS服务商 %d
DNSTask_LogDeleteAllDNSTasks langs.MessageCode = "dns_task@log_delete_all_dns_tasks" // 删除所有DNS同步任务
DNSTask_LogDeleteDNSTask langs.MessageCode = "dns_task@log_delete_dns_task" // 删除DNS同步任务 %d
Finance_LogBillGenerateManually langs.MessageCode = "finance@log_bill_generate_manually" // 手动生成上个月 %s 账单
Finance_LogUpdateUserOrderConfig langs.MessageCode = "finance@log_update_user_order_config" // 修改订单设置
FinanceFee_LogUpdateFeeSetting langs.MessageCode = "finance_fee@log_update_fee_setting" // 修改默认计费方式
HTTPAccessLogPolicy_LogCreateHTTPAccessLogPolicy langs.MessageCode = "http_access_log_policy@log_create_http_access_log_policy" // 创建访问日志策略 %d
HTTPAccessLogPolicy_LogDeleteHTTPAccessLogPolicy langs.MessageCode = "http_access_log_policy@log_delete_http_access_log_policy" // 删除访问日志策略 %d
HTTPAccessLogPolicy_LogTestHTTPAccessLogPolicy langs.MessageCode = "http_access_log_policy@log_test_http_access_log_policy" // 测试向访问日志策略 %d 写入数据
HTTPAccessLogPolicy_LogUpdateHTTPAccessLogPolicy langs.MessageCode = "http_access_log_policy@log_update_http_access_log_policy" // 修改访问日志策略 %d
HTTPAuthPolicy_LogCreateHTTPAuthPolicy langs.MessageCode = "http_auth_policy@log_create_http_auth_policy" // 创建HTTP鉴权 %d
HTTPAuthPolicy_LogUpdateHTTPAuthPolicy langs.MessageCode = "http_auth_policy@log_update_http_auth_policy" // 修改HTTP鉴权 %d
HTTPCacheTask_LogCreateHTTPCacheTaskFetch langs.MessageCode = "http_cache_task@log_create_http_cache_task_fetch" // 批量预热缓存Key
HTTPCacheTask_LogCreateHTTPCacheTaskPurge langs.MessageCode = "http_cache_task@log_create_http_cache_task_purge" // 批量刷新缓存Key
HTTPCacheTask_LogDeleteHTTPCacheTask langs.MessageCode = "http_cache_task@log_delete_http_cache_task" // 删除缓存任务 %d
HTTPCacheTask_LogResetHTTPCacheTask langs.MessageCode = "http_cache_task@log_reset_http_cache_task" // 重置缓存任务 %d 状态
HTTPFastcgi_LogCreateHTTPFastcgi langs.MessageCode = "http_fastcgi@log_create_http_fastcgi" // 创建Fastcgi %d
HTTPFastcgi_LogUpdateHTTPFastcgi langs.MessageCode = "http_fastcgi@log_update_http_fastcgi" // 修改Fastcgi %d
HTTPLocation_LogCreateHTTPLocation langs.MessageCode = "http_location@log_create_http_location" // 创建路由规则:%s
HTTPLocation_LogUpdateHTTPLocation langs.MessageCode = "http_location@log_update_http_location" // 修改路由规则 %d 设置
HTTPRewriteRule_LogCreateRewriteRule langs.MessageCode = "http_rewrite_rule@log_create_rewrite_rule" // 在Web %d 中创建重写规则 %d
HTTPRewriteRule_LogDeleteRewriteRule langs.MessageCode = "http_rewrite_rule@log_delete_rewrite_rule" // 从Web %d 中删除重写规则 %d
HTTPRewriteRule_LogSortRewriteRules langs.MessageCode = "http_rewrite_rule@log_sort_rewrite_rules" // 对Web %d 中的重写规则进行排序
HTTPRewriteRule_LogUpdateRewriteRule langs.MessageCode = "http_rewrite_rule@log_update_rewrite_rule" // 修改Web %d 中的重写规则 %d
IPItem_LogCreateIPItem langs.MessageCode = "ip_item@log_create_ip_item" // 在名单 %d 中创建IP %d
IPItem_LogDeleteIPItem langs.MessageCode = "ip_item@log_delete_ip_item" // 从IP名单 %d 中删除IP %d
IPItem_LogReadAllIPItems langs.MessageCode = "ip_item@log_read_all_ip_items" // 将所有IP名单置为已读
IPItem_LogUpdateIPItem langs.MessageCode = "ip_item@log_update_ip_item" // 修改IP名单中的IP %d
IPLibrary_LogFinishIPLibrary langs.MessageCode = "ip_library@log_finish_ip_library" // 完成IP库%d 制作
IPLibraryArtifact_LogCancelIPLibraryArtifact langs.MessageCode = "ip_library_artifact@log_cancel_ip_library_artifact" // 取消使用IP库 %d
IPLibraryArtifact_LogDeleteIPLibraryArtifact langs.MessageCode = "ip_library_artifact@log_delete_ip_library_artifact" // 删除IP库 %d
IPLibraryArtifact_LogUseIPLibraryArtifact langs.MessageCode = "ip_library_artifact@log_use_ip_library_artifact" // 使用IP库 %d
IPLibraryFile_LogDeleteIPLibraryFile langs.MessageCode = "ip_library_file@log_delete_ip_library_file" // 删除IP库文件 %d
IPLibraryFile_LogGenerateIPLibraryFile langs.MessageCode = "ip_library_file@log_generate_ip_library_file" // 重新生成IP库 %d 文件
IPLibraryFile_LogUploadIPLibraryFile langs.MessageCode = "ip_library_file@log_upload_ip_library_file" // 上传IP库 %d
IPList_LogBindIPListWAFPolicy langs.MessageCode = "ip_list@log_bind_ip_list_waf_policy" // 绑定IP名单 %d 到WAF策略 %d
IPList_LogCreateIPItemsBatch langs.MessageCode = "ip_list@log_create_ip_items_batch" // 在IP名单 %d 中批量添加IP
IPList_LogCreateIPList langs.MessageCode = "ip_list@log_create_ip_list" // 创建IP名单 %d
IPList_LogDeleteIPBatch langs.MessageCode = "ip_list@log_delete_ip_batch" // 批量删除IP名单中的IP%s
IPList_LogDeleteIPList langs.MessageCode = "ip_list@log_delete_ip_list" // 删除IP名单 %d
IPList_LogExportIPList langs.MessageCode = "ip_list@log_export_ip_list" // 导出IP名单 %d
IPList_LogImportIPList langs.MessageCode = "ip_list@log_import_ip_list" // 导入IP名单 %d
IPList_LogUnbindIPListWAFPolicy langs.MessageCode = "ip_list@log_unbind_ip_list_waf_policy" // 解除绑定IP名单 %d WAF策略 %d
IPList_LogUpdateIPList langs.MessageCode = "ip_list@log_update_ip_list" // 修改IP名单 %d
Level_Error langs.MessageCode = "level@error" // 错误
Level_Info langs.MessageCode = "level@info" // 信息
Level_Warn langs.MessageCode = "level@warn" // 警告
Log_LogCleanAllLogs langs.MessageCode = "log@log_clean_all_logs" // 清除全部日志
Log_LogCleanLogsDaysBefore langs.MessageCode = "log@log_clean_logs_days_before" // 清除 %d 以前的日志
Log_LogDeleteLog langs.MessageCode = "log@log_delete_log" // 删除单个操作日志 %d
Log_LogUpdateSettings langs.MessageCode = "log@log_update_settings" // 修改日志相关配置
Log_TagAccessLog langs.MessageCode = "log@tag_access_log" // 访问日志
Log_TagListener langs.MessageCode = "log@tag_listener" // 端口监听
Log_TagScript langs.MessageCode = "log@tag_script" // 脚本
Log_TagWAF langs.MessageCode = "log@tag_waf" // WAF
Message_LogReadAll langs.MessageCode = "message@log_read_all" // 将所有消息置为已读
Message_LogReadMessages langs.MessageCode = "message@log_read_messages" // 将一组消息置为已读
MessageMediaInstance_LogCreateMessageMediaInstance langs.MessageCode = "message_media_instance@log_create_message_media_instance" // 创建消息媒介 %d
MessageMediaInstance_LogDeleteMessageMediaInstance langs.MessageCode = "message_media_instance@log_delete_message_media_instance" // 删除消息媒介 %d
MessageMediaInstance_LogUpdateMessageMediaInstance langs.MessageCode = "message_media_instance@log_update_message_media_instance" // 修改消息媒介 %d
MessageReciever_LogUpdateClusterMessageReceivers langs.MessageCode = "message_reciever@log_update_cluster_message_receivers" // 修改集群 %d 消息接收人
MessageRecipient_LogCreateMessageRecipient langs.MessageCode = "message_recipient@log_create_message_recipient" // 创建媒介接收人 %d
MessageRecipient_LogDeleteMessageRecipient langs.MessageCode = "message_recipient@log_delete_message_recipient" // 删除媒介接收人 %d
MessageRecipient_LogUpdateMessageRecipient langs.MessageCode = "message_recipient@log_update_message_recipient" // 修改媒介接收人 %d
MessageTask_LogCreateTestingMessageTask langs.MessageCode = "message_task@log_create_testing_message_task" // 创建媒介测试任务 %d
MessageTask_LogDeleteMessageTask langs.MessageCode = "message_task@log_delete_message_task" // 删除消息发送任务 %d
MetricChart_LogCreateMetricChart langs.MessageCode = "metric_chart@log_create_metric_chart" // 创建指标图表 %d
MetricChart_LogDeleteMetricChart langs.MessageCode = "metric_chart@log_delete_metric_chart" // 删除指标图表 %d
MetricChart_LogUpdateMetricChart langs.MessageCode = "metric_chart@log_update_metric_chart" // 修改指标图表 %d
MetricItem_LogAddMetricItemToCluster langs.MessageCode = "metric_item@log_add_metric_item_to_cluster" // 添加指标 %d 到集群 %d
MetricItem_LogCreateMetricItem langs.MessageCode = "metric_item@log_create_metric_item" // 创建统计指标 %d
MetricItem_LogDeleteMetricItem langs.MessageCode = "metric_item@log_delete_metric_item" // 删除统计指标
MetricItem_LogDeleteMetricItemFromCluster langs.MessageCode = "metric_item@log_delete_metric_item_from_cluster" // 从集群 %d 中移除指标 %d
MetricItem_LogUpdateMetricItem langs.MessageCode = "metric_item@log_update_metric_item" // 修改统计指标 %d
MonitorNode_LogCreateMonitorNode langs.MessageCode = "monitor_node@log_create_monitor_node" // 创建监控节点 %d
MonitorNode_LogDeleteMonitorNode langs.MessageCode = "monitor_node@log_delete_monitor_node" // 删除监控节点 %d
MonitorNode_LogUpdateMonitorNode langs.MessageCode = "monitor_node@log_update_monitor_node" // 修改监控节点 %d
Node_LogCreateNode langs.MessageCode = "node@log_create_node" // 创建节点 %d
Node_LogCreateNodeBatch langs.MessageCode = "node@log_create_node_batch" // 批量创建节点
Node_LogDeleteNodeFromCluster langs.MessageCode = "node@log_delete_node_from_cluster" // 从集群 %d 中删除节点 %d
Node_LogInstallNode langs.MessageCode = "node@log_install_node" // 安装节点 %d
Node_LogInstallNodeRemotely langs.MessageCode = "node@log_install_node_remotely" // 远程安装节点 %d
Node_LogStartNodeRemotely langs.MessageCode = "node@log_start_node_remotely" // 远程启动节点 %d
Node_LogStopNodeRemotely langs.MessageCode = "node@log_stop_node_remotely" // 远程停止节点 %d
Node_LogUpNode langs.MessageCode = "node@log_up_node" // 手动上线节点 %d
Node_LogUpdateNode langs.MessageCode = "node@log_update_node" // 修改节点 %d 基本信息
Node_LogUpdateNodeInstallationStatus langs.MessageCode = "node@log_update_node_installation_status" // 修改节点安装状态 %d
Node_LogUpgradeNodeRemotely langs.MessageCode = "node@log_upgrade_node_remotely" // 远程升级节点 %d
Node_UngroupedLabel langs.MessageCode = "node@ungrouped_label" // 未分组
NodeAction_LogCopyNodeActionsToCluster langs.MessageCode = "node_action@log_copy_node_actions_to_cluster" // 复制节点 %d 调度动作到集群
NodeAction_LogCopyNodeActionsToGroup langs.MessageCode = "node_action@log_copy_node_actions_to_group" // 复制节点 %d 调度动作到分组
NodeAction_LogCreateNodeAction langs.MessageCode = "node_action@log_create_node_action" // 创建动作 %d
NodeAction_LogDeleteNodeAction langs.MessageCode = "node_action@log_delete_node_action" // 删除节点动作 %d
NodeAction_LogSortNodeActions langs.MessageCode = "node_action@log_sort_node_actions" // 修改节点 %d 动作排序
NodeAction_LogUpdateNodeAction langs.MessageCode = "node_action@log_update_node_action" // 修改节点动作 %d
NodeCache_LogUpdateNodeCacheSettings langs.MessageCode = "node_cache@log_update_node_cache_settings" // 修改节点 %d 缓存设置
NodeCluster_LogCreateCluster langs.MessageCode = "node_cluster@log_create_cluster" // 创建节点集群:%d
NodeCluster_LogDeleteCluster langs.MessageCode = "node_cluster@log_delete_cluster" // 删除集群 %d
NodeCluster_LogPinCluster langs.MessageCode = "node_cluster@log_pin_cluster" // 置顶集群 %d
NodeCluster_LogRunClusterHealthCheck langs.MessageCode = "node_cluster@log_run_cluster_health_check" // 执行集群健康检查设置 %d
NodeCluster_LogUnpinCluster langs.MessageCode = "node_cluster@log_unpin_cluster" // 取消置顶集群 %d
NodeCluster_LogUpdateClusterBasicSettings langs.MessageCode = "node_cluster@log_update_cluster_basic_settings" // 修改集群基础设置 %d
NodeCluster_LogUpdateClusterHealthCheck langs.MessageCode = "node_cluster@log_update_cluster_health_check" // 修改集群健康检查设置 %d
NodeClusterMenu_SettingBasic langs.MessageCode = "node_cluster_menu@setting_basic" // 基础设置
NodeClusterMenu_SettingCachePolicy langs.MessageCode = "node_cluster_menu@setting_cache_policy" // 缓存策略
NodeClusterMenu_SettingCC langs.MessageCode = "node_cluster_menu@setting_cc" // CC防护
NodeClusterMenu_SettingDDoSProtection langs.MessageCode = "node_cluster_menu@setting_ddos_protection" // DDoS防护
NodeClusterMenu_SettingDNS langs.MessageCode = "node_cluster_menu@setting_dns" // DNS设置
NodeClusterMenu_SettingHealthCheck langs.MessageCode = "node_cluster_menu@setting_health_check" // 健康检查
NodeClusterMenu_SettingHTTP3 langs.MessageCode = "node_cluster_menu@setting_http3" // HTTP/3
NodeClusterMenu_SettingMetrics langs.MessageCode = "node_cluster_menu@setting_metrics" // 统计指标
NodeClusterMenu_SettingNotification langs.MessageCode = "node_cluster_menu@setting_notification" // 消息通知
NodeClusterMenu_SettingPages langs.MessageCode = "node_cluster_menu@setting_pages" // 自定义页面
NodeClusterMenu_SettingSchedule langs.MessageCode = "node_cluster_menu@setting_schedule" // 智能调度
NodeClusterMenu_SettingServiceGlobal langs.MessageCode = "node_cluster_menu@setting_service_global" // 网站设置
NodeClusterMenu_SettingSystemService langs.MessageCode = "node_cluster_menu@setting_system_service" // 系统服务
NodeClusterMenu_SettingThresholds langs.MessageCode = "node_cluster_menu@setting_thresholds" // 阈值设置
NodeClusterMenu_SettingTOA langs.MessageCode = "node_cluster_menu@setting_toa" // TOA设置
NodeClusterMenu_SettingUAM langs.MessageCode = "node_cluster_menu@setting_uam" // 5秒盾
NodeClusterMenu_SettingWAFActions langs.MessageCode = "node_cluster_menu@setting_waf_actions" // WAF动作
NodeClusterMenu_SettingWAFPolicy langs.MessageCode = "node_cluster_menu@setting_waf_policy" // WAF策略
NodeClusterMenu_SettingWebP langs.MessageCode = "node_cluster_menu@setting_webp" // WebP
NodeClusterMenu_TabClusterDashboard langs.MessageCode = "node_cluster_menu@tab_cluster_dashboard" // 集群看板
NodeClusterMenu_TabClusterDelete langs.MessageCode = "node_cluster_menu@tab_cluster_delete" // 删除集群
NodeClusterMenu_TabClusterNodes langs.MessageCode = "node_cluster_menu@tab_cluster_nodes" // 节点列表
NodeClusterMenu_TabClusterSettings langs.MessageCode = "node_cluster_menu@tab_cluster_settings" // 集群设置
NodeDNS_LogUpdateNodeDNS langs.MessageCode = "node_dns@log_update_node_dns" // 修改节点 %d DNS设置
NodeGrant_LogCreateSSHGrant langs.MessageCode = "node_grant@log_create_ssh_grant" // 创建SSH认证 %d
NodeGrant_LogDeleteSSHGrant langs.MessageCode = "node_grant@log_delete_ssh_grant" // 删除SSH认证 %d
NodeGrant_LogUpdateSSHGrant langs.MessageCode = "node_grant@log_update_ssh_grant" // 修改SSH认证 %d
NodeGrant_MethodPrivateKey langs.MessageCode = "node_grant@method_private_key" // 私钥
NodeGrant_MethodUserPassword langs.MessageCode = "node_grant@method_user_password" // 用户名+密码
NodeGroup_LogCreateNodeGroup langs.MessageCode = "node_group@log_create_node_group" // 创建节点分组 %d
NodeGroup_LogDeleteNodeGroup langs.MessageCode = "node_group@log_delete_node_group" // 删除节点分组 %d
NodeGroup_LogSortNodeGroups langs.MessageCode = "node_group@log_sort_node_groups" // 修改节点分组排序
NodeGroup_LogUpdateNodeGroup langs.MessageCode = "node_group@log_update_node_group" // 修改节点分组 %d
NodeIPAddress_LogDeleteNodeIPAddress langs.MessageCode = "node_ip_address@log_delete_node_ip_address" // 删除IP地址 %d
NodeIPAddress_LogDownNodeIPAddress langs.MessageCode = "node_ip_address@log_down_node_ip_address" // 手动设置IP地址 %d 下线
NodeIPAddress_LogRestoreNodeIPAddress langs.MessageCode = "node_ip_address@log_restore_node_ip_address" // 取消IP地址 %d 的备用IP
NodeIPAddress_LogUpNodeIPAddress langs.MessageCode = "node_ip_address@log_up_node_ip_address" // 手动设置IP地址 %d 上线
NodeLog_LogDeleteNodeLogsBatch langs.MessageCode = "node_log@log_delete_node_logs_batch" // 批量删除节点运行日志
NodeLog_LogFixAllLogs langs.MessageCode = "node_log@log_fix_all_logs" // 设置所有日志为已修复
NodeLog_LogFixNodeLogs langs.MessageCode = "node_log@log_fix_node_logs" // 设置日志 %s 为已修复
NodeMenu_CreateMultipleNodes langs.MessageCode = "node_menu@create_multiple_nodes" // 批量创建
NodeMenu_CreateSingleNode langs.MessageCode = "node_menu@create_single_node" // 单个创建
NodeMenu_InstallAutoRegister langs.MessageCode = "node_menu@install_auto_register" // 自动注册
NodeMenu_InstallManually langs.MessageCode = "node_menu@install_manually" // 手动安装
NodeMenu_InstallRemote langs.MessageCode = "node_menu@install_remote" // 远程安装(%d)
NodeMenu_InstallRemoteUpgrade langs.MessageCode = "node_menu@install_remote_upgrade" // 远程升级(%d)
NodeMenu_SettingBasic langs.MessageCode = "node_menu@setting_basic" // 基础设置
NodeMenu_SettingCache langs.MessageCode = "node_menu@setting_cache" // 缓存设置
NodeMenu_SettingDDoSProtection langs.MessageCode = "node_menu@setting_ddos_protection" // DDoS防护
NodeMenu_SettingDNS langs.MessageCode = "node_menu@setting_dns" // DNS设置
NodeMenu_SettingSchedule langs.MessageCode = "node_menu@setting_schedule" // 智能调度
NodeMenu_SettingSSH langs.MessageCode = "node_menu@setting_ssh" // SSH设置
NodeMenu_SettingSystem langs.MessageCode = "node_menu@setting_system" // 系统设置
NodeMenu_SettingThresholds langs.MessageCode = "node_menu@setting_thresholds" // 阈值设置
NodePriceItem_LogCreateNodePriceItemBandwidth langs.MessageCode = "node_price_item@log_create_node_price_item_bandwidth" // 创建带宽价格项目 %d
NodePriceItem_LogCreateNodePriceItemTraffic langs.MessageCode = "node_price_item@log_create_node_price_item_traffic" // 创建流量价格项目 %d
NodePriceItem_LogDeleteNodePriceItem langs.MessageCode = "node_price_item@log_delete_node_price_item" // 删除流量价格项目 %d
NodePriceItem_LogUpdateNodePriceItemBandwidth langs.MessageCode = "node_price_item@log_update_node_price_item_bandwidth" // 修改带宽价格项目 %d
NodePriceItem_LogUpdateNodePriceItemTraffic langs.MessageCode = "node_price_item@log_update_node_price_item_traffic" // 修改流量价格项目 %d
NodeRegion_LogCreateNodeRegion langs.MessageCode = "node_region@log_create_node_region" // 创建节点区域 %d
NodeRegion_LogDeleteNodeRegion langs.MessageCode = "node_region@log_delete_node_region" // 删除节点区域 %d
NodeRegion_LogMoveNodeBetweenRegions langs.MessageCode = "node_region@log_move_node_between_regions" // 修改节点 %d 区域到 %d
NodeRegion_LogSortNodeRegions langs.MessageCode = "node_region@log_sort_node_regions" // 修改节点区域排序
NodeRegion_LogUpdateNodeRegion langs.MessageCode = "node_region@log_update_node_region" // 修改节点区域 %d
NodeRegionPrice_LogUpdateNodeRegionPrice langs.MessageCode = "node_region_price@log_update_node_region_price" // 修改区域 %d - 价格项 %d 的价格
NodeSchedule_LogResetNodeActionStatus langs.MessageCode = "node_schedule@log_reset_node_action_status" // 重置节点 %d 动作状态
NodeSchedule_LogUpdateNodeScheduleBasic langs.MessageCode = "node_schedule@log_update_node_schedule_basic" // 修改节点调度基本信息
NodeSSH_LogUpdateNodeSSH langs.MessageCode = "node_ssh@log_update_node_ssh" // 修改节点 %d SSH配置
NodeSystem_LogUpdateNodeSystemSettings langs.MessageCode = "node_system@log_update_node_system_settings" // 修改节点 %d 系统信息
NodeSystemd_LogUpdateClusterSystemdSettings langs.MessageCode = "node_systemd@log_update_cluster_systemd_settings" // 修改集群 %d 的系统服务设置
NodeTask_LogDeleteAllNodeTasks langs.MessageCode = "node_task@log_delete_all_node_tasks" // 删除所有节点同步任务
NodeTask_LogDeleteNodeTask langs.MessageCode = "node_task@log_delete_node_task" // 删除同步任务 %d
NodeTask_LogDeleteNodeTasksBatch langs.MessageCode = "node_task@log_delete_node_tasks_batch" // 批量删除节点同步任务
NodeThreshold_LogCreateNodeThreshold langs.MessageCode = "node_threshold@log_create_node_threshold" // 创建节点阈值 %d
NodeThreshold_LogDeleteNodeThreshold langs.MessageCode = "node_threshold@log_delete_node_threshold" // 删除阈值 %d
NodeThreshold_LogUpdateNodeThreshold langs.MessageCode = "node_threshold@log_update_node_threshold" // 修改节点阈值 %d
NodeTOA_LogUpdateClusterTOA langs.MessageCode = "node_toa@log_update_cluster_toa" // 修改集群 %d 的TOA设置
NS_LogCreateNSDomainsBatch langs.MessageCode = "ns@log_create_ns_domains_batch" // 批量添加域名
NS_LogCreateNSRecordsBatch langs.MessageCode = "ns@log_create_ns_records_batch" // 批量添加解析
NS_LogDeleteNSDomainsBatch langs.MessageCode = "ns@log_delete_ns_domains_batch" // 批量删除域名,用户 %d
NS_LogDeleteNSRecordsBatch langs.MessageCode = "ns@log_delete_ns_records_batch" // 批量删除域名记录
NS_LogDisableNSRecordsBatch langs.MessageCode = "ns@log_disable_ns_records_batch" // 批量停用域名记录
NS_LogEnableNSRecordsBatch langs.MessageCode = "ns@log_enable_ns_records_batch" // 批量启用域名记录
NS_LogImportRecordsBatch langs.MessageCode = "ns@log_import_records_batch" // 批量导入记录
NS_LogUpdateNSRecordsBatch langs.MessageCode = "ns@log_update_ns_records_batch" // 批量修改域名记录
NS_LogUpdateNSUserConfig langs.MessageCode = "ns@log_update_ns_user_config" // 修改NS全局设置--用户相关设置
NS_SettingAccessLogs langs.MessageCode = "ns@setting_access_logs" // 访问日志设置
NS_SettingUser langs.MessageCode = "ns@setting_user" // 用户设置
NSCluster_LogCreateNSCluster langs.MessageCode = "ns_cluster@log_create_ns_cluster" // 创建域名服务集群 %d
NSCluster_LogDeleteNSCluster langs.MessageCode = "ns_cluster@log_delete_ns_cluster" // 删除域名服务集群 %d
NSCluster_LogUpdateNSClusterSettingsAccessLog langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_access_log" // 修改域名服务集群 %d 访问日志配置
NSCluster_LogUpdateNSClusterSettingsAnswer langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_answer" // 修改NS集群 %d 应答模式设置
NSCluster_LogUpdateNSClusterSettingsBasic langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_basic" // 修改域名服务集群基本信息 %d
NSCluster_LogUpdateNSClusterSettingsDDoSProtection langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_ddos_protection" // 修改NS集群 %d 的DDOS防护设置
NSCluster_LogUpdateNSClusterSettingsDoH langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_doh" // 修改NS集群 %d DoH设置
NSCluster_LogUpdateNSClusterSettingsRecursion langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_recursion" // 修改DNS集群 %d 的递归DNS设置
NSCluster_LogUpdateNSClusterSettingsSOA langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_soa" // 修改NS集群 %d SOA配置
NSCluster_LogUpdateNSClusterSettingsTCP langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_tcp" // 修理NS集群 %d TCP设置
NSCluster_LogUpdateNSClusterSettingsTLS langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_tls" // 修改NS集群 %d TLS设置
NSCluster_LogUpdateNSClusterSettingsUDP langs.MessageCode = "ns_cluster@log_update_ns_cluster_settings_udp" // 修改NS集群 %d UDP设置
NSCluster_MenuAccessLogs langs.MessageCode = "ns_cluster@menu_access_logs" // 访问日志
NSCluster_MenuAnswerSetting langs.MessageCode = "ns_cluster@menu_answer_setting" // 应答模式
NSCluster_MenuBasic langs.MessageCode = "ns_cluster@menu_basic" // 基础设置
NSCluster_MenuDDoSProtection langs.MessageCode = "ns_cluster@menu_ddos_protection" // DDoS防护
NSCluster_MenuDNSRecursion langs.MessageCode = "ns_cluster@menu_dns_recursion" // 递归DNS
NSCluster_MenuDoH langs.MessageCode = "ns_cluster@menu_doh" // DoH
NSCluster_MenuSOA langs.MessageCode = "ns_cluster@menu_soa" // SOA
NSCluster_MenuTCP langs.MessageCode = "ns_cluster@menu_tcp" // TCP
NSCluster_MenuTLS langs.MessageCode = "ns_cluster@menu_tls" // TLS
NSCluster_MenuUDP langs.MessageCode = "ns_cluster@menu_udp" // UDP
NSCluster_TabDelete langs.MessageCode = "ns_cluster@tab_delete" // 删除集群
NSCluster_TabNodes langs.MessageCode = "ns_cluster@tab_nodes" // 节点列表
NSCluster_TabSetting langs.MessageCode = "ns_cluster@tab_setting" // 集群设置
NSDomain_LogCreateNSDomain langs.MessageCode = "ns_domain@log_create_ns_domain" // 创建域名 %d
NSDomain_LogCreateNSDomainsBatch langs.MessageCode = "ns_domain@log_create_ns_domains_batch" // 批量添加域名
NSDomain_LogDeleteNSDomain langs.MessageCode = "ns_domain@log_delete_ns_domain" // 删除域名 %d
NSDomain_LogUpdateNSDomain langs.MessageCode = "ns_domain@log_update_ns_domain" // 修改域名 %d
NSDomain_LogUpdateNSDomainHealthCheck langs.MessageCode = "ns_domain@log_update_ns_domain_health_check" // 修改域名 %d 健康检查设置
NSDomain_LogUpdateNSDomainStatus langs.MessageCode = "ns_domain@log_update_ns_domain_status" // 修改域名 %d 状态为 %s
NSDomain_LogUpdateNSDomainTSIG langs.MessageCode = "ns_domain@log_update_ns_domain_tsig" // 修改域名 %d 的TSIG配置
NSDomain_LogValidateNSDomains langs.MessageCode = "ns_domain@log_validate_ns_domains" // 批量验证域名
NSDomainGroup_LogCreateNSDomainGroup langs.MessageCode = "ns_domain_group@log_create_ns_domain_group" // 创建域名分组 %d
NSDomainGroup_LogDeleteNSDomainGroup langs.MessageCode = "ns_domain_group@log_delete_ns_domain_group" // 删除域名分组 %d
NSDomainGroup_LogUpdateNSDomainGroup langs.MessageCode = "ns_domain_group@log_update_ns_domain_group" // 修改域名分组 %d
NSKey_LogCreateNSKey langs.MessageCode = "ns_key@log_create_ns_key" // 创建DNS密钥 %d
NSKey_LogDeleteNSKey langs.MessageCode = "ns_key@log_delete_ns_key" // 删除DNS密钥 %d
NSKey_LogUpdateNSKey langs.MessageCode = "ns_key@log_update_ns_key" // 修改DNS密钥 %d
NSNode_LogCreateNSNode langs.MessageCode = "ns_node@log_create_ns_node" // 创建域名服务节点 %d
NSNode_LogDeleteNSNode langs.MessageCode = "ns_node@log_delete_ns_node" // 删除域名服务节点 %d
NSNode_LogInstallNSNodeRemotely langs.MessageCode = "ns_node@log_install_ns_node_remotely" // 安装节点 %d
NSNode_LogStartNSNodeRemotely langs.MessageCode = "ns_node@log_start_ns_node_remotely" // 远程启动节点 %d
NSNode_LogStopNSNodeRemotely langs.MessageCode = "ns_node@log_stop_ns_node_remotely" // 远程停止节点 %d
NSNode_LogUpdateNSNode langs.MessageCode = "ns_node@log_update_ns_node" // 修改节点 %d
NSNode_LogUpdateNSNodeInstallationStatus langs.MessageCode = "ns_node@log_update_ns_node_installation_status" // 修改节点安装状态 %d
NSNodeSSH_LogUpdateNSNodeSSH langs.MessageCode = "ns_node_ssh@log_update_ns_node_ssh" // 修改节点 %d SSH配置
NSPlan_LogCreateNSPlan langs.MessageCode = "ns_plan@log_create_ns_plan" // 创建套餐 %d
NSPlan_LogDeleteNSPlan langs.MessageCode = "ns_plan@log_delete_ns_plan" // 删除套餐 %d
NSPlan_LogSortNSPlans langs.MessageCode = "ns_plan@log_sort_ns_plans" // 套餐排序
NSPlan_LogUpdateNSPlan langs.MessageCode = "ns_plan@log_update_ns_plan" // 修改套餐 %d
NSRecord_LogCreateNSRecord langs.MessageCode = "ns_record@log_create_ns_record" // 创建域名记录 %d
NSRecord_LogCreateNSRecordsBatch langs.MessageCode = "ns_record@log_create_ns_records_batch" // 批量创建域名记录
NSRecord_LogDeleteNSRecord langs.MessageCode = "ns_record@log_delete_ns_record" // 删除域名记录 %d
NSRecord_LogUpNSRecord langs.MessageCode = "ns_record@log_up_ns_record" // 手动设置DNS记录 %d 为上线状态
NSRecord_LogUpdateNSRecord langs.MessageCode = "ns_record@log_update_ns_record" // 修改域名记录 %d
NSRecord_LogUpdateNSRecordHealthCheck langs.MessageCode = "ns_record@log_update_ns_record_health_check" // 修改记录 %d 的健康检查
NSRoute_LogCreateNSRoute langs.MessageCode = "ns_route@log_create_ns_route" // 创建域名服务线路 %d
NSRoute_LogDeleteNSRoute langs.MessageCode = "ns_route@log_delete_ns_route" // 删除域名服务线路 %d
NSRoute_LogSortNSRoutes langs.MessageCode = "ns_route@log_sort_ns_routes" // 对线路进行排序
NSRoute_LogUpdateNSRoute langs.MessageCode = "ns_route@log_update_ns_route" // 修改域名线路 %d
NSRouteCategory_LogCreateNSRouteCategory langs.MessageCode = "ns_route_category@log_create_ns_route_category" // 创建NS线路分类 %d
NSRouteCategory_LogDeleteNSRouteCategory langs.MessageCode = "ns_route_category@log_delete_ns_route_category" // 删除NS线路分类 %d
NSRouteCategory_LogSortNSRouteCategories langs.MessageCode = "ns_route_category@log_sort_ns_route_categories" // 对NS线路分类进行排序
NSRouteCategory_LogUpdateNSRouteCategory langs.MessageCode = "ns_route_category@log_update_ns_route_category" // 修改NS线路分类 %d
NSUserPlan_LogCreateNSUserPlan langs.MessageCode = "ns_user_plan@log_create_ns_user_plan" // 为用户 %d 创建DNS套餐 %d
NSUserPlan_LogDeleteNSUserPlan langs.MessageCode = "ns_user_plan@log_delete_ns_user_plan" // 删除用户套餐 %d
NSUserPlan_LogUpdateNSUserPlan langs.MessageCode = "ns_user_plan@log_update_ns_user_plan" // 修改用户DNS套餐 %d
OrderMethod_LogCreateOrderMethod langs.MessageCode = "order_method@log_create_order_method" // 创建支付方式 %d
OrderMethod_LogDeleteOrderMethod langs.MessageCode = "order_method@log_delete_order_method" // 删除支付方式 %d
OrderMethod_LogUpdateOrderMethod langs.MessageCode = "order_method@log_update_order_method" // 修改支付方式 %d
Plan_LogCreatePlan langs.MessageCode = "plan@log_create_plan" // 创建套餐 %d
Plan_LogDeletePlan langs.MessageCode = "plan@log_delete_plan" // 删除套餐 %d
Plan_LogSortPlans langs.MessageCode = "plan@log_sort_plans" // 对套餐进行排序
Plan_LogUpdatePlan langs.MessageCode = "plan@log_update_plan" // 修改套餐 %d
RegionCity_LogAddRegionCityCode langs.MessageCode = "region_city@log_add_region_city_code" // 添加城市/市 %d 别名 %s
RegionCity_LogUpdateRegionCityCustom langs.MessageCode = "region_city@log_update_region_city_custom" // 定制城市 %d 信息
RegionCountry_LogAddRegionCountryCode langs.MessageCode = "region_country@log_add_region_country_code" // 添加国家/地区 %d 别名 %s
RegionCountry_LogUpdateRegionCountryCustom langs.MessageCode = "region_country@log_update_region_country_custom" // 定制国家/地区 %d 信息
RegionCountry_RegionChina langs.MessageCode = "region_country@region_china" // 中国
RegionCountry_RegionChinaHk langs.MessageCode = "region_country@region_china_hk" // 中国香港
RegionCountry_RegionChinaMainland langs.MessageCode = "region_country@region_china_mainland" // 中国内地
RegionCountry_RegionChinaMo langs.MessageCode = "region_country@region_china_mo" // 中国澳门
RegionCountry_RegionChinaTw langs.MessageCode = "region_country@region_china_tw" // 中国台湾
RegionCountry_RegionGreaterChina langs.MessageCode = "region_country@region_greater_china" // 中国全境
RegionProvider_LogAddRegionProviderCode langs.MessageCode = "region_provider@log_add_region_provider_code" // 添加ISP服务商 %d 别名 %s
RegionProvider_LogUpdateRegionProviderCustom langs.MessageCode = "region_provider@log_update_region_provider_custom" // 定制ISP %d 信息
RegionProvince_LogAddRegionProvinceCode langs.MessageCode = "region_province@log_add_region_province_code" // 添加省份/州 %d 别名 %s
RegionProvince_LogUpdateRegionProvinceCustom langs.MessageCode = "region_province@log_update_region_province_custom" // 定制省份 %d 信息
RegionTown_LogAddRegionTownCode langs.MessageCode = "region_town@log_add_region_town_code" // 添加区/县 %d 别名 %s
RegionTown_LogUpdateRegionTownCustom langs.MessageCode = "region_town@log_update_region_town_custom" // 定制县级 %d 信息
ReportNode_LogCreateReportNode langs.MessageCode = "report_node@log_create_report_node" // 创建监控终端 %d
ReportNode_LogDeleteReportNode langs.MessageCode = "report_node@log_delete_report_node" // 删除监控终端 %d
ReportNode_LogUpdateReportNode langs.MessageCode = "report_node@log_update_report_node" // 修改监控终端 %d
ReportNodeGroup_LogCreateReportNodeGroup langs.MessageCode = "report_node_group@log_create_report_node_group" // 创建监控节点分组 %d
ReportNodeGroup_LogDeleteReportNodeGroup langs.MessageCode = "report_node_group@log_delete_report_node_group" // 删除监控节点分组 %d
ReportNodeGroup_LogUpdateReportNodeGroup langs.MessageCode = "report_node_group@log_update_report_node_group" // 修改监控节点分组 %d
ReverseProxy_LogUpdateReverseProxyScheduling langs.MessageCode = "reverse_proxy@log_update_reverse_proxy_scheduling" // 修改反向代理 %d 负载均衡算法
Script_LogCreateScript langs.MessageCode = "script@log_create_script" // 创建脚本 %d
Script_LogDeleteScript langs.MessageCode = "script@log_delete_script" // 删除脚本 %d
Script_LogPublishScripts langs.MessageCode = "script@log_publish_scripts" // 发布脚本库到边缘节点
Script_LogUpdateScript langs.MessageCode = "script@log_update_script" // 修改脚本 %d
Server_CopySettingCurrentCluster langs.MessageCode = "server@copy_setting_current_cluster" // 当前集群:%s
Server_CopySettingCurrentGroup langs.MessageCode = "server@copy_setting_current_group" // 当前分组:%s
Server_CopySettingCurrentUser langs.MessageCode = "server@copy_setting_current_user" // 当前用户:%s
Server_CopySettingSelectCluster langs.MessageCode = "server@copy_setting_select_cluster" // 选择集群
Server_CopySettingSelectGroup langs.MessageCode = "server@copy_setting_select_group" // 选择分组
Server_CopySettingSelectServer langs.MessageCode = "server@copy_setting_select_server" // 选择网站
Server_CopySettingSelectUser langs.MessageCode = "server@copy_setting_select_user" // 选择用户
Server_LogCopyServerConfigs langs.MessageCode = "server@log_copy_server_configs" // 从网站 %d 中同步配置 %s
Server_LogCreateServer langs.MessageCode = "server@log_create_server" // 创建网站 %d
Server_LogDeleteServer langs.MessageCode = "server@log_delete_server" // 删除网站 %d
Server_LogDisableServer langs.MessageCode = "server@log_disable_server" // 停用网站 %d
Server_LogEnableServer langs.MessageCode = "server@log_enable_server" // 启用网站 %d
Server_LogSubmitAuditingServer langs.MessageCode = "server@log_submit_auditing_server" // 提交网站 %d 域名审核
Server_LogUpdateGlobalSettings langs.MessageCode = "server@log_update_global_settings" // 保存网站全局配置
Server_LogUpdateServerBasic langs.MessageCode = "server@log_update_server_basic" // 修改网站 %d 基本信息
Server_LogUpdateServerGroups langs.MessageCode = "server@log_update_server_groups" // 修改网站 %d 所属分组
Server_LogUpdateServerIsOn langs.MessageCode = "server@log_update_server_is_on" // 修改网站 %d 启用状态
Server_LogUpdateServerName langs.MessageCode = "server@log_update_server_name" // 修改网站名称
Server_MenuAccesslogHistory langs.MessageCode = "server@menu_accesslog_history" // 历史
Server_MenuAccesslogRealtime langs.MessageCode = "server@menu_accesslog_realtime" // 实时
Server_MenuAccesslogToday langs.MessageCode = "server@menu_accesslog_today" // 今天
Server_MenuDashboard langs.MessageCode = "server@menu_dashboard" // 看板
Server_MenuSettingAccessLog langs.MessageCode = "server@menu_setting_access_log" // 访问日志
Server_MenuSettingAuth langs.MessageCode = "server@menu_setting_auth" // 访问鉴权
Server_MenuSettingBasic langs.MessageCode = "server@menu_setting_basic" // 基本信息
Server_MenuSettingCache langs.MessageCode = "server@menu_setting_cache" // 缓存
Server_MenuSettingCC langs.MessageCode = "server@menu_setting_cc" // CC防护
Server_MenuSettingCharset langs.MessageCode = "server@menu_setting_charset" // 字符编码
Server_MenuSettingClientIP langs.MessageCode = "server@menu_setting_client_ip" // 访客IP地址
Server_MenuSettingCompression langs.MessageCode = "server@menu_setting_compression" // 内容压缩
Server_MenuSettingDelete langs.MessageCode = "server@menu_setting_delete" // 删除
Server_MenuSettingDNS langs.MessageCode = "server@menu_setting_dns" // DNS
Server_MenuSettingDomains langs.MessageCode = "server@menu_setting_domains" // 域名
Server_MenuSettingFastcgi langs.MessageCode = "server@menu_setting_fastcgi" // Fastcgi
Server_MenuSettingGroup langs.MessageCode = "server@menu_setting_group" // 分组
Server_MenuSettingHTTP langs.MessageCode = "server@menu_setting_http" // HTTP
Server_MenuSettingHTTPHeaders langs.MessageCode = "server@menu_setting_http_headers" // HTTP报头
Server_MenuSettingHTTPProxy langs.MessageCode = "server@menu_setting_http_proxy" // HTTP代理
Server_MenuSettingHTTPS langs.MessageCode = "server@menu_setting_https" // HTTPS
Server_MenuSettingLocations langs.MessageCode = "server@menu_setting_locations" // 路由规则
Server_MenuSettingOptimization langs.MessageCode = "server@menu_setting_optimization" // 页面优化
Server_MenuSettingOrigins langs.MessageCode = "server@menu_setting_origins" // 源站
Server_MenuSettingOthers langs.MessageCode = "server@menu_setting_others" // 其他设置
Server_MenuSettingPages langs.MessageCode = "server@menu_setting_pages" // 自定义页面
Server_MenuSettingPlan langs.MessageCode = "server@menu_setting_plan" // 套餐
Server_MenuSettingRedirects langs.MessageCode = "server@menu_setting_redirects" // URL跳转
Server_MenuSettingReferers langs.MessageCode = "server@menu_setting_referers" // 防盗链
Server_MenuSettingRequestLimit langs.MessageCode = "server@menu_setting_request_limit" // 请求限制
Server_MenuSettingRewriteRules langs.MessageCode = "server@menu_setting_rewrite_rules" // 重写规则
Server_MenuSettingRoot langs.MessageCode = "server@menu_setting_root" // 静态分发
Server_MenuSettingScripts langs.MessageCode = "server@menu_setting_scripts" // 边缘脚本
Server_MenuSettingStat langs.MessageCode = "server@menu_setting_stat" // 统计
Server_MenuSettingTCP langs.MessageCode = "server@menu_setting_tcp" // TCP
Server_MenuSettingTCPProxy langs.MessageCode = "server@menu_setting_tcp_proxy" // TCP代理
Server_MenuSettingTLS langs.MessageCode = "server@menu_setting_tls" // TLS
Server_MenuSettingTrafficLimit langs.MessageCode = "server@menu_setting_traffic_limit" // 流量限制
Server_MenuSettingUAM langs.MessageCode = "server@menu_setting_uam" // 5秒盾
Server_MenuSettingUDP langs.MessageCode = "server@menu_setting_udp" // UDP
Server_MenuSettingUDPProxy langs.MessageCode = "server@menu_setting_udp_proxy" // UDP代理
Server_MenuSettingUnix langs.MessageCode = "server@menu_setting_unix" // Unix
Server_MenuSettingUserAgents langs.MessageCode = "server@menu_setting_user_agents" // UA名单
Server_MenuSettingWAF langs.MessageCode = "server@menu_setting_waf" // WAF
Server_MenuSettingWebP langs.MessageCode = "server@menu_setting_webp" // WebP
Server_MenuSettingWebsocket langs.MessageCode = "server@menu_setting_websocket" // Websocket
Server_MenuStatClients langs.MessageCode = "server@menu_stat_clients" // 终端
Server_MenuStatProviders langs.MessageCode = "server@menu_stat_providers" // 运营商
Server_MenuStatRegions langs.MessageCode = "server@menu_stat_regions" // 地域分布
Server_MenuStatTraffic langs.MessageCode = "server@menu_stat_traffic" // 流量统计
Server_MenuStatWAF langs.MessageCode = "server@menu_stat_waf" // WAF
Server_ServerNamesLogUpdateServerNames langs.MessageCode = "server@server_names_log_update_server_names" // 修改网站 %d 域名
Server_TabAccessLogs langs.MessageCode = "server@tab_access_logs" // 日志
Server_TabDashboard langs.MessageCode = "server@tab_dashboard" // 看板
Server_TabDelete langs.MessageCode = "server@tab_delete" // 删除
Server_TabServerList langs.MessageCode = "server@tab_server_list" // 网站列表
Server_TabSettings langs.MessageCode = "server@tab_settings" // 设置
Server_TabStat langs.MessageCode = "server@tab_stat" // 统计
ServerAccessLog_LogUpdateAccessLogSetting langs.MessageCode = "server_access_log@log_update_access_log_setting" // 修改Web %d 的访问日志设置
ServerAuth_LogUpdateHTTPAuthSettings langs.MessageCode = "server_auth@log_update_http_auth_settings" // 修改Web %d 的鉴权设置
ServerCache_LogFetchCaches langs.MessageCode = "server_cache@log_fetch_caches" // 预热网站 %d 缓存
ServerCache_LogPurgeCaches langs.MessageCode = "server_cache@log_purge_caches" // 删除网站 %d 缓存
ServerCache_LogUpdateCacheSettings langs.MessageCode = "server_cache@log_update_cache_settings" // 修改Web %d 的缓存设置
ServerCache_LogUpdateClusterCachePolicy langs.MessageCode = "server_cache@log_update_cluster_cache_policy" // 设置集群 %d 的缓存策略为 %d
ServerCachePolicy_LogCleanAll langs.MessageCode = "server_cache_policy@log_clean_all" // 清除缓存,缓存策略:%d
ServerCachePolicy_LogCreateCachePolicy langs.MessageCode = "server_cache_policy@log_create_cache_policy" // 创建缓存策略:%d
ServerCachePolicy_LogDeleteCachePolicy langs.MessageCode = "server_cache_policy@log_delete_cache_policy" // 删除缓存策略:%d
ServerCachePolicy_LogFetchCaches langs.MessageCode = "server_cache_policy@log_fetch_caches" // 预热缓存,缓存策略:%d
ServerCachePolicy_LogPurgeCaches langs.MessageCode = "server_cache_policy@log_purge_caches" // 删除缓存,缓存策略:%d
ServerCachePolicy_LogStatCaches langs.MessageCode = "server_cache_policy@log_stat_caches" // 统计缓存,缓存策略:%d
ServerCachePolicy_LogTestReading langs.MessageCode = "server_cache_policy@log_test_reading" // 测试读取,缓存策略:%d
ServerCachePolicy_LogTestWriting langs.MessageCode = "server_cache_policy@log_test_writing" // 测试写入,缓存策略:%d
ServerCachePolicy_LogUpdateCachePolicy langs.MessageCode = "server_cache_policy@log_update_cache_policy" // 修改缓存策略:%d
ServerCC_LogUpdateCCSettings langs.MessageCode = "server_cc@log_update_cc_settings" // 修改Web %d CC防护配置
ServerCC_LogUpdateClusterHTTPCCPolicy langs.MessageCode = "server_cc@log_update_cluster_http_cc_policy" // 修改集群 %d 的HTTP CC策略设置
ServerCharset_LogUpdateCharsetSetting langs.MessageCode = "server_charset@log_update_charset_setting" // 修改Web %d 的字符集设置
ServerCommon_LogUpdateCommonSettings langs.MessageCode = "server_common@log_update_common_settings" // 修改网站Web %d 设置的其他设置
ServerCompression_LogUpdateCompressionSettings langs.MessageCode = "server_compression@log_update_compression_settings" // 修改Web %d 的压缩设置
ServerDNS_LogRegenerateDNSName langs.MessageCode = "server_dns@log_regenerate_dns_name" // 重新生成网站 %d 的CNAME
ServerDNS_LogUpdateDNSName langs.MessageCode = "server_dns@log_update_dns_name" // 修改网站 %d CNAME为 %s
ServerDNS_LogUpdateDNSSettings langs.MessageCode = "server_dns@log_update_dns_settings" // 修改网站 %d 的DNS设置
ServerFastcgi_LogUpdateHTTPFastcgi langs.MessageCode = "server_fastcgi@log_update_http_fastcgi" // 修改Web %d 的Fastcgi设置
ServerGlobalSetting_LogUpdateClusterGlobalServerConfig langs.MessageCode = "server_global_setting@log_update_cluster_global_server_config" // 修改集群 %d 全局配置
ServerGroup_LogCreateServerGroup langs.MessageCode = "server_group@log_create_server_group" // 创建网站分组 %d
ServerGroup_LogDeleteServerGroup langs.MessageCode = "server_group@log_delete_server_group" // 删除网站分组 %d
ServerGroup_LogSortServerGroups langs.MessageCode = "server_group@log_sort_server_groups" // 修改网站分组排序
ServerGroup_LogUpdateServerGroup langs.MessageCode = "server_group@log_update_server_group" // 修改网站分组 %d
ServerHTTP3_LogUpdateClusterHTTP3Policy langs.MessageCode = "server_http3@log_update_cluster_http3_policy" // 修改集群 %d 的HTTP3策略设置
ServerHTTP_LogUpdateHTTPSettings langs.MessageCode = "server_http@log_update_http_settings" // 修改网站 %d 的HTTP设置
ServerHTTPHeader_LogCreateDeletingHeader langs.MessageCode = "server_http_header@log_create_deleting_header" // 添加删除的报头 HeaderPolicyId: %d, Name: %s
ServerHTTPHeader_LogCreateNonStandardHeader langs.MessageCode = "server_http_header@log_create_non_standard_header" // 添加非标的报头 HeaderPolicyId: %d, Name: %s
ServerHTTPHeader_LogCreateSettingRequestHeader langs.MessageCode = "server_http_header@log_create_setting_request_header" // 添加自定义请求报头HeaderPolicyId:%d, Name:%s, Value:%s
ServerHTTPHeader_LogCreateSettingResponseHeader langs.MessageCode = "server_http_header@log_create_setting_response_header" // 添加自定义响应报头HeaderPolicyId:%d, Name:%s, Value:%s
ServerHTTPHeader_LogDeleteDeletingHeader langs.MessageCode = "server_http_header@log_delete_deleting_header" // 删除需要删除的报头HeaderPolicyId:%d, HeaderName:%s
ServerHTTPHeader_LogDeleteHeader langs.MessageCode = "server_http_header@log_delete_header" // 删除报头HeaderPolicyId:%d, HeaderId:%d
ServerHTTPHeader_LogDeleteNonStandardHeader langs.MessageCode = "server_http_header@log_delete_non_standard_header" // 删除需要非标的报头HeaderPolicyId:%d, HeaderName:%s
ServerHTTPHeader_LogUpdateHTTPHeaders langs.MessageCode = "server_http_header@log_update_http_headers" // 修改Web %d 的报头设置
ServerHTTPHeader_LogUpdateSettingHeader langs.MessageCode = "server_http_header@log_update_setting_header" // 修改设置报头HeaderId:%d, Name:%s, Value:%s
ServerHTTPS_LogUpdateHTTPSSettings langs.MessageCode = "server_https@log_update_https_settings" // 修改网站 %d 的HTTPS设置
ServerOptimization_LogUpdateOptimizationSettings langs.MessageCode = "server_optimization@log_update_optimization_settings" // 修改Web %d 的页面优化设置
ServerOrigin_LogCreateOrigin langs.MessageCode = "server_origin@log_create_origin" // 创建源站 %d
ServerOrigin_LogDeleteOrigin langs.MessageCode = "server_origin@log_delete_origin" // 删除源站 %d
ServerOrigin_LogUpdateOrigin langs.MessageCode = "server_origin@log_update_origin" // 修改源站 %d
ServerPage_LogCreatePage langs.MessageCode = "server_page@log_create_page" // 创建自定义页面 %d
ServerPage_LogUpdateClusterPages langs.MessageCode = "server_page@log_update_cluster_pages" // 修改集群 %d 自定义页面策略
ServerPage_LogUpdatePage langs.MessageCode = "server_page@log_update_page" // 修改自定义页面 %d
ServerPage_LogUpdatePages langs.MessageCode = "server_page@log_update_pages" // 修改Web %d 的自定义页面设置
ServerRedirect_LogUpdateRedirects langs.MessageCode = "server_redirect@log_update_redirects" // 修改Web %d 的跳转设置
ServerReferer_LogUpdateReferers langs.MessageCode = "server_referer@log_update_referers" // 修改Web %d 防盗链设置
ServerRequestLimit_LogUpdateRequestLimitSettings langs.MessageCode = "server_request_limit@log_update_request_limit_settings" // 修改Web %d 请求限制
ServerReverseProxy_LogUpdateLocationReverseProxySettings langs.MessageCode = "server_reverse_proxy@log_update_location_reverse_proxy_settings" // 修改路由规则 %d 的反向代理设置
ServerReverseProxy_LogUpdateServerGroupReverseProxySettings langs.MessageCode = "server_reverse_proxy@log_update_server_group_reverse_proxy_settings" // 修改分组 %d 的反向代理设置
ServerReverseProxy_LogUpdateServerReverseProxySettings langs.MessageCode = "server_reverse_proxy@log_update_server_reverse_proxy_settings" // 修改网站 %d 的反向代理设置
ServerRoot_LogUpdateRoot langs.MessageCode = "server_root@log_update_root" // 修改Web %d 静态分发设置
ServerScript_LogUpdateScripts langs.MessageCode = "server_script@log_update_scripts" // 修改Web %d 边缘脚本
ServerStat_LogUpdateStatSettings langs.MessageCode = "server_stat@log_update_stat_settings" // 修改Web %d 的统计设置
ServerTCP_LogUpdateTCPSettings langs.MessageCode = "server_tcp@log_update_tcp_settings" // 修改网站 %d TCP设置
ServerTLS_LogUpdateTLSSettings langs.MessageCode = "server_tls@log_update_tls_settings" // 修改网站 %d TLS设置
ServerTrafficLimit_LogUpdateTrafficLimitSettings langs.MessageCode = "server_traffic_limit@log_update_traffic_limit_settings" // 修改网站 %d 流量限制
ServerTrafficStat_AllServers langs.MessageCode = "server_traffic_stat@all_servers" // 全部网站(%d
ServerUAM_LogUpdateClusterUAMPolicy langs.MessageCode = "server_uam@log_update_cluster_uam_policy" // 修改集群 %d 的UAM设置
ServerUAM_LogUpdateServerUAMSettings langs.MessageCode = "server_uam@log_update_server_uam_settings" // 修改网站 %d 全站防护模式
ServerUAM_LogUpdateUAMSettings langs.MessageCode = "server_uam@log_update_uam_settings" // 修改Web %d 全站防护模式
ServerUDP_LogUpdateUDPSettings langs.MessageCode = "server_udp@log_update_udp_settings" // 修改网站 %d UDP设置
ServerUserAgent_LogUpdateUserAgents langs.MessageCode = "server_user_agent@log_update_user_agents" // 修改Web %d User-Agent设置
ServerWAF_LogUpdateWAFSettings langs.MessageCode = "server_waf@log_update_waf_settings" // 修改Web %d 的WAF设置
ServerWebP_LogUpdateClusterWebPPolicy langs.MessageCode = "server_webp@log_update_cluster_webp_policy" // 修改集群 %d 的WebP设置
ServerWebsocket_LogUpdateWebsocketSettings langs.MessageCode = "server_websocket@log_update_websocket_settings" // 修改Web %d 的Websocket设置
SSLCert_LogDeleteSSLCert langs.MessageCode = "ssl_cert@log_delete_ssl_cert" // 删除SSL证书 %d
SSLCert_LogDownloadSSLCert langs.MessageCode = "ssl_cert@log_download_ssl_cert" // 下载SSL证书 %d
SSLCert_LogDownloadSSLCertKey langs.MessageCode = "ssl_cert@log_download_ssl_cert_key" // 下载SSL密钥 %d
SSLCert_LogDownloadSSLCertZip langs.MessageCode = "ssl_cert@log_download_ssl_cert_zip" // 下载SSL证书压缩包 %d
SSLCert_LogOCSPIgnoreOCSPStatus langs.MessageCode = "ssl_cert@log_ocsp_ignore_ocsp_status" // 忽略一组证书的OCSP状态
SSLCert_LogOCSPResetAllOCSPStatus langs.MessageCode = "ssl_cert@log_ocsp_reset_all_ocsp_status" // 忽略所有证书的OCSP状态
SSLCert_LogOCSPResetOCSPStatus langs.MessageCode = "ssl_cert@log_ocsp_reset_ocsp_status" // 重置一组证书的OCSP状态
SSLCert_LogUpdateSSLCert langs.MessageCode = "ssl_cert@log_update_ssl_cert" // 修改SSL证书 %d
SSLCert_LogUploadSSLCert langs.MessageCode = "ssl_cert@log_upload_ssl_cert" // 上传SSL证书 %d
SSLCert_LogUploadSSLCertBatch langs.MessageCode = "ssl_cert@log_upload_ssl_cert_batch" // 批量上传证书
SSLCert_MenuApply langs.MessageCode = "ssl_cert@menu_apply" // 申请证书
SSLCert_MenuCerts langs.MessageCode = "ssl_cert@menu_certs" // 证书
SSLCert_MenuOCSP langs.MessageCode = "ssl_cert@menu_ocsp" // OCSP日志
System_HomePage langs.MessageCode = "system@home_page" // https://goedge.cn
TicketCategory_LogCreateTicketCategory langs.MessageCode = "ticket_category@log_create_ticket_category" // 添加工单分类 %d
TicketCategory_LogDeleteTicketCategory langs.MessageCode = "ticket_category@log_delete_ticket_category" // 删除工单分类 %d
TicketCategory_LogUpdateTicketCategory langs.MessageCode = "ticket_category@log_update_ticket_category" // 修改分类 %d
TrafficPackage_LogCreateTrafficPackage langs.MessageCode = "traffic_package@log_create_traffic_package" // 创建流量包 %d
TrafficPackage_LogDeleteTrafficPackage langs.MessageCode = "traffic_package@log_delete_traffic_package" // 删除流量包 %d
TrafficPackage_LogUpdateTrafficPackage langs.MessageCode = "traffic_package@log_update_traffic_package" // 修改流量包 %d
TrafficPackagePeriod_LogCreateTrafficPackagePeriod langs.MessageCode = "traffic_package_period@log_create_traffic_package_period" // 创建流量包有效期 %d
TrafficPackagePeriod_LogDeleteTrafficPackagePeriod langs.MessageCode = "traffic_package_period@log_delete_traffic_package_period" // 删除流量包有效期选项 %d
TrafficPackagePeriod_LogUpdateTrafficPackagePeriod langs.MessageCode = "traffic_package_period@log_update_traffic_package_period" // 修改流量包有效期选项 %d
TrafficPackagePrice_LogUpdateTrafficPackagePrice langs.MessageCode = "traffic_package_price@log_update_traffic_package_price" // 修改流量包 %d 区域 %d x 有效期 %d 的价格
User_LogCreateUser langs.MessageCode = "user@log_create_user" // 创建用户 %d
User_LogDeleteUser langs.MessageCode = "user@log_delete_user" // 删除用户 %d
User_LogUpdateUser langs.MessageCode = "user@log_update_user" // 修改用户 %d
User_LogUpdateUserEmailSettings langs.MessageCode = "user@log_update_user_email_settings" // 修改用户邮件设置
User_LogUpdateUserFeatures langs.MessageCode = "user@log_update_user_features" // 设置用户 %d 的功能列表
User_LogUpdateUserGlobalSettings langs.MessageCode = "user@log_update_user_global_settings" // 修改用户设置
User_LogUpdateUserPricePeriod langs.MessageCode = "user@log_update_user_price_period" // 修改计费周期为 %s
User_LogUpdateUserPriceType langs.MessageCode = "user@log_update_user_price_type" // 修改计费类型为 %s
User_LogUpdateUserProfile langs.MessageCode = "user@log_update_user_profile" // 修改个人资料
User_LogVerifyUser langs.MessageCode = "user@log_verify_user" // 审核用户:%d 结果:%s
UserAccessKey_LogCreateUserAccessKey langs.MessageCode = "user_access_key@log_create_user_access_key" // 创建AccessKey %d
UserAccessKey_LogDeleteUserAccessKey langs.MessageCode = "user_access_key@log_delete_user_access_key" // 删除AccessKey %d
UserAccessKey_LogUpdateUserAccessKeyIsOn langs.MessageCode = "user_access_key@log_update_user_access_key_is_on" // 设置AccessKey %d 启用状态
UserAccount_LogUpdateUserAccount langs.MessageCode = "user_account@log_update_user_account" // 操作用户账户 %d: %s
UserADInstance_LogDeleteUserADInstance langs.MessageCode = "user_ad_instance@log_delete_user_ad_instance" // 删除用户高防实例 %d
UserADInstance_LogRenewUserADInstance langs.MessageCode = "user_ad_instance@log_renew_user_ad_instance" // 为用户高防实例 %d 续期
UserADInstance_LogUpdateUserADInstanceObjects langs.MessageCode = "user_ad_instance@log_update_user_ad_instance_objects" // 修改用户高防实例 %d 防护对象
UserBill_LogPayUserBill langs.MessageCode = "user_bill@log_pay_user_bill" // 支付账单 %d
UserCommon_Canceled langs.MessageCode = "user_common@canceled" // 已取消
UserCommon_LogSystemError langs.MessageCode = "user_common@log_system_error" // 系统发生错误:%s
UserCommon_ServerError langs.MessageCode = "user_common@server_error" // 服务器出了点小问题,请联系技术人员处理。
UserCommon_System langs.MessageCode = "user_common@system" // 系统
UserIdentity_LogCancelUserIdentity langs.MessageCode = "user_identity@log_cancel_user_identity" // 取消身份认证审核
UserIdentity_LogRejectUserIdentity langs.MessageCode = "user_identity@log_reject_user_identity" // 驳回用户 %d 的实名认证
UserIdentity_LogResetUserIdentity langs.MessageCode = "user_identity@log_reset_user_identity" // 重置用户 %d 的实名认证
UserIdentity_LogSubmitUserIdentity langs.MessageCode = "user_identity@log_submit_user_identity" // 提交身份认证审核
UserIdentity_LogUpdateUserIdentityEnterprise langs.MessageCode = "user_identity@log_update_user_identity_enterprise" // 修改/上传企业实名认证信息
UserIdentity_LogUpdateUserIdentityIndividual langs.MessageCode = "user_identity@log_update_user_identity_individual" // 修改/上传个人实名认证信息
UserIdentity_LogVerifyUserIdentity langs.MessageCode = "user_identity@log_verify_user_identity" // 通过用户 %d 的实名认证
UserLogin_LogUpdateLogin langs.MessageCode = "user_login@log_update_login" // 修改登录设置
UserNode_LogCreateUserNode langs.MessageCode = "user_node@log_create_user_node" // 创建用户节点 %d
UserNode_LogDeleteUserNode langs.MessageCode = "user_node@log_delete_user_node" // 删除用户节点 %d
UserNode_LogUpdateUserNode langs.MessageCode = "user_node@log_update_user_node" // 修改用户节点 %d
UserOrder_LogFinishUserOrder langs.MessageCode = "user_order@log_finish_user_order" // 设置订单 %s 为完成支付
UserPlan_LogBindUserPlanToServer langs.MessageCode = "user_plan@log_bind_user_plan_to_server" // 修改网站 %d 绑定的套餐为 %d
UserPlan_LogBuyUserPlan langs.MessageCode = "user_plan@log_buy_user_plan" // 为用户 %d 购买套餐 %d
UserPlan_LogCancelUserPlanFromServer langs.MessageCode = "user_plan@log_cancel_user_plan_from_server" // 取消网站 %d 绑定的套餐
UserPlan_LogDeleteUserPlan langs.MessageCode = "user_plan@log_delete_user_plan" // 删除用户已购套餐 %d
UserPlan_LogRenewUserPlan langs.MessageCode = "user_plan@log_renew_user_plan" // 续费已购套餐 %d
UserTicket_LogCreateUserTicket langs.MessageCode = "user_ticket@log_create_user_ticket" // 创建工单 %d
UserTicketLog_LogReplyTicket langs.MessageCode = "user_ticket_log@log_reply_ticket" // 回复工单 %d
UserTrafficPackage_LogCreateUserTrafficPackage langs.MessageCode = "user_traffic_package@log_create_user_traffic_package" // 为用户 %d 创建流量包:%d区域%d有效期%d数量%d
UserTrafficPackage_LogDeleteUserTrafficPackage langs.MessageCode = "user_traffic_package@log_delete_user_traffic_package" // 删除用户流量包 %d
WAF_ConnectorAnd langs.MessageCode = "waf@connector_and" // 和(AND)
WAF_ConnectorAndDescription langs.MessageCode = "waf@connector_and_description" // 所有规则都满足才视为匹配
WAF_ConnectorOr langs.MessageCode = "waf@connector_or" // 或(OR)
WAF_ConnectorOrDescription langs.MessageCode = "waf@connector_or_description" // 任一规则满足了就视为匹配
WAF_LogDeleteIPFromWAFPolicy langs.MessageCode = "waf@log_delete_ip_from_waf_policy" // 从WAF策略 %d 名单中删除IP %d
WAF_LogUpdateForbiddenCountries langs.MessageCode = "waf@log_update_forbidden_countries" // WAF策略 %d 设置禁止访问的国家和地区
WAF_LogUpdateForbiddenProvinces langs.MessageCode = "waf@log_update_forbidden_provinces" // WAF策略 %d 设置禁止访问的省份
WAF_LogUpdateIPFromWAFPolicy langs.MessageCode = "waf@log_update_ip_from_waf_policy" // 修改WAF策略 %d 名单中的IP %d
WAFAction_LogCreateWAFAction langs.MessageCode = "waf_action@log_create_waf_action" // 创建集群 %d 的WAF动作
WAFAction_LogDeleteWAFAction langs.MessageCode = "waf_action@log_delete_waf_action" // 删除WAF动作 %d
WAFAction_LogUpdateWAFAction langs.MessageCode = "waf_action@log_update_waf_action" // 修改WAF动作 %d
WAFPolicy_LogCreateWAFPolicy langs.MessageCode = "waf_policy@log_create_waf_policy" // 创建WAF策略 %d
WAFPolicy_LogDeleteWAFPolicy langs.MessageCode = "waf_policy@log_delete_waf_policy" // 删除WAF策略 %d
WAFPolicy_LogExportWAFPolicy langs.MessageCode = "waf_policy@log_export_waf_policy" // 导出WAF策略 %d
WAFPolicy_LogImportWAFPolicy langs.MessageCode = "waf_policy@log_import_waf_policy" // 从文件中导入规则到WAF策略 %d
WAFPolicy_LogUpdateClusterWAFPolicy langs.MessageCode = "waf_policy@log_update_cluster_waf_policy" // 设置集群 %d 的WAF策略为 %d
WAFPolicy_LogUpdateWAFPolicy langs.MessageCode = "waf_policy@log_update_waf_policy" // 修改WAF策略 %d 基本信息
WAFPolicy_LogUpgradeWAFPolicy langs.MessageCode = "waf_policy@log_upgrade_waf_policy" // 升级WAF %d 内置规则
WAFRuleGroup_LogCreateRuleGroup langs.MessageCode = "waf_rule_group@log_create_rule_group" // 创建规则分组 %d名称%s
WAFRuleGroup_LogDeleteRuleGroup langs.MessageCode = "waf_rule_group@log_delete_rule_group" // 删除WAF策略 %d 的规则分组 %d
WAFRuleGroup_LogSortRuleGroups langs.MessageCode = "waf_rule_group@log_sort_rule_groups" // 修改WAF策略 %d 中的规则分组中的排序
WAFRuleGroup_LogUpdateRuleGroup langs.MessageCode = "waf_rule_group@log_update_rule_group" // 修改WAF规则分组 %d 基本信息
WAFRuleGroup_LogUpdateRuleGroupIsOn langs.MessageCode = "waf_rule_group@log_update_rule_group_is_on" // 设置WAF规则分组 %d 开启状态
WAFRuleSet_LogDeleteRuleSet langs.MessageCode = "waf_rule_set@log_delete_rule_set" // 删除WAF规则分组 %d 中的规则集 %d
WAFRuleSet_LogSortRuleSets langs.MessageCode = "waf_rule_set@log_sort_rule_sets" // 修改WAF规则分组 %d 中的规则集排序
WAFRuleSet_LogUpdateRuleSet langs.MessageCode = "waf_rule_set@log_update_rule_set" // 修改WAF规则集 %d 基本信息
WAFRuleSet_LogUpdateRuleSetIsOn langs.MessageCode = "waf_rule_set@log_update_rule_set_is_on" // 修改WAF规则集 %d 开启状态
)

83
pkg/langs/lang.go Normal file
View File

@@ -0,0 +1,83 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package langs
import (
"errors"
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
"strings"
)
const varPrefix = "lang."
type LangCode = string
type Lang struct {
code string
messageMap map[MessageCode]string // message code => message text
}
func NewLang(code string) *Lang {
return &Lang{
code: code,
messageMap: map[MessageCode]string{},
}
}
func (this *Lang) Set(messageCode MessageCode, messageText string) {
this.messageMap[messageCode] = messageText
}
func (this *Lang) Has(messageCode MessageCode) bool {
_, ok := this.messageMap[messageCode]
return ok
}
// Get 读取单条消息
// get single message with message code
func (this *Lang) Get(messageCode MessageCode) string {
return this.messageMap[messageCode]
}
// GetAll 读取所有消息
// get all messages
func (this *Lang) GetAll() map[MessageCode]string {
return this.messageMap
}
// Compile variable to literal strings
func (this *Lang) Compile() error {
for code, oldMessage := range this.messageMap {
message, err := this.get(code, 0)
if err != nil {
return errors.New("compile '" + string(code) + "': '" + oldMessage + "' failed: " + err.Error())
}
this.messageMap[code] = message
}
return nil
}
func (this *Lang) get(messageCode MessageCode, loopIndex int) (string, error) {
if loopIndex >= 8 /** max recurse **/ {
return "", errors.New("too many recurse")
}
loopIndex++
message, ok := this.messageMap[messageCode]
if len(message) == 0 {
if !ok && loopIndex > 1 {
// recover as variable
return "${" + varPrefix + string(messageCode) + "}", errors.New("can not find message for code '" + string(messageCode) + "'")
}
return "", nil
}
return configutils.ParseVariablesError(message, func(varName string) (value string, err error) {
if !strings.HasPrefix(varName, varPrefix) {
return "${" + varName + "}", nil
}
return this.get(MessageCode(varName[len(varPrefix):]), loopIndex)
})
}

105
pkg/langs/manager.go Normal file
View File

@@ -0,0 +1,105 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package langs
import (
"fmt"
"strings"
)
var defaultManager = NewManager()
type Manager struct {
langMap map[string]*Lang // lang code => *Lang, lang code must be in lowercase
defaultLangCode string
}
func NewManager() *Manager {
return &Manager{
langMap: map[string]*Lang{},
defaultLangCode: "zh-cn",
}
}
func DefaultManager() *Manager {
return defaultManager
}
func (this *Manager) AddLang(code string) *Lang {
var lang = NewLang(code)
this.langMap[code] = lang
return lang
}
func (this *Manager) HasLang(code string) bool {
_, ok := this.langMap[code]
return ok
}
func (this *Manager) GetLang(code string) (lang *Lang, ok bool) {
lang, ok = this.langMap[code]
return
}
func (this *Manager) MatchLang(code string) (matchedCode string) {
// lookup exact match
code = strings.ToLower(code)
_, ok := this.langMap[code]
if ok {
return code
}
// lookup language family, such as en-us, en
if strings.Contains(code, "-") {
code, _, _ = strings.Cut(code, "-")
}
for rawCode := range this.langMap {
if strings.HasPrefix(rawCode, code+"-") { // en-us vs en
return rawCode
}
}
return this.DefaultLang()
}
func (this *Manager) SetDefaultLang(code string) {
this.defaultLangCode = code
}
func (this *Manager) DefaultLang() string {
if len(this.defaultLangCode) > 0 {
return this.defaultLangCode
}
return "zh-cn"
}
// GetMessage
// message: name: %s, age: %d, salary: %.2f
func (this *Manager) GetMessage(langCode string, messageCode MessageCode, args ...any) string {
var lang = this.langMap[langCode]
if lang == nil && len(this.defaultLangCode) > 0 {
lang = this.langMap[this.defaultLangCode]
}
if lang == nil {
return ""
}
var message = lang.Get(messageCode)
if len(message) == 0 {
// try to get message from default lang
if lang.code != this.defaultLangCode {
var defaultLang = this.langMap[this.defaultLangCode]
if defaultLang != nil {
return defaultLang.Get(messageCode)
}
}
return ""
}
if len(args) == 0 {
return message
}
return fmt.Sprintf(message, args...)
}

43
pkg/langs/manager_test.go Normal file
View File

@@ -0,0 +1,43 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package langs_test
import (
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
"testing"
)
func TestManager_GetMessage(t *testing.T) {
var manager = langs.NewManager()
var lang = manager.AddLang("en-US")
lang.Set("user_description", "user: %s, age: %d")
t.Log(manager.GetMessage("en-US", "user_description", "Lily", 23))
t.Log(manager.GetMessage("zh-CN", "user_description", "Lucy", 23)) // use 'en-US' as fallback language
}
func TestManager_GetMessage2(t *testing.T) {
var manager = langs.NewManager()
manager.SetDefaultLang("zh-CN")
var lang = manager.AddLang("en-US")
lang.Set("user_description", "user: %s, age: %d")
t.Log(manager.GetMessage("en-US", "user_description", "Lily", 23))
t.Log(manager.GetMessage("zh-CN", "user_description", "Lucy", 23)) // should be empty
}
func TestManager_MatchLang(t *testing.T) {
var manager = langs.NewManager()
manager.AddLang("en-us")
manager.AddLang("en")
manager.AddLang("zh-cn")
manager.AddLang("zh-hk")
//manager.AddLang("zh-tw")
for _, code := range []string{
"en",
"en-us",
"zh-cn",
"zh-tw",
} {
t.Log(code, "=>", manager.MatchLang(code))
}
}

13
pkg/langs/message.go Normal file
View File

@@ -0,0 +1,13 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package langs
type MessageCode string
func (this MessageCode) For(langCode LangCode, args ...any) string {
return Message(langCode, this, args...)
}
func (this MessageCode) String() string {
return string(this)
}

14
pkg/langs/message_test.go Normal file
View File

@@ -0,0 +1,14 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package langs
import "testing"
func TestMessageCode_For(t *testing.T) {
defaultManager.AddLang("en-us").
Set("name", "Lily")
var messageCode MessageCode = "name"
t.Log(messageCode.String(), string(messageCode))
t.Log(messageCode.For("en-us"))
}

View File

@@ -0,0 +1,712 @@
// generated by run 'langs generate'
package messages
import (
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
)
func init() {
langs.Load("zh-cn", map[langs.MessageCode]string{
"acme_provider_account@log_create_acme_provider_account": "创建ACME服务商账号 %d",
"acme_provider_account@log_delete_acme_provider_account": "删除ACME服务商账号 %d",
"acme_provider_account@log_update_acme_provider_account": "修改ACME服务商账号 %d",
"acme_task@log_create_acme_task": "创建证书申请任务 %d",
"acme_task@log_delete_acme_task": "删除证书申请任务 %d",
"acme_task@log_run_acme_task": "执行ACME任务 %d",
"acme_task@log_update_acme_task": "修改证书申请任务 %d",
"acme_user@log_create_acme_user": "创建ACME用户 %d",
"acme_user@log_delete_acme_user": "删除ACME用户 %d",
"acme_user@log_update_acme_user": "修改ACME用户 %d",
"ad_network@log_create_ad_network": "创建高防IP线路 %d",
"ad_network@log_delete_ad_network": "删除高防IP线路",
"ad_network@log_update_ad_network": "修改高防IP线路 %d",
"ad_package@log_create_ad_package": "创建高防产品 %d",
"ad_package@log_delete_ad_package": "删除高防产品 %d",
"ad_package@log_update_ad_package": "修改高防产品 %d",
"ad_package_instance@log_create_ad_package_instance": "创建高防实例 %d",
"ad_package_instance@log_delete_ad_package_instance": "删除高防实例 %d",
"ad_package_instance@log_update_ad_package_instance": "修改高防实例 %d",
"ad_package_period@log_create_ad_package_period": "创建高防IP实例有效期 %d",
"ad_package_period@log_delete_ad_package_period": "删除高防IP实例有效期选项 %d",
"ad_package_period@log_update_ad_package_period": "修改高防IP实例有效期选项 %d",
"ad_package_price@log_create_ad_package_price": "为用户 %d 创建高防实例:%d有效期%d数量%d",
"ad_package_price@log_update_ad_package_price": "修改高防产品 %d 有效期 %d 的价格",
"admin@log_create_admin": "创建系统用户 %d",
"admin@log_delete_admin": "删除系统用户 %d",
"admin@log_update_admin": "修改系统用户 %d",
"admin_common@canceled": "已取消",
"admin_common@log_system_error": "系统发生错误:%s",
"admin_common@menu_setting_basic": "基础设置",
"admin_common@menu_setting_cache": "缓存设置",
"admin_common@menu_setting_cache_policy": "缓存策略",
"admin_common@menu_setting_ddos_protection": "DDoS防护",
"admin_common@menu_setting_dns": "DNS设置",
"admin_common@menu_setting_health_check": "健康检查",
"admin_common@menu_setting_metrics": "统计指标",
"admin_common@menu_setting_waf_policy": "WAF策略",
"admin_common@menu_setting_webp": "WebP",
"admin_common@server_error": "服务器出了点小问题,请联系技术人员处理。",
"admin_common@system": "系统",
"admin_dashboard@disk_usage_warning": "当前服务器磁盘空间不足,请立即扩充容量,文件路径:%s已使用%dG已使用比例%.2f%%,仅剩余空间:%.2f%%。<br/>如果是因为本机数据库数据过多,你可以:<a href=\"/settings/database/clean\">[清理访问日志]</a> &nbsp; &nbsp; <a href=\"https://goedge.cn/docs/APINode/QA.md\" target=\"_blank\">[调整数据库binlog设置]</a>",
"admin_dashboard@ui_dns": "DNS",
"admin_dashboard@ui_events": "事件",
"admin_dashboard@ui_overview": "概况",
"admin_dashboard@ui_user": "用户",
"admin_dashboard@ui_waf": "WAF",
"admin_login@log_failed": "登录失败,用户名:%s",
"admin_login@log_otp_verified_success": "成功通过OTP验证登录系统",
"admin_login@log_success": "成功登录系统,用户名:%s",
"admin_login@log_system_error": "登录时发生系统错误:%s",
"admin_login@log_update_login": "修改登录设置",
"admin_menu@admin_recipients": "通知媒介",
"admin_menu@admins": "系统用户",
"admin_menu@dashboard": "数据看板",
"admin_menu@dns": "域名解析",
"admin_menu@dns_clusters": "集群列表",
"admin_menu@dns_issues": "问题修复",
"admin_menu@dns_providers": "DNS服务商",
"admin_menu@finance": "财务管理",
"admin_menu@finance_accounts": "用户账户",
"admin_menu@finance_bills": "费用账单",
"admin_menu@finance_fee": "计费设置",
"admin_menu@finance_income": "统计报表",
"admin_menu@finance_logs": "收支明细",
"admin_menu@finance_orders": "订单管理",
"admin_menu@finance_packages": "流量包",
"admin_menu@logs": "日志审计",
"admin_menu@node_anti_ddos_products": "高防IP",
"admin_menu@node_clusters": "集群列表",
"admin_menu@node_distributed_monitors": "区域监控",
"admin_menu@node_ip_list": "节点IP",
"admin_menu@node_logs": "节点日志",
"admin_menu@node_regions": "区域设置",
"admin_menu@node_ssh_grants": "节点SSH",
"admin_menu@nodes": "边缘节点",
"admin_menu@ns": "智能DNS",
"admin_menu@ns_access_logs": "访问日志",
"admin_menu@ns_clusters": "集群管理",
"admin_menu@ns_domain_batch_operations": "批量操作",
"admin_menu@ns_domain_groups": "域名分组",
"admin_menu@ns_domains": "域名管理",
"admin_menu@ns_node_logs": "运行日志",
"admin_menu@ns_plans": "套餐设置",
"admin_menu@ns_resolve_test": "解析测试",
"admin_menu@ns_routes": "线路管理",
"admin_menu@ns_settings": "全局配置",
"admin_menu@ns_user_plans": "用户套餐",
"admin_menu@plan_user_plans": "已购套餐",
"admin_menu@plans": "套餐管理",
"admin_menu@server_access_log_policies": "日志策略",
"admin_menu@server_access_logs": "访问日志",
"admin_menu@server_cache_policies": "缓存策略",
"admin_menu@server_certs": "证书管理",
"admin_menu@server_global_settings": "通用设置",
"admin_menu@server_groups": "网站分组",
"admin_menu@server_ip_lists": "IP名单",
"admin_menu@server_metrics": "统计指标",
"admin_menu@server_purge_fetch_caches": "刷新预热",
"admin_menu@server_scripts": "脚本库",
"admin_menu@server_traffic_stats": "用量统计",
"admin_menu@server_waf_policies": "WAF策略",
"admin_menu@servers": "网站列表",
"admin_menu@setting_advanced_settings": "高级设置",
"admin_menu@setting_authority": "商业版本",
"admin_menu@setting_basic_settings": "基础设置",
"admin_menu@settings": "系统设置",
"admin_menu@ticket_category": "分类",
"admin_menu@tickets": "工单系统",
"admin_menu@user_settings": "用户设置",
"admin_menu@users": "平台用户",
"admin_profile@log_update_profile": "修改个人资料",
"admin_security@log_update_security_settings": "修改管理界面安全设置",
"admin_server@log_update_server_http_settings": "修改管理界面的HTTP设置",
"admin_server@log_update_server_https_settings": "修改管理界面的HTTPS设置",
"admin_setting@tab_access_log_databases": "日志数据库",
"admin_setting@tab_admin_security_settings": "安全设置",
"admin_setting@tab_admin_server": "Web服务",
"admin_setting@tab_admin_ui": "管理界面设置",
"admin_setting@tab_api_nodes": "API节点",
"admin_setting@tab_authority": "商业版认证",
"admin_setting@tab_backup": "备份",
"admin_setting@tab_client_browsers": "浏览器库",
"admin_setting@tab_client_operation_systems": "操作系统库",
"admin_setting@tab_database": "数据库",
"admin_setting@tab_ip_library": "IP库",
"admin_setting@tab_login": "登录设置",
"admin_setting@tab_monitor_nodes": "监控节点",
"admin_setting@tab_profile": "个人资料",
"admin_setting@tab_transfer": "迁移",
"admin_setting@tab_updates": "检查更新",
"admin_setting@tab_user_nodes": "用户节点",
"admin_setting@tab_user_ui": "用户界面设置",
"admin_ui@default_product_name": "GoEdge",
"admin_ui@default_system_name": "GoEdge管理员系统",
"admin_ui@log_update_ui_settings": "修改管理界面设置",
"admin_update@log_ignore_version": "忽略升级版本 %s",
"admin_update@log_reset_ignore_version": "重置忽略升级版本",
"admin_update@log_update_check_settings": "修改检查更新设置",
"api_node@log_create_api_node": "创建API节点 %d",
"api_node@log_delete_api_node": "删除API节点 %d",
"api_node@log_update_api_node": "修改API节点 %d",
"client_browser@log_create_browser": "创建浏览器信息 %s",
"client_browser@log_update_client_browser": "修改浏览器信息 %d",
"client_system@log_create_system": "创建操作系统信息 %s",
"client_system@log_update_client_system": "修改操作系统信息 %d",
"database@log_delete_table": "删除数据表 %s",
"database@log_truncate_table": "清空数据表 %s 数据",
"database@log_update_api_node_database_config": "修改API节点数据库设置",
"database@log_update_clean_days": "修改数据库自动清理设置",
"db_node@log_create_db_node": "创建数据库节点 %d",
"db_node@log_delete_db_node": "删除数据库节点 %d",
"db_node@log_delete_table": "删除数据库节点 %d 数据表 %s",
"db_node@log_truncate_table": "清空数据库节点 %d 数据表 %s 数据",
"db_node@log_update_db_node": "修改数据库节点 %d",
"db_node@tab_nodes": "数据库节点",
"ddos_protection@log_update_cluster_ddos_protection": "修改集群 %d 的DDOS防护设置",
"ddos_protection@log_update_node_ddos_protection": "修改节点 %d 的DDOS防护设置",
"dns@log_create_domain": "添加管理域名到DNS服务商 %d",
"dns@log_delete_domain": "从DNS服务商中删除域名 %d",
"dns@log_recover_domain": "从DNS服务商中恢复域名 %d",
"dns@log_sync_cluster": "同步集群 %d 的DNS设置",
"dns@log_sync_domain": "同步DNS域名数据 %d",
"dns@log_update_cluster_dns": "修改集群 %d DNS设置",
"dns@log_update_domain": "修改DNS服务商域名 %d",
"dns@log_update_node_dns": "修改节点 %d 的DNS设置",
"dns_provider@log_create_dns_provider": "创建DNS服务商 %d",
"dns_provider@log_delete_dns_provider": "删除DNS服务商 %d",
"dns_provider@log_update_dns_provider": "修改DNS服务商 %d",
"dns_task@log_delete_all_dns_tasks": "删除所有DNS同步任务",
"dns_task@log_delete_dns_task": "删除DNS同步任务 %d",
"finance@log_bill_generate_manually": "手动生成上个月 %s 账单",
"finance@log_update_user_order_config": "修改订单设置",
"finance_fee@log_update_fee_setting": "修改默认计费方式",
"http_access_log_policy@log_create_http_access_log_policy": "创建访问日志策略 %d",
"http_access_log_policy@log_delete_http_access_log_policy": "删除访问日志策略 %d",
"http_access_log_policy@log_test_http_access_log_policy": "测试向访问日志策略 %d 写入数据",
"http_access_log_policy@log_update_http_access_log_policy": "修改访问日志策略 %d",
"http_auth_policy@log_create_http_auth_policy": "创建HTTP鉴权 %d",
"http_auth_policy@log_update_http_auth_policy": "修改HTTP鉴权 %d",
"http_cache_task@log_create_http_cache_task_fetch": "批量预热缓存Key",
"http_cache_task@log_create_http_cache_task_purge": "批量刷新缓存Key",
"http_cache_task@log_delete_http_cache_task": "删除缓存任务 %d",
"http_cache_task@log_reset_http_cache_task": "重置缓存任务 %d 状态",
"http_fastcgi@log_create_http_fastcgi": "创建Fastcgi %d",
"http_fastcgi@log_update_http_fastcgi": "修改Fastcgi %d",
"http_location@log_create_http_location": "创建路由规则:%s",
"http_location@log_update_http_location": "修改路由规则 %d 设置",
"http_rewrite_rule@log_create_rewrite_rule": "在Web %d 中创建重写规则 %d",
"http_rewrite_rule@log_delete_rewrite_rule": "从Web %d 中删除重写规则 %d",
"http_rewrite_rule@log_sort_rewrite_rules": "对Web %d 中的重写规则进行排序",
"http_rewrite_rule@log_update_rewrite_rule": "修改Web %d 中的重写规则 %d",
"ip_item@log_create_ip_item": "在名单 %d 中创建IP %d",
"ip_item@log_delete_ip_item": "从IP名单 %d 中删除IP %d",
"ip_item@log_read_all_ip_items": "将所有IP名单置为已读",
"ip_item@log_update_ip_item": "修改IP名单中的IP %d",
"ip_library@log_finish_ip_library": "完成IP库%d 制作",
"ip_library_artifact@log_cancel_ip_library_artifact": "取消使用IP库 %d",
"ip_library_artifact@log_delete_ip_library_artifact": "删除IP库 %d",
"ip_library_artifact@log_use_ip_library_artifact": "使用IP库 %d",
"ip_library_file@log_delete_ip_library_file": "删除IP库文件 %d",
"ip_library_file@log_generate_ip_library_file": "重新生成IP库 %d 文件",
"ip_library_file@log_upload_ip_library_file": "上传IP库 %d",
"ip_list@log_bind_ip_list_waf_policy": "绑定IP名单 %d 到WAF策略 %d",
"ip_list@log_create_ip_items_batch": "在IP名单 %d 中批量添加IP",
"ip_list@log_create_ip_list": "创建IP名单 %d",
"ip_list@log_delete_ip_batch": "批量删除IP名单中的IP%s",
"ip_list@log_delete_ip_list": "删除IP名单 %d",
"ip_list@log_export_ip_list": "导出IP名单 %d",
"ip_list@log_import_ip_list": "导入IP名单 %d",
"ip_list@log_unbind_ip_list_waf_policy": "解除绑定IP名单 %d WAF策略 %d",
"ip_list@log_update_ip_list": "修改IP名单 %d",
"level@error": "错误",
"level@info": "信息",
"level@warn": "警告",
"log@log_clean_all_logs": "清除全部日志",
"log@log_clean_logs_days_before": "清除 %d 以前的日志",
"log@log_delete_log": "删除单个操作日志 %d",
"log@log_update_settings": "修改日志相关配置",
"log@tag_access_log": "访问日志",
"log@tag_listener": "端口监听",
"log@tag_script": "脚本",
"log@tag_waf": "WAF",
"message@log_read_all": "将所有消息置为已读",
"message@log_read_messages": "将一组消息置为已读",
"message_media_instance@log_create_message_media_instance": "创建消息媒介 %d",
"message_media_instance@log_delete_message_media_instance": "删除消息媒介 %d",
"message_media_instance@log_update_message_media_instance": "修改消息媒介 %d",
"message_reciever@log_update_cluster_message_receivers": "修改集群 %d 消息接收人",
"message_recipient@log_create_message_recipient": "创建媒介接收人 %d",
"message_recipient@log_delete_message_recipient": "删除媒介接收人 %d",
"message_recipient@log_update_message_recipient": "修改媒介接收人 %d",
"message_task@log_create_testing_message_task": "创建媒介测试任务 %d",
"message_task@log_delete_message_task": "删除消息发送任务 %d",
"metric_chart@log_create_metric_chart": "创建指标图表 %d",
"metric_chart@log_delete_metric_chart": "删除指标图表 %d",
"metric_chart@log_update_metric_chart": "修改指标图表 %d",
"metric_item@log_add_metric_item_to_cluster": "添加指标 %d 到集群 %d",
"metric_item@log_create_metric_item": "创建统计指标 %d",
"metric_item@log_delete_metric_item": "删除统计指标",
"metric_item@log_delete_metric_item_from_cluster": "从集群 %d 中移除指标 %d",
"metric_item@log_update_metric_item": "修改统计指标 %d",
"monitor_node@log_create_monitor_node": "创建监控节点 %d",
"monitor_node@log_delete_monitor_node": "删除监控节点 %d",
"monitor_node@log_update_monitor_node": "修改监控节点 %d",
"node@log_create_node": "创建节点 %d",
"node@log_create_node_batch": "批量创建节点",
"node@log_delete_node_from_cluster": "从集群 %d 中删除节点 %d",
"node@log_install_node": "安装节点 %d",
"node@log_install_node_remotely": "远程安装节点 %d",
"node@log_start_node_remotely": "远程启动节点 %d",
"node@log_stop_node_remotely": "远程停止节点 %d",
"node@log_up_node": "手动上线节点 %d",
"node@log_update_node": "修改节点 %d 基本信息",
"node@log_update_node_installation_status": "修改节点安装状态 %d",
"node@log_upgrade_node_remotely": "远程升级节点 %d",
"node@ungrouped_label": "未分组",
"node_action@log_copy_node_actions_to_cluster": "复制节点 %d 调度动作到集群",
"node_action@log_copy_node_actions_to_group": "复制节点 %d 调度动作到分组",
"node_action@log_create_node_action": "创建动作 %d",
"node_action@log_delete_node_action": "删除节点动作 %d",
"node_action@log_sort_node_actions": "修改节点 %d 动作排序",
"node_action@log_update_node_action": "修改节点动作 %d",
"node_cache@log_update_node_cache_settings": "修改节点 %d 缓存设置",
"node_cluster@log_create_cluster": "创建节点集群:%d",
"node_cluster@log_delete_cluster": "删除集群 %d",
"node_cluster@log_pin_cluster": "置顶集群 %d",
"node_cluster@log_run_cluster_health_check": "执行集群健康检查设置 %d",
"node_cluster@log_unpin_cluster": "取消置顶集群 %d",
"node_cluster@log_update_cluster_basic_settings": "修改集群基础设置 %d",
"node_cluster@log_update_cluster_health_check": "修改集群健康检查设置 %d",
"node_cluster_menu@setting_basic": "基础设置",
"node_cluster_menu@setting_cache_policy": "缓存策略",
"node_cluster_menu@setting_cc": "CC防护",
"node_cluster_menu@setting_ddos_protection": "DDoS防护",
"node_cluster_menu@setting_dns": "DNS设置",
"node_cluster_menu@setting_health_check": "健康检查",
"node_cluster_menu@setting_http3": "HTTP/3",
"node_cluster_menu@setting_metrics": "统计指标",
"node_cluster_menu@setting_notification": "消息通知",
"node_cluster_menu@setting_pages": "自定义页面",
"node_cluster_menu@setting_schedule": "智能调度",
"node_cluster_menu@setting_service_global": "网站设置",
"node_cluster_menu@setting_system_service": "系统服务",
"node_cluster_menu@setting_thresholds": "阈值设置",
"node_cluster_menu@setting_toa": "TOA设置",
"node_cluster_menu@setting_uam": "5秒盾",
"node_cluster_menu@setting_waf_actions": "WAF动作",
"node_cluster_menu@setting_waf_policy": "WAF策略",
"node_cluster_menu@setting_webp": "WebP",
"node_cluster_menu@tab_cluster_dashboard": "集群看板",
"node_cluster_menu@tab_cluster_delete": "删除集群",
"node_cluster_menu@tab_cluster_nodes": "节点列表",
"node_cluster_menu@tab_cluster_settings": "集群设置",
"node_dns@log_update_node_dns": "修改节点 %d DNS设置",
"node_grant@log_create_ssh_grant": "创建SSH认证 %d",
"node_grant@log_delete_ssh_grant": "删除SSH认证 %d",
"node_grant@log_update_ssh_grant": "修改SSH认证 %d",
"node_grant@method_private_key": "私钥",
"node_grant@method_user_password": "用户名+密码",
"node_group@log_create_node_group": "创建节点分组 %d",
"node_group@log_delete_node_group": "删除节点分组 %d",
"node_group@log_sort_node_groups": "修改节点分组排序",
"node_group@log_update_node_group": "修改节点分组 %d",
"node_ip_address@log_delete_node_ip_address": "删除IP地址 %d",
"node_ip_address@log_down_node_ip_address": "手动设置IP地址 %d 下线",
"node_ip_address@log_restore_node_ip_address": "取消IP地址 %d 的备用IP",
"node_ip_address@log_up_node_ip_address": "手动设置IP地址 %d 上线",
"node_log@log_delete_node_logs_batch": "批量删除节点运行日志",
"node_log@log_fix_all_logs": "设置所有日志为已修复",
"node_log@log_fix_node_logs": "设置日志 %s 为已修复",
"node_menu@create_multiple_nodes": "批量创建",
"node_menu@create_single_node": "单个创建",
"node_menu@install_auto_register": "自动注册",
"node_menu@install_manually": "手动安装",
"node_menu@install_remote": "远程安装(%d)",
"node_menu@install_remote_upgrade": "远程升级(%d)",
"node_menu@setting_basic": "基础设置",
"node_menu@setting_cache": "缓存设置",
"node_menu@setting_ddos_protection": "DDoS防护",
"node_menu@setting_dns": "DNS设置",
"node_menu@setting_schedule": "智能调度",
"node_menu@setting_ssh": "SSH设置",
"node_menu@setting_system": "系统设置",
"node_menu@setting_thresholds": "阈值设置",
"node_price_item@log_create_node_price_item_bandwidth": "创建带宽价格项目 %d",
"node_price_item@log_create_node_price_item_traffic": "创建流量价格项目 %d",
"node_price_item@log_delete_node_price_item": "删除流量价格项目 %d",
"node_price_item@log_update_node_price_item_bandwidth": "修改带宽价格项目 %d",
"node_price_item@log_update_node_price_item_traffic": "修改流量价格项目 %d",
"node_region@log_create_node_region": "创建节点区域 %d",
"node_region@log_delete_node_region": "删除节点区域 %d",
"node_region@log_move_node_between_regions": "修改节点 %d 区域到 %d",
"node_region@log_sort_node_regions": "修改节点区域排序",
"node_region@log_update_node_region": "修改节点区域 %d",
"node_region_price@log_update_node_region_price": "修改区域 %d - 价格项 %d 的价格",
"node_schedule@log_reset_node_action_status": "重置节点 %d 动作状态",
"node_schedule@log_update_node_schedule_basic": "修改节点调度基本信息",
"node_ssh@log_update_node_ssh": "修改节点 %d SSH配置",
"node_system@log_update_node_system_settings": "修改节点 %d 系统信息",
"node_systemd@log_update_cluster_systemd_settings": "修改集群 %d 的系统服务设置",
"node_task@log_delete_all_node_tasks": "删除所有节点同步任务",
"node_task@log_delete_node_task": "删除同步任务 %d",
"node_task@log_delete_node_tasks_batch": "批量删除节点同步任务",
"node_threshold@log_create_node_threshold": "创建节点阈值 %d",
"node_threshold@log_delete_node_threshold": "删除阈值 %d",
"node_threshold@log_update_node_threshold": "修改节点阈值 %d",
"node_toa@log_update_cluster_toa": "修改集群 %d 的TOA设置",
"ns@log_create_ns_domains_batch": "批量添加域名",
"ns@log_create_ns_records_batch": "批量添加解析",
"ns@log_delete_ns_domains_batch": "批量删除域名,用户 %d",
"ns@log_delete_ns_records_batch": "批量删除域名记录",
"ns@log_disable_ns_records_batch": "批量停用域名记录",
"ns@log_enable_ns_records_batch": "批量启用域名记录",
"ns@log_import_records_batch": "批量导入记录",
"ns@log_update_ns_records_batch": "批量修改域名记录",
"ns@log_update_ns_user_config": "修改NS全局设置--用户相关设置",
"ns@setting_access_logs": "访问日志设置",
"ns@setting_user": "用户设置",
"ns_cluster@log_create_ns_cluster": "创建域名服务集群 %d",
"ns_cluster@log_delete_ns_cluster": "删除域名服务集群 %d",
"ns_cluster@log_update_ns_cluster_settings_access_log": "修改域名服务集群 %d 访问日志配置",
"ns_cluster@log_update_ns_cluster_settings_answer": "修改NS集群 %d 应答模式设置",
"ns_cluster@log_update_ns_cluster_settings_basic": "修改域名服务集群基本信息 %d",
"ns_cluster@log_update_ns_cluster_settings_ddos_protection": "修改NS集群 %d 的DDOS防护设置",
"ns_cluster@log_update_ns_cluster_settings_doh": "修改NS集群 %d DoH设置",
"ns_cluster@log_update_ns_cluster_settings_recursion": "修改DNS集群 %d 的递归DNS设置",
"ns_cluster@log_update_ns_cluster_settings_soa": "修改NS集群 %d SOA配置",
"ns_cluster@log_update_ns_cluster_settings_tcp": "修理NS集群 %d TCP设置",
"ns_cluster@log_update_ns_cluster_settings_tls": "修改NS集群 %d TLS设置",
"ns_cluster@log_update_ns_cluster_settings_udp": "修改NS集群 %d UDP设置",
"ns_cluster@menu_access_logs": "访问日志",
"ns_cluster@menu_answer_setting": "应答模式",
"ns_cluster@menu_basic": "基础设置",
"ns_cluster@menu_ddos_protection": "DDoS防护",
"ns_cluster@menu_dns_recursion": "递归DNS",
"ns_cluster@menu_doh": "DoH",
"ns_cluster@menu_soa": "SOA",
"ns_cluster@menu_tcp": "TCP",
"ns_cluster@menu_tls": "TLS",
"ns_cluster@menu_udp": "UDP",
"ns_cluster@tab_delete": "删除集群",
"ns_cluster@tab_nodes": "节点列表",
"ns_cluster@tab_setting": "集群设置",
"ns_domain@log_create_ns_domain": "创建域名 %d",
"ns_domain@log_create_ns_domains_batch": "批量添加域名",
"ns_domain@log_delete_ns_domain": "删除域名 %d",
"ns_domain@log_update_ns_domain": "修改域名 %d",
"ns_domain@log_update_ns_domain_health_check": "修改域名 %d 健康检查设置",
"ns_domain@log_update_ns_domain_status": "修改域名 %d 状态为 %s",
"ns_domain@log_update_ns_domain_tsig": "修改域名 %d 的TSIG配置",
"ns_domain@log_validate_ns_domains": "批量验证域名",
"ns_domain_group@log_create_ns_domain_group": "创建域名分组 %d",
"ns_domain_group@log_delete_ns_domain_group": "删除域名分组 %d",
"ns_domain_group@log_update_ns_domain_group": "修改域名分组 %d",
"ns_key@log_create_ns_key": "创建DNS密钥 %d",
"ns_key@log_delete_ns_key": "删除DNS密钥 %d",
"ns_key@log_update_ns_key": "修改DNS密钥 %d",
"ns_node@log_create_ns_node": "创建域名服务节点 %d",
"ns_node@log_delete_ns_node": "删除域名服务节点 %d",
"ns_node@log_install_ns_node_remotely": "安装节点 %d",
"ns_node@log_start_ns_node_remotely": "远程启动节点 %d",
"ns_node@log_stop_ns_node_remotely": "远程停止节点 %d",
"ns_node@log_update_ns_node": "修改节点 %d",
"ns_node@log_update_ns_node_installation_status": "修改节点安装状态 %d",
"ns_node_ssh@log_update_ns_node_ssh": "修改节点 %d SSH配置",
"ns_plan@log_create_ns_plan": "创建套餐 %d",
"ns_plan@log_delete_ns_plan": "删除套餐 %d",
"ns_plan@log_sort_ns_plans": "套餐排序",
"ns_plan@log_update_ns_plan": "修改套餐 %d",
"ns_record@log_create_ns_record": "创建域名记录 %d",
"ns_record@log_create_ns_records_batch": "批量创建域名记录",
"ns_record@log_delete_ns_record": "删除域名记录 %d",
"ns_record@log_up_ns_record": "手动设置DNS记录 %d 为上线状态",
"ns_record@log_update_ns_record": "修改域名记录 %d",
"ns_record@log_update_ns_record_health_check": "修改记录 %d 的健康检查",
"ns_route@log_create_ns_route": "创建域名服务线路 %d",
"ns_route@log_delete_ns_route": "删除域名服务线路 %d",
"ns_route@log_sort_ns_routes": "对线路进行排序",
"ns_route@log_update_ns_route": "修改域名线路 %d",
"ns_route_category@log_create_ns_route_category": "创建NS线路分类 %d",
"ns_route_category@log_delete_ns_route_category": "删除NS线路分类 %d",
"ns_route_category@log_sort_ns_route_categories": "对NS线路分类进行排序",
"ns_route_category@log_update_ns_route_category": "修改NS线路分类 %d",
"ns_user_plan@log_create_ns_user_plan": "为用户 %d 创建DNS套餐 %d",
"ns_user_plan@log_delete_ns_user_plan": "删除用户套餐 %d",
"ns_user_plan@log_update_ns_user_plan": "修改用户DNS套餐 %d",
"order_method@log_create_order_method": "创建支付方式 %d",
"order_method@log_delete_order_method": "删除支付方式 %d",
"order_method@log_update_order_method": "修改支付方式 %d",
"plan@log_create_plan": "创建套餐 %d",
"plan@log_delete_plan": "删除套餐 %d",
"plan@log_sort_plans": "对套餐进行排序",
"plan@log_update_plan": "修改套餐 %d",
"region_city@log_add_region_city_code": "添加城市/市 %d 别名 %s",
"region_city@log_update_region_city_custom": "定制城市 %d 信息",
"region_country@log_add_region_country_code": "添加国家/地区 %d 别名 %s",
"region_country@log_update_region_country_custom": "定制国家/地区 %d 信息",
"region_country@region_china": "中国",
"region_country@region_china_hk": "中国香港",
"region_country@region_china_mainland": "中国内地",
"region_country@region_china_mo": "中国澳门",
"region_country@region_china_tw": "中国台湾",
"region_country@region_greater_china": "中国全境",
"region_provider@log_add_region_provider_code": "添加ISP服务商 %d 别名 %s",
"region_provider@log_update_region_provider_custom": "定制ISP %d 信息",
"region_province@log_add_region_province_code": "添加省份/州 %d 别名 %s",
"region_province@log_update_region_province_custom": "定制省份 %d 信息",
"region_town@log_add_region_town_code": "添加区/县 %d 别名 %s",
"region_town@log_update_region_town_custom": "定制县级 %d 信息",
"report_node@log_create_report_node": "创建监控终端 %d",
"report_node@log_delete_report_node": "删除监控终端 %d",
"report_node@log_update_report_node": "修改监控终端 %d",
"report_node_group@log_create_report_node_group": "创建监控节点分组 %d",
"report_node_group@log_delete_report_node_group": "删除监控节点分组 %d",
"report_node_group@log_update_report_node_group": "修改监控节点分组 %d",
"reverse_proxy@log_update_reverse_proxy_scheduling": "修改反向代理 %d 负载均衡算法",
"script@log_create_script": "创建脚本 %d",
"script@log_delete_script": "删除脚本 %d",
"script@log_publish_scripts": "发布脚本库到边缘节点",
"script@log_update_script": "修改脚本 %d",
"server@copy_setting_current_cluster": "当前集群:%s",
"server@copy_setting_current_group": "当前分组:%s",
"server@copy_setting_current_user": "当前用户:%s",
"server@copy_setting_select_cluster": "选择集群",
"server@copy_setting_select_group": "选择分组",
"server@copy_setting_select_server": "选择网站",
"server@copy_setting_select_user": "选择用户",
"server@log_copy_server_configs": "从网站 %d 中同步配置 %s",
"server@log_create_server": "创建网站 %d",
"server@log_delete_server": "删除网站 %d",
"server@log_disable_server": "停用网站 %d",
"server@log_enable_server": "启用网站 %d",
"server@log_submit_auditing_server": "提交网站 %d 域名审核",
"server@log_update_global_settings": "保存网站全局配置",
"server@log_update_server_basic": "修改网站 %d 基本信息",
"server@log_update_server_groups": "修改网站 %d 所属分组",
"server@log_update_server_is_on": "修改网站 %d 启用状态",
"server@log_update_server_name": "修改网站名称",
"server@menu_accesslog_history": "历史",
"server@menu_accesslog_realtime": "实时",
"server@menu_accesslog_today": "今天",
"server@menu_dashboard": "看板",
"server@menu_setting_access_log": "访问日志",
"server@menu_setting_auth": "访问鉴权",
"server@menu_setting_basic": "基本信息",
"server@menu_setting_cache": "缓存",
"server@menu_setting_cc": "CC防护",
"server@menu_setting_charset": "字符编码",
"server@menu_setting_client_ip": "访客IP地址",
"server@menu_setting_compression": "内容压缩",
"server@menu_setting_delete": "删除",
"server@menu_setting_dns": "DNS",
"server@menu_setting_domains": "域名",
"server@menu_setting_fastcgi": "Fastcgi",
"server@menu_setting_group": "分组",
"server@menu_setting_http": "HTTP",
"server@menu_setting_http_headers": "HTTP报头",
"server@menu_setting_http_proxy": "HTTP代理",
"server@menu_setting_https": "HTTPS",
"server@menu_setting_locations": "路由规则",
"server@menu_setting_optimization": "页面优化",
"server@menu_setting_origins": "源站",
"server@menu_setting_others": "其他设置",
"server@menu_setting_pages": "自定义页面",
"server@menu_setting_plan": "套餐",
"server@menu_setting_redirects": "URL跳转",
"server@menu_setting_referers": "防盗链",
"server@menu_setting_request_limit": "请求限制",
"server@menu_setting_rewrite_rules": "重写规则",
"server@menu_setting_root": "静态分发",
"server@menu_setting_scripts": "边缘脚本",
"server@menu_setting_stat": "统计",
"server@menu_setting_tcp": "TCP",
"server@menu_setting_tcp_proxy": "TCP代理",
"server@menu_setting_tls": "TLS",
"server@menu_setting_traffic_limit": "流量限制",
"server@menu_setting_uam": "5秒盾",
"server@menu_setting_udp": "UDP",
"server@menu_setting_udp_proxy": "UDP代理",
"server@menu_setting_unix": "Unix",
"server@menu_setting_user_agents": "UA名单",
"server@menu_setting_waf": "WAF",
"server@menu_setting_webp": "WebP",
"server@menu_setting_websocket": "Websocket",
"server@menu_stat_clients": "终端",
"server@menu_stat_providers": "运营商",
"server@menu_stat_regions": "地域分布",
"server@menu_stat_traffic": "流量统计",
"server@menu_stat_waf": "WAF",
"server@server_names_log_update_server_names": "修改网站 %d 域名",
"server@tab_access_logs": "日志",
"server@tab_dashboard": "看板",
"server@tab_delete": "删除",
"server@tab_server_list": "网站列表",
"server@tab_settings": "设置",
"server@tab_stat": "统计",
"server_access_log@log_update_access_log_setting": "修改Web %d 的访问日志设置",
"server_auth@log_update_http_auth_settings": "修改Web %d 的鉴权设置",
"server_cache@log_fetch_caches": "预热网站 %d 缓存",
"server_cache@log_purge_caches": "删除网站 %d 缓存",
"server_cache@log_update_cache_settings": "修改Web %d 的缓存设置",
"server_cache@log_update_cluster_cache_policy": "设置集群 %d 的缓存策略为 %d",
"server_cache_policy@log_clean_all": "清除缓存,缓存策略:%d",
"server_cache_policy@log_create_cache_policy": "创建缓存策略:%d",
"server_cache_policy@log_delete_cache_policy": "删除缓存策略:%d",
"server_cache_policy@log_fetch_caches": "预热缓存,缓存策略:%d",
"server_cache_policy@log_purge_caches": "删除缓存,缓存策略:%d",
"server_cache_policy@log_stat_caches": "统计缓存,缓存策略:%d",
"server_cache_policy@log_test_reading": "测试读取,缓存策略:%d",
"server_cache_policy@log_test_writing": "测试写入,缓存策略:%d",
"server_cache_policy@log_update_cache_policy": "修改缓存策略:%d",
"server_cc@log_update_cc_settings": "修改Web %d CC防护配置",
"server_cc@log_update_cluster_http_cc_policy": "修改集群 %d 的HTTP CC策略设置",
"server_charset@log_update_charset_setting": "修改Web %d 的字符集设置",
"server_common@log_update_common_settings": "修改网站Web %d 设置的其他设置",
"server_compression@log_update_compression_settings": "修改Web %d 的压缩设置",
"server_dns@log_regenerate_dns_name": "重新生成网站 %d 的CNAME",
"server_dns@log_update_dns_name": "修改网站 %d CNAME为 %s",
"server_dns@log_update_dns_settings": "修改网站 %d 的DNS设置",
"server_fastcgi@log_update_http_fastcgi": "修改Web %d 的Fastcgi设置",
"server_global_setting@log_update_cluster_global_server_config": "修改集群 %d 全局配置",
"server_group@log_create_server_group": "创建网站分组 %d",
"server_group@log_delete_server_group": "删除网站分组 %d",
"server_group@log_sort_server_groups": "修改网站分组排序",
"server_group@log_update_server_group": "修改网站分组 %d",
"server_http3@log_update_cluster_http3_policy": "修改集群 %d 的HTTP3策略设置",
"server_http@log_update_http_settings": "修改网站 %d 的HTTP设置",
"server_http_header@log_create_deleting_header": "添加删除的报头 HeaderPolicyId: %d, Name: %s",
"server_http_header@log_create_non_standard_header": "添加非标的报头 HeaderPolicyId: %d, Name: %s",
"server_http_header@log_create_setting_request_header": "添加自定义请求报头HeaderPolicyId:%d, Name:%s, Value:%s",
"server_http_header@log_create_setting_response_header": "添加自定义响应报头HeaderPolicyId:%d, Name:%s, Value:%s",
"server_http_header@log_delete_deleting_header": "删除需要删除的报头HeaderPolicyId:%d, HeaderName:%s",
"server_http_header@log_delete_header": "删除报头HeaderPolicyId:%d, HeaderId:%d",
"server_http_header@log_delete_non_standard_header": "删除需要非标的报头HeaderPolicyId:%d, HeaderName:%s",
"server_http_header@log_update_http_headers": "修改Web %d 的报头设置",
"server_http_header@log_update_setting_header": "修改设置报头HeaderId:%d, Name:%s, Value:%s",
"server_https@log_update_https_settings": "修改网站 %d 的HTTPS设置",
"server_optimization@log_update_optimization_settings": "修改Web %d 的页面优化设置",
"server_origin@log_create_origin": "创建源站 %d",
"server_origin@log_delete_origin": "删除源站 %d",
"server_origin@log_update_origin": "修改源站 %d",
"server_page@log_create_page": "创建自定义页面 %d",
"server_page@log_update_cluster_pages": "修改集群 %d 自定义页面策略",
"server_page@log_update_page": "修改自定义页面 %d",
"server_page@log_update_pages": "修改Web %d 的自定义页面设置",
"server_redirect@log_update_redirects": "修改Web %d 的跳转设置",
"server_referer@log_update_referers": "修改Web %d 防盗链设置",
"server_request_limit@log_update_request_limit_settings": "修改Web %d 请求限制",
"server_reverse_proxy@log_update_location_reverse_proxy_settings": "修改路由规则 %d 的反向代理设置",
"server_reverse_proxy@log_update_server_group_reverse_proxy_settings": "修改分组 %d 的反向代理设置",
"server_reverse_proxy@log_update_server_reverse_proxy_settings": "修改网站 %d 的反向代理设置",
"server_root@log_update_root": "修改Web %d 静态分发设置",
"server_script@log_update_scripts": "修改Web %d 边缘脚本",
"server_stat@log_update_stat_settings": "修改Web %d 的统计设置",
"server_tcp@log_update_tcp_settings": "修改网站 %d TCP设置",
"server_tls@log_update_tls_settings": "修改网站 %d TLS设置",
"server_traffic_limit@log_update_traffic_limit_settings": "修改网站 %d 流量限制",
"server_traffic_stat@all_servers": "全部网站(%d",
"server_uam@log_update_cluster_uam_policy": "修改集群 %d 的UAM设置",
"server_uam@log_update_server_uam_settings": "修改网站 %d 全站防护模式",
"server_uam@log_update_uam_settings": "修改Web %d 全站防护模式",
"server_udp@log_update_udp_settings": "修改网站 %d UDP设置",
"server_user_agent@log_update_user_agents": "修改Web %d User-Agent设置",
"server_waf@log_update_waf_settings": "修改Web %d 的WAF设置",
"server_webp@log_update_cluster_webp_policy": "修改集群 %d 的WebP设置",
"server_websocket@log_update_websocket_settings": "修改Web %d 的Websocket设置",
"ssl_cert@log_delete_ssl_cert": "删除SSL证书 %d",
"ssl_cert@log_download_ssl_cert": "下载SSL证书 %d",
"ssl_cert@log_download_ssl_cert_key": "下载SSL密钥 %d",
"ssl_cert@log_download_ssl_cert_zip": "下载SSL证书压缩包 %d",
"ssl_cert@log_ocsp_ignore_ocsp_status": "忽略一组证书的OCSP状态",
"ssl_cert@log_ocsp_reset_all_ocsp_status": "忽略所有证书的OCSP状态",
"ssl_cert@log_ocsp_reset_ocsp_status": "重置一组证书的OCSP状态",
"ssl_cert@log_update_ssl_cert": "修改SSL证书 %d",
"ssl_cert@log_upload_ssl_cert": "上传SSL证书 %d",
"ssl_cert@log_upload_ssl_cert_batch": "批量上传证书",
"ssl_cert@menu_apply": "申请证书",
"ssl_cert@menu_certs": "证书",
"ssl_cert@menu_ocsp": "OCSP日志",
"system@home_page": "https://goedge.cn",
"ticket_category@log_create_ticket_category": "添加工单分类 %d",
"ticket_category@log_delete_ticket_category": "删除工单分类 %d",
"ticket_category@log_update_ticket_category": "修改分类 %d",
"traffic_package@log_create_traffic_package": "创建流量包 %d",
"traffic_package@log_delete_traffic_package": "删除流量包 %d",
"traffic_package@log_update_traffic_package": "修改流量包 %d",
"traffic_package_period@log_create_traffic_package_period": "创建流量包有效期 %d",
"traffic_package_period@log_delete_traffic_package_period": "删除流量包有效期选项 %d",
"traffic_package_period@log_update_traffic_package_period": "修改流量包有效期选项 %d",
"traffic_package_price@log_update_traffic_package_price": "修改流量包 %d 区域 %d x 有效期 %d 的价格",
"user@log_create_user": "创建用户 %d",
"user@log_delete_user": "删除用户 %d",
"user@log_update_user": "修改用户 %d",
"user@log_update_user_email_settings": "修改用户邮件设置",
"user@log_update_user_features": "设置用户 %d 的功能列表",
"user@log_update_user_global_settings": "修改用户设置",
"user@log_update_user_price_period": "修改计费周期为 %s",
"user@log_update_user_price_type": "修改计费类型为 %s",
"user@log_update_user_profile": "修改个人资料",
"user@log_verify_user": "审核用户:%d 结果:%s",
"user_access_key@log_create_user_access_key": "创建AccessKey %d",
"user_access_key@log_delete_user_access_key": "删除AccessKey %d",
"user_access_key@log_update_user_access_key_is_on": "设置AccessKey %d 启用状态",
"user_account@log_update_user_account": "操作用户账户 %d: %s",
"user_ad_instance@log_delete_user_ad_instance": "删除用户高防实例 %d",
"user_ad_instance@log_renew_user_ad_instance": "为用户高防实例 %d 续期",
"user_ad_instance@log_update_user_ad_instance_objects": "修改用户高防实例 %d 防护对象",
"user_bill@log_pay_user_bill": "支付账单 %d",
"user_common@canceled": "已取消",
"user_common@log_system_error": "系统发生错误:%s",
"user_common@server_error": "服务器出了点小问题,请联系技术人员处理。",
"user_common@system": "系统",
"user_identity@log_cancel_user_identity": "取消身份认证审核",
"user_identity@log_reject_user_identity": "驳回用户 %d 的实名认证",
"user_identity@log_reset_user_identity": "重置用户 %d 的实名认证",
"user_identity@log_submit_user_identity": "提交身份认证审核",
"user_identity@log_update_user_identity_enterprise": "修改/上传企业实名认证信息",
"user_identity@log_update_user_identity_individual": "修改/上传个人实名认证信息",
"user_identity@log_verify_user_identity": "通过用户 %d 的实名认证",
"user_login@log_update_login": "修改登录设置",
"user_node@log_create_user_node": "创建用户节点 %d",
"user_node@log_delete_user_node": "删除用户节点 %d",
"user_node@log_update_user_node": "修改用户节点 %d",
"user_order@log_finish_user_order": "设置订单 %s 为完成支付",
"user_plan@log_bind_user_plan_to_server": "修改网站 %d 绑定的套餐为 %d",
"user_plan@log_buy_user_plan": "为用户 %d 购买套餐 %d",
"user_plan@log_cancel_user_plan_from_server": "取消网站 %d 绑定的套餐",
"user_plan@log_delete_user_plan": "删除用户已购套餐 %d",
"user_plan@log_renew_user_plan": "续费已购套餐 %d",
"user_ticket@log_create_user_ticket": "创建工单 %d",
"user_ticket_log@log_reply_ticket": "回复工单 %d",
"user_traffic_package@log_create_user_traffic_package": "为用户 %d 创建流量包:%d区域%d有效期%d数量%d",
"user_traffic_package@log_delete_user_traffic_package": "删除用户流量包 %d",
"waf@connector_and": "和(AND)",
"waf@connector_and_description": "所有规则都满足才视为匹配",
"waf@connector_or": "或(OR)",
"waf@connector_or_description": "任一规则满足了就视为匹配",
"waf@log_delete_ip_from_waf_policy": "从WAF策略 %d 名单中删除IP %d",
"waf@log_update_forbidden_countries": "WAF策略 %d 设置禁止访问的国家和地区",
"waf@log_update_forbidden_provinces": "WAF策略 %d 设置禁止访问的省份",
"waf@log_update_ip_from_waf_policy": "修改WAF策略 %d 名单中的IP %d",
"waf_action@log_create_waf_action": "创建集群 %d 的WAF动作",
"waf_action@log_delete_waf_action": "删除WAF动作 %d",
"waf_action@log_update_waf_action": "修改WAF动作 %d",
"waf_policy@log_create_waf_policy": "创建WAF策略 %d",
"waf_policy@log_delete_waf_policy": "删除WAF策略 %d",
"waf_policy@log_export_waf_policy": "导出WAF策略 %d",
"waf_policy@log_import_waf_policy": "从文件中导入规则到WAF策略 %d",
"waf_policy@log_update_cluster_waf_policy": "设置集群 %d 的WAF策略为 %d",
"waf_policy@log_update_waf_policy": "修改WAF策略 %d 基本信息",
"waf_policy@log_upgrade_waf_policy": "升级WAF %d 内置规则",
"waf_rule_group@log_create_rule_group": "创建规则分组 %d名称%s",
"waf_rule_group@log_delete_rule_group": "删除WAF策略 %d 的规则分组 %d",
"waf_rule_group@log_sort_rule_groups": "修改WAF策略 %d 中的规则分组中的排序",
"waf_rule_group@log_update_rule_group": "修改WAF规则分组 %d 基本信息",
"waf_rule_group@log_update_rule_group_is_on": "设置WAF规则分组 %d 开启状态",
"waf_rule_set@log_delete_rule_set": "删除WAF规则分组 %d 中的规则集 %d",
"waf_rule_set@log_sort_rule_sets": "修改WAF规则分组 %d 中的规则集排序",
"waf_rule_set@log_update_rule_set": "修改WAF规则集 %d 基本信息",
"waf_rule_set@log_update_rule_set_is_on": "修改WAF规则集 %d 开启状态",
})
}

View File

@@ -0,0 +1 @@
After change the messages, remember to run 'langs generate' to generate Go codes.

View File

@@ -0,0 +1,5 @@
{
"log_create_acme_provider_account": "创建ACME服务商账号 %d",
"log_delete_acme_provider_account": "删除ACME服务商账号 %d",
"log_update_acme_provider_account": "修改ACME服务商账号 %d"
}

View File

@@ -0,0 +1,6 @@
{
"log_create_acme_task": "创建证书申请任务 %d",
"log_update_acme_task": "修改证书申请任务 %d",
"log_delete_acme_task": "删除证书申请任务 %d",
"log_run_acme_task": "执行ACME任务 %d"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_acme_user": "创建ACME用户 %d",
"log_delete_acme_user": "删除ACME用户 %d",
"log_update_acme_user": "修改ACME用户 %d"
}

View File

@@ -0,0 +1,5 @@
{
"log_delete_ad_network": "删除高防IP线路",
"log_update_ad_network": "修改高防IP线路 %d",
"log_create_ad_network": "创建高防IP线路 %d"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_ad_package": "创建高防产品 %d",
"log_delete_ad_package": "删除高防产品 %d",
"log_update_ad_package": "修改高防产品 %d"
}

View File

@@ -0,0 +1,5 @@
{
"log_delete_ad_package_instance": "删除高防实例 %d",
"log_update_ad_package_instance": "修改高防实例 %d",
"log_create_ad_package_instance": "创建高防实例 %d"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_ad_package_period": "创建高防IP实例有效期 %d",
"log_delete_ad_package_period": "删除高防IP实例有效期选项 %d",
"log_update_ad_package_period": "修改高防IP实例有效期选项 %d"
}

View File

@@ -0,0 +1,4 @@
{
"log_create_ad_package_price": "为用户 %d 创建高防实例:%d有效期%d数量%d",
"log_update_ad_package_price": "修改高防产品 %d 有效期 %d 的价格"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_admin": "创建系统用户 %d",
"log_delete_admin": "删除系统用户 %d",
"log_update_admin": "修改系统用户 %d"
}

View File

@@ -0,0 +1,17 @@
{
"menu_setting_basic": "基础设置",
"menu_setting_dns": "DNS设置",
"menu_setting_health_check": "健康检查",
"menu_setting_cache_policy": "缓存策略",
"menu_setting_waf_policy": "WAF策略",
"menu_setting_webp": "WebP",
"menu_setting_metrics": "统计指标",
"menu_setting_ddos_protection": "DDoS防护",
"menu_setting_cache": "缓存设置",
"system": "系统",
"canceled": "已取消",
"server_error": "服务器出了点小问题,请联系技术人员处理。",
"log_system_error": "系统发生错误:%s"
}

View File

@@ -0,0 +1,9 @@
{
"ui_overview": "概况",
"ui_waf": "WAF",
"ui_dns": "DNS",
"ui_user": "用户",
"ui_events": "事件",
"disk_usage_warning": "当前服务器磁盘空间不足,请立即扩充容量,文件路径:%s已使用%dG已使用比例%.2f%%,仅剩余空间:%.2f%%。<br/>如果是因为本机数据库数据过多,你可以:<a href=\"/settings/database/clean\">[清理访问日志]</a> &nbsp; &nbsp; <a href=\"${lang.system@home_page}/docs/APINode/QA.md\" target=\"_blank\">[调整数据库binlog设置]</a>"
}

View File

@@ -0,0 +1,8 @@
{
"log_system_error": "登录时发生系统错误:%s",
"log_failed": "登录失败,用户名:%s",
"log_success": "成功登录系统,用户名:%s",
"log_otp_verified_success": "成功通过OTP验证登录系统",
"log_update_login": "修改登录设置"
}

View File

@@ -0,0 +1,71 @@
{
"dashboard": "数据看板",
"servers": "网站列表",
"server_access_logs": "访问日志",
"server_groups": "网站分组",
"server_certs": "证书管理",
"server_traffic_stats": "用量统计",
"server_cache_policies": "缓存策略",
"server_purge_fetch_caches": "刷新预热",
"server_waf_policies": "WAF策略",
"server_ip_lists": "IP名单",
"server_access_log_policies": "日志策略",
"server_metrics": "统计指标",
"server_scripts": "脚本库",
"server_global_settings": "通用设置",
"nodes": "边缘节点",
"node_clusters": "集群列表",
"node_logs": "节点日志",
"node_ip_list": "节点IP",
"node_regions": "区域设置",
"node_ssh_grants": "节点SSH",
"node_distributed_monitors": "区域监控",
"node_anti_ddos_products": "高防IP",
"dns": "域名解析",
"dns_clusters": "集群列表",
"dns_providers": "DNS服务商",
"dns_issues": "问题修复",
"ns": "智能DNS",
"ns_domains": "域名管理",
"ns_domain_groups": "域名分组",
"ns_domain_batch_operations": "批量操作",
"ns_clusters": "集群管理",
"ns_routes": "线路管理",
"ns_settings": "全局配置",
"ns_user_plans": "用户套餐",
"ns_plans": "套餐设置",
"ns_access_logs": "访问日志",
"ns_node_logs": "运行日志",
"ns_resolve_test": "解析测试",
"users": "平台用户",
"user_settings": "用户设置",
"finance": "财务管理",
"finance_bills": "费用账单",
"finance_accounts": "用户账户",
"finance_logs": "收支明细",
"finance_orders": "订单管理",
"finance_income": "统计报表",
"finance_fee": "计费设置",
"finance_packages": "流量包",
"plans": "套餐管理",
"plan_user_plans": "已购套餐",
"tickets": "工单系统",
"ticket_category": "分类",
"admins": "系统用户",
"admin_recipients": "通知媒介",
"logs": "日志审计",
"settings": "系统设置",
"setting_basic_settings": "基础设置",
"setting_advanced_settings": "高级设置",
"setting_authority": "商业版本"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_profile": "修改个人资料"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_security_settings": "修改管理界面安全设置"
}

View File

@@ -0,0 +1,4 @@
{
"log_update_server_http_settings": "修改管理界面的HTTP设置",
"log_update_server_https_settings": "修改管理界面的HTTPS设置"
}

View File

@@ -0,0 +1,20 @@
{
"tab_admin_server": "Web服务",
"tab_admin_ui": "管理界面设置",
"tab_user_ui": "用户界面设置",
"tab_admin_security_settings": "安全设置",
"tab_updates": "检查更新",
"tab_profile": "个人资料",
"tab_login": "登录设置",
"tab_database": "数据库",
"tab_api_nodes": "API节点",
"tab_user_nodes": "用户节点",
"tab_monitor_nodes": "监控节点",
"tab_ip_library": "IP库",
"tab_client_operation_systems": "操作系统库",
"tab_client_browsers": "浏览器库",
"tab_authority": "商业版认证",
"tab_access_log_databases": "日志数据库",
"tab_transfer": "迁移",
"tab_backup": "备份"
}

View File

@@ -0,0 +1,6 @@
{
"default_product_name": "GoEdge",
"default_system_name": "GoEdge管理员系统",
"log_update_ui_settings": "修改管理界面设置"
}

View File

@@ -0,0 +1,5 @@
{
"log_ignore_version": "忽略升级版本 %s",
"log_reset_ignore_version": "重置忽略升级版本",
"log_update_check_settings": "修改检查更新设置"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_api_node": "创建API节点 %d",
"log_update_api_node": "修改API节点 %d",
"log_delete_api_node": "删除API节点 %d"
}

View File

@@ -0,0 +1,4 @@
{
"log_update_client_browser": "修改浏览器信息 %d",
"log_create_browser": "创建浏览器信息 %s"
}

View File

@@ -0,0 +1,4 @@
{
"log_update_client_system": "修改操作系统信息 %d",
"log_create_system": "创建操作系统信息 %s"
}

View File

@@ -0,0 +1,6 @@
{
"log_update_clean_days": "修改数据库自动清理设置",
"log_delete_table": "删除数据表 %s",
"log_truncate_table": "清空数据表 %s 数据",
"log_update_api_node_database_config": "修改API节点数据库设置"
}

View File

@@ -0,0 +1,9 @@
{
"tab_nodes": "数据库节点",
"log_create_db_node": "创建数据库节点 %d",
"log_delete_db_node": "删除数据库节点 %d",
"log_update_db_node": "修改数据库节点 %d",
"log_delete_table": "删除数据库节点 %d 数据表 %s",
"log_truncate_table": "清空数据库节点 %d 数据表 %s 数据"
}

View File

@@ -0,0 +1,4 @@
{
"log_update_cluster_ddos_protection": "修改集群 %d 的DDOS防护设置",
"log_update_node_ddos_protection": "修改节点 %d 的DDOS防护设置"
}

View File

@@ -0,0 +1,10 @@
{
"log_update_cluster_dns": "修改集群 %d DNS设置",
"log_sync_domain": "同步DNS域名数据 %d",
"log_sync_cluster": "同步集群 %d 的DNS设置",
"log_create_domain": "添加管理域名到DNS服务商 %d",
"log_delete_domain": "从DNS服务商中删除域名 %d",
"log_recover_domain": "从DNS服务商中恢复域名 %d",
"log_update_domain": "修改DNS服务商域名 %d",
"log_update_node_dns": "修改节点 %d 的DNS设置"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_dns_provider": "创建DNS服务商 %d",
"log_delete_dns_provider": "删除DNS服务商 %d",
"log_update_dns_provider": "修改DNS服务商 %d"
}

View File

@@ -0,0 +1,4 @@
{
"log_delete_dns_task": "删除DNS同步任务 %d",
"log_delete_all_dns_tasks": "删除所有DNS同步任务"
}

View File

@@ -0,0 +1,4 @@
{
"log_bill_generate_manually": "手动生成上个月 %s 账单",
"log_update_user_order_config": "修改订单设置"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_fee_setting": "修改默认计费方式"
}

View File

@@ -0,0 +1,6 @@
{
"log_create_http_access_log_policy": "创建访问日志策略 %d",
"log_delete_http_access_log_policy": "删除访问日志策略 %d",
"log_test_http_access_log_policy": "测试向访问日志策略 %d 写入数据",
"log_update_http_access_log_policy": "修改访问日志策略 %d"
}

View File

@@ -0,0 +1,4 @@
{
"log_create_http_auth_policy": "创建HTTP鉴权 %d",
"log_update_http_auth_policy": "修改HTTP鉴权 %d"
}

View File

@@ -0,0 +1,6 @@
{
"log_delete_http_cache_task": "删除缓存任务 %d",
"log_create_http_cache_task_fetch": "批量预热缓存Key",
"log_create_http_cache_task_purge": "批量刷新缓存Key",
"log_reset_http_cache_task": "重置缓存任务 %d 状态"
}

View File

@@ -0,0 +1,4 @@
{
"log_create_http_fastcgi": "创建Fastcgi %d",
"log_update_http_fastcgi": "修改Fastcgi %d"
}

View File

@@ -0,0 +1,4 @@
{
"log_create_http_location": "创建路由规则:%s", // 参数pattern
"log_update_http_location": "修改路由规则 %d 设置"
}

View File

@@ -0,0 +1,6 @@
{
"log_create_rewrite_rule": "在Web %d 中创建重写规则 %d",
"log_delete_rewrite_rule": "从Web %d 中删除重写规则 %d",
"log_sort_rewrite_rules": "对Web %d 中的重写规则进行排序",
"log_update_rewrite_rule": "修改Web %d 中的重写规则 %d"
}

View File

@@ -0,0 +1,6 @@
{
"log_create_ip_item": "在名单 %d 中创建IP %d",
"log_delete_ip_item": "从IP名单 %d 中删除IP %d",
"log_read_all_ip_items": "将所有IP名单置为已读",
"log_update_ip_item": "修改IP名单中的IP %d"
}

View File

@@ -0,0 +1,3 @@
{
"log_finish_ip_library": "完成IP库%d 制作"
}

View File

@@ -0,0 +1,5 @@
{
"log_delete_ip_library_artifact": "删除IP库 %d",
"log_use_ip_library_artifact": "使用IP库 %d",
"log_cancel_ip_library_artifact": "取消使用IP库 %d"
}

View File

@@ -0,0 +1,5 @@
{
"log_generate_ip_library_file": "重新生成IP库 %d 文件",
"log_upload_ip_library_file": "上传IP库 %d",
"log_delete_ip_library_file": "删除IP库文件 %d"
}

View File

@@ -0,0 +1,11 @@
{
"log_delete_ip_batch": "批量删除IP名单中的IP%s",
"log_create_ip_items_batch": "在IP名单 %d 中批量添加IP",
"log_bind_ip_list_waf_policy": "绑定IP名单 %d 到WAF策略 %d",
"log_unbind_ip_list_waf_policy": "解除绑定IP名单 %d WAF策略 %d",
"log_create_ip_list": "创建IP名单 %d",
"log_delete_ip_list": "删除IP名单 %d",
"log_export_ip_list": "导出IP名单 %d",
"log_import_ip_list": "导入IP名单 %d",
"log_update_ip_list": "修改IP名单 %d"
}

View File

@@ -0,0 +1,5 @@
{
"info": "信息",
"warn": "警告",
"error": "错误"
}

View File

@@ -0,0 +1,11 @@
{
"tag_listener": "端口监听",
"tag_waf": "WAF",
"tag_access_log": "访问日志",
"tag_script": "脚本",
"log_clean_all_logs": "清除全部日志",
"log_clean_logs_days_before": "清除 %d 以前的日志",
"log_delete_log": "删除单个操作日志 %d",
"log_update_settings": "修改日志相关配置"
}

View File

@@ -0,0 +1,4 @@
{
"log_read_all": "将所有消息置为已读",
"log_read_messages": "将一组消息置为已读"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_message_media_instance": "创建消息媒介 %d",
"log_delete_message_media_instance": "删除消息媒介 %d",
"log_update_message_media_instance": "修改消息媒介 %d"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_cluster_message_receivers": "修改集群 %d 消息接收人"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_message_recipient": "创建媒介接收人 %d",
"log_delete_message_recipient": "删除媒介接收人 %d",
"log_update_message_recipient": "修改媒介接收人 %d"
}

View File

@@ -0,0 +1,4 @@
{
"log_delete_message_task": "删除消息发送任务 %d",
"log_create_testing_message_task": "创建媒介测试任务 %d"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_metric_chart": "创建指标图表 %d",
"log_delete_metric_chart": "删除指标图表 %d",
"log_update_metric_chart": "修改指标图表 %d"
}

View File

@@ -0,0 +1,7 @@
{
"log_add_metric_item_to_cluster": "添加指标 %d 到集群 %d",
"log_delete_metric_item_from_cluster": "从集群 %d 中移除指标 %d",
"log_create_metric_item": "创建统计指标 %d",
"log_delete_metric_item": "删除统计指标",
"log_update_metric_item": "修改统计指标 %d"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_monitor_node": "创建监控节点 %d",
"log_update_monitor_node": "修改监控节点 %d",
"log_delete_monitor_node": "删除监控节点 %d"
}

View File

@@ -0,0 +1,15 @@
{
"ungrouped_label": "未分组",
"log_create_node": "创建节点 %d",
"log_create_node_batch": "批量创建节点",
"log_install_node": "安装节点 %d",
"log_install_node_remotely": "远程安装节点 %d",
"log_upgrade_node_remotely": "远程升级节点 %d",
"log_start_node_remotely": "远程启动节点 %d",
"log_stop_node_remotely": "远程停止节点 %d",
"log_update_node": "修改节点 %d 基本信息",
"log_update_node_installation_status": "修改节点安装状态 %d",
"log_up_node": "手动上线节点 %d",
"log_delete_node_from_cluster": "从集群 %d 中删除节点 %d"
}

View File

@@ -0,0 +1,8 @@
{
"log_copy_node_actions_to_cluster": "复制节点 %d 调度动作到集群",
"log_copy_node_actions_to_group": "复制节点 %d 调度动作到分组",
"log_create_node_action": "创建动作 %d",
"log_delete_node_action": "删除节点动作 %d",
"log_sort_node_actions": "修改节点 %d 动作排序",
"log_update_node_action": "修改节点动作 %d"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_node_cache_settings": "修改节点 %d 缓存设置"
}

View File

@@ -0,0 +1,9 @@
{
"log_create_cluster": "创建节点集群:%d",
"log_delete_cluster": "删除集群 %d",
"log_update_cluster_health_check": "修改集群健康检查设置 %d",
"log_run_cluster_health_check": "执行集群健康检查设置 %d",
"log_update_cluster_basic_settings": "修改集群基础设置 %d",
"log_pin_cluster": "置顶集群 %d",
"log_unpin_cluster": "取消置顶集群 %d"
}

View File

@@ -0,0 +1,3 @@
{
}

View File

@@ -0,0 +1,26 @@
{
"setting_basic": "${lang.admin_common@menu_setting_basic}",
"setting_dns": "${lang.admin_common@menu_setting_dns}",
"setting_health_check": "${lang.admin_common@menu_setting_health_check}",
"setting_service_global": "网站设置",
"setting_cache_policy": "${lang.admin_common@menu_setting_cache_policy}",
"setting_waf_policy": "${lang.admin_common@menu_setting_waf_policy}",
"setting_waf_actions": "WAF动作",
"setting_webp": "${lang.admin_common@menu_setting_webp}",
"setting_metrics": "${lang.admin_common@menu_setting_metrics}",
"setting_ddos_protection": "${lang.admin_common@menu_setting_ddos_protection}",
"setting_uam": "5秒盾",
"setting_cc": "CC防护",
"setting_pages": "自定义页面",
"setting_http3": "HTTP/3",
"setting_schedule": "智能调度",
"setting_thresholds": "阈值设置",
"setting_notification": "消息通知",
"setting_system_service": "系统服务",
"setting_toa": "TOA设置",
"tab_cluster_dashboard": "集群看板",
"tab_cluster_nodes": "节点列表",
"tab_cluster_settings": "集群设置",
"tab_cluster_delete": "删除集群"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_node_dns": "修改节点 %d DNS设置"
}

View File

@@ -0,0 +1,8 @@
{
"method_user_password": "用户名+密码",
"method_private_key": "私钥",
"log_create_ssh_grant": "创建SSH认证 %d",
"log_delete_ssh_grant": "删除SSH认证 %d",
"log_update_ssh_grant": "修改SSH认证 %d"
}

View File

@@ -0,0 +1,6 @@
{
"log_create_node_group": "创建节点分组 %d",
"log_delete_node_group": "删除节点分组 %d",
"log_sort_node_groups": "修改节点分组排序",
"log_update_node_group": "修改节点分组 %d"
}

View File

@@ -0,0 +1,6 @@
{
"log_delete_node_ip_address": "删除IP地址 %d",
"log_restore_node_ip_address": "取消IP地址 %d 的备用IP",
"log_up_node_ip_address": "手动设置IP地址 %d 上线",
"log_down_node_ip_address": "手动设置IP地址 %d 下线"
}

View File

@@ -0,0 +1,5 @@
{
"log_delete_node_logs_batch": "批量删除节点运行日志",
"log_fix_node_logs": "设置日志 %s 为已修复",
"log_fix_all_logs": "设置所有日志为已修复"
}

View File

@@ -0,0 +1,18 @@
{
"create_single_node": "单个创建",
"create_multiple_nodes": "批量创建",
"install_manually": "手动安装",
"install_auto_register": "自动注册",
"install_remote": "远程安装(%d)", // 参数:节点数量
"install_remote_upgrade": "远程升级(%d)", // 参数:节点数量,
"setting_basic": "${lang.admin_common@menu_setting_basic}",
"setting_dns": "${lang.admin_common@menu_setting_dns}",
"setting_cache": "${lang.admin_common@menu_setting_cache}",
"setting_ddos_protection": "${lang.admin_common@menu_setting_ddos_protection}",
"setting_ssh": "SSH设置",
"setting_system": "系统设置",
"setting_schedule": "智能调度",
"setting_thresholds": "阈值设置"
}

View File

@@ -0,0 +1,7 @@
{
"log_create_node_price_item_bandwidth": "创建带宽价格项目 %d",
"log_create_node_price_item_traffic": "创建流量价格项目 %d",
"log_delete_node_price_item": "删除流量价格项目 %d",
"log_update_node_price_item_bandwidth": "修改带宽价格项目 %d",
"log_update_node_price_item_traffic": "修改流量价格项目 %d"
}

View File

@@ -0,0 +1,7 @@
{
"log_create_node_region": "创建节点区域 %d",
"log_delete_node_region": "删除节点区域 %d",
"log_sort_node_regions": "修改节点区域排序",
"log_move_node_between_regions": "修改节点 %d 区域到 %d",
"log_update_node_region": "修改节点区域 %d"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_node_region_price": "修改区域 %d - 价格项 %d 的价格"
}

View File

@@ -0,0 +1,4 @@
{
"log_update_node_schedule_basic": "修改节点调度基本信息",
"log_reset_node_action_status": "重置节点 %d 动作状态"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_node_ssh": "修改节点 %d SSH配置"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_node_system_settings": "修改节点 %d 系统信息"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_cluster_systemd_settings": "修改集群 %d 的系统服务设置"
}

View File

@@ -0,0 +1,5 @@
{
"log_delete_node_task": "删除同步任务 %d",
"log_delete_node_tasks_batch": "批量删除节点同步任务",
"log_delete_all_node_tasks": "删除所有节点同步任务"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_node_threshold": "创建节点阈值 %d",
"log_delete_node_threshold": "删除阈值 %d",
"log_update_node_threshold": "修改节点阈值 %d"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_cluster_toa": "修改集群 %d 的TOA设置"
}

View File

@@ -0,0 +1,15 @@
{
"setting_user": "用户设置",
"setting_access_logs": "访问日志设置",
"log_create_ns_records_batch": "批量添加解析",
"log_delete_ns_domains_batch": "批量删除域名,用户 %d",
"log_delete_ns_records_batch": "批量删除域名记录",
"log_enable_ns_records_batch": "批量启用域名记录",
"log_disable_ns_records_batch": "批量停用域名记录",
"log_import_records_batch": "批量导入记录",
"log_create_ns_domains_batch": "批量添加域名",
"log_update_ns_records_batch": "批量修改域名记录",
"log_update_ns_user_config": "修改NS全局设置--用户相关设置"
}

View File

@@ -0,0 +1,29 @@
{
"tab_nodes": "节点列表",
"tab_setting": "集群设置",
"tab_delete": "删除集群",
"menu_basic": "基础设置",
"menu_udp": "UDP",
"menu_tcp": "TCP",
"menu_tls": "TLS",
"menu_doh": "DoH",
"menu_access_logs": "访问日志",
"menu_answer_setting": "应答模式",
"menu_soa": "SOA",
"menu_dns_recursion": "递归DNS",
"menu_ddos_protection": "DDoS防护",
"log_delete_ns_cluster": "删除域名服务集群 %d",
"log_create_ns_cluster": "创建域名服务集群 %d",
"log_update_ns_cluster_settings_basic": "修改域名服务集群基本信息 %d",
"log_update_ns_cluster_settings_access_log": "修改域名服务集群 %d 访问日志配置",
"log_update_ns_cluster_settings_answer": "修改NS集群 %d 应答模式设置",
"log_update_ns_cluster_settings_ddos_protection": "修改NS集群 %d 的DDOS防护设置",
"log_update_ns_cluster_settings_doh": "修改NS集群 %d DoH设置",
"log_update_ns_cluster_settings_recursion": "修改DNS集群 %d 的递归DNS设置",
"log_update_ns_cluster_settings_soa": "修改NS集群 %d SOA配置",
"log_update_ns_cluster_settings_tcp": "修理NS集群 %d TCP设置",
"log_update_ns_cluster_settings_tls": "修改NS集群 %d TLS设置",
"log_update_ns_cluster_settings_udp": "修改NS集群 %d UDP设置"
}

View File

@@ -0,0 +1,12 @@
{
"log_update_ns_domain_status": "修改域名 %d 状态为 %s",
"log_create_ns_domains_batch": "批量添加域名",
"log_create_ns_domain": "创建域名 %d",
"log_delete_ns_domain": "删除域名 %d",
"log_update_ns_domain": "修改域名 %d",
"log_update_ns_domain_health_check": "修改域名 %d 健康检查设置",
"log_update_ns_domain_tsig": "修改域名 %d 的TSIG配置",
"log_validate_ns_domains": "批量验证域名"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_ns_domain_group": "创建域名分组 %d",
"log_delete_ns_domain_group": "删除域名分组 %d",
"log_update_ns_domain_group": "修改域名分组 %d"
}

View File

@@ -0,0 +1,5 @@
{
"log_create_ns_key": "创建DNS密钥 %d",
"log_delete_ns_key": "删除DNS密钥 %d",
"log_update_ns_key": "修改DNS密钥 %d"
}

View File

@@ -0,0 +1,9 @@
{
"log_start_ns_node_remotely": "远程启动节点 %d",
"log_stop_ns_node_remotely": "远程停止节点 %d",
"log_update_ns_node": "修改节点 %d",
"log_update_ns_node_installation_status": "修改节点安装状态 %d",
"log_create_ns_node": "创建域名服务节点 %d",
"log_install_ns_node_remotely": "安装节点 %d",
"log_delete_ns_node": "删除域名服务节点 %d"
}

View File

@@ -0,0 +1,3 @@
{
"log_update_ns_node_ssh": "修改节点 %d SSH配置"
}

View File

@@ -0,0 +1,6 @@
{
"log_update_ns_plan": "修改套餐 %d",
"log_create_ns_plan": "创建套餐 %d",
"log_delete_ns_plan": "删除套餐 %d",
"log_sort_ns_plans": "套餐排序"
}

Some files were not shown because too many files have changed in this diff Show More