From dabd649a24b1785f931b212be6f331cecff68ab1 Mon Sep 17 00:00:00 2001 From: wanghe-fit2cloud Date: Fri, 15 May 2026 17:45:11 +0800 Subject: [PATCH 1/8] feat: add ops report foundation --- core/app/api/v2/setting.go | 46 ++++ core/app/dto/setting.go | 5 + core/app/service/setting.go | 30 +++ core/constant/common.go | 38 ++- core/init/migration/helper/menu.go | 10 + core/init/migration/migrate.go | 4 + core/init/migration/migrations/init.go | 109 ++++++++ core/init/validator/validator.go | 4 + frontend/package-lock.json | 38 +-- frontend/src/api/interface/log.ts | 13 +- frontend/src/api/interface/setting.ts | 5 + frontend/src/api/modules/log.ts | 2 +- frontend/src/lang/modules/en.ts | 348 +++++++++++++++++++++++++ frontend/src/lang/modules/es-es.ts | 348 +++++++++++++++++++++++++ frontend/src/lang/modules/ja.ts | 348 +++++++++++++++++++++++++ frontend/src/lang/modules/ko.ts | 348 +++++++++++++++++++++++++ frontend/src/lang/modules/ms.ts | 348 +++++++++++++++++++++++++ frontend/src/lang/modules/pt-br.ts | 348 +++++++++++++++++++++++++ frontend/src/lang/modules/ru.ts | 348 +++++++++++++++++++++++++ frontend/src/lang/modules/tr.ts | 348 +++++++++++++++++++++++++ frontend/src/lang/modules/zh-Hant.ts | 347 ++++++++++++++++++++++++ frontend/src/lang/modules/zh.ts | 347 ++++++++++++++++++++++++ frontend/vite.config.ts | 2 +- 23 files changed, 3741 insertions(+), 43 deletions(-) diff --git a/core/app/api/v2/setting.go b/core/app/api/v2/setting.go index fd8a61025cb7..22b5901b0ea3 100644 --- a/core/app/api/v2/setting.go +++ b/core/app/api/v2/setting.go @@ -6,7 +6,9 @@ import ( "net/http" "os" "path" + "path/filepath" "regexp" + "strconv" "strings" "github.com/1Panel-dev/1Panel/core/app/api/v2/helper" @@ -102,6 +104,50 @@ func (b *BaseApi) UpdateSetting(c *gin.Context) { } req.Value = value } + if req.Key == "OpsReportExportFormat" { + if !global.CONF.Base.IsEnterprise { + helper.ErrorWithDetail(c, http.StatusBadRequest, "ErrNotSupportType", errors.New(req.Key)) + return + } + if _, ok := constant.OpsReportExportFormats[req.Value]; !ok { + helper.ErrorWithDetail(c, http.StatusBadRequest, "ErrNotSupportType", errors.New(req.Value)) + return + } + } + if req.Key == "OpsReportSchedule" { + if !global.CONF.Base.IsEnterprise { + helper.ErrorWithDetail(c, http.StatusBadRequest, "ErrNotSupportType", errors.New(req.Key)) + return + } + if _, ok := constant.OpsReportSchedules[req.Value]; !ok { + helper.ErrorWithDetail(c, http.StatusBadRequest, "ErrNotSupportType", errors.New(req.Value)) + return + } + } + if req.Key == "OpsReportSavePath" { + if !global.CONF.Base.IsEnterprise { + helper.ErrorWithDetail(c, http.StatusBadRequest, "ErrNotSupportType", errors.New(req.Key)) + return + } + value := strings.TrimSpace(req.Value) + if value == "" || !filepath.IsAbs(value) { + helper.ErrorWithDetail(c, http.StatusBadRequest, "ErrInvalidParams", errors.New(req.Value)) + return + } + req.Value = filepath.Clean(value) + } + if req.Key == "OpsReportThreshold" { + if !global.CONF.Base.IsEnterprise { + helper.ErrorWithDetail(c, http.StatusBadRequest, "ErrNotSupportType", errors.New(req.Key)) + return + } + threshold, err := strconv.Atoi(strings.TrimSpace(req.Value)) + if err != nil || threshold < 1 || threshold > 100 { + helper.ErrorWithDetail(c, http.StatusBadRequest, "ErrInvalidParams", errors.New(req.Value)) + return + } + req.Value = strconv.Itoa(threshold) + } if err := settingService.Update(c, req.Key, req.Value); err != nil { helper.InternalServer(c, err) diff --git a/core/app/dto/setting.go b/core/app/dto/setting.go index f3b54a0c7cc7..39dfd431b5b8 100644 --- a/core/app/dto/setting.go +++ b/core/app/dto/setting.go @@ -46,6 +46,11 @@ type SettingInfo struct { ProxyUser string `json:"proxyUser"` ProxyPasswd string `json:"proxyPasswd"` ProxyPasswdKeep string `json:"proxyPasswdKeep"` + + OpsReportExportFormat string `json:"opsReportExportFormat"` + OpsReportSchedule string `json:"opsReportSchedule"` + OpsReportSavePath string `json:"opsReportSavePath"` + OpsReportThreshold string `json:"opsReportThreshold"` } type SettingBaseInfo struct { diff --git a/core/app/service/setting.go b/core/app/service/setting.go index 040f52459d49..e6afc3034af5 100644 --- a/core/app/service/setting.go +++ b/core/app/service/setting.go @@ -108,11 +108,41 @@ func (u *SettingService) GetSettingInfo() (*dto.SettingInfo, error) { } if !global.CONF.Base.IsEnterprise { info.IsOffline = constant.StatusDisable + } else { + u.ensureOpsReportSettingDefaults(&info) } return &info, err } +func (u *SettingService) ensureOpsReportSettingDefaults(info *dto.SettingInfo) { + if _, ok := constant.OpsReportExportFormats[info.OpsReportExportFormat]; !ok { + info.OpsReportExportFormat = constant.OpsReportExportFormatPDF + _ = settingRepo.UpdateOrCreate("OpsReportExportFormat", info.OpsReportExportFormat) + } + if _, ok := constant.OpsReportSchedules[info.OpsReportSchedule]; !ok { + info.OpsReportSchedule = constant.OpsReportScheduleWeekly + _ = settingRepo.UpdateOrCreate("OpsReportSchedule", info.OpsReportSchedule) + } + if strings.TrimSpace(info.OpsReportSavePath) == "" { + info.OpsReportSavePath = defaultOpsReportSavePath() + _ = settingRepo.UpdateOrCreate("OpsReportSavePath", info.OpsReportSavePath) + } + if !isValidOpsReportThreshold(info.OpsReportThreshold) { + info.OpsReportThreshold = constant.OpsReportDefaultThreshold + _ = settingRepo.UpdateOrCreate("OpsReportThreshold", info.OpsReportThreshold) + } +} + +func defaultOpsReportSavePath() string { + return path.Join(global.CONF.Base.InstallDir, constant.OpsReportDefaultSaveSubDir) +} + +func isValidOpsReportThreshold(value string) bool { + threshold, err := strconv.Atoi(strings.TrimSpace(value)) + return err == nil && threshold >= 1 && threshold <= 100 +} + func (u *SettingService) GetSettingBaseInfo() (*dto.SettingBaseInfo, error) { setting, err := settingRepo.List() if err != nil { diff --git a/core/constant/common.go b/core/constant/common.go index ab23170a5a89..056778622096 100644 --- a/core/constant/common.go +++ b/core/constant/common.go @@ -14,6 +14,15 @@ const ( DateTimeLayout = "2006-01-02 15:04:05" // or use time.DateTime while go version >= 1.20 DateTimeSlimLayout = "20060102150405" + OpsReportExportFormatPDF = "PDF" + OpsReportExportFormatHTML = "HTML" + OpsReportExportFormatMarkdown = "Markdown" + OpsReportScheduleDaily = "daily" + OpsReportScheduleWeekly = "weekly" + OpsReportScheduleMonthly = "monthly" + OpsReportDefaultThreshold = "80" + OpsReportDefaultSaveSubDir = "1panel/data/ops-report" + OrderDesc = "descending" OrderAsc = "ascending" @@ -183,10 +192,31 @@ var WebUrlMap = map[string]struct{}{ "/xpack/cluster/postgres": {}, "/xpack/cluster/redis": {}, - "/enterprise/users/list": {}, - "/enterprise/users/roles": {}, - "/enterprise/license": {}, - "/enterprise/license-required": {}, + "/enterprise/users/list": {}, + "/enterprise/users/roles": {}, + "/enterprise/license": {}, + "/enterprise/license-required": {}, + "/enterprise/ops-report": {}, + "/enterprise/ops-report/overview": {}, + "/enterprise/ops-report/system": {}, + "/enterprise/ops-report/login": {}, + "/enterprise/ops-report/website": {}, + "/enterprise/ops-report/resource": {}, + "/enterprise/ops-report/cronjob": {}, + "/enterprise/ops-report/history": {}, + "/enterprise/ops-report/settings": {}, +} + +var OpsReportExportFormats = map[string]struct{}{ + OpsReportExportFormatPDF: {}, + OpsReportExportFormatHTML: {}, + OpsReportExportFormatMarkdown: {}, +} + +var OpsReportSchedules = map[string]struct{}{ + OpsReportScheduleDaily: {}, + OpsReportScheduleWeekly: {}, + OpsReportScheduleMonthly: {}, } var DynamicRoutes = []string{ diff --git a/core/init/migration/helper/menu.go b/core/init/migration/helper/menu.go index 50f7027a8c33..e67cf2abb685 100644 --- a/core/init/migration/helper/menu.go +++ b/core/init/migration/helper/menu.go @@ -119,6 +119,15 @@ func LoadMenus() string { Path: "/enterprise/users", Sort: 350, }, "NodeDashboard") + item[i].Children = UpsertMenuByLabel(item[i].Children, dto.ShowMenu{ + ID: "122", + Disabled: false, + Title: "xpack.user.opsReport", + IsShow: true, + Label: "OpsReport", + Path: "/enterprise/ops-report", + Sort: 360, + }, "UserManagement") break } } @@ -159,6 +168,7 @@ func MenuSort() []dto.MenuLabelSort { {Label: "Node", Sort: 300}, {Label: "NodeDashboard", Sort: 300}, {Label: "UserManagement", Sort: 350}, + {Label: "OpsReport", Sort: 360}, {Label: "Upage", Sort: 400}, {Label: "MonitorDashboard", Sort: 500}, {Label: "Tamper", Sort: 600}, diff --git a/core/init/migration/migrate.go b/core/init/migration/migrate.go index b089186238b7..eb5e253ad0cb 100644 --- a/core/init/migration/migrate.go +++ b/core/init/migration/migrate.go @@ -39,6 +39,10 @@ func Init() { migrations.AddDocSourceSetting, migrations.AddAppStoreInstallAllowPortSetting, migrations.AddUserManagementMenu, + migrations.AddOpsReportMenu, + migrations.AddOpsReportSetting, + migrations.AddOpsReportScheduleSetting, + migrations.AddOpsReportThresholdSetting, migrations.AddAIBenchmarkMenu, migrations.AddAIProxyMenu, migrations.AddOperationLogUser, diff --git a/core/init/migration/migrations/init.go b/core/init/migration/migrations/init.go index c762477ed95c..92b0f4af2d13 100644 --- a/core/init/migration/migrations/init.go +++ b/core/init/migration/migrations/init.go @@ -1155,6 +1155,115 @@ var AddUserManagementMenu = &gormigrate.Migration{ }, } +var AddOpsReportMenu = &gormigrate.Migration{ + ID: "20260512-add-ops-report-menu", + Migrate: func(tx *gorm.DB) error { + if !global.CONF.Base.IsEnterprise { + return nil + } + var menuJSON string + if err := tx.Model(&model.Setting{}).Where("key = ?", "HideMenu").Pluck("value", &menuJSON).Error; err != nil { + return err + } + if menuJSON == "" { + menuJSON = helper.LoadMenus() + } + + var menus []dto.ShowMenu + if err := json.Unmarshal([]byte(menuJSON), &menus); err != nil { + return tx.Model(&model.Setting{}). + Where("key = ?", "HideMenu"). + Update("value", helper.LoadMenus()).Error + } + + newItem := dto.ShowMenu{ + ID: "122", + Disabled: false, + Title: "xpack.user.opsReport", + IsShow: true, + Label: "OpsReport", + Path: "/enterprise/ops-report", + Sort: 360, + } + + for i := range menus { + if menus[i].Label != "Xpack-Menu" { + continue + } + menus[i].Children = helper.UpsertMenuByLabel(menus[i].Children, newItem, "UserManagement") + break + } + + updatedJSON, err := json.Marshal(menus) + if err != nil { + return tx.Model(&model.Setting{}). + Where("key = ?", "HideMenu"). + Update("value", helper.LoadMenus()).Error + } + return tx.Model(&model.Setting{}).Where("key = ?", "HideMenu").Update("value", string(updatedJSON)).Error + }, +} + +var AddOpsReportSetting = &gormigrate.Migration{ + ID: "20260512-add-ops-report-setting", + Migrate: func(tx *gorm.DB) error { + if !global.CONF.Base.IsEnterprise { + return nil + } + var count int64 + if err := tx.Model(&model.Setting{}).Where("key = ?", "OpsReportExportFormat").Count(&count).Error; err != nil { + return err + } + if count > 0 { + return nil + } + return tx.Create(&model.Setting{Key: "OpsReportExportFormat", Value: constant.OpsReportExportFormatPDF}).Error + }, +} + +var AddOpsReportScheduleSetting = &gormigrate.Migration{ + ID: "20260513-add-ops-report-schedule-setting", + Migrate: func(tx *gorm.DB) error { + if !global.CONF.Base.IsEnterprise { + return nil + } + settings := []model.Setting{ + {Key: "OpsReportSchedule", Value: constant.OpsReportScheduleWeekly}, + {Key: "OpsReportSavePath", Value: path.Join(global.CONF.Base.InstallDir, constant.OpsReportDefaultSaveSubDir)}, + } + for _, item := range settings { + var count int64 + if err := tx.Model(&model.Setting{}).Where("key = ?", item.Key).Count(&count).Error; err != nil { + return err + } + if count > 0 { + continue + } + if err := tx.Create(&item).Error; err != nil { + return err + } + } + return nil + }, +} + +var AddOpsReportThresholdSetting = &gormigrate.Migration{ + ID: "20260513-add-ops-report-threshold-setting", + Migrate: func(tx *gorm.DB) error { + if !global.CONF.Base.IsEnterprise { + return nil + } + var count int64 + if err := tx.Model(&model.Setting{}).Where("key = ?", "OpsReportThreshold").Count(&count).Error; err != nil { + return err + } + if count > 0 { + return nil + } + return tx.Create(&model.Setting{Key: "OpsReportThreshold", Value: constant.OpsReportDefaultThreshold}).Error + }, +} + var AddOperationLogUser = &gormigrate.Migration{ ID: "20260424-add-operation-log-user", Migrate: func(tx *gorm.DB) error { diff --git a/core/init/validator/validator.go b/core/init/validator/validator.go index b0f426fc5320..1caa584a7541 100644 --- a/core/init/validator/validator.go +++ b/core/init/validator/validator.go @@ -47,6 +47,10 @@ var baseSettingKeys = map[string]struct{}{ "AppStoreLastModified": {}, "ScriptSync": {}, "HideMenu": {}, + "OpsReportExportFormat": {}, + "OpsReportSchedule": {}, + "OpsReportSavePath": {}, + "OpsReportThreshold": {}, } func checkNamePattern(fl validator.FieldLevel) bool { diff --git a/frontend/package-lock.json b/frontend/package-lock.json index df33c0760e02..c13aad965f18 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -133,7 +133,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1199,6 +1198,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -2193,7 +2193,6 @@ "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/lodash": "*" } @@ -2227,7 +2226,6 @@ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -2303,7 +2301,6 @@ "integrity": "sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.58.1", "@typescript-eslint/types": "8.58.1", @@ -2955,8 +2952,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/acorn": { "version": "8.15.0", @@ -2964,7 +2960,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3218,7 +3213,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -3463,7 +3457,6 @@ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==", "license": "MIT", - "peer": true, "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", @@ -5025,7 +5018,6 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -5082,7 +5074,6 @@ "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -6363,7 +6354,6 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", - "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -6778,15 +6768,13 @@ "version": "4.18.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash-unified": { "version": "1.0.3", @@ -7059,7 +7047,6 @@ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", "license": "MIT", - "peer": true, "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -7849,7 +7836,6 @@ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz", "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", "license": "MIT", - "peer": true, "dependencies": { "@vue/devtools-api": "^6.6.3", "vue-demi": "^0.14.10" @@ -7917,7 +7903,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -8074,7 +8059,6 @@ "integrity": "sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -8487,7 +8471,6 @@ "integrity": "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -8622,7 +8605,6 @@ "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", @@ -8843,6 +8825,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -8855,6 +8838,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9359,6 +9343,7 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, + "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -9378,7 +9363,8 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/text-extensions": { "version": "1.9.0", @@ -9494,7 +9480,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -9590,7 +9575,6 @@ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10020,7 +10004,6 @@ "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -10269,7 +10252,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -10289,7 +10271,6 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.32.tgz", "integrity": "sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.32", "@vue/compiler-sfc": "3.5.32", @@ -10343,7 +10324,6 @@ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", "hasInstallScript": true, "license": "MIT", - "peer": true, "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" diff --git a/frontend/src/api/interface/log.ts b/frontend/src/api/interface/log.ts index a39114ddcff3..ee907ab087c6 100644 --- a/frontend/src/api/interface/log.ts +++ b/frontend/src/api/interface/log.ts @@ -6,19 +6,16 @@ export namespace Log { id: number; source: string; user: string; - action: string; + node: string; ip: string; path: string; method: string; userAgent: string; - body: string; - resp: string; - - status: number; + status: string; latency: number; - errorMessage: string; - - detail: string; + message: string; + detailZH: string; + detailEN: string; createdAt: DateTimeFormats; } export interface SearchOpLog extends ReqPage { diff --git a/frontend/src/api/interface/setting.ts b/frontend/src/api/interface/setting.ts index c3734f9d4e55..7c8f8252fbef 100644 --- a/frontend/src/api/interface/setting.ts +++ b/frontend/src/api/interface/setting.ts @@ -69,6 +69,11 @@ export namespace Setting { proxyUser: string; proxyPasswd: string; proxyPasswdKeep: string; + + opsReportExportFormat: string; + opsReportSchedule: string; + opsReportSavePath: string; + opsReportThreshold: string; } export interface SettingBaseInfo { systemVersion: string; diff --git a/frontend/src/api/modules/log.ts b/frontend/src/api/modules/log.ts index 354ff68af567..2d0e10fdaf0b 100644 --- a/frontend/src/api/modules/log.ts +++ b/frontend/src/api/modules/log.ts @@ -8,7 +8,7 @@ export const getOperationLogs = (info: Log.SearchOpLog) => { }; export const getLoginLogs = (info: Log.SearchLgLog) => { - return http.post>(`/core/logs/login`, info); + return http.post>(`/core/logs/login`, info); }; export const getSystemFiles = (node?: string) => { diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 1c5a3c63bee1..12fa0844f736 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -1858,6 +1858,7 @@ const message = { licenses: 'License', nodes: 'Node', commands: 'Quick Commands', + opsReport: 'Ops Report', }, websiteLog: 'Website logs', runLog: 'Run logs', @@ -3820,6 +3821,312 @@ const message = { bindNode: 'Bind Node', boundUsers: 'Bound Users', role: 'Role', + opsReport: 'Ops Report', + opsReportOverview: 'Overview', + opsReportSystem: 'Host Runtime', + opsReportLogin: 'Login & Security', + opsReportWebsite: 'Website Protection', + opsReportResource: 'Runtime Resources', + opsReportCronjob: 'Cron Jobs', + opsReportHistory: 'Export History', + opsReportSetting: 'Settings', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Threshold {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Threshold', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'System Threshold', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, roleName: 'Name', permission: 'Permissions', permissionDuplicate: 'Only one role can be assigned to each node', @@ -3828,6 +4135,47 @@ const message = { 'Related permissions are selected automatically when dependencies exist; after manual removal, some features may show "Current user has no permission".', view: 'View', manage: 'Manage', + dashboard_view: 'Dashboard View', + app_view: 'App View', + app_manage: 'App Manage', + ai_agent_view: 'AI Assistant View', + ai_agent_manage: 'AI Assistant Manage', + ai_model_view: 'AI Model View', + ai_model_manage: 'AI Model Manage', + ai_mcp_view: 'MCP View', + ai_mcp_manage: 'MCP Manage', + ai_gpu_view: 'GPU View', + website_view: 'Website View', + website_manage: 'Website Manage', + website_cert_view: 'Certificate View', + website_cert_manage: 'Certificate Manage', + website_runtime_view: 'Runtime View', + website_runtime_manage: 'Runtime Manage', + database_view: 'Database View', + database_manage: 'Database Manage', + container_view: 'Container View', + container_manage: 'Container Manage', + cronjob_view: 'Task View', + toolbox_view: 'Toolbox View', + host_file_view: 'File View', + host_firewall_view: 'Firewall View', + host_monitor_view: 'Monitor View', + host_process_view: 'Process View', + host_ssh_view: 'SSH View', + host_disk_view: 'Disk View', + xpack_app_view: 'APP View', + xpack_waf_view: 'WAF View', + xpack_waf_manage: 'WAF Manage', + xpack_node_view: 'Node View', + xpack_ops_report_view: 'Ops Report View', + xpack_ops_report_manage: 'Ops Report Manage', + xpack_monitor_view: 'Monitor View', + xpack_monitor_manage: 'Monitor Manage', + xpack_cluster_view: 'Cluster View', + xpack_cluster_manage: 'Cluster Manage', + xpack_tamper_view: 'Tamper View', + xpack_tamper_manage: 'Tamper Manage', + log_view: 'Log View', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 328e81b9bdab..82b7aba7d3a2 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -1906,6 +1906,7 @@ const message = { licenses: 'Licencia', nodes: 'Nodo', commands: 'Comandos rápidos', + opsReport: 'Informe de operaciones', }, websiteLog: 'Logs de sitio web', runLog: 'Logs de ejecución', @@ -3874,6 +3875,312 @@ const message = { bindNode: 'Vincular nodo', boundUsers: 'Usuarios vinculados', role: 'Rol', + opsReport: 'Informe de operaciones', + opsReportOverview: 'Resumen', + opsReportSystem: 'Ejecución del host', + opsReportLogin: 'Inicio de sesión y seguridad', + opsReportWebsite: 'Protección de sitios web', + opsReportResource: 'Recursos de ejecución', + opsReportCronjob: 'Tareas programadas', + opsReportHistory: 'Historial de exportación', + opsReportSetting: 'Configuración', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Umbral {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Umbral', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Umbral del sistema', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, roleName: 'Nombre', permission: 'Permisos', permissionDuplicate: 'Solo se puede asignar un rol a cada nodo', @@ -3882,6 +4189,47 @@ const message = { 'Si hay dependencias, los permisos relacionados se seleccionarán automáticamente; tras quitarlos manualmente, algunas funciones pueden mostrar "El usuario actual no tiene permiso".', view: 'Ver', manage: 'Gestionar', + dashboard_view: 'Vista del panel', + app_view: 'Vista de la app', + app_manage: 'Gestión de la app', + ai_agent_view: 'Vista del asistente de IA', + ai_agent_manage: 'Gestión del asistente de IA', + ai_model_view: 'Vista del modelo de IA', + ai_model_manage: 'Gestión del modelo de IA', + ai_mcp_view: 'Vista de MCP', + ai_mcp_manage: 'Gestión de MCP', + ai_gpu_view: 'Vista de GPU', + website_view: 'Vista del sitio web', + website_manage: 'Gestión del sitio web', + website_cert_view: 'Vista de certificados', + website_cert_manage: 'Gestión de certificados', + website_runtime_view: 'Vista del entorno de ejecución', + website_runtime_manage: 'Gestión del entorno de ejecución', + database_view: 'Vista de base de datos', + database_manage: 'Gestión de base de datos', + container_view: 'Vista de contenedores', + container_manage: 'Gestión de contenedores', + cronjob_view: 'Vista de tareas programadas', + toolbox_view: 'Vista de herramientas', + host_file_view: 'Vista de archivos', + host_firewall_view: 'Vista del firewall', + host_monitor_view: 'Vista de monitorización', + host_process_view: 'Vista de procesos', + host_ssh_view: 'Vista de SSH', + host_disk_view: 'Vista de disco', + xpack_app_view: 'Vista de APP', + xpack_waf_view: 'Vista de WAF', + xpack_waf_manage: 'Gestión de WAF', + xpack_node_view: 'Vista de nodos', + xpack_ops_report_view: 'Vista del informe de operaciones', + xpack_ops_report_manage: 'Gestión del informe de operaciones', + xpack_monitor_view: 'Vista de monitorización', + xpack_monitor_manage: 'Gestión de monitorización', + xpack_cluster_view: 'Vista de clúster', + xpack_cluster_manage: 'Gestión de clúster', + xpack_tamper_view: 'Vista de antimanipulación', + xpack_tamper_manage: 'Gestión de antimanipulación', + log_view: 'Vista de registros', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index dce99bbd6d36..1edcfed3cc39 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -1877,6 +1877,7 @@ const message = { licenses: 'ライセンス', nodes: 'ノード', commands: 'クイックコマンド', + opsReport: '運用レポート', }, websiteLog: 'ウェブサイトログ', runLog: 'ログを実行します', @@ -3856,6 +3857,312 @@ const message = { bindNode: 'ノードをバインド', boundUsers: 'バインド済みユーザー', role: 'ロール', + opsReport: '運用レポート', + opsReportOverview: '概要', + opsReportSystem: 'ホスト稼働', + opsReportLogin: 'ログインとセキュリティ', + opsReportWebsite: 'Web サイト保護', + opsReportResource: '実行リソース', + opsReportCronjob: 'スケジュールタスク', + opsReportHistory: 'エクスポート履歴', + opsReportSetting: '設定', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'しきい値 {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'しきい値', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'システムしきい値', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, roleName: '名前', permission: '権限', permissionDuplicate: '各ノードには1つのロールのみ割り当てられます', @@ -3864,6 +4171,47 @@ const message = { '依存関係がある場合、関連権限は自動選択されます。手動で解除すると、一部機能で「現在のユーザーには権限がありません」と表示される場合があります。', view: '表示', manage: '管理', + dashboard_view: 'ダッシュボード表示', + app_view: 'アプリ表示', + app_manage: 'アプリ管理', + ai_agent_view: 'AI アシスタント表示', + ai_agent_manage: 'AI アシスタント管理', + ai_model_view: 'AI モデル表示', + ai_model_manage: 'AI モデル管理', + ai_mcp_view: 'MCP 表示', + ai_mcp_manage: 'MCP 管理', + ai_gpu_view: 'GPU 表示', + website_view: 'サイト表示', + website_manage: 'サイト管理', + website_cert_view: '証明書表示', + website_cert_manage: '証明書管理', + website_runtime_view: '実行環境表示', + website_runtime_manage: '実行環境管理', + database_view: 'データベース表示', + database_manage: 'データベース管理', + container_view: 'コンテナ表示', + container_manage: 'コンテナ管理', + cronjob_view: '予定タスク表示', + toolbox_view: 'ツールボックス表示', + host_file_view: 'ファイル表示', + host_firewall_view: 'ファイアウォール表示', + host_monitor_view: '監視表示', + host_process_view: 'プロセス表示', + host_ssh_view: 'SSH 表示', + host_disk_view: 'ディスク表示', + xpack_app_view: 'APP 表示', + xpack_waf_view: 'WAF 表示', + xpack_waf_manage: 'WAF 管理', + xpack_node_view: 'ノード表示', + xpack_ops_report_view: '運用レポート表示', + xpack_ops_report_manage: '運用レポート管理', + xpack_monitor_view: '監視表示', + xpack_monitor_manage: '監視管理', + xpack_cluster_view: 'クラスター表示', + xpack_cluster_manage: 'クラスター管理', + xpack_tamper_view: '改ざん防止表示', + xpack_tamper_manage: '改ざん防止管理', + log_view: 'ログ表示', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 345c9499d152..84f8e5ad75d9 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -1837,6 +1837,7 @@ const message = { licenses: '라이선스', nodes: '노드', commands: '빠른 명령', + opsReport: '운영 보고서', }, websiteLog: '웹사이트 로그', runLog: '실행 로그', @@ -3772,6 +3773,312 @@ const message = { bindNode: '노드 연결', boundUsers: '바인딩된 사용자', role: '역할', + opsReport: '운영 보고서', + opsReportOverview: '개요', + opsReportSystem: '호스트 실행', + opsReportLogin: '로그인 및 보안', + opsReportWebsite: '웹사이트 보호', + opsReportResource: '실행 리소스', + opsReportCronjob: '예약 작업', + opsReportHistory: '내보내기 기록', + opsReportSetting: '설정', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: '임계값 {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: '임계값', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: '시스템 임계값', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, roleName: '이름', permission: '권한', permissionDuplicate: '각 노드에는 하나의 역할만 지정할 수 있습니다', @@ -3780,6 +4087,47 @@ const message = { '의존 관계가 있으면 관련 권한이 자동 선택되며, 수동으로 해제하면 일부 기능에서 "현재 사용자에게 권한이 없습니다"가 표시될 수 있습니다.', view: '보기', manage: '관리', + dashboard_view: '대시보드 보기', + app_view: '앱 보기', + app_manage: '앱 관리', + ai_agent_view: 'AI 도우미 보기', + ai_agent_manage: 'AI 도우미 관리', + ai_model_view: 'AI 모델 보기', + ai_model_manage: 'AI 모델 관리', + ai_mcp_view: 'MCP 보기', + ai_mcp_manage: 'MCP 관리', + ai_gpu_view: 'GPU 보기', + website_view: '웹사이트 보기', + website_manage: '웹사이트 관리', + website_cert_view: '인증서 보기', + website_cert_manage: '인증서 관리', + website_runtime_view: '실행 환경 보기', + website_runtime_manage: '실행 환경 관리', + database_view: '데이터베이스 보기', + database_manage: '데이터베이스 관리', + container_view: '컨테이너 보기', + container_manage: '컨테이너 관리', + cronjob_view: '예약 작업 보기', + toolbox_view: '도구함 보기', + host_file_view: '파일 보기', + host_firewall_view: '방화벽 보기', + host_monitor_view: '모니터링 보기', + host_process_view: '프로세스 보기', + host_ssh_view: 'SSH 보기', + host_disk_view: '디스크 보기', + xpack_app_view: 'APP 보기', + xpack_waf_view: 'WAF 보기', + xpack_waf_manage: 'WAF 관리', + xpack_node_view: '노드 보기', + xpack_ops_report_view: '운영 보고서 보기', + xpack_ops_report_manage: '운영 보고서 관리', + xpack_monitor_view: '모니터링 보기', + xpack_monitor_manage: '모니터링 관리', + xpack_cluster_view: '클러스터 보기', + xpack_cluster_manage: '클러스터 관리', + xpack_tamper_view: '변조 방지 보기', + xpack_tamper_manage: '변조 방지 관리', + log_view: '로그 보기', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 467e5d5932ab..ec6ef8e149bf 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -1904,6 +1904,7 @@ const message = { licenses: 'lesen', nodes: 'nod', commands: 'Perintah Pantas', + opsReport: 'Laporan Operasi', }, websiteLog: 'Log Laman Web', runLog: 'Log Jalankan', @@ -3913,6 +3914,312 @@ const message = { bindNode: 'Ikat Nod', boundUsers: 'Pengguna Terikat', role: 'Peranan', + opsReport: 'Laporan Operasi', + opsReportOverview: 'Gambaran Keseluruhan', + opsReportSystem: 'Operasi Hos', + opsReportLogin: 'Log Masuk & Keselamatan', + opsReportWebsite: 'Perlindungan Laman Web', + opsReportResource: 'Sumber Operasi', + opsReportCronjob: 'Tugas Berjadual', + opsReportHistory: 'Sejarah Eksport', + opsReportSetting: 'Tetapan', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Ambang {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Ambang', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Ambang Sistem', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, roleName: 'Nama', permission: 'Kebenaran', permissionDuplicate: 'Setiap nod hanya boleh diberikan satu peranan', @@ -3921,6 +4228,47 @@ const message = { 'Kebenaran berkaitan akan dipilih automatik jika ada kebergantungan; selepas dialih keluar manual, sesetengah ciri mungkin memaparkan "Pengguna semasa tiada kebenaran".', view: 'Lihat', manage: 'Urus', + dashboard_view: 'Paparan Papan Pemuka', + app_view: 'Paparan Aplikasi', + app_manage: 'Pengurusan Aplikasi', + ai_agent_view: 'Paparan Pembantu AI', + ai_agent_manage: 'Pengurusan Pembantu AI', + ai_model_view: 'Paparan Model AI', + ai_model_manage: 'Pengurusan Model AI', + ai_mcp_view: 'Paparan MCP', + ai_mcp_manage: 'Pengurusan MCP', + ai_gpu_view: 'Paparan GPU', + website_view: 'Paparan Laman Web', + website_manage: 'Pengurusan Laman Web', + website_cert_view: 'Paparan Sijil', + website_cert_manage: 'Pengurusan Sijil', + website_runtime_view: 'Paparan Persekitaran Jalankan', + website_runtime_manage: 'Pengurusan Persekitaran Jalankan', + database_view: 'Paparan Pangkalan Data', + database_manage: 'Pengurusan Pangkalan Data', + container_view: 'Paparan Kontena', + container_manage: 'Pengurusan Kontena', + cronjob_view: 'Paparan Tugas Berjadual', + toolbox_view: 'Paparan Kotak Alat', + host_file_view: 'Paparan Fail', + host_firewall_view: 'Paparan Tembok Api', + host_monitor_view: 'Paparan Pemantauan', + host_process_view: 'Paparan Proses', + host_ssh_view: 'Paparan SSH', + host_disk_view: 'Paparan Cakera', + xpack_app_view: 'Paparan APP', + xpack_waf_view: 'Paparan WAF', + xpack_waf_manage: 'Pengurusan WAF', + xpack_node_view: 'Paparan Nod', + xpack_ops_report_view: 'Paparan Laporan Operasi', + xpack_ops_report_manage: 'Pengurusan Laporan Operasi', + xpack_monitor_view: 'Paparan Pemantauan', + xpack_monitor_manage: 'Pengurusan Pemantauan', + xpack_cluster_view: 'Paparan Kluster', + xpack_cluster_manage: 'Pengurusan Kluster', + xpack_tamper_view: 'Paparan Anti-ubah', + xpack_tamper_manage: 'Pengurusan Anti-ubah', + log_view: 'Paparan Log', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 4cce6262bcef..8ef6ccbe9845 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -2018,6 +2018,7 @@ const message = { licenses: 'licenças', nodes: 'nós', commands: 'Comandos Rápidos', + opsReport: 'Relatório de Operações', }, websiteLog: 'Logs do website', runLog: 'Logs de execução', @@ -4052,6 +4053,312 @@ const message = { bindNode: 'Vincular Nó', boundUsers: 'Usuários vinculados', role: 'Função', + opsReport: 'Relatório de Operações', + opsReportOverview: 'Visão geral', + opsReportSystem: 'Execução do host', + opsReportLogin: 'Login e segurança', + opsReportWebsite: 'Proteção de sites', + opsReportResource: 'Recursos de execução', + opsReportCronjob: 'Tarefas agendadas', + opsReportHistory: 'Histórico de exportação', + opsReportSetting: 'Configurações', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Limite {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Limite', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Limite do sistema', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, roleName: 'Nome', permission: 'Permissões', permissionDuplicate: 'Apenas uma função pode ser atribuída a cada nó', @@ -4060,6 +4367,47 @@ const message = { 'Permissões relacionadas serão selecionadas automaticamente quando houver dependências; após removê-las manualmente, alguns recursos podem mostrar "O usuário atual não tem permissão".', view: 'Visualizar', manage: 'Gerenciar', + dashboard_view: 'Visualização do Painel', + app_view: 'Visualização do APP', + app_manage: 'Gerenciamento do APP', + ai_agent_view: 'Visualização do Assistente de IA', + ai_agent_manage: 'Gerenciamento do Assistente de IA', + ai_model_view: 'Visualização do Modelo de IA', + ai_model_manage: 'Gerenciamento do Modelo de IA', + ai_mcp_view: 'Visualização do MCP', + ai_mcp_manage: 'Gerenciamento do MCP', + ai_gpu_view: 'Visualização da GPU', + website_view: 'Visualização do Site', + website_manage: 'Gerenciamento do Site', + website_cert_view: 'Visualização do Certificado', + website_cert_manage: 'Gerenciamento do Certificado', + website_runtime_view: 'Visualização do Ambiente de Execução', + website_runtime_manage: 'Gerenciamento do Ambiente de Execução', + database_view: 'Visualização do Banco de Dados', + database_manage: 'Gerenciamento do Banco de Dados', + container_view: 'Visualização do Contêiner', + container_manage: 'Gerenciamento do Contêiner', + cronjob_view: 'Visualização de Tarefas', + toolbox_view: 'Visualização da Caixa de Ferramentas', + host_file_view: 'Visualização de Arquivos', + host_firewall_view: 'Visualização do Firewall', + host_monitor_view: 'Visualização do Monitor', + host_process_view: 'Visualização de Processos', + host_ssh_view: 'Visualização do SSH', + host_disk_view: 'Visualização de Disco', + xpack_app_view: 'Visualização do APP', + xpack_waf_view: 'Visualização do WAF', + xpack_waf_manage: 'Gerenciamento do WAF', + xpack_node_view: 'Visualização de Nó', + xpack_ops_report_view: 'Visualização do Relatório de Operações', + xpack_ops_report_manage: 'Gerenciamento do Relatório de Operações', + xpack_monitor_view: 'Visualização do Monitor', + xpack_monitor_manage: 'Gerenciamento do Monitor', + xpack_cluster_view: 'Visualização do Cluster', + xpack_cluster_manage: 'Gerenciamento do Cluster', + xpack_tamper_view: 'Visualização do Antitamper', + xpack_tamper_manage: 'Gerenciamento do Antitamper', + log_view: 'Visualização de Logs', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index d834003fd7bb..352368905b4d 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -1891,6 +1891,7 @@ const message = { licenses: 'лицензии', nodes: 'ноды', commands: 'Быстрые команды', + opsReport: 'Операционный отчет', }, websiteLog: 'Логи веб-сайта', runLog: 'Логи выполнения', @@ -3907,6 +3908,312 @@ const message = { bindNode: 'Привязать узел', boundUsers: 'Привязанные пользователи', role: 'Роль', + opsReport: 'Операционный отчет', + opsReportOverview: 'Обзор', + opsReportSystem: 'Работа хоста', + opsReportLogin: 'Вход и безопасность', + opsReportWebsite: 'Защита сайтов', + opsReportResource: 'Ресурсы выполнения', + opsReportCronjob: 'Плановые задачи', + opsReportHistory: 'История экспорта', + opsReportSetting: 'Настройки', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Порог {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Порог', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Системный порог', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, roleName: 'Название', permission: 'Разрешения', permissionDuplicate: 'Каждому узлу можно назначить только одну роль', @@ -3915,6 +4222,47 @@ const message = { 'При наличии зависимостей связанные права выбираются автоматически; после ручного снятия некоторые функции могут показать "У текущего пользователя нет разрешения".', view: 'Просмотр', manage: 'Управление', + dashboard_view: 'Просмотр панели', + app_view: 'Просмотр приложения', + app_manage: 'Управление приложением', + ai_agent_view: 'Просмотр AI-ассистента', + ai_agent_manage: 'Управление AI-ассистентом', + ai_model_view: 'Просмотр AI-модели', + ai_model_manage: 'Управление AI-моделью', + ai_mcp_view: 'Просмотр MCP', + ai_mcp_manage: 'Управление MCP', + ai_gpu_view: 'Просмотр GPU', + website_view: 'Просмотр сайта', + website_manage: 'Управление сайтом', + website_cert_view: 'Просмотр сертификата', + website_cert_manage: 'Управление сертификатом', + website_runtime_view: 'Просмотр среды выполнения', + website_runtime_manage: 'Управление средой выполнения', + database_view: 'Просмотр базы данных', + database_manage: 'Управление базой данных', + container_view: 'Просмотр контейнера', + container_manage: 'Управление контейнером', + cronjob_view: 'Просмотр заданий', + toolbox_view: 'Просмотр инструментов', + host_file_view: 'Просмотр файлов', + host_firewall_view: 'Просмотр файрвола', + host_monitor_view: 'Просмотр мониторинга', + host_process_view: 'Просмотр процессов', + host_ssh_view: 'Просмотр SSH', + host_disk_view: 'Просмотр диска', + xpack_app_view: 'Просмотр APP', + xpack_waf_view: 'Просмотр WAF', + xpack_waf_manage: 'Управление WAF', + xpack_node_view: 'Просмотр узлов', + xpack_ops_report_view: 'Просмотр операционного отчета', + xpack_ops_report_manage: 'Управление операционным отчетом', + xpack_monitor_view: 'Просмотр мониторинга', + xpack_monitor_manage: 'Управление мониторингом', + xpack_cluster_view: 'Просмотр кластера', + xpack_cluster_manage: 'Управление кластером', + xpack_tamper_view: 'Просмотр защиты от подмены', + xpack_tamper_manage: 'Управление защитой от подмены', + log_view: 'Просмотр журналов', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 202f6e556d80..8361e6e0132f 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -1902,6 +1902,7 @@ const message = { licenses: 'Lisans', nodes: 'Düğüm', commands: 'Hızlı Komutlar', + opsReport: 'Operasyon Raporu', }, websiteLog: 'Website logları', runLog: 'Çalıştırma logları', @@ -3906,6 +3907,312 @@ const message = { bindNode: 'Düğüm Bağla', boundUsers: 'Bağlı Kullanıcılar', role: 'Rol', + opsReport: 'Operasyon Raporu', + opsReportOverview: 'Genel Bakış', + opsReportSystem: 'Ana Makine Çalışması', + opsReportLogin: 'Giriş ve Güvenlik', + opsReportWebsite: 'Web Sitesi Koruması', + opsReportResource: 'Çalışma Kaynakları', + opsReportCronjob: 'Zamanlanmış Görevler', + opsReportHistory: 'Dışa Aktarma Geçmişi', + opsReportSetting: 'Ayarlar', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Eşik {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Eşik', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Sistem eşiği', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, roleName: 'Ad', permission: 'İzinler', permissionDuplicate: 'Her düğüme yalnızca bir rol atanabilir', @@ -3914,6 +4221,47 @@ const message = { 'Bağımlılık varsa ilişkili izinler otomatik seçilir; manuel kaldırıldıktan sonra bazı özelliklerde "Geçerli kullanıcının izni yok" gösterilebilir.', view: 'Görüntüle', manage: 'Yönet', + dashboard_view: 'Panel Görünümü', + app_view: 'Uygulama Görünümü', + app_manage: 'Uygulama Yönetimi', + ai_agent_view: 'Yapay Zeka Asistanı Görünümü', + ai_agent_manage: 'Yapay Zeka Asistanı Yönetimi', + ai_model_view: 'Yapay Zeka Modeli Görünümü', + ai_model_manage: 'Yapay Zeka Modeli Yönetimi', + ai_mcp_view: 'MCP Görünümü', + ai_mcp_manage: 'MCP Yönetimi', + ai_gpu_view: 'GPU Görünümü', + website_view: 'Web Sitesi Görünümü', + website_manage: 'Web Sitesi Yönetimi', + website_cert_view: 'Sertifika Görünümü', + website_cert_manage: 'Sertifika Yönetimi', + website_runtime_view: 'Çalışma Ortamı Görünümü', + website_runtime_manage: 'Çalışma Ortamı Yönetimi', + database_view: 'Veritabanı Görünümü', + database_manage: 'Veritabanı Yönetimi', + container_view: 'Konteyner Görünümü', + container_manage: 'Konteyner Yönetimi', + cronjob_view: 'Zamanlanmış Görev Görünümü', + toolbox_view: 'Araç Kutusu Görünümü', + host_file_view: 'Dosya Görünümü', + host_firewall_view: 'Güvenlik Duvarı Görünümü', + host_monitor_view: 'İzleme Görünümü', + host_process_view: 'İşlem Görünümü', + host_ssh_view: 'SSH Görünümü', + host_disk_view: 'Disk Görünümü', + xpack_app_view: 'APP Görünümü', + xpack_waf_view: 'WAF Görünümü', + xpack_waf_manage: 'WAF Yönetimi', + xpack_node_view: 'Düğüm Görünümü', + xpack_ops_report_view: 'Operasyon Raporu Görünümü', + xpack_ops_report_manage: 'Operasyon Raporu Yönetimi', + xpack_monitor_view: 'İzleme Görünümü', + xpack_monitor_manage: 'İzleme Yönetimi', + xpack_cluster_view: 'Küme Görünümü', + xpack_cluster_manage: 'Küme Yönetimi', + xpack_tamper_view: 'Bütünlük Koruma Görünümü', + xpack_tamper_manage: 'Bütünlük Koruma Yönetimi', + log_view: 'Kayıt Görünümü', }, app: { app: 'Uygulama', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 7c5d84268cd8..458eb9423aa2 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -1752,6 +1752,7 @@ const message = { licenses: '許可證', nodes: '節點', commands: '快速指令', + opsReport: '運維報表', }, websiteLog: '網站日誌', runLog: '執行日誌', @@ -3552,6 +3553,311 @@ const message = { bindNode: '綁定節點', boundUsers: '綁定使用者', role: '角色', + opsReport: '運維報表', + opsReportOverview: '概覽', + opsReportSystem: '主機運行', + opsReportLogin: '登入與安全配置', + opsReportWebsite: '網站防護', + opsReportResource: '運行資源', + opsReportCronjob: '計劃任務', + opsReportHistory: '匯出歷史', + opsReportSetting: '設置', + opsReportPage: { + enterprise: '企業版', + scoreMeta: '扣分 {0} 分 · 風險 {1} 項', + hostAddress: '主機地址', + panelVersion: '1Panel 版本', + cpuCores: '實體核心', + coreUnit: '{0} 核', + memoryTotal: '記憶體總量', + reportDate: '報表日期', + serverSecurityOverview: '伺服器安全運營概覽', + securityScore: '安全評分', + overviewSummary: '當前安全等級為 {0},合計扣分 {1} 分,識別到 {2} 個風險項,覆蓋 {3} 個檢查對象。', + riskDistribution: '風險分佈', + totalDeducted: '合計扣分', + noRiskDeducted: '未觸發扣分', + scoreTrend: '評分趨勢', + scoreLevelSafe: '安全', + scoreLevelAttention: '需關注', + scoreLevelMediumRisk: '中風險', + scoreLevelHighRisk: '高風險', + scoreCategoryHost: '主機資源', + scoreCategoryLogin: '登入安全', + scoreCategoryWebsite: '網站與憑證', + scoreCategoryCronjob: '計劃任務', + scoreCategoryResource: '執行資源', + scoreDiskHigh: '磁碟 {0} 使用率 {1}%', + scoreDiskMedium: '磁碟 {0} 使用率 {1}%', + scoreResourceHigh: '{0} 當前使用率 {1}%', + scoreResourceMedium: '{0} 當前使用率 {1}%', + scoreLoadMedium: '負載當前值 {0}', + scoreMonitorDisabled: '主機監控未開啟', + scorePanelLoginFailedHigh: '1Panel 登入失敗 {0} 次', + scorePanelLoginFailedMedium: '1Panel 登入失敗 {0} 次', + scoreSSHLoginFailedHigh: 'SSH 登入失敗 {0} 次', + scoreSSHLoginFailedMedium: 'SSH 登入失敗 {0} 次', + scoreMFADisabled: 'MFA 未開啟', + scoreAllowIPsOpen: '授權 IP 未配置或範圍過大', + scorePasswordExpired: '面板密碼已過期', + scorePasswordExpiring: '面板密碼剩餘 {0} 天到期', + scorePanelHTTPSDisabled: '面板 HTTPS 未啟用', + scoreSSHRootLogin: 'SSH 允許 Root 登入', + scoreSSHPasswordAuth: 'SSH 開啟密碼認證且未啟用金鑰認證', + scoreSSLHigh: '{0} 憑證剩餘 {1} 天', + scoreSSLMedium: '{0} 憑證剩餘 {1} 天', + scoreWebsiteExpire: '{0} 網站剩餘 {1} 天到期', + scoreWebsiteHTTP: '{0} 未啟用 HTTPS', + scoreWebsiteStopped: '{0} 狀態異常', + scoreWebsiteMonitorUnavailable: '網站監控偵測到不可用站點', + scoreWebsiteMonitorAvailability: '網站監控可用率 {0}% 低於閾值', + scoreWafDisabled: 'WAF 未開啟,網站未納入防護', + scoreWafHighRiskHit: 'WAF 統計週期內命中 {0} 條風險規則', + scoreCronjobFailed: '近 7 天存在 {0} 條計劃任務失敗記錄', + scoreAppFailed: '{0} 應用執行異常', + scoreAppStopped: '{0} 應用已停止', + scoreContainerHigh: '{0} 容器狀態異常', + scoreContainerExited: '{0} 容器已停止', + scoreContainerResource: '{0} 容器資源使用率過高', + attentionItems: '待關注項', + attentionAssets: '待關注資產', + riskItems: '風險項', + object: '對象', + description: '說明', + itemUnit: '項', + recordUnit: '條', + certUnit: '張', + containerUnit: '個', + loginFailed: '登入失敗', + sslExpire: '憑證到期', + abnormalContainer: '異常容器', + statAttentionDesc: '當前合計扣分 {0} 分', + statLoginDesc: '面板 {0} 條 · SSH {1} 條', + statSslDesc: '共檢查 {0} 張憑證', + statContainerDesc: '共檢查 {0} 個容器', + assetHostDesc: '磁碟最高使用率 {0}%', + assetWebsiteDesc: '{0} 張憑證即將到期,{1} 個網站狀態異常', + assetResourceDesc: '{0} 個應用異常,{1} 個應用已停止,{2} 個容器異常', + assetCronjobDesc: '近 7 天 {0} 條失敗記錄,{1} 個任務未啟用', + app: '應用', + website: '網站', + websiteSsl: '網站 / 憑證', + cronjob: '計劃任務', + container: '容器', + sslCertificate: 'SSL 憑證', + loginSecurity: '登入安全', + panelLogin: '1Panel 登入', + sshLogin: 'SSH 登入', + failedRecord: '失敗記錄', + expiredDays: '已過期 {0} 天', + remainingDays: '{0} · 剩餘 {1} 天', + enabled: '已開啟', + disabled: '未開啟', + exportRecordFailed: '儲存匯出記錄失敗', + hostInfo: '主機資訊', + hostname: '主機名', + osVersion: '系統版本', + kernelVersion: '核心版本', + arch: '架構', + uptime: '執行時間', + diskUsage: '磁碟使用', + mountPoint: '掛載點', + device: '裝置', + capacity: '容量', + used: '已用', + usageRate: '使用率', + memory: '記憶體', + load: '負載', + maxDiskUsage: '磁碟最高使用率', + panelLoginSecurity: '1Panel 登入安全配置', + sshSecurity: 'Linux 伺服器 SSH 安全配置', + panelFailedRecords: '1Panel 登入失敗記錄', + sshFailedRecords: 'SSH 登入失敗記錄', + location: '歸屬地', + configItem: '配置項', + currentValue: '當前值', + securityEntrance: '安全入口', + configured: '已配置', + notConfigured: '未配置', + normal: '正常', + needAttention: '需關注', + allowIPs: '授權 IP', + restricted: '已限制', + unrestricted: '未限制', + bindDomain: '綁定網域', + panelHTTPS: '面板 HTTPS', + passwordComplexity: '密碼複雜度', + sshService: 'SSH 服務', + running: '執行中', + notRunning: '未執行', + listenPort: '監聽埠', + read: '已讀取', + rootLogin: 'Root 登入', + passwordAuth: '密碼認證', + keyAuth: '金鑰認證', + panelLoginFailed: '1Panel 登入失敗', + sshLoginFailed: 'SSH 登入失敗', + panelSecurityItems: '面板安全項', + sshSecurityItems: 'SSH 安全項', + websiteOverview: '網站概覽', + primaryDomain: '主網域', + expireTime: '到期時間', + domain: '網域', + issuer: '頒發機構', + autoRenew: '自動續簽', + websiteCount: '網站數量', + httpsWebsite: 'HTTPS 網站', + certCount: '憑證數量', + websiteExpire: '網站到期', + database: '資料庫', + remoteDatabase: '遠端資料庫', + address: '地址', + containerResourceUsage: '容器資源佔用', + spaceUsage: '佔用空間', + reclaimable: '可回收空間', + containerReclaimable: '容器可回收', + image: '映像', + volume: '資料卷', + buildCache: '建構快取', + alert: '告警', + alertConfigured: '已配置告警', + failedExecutionRecords: '失敗執行記錄', + taskID: '任務 ID', + executeTime: '執行時間', + backupTasks: '備份類任務', + systemMetrics: '執行指標', + cpu: 'CPU', + thresholdPercent: '閾值 {0}%', + loadAverage: '1 / 5 / 15 分鐘負載:{0} / {1} / {2}', + sourceMount: '掛載點 {0}', + storageUsage: '空間佔用', + localDisk: '本機磁碟', + highUsagePeriods: '高負載時段', + timeRange: '時間範圍', + threshold: '閾值', + duration: '持續時間', + peak: '峰值', + scoring: '計分', + counted: '計入', + notCounted: '未計入', + dataSource: '資料來源', + noHighUsagePeriod: '暫無高負載時段', + monitorDisabledOrNoData: '主機監控未啟用或暫無監控資料', + to: '至', + hoursShort: '{0} 小時', + minutesShort: '{0} 分鐘', + websiteStatus: '網站狀態', + sslRisk: '憑證風險', + sslExpiring: '憑證臨期', + includedInReport: '已納入報表', + needRenewal: '建議續簽', + fromExpireInfo: '來自到期資訊', + runningWebsite: '執行中網站', + fromWebsiteStatus: '來自網站列表狀態', + stoppedWebsite: '已停止網站', + confirmStoppedWebsite: '確認是否符合預期', + expiringWebsite: '快要過期網站', + expiringSoon: '即將到期', + none: '暫無', + noSslRisk: '暫無需處理憑證', + websiteProtection: 'WAF 與網站監控', + websiteMonitor: '網站監控', + waf: 'WAF', + siteAvailability: '站點可用率', + monitoredSites: '監控站點', + requestCount: '請求數', + abnormalSites: '異常站點', + count5xxSource: '按 5xx 請求統計', + wafIntercept: 'WAF 攔截', + highRiskHit: '高危命中', + websiteMonitorDisabledOrNoData: '網站監控未啟用或暫無監控資料', + wafDisabledOrNoData: 'WAF 未啟用或暫無攔截資料', + noWafData: '暫無 WAF 攔截資料', + sourceIP: '來源 IP', + hitCount: '命中次數', + level: '等級', + attackType: '攻擊類型', + requestRatio: '請求佔比', + installed: '已安裝', + normalRunning: '正常執行', + failedStart: '啟動失敗', + manualStopped: '手動停止', + failed: '失敗', + success: '成功', + canUpdate: '可升級', + listSeparator: '、', + containerCount: '容器數量', + stopped: '停止', + abnormal: '異常', + abnormalContainers: '異常容器', + resourceUsage: '資源使用', + exposedContainerPorts: '暴露埠', + portMapping: '埠映射', + risk: '風險', + noAbnormalContainer: '暫無異常容器', + noExposedContainer: '未檢測到暴露埠', + publicExpose: '公網暴露', + privateExpose: '內網映射', + executionRecords: '執行記錄', + successRate: '成功率', + failedJobs: '失敗任務', + recentRecoveryPoint: '最近恢復點', + remoteCoverage: '遠端覆蓋', + recent7Days: '近 7 天', + taskTypeStats: '任務類型統計', + total: '總計', + taskTypeDesc: '已啟用 {0} 個,未啟用 {1} 個', + failedOrAttentionTasks: '失敗或需關注任務', + execution: '執行情況', + latestExecution: '最近執行', + remoteBackup: '遠端備份', + localOnly: '僅本機', + covered: '已覆蓋', + noAttentionCronjob: '暫無失敗或需關注的計劃任務', + generationRule: '生成規則', + scheduleDaily: '每天', + scheduleDailyDesc: '每天 09:00 生成近 24 小時報表', + scheduleWeekly: '每週', + scheduleWeeklyDesc: '每週一 09:00 生成近 7 天報表', + scheduleMonthly: '每月', + scheduleMonthlyDesc: '每月 1 日 09:00 生成上月報表', + scheduleCurrentDaily: '每天 09:00 生成近 24 小時報表 · 下次 {0}', + scheduleCurrentWeekly: '每週一 09:00 生成近 7 天報表 · 下次 {0}', + scheduleCurrentMonthly: '每月 1 日 09:00 生成上月報表 · 下次 {0}', + notificationMethod: '通知方式', + channel: '通道', + receiver: '接收對象', + systemThreshold: '系統閾值', + metric: '指標', + currentRule: '當前規則', + hostMonitor: '主機監控', + monitorInterval: '監控間隔', + exportSettings: '匯出設定', + defaultFormat: '預設格式', + savePath: '儲存目錄', + savePathRequired: '請設定報表儲存目錄', + generateNow: '立即生成', + generateSuccess: '已生成報表檔案:{0}', + generateFailed: '生成報表失敗', + enabledStatus: '已啟用', + disabledStatus: '已停用', + thresholdRule: '閾值 {0},連續 {1} 次觸發', + hours: '{0} 小時', + minutes: '{0} 分鐘', + seconds: '{0} 秒', + totalExports: '匯出總數', + successExports: '成功匯出', + failedExports: '失敗匯出', + reportName: '報表名稱', + exportFormat: '匯出格式', + operator: '操作人', + triggerType: '觸發方式', + filePath: '檔案路徑', + manualExport: '手動', + scheduledExport: '定時', + exportResult: '匯出結果', + exportDetail: '匯出說明', + }, roleName: '名稱', permission: '權限', permissionDuplicate: '每個節點只能新增一種角色', @@ -3559,6 +3865,47 @@ const message = { permissionLinkageTip: '存在依賴時將自動勾選關聯權限,手動取消後部分功能可能提示「目前使用者無權限」。', view: '檢視', manage: '管理', + dashboard_view: '儀表板檢視', + app_view: '應用檢視', + app_manage: '應用管理', + ai_agent_view: 'AI 助理檢視', + ai_agent_manage: 'AI 助理管理', + ai_model_view: 'AI 模型檢視', + ai_model_manage: 'AI 模型管理', + ai_mcp_view: 'MCP 檢視', + ai_mcp_manage: 'MCP 管理', + ai_gpu_view: 'GPU 檢視', + website_view: '網站檢視', + website_manage: '網站管理', + website_cert_view: '憑證檢視', + website_cert_manage: '憑證管理', + website_runtime_view: '執行環境檢視', + website_runtime_manage: '執行環境管理', + database_view: '資料庫檢視', + database_manage: '資料庫管理', + container_view: '容器檢視', + container_manage: '容器管理', + cronjob_view: '計劃任務檢視', + toolbox_view: '工具箱檢視', + host_file_view: '檔案檢視', + host_firewall_view: '防火牆檢視', + host_monitor_view: '網站監控檢視', + host_process_view: '程序檢視', + host_ssh_view: 'SSH 檢視', + host_disk_view: '磁碟檢視', + xpack_app_view: 'APP 檢視', + xpack_waf_view: 'WAF 檢視', + xpack_waf_manage: 'WAF 管理', + xpack_node_view: '節點檢視', + xpack_ops_report_view: '運維報表檢視', + xpack_ops_report_manage: '運維報表管理', + xpack_monitor_view: '監控檢視', + xpack_monitor_manage: '監控管理', + xpack_cluster_view: '叢集檢視', + xpack_cluster_manage: '叢集管理', + xpack_tamper_view: '防竄改檢視', + xpack_tamper_manage: '防竄改管理', + log_view: '日誌檢視', }, waf: { name: 'WAF', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 11879a0d80e8..32ed52750e66 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -1743,6 +1743,7 @@ const message = { licenses: '许可证', nodes: '节点', commands: '快速命令', + opsReport: '运维报表', }, websiteLog: '网站日志', runLog: '运行日志', @@ -4132,6 +4133,311 @@ const message = { bindNode: '绑定节点', boundUsers: '绑定用户', role: '角色', + opsReport: '运维报表', + opsReportOverview: '概览', + opsReportSystem: '主机运行', + opsReportLogin: '登录与安全配置', + opsReportWebsite: '网站防护', + opsReportResource: '运行资源', + opsReportCronjob: '计划任务', + opsReportHistory: '导出历史', + opsReportSetting: '设置', + opsReportPage: { + enterprise: '企业版', + scoreMeta: '扣分 {0} 分 · 风险 {1} 项', + hostAddress: '主机地址', + panelVersion: '1Panel 版本', + cpuCores: '物理核心', + coreUnit: '{0} 核', + memoryTotal: '内存总量', + reportDate: '报表日期', + serverSecurityOverview: '服务器安全运营概览', + securityScore: '安全评分', + overviewSummary: '当前安全等级为 {0},合计扣分 {1} 分,识别到 {2} 个风险项,覆盖 {3} 个检查对象。', + riskDistribution: '风险分布', + totalDeducted: '合计扣分', + noRiskDeducted: '未触发扣分', + scoreTrend: '评分趋势', + scoreLevelSafe: '安全', + scoreLevelAttention: '需关注', + scoreLevelMediumRisk: '中风险', + scoreLevelHighRisk: '高风险', + scoreCategoryHost: '主机资源', + scoreCategoryLogin: '登录安全', + scoreCategoryWebsite: '网站与证书', + scoreCategoryCronjob: '计划任务', + scoreCategoryResource: '运行资源', + scoreDiskHigh: '磁盘 {0} 使用率 {1}%', + scoreDiskMedium: '磁盘 {0} 使用率 {1}%', + scoreResourceHigh: '{0} 当前使用率 {1}%', + scoreResourceMedium: '{0} 当前使用率 {1}%', + scoreLoadMedium: '负载当前值 {0}', + scoreMonitorDisabled: '主机监控未开启', + scorePanelLoginFailedHigh: '1Panel 登录失败 {0} 次', + scorePanelLoginFailedMedium: '1Panel 登录失败 {0} 次', + scoreSSHLoginFailedHigh: 'SSH 登录失败 {0} 次', + scoreSSHLoginFailedMedium: 'SSH 登录失败 {0} 次', + scoreMFADisabled: 'MFA 未开启', + scoreAllowIPsOpen: '授权 IP 未配置或范围过大', + scorePasswordExpired: '面板密码已过期', + scorePasswordExpiring: '面板密码剩余 {0} 天到期', + scorePanelHTTPSDisabled: '面板 HTTPS 未启用', + scoreSSHRootLogin: 'SSH 允许 Root 登录', + scoreSSHPasswordAuth: 'SSH 开启密码认证且未启用密钥认证', + scoreSSLHigh: '{0} 证书剩余 {1} 天', + scoreSSLMedium: '{0} 证书剩余 {1} 天', + scoreWebsiteExpire: '{0} 网站剩余 {1} 天到期', + scoreWebsiteHTTP: '{0} 未启用 HTTPS', + scoreWebsiteStopped: '{0} 状态异常', + scoreWebsiteMonitorUnavailable: '网站监控检测到不可用站点', + scoreWebsiteMonitorAvailability: '网站监控可用率 {0}% 低于阈值', + scoreWafDisabled: 'WAF 未开启,网站未纳入防护', + scoreWafHighRiskHit: 'WAF 统计周期内命中 {0} 条风险规则', + scoreCronjobFailed: '近 7 天存在 {0} 条计划任务失败记录', + scoreAppFailed: '{0} 应用运行异常', + scoreAppStopped: '{0} 应用已停止', + scoreContainerHigh: '{0} 容器状态异常', + scoreContainerExited: '{0} 容器已停止', + scoreContainerResource: '{0} 容器资源使用率过高', + attentionItems: '待关注项', + attentionAssets: '待关注资产', + riskItems: '风险项', + object: '对象', + description: '说明', + itemUnit: '项', + recordUnit: '条', + certUnit: '张', + containerUnit: '个', + loginFailed: '登录失败', + sslExpire: '证书到期', + abnormalContainer: '异常容器', + statAttentionDesc: '当前合计扣分 {0} 分', + statLoginDesc: '面板 {0} 条 · SSH {1} 条', + statSslDesc: '共检查 {0} 张证书', + statContainerDesc: '共检查 {0} 个容器', + assetHostDesc: '磁盘最高使用率 {0}%', + assetWebsiteDesc: '{0} 张证书即将到期,{1} 个网站状态异常', + assetResourceDesc: '{0} 个应用异常,{1} 个应用已停止,{2} 个容器异常', + assetCronjobDesc: '近 7 天 {0} 条失败记录,{1} 个任务未启用', + app: '应用', + website: '网站', + websiteSsl: '网站 / 证书', + cronjob: '计划任务', + container: '容器', + sslCertificate: 'SSL 证书', + loginSecurity: '登录安全', + panelLogin: '1Panel 登录', + sshLogin: 'SSH 登录', + failedRecord: '失败记录', + expiredDays: '已过期 {0} 天', + remainingDays: '{0} · 剩余 {1} 天', + enabled: '已开启', + disabled: '未开启', + exportRecordFailed: '保存导出记录失败', + hostInfo: '主机信息', + hostname: '主机名', + osVersion: '系统版本', + kernelVersion: '内核版本', + arch: '架构', + uptime: '运行时间', + diskUsage: '磁盘使用', + mountPoint: '挂载点', + device: '设备', + capacity: '容量', + used: '已用', + usageRate: '使用率', + memory: '内存', + load: '负载', + maxDiskUsage: '磁盘最高使用率', + panelLoginSecurity: '1Panel 登录安全配置', + sshSecurity: 'Linux 服务器 SSH 安全配置', + panelFailedRecords: '1Panel 登录失败记录', + sshFailedRecords: 'SSH 登录失败记录', + location: '归属地', + configItem: '配置项', + currentValue: '当前值', + securityEntrance: '安全入口', + configured: '已配置', + notConfigured: '未配置', + normal: '正常', + needAttention: '需关注', + allowIPs: '授权 IP', + restricted: '已限制', + unrestricted: '未限制', + bindDomain: '绑定域名', + panelHTTPS: '面板 HTTPS', + passwordComplexity: '密码复杂度', + sshService: 'SSH 服务', + running: '运行中', + notRunning: '未运行', + listenPort: '监听端口', + read: '已读取', + rootLogin: 'Root 登录', + passwordAuth: '密码认证', + keyAuth: '密钥认证', + panelLoginFailed: '1Panel 登录失败', + sshLoginFailed: 'SSH 登录失败', + panelSecurityItems: '面板安全项', + sshSecurityItems: 'SSH 安全项', + websiteOverview: '网站概览', + primaryDomain: '主域名', + expireTime: '到期时间', + domain: '域名', + issuer: '颁发机构', + autoRenew: '自动续签', + websiteCount: '网站数量', + httpsWebsite: 'HTTPS 网站', + certCount: '证书数量', + websiteExpire: '网站到期', + database: '数据库', + remoteDatabase: '远程数据库', + address: '地址', + containerResourceUsage: '容器资源占用', + spaceUsage: '占用空间', + reclaimable: '可回收空间', + containerReclaimable: '容器可回收', + image: '镜像', + volume: '数据卷', + buildCache: '构建缓存', + alert: '告警', + alertConfigured: '已配置告警', + failedExecutionRecords: '失败执行记录', + taskID: '任务 ID', + executeTime: '执行时间', + backupTasks: '备份类任务', + systemMetrics: '运行指标', + cpu: 'CPU', + thresholdPercent: '阈值 {0}%', + loadAverage: '1 / 5 / 15 分钟负载:{0} / {1} / {2}', + sourceMount: '挂载点 {0}', + storageUsage: '空间占用', + localDisk: '本地磁盘', + highUsagePeriods: '高负载时段', + timeRange: '时间范围', + threshold: '阈值', + duration: '持续时间', + peak: '峰值', + scoring: '计分', + counted: '计入', + notCounted: '未计入', + dataSource: '数据来源', + noHighUsagePeriod: '暂无高负载时段', + monitorDisabledOrNoData: '主机监控未启用或暂无监控数据', + to: '至', + hoursShort: '{0} 小时', + minutesShort: '{0} 分钟', + websiteStatus: '网站状态', + sslRisk: '证书风险', + sslExpiring: '证书临期', + includedInReport: '已纳入报表', + needRenewal: '建议续签', + fromExpireInfo: '来自到期信息', + runningWebsite: '运行中网站', + fromWebsiteStatus: '来自网站列表状态', + stoppedWebsite: '已停止网站', + confirmStoppedWebsite: '确认是否符合预期', + expiringWebsite: '快要过期网站', + expiringSoon: '即将到期', + none: '暂无', + noSslRisk: '暂无需处理证书', + websiteProtection: 'WAF 与网站监控', + websiteMonitor: '网站监控', + waf: 'WAF', + siteAvailability: '站点可用率', + monitoredSites: '监控站点', + requestCount: '请求数', + abnormalSites: '异常站点', + count5xxSource: '按 5xx 请求统计', + wafIntercept: 'WAF 拦截', + highRiskHit: '高危命中', + websiteMonitorDisabledOrNoData: '网站监控未启用或暂无监控数据', + wafDisabledOrNoData: 'WAF 未启用或暂无拦截数据', + noWafData: '暂无 WAF 拦截数据', + sourceIP: '来源 IP', + hitCount: '命中次数', + level: '等级', + attackType: '攻击类型', + requestRatio: '请求占比', + installed: '已安装', + normalRunning: '正常运行', + failedStart: '启动失败', + manualStopped: '手动停止', + failed: '失败', + success: '成功', + canUpdate: '可升级', + listSeparator: '、', + containerCount: '容器数量', + stopped: '停止', + abnormal: '异常', + abnormalContainers: '异常容器', + resourceUsage: '资源使用', + exposedContainerPorts: '暴露端口', + portMapping: '端口映射', + risk: '风险', + noAbnormalContainer: '暂无异常容器', + noExposedContainer: '未检测到暴露端口', + publicExpose: '公网暴露', + privateExpose: '内网映射', + executionRecords: '执行记录', + successRate: '成功率', + failedJobs: '失败任务', + recentRecoveryPoint: '最近恢复点', + remoteCoverage: '远程覆盖', + recent7Days: '近 7 天', + taskTypeStats: '任务类型统计', + total: '总计', + taskTypeDesc: '已启用 {0} 个,未启用 {1} 个', + failedOrAttentionTasks: '失败或需关注任务', + execution: '执行情况', + latestExecution: '最近执行', + remoteBackup: '远程备份', + localOnly: '仅本地', + covered: '已覆盖', + noAttentionCronjob: '暂无失败或需关注的计划任务', + generationRule: '生成规则', + scheduleDaily: '每天', + scheduleDailyDesc: '每天 09:00 生成近 24 小时报表', + scheduleWeekly: '每周', + scheduleWeeklyDesc: '每周一 09:00 生成近 7 天报表', + scheduleMonthly: '每月', + scheduleMonthlyDesc: '每月 1 日 09:00 生成上月报表', + scheduleCurrentDaily: '每天 09:00 生成近 24 小时报表 · 下次 {0}', + scheduleCurrentWeekly: '每周一 09:00 生成近 7 天报表 · 下次 {0}', + scheduleCurrentMonthly: '每月 1 日 09:00 生成上月报表 · 下次 {0}', + notificationMethod: '通知方式', + channel: '通道', + receiver: '接收对象', + systemThreshold: '系统阈值', + metric: '指标', + currentRule: '当前规则', + hostMonitor: '主机监控', + monitorInterval: '监控间隔', + exportSettings: '导出设置', + defaultFormat: '默认格式', + savePath: '保存目录', + savePathRequired: '请设置报表保存目录', + generateNow: '立即生成', + generateSuccess: '已生成报表文件:{0}', + generateFailed: '生成报表失败', + enabledStatus: '已启用', + disabledStatus: '已停用', + thresholdRule: '阈值 {0},连续 {1} 次触发', + hours: '{0} 小时', + minutes: '{0} 分钟', + seconds: '{0} 秒', + totalExports: '导出总数', + successExports: '成功导出', + failedExports: '失败导出', + reportName: '报表名称', + exportFormat: '导出格式', + operator: '操作人', + triggerType: '触发方式', + filePath: '文件路径', + manualExport: '手动', + scheduledExport: '定时', + exportResult: '导出结果', + exportDetail: '导出说明', + }, roleName: '名称', permission: '权限', permissionDuplicate: '每个节点只能添加一种角色', @@ -4139,6 +4445,47 @@ const message = { permissionLinkageTip: '存在依赖时将自动勾选关联权限,手动取消后部分功能可能提示“当前用户无权限”。', view: '查看', manage: '管理', + dashboard_view: '仪表盘查看', + app_view: '应用查看', + app_manage: '应用管理', + ai_agent_view: '智能体查看', + ai_agent_manage: '智能体管理', + ai_model_view: '模型查看', + ai_model_manage: '模型管理', + ai_mcp_view: 'MCP 查看', + ai_mcp_manage: 'MCP 管理', + ai_gpu_view: 'GPU 查看', + website_view: '网站查看', + website_manage: '网站管理', + website_cert_view: '证书查看', + website_cert_manage: '证书管理', + website_runtime_view: '运行环境查看', + website_runtime_manage: '运行环境管理', + database_view: '数据库查看', + database_manage: '数据库管理', + container_view: '容器查看', + container_manage: '容器管理', + cronjob_view: '计划任务查看', + toolbox_view: '工具箱查看', + host_file_view: '文件查看', + host_firewall_view: '防火墙查看', + host_monitor_view: '网站监控查看', + host_process_view: '进程查看', + host_ssh_view: 'SSH 查看', + host_disk_view: '磁盘查看', + xpack_app_view: 'APP 查看', + xpack_waf_view: 'WAF 查看', + xpack_waf_manage: 'WAF 管理', + xpack_node_view: '节点查看', + xpack_ops_report_view: '运维报表查看', + xpack_ops_report_manage: '运维报表管理', + xpack_monitor_view: '监控查看', + xpack_monitor_manage: '监控管理', + xpack_cluster_view: '集群查看', + xpack_cluster_manage: '集群管理', + xpack_tamper_view: '防篡改查看', + xpack_tamper_manage: '防篡改管理', + log_view: '日志查看', }, customApp: { name: '自定义仓库', diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index c5d1a5f81cb8..509f08067fd9 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -84,7 +84,7 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => { }, proxy: { '/api/v2': { - target: 'http://localhost:9999/', + target: 'http://47.113.185.74:9999/', changeOrigin: true, ws: true, }, From 8fcc3df98bf47f610b8c898d1ea65511c521c08c Mon Sep 17 00:00:00 2001 From: wanghe-fit2cloud Date: Fri, 15 May 2026 17:52:06 +0800 Subject: [PATCH 2/8] chore: restore local vite proxy --- frontend/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 509f08067fd9..c5d1a5f81cb8 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -84,7 +84,7 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => { }, proxy: { '/api/v2': { - target: 'http://47.113.185.74:9999/', + target: 'http://localhost:9999/', changeOrigin: true, ws: true, }, From 5eb550ebc204e276d13d45a0b0bc326dc0329714 Mon Sep 17 00:00:00 2001 From: wanghe-fit2cloud Date: Fri, 15 May 2026 17:53:50 +0800 Subject: [PATCH 3/8] chore: restore package lock --- frontend/package-lock.json | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c13aad965f18..df33c0760e02 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -133,6 +133,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1198,7 +1199,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -2193,6 +2193,7 @@ "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", "license": "MIT", + "peer": true, "dependencies": { "@types/lodash": "*" } @@ -2226,6 +2227,7 @@ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -2301,6 +2303,7 @@ "integrity": "sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.58.1", "@typescript-eslint/types": "8.58.1", @@ -2952,7 +2955,8 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/acorn": { "version": "8.15.0", @@ -2960,6 +2964,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3213,6 +3218,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -3457,6 +3463,7 @@ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==", "license": "MIT", + "peer": true, "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", @@ -5018,6 +5025,7 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -5074,6 +5082,7 @@ "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -6354,6 +6363,7 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -6768,13 +6778,15 @@ "version": "4.18.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash-es": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash-unified": { "version": "1.0.3", @@ -7047,6 +7059,7 @@ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", "license": "MIT", + "peer": true, "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -7836,6 +7849,7 @@ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz", "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", "license": "MIT", + "peer": true, "dependencies": { "@vue/devtools-api": "^6.6.3", "vue-demi": "^0.14.10" @@ -7903,6 +7917,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -8059,6 +8074,7 @@ "integrity": "sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -8471,6 +8487,7 @@ "integrity": "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -8605,6 +8622,7 @@ "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", @@ -8825,7 +8843,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -8838,7 +8855,6 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -9343,7 +9359,6 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -9363,8 +9378,7 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/text-extensions": { "version": "1.9.0", @@ -9480,6 +9494,7 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -9575,6 +9590,7 @@ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10004,6 +10020,7 @@ "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -10252,6 +10269,7 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -10271,6 +10289,7 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.32.tgz", "integrity": "sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==", "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.32", "@vue/compiler-sfc": "3.5.32", @@ -10324,6 +10343,7 @@ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" From 722fc70626f351f38e6f22437d6358564019d310 Mon Sep 17 00:00:00 2001 From: wanghe-fit2cloud Date: Fri, 15 May 2026 18:03:49 +0800 Subject: [PATCH 4/8] chore: move ops report i18n scope --- frontend/src/lang/modules/en.ts | 612 +++++++++++++-------------- frontend/src/lang/modules/es-es.ts | 612 +++++++++++++-------------- frontend/src/lang/modules/ja.ts | 612 +++++++++++++-------------- frontend/src/lang/modules/ko.ts | 612 +++++++++++++-------------- frontend/src/lang/modules/ms.ts | 612 +++++++++++++-------------- frontend/src/lang/modules/pt-br.ts | 612 +++++++++++++-------------- frontend/src/lang/modules/ru.ts | 612 +++++++++++++-------------- frontend/src/lang/modules/tr.ts | 612 +++++++++++++-------------- frontend/src/lang/modules/zh-Hant.ts | 610 +++++++++++++------------- frontend/src/lang/modules/zh.ts | 610 +++++++++++++------------- 10 files changed, 3058 insertions(+), 3058 deletions(-) diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 12fa0844f736..73685c8ccff2 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -3809,6 +3809,312 @@ const message = { menu: 'Pro', upage: 'AI Website Builder', proAlert: 'Upgrade to Pro to use this feature', + opsReport: 'Ops Report', + opsReportOverview: 'Overview', + opsReportSystem: 'Host Runtime', + opsReportLogin: 'Login & Security', + opsReportWebsite: 'Website Protection', + opsReportResource: 'Runtime Resources', + opsReportCronjob: 'Cron Jobs', + opsReportHistory: 'Export History', + opsReportSetting: 'Settings', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Threshold {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Threshold', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'System Threshold', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, user: { user: 'User', userInfo: 'User Info', @@ -3821,312 +4127,6 @@ const message = { bindNode: 'Bind Node', boundUsers: 'Bound Users', role: 'Role', - opsReport: 'Ops Report', - opsReportOverview: 'Overview', - opsReportSystem: 'Host Runtime', - opsReportLogin: 'Login & Security', - opsReportWebsite: 'Website Protection', - opsReportResource: 'Runtime Resources', - opsReportCronjob: 'Cron Jobs', - opsReportHistory: 'Export History', - opsReportSetting: 'Settings', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Threshold {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Threshold', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'System Threshold', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', - }, roleName: 'Name', permission: 'Permissions', permissionDuplicate: 'Only one role can be assigned to each node', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 82b7aba7d3a2..00eea66e16d8 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -3862,6 +3862,312 @@ const message = { menu: 'Pro', upage: 'Constructor Web con IA', proAlert: 'Actualiza a Pro para usar esta función', + opsReport: 'Informe de operaciones', + opsReportOverview: 'Resumen', + opsReportSystem: 'Ejecución del host', + opsReportLogin: 'Inicio de sesión y seguridad', + opsReportWebsite: 'Protección de sitios web', + opsReportResource: 'Recursos de ejecución', + opsReportCronjob: 'Tareas programadas', + opsReportHistory: 'Historial de exportación', + opsReportSetting: 'Configuración', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Umbral {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Umbral', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Umbral del sistema', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, user: { user: 'Usuario', userInfo: 'Información de usuario', @@ -3875,312 +4181,6 @@ const message = { bindNode: 'Vincular nodo', boundUsers: 'Usuarios vinculados', role: 'Rol', - opsReport: 'Informe de operaciones', - opsReportOverview: 'Resumen', - opsReportSystem: 'Ejecución del host', - opsReportLogin: 'Inicio de sesión y seguridad', - opsReportWebsite: 'Protección de sitios web', - opsReportResource: 'Recursos de ejecución', - opsReportCronjob: 'Tareas programadas', - opsReportHistory: 'Historial de exportación', - opsReportSetting: 'Configuración', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Umbral {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Umbral', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Umbral del sistema', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', - }, roleName: 'Nombre', permission: 'Permisos', permissionDuplicate: 'Solo se puede asignar un rol a cada nodo', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 1edcfed3cc39..4e506891c711 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -3846,6 +3846,312 @@ const message = { menu: 'Рro', upage: 'AIウェブサイトビルダー', proAlert: 'この機能を使用するにはProにアップグレードしてください', + opsReport: '運用レポート', + opsReportOverview: '概要', + opsReportSystem: 'ホスト稼働', + opsReportLogin: 'ログインとセキュリティ', + opsReportWebsite: 'Web サイト保護', + opsReportResource: '実行リソース', + opsReportCronjob: 'スケジュールタスク', + opsReportHistory: 'エクスポート履歴', + opsReportSetting: '設定', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'しきい値 {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'しきい値', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'システムしきい値', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, user: { user: 'ユーザー', userInfo: 'ユーザー情報', @@ -3857,312 +4163,6 @@ const message = { bindNode: 'ノードをバインド', boundUsers: 'バインド済みユーザー', role: 'ロール', - opsReport: '運用レポート', - opsReportOverview: '概要', - opsReportSystem: 'ホスト稼働', - opsReportLogin: 'ログインとセキュリティ', - opsReportWebsite: 'Web サイト保護', - opsReportResource: '実行リソース', - opsReportCronjob: 'スケジュールタスク', - opsReportHistory: 'エクスポート履歴', - opsReportSetting: '設定', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'しきい値 {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'しきい値', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'システムしきい値', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', - }, roleName: '名前', permission: '権限', permissionDuplicate: '各ノードには1つのロールのみ割り当てられます', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 84f8e5ad75d9..f9b92a7bb618 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -3762,6 +3762,312 @@ const message = { menu: 'Pro', upage: 'AI 웹사이트 빌더', proAlert: '이 기능을 사용하려면 Pro로 업그레이드하세요', + opsReport: '운영 보고서', + opsReportOverview: '개요', + opsReportSystem: '호스트 실행', + opsReportLogin: '로그인 및 보안', + opsReportWebsite: '웹사이트 보호', + opsReportResource: '실행 리소스', + opsReportCronjob: '예약 작업', + opsReportHistory: '내보내기 기록', + opsReportSetting: '설정', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: '임계값 {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: '임계값', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: '시스템 임계값', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, user: { user: '사용자', userInfo: '사용자 정보', @@ -3773,312 +4079,6 @@ const message = { bindNode: '노드 연결', boundUsers: '바인딩된 사용자', role: '역할', - opsReport: '운영 보고서', - opsReportOverview: '개요', - opsReportSystem: '호스트 실행', - opsReportLogin: '로그인 및 보안', - opsReportWebsite: '웹사이트 보호', - opsReportResource: '실행 리소스', - opsReportCronjob: '예약 작업', - opsReportHistory: '내보내기 기록', - opsReportSetting: '설정', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: '임계값 {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: '임계값', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: '시스템 임계값', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', - }, roleName: '이름', permission: '권한', permissionDuplicate: '각 노드에는 하나의 역할만 지정할 수 있습니다', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index ec6ef8e149bf..4099e4f50b06 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -3901,6 +3901,312 @@ const message = { menu: 'Pro', upage: 'Pembina Laman Web AI', proAlert: 'Tingkatkan ke Pro untuk menggunakan ciri ini', + opsReport: 'Laporan Operasi', + opsReportOverview: 'Gambaran Keseluruhan', + opsReportSystem: 'Operasi Hos', + opsReportLogin: 'Log Masuk & Keselamatan', + opsReportWebsite: 'Perlindungan Laman Web', + opsReportResource: 'Sumber Operasi', + opsReportCronjob: 'Tugas Berjadual', + opsReportHistory: 'Sejarah Eksport', + opsReportSetting: 'Tetapan', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Ambang {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Ambang', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Ambang Sistem', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, user: { user: 'Pengguna', userInfo: 'Maklumat Pengguna', @@ -3914,312 +4220,6 @@ const message = { bindNode: 'Ikat Nod', boundUsers: 'Pengguna Terikat', role: 'Peranan', - opsReport: 'Laporan Operasi', - opsReportOverview: 'Gambaran Keseluruhan', - opsReportSystem: 'Operasi Hos', - opsReportLogin: 'Log Masuk & Keselamatan', - opsReportWebsite: 'Perlindungan Laman Web', - opsReportResource: 'Sumber Operasi', - opsReportCronjob: 'Tugas Berjadual', - opsReportHistory: 'Sejarah Eksport', - opsReportSetting: 'Tetapan', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Ambang {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Ambang', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Ambang Sistem', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', - }, roleName: 'Nama', permission: 'Kebenaran', permissionDuplicate: 'Setiap nod hanya boleh diberikan satu peranan', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 8ef6ccbe9845..da1af5666a66 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -4040,6 +4040,312 @@ const message = { menu: 'Pro', upage: 'Construtor de Sites com IA', proAlert: 'Atualize para Pro para usar este recurso', + opsReport: 'Relatório de Operações', + opsReportOverview: 'Visão geral', + opsReportSystem: 'Execução do host', + opsReportLogin: 'Login e segurança', + opsReportWebsite: 'Proteção de sites', + opsReportResource: 'Recursos de execução', + opsReportCronjob: 'Tarefas agendadas', + opsReportHistory: 'Histórico de exportação', + opsReportSetting: 'Configurações', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Limite {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Limite', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Limite do sistema', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, user: { user: 'Usuário', userInfo: 'Informações do Usuário', @@ -4053,312 +4359,6 @@ const message = { bindNode: 'Vincular Nó', boundUsers: 'Usuários vinculados', role: 'Função', - opsReport: 'Relatório de Operações', - opsReportOverview: 'Visão geral', - opsReportSystem: 'Execução do host', - opsReportLogin: 'Login e segurança', - opsReportWebsite: 'Proteção de sites', - opsReportResource: 'Recursos de execução', - opsReportCronjob: 'Tarefas agendadas', - opsReportHistory: 'Histórico de exportação', - opsReportSetting: 'Configurações', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Limite {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Limite', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Limite do sistema', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', - }, roleName: 'Nome', permission: 'Permissões', permissionDuplicate: 'Apenas uma função pode ser atribuída a cada nó', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 352368905b4d..832ad88dd9c2 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -3895,6 +3895,312 @@ const message = { menu: 'Рro', upage: 'AI Конструктор сайтов', proAlert: 'Обновитесь до Pro, чтобы использовать эту функцию', + opsReport: 'Операционный отчет', + opsReportOverview: 'Обзор', + opsReportSystem: 'Работа хоста', + opsReportLogin: 'Вход и безопасность', + opsReportWebsite: 'Защита сайтов', + opsReportResource: 'Ресурсы выполнения', + opsReportCronjob: 'Плановые задачи', + opsReportHistory: 'История экспорта', + opsReportSetting: 'Настройки', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Порог {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Порог', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Системный порог', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, user: { user: 'Пользователь', userInfo: 'Информация о пользователе', @@ -3908,312 +4214,6 @@ const message = { bindNode: 'Привязать узел', boundUsers: 'Привязанные пользователи', role: 'Роль', - opsReport: 'Операционный отчет', - opsReportOverview: 'Обзор', - opsReportSystem: 'Работа хоста', - opsReportLogin: 'Вход и безопасность', - opsReportWebsite: 'Защита сайтов', - opsReportResource: 'Ресурсы выполнения', - opsReportCronjob: 'Плановые задачи', - opsReportHistory: 'История экспорта', - opsReportSetting: 'Настройки', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Порог {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Порог', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Системный порог', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', - }, roleName: 'Название', permission: 'Разрешения', permissionDuplicate: 'Каждому узлу можно назначить только одну роль', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 8361e6e0132f..d2ab26d65277 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -3895,6 +3895,312 @@ const message = { menu: 'Pro', upage: 'AI Web Sitesi Oluşturucu', proAlert: 'Bu özelliği kullanmak için Proya yükseltin', + opsReport: 'Operasyon Raporu', + opsReportOverview: 'Genel Bakış', + opsReportSystem: 'Ana Makine Çalışması', + opsReportLogin: 'Giriş ve Güvenlik', + opsReportWebsite: 'Web Sitesi Koruması', + opsReportResource: 'Çalışma Kaynakları', + opsReportCronjob: 'Zamanlanmış Görevler', + opsReportHistory: 'Dışa Aktarma Geçmişi', + opsReportSetting: 'Ayarlar', + opsReportPage: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Eşik {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Eşik', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Sistem eşiği', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, user: { user: 'Kullanıcı', userInfo: 'Kullanıcı Bilgileri', @@ -3907,312 +4213,6 @@ const message = { bindNode: 'Düğüm Bağla', boundUsers: 'Bağlı Kullanıcılar', role: 'Rol', - opsReport: 'Operasyon Raporu', - opsReportOverview: 'Genel Bakış', - opsReportSystem: 'Ana Makine Çalışması', - opsReportLogin: 'Giriş ve Güvenlik', - opsReportWebsite: 'Web Sitesi Koruması', - opsReportResource: 'Çalışma Kaynakları', - opsReportCronjob: 'Zamanlanmış Görevler', - opsReportHistory: 'Dışa Aktarma Geçmişi', - opsReportSetting: 'Ayarlar', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Eşik {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Eşik', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Sistem eşiği', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', - }, roleName: 'Ad', permission: 'İzinler', permissionDuplicate: 'Her düğüme yalnızca bir rol atanabilir', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 458eb9423aa2..d0b94b9b587c 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -3542,6 +3542,311 @@ const message = { menu: '進階功能', upage: 'AI 建站', proAlert: '升級專業版以使用此功能', + opsReport: '運維報表', + opsReportOverview: '概覽', + opsReportSystem: '主機運行', + opsReportLogin: '登入與安全配置', + opsReportWebsite: '網站防護', + opsReportResource: '運行資源', + opsReportCronjob: '計劃任務', + opsReportHistory: '匯出歷史', + opsReportSetting: '設置', + opsReportPage: { + enterprise: '企業版', + scoreMeta: '扣分 {0} 分 · 風險 {1} 項', + hostAddress: '主機地址', + panelVersion: '1Panel 版本', + cpuCores: '實體核心', + coreUnit: '{0} 核', + memoryTotal: '記憶體總量', + reportDate: '報表日期', + serverSecurityOverview: '伺服器安全運營概覽', + securityScore: '安全評分', + overviewSummary: '當前安全等級為 {0},合計扣分 {1} 分,識別到 {2} 個風險項,覆蓋 {3} 個檢查對象。', + riskDistribution: '風險分佈', + totalDeducted: '合計扣分', + noRiskDeducted: '未觸發扣分', + scoreTrend: '評分趨勢', + scoreLevelSafe: '安全', + scoreLevelAttention: '需關注', + scoreLevelMediumRisk: '中風險', + scoreLevelHighRisk: '高風險', + scoreCategoryHost: '主機資源', + scoreCategoryLogin: '登入安全', + scoreCategoryWebsite: '網站與憑證', + scoreCategoryCronjob: '計劃任務', + scoreCategoryResource: '執行資源', + scoreDiskHigh: '磁碟 {0} 使用率 {1}%', + scoreDiskMedium: '磁碟 {0} 使用率 {1}%', + scoreResourceHigh: '{0} 當前使用率 {1}%', + scoreResourceMedium: '{0} 當前使用率 {1}%', + scoreLoadMedium: '負載當前值 {0}', + scoreMonitorDisabled: '主機監控未開啟', + scorePanelLoginFailedHigh: '1Panel 登入失敗 {0} 次', + scorePanelLoginFailedMedium: '1Panel 登入失敗 {0} 次', + scoreSSHLoginFailedHigh: 'SSH 登入失敗 {0} 次', + scoreSSHLoginFailedMedium: 'SSH 登入失敗 {0} 次', + scoreMFADisabled: 'MFA 未開啟', + scoreAllowIPsOpen: '授權 IP 未配置或範圍過大', + scorePasswordExpired: '面板密碼已過期', + scorePasswordExpiring: '面板密碼剩餘 {0} 天到期', + scorePanelHTTPSDisabled: '面板 HTTPS 未啟用', + scoreSSHRootLogin: 'SSH 允許 Root 登入', + scoreSSHPasswordAuth: 'SSH 開啟密碼認證且未啟用金鑰認證', + scoreSSLHigh: '{0} 憑證剩餘 {1} 天', + scoreSSLMedium: '{0} 憑證剩餘 {1} 天', + scoreWebsiteExpire: '{0} 網站剩餘 {1} 天到期', + scoreWebsiteHTTP: '{0} 未啟用 HTTPS', + scoreWebsiteStopped: '{0} 狀態異常', + scoreWebsiteMonitorUnavailable: '網站監控偵測到不可用站點', + scoreWebsiteMonitorAvailability: '網站監控可用率 {0}% 低於閾值', + scoreWafDisabled: 'WAF 未開啟,網站未納入防護', + scoreWafHighRiskHit: 'WAF 統計週期內命中 {0} 條風險規則', + scoreCronjobFailed: '近 7 天存在 {0} 條計劃任務失敗記錄', + scoreAppFailed: '{0} 應用執行異常', + scoreAppStopped: '{0} 應用已停止', + scoreContainerHigh: '{0} 容器狀態異常', + scoreContainerExited: '{0} 容器已停止', + scoreContainerResource: '{0} 容器資源使用率過高', + attentionItems: '待關注項', + attentionAssets: '待關注資產', + riskItems: '風險項', + object: '對象', + description: '說明', + itemUnit: '項', + recordUnit: '條', + certUnit: '張', + containerUnit: '個', + loginFailed: '登入失敗', + sslExpire: '憑證到期', + abnormalContainer: '異常容器', + statAttentionDesc: '當前合計扣分 {0} 分', + statLoginDesc: '面板 {0} 條 · SSH {1} 條', + statSslDesc: '共檢查 {0} 張憑證', + statContainerDesc: '共檢查 {0} 個容器', + assetHostDesc: '磁碟最高使用率 {0}%', + assetWebsiteDesc: '{0} 張憑證即將到期,{1} 個網站狀態異常', + assetResourceDesc: '{0} 個應用異常,{1} 個應用已停止,{2} 個容器異常', + assetCronjobDesc: '近 7 天 {0} 條失敗記錄,{1} 個任務未啟用', + app: '應用', + website: '網站', + websiteSsl: '網站 / 憑證', + cronjob: '計劃任務', + container: '容器', + sslCertificate: 'SSL 憑證', + loginSecurity: '登入安全', + panelLogin: '1Panel 登入', + sshLogin: 'SSH 登入', + failedRecord: '失敗記錄', + expiredDays: '已過期 {0} 天', + remainingDays: '{0} · 剩餘 {1} 天', + enabled: '已開啟', + disabled: '未開啟', + exportRecordFailed: '儲存匯出記錄失敗', + hostInfo: '主機資訊', + hostname: '主機名', + osVersion: '系統版本', + kernelVersion: '核心版本', + arch: '架構', + uptime: '執行時間', + diskUsage: '磁碟使用', + mountPoint: '掛載點', + device: '裝置', + capacity: '容量', + used: '已用', + usageRate: '使用率', + memory: '記憶體', + load: '負載', + maxDiskUsage: '磁碟最高使用率', + panelLoginSecurity: '1Panel 登入安全配置', + sshSecurity: 'Linux 伺服器 SSH 安全配置', + panelFailedRecords: '1Panel 登入失敗記錄', + sshFailedRecords: 'SSH 登入失敗記錄', + location: '歸屬地', + configItem: '配置項', + currentValue: '當前值', + securityEntrance: '安全入口', + configured: '已配置', + notConfigured: '未配置', + normal: '正常', + needAttention: '需關注', + allowIPs: '授權 IP', + restricted: '已限制', + unrestricted: '未限制', + bindDomain: '綁定網域', + panelHTTPS: '面板 HTTPS', + passwordComplexity: '密碼複雜度', + sshService: 'SSH 服務', + running: '執行中', + notRunning: '未執行', + listenPort: '監聽埠', + read: '已讀取', + rootLogin: 'Root 登入', + passwordAuth: '密碼認證', + keyAuth: '金鑰認證', + panelLoginFailed: '1Panel 登入失敗', + sshLoginFailed: 'SSH 登入失敗', + panelSecurityItems: '面板安全項', + sshSecurityItems: 'SSH 安全項', + websiteOverview: '網站概覽', + primaryDomain: '主網域', + expireTime: '到期時間', + domain: '網域', + issuer: '頒發機構', + autoRenew: '自動續簽', + websiteCount: '網站數量', + httpsWebsite: 'HTTPS 網站', + certCount: '憑證數量', + websiteExpire: '網站到期', + database: '資料庫', + remoteDatabase: '遠端資料庫', + address: '地址', + containerResourceUsage: '容器資源佔用', + spaceUsage: '佔用空間', + reclaimable: '可回收空間', + containerReclaimable: '容器可回收', + image: '映像', + volume: '資料卷', + buildCache: '建構快取', + alert: '告警', + alertConfigured: '已配置告警', + failedExecutionRecords: '失敗執行記錄', + taskID: '任務 ID', + executeTime: '執行時間', + backupTasks: '備份類任務', + systemMetrics: '執行指標', + cpu: 'CPU', + thresholdPercent: '閾值 {0}%', + loadAverage: '1 / 5 / 15 分鐘負載:{0} / {1} / {2}', + sourceMount: '掛載點 {0}', + storageUsage: '空間佔用', + localDisk: '本機磁碟', + highUsagePeriods: '高負載時段', + timeRange: '時間範圍', + threshold: '閾值', + duration: '持續時間', + peak: '峰值', + scoring: '計分', + counted: '計入', + notCounted: '未計入', + dataSource: '資料來源', + noHighUsagePeriod: '暫無高負載時段', + monitorDisabledOrNoData: '主機監控未啟用或暫無監控資料', + to: '至', + hoursShort: '{0} 小時', + minutesShort: '{0} 分鐘', + websiteStatus: '網站狀態', + sslRisk: '憑證風險', + sslExpiring: '憑證臨期', + includedInReport: '已納入報表', + needRenewal: '建議續簽', + fromExpireInfo: '來自到期資訊', + runningWebsite: '執行中網站', + fromWebsiteStatus: '來自網站列表狀態', + stoppedWebsite: '已停止網站', + confirmStoppedWebsite: '確認是否符合預期', + expiringWebsite: '快要過期網站', + expiringSoon: '即將到期', + none: '暫無', + noSslRisk: '暫無需處理憑證', + websiteProtection: 'WAF 與網站監控', + websiteMonitor: '網站監控', + waf: 'WAF', + siteAvailability: '站點可用率', + monitoredSites: '監控站點', + requestCount: '請求數', + abnormalSites: '異常站點', + count5xxSource: '按 5xx 請求統計', + wafIntercept: 'WAF 攔截', + highRiskHit: '高危命中', + websiteMonitorDisabledOrNoData: '網站監控未啟用或暫無監控資料', + wafDisabledOrNoData: 'WAF 未啟用或暫無攔截資料', + noWafData: '暫無 WAF 攔截資料', + sourceIP: '來源 IP', + hitCount: '命中次數', + level: '等級', + attackType: '攻擊類型', + requestRatio: '請求佔比', + installed: '已安裝', + normalRunning: '正常執行', + failedStart: '啟動失敗', + manualStopped: '手動停止', + failed: '失敗', + success: '成功', + canUpdate: '可升級', + listSeparator: '、', + containerCount: '容器數量', + stopped: '停止', + abnormal: '異常', + abnormalContainers: '異常容器', + resourceUsage: '資源使用', + exposedContainerPorts: '暴露埠', + portMapping: '埠映射', + risk: '風險', + noAbnormalContainer: '暫無異常容器', + noExposedContainer: '未檢測到暴露埠', + publicExpose: '公網暴露', + privateExpose: '內網映射', + executionRecords: '執行記錄', + successRate: '成功率', + failedJobs: '失敗任務', + recentRecoveryPoint: '最近恢復點', + remoteCoverage: '遠端覆蓋', + recent7Days: '近 7 天', + taskTypeStats: '任務類型統計', + total: '總計', + taskTypeDesc: '已啟用 {0} 個,未啟用 {1} 個', + failedOrAttentionTasks: '失敗或需關注任務', + execution: '執行情況', + latestExecution: '最近執行', + remoteBackup: '遠端備份', + localOnly: '僅本機', + covered: '已覆蓋', + noAttentionCronjob: '暫無失敗或需關注的計劃任務', + generationRule: '生成規則', + scheduleDaily: '每天', + scheduleDailyDesc: '每天 09:00 生成近 24 小時報表', + scheduleWeekly: '每週', + scheduleWeeklyDesc: '每週一 09:00 生成近 7 天報表', + scheduleMonthly: '每月', + scheduleMonthlyDesc: '每月 1 日 09:00 生成上月報表', + scheduleCurrentDaily: '每天 09:00 生成近 24 小時報表 · 下次 {0}', + scheduleCurrentWeekly: '每週一 09:00 生成近 7 天報表 · 下次 {0}', + scheduleCurrentMonthly: '每月 1 日 09:00 生成上月報表 · 下次 {0}', + notificationMethod: '通知方式', + channel: '通道', + receiver: '接收對象', + systemThreshold: '系統閾值', + metric: '指標', + currentRule: '當前規則', + hostMonitor: '主機監控', + monitorInterval: '監控間隔', + exportSettings: '匯出設定', + defaultFormat: '預設格式', + savePath: '儲存目錄', + savePathRequired: '請設定報表儲存目錄', + generateNow: '立即生成', + generateSuccess: '已生成報表檔案:{0}', + generateFailed: '生成報表失敗', + enabledStatus: '已啟用', + disabledStatus: '已停用', + thresholdRule: '閾值 {0},連續 {1} 次觸發', + hours: '{0} 小時', + minutes: '{0} 分鐘', + seconds: '{0} 秒', + totalExports: '匯出總數', + successExports: '成功匯出', + failedExports: '失敗匯出', + reportName: '報表名稱', + exportFormat: '匯出格式', + operator: '操作人', + triggerType: '觸發方式', + filePath: '檔案路徑', + manualExport: '手動', + scheduledExport: '定時', + exportResult: '匯出結果', + exportDetail: '匯出說明', + }, user: { user: '使用者', userInfo: '使用者資訊', @@ -3553,311 +3858,6 @@ const message = { bindNode: '綁定節點', boundUsers: '綁定使用者', role: '角色', - opsReport: '運維報表', - opsReportOverview: '概覽', - opsReportSystem: '主機運行', - opsReportLogin: '登入與安全配置', - opsReportWebsite: '網站防護', - opsReportResource: '運行資源', - opsReportCronjob: '計劃任務', - opsReportHistory: '匯出歷史', - opsReportSetting: '設置', - opsReportPage: { - enterprise: '企業版', - scoreMeta: '扣分 {0} 分 · 風險 {1} 項', - hostAddress: '主機地址', - panelVersion: '1Panel 版本', - cpuCores: '實體核心', - coreUnit: '{0} 核', - memoryTotal: '記憶體總量', - reportDate: '報表日期', - serverSecurityOverview: '伺服器安全運營概覽', - securityScore: '安全評分', - overviewSummary: '當前安全等級為 {0},合計扣分 {1} 分,識別到 {2} 個風險項,覆蓋 {3} 個檢查對象。', - riskDistribution: '風險分佈', - totalDeducted: '合計扣分', - noRiskDeducted: '未觸發扣分', - scoreTrend: '評分趨勢', - scoreLevelSafe: '安全', - scoreLevelAttention: '需關注', - scoreLevelMediumRisk: '中風險', - scoreLevelHighRisk: '高風險', - scoreCategoryHost: '主機資源', - scoreCategoryLogin: '登入安全', - scoreCategoryWebsite: '網站與憑證', - scoreCategoryCronjob: '計劃任務', - scoreCategoryResource: '執行資源', - scoreDiskHigh: '磁碟 {0} 使用率 {1}%', - scoreDiskMedium: '磁碟 {0} 使用率 {1}%', - scoreResourceHigh: '{0} 當前使用率 {1}%', - scoreResourceMedium: '{0} 當前使用率 {1}%', - scoreLoadMedium: '負載當前值 {0}', - scoreMonitorDisabled: '主機監控未開啟', - scorePanelLoginFailedHigh: '1Panel 登入失敗 {0} 次', - scorePanelLoginFailedMedium: '1Panel 登入失敗 {0} 次', - scoreSSHLoginFailedHigh: 'SSH 登入失敗 {0} 次', - scoreSSHLoginFailedMedium: 'SSH 登入失敗 {0} 次', - scoreMFADisabled: 'MFA 未開啟', - scoreAllowIPsOpen: '授權 IP 未配置或範圍過大', - scorePasswordExpired: '面板密碼已過期', - scorePasswordExpiring: '面板密碼剩餘 {0} 天到期', - scorePanelHTTPSDisabled: '面板 HTTPS 未啟用', - scoreSSHRootLogin: 'SSH 允許 Root 登入', - scoreSSHPasswordAuth: 'SSH 開啟密碼認證且未啟用金鑰認證', - scoreSSLHigh: '{0} 憑證剩餘 {1} 天', - scoreSSLMedium: '{0} 憑證剩餘 {1} 天', - scoreWebsiteExpire: '{0} 網站剩餘 {1} 天到期', - scoreWebsiteHTTP: '{0} 未啟用 HTTPS', - scoreWebsiteStopped: '{0} 狀態異常', - scoreWebsiteMonitorUnavailable: '網站監控偵測到不可用站點', - scoreWebsiteMonitorAvailability: '網站監控可用率 {0}% 低於閾值', - scoreWafDisabled: 'WAF 未開啟,網站未納入防護', - scoreWafHighRiskHit: 'WAF 統計週期內命中 {0} 條風險規則', - scoreCronjobFailed: '近 7 天存在 {0} 條計劃任務失敗記錄', - scoreAppFailed: '{0} 應用執行異常', - scoreAppStopped: '{0} 應用已停止', - scoreContainerHigh: '{0} 容器狀態異常', - scoreContainerExited: '{0} 容器已停止', - scoreContainerResource: '{0} 容器資源使用率過高', - attentionItems: '待關注項', - attentionAssets: '待關注資產', - riskItems: '風險項', - object: '對象', - description: '說明', - itemUnit: '項', - recordUnit: '條', - certUnit: '張', - containerUnit: '個', - loginFailed: '登入失敗', - sslExpire: '憑證到期', - abnormalContainer: '異常容器', - statAttentionDesc: '當前合計扣分 {0} 分', - statLoginDesc: '面板 {0} 條 · SSH {1} 條', - statSslDesc: '共檢查 {0} 張憑證', - statContainerDesc: '共檢查 {0} 個容器', - assetHostDesc: '磁碟最高使用率 {0}%', - assetWebsiteDesc: '{0} 張憑證即將到期,{1} 個網站狀態異常', - assetResourceDesc: '{0} 個應用異常,{1} 個應用已停止,{2} 個容器異常', - assetCronjobDesc: '近 7 天 {0} 條失敗記錄,{1} 個任務未啟用', - app: '應用', - website: '網站', - websiteSsl: '網站 / 憑證', - cronjob: '計劃任務', - container: '容器', - sslCertificate: 'SSL 憑證', - loginSecurity: '登入安全', - panelLogin: '1Panel 登入', - sshLogin: 'SSH 登入', - failedRecord: '失敗記錄', - expiredDays: '已過期 {0} 天', - remainingDays: '{0} · 剩餘 {1} 天', - enabled: '已開啟', - disabled: '未開啟', - exportRecordFailed: '儲存匯出記錄失敗', - hostInfo: '主機資訊', - hostname: '主機名', - osVersion: '系統版本', - kernelVersion: '核心版本', - arch: '架構', - uptime: '執行時間', - diskUsage: '磁碟使用', - mountPoint: '掛載點', - device: '裝置', - capacity: '容量', - used: '已用', - usageRate: '使用率', - memory: '記憶體', - load: '負載', - maxDiskUsage: '磁碟最高使用率', - panelLoginSecurity: '1Panel 登入安全配置', - sshSecurity: 'Linux 伺服器 SSH 安全配置', - panelFailedRecords: '1Panel 登入失敗記錄', - sshFailedRecords: 'SSH 登入失敗記錄', - location: '歸屬地', - configItem: '配置項', - currentValue: '當前值', - securityEntrance: '安全入口', - configured: '已配置', - notConfigured: '未配置', - normal: '正常', - needAttention: '需關注', - allowIPs: '授權 IP', - restricted: '已限制', - unrestricted: '未限制', - bindDomain: '綁定網域', - panelHTTPS: '面板 HTTPS', - passwordComplexity: '密碼複雜度', - sshService: 'SSH 服務', - running: '執行中', - notRunning: '未執行', - listenPort: '監聽埠', - read: '已讀取', - rootLogin: 'Root 登入', - passwordAuth: '密碼認證', - keyAuth: '金鑰認證', - panelLoginFailed: '1Panel 登入失敗', - sshLoginFailed: 'SSH 登入失敗', - panelSecurityItems: '面板安全項', - sshSecurityItems: 'SSH 安全項', - websiteOverview: '網站概覽', - primaryDomain: '主網域', - expireTime: '到期時間', - domain: '網域', - issuer: '頒發機構', - autoRenew: '自動續簽', - websiteCount: '網站數量', - httpsWebsite: 'HTTPS 網站', - certCount: '憑證數量', - websiteExpire: '網站到期', - database: '資料庫', - remoteDatabase: '遠端資料庫', - address: '地址', - containerResourceUsage: '容器資源佔用', - spaceUsage: '佔用空間', - reclaimable: '可回收空間', - containerReclaimable: '容器可回收', - image: '映像', - volume: '資料卷', - buildCache: '建構快取', - alert: '告警', - alertConfigured: '已配置告警', - failedExecutionRecords: '失敗執行記錄', - taskID: '任務 ID', - executeTime: '執行時間', - backupTasks: '備份類任務', - systemMetrics: '執行指標', - cpu: 'CPU', - thresholdPercent: '閾值 {0}%', - loadAverage: '1 / 5 / 15 分鐘負載:{0} / {1} / {2}', - sourceMount: '掛載點 {0}', - storageUsage: '空間佔用', - localDisk: '本機磁碟', - highUsagePeriods: '高負載時段', - timeRange: '時間範圍', - threshold: '閾值', - duration: '持續時間', - peak: '峰值', - scoring: '計分', - counted: '計入', - notCounted: '未計入', - dataSource: '資料來源', - noHighUsagePeriod: '暫無高負載時段', - monitorDisabledOrNoData: '主機監控未啟用或暫無監控資料', - to: '至', - hoursShort: '{0} 小時', - minutesShort: '{0} 分鐘', - websiteStatus: '網站狀態', - sslRisk: '憑證風險', - sslExpiring: '憑證臨期', - includedInReport: '已納入報表', - needRenewal: '建議續簽', - fromExpireInfo: '來自到期資訊', - runningWebsite: '執行中網站', - fromWebsiteStatus: '來自網站列表狀態', - stoppedWebsite: '已停止網站', - confirmStoppedWebsite: '確認是否符合預期', - expiringWebsite: '快要過期網站', - expiringSoon: '即將到期', - none: '暫無', - noSslRisk: '暫無需處理憑證', - websiteProtection: 'WAF 與網站監控', - websiteMonitor: '網站監控', - waf: 'WAF', - siteAvailability: '站點可用率', - monitoredSites: '監控站點', - requestCount: '請求數', - abnormalSites: '異常站點', - count5xxSource: '按 5xx 請求統計', - wafIntercept: 'WAF 攔截', - highRiskHit: '高危命中', - websiteMonitorDisabledOrNoData: '網站監控未啟用或暫無監控資料', - wafDisabledOrNoData: 'WAF 未啟用或暫無攔截資料', - noWafData: '暫無 WAF 攔截資料', - sourceIP: '來源 IP', - hitCount: '命中次數', - level: '等級', - attackType: '攻擊類型', - requestRatio: '請求佔比', - installed: '已安裝', - normalRunning: '正常執行', - failedStart: '啟動失敗', - manualStopped: '手動停止', - failed: '失敗', - success: '成功', - canUpdate: '可升級', - listSeparator: '、', - containerCount: '容器數量', - stopped: '停止', - abnormal: '異常', - abnormalContainers: '異常容器', - resourceUsage: '資源使用', - exposedContainerPorts: '暴露埠', - portMapping: '埠映射', - risk: '風險', - noAbnormalContainer: '暫無異常容器', - noExposedContainer: '未檢測到暴露埠', - publicExpose: '公網暴露', - privateExpose: '內網映射', - executionRecords: '執行記錄', - successRate: '成功率', - failedJobs: '失敗任務', - recentRecoveryPoint: '最近恢復點', - remoteCoverage: '遠端覆蓋', - recent7Days: '近 7 天', - taskTypeStats: '任務類型統計', - total: '總計', - taskTypeDesc: '已啟用 {0} 個,未啟用 {1} 個', - failedOrAttentionTasks: '失敗或需關注任務', - execution: '執行情況', - latestExecution: '最近執行', - remoteBackup: '遠端備份', - localOnly: '僅本機', - covered: '已覆蓋', - noAttentionCronjob: '暫無失敗或需關注的計劃任務', - generationRule: '生成規則', - scheduleDaily: '每天', - scheduleDailyDesc: '每天 09:00 生成近 24 小時報表', - scheduleWeekly: '每週', - scheduleWeeklyDesc: '每週一 09:00 生成近 7 天報表', - scheduleMonthly: '每月', - scheduleMonthlyDesc: '每月 1 日 09:00 生成上月報表', - scheduleCurrentDaily: '每天 09:00 生成近 24 小時報表 · 下次 {0}', - scheduleCurrentWeekly: '每週一 09:00 生成近 7 天報表 · 下次 {0}', - scheduleCurrentMonthly: '每月 1 日 09:00 生成上月報表 · 下次 {0}', - notificationMethod: '通知方式', - channel: '通道', - receiver: '接收對象', - systemThreshold: '系統閾值', - metric: '指標', - currentRule: '當前規則', - hostMonitor: '主機監控', - monitorInterval: '監控間隔', - exportSettings: '匯出設定', - defaultFormat: '預設格式', - savePath: '儲存目錄', - savePathRequired: '請設定報表儲存目錄', - generateNow: '立即生成', - generateSuccess: '已生成報表檔案:{0}', - generateFailed: '生成報表失敗', - enabledStatus: '已啟用', - disabledStatus: '已停用', - thresholdRule: '閾值 {0},連續 {1} 次觸發', - hours: '{0} 小時', - minutes: '{0} 分鐘', - seconds: '{0} 秒', - totalExports: '匯出總數', - successExports: '成功匯出', - failedExports: '失敗匯出', - reportName: '報表名稱', - exportFormat: '匯出格式', - operator: '操作人', - triggerType: '觸發方式', - filePath: '檔案路徑', - manualExport: '手動', - scheduledExport: '定時', - exportResult: '匯出結果', - exportDetail: '匯出說明', - }, roleName: '名稱', permission: '權限', permissionDuplicate: '每個節點只能新增一種角色', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 32ed52750e66..2c806a4ae281 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -4122,6 +4122,311 @@ const message = { appUpgrade: '应用升级', appUpgradeHelper: '有 {0} 个应用需要升级', }, + opsReport: '运维报表', + opsReportOverview: '概览', + opsReportSystem: '主机运行', + opsReportLogin: '登录与安全配置', + opsReportWebsite: '网站防护', + opsReportResource: '运行资源', + opsReportCronjob: '计划任务', + opsReportHistory: '导出历史', + opsReportSetting: '设置', + opsReportPage: { + enterprise: '企业版', + scoreMeta: '扣分 {0} 分 · 风险 {1} 项', + hostAddress: '主机地址', + panelVersion: '1Panel 版本', + cpuCores: '物理核心', + coreUnit: '{0} 核', + memoryTotal: '内存总量', + reportDate: '报表日期', + serverSecurityOverview: '服务器安全运营概览', + securityScore: '安全评分', + overviewSummary: '当前安全等级为 {0},合计扣分 {1} 分,识别到 {2} 个风险项,覆盖 {3} 个检查对象。', + riskDistribution: '风险分布', + totalDeducted: '合计扣分', + noRiskDeducted: '未触发扣分', + scoreTrend: '评分趋势', + scoreLevelSafe: '安全', + scoreLevelAttention: '需关注', + scoreLevelMediumRisk: '中风险', + scoreLevelHighRisk: '高风险', + scoreCategoryHost: '主机资源', + scoreCategoryLogin: '登录安全', + scoreCategoryWebsite: '网站与证书', + scoreCategoryCronjob: '计划任务', + scoreCategoryResource: '运行资源', + scoreDiskHigh: '磁盘 {0} 使用率 {1}%', + scoreDiskMedium: '磁盘 {0} 使用率 {1}%', + scoreResourceHigh: '{0} 当前使用率 {1}%', + scoreResourceMedium: '{0} 当前使用率 {1}%', + scoreLoadMedium: '负载当前值 {0}', + scoreMonitorDisabled: '主机监控未开启', + scorePanelLoginFailedHigh: '1Panel 登录失败 {0} 次', + scorePanelLoginFailedMedium: '1Panel 登录失败 {0} 次', + scoreSSHLoginFailedHigh: 'SSH 登录失败 {0} 次', + scoreSSHLoginFailedMedium: 'SSH 登录失败 {0} 次', + scoreMFADisabled: 'MFA 未开启', + scoreAllowIPsOpen: '授权 IP 未配置或范围过大', + scorePasswordExpired: '面板密码已过期', + scorePasswordExpiring: '面板密码剩余 {0} 天到期', + scorePanelHTTPSDisabled: '面板 HTTPS 未启用', + scoreSSHRootLogin: 'SSH 允许 Root 登录', + scoreSSHPasswordAuth: 'SSH 开启密码认证且未启用密钥认证', + scoreSSLHigh: '{0} 证书剩余 {1} 天', + scoreSSLMedium: '{0} 证书剩余 {1} 天', + scoreWebsiteExpire: '{0} 网站剩余 {1} 天到期', + scoreWebsiteHTTP: '{0} 未启用 HTTPS', + scoreWebsiteStopped: '{0} 状态异常', + scoreWebsiteMonitorUnavailable: '网站监控检测到不可用站点', + scoreWebsiteMonitorAvailability: '网站监控可用率 {0}% 低于阈值', + scoreWafDisabled: 'WAF 未开启,网站未纳入防护', + scoreWafHighRiskHit: 'WAF 统计周期内命中 {0} 条风险规则', + scoreCronjobFailed: '近 7 天存在 {0} 条计划任务失败记录', + scoreAppFailed: '{0} 应用运行异常', + scoreAppStopped: '{0} 应用已停止', + scoreContainerHigh: '{0} 容器状态异常', + scoreContainerExited: '{0} 容器已停止', + scoreContainerResource: '{0} 容器资源使用率过高', + attentionItems: '待关注项', + attentionAssets: '待关注资产', + riskItems: '风险项', + object: '对象', + description: '说明', + itemUnit: '项', + recordUnit: '条', + certUnit: '张', + containerUnit: '个', + loginFailed: '登录失败', + sslExpire: '证书到期', + abnormalContainer: '异常容器', + statAttentionDesc: '当前合计扣分 {0} 分', + statLoginDesc: '面板 {0} 条 · SSH {1} 条', + statSslDesc: '共检查 {0} 张证书', + statContainerDesc: '共检查 {0} 个容器', + assetHostDesc: '磁盘最高使用率 {0}%', + assetWebsiteDesc: '{0} 张证书即将到期,{1} 个网站状态异常', + assetResourceDesc: '{0} 个应用异常,{1} 个应用已停止,{2} 个容器异常', + assetCronjobDesc: '近 7 天 {0} 条失败记录,{1} 个任务未启用', + app: '应用', + website: '网站', + websiteSsl: '网站 / 证书', + cronjob: '计划任务', + container: '容器', + sslCertificate: 'SSL 证书', + loginSecurity: '登录安全', + panelLogin: '1Panel 登录', + sshLogin: 'SSH 登录', + failedRecord: '失败记录', + expiredDays: '已过期 {0} 天', + remainingDays: '{0} · 剩余 {1} 天', + enabled: '已开启', + disabled: '未开启', + exportRecordFailed: '保存导出记录失败', + hostInfo: '主机信息', + hostname: '主机名', + osVersion: '系统版本', + kernelVersion: '内核版本', + arch: '架构', + uptime: '运行时间', + diskUsage: '磁盘使用', + mountPoint: '挂载点', + device: '设备', + capacity: '容量', + used: '已用', + usageRate: '使用率', + memory: '内存', + load: '负载', + maxDiskUsage: '磁盘最高使用率', + panelLoginSecurity: '1Panel 登录安全配置', + sshSecurity: 'Linux 服务器 SSH 安全配置', + panelFailedRecords: '1Panel 登录失败记录', + sshFailedRecords: 'SSH 登录失败记录', + location: '归属地', + configItem: '配置项', + currentValue: '当前值', + securityEntrance: '安全入口', + configured: '已配置', + notConfigured: '未配置', + normal: '正常', + needAttention: '需关注', + allowIPs: '授权 IP', + restricted: '已限制', + unrestricted: '未限制', + bindDomain: '绑定域名', + panelHTTPS: '面板 HTTPS', + passwordComplexity: '密码复杂度', + sshService: 'SSH 服务', + running: '运行中', + notRunning: '未运行', + listenPort: '监听端口', + read: '已读取', + rootLogin: 'Root 登录', + passwordAuth: '密码认证', + keyAuth: '密钥认证', + panelLoginFailed: '1Panel 登录失败', + sshLoginFailed: 'SSH 登录失败', + panelSecurityItems: '面板安全项', + sshSecurityItems: 'SSH 安全项', + websiteOverview: '网站概览', + primaryDomain: '主域名', + expireTime: '到期时间', + domain: '域名', + issuer: '颁发机构', + autoRenew: '自动续签', + websiteCount: '网站数量', + httpsWebsite: 'HTTPS 网站', + certCount: '证书数量', + websiteExpire: '网站到期', + database: '数据库', + remoteDatabase: '远程数据库', + address: '地址', + containerResourceUsage: '容器资源占用', + spaceUsage: '占用空间', + reclaimable: '可回收空间', + containerReclaimable: '容器可回收', + image: '镜像', + volume: '数据卷', + buildCache: '构建缓存', + alert: '告警', + alertConfigured: '已配置告警', + failedExecutionRecords: '失败执行记录', + taskID: '任务 ID', + executeTime: '执行时间', + backupTasks: '备份类任务', + systemMetrics: '运行指标', + cpu: 'CPU', + thresholdPercent: '阈值 {0}%', + loadAverage: '1 / 5 / 15 分钟负载:{0} / {1} / {2}', + sourceMount: '挂载点 {0}', + storageUsage: '空间占用', + localDisk: '本地磁盘', + highUsagePeriods: '高负载时段', + timeRange: '时间范围', + threshold: '阈值', + duration: '持续时间', + peak: '峰值', + scoring: '计分', + counted: '计入', + notCounted: '未计入', + dataSource: '数据来源', + noHighUsagePeriod: '暂无高负载时段', + monitorDisabledOrNoData: '主机监控未启用或暂无监控数据', + to: '至', + hoursShort: '{0} 小时', + minutesShort: '{0} 分钟', + websiteStatus: '网站状态', + sslRisk: '证书风险', + sslExpiring: '证书临期', + includedInReport: '已纳入报表', + needRenewal: '建议续签', + fromExpireInfo: '来自到期信息', + runningWebsite: '运行中网站', + fromWebsiteStatus: '来自网站列表状态', + stoppedWebsite: '已停止网站', + confirmStoppedWebsite: '确认是否符合预期', + expiringWebsite: '快要过期网站', + expiringSoon: '即将到期', + none: '暂无', + noSslRisk: '暂无需处理证书', + websiteProtection: 'WAF 与网站监控', + websiteMonitor: '网站监控', + waf: 'WAF', + siteAvailability: '站点可用率', + monitoredSites: '监控站点', + requestCount: '请求数', + abnormalSites: '异常站点', + count5xxSource: '按 5xx 请求统计', + wafIntercept: 'WAF 拦截', + highRiskHit: '高危命中', + websiteMonitorDisabledOrNoData: '网站监控未启用或暂无监控数据', + wafDisabledOrNoData: 'WAF 未启用或暂无拦截数据', + noWafData: '暂无 WAF 拦截数据', + sourceIP: '来源 IP', + hitCount: '命中次数', + level: '等级', + attackType: '攻击类型', + requestRatio: '请求占比', + installed: '已安装', + normalRunning: '正常运行', + failedStart: '启动失败', + manualStopped: '手动停止', + failed: '失败', + success: '成功', + canUpdate: '可升级', + listSeparator: '、', + containerCount: '容器数量', + stopped: '停止', + abnormal: '异常', + abnormalContainers: '异常容器', + resourceUsage: '资源使用', + exposedContainerPorts: '暴露端口', + portMapping: '端口映射', + risk: '风险', + noAbnormalContainer: '暂无异常容器', + noExposedContainer: '未检测到暴露端口', + publicExpose: '公网暴露', + privateExpose: '内网映射', + executionRecords: '执行记录', + successRate: '成功率', + failedJobs: '失败任务', + recentRecoveryPoint: '最近恢复点', + remoteCoverage: '远程覆盖', + recent7Days: '近 7 天', + taskTypeStats: '任务类型统计', + total: '总计', + taskTypeDesc: '已启用 {0} 个,未启用 {1} 个', + failedOrAttentionTasks: '失败或需关注任务', + execution: '执行情况', + latestExecution: '最近执行', + remoteBackup: '远程备份', + localOnly: '仅本地', + covered: '已覆盖', + noAttentionCronjob: '暂无失败或需关注的计划任务', + generationRule: '生成规则', + scheduleDaily: '每天', + scheduleDailyDesc: '每天 09:00 生成近 24 小时报表', + scheduleWeekly: '每周', + scheduleWeeklyDesc: '每周一 09:00 生成近 7 天报表', + scheduleMonthly: '每月', + scheduleMonthlyDesc: '每月 1 日 09:00 生成上月报表', + scheduleCurrentDaily: '每天 09:00 生成近 24 小时报表 · 下次 {0}', + scheduleCurrentWeekly: '每周一 09:00 生成近 7 天报表 · 下次 {0}', + scheduleCurrentMonthly: '每月 1 日 09:00 生成上月报表 · 下次 {0}', + notificationMethod: '通知方式', + channel: '通道', + receiver: '接收对象', + systemThreshold: '系统阈值', + metric: '指标', + currentRule: '当前规则', + hostMonitor: '主机监控', + monitorInterval: '监控间隔', + exportSettings: '导出设置', + defaultFormat: '默认格式', + savePath: '保存目录', + savePathRequired: '请设置报表保存目录', + generateNow: '立即生成', + generateSuccess: '已生成报表文件:{0}', + generateFailed: '生成报表失败', + enabledStatus: '已启用', + disabledStatus: '已停用', + thresholdRule: '阈值 {0},连续 {1} 次触发', + hours: '{0} 小时', + minutes: '{0} 分钟', + seconds: '{0} 秒', + totalExports: '导出总数', + successExports: '成功导出', + failedExports: '失败导出', + reportName: '报表名称', + exportFormat: '导出格式', + operator: '操作人', + triggerType: '触发方式', + filePath: '文件路径', + manualExport: '手动', + scheduledExport: '定时', + exportResult: '导出结果', + exportDetail: '导出说明', + }, user: { user: '用户', userInfo: '用户信息', @@ -4133,311 +4438,6 @@ const message = { bindNode: '绑定节点', boundUsers: '绑定用户', role: '角色', - opsReport: '运维报表', - opsReportOverview: '概览', - opsReportSystem: '主机运行', - opsReportLogin: '登录与安全配置', - opsReportWebsite: '网站防护', - opsReportResource: '运行资源', - opsReportCronjob: '计划任务', - opsReportHistory: '导出历史', - opsReportSetting: '设置', - opsReportPage: { - enterprise: '企业版', - scoreMeta: '扣分 {0} 分 · 风险 {1} 项', - hostAddress: '主机地址', - panelVersion: '1Panel 版本', - cpuCores: '物理核心', - coreUnit: '{0} 核', - memoryTotal: '内存总量', - reportDate: '报表日期', - serverSecurityOverview: '服务器安全运营概览', - securityScore: '安全评分', - overviewSummary: '当前安全等级为 {0},合计扣分 {1} 分,识别到 {2} 个风险项,覆盖 {3} 个检查对象。', - riskDistribution: '风险分布', - totalDeducted: '合计扣分', - noRiskDeducted: '未触发扣分', - scoreTrend: '评分趋势', - scoreLevelSafe: '安全', - scoreLevelAttention: '需关注', - scoreLevelMediumRisk: '中风险', - scoreLevelHighRisk: '高风险', - scoreCategoryHost: '主机资源', - scoreCategoryLogin: '登录安全', - scoreCategoryWebsite: '网站与证书', - scoreCategoryCronjob: '计划任务', - scoreCategoryResource: '运行资源', - scoreDiskHigh: '磁盘 {0} 使用率 {1}%', - scoreDiskMedium: '磁盘 {0} 使用率 {1}%', - scoreResourceHigh: '{0} 当前使用率 {1}%', - scoreResourceMedium: '{0} 当前使用率 {1}%', - scoreLoadMedium: '负载当前值 {0}', - scoreMonitorDisabled: '主机监控未开启', - scorePanelLoginFailedHigh: '1Panel 登录失败 {0} 次', - scorePanelLoginFailedMedium: '1Panel 登录失败 {0} 次', - scoreSSHLoginFailedHigh: 'SSH 登录失败 {0} 次', - scoreSSHLoginFailedMedium: 'SSH 登录失败 {0} 次', - scoreMFADisabled: 'MFA 未开启', - scoreAllowIPsOpen: '授权 IP 未配置或范围过大', - scorePasswordExpired: '面板密码已过期', - scorePasswordExpiring: '面板密码剩余 {0} 天到期', - scorePanelHTTPSDisabled: '面板 HTTPS 未启用', - scoreSSHRootLogin: 'SSH 允许 Root 登录', - scoreSSHPasswordAuth: 'SSH 开启密码认证且未启用密钥认证', - scoreSSLHigh: '{0} 证书剩余 {1} 天', - scoreSSLMedium: '{0} 证书剩余 {1} 天', - scoreWebsiteExpire: '{0} 网站剩余 {1} 天到期', - scoreWebsiteHTTP: '{0} 未启用 HTTPS', - scoreWebsiteStopped: '{0} 状态异常', - scoreWebsiteMonitorUnavailable: '网站监控检测到不可用站点', - scoreWebsiteMonitorAvailability: '网站监控可用率 {0}% 低于阈值', - scoreWafDisabled: 'WAF 未开启,网站未纳入防护', - scoreWafHighRiskHit: 'WAF 统计周期内命中 {0} 条风险规则', - scoreCronjobFailed: '近 7 天存在 {0} 条计划任务失败记录', - scoreAppFailed: '{0} 应用运行异常', - scoreAppStopped: '{0} 应用已停止', - scoreContainerHigh: '{0} 容器状态异常', - scoreContainerExited: '{0} 容器已停止', - scoreContainerResource: '{0} 容器资源使用率过高', - attentionItems: '待关注项', - attentionAssets: '待关注资产', - riskItems: '风险项', - object: '对象', - description: '说明', - itemUnit: '项', - recordUnit: '条', - certUnit: '张', - containerUnit: '个', - loginFailed: '登录失败', - sslExpire: '证书到期', - abnormalContainer: '异常容器', - statAttentionDesc: '当前合计扣分 {0} 分', - statLoginDesc: '面板 {0} 条 · SSH {1} 条', - statSslDesc: '共检查 {0} 张证书', - statContainerDesc: '共检查 {0} 个容器', - assetHostDesc: '磁盘最高使用率 {0}%', - assetWebsiteDesc: '{0} 张证书即将到期,{1} 个网站状态异常', - assetResourceDesc: '{0} 个应用异常,{1} 个应用已停止,{2} 个容器异常', - assetCronjobDesc: '近 7 天 {0} 条失败记录,{1} 个任务未启用', - app: '应用', - website: '网站', - websiteSsl: '网站 / 证书', - cronjob: '计划任务', - container: '容器', - sslCertificate: 'SSL 证书', - loginSecurity: '登录安全', - panelLogin: '1Panel 登录', - sshLogin: 'SSH 登录', - failedRecord: '失败记录', - expiredDays: '已过期 {0} 天', - remainingDays: '{0} · 剩余 {1} 天', - enabled: '已开启', - disabled: '未开启', - exportRecordFailed: '保存导出记录失败', - hostInfo: '主机信息', - hostname: '主机名', - osVersion: '系统版本', - kernelVersion: '内核版本', - arch: '架构', - uptime: '运行时间', - diskUsage: '磁盘使用', - mountPoint: '挂载点', - device: '设备', - capacity: '容量', - used: '已用', - usageRate: '使用率', - memory: '内存', - load: '负载', - maxDiskUsage: '磁盘最高使用率', - panelLoginSecurity: '1Panel 登录安全配置', - sshSecurity: 'Linux 服务器 SSH 安全配置', - panelFailedRecords: '1Panel 登录失败记录', - sshFailedRecords: 'SSH 登录失败记录', - location: '归属地', - configItem: '配置项', - currentValue: '当前值', - securityEntrance: '安全入口', - configured: '已配置', - notConfigured: '未配置', - normal: '正常', - needAttention: '需关注', - allowIPs: '授权 IP', - restricted: '已限制', - unrestricted: '未限制', - bindDomain: '绑定域名', - panelHTTPS: '面板 HTTPS', - passwordComplexity: '密码复杂度', - sshService: 'SSH 服务', - running: '运行中', - notRunning: '未运行', - listenPort: '监听端口', - read: '已读取', - rootLogin: 'Root 登录', - passwordAuth: '密码认证', - keyAuth: '密钥认证', - panelLoginFailed: '1Panel 登录失败', - sshLoginFailed: 'SSH 登录失败', - panelSecurityItems: '面板安全项', - sshSecurityItems: 'SSH 安全项', - websiteOverview: '网站概览', - primaryDomain: '主域名', - expireTime: '到期时间', - domain: '域名', - issuer: '颁发机构', - autoRenew: '自动续签', - websiteCount: '网站数量', - httpsWebsite: 'HTTPS 网站', - certCount: '证书数量', - websiteExpire: '网站到期', - database: '数据库', - remoteDatabase: '远程数据库', - address: '地址', - containerResourceUsage: '容器资源占用', - spaceUsage: '占用空间', - reclaimable: '可回收空间', - containerReclaimable: '容器可回收', - image: '镜像', - volume: '数据卷', - buildCache: '构建缓存', - alert: '告警', - alertConfigured: '已配置告警', - failedExecutionRecords: '失败执行记录', - taskID: '任务 ID', - executeTime: '执行时间', - backupTasks: '备份类任务', - systemMetrics: '运行指标', - cpu: 'CPU', - thresholdPercent: '阈值 {0}%', - loadAverage: '1 / 5 / 15 分钟负载:{0} / {1} / {2}', - sourceMount: '挂载点 {0}', - storageUsage: '空间占用', - localDisk: '本地磁盘', - highUsagePeriods: '高负载时段', - timeRange: '时间范围', - threshold: '阈值', - duration: '持续时间', - peak: '峰值', - scoring: '计分', - counted: '计入', - notCounted: '未计入', - dataSource: '数据来源', - noHighUsagePeriod: '暂无高负载时段', - monitorDisabledOrNoData: '主机监控未启用或暂无监控数据', - to: '至', - hoursShort: '{0} 小时', - minutesShort: '{0} 分钟', - websiteStatus: '网站状态', - sslRisk: '证书风险', - sslExpiring: '证书临期', - includedInReport: '已纳入报表', - needRenewal: '建议续签', - fromExpireInfo: '来自到期信息', - runningWebsite: '运行中网站', - fromWebsiteStatus: '来自网站列表状态', - stoppedWebsite: '已停止网站', - confirmStoppedWebsite: '确认是否符合预期', - expiringWebsite: '快要过期网站', - expiringSoon: '即将到期', - none: '暂无', - noSslRisk: '暂无需处理证书', - websiteProtection: 'WAF 与网站监控', - websiteMonitor: '网站监控', - waf: 'WAF', - siteAvailability: '站点可用率', - monitoredSites: '监控站点', - requestCount: '请求数', - abnormalSites: '异常站点', - count5xxSource: '按 5xx 请求统计', - wafIntercept: 'WAF 拦截', - highRiskHit: '高危命中', - websiteMonitorDisabledOrNoData: '网站监控未启用或暂无监控数据', - wafDisabledOrNoData: 'WAF 未启用或暂无拦截数据', - noWafData: '暂无 WAF 拦截数据', - sourceIP: '来源 IP', - hitCount: '命中次数', - level: '等级', - attackType: '攻击类型', - requestRatio: '请求占比', - installed: '已安装', - normalRunning: '正常运行', - failedStart: '启动失败', - manualStopped: '手动停止', - failed: '失败', - success: '成功', - canUpdate: '可升级', - listSeparator: '、', - containerCount: '容器数量', - stopped: '停止', - abnormal: '异常', - abnormalContainers: '异常容器', - resourceUsage: '资源使用', - exposedContainerPorts: '暴露端口', - portMapping: '端口映射', - risk: '风险', - noAbnormalContainer: '暂无异常容器', - noExposedContainer: '未检测到暴露端口', - publicExpose: '公网暴露', - privateExpose: '内网映射', - executionRecords: '执行记录', - successRate: '成功率', - failedJobs: '失败任务', - recentRecoveryPoint: '最近恢复点', - remoteCoverage: '远程覆盖', - recent7Days: '近 7 天', - taskTypeStats: '任务类型统计', - total: '总计', - taskTypeDesc: '已启用 {0} 个,未启用 {1} 个', - failedOrAttentionTasks: '失败或需关注任务', - execution: '执行情况', - latestExecution: '最近执行', - remoteBackup: '远程备份', - localOnly: '仅本地', - covered: '已覆盖', - noAttentionCronjob: '暂无失败或需关注的计划任务', - generationRule: '生成规则', - scheduleDaily: '每天', - scheduleDailyDesc: '每天 09:00 生成近 24 小时报表', - scheduleWeekly: '每周', - scheduleWeeklyDesc: '每周一 09:00 生成近 7 天报表', - scheduleMonthly: '每月', - scheduleMonthlyDesc: '每月 1 日 09:00 生成上月报表', - scheduleCurrentDaily: '每天 09:00 生成近 24 小时报表 · 下次 {0}', - scheduleCurrentWeekly: '每周一 09:00 生成近 7 天报表 · 下次 {0}', - scheduleCurrentMonthly: '每月 1 日 09:00 生成上月报表 · 下次 {0}', - notificationMethod: '通知方式', - channel: '通道', - receiver: '接收对象', - systemThreshold: '系统阈值', - metric: '指标', - currentRule: '当前规则', - hostMonitor: '主机监控', - monitorInterval: '监控间隔', - exportSettings: '导出设置', - defaultFormat: '默认格式', - savePath: '保存目录', - savePathRequired: '请设置报表保存目录', - generateNow: '立即生成', - generateSuccess: '已生成报表文件:{0}', - generateFailed: '生成报表失败', - enabledStatus: '已启用', - disabledStatus: '已停用', - thresholdRule: '阈值 {0},连续 {1} 次触发', - hours: '{0} 小时', - minutes: '{0} 分钟', - seconds: '{0} 秒', - totalExports: '导出总数', - successExports: '成功导出', - failedExports: '失败导出', - reportName: '报表名称', - exportFormat: '导出格式', - operator: '操作人', - triggerType: '触发方式', - filePath: '文件路径', - manualExport: '手动', - scheduledExport: '定时', - exportResult: '导出结果', - exportDetail: '导出说明', - }, roleName: '名称', permission: '权限', permissionDuplicate: '每个节点只能添加一种角色', From 733cdb51820c3aa71c575d0f17e83eb9f54fd3c0 Mon Sep 17 00:00:00 2001 From: wanghe-fit2cloud Date: Fri, 15 May 2026 18:06:35 +0800 Subject: [PATCH 5/8] chore: remove dashboard permission label --- frontend/src/lang/modules/en.ts | 1 - frontend/src/lang/modules/es-es.ts | 1 - frontend/src/lang/modules/ja.ts | 1 - frontend/src/lang/modules/ko.ts | 1 - frontend/src/lang/modules/ms.ts | 1 - frontend/src/lang/modules/pt-br.ts | 1 - frontend/src/lang/modules/ru.ts | 1 - frontend/src/lang/modules/tr.ts | 1 - frontend/src/lang/modules/zh-Hant.ts | 1 - frontend/src/lang/modules/zh.ts | 1 - 10 files changed, 10 deletions(-) diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 73685c8ccff2..e61fbab1f5a4 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -4135,7 +4135,6 @@ const message = { 'Related permissions are selected automatically when dependencies exist; after manual removal, some features may show "Current user has no permission".', view: 'View', manage: 'Manage', - dashboard_view: 'Dashboard View', app_view: 'App View', app_manage: 'App Manage', ai_agent_view: 'AI Assistant View', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 00eea66e16d8..9145041a4dbe 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -4189,7 +4189,6 @@ const message = { 'Si hay dependencias, los permisos relacionados se seleccionarán automáticamente; tras quitarlos manualmente, algunas funciones pueden mostrar "El usuario actual no tiene permiso".', view: 'Ver', manage: 'Gestionar', - dashboard_view: 'Vista del panel', app_view: 'Vista de la app', app_manage: 'Gestión de la app', ai_agent_view: 'Vista del asistente de IA', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 4e506891c711..462607f2720f 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -4171,7 +4171,6 @@ const message = { '依存関係がある場合、関連権限は自動選択されます。手動で解除すると、一部機能で「現在のユーザーには権限がありません」と表示される場合があります。', view: '表示', manage: '管理', - dashboard_view: 'ダッシュボード表示', app_view: 'アプリ表示', app_manage: 'アプリ管理', ai_agent_view: 'AI アシスタント表示', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index f9b92a7bb618..5e34a028b88c 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -4087,7 +4087,6 @@ const message = { '의존 관계가 있으면 관련 권한이 자동 선택되며, 수동으로 해제하면 일부 기능에서 "현재 사용자에게 권한이 없습니다"가 표시될 수 있습니다.', view: '보기', manage: '관리', - dashboard_view: '대시보드 보기', app_view: '앱 보기', app_manage: '앱 관리', ai_agent_view: 'AI 도우미 보기', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 4099e4f50b06..ddd8cd7dd0f0 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -4228,7 +4228,6 @@ const message = { 'Kebenaran berkaitan akan dipilih automatik jika ada kebergantungan; selepas dialih keluar manual, sesetengah ciri mungkin memaparkan "Pengguna semasa tiada kebenaran".', view: 'Lihat', manage: 'Urus', - dashboard_view: 'Paparan Papan Pemuka', app_view: 'Paparan Aplikasi', app_manage: 'Pengurusan Aplikasi', ai_agent_view: 'Paparan Pembantu AI', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index da1af5666a66..7b95bd233c45 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -4367,7 +4367,6 @@ const message = { 'Permissões relacionadas serão selecionadas automaticamente quando houver dependências; após removê-las manualmente, alguns recursos podem mostrar "O usuário atual não tem permissão".', view: 'Visualizar', manage: 'Gerenciar', - dashboard_view: 'Visualização do Painel', app_view: 'Visualização do APP', app_manage: 'Gerenciamento do APP', ai_agent_view: 'Visualização do Assistente de IA', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 832ad88dd9c2..bc05a866d2a5 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -4222,7 +4222,6 @@ const message = { 'При наличии зависимостей связанные права выбираются автоматически; после ручного снятия некоторые функции могут показать "У текущего пользователя нет разрешения".', view: 'Просмотр', manage: 'Управление', - dashboard_view: 'Просмотр панели', app_view: 'Просмотр приложения', app_manage: 'Управление приложением', ai_agent_view: 'Просмотр AI-ассистента', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index d2ab26d65277..c86f9c9956e9 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -4221,7 +4221,6 @@ const message = { 'Bağımlılık varsa ilişkili izinler otomatik seçilir; manuel kaldırıldıktan sonra bazı özelliklerde "Geçerli kullanıcının izni yok" gösterilebilir.', view: 'Görüntüle', manage: 'Yönet', - dashboard_view: 'Panel Görünümü', app_view: 'Uygulama Görünümü', app_manage: 'Uygulama Yönetimi', ai_agent_view: 'Yapay Zeka Asistanı Görünümü', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index d0b94b9b587c..11286eea2a77 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -3865,7 +3865,6 @@ const message = { permissionLinkageTip: '存在依賴時將自動勾選關聯權限,手動取消後部分功能可能提示「目前使用者無權限」。', view: '檢視', manage: '管理', - dashboard_view: '儀表板檢視', app_view: '應用檢視', app_manage: '應用管理', ai_agent_view: 'AI 助理檢視', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 2c806a4ae281..08779f1ce798 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -4445,7 +4445,6 @@ const message = { permissionLinkageTip: '存在依赖时将自动勾选关联权限,手动取消后部分功能可能提示“当前用户无权限”。', view: '查看', manage: '管理', - dashboard_view: '仪表盘查看', app_view: '应用查看', app_manage: '应用管理', ai_agent_view: '智能体查看', From cf350ee82649353f86b46dfa8a5b3149058a1207 Mon Sep 17 00:00:00 2001 From: wanghe-fit2cloud Date: Fri, 15 May 2026 18:13:31 +0800 Subject: [PATCH 6/8] chore: nest ops report i18n --- frontend/src/lang/modules/en.ts | 610 +++++++++++++------------- frontend/src/lang/modules/es-es.ts | 612 ++++++++++++++------------- frontend/src/lang/modules/ja.ts | 612 ++++++++++++++------------- frontend/src/lang/modules/ko.ts | 612 ++++++++++++++------------- frontend/src/lang/modules/ms.ts | 612 ++++++++++++++------------- frontend/src/lang/modules/pt-br.ts | 612 ++++++++++++++------------- frontend/src/lang/modules/ru.ts | 612 ++++++++++++++------------- frontend/src/lang/modules/tr.ts | 612 ++++++++++++++------------- frontend/src/lang/modules/zh-Hant.ts | 608 +++++++++++++------------- frontend/src/lang/modules/zh.ts | 608 +++++++++++++------------- 10 files changed, 3065 insertions(+), 3045 deletions(-) diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index e61fbab1f5a4..4d1a413e7b08 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -3809,311 +3809,313 @@ const message = { menu: 'Pro', upage: 'AI Website Builder', proAlert: 'Upgrade to Pro to use this feature', - opsReport: 'Ops Report', - opsReportOverview: 'Overview', - opsReportSystem: 'Host Runtime', - opsReportLogin: 'Login & Security', - opsReportWebsite: 'Website Protection', - opsReportResource: 'Runtime Resources', - opsReportCronjob: 'Cron Jobs', - opsReportHistory: 'Export History', - opsReportSetting: 'Settings', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', + opsReport: { + name: 'Ops Report', + overview: 'Overview', + system: 'Host Runtime', + login: 'Login & Security', + website: 'Website Protection', + resource: 'Runtime Resources', cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Threshold {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Threshold', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'System Threshold', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', + history: 'Export History', + setting: 'Settings', + page: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Threshold {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Threshold', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'System Threshold', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, }, user: { user: 'User', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 9145041a4dbe..5932f3880160 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -3862,311 +3862,313 @@ const message = { menu: 'Pro', upage: 'Constructor Web con IA', proAlert: 'Actualiza a Pro para usar esta función', - opsReport: 'Informe de operaciones', - opsReportOverview: 'Resumen', - opsReportSystem: 'Ejecución del host', - opsReportLogin: 'Inicio de sesión y seguridad', - opsReportWebsite: 'Protección de sitios web', - opsReportResource: 'Recursos de ejecución', - opsReportCronjob: 'Tareas programadas', - opsReportHistory: 'Historial de exportación', - opsReportSetting: 'Configuración', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Umbral {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Umbral', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Umbral del sistema', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', + opsReport: { + name: 'Informe de operaciones', + overview: 'Resumen', + system: 'Ejecución del host', + login: 'Inicio de sesión y seguridad', + website: 'Protección de sitios web', + resource: 'Recursos de ejecución', + cronjob: 'Tareas programadas', + history: 'Historial de exportación', + setting: 'Configuración', + page: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Umbral {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Umbral', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Umbral del sistema', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, }, user: { user: 'Usuario', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 462607f2720f..56c588ba2958 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -3846,311 +3846,313 @@ const message = { menu: 'Рro', upage: 'AIウェブサイトビルダー', proAlert: 'この機能を使用するにはProにアップグレードしてください', - opsReport: '運用レポート', - opsReportOverview: '概要', - opsReportSystem: 'ホスト稼働', - opsReportLogin: 'ログインとセキュリティ', - opsReportWebsite: 'Web サイト保護', - opsReportResource: '実行リソース', - opsReportCronjob: 'スケジュールタスク', - opsReportHistory: 'エクスポート履歴', - opsReportSetting: '設定', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'しきい値 {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'しきい値', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'システムしきい値', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', + opsReport: { + name: '運用レポート', + overview: '概要', + system: 'ホスト稼働', + login: 'ログインとセキュリティ', + website: 'Web サイト保護', + resource: '実行リソース', + cronjob: 'スケジュールタスク', + history: 'エクスポート履歴', + setting: '設定', + page: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'しきい値 {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'しきい値', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'システムしきい値', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, }, user: { user: 'ユーザー', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 5e34a028b88c..f2a6102bf21f 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -3762,311 +3762,313 @@ const message = { menu: 'Pro', upage: 'AI 웹사이트 빌더', proAlert: '이 기능을 사용하려면 Pro로 업그레이드하세요', - opsReport: '운영 보고서', - opsReportOverview: '개요', - opsReportSystem: '호스트 실행', - opsReportLogin: '로그인 및 보안', - opsReportWebsite: '웹사이트 보호', - opsReportResource: '실행 리소스', - opsReportCronjob: '예약 작업', - opsReportHistory: '내보내기 기록', - opsReportSetting: '설정', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: '임계값 {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: '임계값', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: '시스템 임계값', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', + opsReport: { + name: '운영 보고서', + overview: '개요', + system: '호스트 실행', + login: '로그인 및 보안', + website: '웹사이트 보호', + resource: '실행 리소스', + cronjob: '예약 작업', + history: '내보내기 기록', + setting: '설정', + page: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: '임계값 {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: '임계값', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: '시스템 임계값', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, }, user: { user: '사용자', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index ddd8cd7dd0f0..edb3fdbacd8e 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -3901,311 +3901,313 @@ const message = { menu: 'Pro', upage: 'Pembina Laman Web AI', proAlert: 'Tingkatkan ke Pro untuk menggunakan ciri ini', - opsReport: 'Laporan Operasi', - opsReportOverview: 'Gambaran Keseluruhan', - opsReportSystem: 'Operasi Hos', - opsReportLogin: 'Log Masuk & Keselamatan', - opsReportWebsite: 'Perlindungan Laman Web', - opsReportResource: 'Sumber Operasi', - opsReportCronjob: 'Tugas Berjadual', - opsReportHistory: 'Sejarah Eksport', - opsReportSetting: 'Tetapan', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Ambang {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Ambang', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Ambang Sistem', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', + opsReport: { + name: 'Laporan Operasi', + overview: 'Gambaran Keseluruhan', + system: 'Operasi Hos', + login: 'Log Masuk & Keselamatan', + website: 'Perlindungan Laman Web', + resource: 'Sumber Operasi', + cronjob: 'Tugas Berjadual', + history: 'Sejarah Eksport', + setting: 'Tetapan', + page: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Ambang {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Ambang', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Ambang Sistem', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, }, user: { user: 'Pengguna', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 7b95bd233c45..7955f88d103e 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -4040,311 +4040,313 @@ const message = { menu: 'Pro', upage: 'Construtor de Sites com IA', proAlert: 'Atualize para Pro para usar este recurso', - opsReport: 'Relatório de Operações', - opsReportOverview: 'Visão geral', - opsReportSystem: 'Execução do host', - opsReportLogin: 'Login e segurança', - opsReportWebsite: 'Proteção de sites', - opsReportResource: 'Recursos de execução', - opsReportCronjob: 'Tarefas agendadas', - opsReportHistory: 'Histórico de exportação', - opsReportSetting: 'Configurações', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Limite {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Limite', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Limite do sistema', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', + opsReport: { + name: 'Relatório de Operações', + overview: 'Visão geral', + system: 'Execução do host', + login: 'Login e segurança', + website: 'Proteção de sites', + resource: 'Recursos de execução', + cronjob: 'Tarefas agendadas', + history: 'Histórico de exportação', + setting: 'Configurações', + page: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Limite {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Limite', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Limite do sistema', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, }, user: { user: 'Usuário', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index bc05a866d2a5..4bf41a2bdf2f 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -3895,311 +3895,313 @@ const message = { menu: 'Рro', upage: 'AI Конструктор сайтов', proAlert: 'Обновитесь до Pro, чтобы использовать эту функцию', - opsReport: 'Операционный отчет', - opsReportOverview: 'Обзор', - opsReportSystem: 'Работа хоста', - opsReportLogin: 'Вход и безопасность', - opsReportWebsite: 'Защита сайтов', - opsReportResource: 'Ресурсы выполнения', - opsReportCronjob: 'Плановые задачи', - opsReportHistory: 'История экспорта', - opsReportSetting: 'Настройки', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Порог {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Порог', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Системный порог', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', + opsReport: { + name: 'Операционный отчет', + overview: 'Обзор', + system: 'Работа хоста', + login: 'Вход и безопасность', + website: 'Защита сайтов', + resource: 'Ресурсы выполнения', + cronjob: 'Плановые задачи', + history: 'История экспорта', + setting: 'Настройки', + page: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Порог {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Порог', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Системный порог', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, }, user: { user: 'Пользователь', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index c86f9c9956e9..da7b0ee4513f 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -3895,311 +3895,313 @@ const message = { menu: 'Pro', upage: 'AI Web Sitesi Oluşturucu', proAlert: 'Bu özelliği kullanmak için Proya yükseltin', - opsReport: 'Operasyon Raporu', - opsReportOverview: 'Genel Bakış', - opsReportSystem: 'Ana Makine Çalışması', - opsReportLogin: 'Giriş ve Güvenlik', - opsReportWebsite: 'Web Sitesi Koruması', - opsReportResource: 'Çalışma Kaynakları', - opsReportCronjob: 'Zamanlanmış Görevler', - opsReportHistory: 'Dışa Aktarma Geçmişi', - opsReportSetting: 'Ayarlar', - opsReportPage: { - enterprise: 'Enterprise', - scoreMeta: '{0} points deducted · {1} risks', - hostAddress: 'Host Address', - panelVersion: '1Panel Version', - cpuCores: 'Physical Cores', - coreUnit: '{0} cores', - memoryTotal: 'Memory Total', - reportDate: 'Report Date', - serverSecurityOverview: 'Server Security Operations Overview', - securityScore: 'Security Score', - overviewSummary: - 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', - riskDistribution: 'Risk Distribution', - totalDeducted: 'Total deducted', - noRiskDeducted: 'No deductions', - scoreTrend: 'Score Trend', - scoreLevelSafe: 'Safe', - scoreLevelAttention: 'Needs Attention', - scoreLevelMediumRisk: 'Medium Risk', - scoreLevelHighRisk: 'High Risk', - scoreCategoryHost: 'Host Resources', - scoreCategoryLogin: 'Login Security', - scoreCategoryWebsite: 'Websites & Certificates', - scoreCategoryCronjob: 'Cron Jobs', - scoreCategoryResource: 'Runtime Resources', - scoreDiskHigh: 'Disk {0} usage is {1}%', - scoreDiskMedium: 'Disk {0} usage is {1}%', - scoreResourceHigh: '{0} current usage is {1}%', - scoreResourceMedium: '{0} current usage is {1}%', - scoreLoadMedium: 'Current load is {0}', - scoreMonitorDisabled: 'Host monitoring is disabled', - scorePanelLoginFailedHigh: '1Panel login failed {0} times', - scorePanelLoginFailedMedium: '1Panel login failed {0} times', - scoreSSHLoginFailedHigh: 'SSH login failed {0} times', - scoreSSHLoginFailedMedium: 'SSH login failed {0} times', - scoreMFADisabled: 'MFA is disabled', - scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', - scorePasswordExpired: 'Panel password has expired', - scorePasswordExpiring: 'Panel password expires in {0} days', - scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', - scoreSSHRootLogin: 'SSH root login is allowed', - scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', - scoreSSLHigh: '{0} certificate expires in {1} days', - scoreSSLMedium: '{0} certificate expires in {1} days', - scoreWebsiteExpire: '{0} website expires in {1} days', - scoreWebsiteHTTP: '{0} does not use HTTPS', - scoreWebsiteStopped: '{0} status is abnormal', - scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', - scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', - scoreWafDisabled: 'WAF is disabled and websites are not protected', - scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', - scoreCronjobFailed: '{0} cron job failure records in the last 7 days', - scoreAppFailed: '{0} app is abnormal', - scoreAppStopped: '{0} app has stopped', - scoreContainerHigh: '{0} container status is abnormal', - scoreContainerExited: '{0} container has stopped', - scoreContainerResource: '{0} container resource usage is high', - attentionItems: 'Attention Items', - attentionAssets: 'Attention Assets', - riskItems: 'Risk Items', - object: 'Object', - description: 'Description', - itemUnit: 'items', - recordUnit: 'records', - certUnit: 'certs', - containerUnit: 'containers', - loginFailed: 'Failed Logins', - sslExpire: 'Certificate Expiry', - abnormalContainer: 'Abnormal Containers', - statAttentionDesc: '{0} points deducted', - statLoginDesc: 'Panel {0} · SSH {1}', - statSslDesc: '{0} certificates checked', - statContainerDesc: '{0} containers checked', - assetHostDesc: 'Max disk usage {0}%', - assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', - assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', - assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', - app: 'Apps', - website: 'Websites', - websiteSsl: 'Websites / Certificates', - cronjob: 'Cron Jobs', - container: 'Containers', - sslCertificate: 'SSL Certificates', - loginSecurity: 'Login Security', - panelLogin: '1Panel Login', - sshLogin: 'SSH Login', - failedRecord: 'Failed Records', - expiredDays: 'Expired {0} days ago', - remainingDays: '{0} · {1} days left', - enabled: 'Enabled', - disabled: 'Disabled', - exportRecordFailed: 'Failed to save export record', - hostInfo: 'Host Info', - hostname: 'Hostname', - osVersion: 'OS Version', - kernelVersion: 'Kernel Version', - arch: 'Architecture', - uptime: 'Uptime', - diskUsage: 'Disk Usage', - mountPoint: 'Mount Point', - device: 'Device', - capacity: 'Capacity', - used: 'Used', - usageRate: 'Usage', - memory: 'Memory', - load: 'Load', - maxDiskUsage: 'Max Disk Usage', - panelLoginSecurity: '1Panel Login Security', - sshSecurity: 'Linux Server SSH Security', - panelFailedRecords: '1Panel Failed Login Records', - sshFailedRecords: 'SSH Failed Login Records', - location: 'Location', - configItem: 'Config Item', - currentValue: 'Current Value', - securityEntrance: 'Security Entrance', - configured: 'Configured', - notConfigured: 'Not Configured', - normal: 'Normal', - needAttention: 'Needs Attention', - allowIPs: 'Allowed IPs', - restricted: 'Restricted', - unrestricted: 'Unrestricted', - bindDomain: 'Bound Domain', - panelHTTPS: 'Panel HTTPS', - passwordComplexity: 'Password Complexity', - sshService: 'SSH Service', - running: 'Running', - notRunning: 'Not Running', - listenPort: 'Listen Port', - read: 'Read', - rootLogin: 'Root Login', - passwordAuth: 'Password Auth', - keyAuth: 'Key Auth', - panelLoginFailed: '1Panel Failed Logins', - sshLoginFailed: 'SSH Failed Logins', - panelSecurityItems: 'Panel Security Items', - sshSecurityItems: 'SSH Security Items', - websiteOverview: 'Website Overview', - primaryDomain: 'Primary Domain', - expireTime: 'Expiry Time', - domain: 'Domain', - issuer: 'Issuer', - autoRenew: 'Auto Renew', - websiteCount: 'Websites', - httpsWebsite: 'HTTPS Websites', - certCount: 'Certificates', - websiteExpire: 'Website Expiry', - database: 'Databases', - remoteDatabase: 'Remote Databases', - address: 'Address', - containerResourceUsage: 'Container Resource Usage', - spaceUsage: 'Space Usage', - reclaimable: 'Reclaimable', - containerReclaimable: 'Container Reclaimable', - image: 'Images', - volume: 'Volumes', - buildCache: 'Build Cache', - alert: 'Alert', - alertConfigured: 'Alerts Configured', - failedExecutionRecords: 'Failed Execution Records', - taskID: 'Task ID', - executeTime: 'Execution Time', - backupTasks: 'Backup Tasks', - systemMetrics: 'Runtime Metrics', - cpu: 'CPU', - thresholdPercent: 'Eşik {0}%', - loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', - sourceMount: 'Mount point {0}', - storageUsage: 'Storage Usage', - localDisk: 'Local Disk', - highUsagePeriods: 'High Usage Periods', - timeRange: 'Time Range', - threshold: 'Eşik', - duration: 'Duration', - peak: 'Peak', - scoring: 'Scoring', - counted: 'Counted', - notCounted: 'Not Counted', - dataSource: 'Data Source', - noHighUsagePeriod: 'No high usage periods', - monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', - to: 'to', - hoursShort: '{0} h', - minutesShort: '{0} min', - websiteStatus: 'Website Status', - sslRisk: 'Certificate Risks', - sslExpiring: 'Expiring Certificates', - includedInReport: 'Included in report', - needRenewal: 'Renewal recommended', - fromExpireInfo: 'From expiry information', - runningWebsite: 'Running Websites', - fromWebsiteStatus: 'From website list status', - stoppedWebsite: 'Stopped Websites', - confirmStoppedWebsite: 'Confirm whether this is expected', - expiringWebsite: 'Expiring Websites', - expiringSoon: 'Expiring Soon', - none: 'None', - noSslRisk: 'No certificates need handling', - websiteProtection: 'WAF and Website Monitoring', - websiteMonitor: 'Website Monitoring', - waf: 'WAF', - siteAvailability: 'Site Availability', - monitoredSites: 'Monitored Sites', - requestCount: 'Requests', - abnormalSites: 'Abnormal Sites', - count5xxSource: 'Counted by 5xx requests', - wafIntercept: 'WAF Blocks', - highRiskHit: 'High-risk Hits', - websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', - wafDisabledOrNoData: 'WAF is disabled or no block data is available', - noWafData: 'No WAF block data', - sourceIP: 'Source IP', - hitCount: 'Hits', - level: 'Level', - attackType: 'Attack Type', - requestRatio: 'Request Ratio', - installed: 'Installed', - normalRunning: 'Running Normally', - failedStart: 'Startup Failed', - manualStopped: 'Manually Stopped', - failed: 'Failed', - success: 'Success', - canUpdate: 'Upgradable', - listSeparator: ', ', - containerCount: 'Containers', - stopped: 'Stopped', - abnormal: 'Abnormal', - abnormalContainers: 'Abnormal Containers', - resourceUsage: 'Resource Usage', - exposedContainerPorts: 'Exposed Ports', - portMapping: 'Port Mapping', - risk: 'Risk', - noAbnormalContainer: 'No abnormal containers', - noExposedContainer: 'No exposed ports detected', - publicExpose: 'Public Exposure', - privateExpose: 'Private Mapping', - executionRecords: 'Execution Records', - successRate: 'Success Rate', - failedJobs: 'Failed Jobs', - recentRecoveryPoint: 'Latest Recovery Point', - remoteCoverage: 'Remote Coverage', - recent7Days: 'Last 7 days', - taskTypeStats: 'Task Type Statistics', - total: 'Total', - taskTypeDesc: '{0} enabled, {1} disabled', - failedOrAttentionTasks: 'Failed or Attention Tasks', - execution: 'Execution', - latestExecution: 'Latest Execution', - remoteBackup: 'Remote Backup', - localOnly: 'Local Only', - covered: 'Covered', - noAttentionCronjob: 'No failed or attention cron jobs', - generationRule: 'Generation Rules', - scheduleDaily: 'Daily', - scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', - scheduleWeekly: 'Weekly', - scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', - scheduleMonthly: 'Monthly', - scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', - scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', - scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', - scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', - notificationMethod: 'Notification Methods', - channel: 'Channel', - receiver: 'Receiver', - systemThreshold: 'Sistem eşiği', - metric: 'Metric', - currentRule: 'Current Rule', - hostMonitor: 'Host Monitor', - monitorInterval: 'Monitor Interval', - exportSettings: 'Export Settings', - defaultFormat: 'Default Format', - savePath: 'Save Directory', - savePathRequired: 'Set the report save directory', - generateNow: 'Generate Now', - generateSuccess: 'Report file generated: {0}', - generateFailed: 'Failed to generate report', - enabledStatus: 'Enabled', - disabledStatus: 'Disabled', - thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', - hours: '{0} hours', - minutes: '{0} minutes', - seconds: '{0} seconds', - totalExports: 'Total Exports', - successExports: 'Successful Exports', - failedExports: 'Failed Exports', - reportName: 'Report Name', - exportFormat: 'Export Format', - operator: 'Operator', - triggerType: 'Trigger', - filePath: 'File Path', - manualExport: 'Manual', - scheduledExport: 'Scheduled', - exportResult: 'Export Result', - exportDetail: 'Export Detail', + opsReport: { + name: 'Operasyon Raporu', + overview: 'Genel Bakış', + system: 'Ana Makine Çalışması', + login: 'Giriş ve Güvenlik', + website: 'Web Sitesi Koruması', + resource: 'Çalışma Kaynakları', + cronjob: 'Zamanlanmış Görevler', + history: 'Dışa Aktarma Geçmişi', + setting: 'Ayarlar', + page: { + enterprise: 'Enterprise', + scoreMeta: '{0} points deducted · {1} risks', + hostAddress: 'Host Address', + panelVersion: '1Panel Version', + cpuCores: 'Physical Cores', + coreUnit: '{0} cores', + memoryTotal: 'Memory Total', + reportDate: 'Report Date', + serverSecurityOverview: 'Server Security Operations Overview', + securityScore: 'Security Score', + overviewSummary: + 'Current security level: {0}. {1} points deducted, {2} risk items found, {3} objects checked.', + riskDistribution: 'Risk Distribution', + totalDeducted: 'Total deducted', + noRiskDeducted: 'No deductions', + scoreTrend: 'Score Trend', + scoreLevelSafe: 'Safe', + scoreLevelAttention: 'Needs Attention', + scoreLevelMediumRisk: 'Medium Risk', + scoreLevelHighRisk: 'High Risk', + scoreCategoryHost: 'Host Resources', + scoreCategoryLogin: 'Login Security', + scoreCategoryWebsite: 'Websites & Certificates', + scoreCategoryCronjob: 'Cron Jobs', + scoreCategoryResource: 'Runtime Resources', + scoreDiskHigh: 'Disk {0} usage is {1}%', + scoreDiskMedium: 'Disk {0} usage is {1}%', + scoreResourceHigh: '{0} current usage is {1}%', + scoreResourceMedium: '{0} current usage is {1}%', + scoreLoadMedium: 'Current load is {0}', + scoreMonitorDisabled: 'Host monitoring is disabled', + scorePanelLoginFailedHigh: '1Panel login failed {0} times', + scorePanelLoginFailedMedium: '1Panel login failed {0} times', + scoreSSHLoginFailedHigh: 'SSH login failed {0} times', + scoreSSHLoginFailedMedium: 'SSH login failed {0} times', + scoreMFADisabled: 'MFA is disabled', + scoreAllowIPsOpen: 'Allowed IPs are not configured or too broad', + scorePasswordExpired: 'Panel password has expired', + scorePasswordExpiring: 'Panel password expires in {0} days', + scorePanelHTTPSDisabled: 'Panel HTTPS is disabled', + scoreSSHRootLogin: 'SSH root login is allowed', + scoreSSHPasswordAuth: 'SSH password auth is enabled without key auth', + scoreSSLHigh: '{0} certificate expires in {1} days', + scoreSSLMedium: '{0} certificate expires in {1} days', + scoreWebsiteExpire: '{0} website expires in {1} days', + scoreWebsiteHTTP: '{0} does not use HTTPS', + scoreWebsiteStopped: '{0} status is abnormal', + scoreWebsiteMonitorUnavailable: 'Website monitoring detected an unavailable site', + scoreWebsiteMonitorAvailability: 'Website monitoring availability {0}% is below the threshold', + scoreWafDisabled: 'WAF is disabled and websites are not protected', + scoreWafHighRiskHit: 'WAF matched {0} risk rules in the reporting period', + scoreCronjobFailed: '{0} cron job failure records in the last 7 days', + scoreAppFailed: '{0} app is abnormal', + scoreAppStopped: '{0} app has stopped', + scoreContainerHigh: '{0} container status is abnormal', + scoreContainerExited: '{0} container has stopped', + scoreContainerResource: '{0} container resource usage is high', + attentionItems: 'Attention Items', + attentionAssets: 'Attention Assets', + riskItems: 'Risk Items', + object: 'Object', + description: 'Description', + itemUnit: 'items', + recordUnit: 'records', + certUnit: 'certs', + containerUnit: 'containers', + loginFailed: 'Failed Logins', + sslExpire: 'Certificate Expiry', + abnormalContainer: 'Abnormal Containers', + statAttentionDesc: '{0} points deducted', + statLoginDesc: 'Panel {0} · SSH {1}', + statSslDesc: '{0} certificates checked', + statContainerDesc: '{0} containers checked', + assetHostDesc: 'Max disk usage {0}%', + assetWebsiteDesc: '{0} certificates expiring soon, {1} abnormal websites', + assetResourceDesc: '{0} abnormal apps, {1} stopped apps, {2} abnormal containers', + assetCronjobDesc: '{0} failure records in the last 7 days, {1} disabled jobs', + app: 'Apps', + website: 'Websites', + websiteSsl: 'Websites / Certificates', + cronjob: 'Cron Jobs', + container: 'Containers', + sslCertificate: 'SSL Certificates', + loginSecurity: 'Login Security', + panelLogin: '1Panel Login', + sshLogin: 'SSH Login', + failedRecord: 'Failed Records', + expiredDays: 'Expired {0} days ago', + remainingDays: '{0} · {1} days left', + enabled: 'Enabled', + disabled: 'Disabled', + exportRecordFailed: 'Failed to save export record', + hostInfo: 'Host Info', + hostname: 'Hostname', + osVersion: 'OS Version', + kernelVersion: 'Kernel Version', + arch: 'Architecture', + uptime: 'Uptime', + diskUsage: 'Disk Usage', + mountPoint: 'Mount Point', + device: 'Device', + capacity: 'Capacity', + used: 'Used', + usageRate: 'Usage', + memory: 'Memory', + load: 'Load', + maxDiskUsage: 'Max Disk Usage', + panelLoginSecurity: '1Panel Login Security', + sshSecurity: 'Linux Server SSH Security', + panelFailedRecords: '1Panel Failed Login Records', + sshFailedRecords: 'SSH Failed Login Records', + location: 'Location', + configItem: 'Config Item', + currentValue: 'Current Value', + securityEntrance: 'Security Entrance', + configured: 'Configured', + notConfigured: 'Not Configured', + normal: 'Normal', + needAttention: 'Needs Attention', + allowIPs: 'Allowed IPs', + restricted: 'Restricted', + unrestricted: 'Unrestricted', + bindDomain: 'Bound Domain', + panelHTTPS: 'Panel HTTPS', + passwordComplexity: 'Password Complexity', + sshService: 'SSH Service', + running: 'Running', + notRunning: 'Not Running', + listenPort: 'Listen Port', + read: 'Read', + rootLogin: 'Root Login', + passwordAuth: 'Password Auth', + keyAuth: 'Key Auth', + panelLoginFailed: '1Panel Failed Logins', + sshLoginFailed: 'SSH Failed Logins', + panelSecurityItems: 'Panel Security Items', + sshSecurityItems: 'SSH Security Items', + websiteOverview: 'Website Overview', + primaryDomain: 'Primary Domain', + expireTime: 'Expiry Time', + domain: 'Domain', + issuer: 'Issuer', + autoRenew: 'Auto Renew', + websiteCount: 'Websites', + httpsWebsite: 'HTTPS Websites', + certCount: 'Certificates', + websiteExpire: 'Website Expiry', + database: 'Databases', + remoteDatabase: 'Remote Databases', + address: 'Address', + containerResourceUsage: 'Container Resource Usage', + spaceUsage: 'Space Usage', + reclaimable: 'Reclaimable', + containerReclaimable: 'Container Reclaimable', + image: 'Images', + volume: 'Volumes', + buildCache: 'Build Cache', + alert: 'Alert', + alertConfigured: 'Alerts Configured', + failedExecutionRecords: 'Failed Execution Records', + taskID: 'Task ID', + executeTime: 'Execution Time', + backupTasks: 'Backup Tasks', + systemMetrics: 'Runtime Metrics', + cpu: 'CPU', + thresholdPercent: 'Eşik {0}%', + loadAverage: '1 / 5 / 15 minute load: {0} / {1} / {2}', + sourceMount: 'Mount point {0}', + storageUsage: 'Storage Usage', + localDisk: 'Local Disk', + highUsagePeriods: 'High Usage Periods', + timeRange: 'Time Range', + threshold: 'Eşik', + duration: 'Duration', + peak: 'Peak', + scoring: 'Scoring', + counted: 'Counted', + notCounted: 'Not Counted', + dataSource: 'Data Source', + noHighUsagePeriod: 'No high usage periods', + monitorDisabledOrNoData: 'Host monitoring is disabled or no monitor data is available', + to: 'to', + hoursShort: '{0} h', + minutesShort: '{0} min', + websiteStatus: 'Website Status', + sslRisk: 'Certificate Risks', + sslExpiring: 'Expiring Certificates', + includedInReport: 'Included in report', + needRenewal: 'Renewal recommended', + fromExpireInfo: 'From expiry information', + runningWebsite: 'Running Websites', + fromWebsiteStatus: 'From website list status', + stoppedWebsite: 'Stopped Websites', + confirmStoppedWebsite: 'Confirm whether this is expected', + expiringWebsite: 'Expiring Websites', + expiringSoon: 'Expiring Soon', + none: 'None', + noSslRisk: 'No certificates need handling', + websiteProtection: 'WAF and Website Monitoring', + websiteMonitor: 'Website Monitoring', + waf: 'WAF', + siteAvailability: 'Site Availability', + monitoredSites: 'Monitored Sites', + requestCount: 'Requests', + abnormalSites: 'Abnormal Sites', + count5xxSource: 'Counted by 5xx requests', + wafIntercept: 'WAF Blocks', + highRiskHit: 'High-risk Hits', + websiteMonitorDisabledOrNoData: 'Website monitoring is disabled or no monitor data is available', + wafDisabledOrNoData: 'WAF is disabled or no block data is available', + noWafData: 'No WAF block data', + sourceIP: 'Source IP', + hitCount: 'Hits', + level: 'Level', + attackType: 'Attack Type', + requestRatio: 'Request Ratio', + installed: 'Installed', + normalRunning: 'Running Normally', + failedStart: 'Startup Failed', + manualStopped: 'Manually Stopped', + failed: 'Failed', + success: 'Success', + canUpdate: 'Upgradable', + listSeparator: ', ', + containerCount: 'Containers', + stopped: 'Stopped', + abnormal: 'Abnormal', + abnormalContainers: 'Abnormal Containers', + resourceUsage: 'Resource Usage', + exposedContainerPorts: 'Exposed Ports', + portMapping: 'Port Mapping', + risk: 'Risk', + noAbnormalContainer: 'No abnormal containers', + noExposedContainer: 'No exposed ports detected', + publicExpose: 'Public Exposure', + privateExpose: 'Private Mapping', + executionRecords: 'Execution Records', + successRate: 'Success Rate', + failedJobs: 'Failed Jobs', + recentRecoveryPoint: 'Latest Recovery Point', + remoteCoverage: 'Remote Coverage', + recent7Days: 'Last 7 days', + taskTypeStats: 'Task Type Statistics', + total: 'Total', + taskTypeDesc: '{0} enabled, {1} disabled', + failedOrAttentionTasks: 'Failed or Attention Tasks', + execution: 'Execution', + latestExecution: 'Latest Execution', + remoteBackup: 'Remote Backup', + localOnly: 'Local Only', + covered: 'Covered', + noAttentionCronjob: 'No failed or attention cron jobs', + generationRule: 'Generation Rules', + scheduleDaily: 'Daily', + scheduleDailyDesc: 'Generate a report for the last 24 hours at 09:00 every day', + scheduleWeekly: 'Weekly', + scheduleWeeklyDesc: 'Generate a report for the last 7 days at 09:00 every Monday', + scheduleMonthly: 'Monthly', + scheduleMonthlyDesc: 'Generate a report for the previous month at 09:00 on the 1st', + scheduleCurrentDaily: 'Every day at 09:00, generate the last 24 hours report · Next {0}', + scheduleCurrentWeekly: 'Every Monday at 09:00, generate the last 7 days report · Next {0}', + scheduleCurrentMonthly: 'On the 1st at 09:00, generate the previous month report · Next {0}', + notificationMethod: 'Notification Methods', + channel: 'Channel', + receiver: 'Receiver', + systemThreshold: 'Sistem eşiği', + metric: 'Metric', + currentRule: 'Current Rule', + hostMonitor: 'Host Monitor', + monitorInterval: 'Monitor Interval', + exportSettings: 'Export Settings', + defaultFormat: 'Default Format', + savePath: 'Save Directory', + savePathRequired: 'Set the report save directory', + generateNow: 'Generate Now', + generateSuccess: 'Report file generated: {0}', + generateFailed: 'Failed to generate report', + enabledStatus: 'Enabled', + disabledStatus: 'Disabled', + thresholdRule: 'Threshold {0}, trigger after {1} consecutive times', + hours: '{0} hours', + minutes: '{0} minutes', + seconds: '{0} seconds', + totalExports: 'Total Exports', + successExports: 'Successful Exports', + failedExports: 'Failed Exports', + reportName: 'Report Name', + exportFormat: 'Export Format', + operator: 'Operator', + triggerType: 'Trigger', + filePath: 'File Path', + manualExport: 'Manual', + scheduledExport: 'Scheduled', + exportResult: 'Export Result', + exportDetail: 'Export Detail', + }, }, user: { user: 'Kullanıcı', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 11286eea2a77..8f678cb78abd 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -3542,310 +3542,312 @@ const message = { menu: '進階功能', upage: 'AI 建站', proAlert: '升級專業版以使用此功能', - opsReport: '運維報表', - opsReportOverview: '概覽', - opsReportSystem: '主機運行', - opsReportLogin: '登入與安全配置', - opsReportWebsite: '網站防護', - opsReportResource: '運行資源', - opsReportCronjob: '計劃任務', - opsReportHistory: '匯出歷史', - opsReportSetting: '設置', - opsReportPage: { - enterprise: '企業版', - scoreMeta: '扣分 {0} 分 · 風險 {1} 項', - hostAddress: '主機地址', - panelVersion: '1Panel 版本', - cpuCores: '實體核心', - coreUnit: '{0} 核', - memoryTotal: '記憶體總量', - reportDate: '報表日期', - serverSecurityOverview: '伺服器安全運營概覽', - securityScore: '安全評分', - overviewSummary: '當前安全等級為 {0},合計扣分 {1} 分,識別到 {2} 個風險項,覆蓋 {3} 個檢查對象。', - riskDistribution: '風險分佈', - totalDeducted: '合計扣分', - noRiskDeducted: '未觸發扣分', - scoreTrend: '評分趨勢', - scoreLevelSafe: '安全', - scoreLevelAttention: '需關注', - scoreLevelMediumRisk: '中風險', - scoreLevelHighRisk: '高風險', - scoreCategoryHost: '主機資源', - scoreCategoryLogin: '登入安全', - scoreCategoryWebsite: '網站與憑證', - scoreCategoryCronjob: '計劃任務', - scoreCategoryResource: '執行資源', - scoreDiskHigh: '磁碟 {0} 使用率 {1}%', - scoreDiskMedium: '磁碟 {0} 使用率 {1}%', - scoreResourceHigh: '{0} 當前使用率 {1}%', - scoreResourceMedium: '{0} 當前使用率 {1}%', - scoreLoadMedium: '負載當前值 {0}', - scoreMonitorDisabled: '主機監控未開啟', - scorePanelLoginFailedHigh: '1Panel 登入失敗 {0} 次', - scorePanelLoginFailedMedium: '1Panel 登入失敗 {0} 次', - scoreSSHLoginFailedHigh: 'SSH 登入失敗 {0} 次', - scoreSSHLoginFailedMedium: 'SSH 登入失敗 {0} 次', - scoreMFADisabled: 'MFA 未開啟', - scoreAllowIPsOpen: '授權 IP 未配置或範圍過大', - scorePasswordExpired: '面板密碼已過期', - scorePasswordExpiring: '面板密碼剩餘 {0} 天到期', - scorePanelHTTPSDisabled: '面板 HTTPS 未啟用', - scoreSSHRootLogin: 'SSH 允許 Root 登入', - scoreSSHPasswordAuth: 'SSH 開啟密碼認證且未啟用金鑰認證', - scoreSSLHigh: '{0} 憑證剩餘 {1} 天', - scoreSSLMedium: '{0} 憑證剩餘 {1} 天', - scoreWebsiteExpire: '{0} 網站剩餘 {1} 天到期', - scoreWebsiteHTTP: '{0} 未啟用 HTTPS', - scoreWebsiteStopped: '{0} 狀態異常', - scoreWebsiteMonitorUnavailable: '網站監控偵測到不可用站點', - scoreWebsiteMonitorAvailability: '網站監控可用率 {0}% 低於閾值', - scoreWafDisabled: 'WAF 未開啟,網站未納入防護', - scoreWafHighRiskHit: 'WAF 統計週期內命中 {0} 條風險規則', - scoreCronjobFailed: '近 7 天存在 {0} 條計劃任務失敗記錄', - scoreAppFailed: '{0} 應用執行異常', - scoreAppStopped: '{0} 應用已停止', - scoreContainerHigh: '{0} 容器狀態異常', - scoreContainerExited: '{0} 容器已停止', - scoreContainerResource: '{0} 容器資源使用率過高', - attentionItems: '待關注項', - attentionAssets: '待關注資產', - riskItems: '風險項', - object: '對象', - description: '說明', - itemUnit: '項', - recordUnit: '條', - certUnit: '張', - containerUnit: '個', - loginFailed: '登入失敗', - sslExpire: '憑證到期', - abnormalContainer: '異常容器', - statAttentionDesc: '當前合計扣分 {0} 分', - statLoginDesc: '面板 {0} 條 · SSH {1} 條', - statSslDesc: '共檢查 {0} 張憑證', - statContainerDesc: '共檢查 {0} 個容器', - assetHostDesc: '磁碟最高使用率 {0}%', - assetWebsiteDesc: '{0} 張憑證即將到期,{1} 個網站狀態異常', - assetResourceDesc: '{0} 個應用異常,{1} 個應用已停止,{2} 個容器異常', - assetCronjobDesc: '近 7 天 {0} 條失敗記錄,{1} 個任務未啟用', - app: '應用', - website: '網站', - websiteSsl: '網站 / 憑證', + opsReport: { + name: '運維報表', + overview: '概覽', + system: '主機運行', + login: '登入與安全配置', + website: '網站防護', + resource: '運行資源', cronjob: '計劃任務', - container: '容器', - sslCertificate: 'SSL 憑證', - loginSecurity: '登入安全', - panelLogin: '1Panel 登入', - sshLogin: 'SSH 登入', - failedRecord: '失敗記錄', - expiredDays: '已過期 {0} 天', - remainingDays: '{0} · 剩餘 {1} 天', - enabled: '已開啟', - disabled: '未開啟', - exportRecordFailed: '儲存匯出記錄失敗', - hostInfo: '主機資訊', - hostname: '主機名', - osVersion: '系統版本', - kernelVersion: '核心版本', - arch: '架構', - uptime: '執行時間', - diskUsage: '磁碟使用', - mountPoint: '掛載點', - device: '裝置', - capacity: '容量', - used: '已用', - usageRate: '使用率', - memory: '記憶體', - load: '負載', - maxDiskUsage: '磁碟最高使用率', - panelLoginSecurity: '1Panel 登入安全配置', - sshSecurity: 'Linux 伺服器 SSH 安全配置', - panelFailedRecords: '1Panel 登入失敗記錄', - sshFailedRecords: 'SSH 登入失敗記錄', - location: '歸屬地', - configItem: '配置項', - currentValue: '當前值', - securityEntrance: '安全入口', - configured: '已配置', - notConfigured: '未配置', - normal: '正常', - needAttention: '需關注', - allowIPs: '授權 IP', - restricted: '已限制', - unrestricted: '未限制', - bindDomain: '綁定網域', - panelHTTPS: '面板 HTTPS', - passwordComplexity: '密碼複雜度', - sshService: 'SSH 服務', - running: '執行中', - notRunning: '未執行', - listenPort: '監聽埠', - read: '已讀取', - rootLogin: 'Root 登入', - passwordAuth: '密碼認證', - keyAuth: '金鑰認證', - panelLoginFailed: '1Panel 登入失敗', - sshLoginFailed: 'SSH 登入失敗', - panelSecurityItems: '面板安全項', - sshSecurityItems: 'SSH 安全項', - websiteOverview: '網站概覽', - primaryDomain: '主網域', - expireTime: '到期時間', - domain: '網域', - issuer: '頒發機構', - autoRenew: '自動續簽', - websiteCount: '網站數量', - httpsWebsite: 'HTTPS 網站', - certCount: '憑證數量', - websiteExpire: '網站到期', - database: '資料庫', - remoteDatabase: '遠端資料庫', - address: '地址', - containerResourceUsage: '容器資源佔用', - spaceUsage: '佔用空間', - reclaimable: '可回收空間', - containerReclaimable: '容器可回收', - image: '映像', - volume: '資料卷', - buildCache: '建構快取', - alert: '告警', - alertConfigured: '已配置告警', - failedExecutionRecords: '失敗執行記錄', - taskID: '任務 ID', - executeTime: '執行時間', - backupTasks: '備份類任務', - systemMetrics: '執行指標', - cpu: 'CPU', - thresholdPercent: '閾值 {0}%', - loadAverage: '1 / 5 / 15 分鐘負載:{0} / {1} / {2}', - sourceMount: '掛載點 {0}', - storageUsage: '空間佔用', - localDisk: '本機磁碟', - highUsagePeriods: '高負載時段', - timeRange: '時間範圍', - threshold: '閾值', - duration: '持續時間', - peak: '峰值', - scoring: '計分', - counted: '計入', - notCounted: '未計入', - dataSource: '資料來源', - noHighUsagePeriod: '暫無高負載時段', - monitorDisabledOrNoData: '主機監控未啟用或暫無監控資料', - to: '至', - hoursShort: '{0} 小時', - minutesShort: '{0} 分鐘', - websiteStatus: '網站狀態', - sslRisk: '憑證風險', - sslExpiring: '憑證臨期', - includedInReport: '已納入報表', - needRenewal: '建議續簽', - fromExpireInfo: '來自到期資訊', - runningWebsite: '執行中網站', - fromWebsiteStatus: '來自網站列表狀態', - stoppedWebsite: '已停止網站', - confirmStoppedWebsite: '確認是否符合預期', - expiringWebsite: '快要過期網站', - expiringSoon: '即將到期', - none: '暫無', - noSslRisk: '暫無需處理憑證', - websiteProtection: 'WAF 與網站監控', - websiteMonitor: '網站監控', - waf: 'WAF', - siteAvailability: '站點可用率', - monitoredSites: '監控站點', - requestCount: '請求數', - abnormalSites: '異常站點', - count5xxSource: '按 5xx 請求統計', - wafIntercept: 'WAF 攔截', - highRiskHit: '高危命中', - websiteMonitorDisabledOrNoData: '網站監控未啟用或暫無監控資料', - wafDisabledOrNoData: 'WAF 未啟用或暫無攔截資料', - noWafData: '暫無 WAF 攔截資料', - sourceIP: '來源 IP', - hitCount: '命中次數', - level: '等級', - attackType: '攻擊類型', - requestRatio: '請求佔比', - installed: '已安裝', - normalRunning: '正常執行', - failedStart: '啟動失敗', - manualStopped: '手動停止', - failed: '失敗', - success: '成功', - canUpdate: '可升級', - listSeparator: '、', - containerCount: '容器數量', - stopped: '停止', - abnormal: '異常', - abnormalContainers: '異常容器', - resourceUsage: '資源使用', - exposedContainerPorts: '暴露埠', - portMapping: '埠映射', - risk: '風險', - noAbnormalContainer: '暫無異常容器', - noExposedContainer: '未檢測到暴露埠', - publicExpose: '公網暴露', - privateExpose: '內網映射', - executionRecords: '執行記錄', - successRate: '成功率', - failedJobs: '失敗任務', - recentRecoveryPoint: '最近恢復點', - remoteCoverage: '遠端覆蓋', - recent7Days: '近 7 天', - taskTypeStats: '任務類型統計', - total: '總計', - taskTypeDesc: '已啟用 {0} 個,未啟用 {1} 個', - failedOrAttentionTasks: '失敗或需關注任務', - execution: '執行情況', - latestExecution: '最近執行', - remoteBackup: '遠端備份', - localOnly: '僅本機', - covered: '已覆蓋', - noAttentionCronjob: '暫無失敗或需關注的計劃任務', - generationRule: '生成規則', - scheduleDaily: '每天', - scheduleDailyDesc: '每天 09:00 生成近 24 小時報表', - scheduleWeekly: '每週', - scheduleWeeklyDesc: '每週一 09:00 生成近 7 天報表', - scheduleMonthly: '每月', - scheduleMonthlyDesc: '每月 1 日 09:00 生成上月報表', - scheduleCurrentDaily: '每天 09:00 生成近 24 小時報表 · 下次 {0}', - scheduleCurrentWeekly: '每週一 09:00 生成近 7 天報表 · 下次 {0}', - scheduleCurrentMonthly: '每月 1 日 09:00 生成上月報表 · 下次 {0}', - notificationMethod: '通知方式', - channel: '通道', - receiver: '接收對象', - systemThreshold: '系統閾值', - metric: '指標', - currentRule: '當前規則', - hostMonitor: '主機監控', - monitorInterval: '監控間隔', - exportSettings: '匯出設定', - defaultFormat: '預設格式', - savePath: '儲存目錄', - savePathRequired: '請設定報表儲存目錄', - generateNow: '立即生成', - generateSuccess: '已生成報表檔案:{0}', - generateFailed: '生成報表失敗', - enabledStatus: '已啟用', - disabledStatus: '已停用', - thresholdRule: '閾值 {0},連續 {1} 次觸發', - hours: '{0} 小時', - minutes: '{0} 分鐘', - seconds: '{0} 秒', - totalExports: '匯出總數', - successExports: '成功匯出', - failedExports: '失敗匯出', - reportName: '報表名稱', - exportFormat: '匯出格式', - operator: '操作人', - triggerType: '觸發方式', - filePath: '檔案路徑', - manualExport: '手動', - scheduledExport: '定時', - exportResult: '匯出結果', - exportDetail: '匯出說明', + history: '匯出歷史', + setting: '設置', + page: { + enterprise: '企業版', + scoreMeta: '扣分 {0} 分 · 風險 {1} 項', + hostAddress: '主機地址', + panelVersion: '1Panel 版本', + cpuCores: '實體核心', + coreUnit: '{0} 核', + memoryTotal: '記憶體總量', + reportDate: '報表日期', + serverSecurityOverview: '伺服器安全運營概覽', + securityScore: '安全評分', + overviewSummary: '當前安全等級為 {0},合計扣分 {1} 分,識別到 {2} 個風險項,覆蓋 {3} 個檢查對象。', + riskDistribution: '風險分佈', + totalDeducted: '合計扣分', + noRiskDeducted: '未觸發扣分', + scoreTrend: '評分趨勢', + scoreLevelSafe: '安全', + scoreLevelAttention: '需關注', + scoreLevelMediumRisk: '中風險', + scoreLevelHighRisk: '高風險', + scoreCategoryHost: '主機資源', + scoreCategoryLogin: '登入安全', + scoreCategoryWebsite: '網站與憑證', + scoreCategoryCronjob: '計劃任務', + scoreCategoryResource: '執行資源', + scoreDiskHigh: '磁碟 {0} 使用率 {1}%', + scoreDiskMedium: '磁碟 {0} 使用率 {1}%', + scoreResourceHigh: '{0} 當前使用率 {1}%', + scoreResourceMedium: '{0} 當前使用率 {1}%', + scoreLoadMedium: '負載當前值 {0}', + scoreMonitorDisabled: '主機監控未開啟', + scorePanelLoginFailedHigh: '1Panel 登入失敗 {0} 次', + scorePanelLoginFailedMedium: '1Panel 登入失敗 {0} 次', + scoreSSHLoginFailedHigh: 'SSH 登入失敗 {0} 次', + scoreSSHLoginFailedMedium: 'SSH 登入失敗 {0} 次', + scoreMFADisabled: 'MFA 未開啟', + scoreAllowIPsOpen: '授權 IP 未配置或範圍過大', + scorePasswordExpired: '面板密碼已過期', + scorePasswordExpiring: '面板密碼剩餘 {0} 天到期', + scorePanelHTTPSDisabled: '面板 HTTPS 未啟用', + scoreSSHRootLogin: 'SSH 允許 Root 登入', + scoreSSHPasswordAuth: 'SSH 開啟密碼認證且未啟用金鑰認證', + scoreSSLHigh: '{0} 憑證剩餘 {1} 天', + scoreSSLMedium: '{0} 憑證剩餘 {1} 天', + scoreWebsiteExpire: '{0} 網站剩餘 {1} 天到期', + scoreWebsiteHTTP: '{0} 未啟用 HTTPS', + scoreWebsiteStopped: '{0} 狀態異常', + scoreWebsiteMonitorUnavailable: '網站監控偵測到不可用站點', + scoreWebsiteMonitorAvailability: '網站監控可用率 {0}% 低於閾值', + scoreWafDisabled: 'WAF 未開啟,網站未納入防護', + scoreWafHighRiskHit: 'WAF 統計週期內命中 {0} 條風險規則', + scoreCronjobFailed: '近 7 天存在 {0} 條計劃任務失敗記錄', + scoreAppFailed: '{0} 應用執行異常', + scoreAppStopped: '{0} 應用已停止', + scoreContainerHigh: '{0} 容器狀態異常', + scoreContainerExited: '{0} 容器已停止', + scoreContainerResource: '{0} 容器資源使用率過高', + attentionItems: '待關注項', + attentionAssets: '待關注資產', + riskItems: '風險項', + object: '對象', + description: '說明', + itemUnit: '項', + recordUnit: '條', + certUnit: '張', + containerUnit: '個', + loginFailed: '登入失敗', + sslExpire: '憑證到期', + abnormalContainer: '異常容器', + statAttentionDesc: '當前合計扣分 {0} 分', + statLoginDesc: '面板 {0} 條 · SSH {1} 條', + statSslDesc: '共檢查 {0} 張憑證', + statContainerDesc: '共檢查 {0} 個容器', + assetHostDesc: '磁碟最高使用率 {0}%', + assetWebsiteDesc: '{0} 張憑證即將到期,{1} 個網站狀態異常', + assetResourceDesc: '{0} 個應用異常,{1} 個應用已停止,{2} 個容器異常', + assetCronjobDesc: '近 7 天 {0} 條失敗記錄,{1} 個任務未啟用', + app: '應用', + website: '網站', + websiteSsl: '網站 / 憑證', + cronjob: '計劃任務', + container: '容器', + sslCertificate: 'SSL 憑證', + loginSecurity: '登入安全', + panelLogin: '1Panel 登入', + sshLogin: 'SSH 登入', + failedRecord: '失敗記錄', + expiredDays: '已過期 {0} 天', + remainingDays: '{0} · 剩餘 {1} 天', + enabled: '已開啟', + disabled: '未開啟', + exportRecordFailed: '儲存匯出記錄失敗', + hostInfo: '主機資訊', + hostname: '主機名', + osVersion: '系統版本', + kernelVersion: '核心版本', + arch: '架構', + uptime: '執行時間', + diskUsage: '磁碟使用', + mountPoint: '掛載點', + device: '裝置', + capacity: '容量', + used: '已用', + usageRate: '使用率', + memory: '記憶體', + load: '負載', + maxDiskUsage: '磁碟最高使用率', + panelLoginSecurity: '1Panel 登入安全配置', + sshSecurity: 'Linux 伺服器 SSH 安全配置', + panelFailedRecords: '1Panel 登入失敗記錄', + sshFailedRecords: 'SSH 登入失敗記錄', + location: '歸屬地', + configItem: '配置項', + currentValue: '當前值', + securityEntrance: '安全入口', + configured: '已配置', + notConfigured: '未配置', + normal: '正常', + needAttention: '需關注', + allowIPs: '授權 IP', + restricted: '已限制', + unrestricted: '未限制', + bindDomain: '綁定網域', + panelHTTPS: '面板 HTTPS', + passwordComplexity: '密碼複雜度', + sshService: 'SSH 服務', + running: '執行中', + notRunning: '未執行', + listenPort: '監聽埠', + read: '已讀取', + rootLogin: 'Root 登入', + passwordAuth: '密碼認證', + keyAuth: '金鑰認證', + panelLoginFailed: '1Panel 登入失敗', + sshLoginFailed: 'SSH 登入失敗', + panelSecurityItems: '面板安全項', + sshSecurityItems: 'SSH 安全項', + websiteOverview: '網站概覽', + primaryDomain: '主網域', + expireTime: '到期時間', + domain: '網域', + issuer: '頒發機構', + autoRenew: '自動續簽', + websiteCount: '網站數量', + httpsWebsite: 'HTTPS 網站', + certCount: '憑證數量', + websiteExpire: '網站到期', + database: '資料庫', + remoteDatabase: '遠端資料庫', + address: '地址', + containerResourceUsage: '容器資源佔用', + spaceUsage: '佔用空間', + reclaimable: '可回收空間', + containerReclaimable: '容器可回收', + image: '映像', + volume: '資料卷', + buildCache: '建構快取', + alert: '告警', + alertConfigured: '已配置告警', + failedExecutionRecords: '失敗執行記錄', + taskID: '任務 ID', + executeTime: '執行時間', + backupTasks: '備份類任務', + systemMetrics: '執行指標', + cpu: 'CPU', + thresholdPercent: '閾值 {0}%', + loadAverage: '1 / 5 / 15 分鐘負載:{0} / {1} / {2}', + sourceMount: '掛載點 {0}', + storageUsage: '空間佔用', + localDisk: '本機磁碟', + highUsagePeriods: '高負載時段', + timeRange: '時間範圍', + threshold: '閾值', + duration: '持續時間', + peak: '峰值', + scoring: '計分', + counted: '計入', + notCounted: '未計入', + dataSource: '資料來源', + noHighUsagePeriod: '暫無高負載時段', + monitorDisabledOrNoData: '主機監控未啟用或暫無監控資料', + to: '至', + hoursShort: '{0} 小時', + minutesShort: '{0} 分鐘', + websiteStatus: '網站狀態', + sslRisk: '憑證風險', + sslExpiring: '憑證臨期', + includedInReport: '已納入報表', + needRenewal: '建議續簽', + fromExpireInfo: '來自到期資訊', + runningWebsite: '執行中網站', + fromWebsiteStatus: '來自網站列表狀態', + stoppedWebsite: '已停止網站', + confirmStoppedWebsite: '確認是否符合預期', + expiringWebsite: '快要過期網站', + expiringSoon: '即將到期', + none: '暫無', + noSslRisk: '暫無需處理憑證', + websiteProtection: 'WAF 與網站監控', + websiteMonitor: '網站監控', + waf: 'WAF', + siteAvailability: '站點可用率', + monitoredSites: '監控站點', + requestCount: '請求數', + abnormalSites: '異常站點', + count5xxSource: '按 5xx 請求統計', + wafIntercept: 'WAF 攔截', + highRiskHit: '高危命中', + websiteMonitorDisabledOrNoData: '網站監控未啟用或暫無監控資料', + wafDisabledOrNoData: 'WAF 未啟用或暫無攔截資料', + noWafData: '暫無 WAF 攔截資料', + sourceIP: '來源 IP', + hitCount: '命中次數', + level: '等級', + attackType: '攻擊類型', + requestRatio: '請求佔比', + installed: '已安裝', + normalRunning: '正常執行', + failedStart: '啟動失敗', + manualStopped: '手動停止', + failed: '失敗', + success: '成功', + canUpdate: '可升級', + listSeparator: '、', + containerCount: '容器數量', + stopped: '停止', + abnormal: '異常', + abnormalContainers: '異常容器', + resourceUsage: '資源使用', + exposedContainerPorts: '暴露埠', + portMapping: '埠映射', + risk: '風險', + noAbnormalContainer: '暫無異常容器', + noExposedContainer: '未檢測到暴露埠', + publicExpose: '公網暴露', + privateExpose: '內網映射', + executionRecords: '執行記錄', + successRate: '成功率', + failedJobs: '失敗任務', + recentRecoveryPoint: '最近恢復點', + remoteCoverage: '遠端覆蓋', + recent7Days: '近 7 天', + taskTypeStats: '任務類型統計', + total: '總計', + taskTypeDesc: '已啟用 {0} 個,未啟用 {1} 個', + failedOrAttentionTasks: '失敗或需關注任務', + execution: '執行情況', + latestExecution: '最近執行', + remoteBackup: '遠端備份', + localOnly: '僅本機', + covered: '已覆蓋', + noAttentionCronjob: '暫無失敗或需關注的計劃任務', + generationRule: '生成規則', + scheduleDaily: '每天', + scheduleDailyDesc: '每天 09:00 生成近 24 小時報表', + scheduleWeekly: '每週', + scheduleWeeklyDesc: '每週一 09:00 生成近 7 天報表', + scheduleMonthly: '每月', + scheduleMonthlyDesc: '每月 1 日 09:00 生成上月報表', + scheduleCurrentDaily: '每天 09:00 生成近 24 小時報表 · 下次 {0}', + scheduleCurrentWeekly: '每週一 09:00 生成近 7 天報表 · 下次 {0}', + scheduleCurrentMonthly: '每月 1 日 09:00 生成上月報表 · 下次 {0}', + notificationMethod: '通知方式', + channel: '通道', + receiver: '接收對象', + systemThreshold: '系統閾值', + metric: '指標', + currentRule: '當前規則', + hostMonitor: '主機監控', + monitorInterval: '監控間隔', + exportSettings: '匯出設定', + defaultFormat: '預設格式', + savePath: '儲存目錄', + savePathRequired: '請設定報表儲存目錄', + generateNow: '立即生成', + generateSuccess: '已生成報表檔案:{0}', + generateFailed: '生成報表失敗', + enabledStatus: '已啟用', + disabledStatus: '已停用', + thresholdRule: '閾值 {0},連續 {1} 次觸發', + hours: '{0} 小時', + minutes: '{0} 分鐘', + seconds: '{0} 秒', + totalExports: '匯出總數', + successExports: '成功匯出', + failedExports: '失敗匯出', + reportName: '報表名稱', + exportFormat: '匯出格式', + operator: '操作人', + triggerType: '觸發方式', + filePath: '檔案路徑', + manualExport: '手動', + scheduledExport: '定時', + exportResult: '匯出結果', + exportDetail: '匯出說明', + }, }, user: { user: '使用者', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 08779f1ce798..925e4fdf1001 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -4122,310 +4122,312 @@ const message = { appUpgrade: '应用升级', appUpgradeHelper: '有 {0} 个应用需要升级', }, - opsReport: '运维报表', - opsReportOverview: '概览', - opsReportSystem: '主机运行', - opsReportLogin: '登录与安全配置', - opsReportWebsite: '网站防护', - opsReportResource: '运行资源', - opsReportCronjob: '计划任务', - opsReportHistory: '导出历史', - opsReportSetting: '设置', - opsReportPage: { - enterprise: '企业版', - scoreMeta: '扣分 {0} 分 · 风险 {1} 项', - hostAddress: '主机地址', - panelVersion: '1Panel 版本', - cpuCores: '物理核心', - coreUnit: '{0} 核', - memoryTotal: '内存总量', - reportDate: '报表日期', - serverSecurityOverview: '服务器安全运营概览', - securityScore: '安全评分', - overviewSummary: '当前安全等级为 {0},合计扣分 {1} 分,识别到 {2} 个风险项,覆盖 {3} 个检查对象。', - riskDistribution: '风险分布', - totalDeducted: '合计扣分', - noRiskDeducted: '未触发扣分', - scoreTrend: '评分趋势', - scoreLevelSafe: '安全', - scoreLevelAttention: '需关注', - scoreLevelMediumRisk: '中风险', - scoreLevelHighRisk: '高风险', - scoreCategoryHost: '主机资源', - scoreCategoryLogin: '登录安全', - scoreCategoryWebsite: '网站与证书', - scoreCategoryCronjob: '计划任务', - scoreCategoryResource: '运行资源', - scoreDiskHigh: '磁盘 {0} 使用率 {1}%', - scoreDiskMedium: '磁盘 {0} 使用率 {1}%', - scoreResourceHigh: '{0} 当前使用率 {1}%', - scoreResourceMedium: '{0} 当前使用率 {1}%', - scoreLoadMedium: '负载当前值 {0}', - scoreMonitorDisabled: '主机监控未开启', - scorePanelLoginFailedHigh: '1Panel 登录失败 {0} 次', - scorePanelLoginFailedMedium: '1Panel 登录失败 {0} 次', - scoreSSHLoginFailedHigh: 'SSH 登录失败 {0} 次', - scoreSSHLoginFailedMedium: 'SSH 登录失败 {0} 次', - scoreMFADisabled: 'MFA 未开启', - scoreAllowIPsOpen: '授权 IP 未配置或范围过大', - scorePasswordExpired: '面板密码已过期', - scorePasswordExpiring: '面板密码剩余 {0} 天到期', - scorePanelHTTPSDisabled: '面板 HTTPS 未启用', - scoreSSHRootLogin: 'SSH 允许 Root 登录', - scoreSSHPasswordAuth: 'SSH 开启密码认证且未启用密钥认证', - scoreSSLHigh: '{0} 证书剩余 {1} 天', - scoreSSLMedium: '{0} 证书剩余 {1} 天', - scoreWebsiteExpire: '{0} 网站剩余 {1} 天到期', - scoreWebsiteHTTP: '{0} 未启用 HTTPS', - scoreWebsiteStopped: '{0} 状态异常', - scoreWebsiteMonitorUnavailable: '网站监控检测到不可用站点', - scoreWebsiteMonitorAvailability: '网站监控可用率 {0}% 低于阈值', - scoreWafDisabled: 'WAF 未开启,网站未纳入防护', - scoreWafHighRiskHit: 'WAF 统计周期内命中 {0} 条风险规则', - scoreCronjobFailed: '近 7 天存在 {0} 条计划任务失败记录', - scoreAppFailed: '{0} 应用运行异常', - scoreAppStopped: '{0} 应用已停止', - scoreContainerHigh: '{0} 容器状态异常', - scoreContainerExited: '{0} 容器已停止', - scoreContainerResource: '{0} 容器资源使用率过高', - attentionItems: '待关注项', - attentionAssets: '待关注资产', - riskItems: '风险项', - object: '对象', - description: '说明', - itemUnit: '项', - recordUnit: '条', - certUnit: '张', - containerUnit: '个', - loginFailed: '登录失败', - sslExpire: '证书到期', - abnormalContainer: '异常容器', - statAttentionDesc: '当前合计扣分 {0} 分', - statLoginDesc: '面板 {0} 条 · SSH {1} 条', - statSslDesc: '共检查 {0} 张证书', - statContainerDesc: '共检查 {0} 个容器', - assetHostDesc: '磁盘最高使用率 {0}%', - assetWebsiteDesc: '{0} 张证书即将到期,{1} 个网站状态异常', - assetResourceDesc: '{0} 个应用异常,{1} 个应用已停止,{2} 个容器异常', - assetCronjobDesc: '近 7 天 {0} 条失败记录,{1} 个任务未启用', - app: '应用', - website: '网站', - websiteSsl: '网站 / 证书', + opsReport: { + name: '运维报表', + overview: '概览', + system: '主机运行', + login: '登录与安全配置', + website: '网站防护', + resource: '运行资源', cronjob: '计划任务', - container: '容器', - sslCertificate: 'SSL 证书', - loginSecurity: '登录安全', - panelLogin: '1Panel 登录', - sshLogin: 'SSH 登录', - failedRecord: '失败记录', - expiredDays: '已过期 {0} 天', - remainingDays: '{0} · 剩余 {1} 天', - enabled: '已开启', - disabled: '未开启', - exportRecordFailed: '保存导出记录失败', - hostInfo: '主机信息', - hostname: '主机名', - osVersion: '系统版本', - kernelVersion: '内核版本', - arch: '架构', - uptime: '运行时间', - diskUsage: '磁盘使用', - mountPoint: '挂载点', - device: '设备', - capacity: '容量', - used: '已用', - usageRate: '使用率', - memory: '内存', - load: '负载', - maxDiskUsage: '磁盘最高使用率', - panelLoginSecurity: '1Panel 登录安全配置', - sshSecurity: 'Linux 服务器 SSH 安全配置', - panelFailedRecords: '1Panel 登录失败记录', - sshFailedRecords: 'SSH 登录失败记录', - location: '归属地', - configItem: '配置项', - currentValue: '当前值', - securityEntrance: '安全入口', - configured: '已配置', - notConfigured: '未配置', - normal: '正常', - needAttention: '需关注', - allowIPs: '授权 IP', - restricted: '已限制', - unrestricted: '未限制', - bindDomain: '绑定域名', - panelHTTPS: '面板 HTTPS', - passwordComplexity: '密码复杂度', - sshService: 'SSH 服务', - running: '运行中', - notRunning: '未运行', - listenPort: '监听端口', - read: '已读取', - rootLogin: 'Root 登录', - passwordAuth: '密码认证', - keyAuth: '密钥认证', - panelLoginFailed: '1Panel 登录失败', - sshLoginFailed: 'SSH 登录失败', - panelSecurityItems: '面板安全项', - sshSecurityItems: 'SSH 安全项', - websiteOverview: '网站概览', - primaryDomain: '主域名', - expireTime: '到期时间', - domain: '域名', - issuer: '颁发机构', - autoRenew: '自动续签', - websiteCount: '网站数量', - httpsWebsite: 'HTTPS 网站', - certCount: '证书数量', - websiteExpire: '网站到期', - database: '数据库', - remoteDatabase: '远程数据库', - address: '地址', - containerResourceUsage: '容器资源占用', - spaceUsage: '占用空间', - reclaimable: '可回收空间', - containerReclaimable: '容器可回收', - image: '镜像', - volume: '数据卷', - buildCache: '构建缓存', - alert: '告警', - alertConfigured: '已配置告警', - failedExecutionRecords: '失败执行记录', - taskID: '任务 ID', - executeTime: '执行时间', - backupTasks: '备份类任务', - systemMetrics: '运行指标', - cpu: 'CPU', - thresholdPercent: '阈值 {0}%', - loadAverage: '1 / 5 / 15 分钟负载:{0} / {1} / {2}', - sourceMount: '挂载点 {0}', - storageUsage: '空间占用', - localDisk: '本地磁盘', - highUsagePeriods: '高负载时段', - timeRange: '时间范围', - threshold: '阈值', - duration: '持续时间', - peak: '峰值', - scoring: '计分', - counted: '计入', - notCounted: '未计入', - dataSource: '数据来源', - noHighUsagePeriod: '暂无高负载时段', - monitorDisabledOrNoData: '主机监控未启用或暂无监控数据', - to: '至', - hoursShort: '{0} 小时', - minutesShort: '{0} 分钟', - websiteStatus: '网站状态', - sslRisk: '证书风险', - sslExpiring: '证书临期', - includedInReport: '已纳入报表', - needRenewal: '建议续签', - fromExpireInfo: '来自到期信息', - runningWebsite: '运行中网站', - fromWebsiteStatus: '来自网站列表状态', - stoppedWebsite: '已停止网站', - confirmStoppedWebsite: '确认是否符合预期', - expiringWebsite: '快要过期网站', - expiringSoon: '即将到期', - none: '暂无', - noSslRisk: '暂无需处理证书', - websiteProtection: 'WAF 与网站监控', - websiteMonitor: '网站监控', - waf: 'WAF', - siteAvailability: '站点可用率', - monitoredSites: '监控站点', - requestCount: '请求数', - abnormalSites: '异常站点', - count5xxSource: '按 5xx 请求统计', - wafIntercept: 'WAF 拦截', - highRiskHit: '高危命中', - websiteMonitorDisabledOrNoData: '网站监控未启用或暂无监控数据', - wafDisabledOrNoData: 'WAF 未启用或暂无拦截数据', - noWafData: '暂无 WAF 拦截数据', - sourceIP: '来源 IP', - hitCount: '命中次数', - level: '等级', - attackType: '攻击类型', - requestRatio: '请求占比', - installed: '已安装', - normalRunning: '正常运行', - failedStart: '启动失败', - manualStopped: '手动停止', - failed: '失败', - success: '成功', - canUpdate: '可升级', - listSeparator: '、', - containerCount: '容器数量', - stopped: '停止', - abnormal: '异常', - abnormalContainers: '异常容器', - resourceUsage: '资源使用', - exposedContainerPorts: '暴露端口', - portMapping: '端口映射', - risk: '风险', - noAbnormalContainer: '暂无异常容器', - noExposedContainer: '未检测到暴露端口', - publicExpose: '公网暴露', - privateExpose: '内网映射', - executionRecords: '执行记录', - successRate: '成功率', - failedJobs: '失败任务', - recentRecoveryPoint: '最近恢复点', - remoteCoverage: '远程覆盖', - recent7Days: '近 7 天', - taskTypeStats: '任务类型统计', - total: '总计', - taskTypeDesc: '已启用 {0} 个,未启用 {1} 个', - failedOrAttentionTasks: '失败或需关注任务', - execution: '执行情况', - latestExecution: '最近执行', - remoteBackup: '远程备份', - localOnly: '仅本地', - covered: '已覆盖', - noAttentionCronjob: '暂无失败或需关注的计划任务', - generationRule: '生成规则', - scheduleDaily: '每天', - scheduleDailyDesc: '每天 09:00 生成近 24 小时报表', - scheduleWeekly: '每周', - scheduleWeeklyDesc: '每周一 09:00 生成近 7 天报表', - scheduleMonthly: '每月', - scheduleMonthlyDesc: '每月 1 日 09:00 生成上月报表', - scheduleCurrentDaily: '每天 09:00 生成近 24 小时报表 · 下次 {0}', - scheduleCurrentWeekly: '每周一 09:00 生成近 7 天报表 · 下次 {0}', - scheduleCurrentMonthly: '每月 1 日 09:00 生成上月报表 · 下次 {0}', - notificationMethod: '通知方式', - channel: '通道', - receiver: '接收对象', - systemThreshold: '系统阈值', - metric: '指标', - currentRule: '当前规则', - hostMonitor: '主机监控', - monitorInterval: '监控间隔', - exportSettings: '导出设置', - defaultFormat: '默认格式', - savePath: '保存目录', - savePathRequired: '请设置报表保存目录', - generateNow: '立即生成', - generateSuccess: '已生成报表文件:{0}', - generateFailed: '生成报表失败', - enabledStatus: '已启用', - disabledStatus: '已停用', - thresholdRule: '阈值 {0},连续 {1} 次触发', - hours: '{0} 小时', - minutes: '{0} 分钟', - seconds: '{0} 秒', - totalExports: '导出总数', - successExports: '成功导出', - failedExports: '失败导出', - reportName: '报表名称', - exportFormat: '导出格式', - operator: '操作人', - triggerType: '触发方式', - filePath: '文件路径', - manualExport: '手动', - scheduledExport: '定时', - exportResult: '导出结果', - exportDetail: '导出说明', + history: '导出历史', + setting: '设置', + page: { + enterprise: '企业版', + scoreMeta: '扣分 {0} 分 · 风险 {1} 项', + hostAddress: '主机地址', + panelVersion: '1Panel 版本', + cpuCores: '物理核心', + coreUnit: '{0} 核', + memoryTotal: '内存总量', + reportDate: '报表日期', + serverSecurityOverview: '服务器安全运营概览', + securityScore: '安全评分', + overviewSummary: '当前安全等级为 {0},合计扣分 {1} 分,识别到 {2} 个风险项,覆盖 {3} 个检查对象。', + riskDistribution: '风险分布', + totalDeducted: '合计扣分', + noRiskDeducted: '未触发扣分', + scoreTrend: '评分趋势', + scoreLevelSafe: '安全', + scoreLevelAttention: '需关注', + scoreLevelMediumRisk: '中风险', + scoreLevelHighRisk: '高风险', + scoreCategoryHost: '主机资源', + scoreCategoryLogin: '登录安全', + scoreCategoryWebsite: '网站与证书', + scoreCategoryCronjob: '计划任务', + scoreCategoryResource: '运行资源', + scoreDiskHigh: '磁盘 {0} 使用率 {1}%', + scoreDiskMedium: '磁盘 {0} 使用率 {1}%', + scoreResourceHigh: '{0} 当前使用率 {1}%', + scoreResourceMedium: '{0} 当前使用率 {1}%', + scoreLoadMedium: '负载当前值 {0}', + scoreMonitorDisabled: '主机监控未开启', + scorePanelLoginFailedHigh: '1Panel 登录失败 {0} 次', + scorePanelLoginFailedMedium: '1Panel 登录失败 {0} 次', + scoreSSHLoginFailedHigh: 'SSH 登录失败 {0} 次', + scoreSSHLoginFailedMedium: 'SSH 登录失败 {0} 次', + scoreMFADisabled: 'MFA 未开启', + scoreAllowIPsOpen: '授权 IP 未配置或范围过大', + scorePasswordExpired: '面板密码已过期', + scorePasswordExpiring: '面板密码剩余 {0} 天到期', + scorePanelHTTPSDisabled: '面板 HTTPS 未启用', + scoreSSHRootLogin: 'SSH 允许 Root 登录', + scoreSSHPasswordAuth: 'SSH 开启密码认证且未启用密钥认证', + scoreSSLHigh: '{0} 证书剩余 {1} 天', + scoreSSLMedium: '{0} 证书剩余 {1} 天', + scoreWebsiteExpire: '{0} 网站剩余 {1} 天到期', + scoreWebsiteHTTP: '{0} 未启用 HTTPS', + scoreWebsiteStopped: '{0} 状态异常', + scoreWebsiteMonitorUnavailable: '网站监控检测到不可用站点', + scoreWebsiteMonitorAvailability: '网站监控可用率 {0}% 低于阈值', + scoreWafDisabled: 'WAF 未开启,网站未纳入防护', + scoreWafHighRiskHit: 'WAF 统计周期内命中 {0} 条风险规则', + scoreCronjobFailed: '近 7 天存在 {0} 条计划任务失败记录', + scoreAppFailed: '{0} 应用运行异常', + scoreAppStopped: '{0} 应用已停止', + scoreContainerHigh: '{0} 容器状态异常', + scoreContainerExited: '{0} 容器已停止', + scoreContainerResource: '{0} 容器资源使用率过高', + attentionItems: '待关注项', + attentionAssets: '待关注资产', + riskItems: '风险项', + object: '对象', + description: '说明', + itemUnit: '项', + recordUnit: '条', + certUnit: '张', + containerUnit: '个', + loginFailed: '登录失败', + sslExpire: '证书到期', + abnormalContainer: '异常容器', + statAttentionDesc: '当前合计扣分 {0} 分', + statLoginDesc: '面板 {0} 条 · SSH {1} 条', + statSslDesc: '共检查 {0} 张证书', + statContainerDesc: '共检查 {0} 个容器', + assetHostDesc: '磁盘最高使用率 {0}%', + assetWebsiteDesc: '{0} 张证书即将到期,{1} 个网站状态异常', + assetResourceDesc: '{0} 个应用异常,{1} 个应用已停止,{2} 个容器异常', + assetCronjobDesc: '近 7 天 {0} 条失败记录,{1} 个任务未启用', + app: '应用', + website: '网站', + websiteSsl: '网站 / 证书', + cronjob: '计划任务', + container: '容器', + sslCertificate: 'SSL 证书', + loginSecurity: '登录安全', + panelLogin: '1Panel 登录', + sshLogin: 'SSH 登录', + failedRecord: '失败记录', + expiredDays: '已过期 {0} 天', + remainingDays: '{0} · 剩余 {1} 天', + enabled: '已开启', + disabled: '未开启', + exportRecordFailed: '保存导出记录失败', + hostInfo: '主机信息', + hostname: '主机名', + osVersion: '系统版本', + kernelVersion: '内核版本', + arch: '架构', + uptime: '运行时间', + diskUsage: '磁盘使用', + mountPoint: '挂载点', + device: '设备', + capacity: '容量', + used: '已用', + usageRate: '使用率', + memory: '内存', + load: '负载', + maxDiskUsage: '磁盘最高使用率', + panelLoginSecurity: '1Panel 登录安全配置', + sshSecurity: 'Linux 服务器 SSH 安全配置', + panelFailedRecords: '1Panel 登录失败记录', + sshFailedRecords: 'SSH 登录失败记录', + location: '归属地', + configItem: '配置项', + currentValue: '当前值', + securityEntrance: '安全入口', + configured: '已配置', + notConfigured: '未配置', + normal: '正常', + needAttention: '需关注', + allowIPs: '授权 IP', + restricted: '已限制', + unrestricted: '未限制', + bindDomain: '绑定域名', + panelHTTPS: '面板 HTTPS', + passwordComplexity: '密码复杂度', + sshService: 'SSH 服务', + running: '运行中', + notRunning: '未运行', + listenPort: '监听端口', + read: '已读取', + rootLogin: 'Root 登录', + passwordAuth: '密码认证', + keyAuth: '密钥认证', + panelLoginFailed: '1Panel 登录失败', + sshLoginFailed: 'SSH 登录失败', + panelSecurityItems: '面板安全项', + sshSecurityItems: 'SSH 安全项', + websiteOverview: '网站概览', + primaryDomain: '主域名', + expireTime: '到期时间', + domain: '域名', + issuer: '颁发机构', + autoRenew: '自动续签', + websiteCount: '网站数量', + httpsWebsite: 'HTTPS 网站', + certCount: '证书数量', + websiteExpire: '网站到期', + database: '数据库', + remoteDatabase: '远程数据库', + address: '地址', + containerResourceUsage: '容器资源占用', + spaceUsage: '占用空间', + reclaimable: '可回收空间', + containerReclaimable: '容器可回收', + image: '镜像', + volume: '数据卷', + buildCache: '构建缓存', + alert: '告警', + alertConfigured: '已配置告警', + failedExecutionRecords: '失败执行记录', + taskID: '任务 ID', + executeTime: '执行时间', + backupTasks: '备份类任务', + systemMetrics: '运行指标', + cpu: 'CPU', + thresholdPercent: '阈值 {0}%', + loadAverage: '1 / 5 / 15 分钟负载:{0} / {1} / {2}', + sourceMount: '挂载点 {0}', + storageUsage: '空间占用', + localDisk: '本地磁盘', + highUsagePeriods: '高负载时段', + timeRange: '时间范围', + threshold: '阈值', + duration: '持续时间', + peak: '峰值', + scoring: '计分', + counted: '计入', + notCounted: '未计入', + dataSource: '数据来源', + noHighUsagePeriod: '暂无高负载时段', + monitorDisabledOrNoData: '主机监控未启用或暂无监控数据', + to: '至', + hoursShort: '{0} 小时', + minutesShort: '{0} 分钟', + websiteStatus: '网站状态', + sslRisk: '证书风险', + sslExpiring: '证书临期', + includedInReport: '已纳入报表', + needRenewal: '建议续签', + fromExpireInfo: '来自到期信息', + runningWebsite: '运行中网站', + fromWebsiteStatus: '来自网站列表状态', + stoppedWebsite: '已停止网站', + confirmStoppedWebsite: '确认是否符合预期', + expiringWebsite: '快要过期网站', + expiringSoon: '即将到期', + none: '暂无', + noSslRisk: '暂无需处理证书', + websiteProtection: 'WAF 与网站监控', + websiteMonitor: '网站监控', + waf: 'WAF', + siteAvailability: '站点可用率', + monitoredSites: '监控站点', + requestCount: '请求数', + abnormalSites: '异常站点', + count5xxSource: '按 5xx 请求统计', + wafIntercept: 'WAF 拦截', + highRiskHit: '高危命中', + websiteMonitorDisabledOrNoData: '网站监控未启用或暂无监控数据', + wafDisabledOrNoData: 'WAF 未启用或暂无拦截数据', + noWafData: '暂无 WAF 拦截数据', + sourceIP: '来源 IP', + hitCount: '命中次数', + level: '等级', + attackType: '攻击类型', + requestRatio: '请求占比', + installed: '已安装', + normalRunning: '正常运行', + failedStart: '启动失败', + manualStopped: '手动停止', + failed: '失败', + success: '成功', + canUpdate: '可升级', + listSeparator: '、', + containerCount: '容器数量', + stopped: '停止', + abnormal: '异常', + abnormalContainers: '异常容器', + resourceUsage: '资源使用', + exposedContainerPorts: '暴露端口', + portMapping: '端口映射', + risk: '风险', + noAbnormalContainer: '暂无异常容器', + noExposedContainer: '未检测到暴露端口', + publicExpose: '公网暴露', + privateExpose: '内网映射', + executionRecords: '执行记录', + successRate: '成功率', + failedJobs: '失败任务', + recentRecoveryPoint: '最近恢复点', + remoteCoverage: '远程覆盖', + recent7Days: '近 7 天', + taskTypeStats: '任务类型统计', + total: '总计', + taskTypeDesc: '已启用 {0} 个,未启用 {1} 个', + failedOrAttentionTasks: '失败或需关注任务', + execution: '执行情况', + latestExecution: '最近执行', + remoteBackup: '远程备份', + localOnly: '仅本地', + covered: '已覆盖', + noAttentionCronjob: '暂无失败或需关注的计划任务', + generationRule: '生成规则', + scheduleDaily: '每天', + scheduleDailyDesc: '每天 09:00 生成近 24 小时报表', + scheduleWeekly: '每周', + scheduleWeeklyDesc: '每周一 09:00 生成近 7 天报表', + scheduleMonthly: '每月', + scheduleMonthlyDesc: '每月 1 日 09:00 生成上月报表', + scheduleCurrentDaily: '每天 09:00 生成近 24 小时报表 · 下次 {0}', + scheduleCurrentWeekly: '每周一 09:00 生成近 7 天报表 · 下次 {0}', + scheduleCurrentMonthly: '每月 1 日 09:00 生成上月报表 · 下次 {0}', + notificationMethod: '通知方式', + channel: '通道', + receiver: '接收对象', + systemThreshold: '系统阈值', + metric: '指标', + currentRule: '当前规则', + hostMonitor: '主机监控', + monitorInterval: '监控间隔', + exportSettings: '导出设置', + defaultFormat: '默认格式', + savePath: '保存目录', + savePathRequired: '请设置报表保存目录', + generateNow: '立即生成', + generateSuccess: '已生成报表文件:{0}', + generateFailed: '生成报表失败', + enabledStatus: '已启用', + disabledStatus: '已停用', + thresholdRule: '阈值 {0},连续 {1} 次触发', + hours: '{0} 小时', + minutes: '{0} 分钟', + seconds: '{0} 秒', + totalExports: '导出总数', + successExports: '成功导出', + failedExports: '失败导出', + reportName: '报表名称', + exportFormat: '导出格式', + operator: '操作人', + triggerType: '触发方式', + filePath: '文件路径', + manualExport: '手动', + scheduledExport: '定时', + exportResult: '导出结果', + exportDetail: '导出说明', + }, }, user: { user: '用户', From 37c1cec5683539097a17ddbbac7fcaa6c37b7612 Mon Sep 17 00:00:00 2001 From: wanghe-fit2cloud Date: Fri, 15 May 2026 18:28:57 +0800 Subject: [PATCH 7/8] chore: update ops report menu i18n key --- core/init/migration/helper/menu.go | 2 +- core/init/migration/migrations/init.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/init/migration/helper/menu.go b/core/init/migration/helper/menu.go index e67cf2abb685..9037afd9ef82 100644 --- a/core/init/migration/helper/menu.go +++ b/core/init/migration/helper/menu.go @@ -122,7 +122,7 @@ func LoadMenus() string { item[i].Children = UpsertMenuByLabel(item[i].Children, dto.ShowMenu{ ID: "122", Disabled: false, - Title: "xpack.user.opsReport", + Title: "xpack.opsReport.name", IsShow: true, Label: "OpsReport", Path: "/enterprise/ops-report", diff --git a/core/init/migration/migrations/init.go b/core/init/migration/migrations/init.go index 92b0f4af2d13..4fff7861bd44 100644 --- a/core/init/migration/migrations/init.go +++ b/core/init/migration/migrations/init.go @@ -1179,7 +1179,7 @@ var AddOpsReportMenu = &gormigrate.Migration{ newItem := dto.ShowMenu{ ID: "122", Disabled: false, - Title: "xpack.user.opsReport", + Title: "xpack.opsReport.name", IsShow: true, Label: "OpsReport", Path: "/enterprise/ops-report", From 18690411a679f6855f3d73d8fdd806430f8b2d46 Mon Sep 17 00:00:00 2001 From: wanghe-fit2cloud Date: Fri, 15 May 2026 18:54:00 +0800 Subject: [PATCH 8/8] chore: sync permission locale cleanup --- frontend/src/lang/modules/en.ts | 40 ---------------------------- frontend/src/lang/modules/es-es.ts | 40 ---------------------------- frontend/src/lang/modules/ja.ts | 40 ---------------------------- frontend/src/lang/modules/ko.ts | 40 ---------------------------- frontend/src/lang/modules/ms.ts | 40 ---------------------------- frontend/src/lang/modules/pt-br.ts | 40 ---------------------------- frontend/src/lang/modules/ru.ts | 40 ---------------------------- frontend/src/lang/modules/tr.ts | 40 ---------------------------- frontend/src/lang/modules/zh-Hant.ts | 40 ---------------------------- frontend/src/lang/modules/zh.ts | 40 ---------------------------- 10 files changed, 400 deletions(-) diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 4d1a413e7b08..c84bb0240489 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -4137,46 +4137,6 @@ const message = { 'Related permissions are selected automatically when dependencies exist; after manual removal, some features may show "Current user has no permission".', view: 'View', manage: 'Manage', - app_view: 'App View', - app_manage: 'App Manage', - ai_agent_view: 'AI Assistant View', - ai_agent_manage: 'AI Assistant Manage', - ai_model_view: 'AI Model View', - ai_model_manage: 'AI Model Manage', - ai_mcp_view: 'MCP View', - ai_mcp_manage: 'MCP Manage', - ai_gpu_view: 'GPU View', - website_view: 'Website View', - website_manage: 'Website Manage', - website_cert_view: 'Certificate View', - website_cert_manage: 'Certificate Manage', - website_runtime_view: 'Runtime View', - website_runtime_manage: 'Runtime Manage', - database_view: 'Database View', - database_manage: 'Database Manage', - container_view: 'Container View', - container_manage: 'Container Manage', - cronjob_view: 'Task View', - toolbox_view: 'Toolbox View', - host_file_view: 'File View', - host_firewall_view: 'Firewall View', - host_monitor_view: 'Monitor View', - host_process_view: 'Process View', - host_ssh_view: 'SSH View', - host_disk_view: 'Disk View', - xpack_app_view: 'APP View', - xpack_waf_view: 'WAF View', - xpack_waf_manage: 'WAF Manage', - xpack_node_view: 'Node View', - xpack_ops_report_view: 'Ops Report View', - xpack_ops_report_manage: 'Ops Report Manage', - xpack_monitor_view: 'Monitor View', - xpack_monitor_manage: 'Monitor Manage', - xpack_cluster_view: 'Cluster View', - xpack_cluster_manage: 'Cluster Manage', - xpack_tamper_view: 'Tamper View', - xpack_tamper_manage: 'Tamper Manage', - log_view: 'Log View', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 5932f3880160..0a5f2e8b8699 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -4191,46 +4191,6 @@ const message = { 'Si hay dependencias, los permisos relacionados se seleccionarán automáticamente; tras quitarlos manualmente, algunas funciones pueden mostrar "El usuario actual no tiene permiso".', view: 'Ver', manage: 'Gestionar', - app_view: 'Vista de la app', - app_manage: 'Gestión de la app', - ai_agent_view: 'Vista del asistente de IA', - ai_agent_manage: 'Gestión del asistente de IA', - ai_model_view: 'Vista del modelo de IA', - ai_model_manage: 'Gestión del modelo de IA', - ai_mcp_view: 'Vista de MCP', - ai_mcp_manage: 'Gestión de MCP', - ai_gpu_view: 'Vista de GPU', - website_view: 'Vista del sitio web', - website_manage: 'Gestión del sitio web', - website_cert_view: 'Vista de certificados', - website_cert_manage: 'Gestión de certificados', - website_runtime_view: 'Vista del entorno de ejecución', - website_runtime_manage: 'Gestión del entorno de ejecución', - database_view: 'Vista de base de datos', - database_manage: 'Gestión de base de datos', - container_view: 'Vista de contenedores', - container_manage: 'Gestión de contenedores', - cronjob_view: 'Vista de tareas programadas', - toolbox_view: 'Vista de herramientas', - host_file_view: 'Vista de archivos', - host_firewall_view: 'Vista del firewall', - host_monitor_view: 'Vista de monitorización', - host_process_view: 'Vista de procesos', - host_ssh_view: 'Vista de SSH', - host_disk_view: 'Vista de disco', - xpack_app_view: 'Vista de APP', - xpack_waf_view: 'Vista de WAF', - xpack_waf_manage: 'Gestión de WAF', - xpack_node_view: 'Vista de nodos', - xpack_ops_report_view: 'Vista del informe de operaciones', - xpack_ops_report_manage: 'Gestión del informe de operaciones', - xpack_monitor_view: 'Vista de monitorización', - xpack_monitor_manage: 'Gestión de monitorización', - xpack_cluster_view: 'Vista de clúster', - xpack_cluster_manage: 'Gestión de clúster', - xpack_tamper_view: 'Vista de antimanipulación', - xpack_tamper_manage: 'Gestión de antimanipulación', - log_view: 'Vista de registros', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 56c588ba2958..cf38d9313d4a 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -4173,46 +4173,6 @@ const message = { '依存関係がある場合、関連権限は自動選択されます。手動で解除すると、一部機能で「現在のユーザーには権限がありません」と表示される場合があります。', view: '表示', manage: '管理', - app_view: 'アプリ表示', - app_manage: 'アプリ管理', - ai_agent_view: 'AI アシスタント表示', - ai_agent_manage: 'AI アシスタント管理', - ai_model_view: 'AI モデル表示', - ai_model_manage: 'AI モデル管理', - ai_mcp_view: 'MCP 表示', - ai_mcp_manage: 'MCP 管理', - ai_gpu_view: 'GPU 表示', - website_view: 'サイト表示', - website_manage: 'サイト管理', - website_cert_view: '証明書表示', - website_cert_manage: '証明書管理', - website_runtime_view: '実行環境表示', - website_runtime_manage: '実行環境管理', - database_view: 'データベース表示', - database_manage: 'データベース管理', - container_view: 'コンテナ表示', - container_manage: 'コンテナ管理', - cronjob_view: '予定タスク表示', - toolbox_view: 'ツールボックス表示', - host_file_view: 'ファイル表示', - host_firewall_view: 'ファイアウォール表示', - host_monitor_view: '監視表示', - host_process_view: 'プロセス表示', - host_ssh_view: 'SSH 表示', - host_disk_view: 'ディスク表示', - xpack_app_view: 'APP 表示', - xpack_waf_view: 'WAF 表示', - xpack_waf_manage: 'WAF 管理', - xpack_node_view: 'ノード表示', - xpack_ops_report_view: '運用レポート表示', - xpack_ops_report_manage: '運用レポート管理', - xpack_monitor_view: '監視表示', - xpack_monitor_manage: '監視管理', - xpack_cluster_view: 'クラスター表示', - xpack_cluster_manage: 'クラスター管理', - xpack_tamper_view: '改ざん防止表示', - xpack_tamper_manage: '改ざん防止管理', - log_view: 'ログ表示', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index f2a6102bf21f..656d138b3d89 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -4089,46 +4089,6 @@ const message = { '의존 관계가 있으면 관련 권한이 자동 선택되며, 수동으로 해제하면 일부 기능에서 "현재 사용자에게 권한이 없습니다"가 표시될 수 있습니다.', view: '보기', manage: '관리', - app_view: '앱 보기', - app_manage: '앱 관리', - ai_agent_view: 'AI 도우미 보기', - ai_agent_manage: 'AI 도우미 관리', - ai_model_view: 'AI 모델 보기', - ai_model_manage: 'AI 모델 관리', - ai_mcp_view: 'MCP 보기', - ai_mcp_manage: 'MCP 관리', - ai_gpu_view: 'GPU 보기', - website_view: '웹사이트 보기', - website_manage: '웹사이트 관리', - website_cert_view: '인증서 보기', - website_cert_manage: '인증서 관리', - website_runtime_view: '실행 환경 보기', - website_runtime_manage: '실행 환경 관리', - database_view: '데이터베이스 보기', - database_manage: '데이터베이스 관리', - container_view: '컨테이너 보기', - container_manage: '컨테이너 관리', - cronjob_view: '예약 작업 보기', - toolbox_view: '도구함 보기', - host_file_view: '파일 보기', - host_firewall_view: '방화벽 보기', - host_monitor_view: '모니터링 보기', - host_process_view: '프로세스 보기', - host_ssh_view: 'SSH 보기', - host_disk_view: '디스크 보기', - xpack_app_view: 'APP 보기', - xpack_waf_view: 'WAF 보기', - xpack_waf_manage: 'WAF 관리', - xpack_node_view: '노드 보기', - xpack_ops_report_view: '운영 보고서 보기', - xpack_ops_report_manage: '운영 보고서 관리', - xpack_monitor_view: '모니터링 보기', - xpack_monitor_manage: '모니터링 관리', - xpack_cluster_view: '클러스터 보기', - xpack_cluster_manage: '클러스터 관리', - xpack_tamper_view: '변조 방지 보기', - xpack_tamper_manage: '변조 방지 관리', - log_view: '로그 보기', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index edb3fdbacd8e..de343eef2407 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -4230,46 +4230,6 @@ const message = { 'Kebenaran berkaitan akan dipilih automatik jika ada kebergantungan; selepas dialih keluar manual, sesetengah ciri mungkin memaparkan "Pengguna semasa tiada kebenaran".', view: 'Lihat', manage: 'Urus', - app_view: 'Paparan Aplikasi', - app_manage: 'Pengurusan Aplikasi', - ai_agent_view: 'Paparan Pembantu AI', - ai_agent_manage: 'Pengurusan Pembantu AI', - ai_model_view: 'Paparan Model AI', - ai_model_manage: 'Pengurusan Model AI', - ai_mcp_view: 'Paparan MCP', - ai_mcp_manage: 'Pengurusan MCP', - ai_gpu_view: 'Paparan GPU', - website_view: 'Paparan Laman Web', - website_manage: 'Pengurusan Laman Web', - website_cert_view: 'Paparan Sijil', - website_cert_manage: 'Pengurusan Sijil', - website_runtime_view: 'Paparan Persekitaran Jalankan', - website_runtime_manage: 'Pengurusan Persekitaran Jalankan', - database_view: 'Paparan Pangkalan Data', - database_manage: 'Pengurusan Pangkalan Data', - container_view: 'Paparan Kontena', - container_manage: 'Pengurusan Kontena', - cronjob_view: 'Paparan Tugas Berjadual', - toolbox_view: 'Paparan Kotak Alat', - host_file_view: 'Paparan Fail', - host_firewall_view: 'Paparan Tembok Api', - host_monitor_view: 'Paparan Pemantauan', - host_process_view: 'Paparan Proses', - host_ssh_view: 'Paparan SSH', - host_disk_view: 'Paparan Cakera', - xpack_app_view: 'Paparan APP', - xpack_waf_view: 'Paparan WAF', - xpack_waf_manage: 'Pengurusan WAF', - xpack_node_view: 'Paparan Nod', - xpack_ops_report_view: 'Paparan Laporan Operasi', - xpack_ops_report_manage: 'Pengurusan Laporan Operasi', - xpack_monitor_view: 'Paparan Pemantauan', - xpack_monitor_manage: 'Pengurusan Pemantauan', - xpack_cluster_view: 'Paparan Kluster', - xpack_cluster_manage: 'Pengurusan Kluster', - xpack_tamper_view: 'Paparan Anti-ubah', - xpack_tamper_manage: 'Pengurusan Anti-ubah', - log_view: 'Paparan Log', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 7955f88d103e..d54664588d4f 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -4369,46 +4369,6 @@ const message = { 'Permissões relacionadas serão selecionadas automaticamente quando houver dependências; após removê-las manualmente, alguns recursos podem mostrar "O usuário atual não tem permissão".', view: 'Visualizar', manage: 'Gerenciar', - app_view: 'Visualização do APP', - app_manage: 'Gerenciamento do APP', - ai_agent_view: 'Visualização do Assistente de IA', - ai_agent_manage: 'Gerenciamento do Assistente de IA', - ai_model_view: 'Visualização do Modelo de IA', - ai_model_manage: 'Gerenciamento do Modelo de IA', - ai_mcp_view: 'Visualização do MCP', - ai_mcp_manage: 'Gerenciamento do MCP', - ai_gpu_view: 'Visualização da GPU', - website_view: 'Visualização do Site', - website_manage: 'Gerenciamento do Site', - website_cert_view: 'Visualização do Certificado', - website_cert_manage: 'Gerenciamento do Certificado', - website_runtime_view: 'Visualização do Ambiente de Execução', - website_runtime_manage: 'Gerenciamento do Ambiente de Execução', - database_view: 'Visualização do Banco de Dados', - database_manage: 'Gerenciamento do Banco de Dados', - container_view: 'Visualização do Contêiner', - container_manage: 'Gerenciamento do Contêiner', - cronjob_view: 'Visualização de Tarefas', - toolbox_view: 'Visualização da Caixa de Ferramentas', - host_file_view: 'Visualização de Arquivos', - host_firewall_view: 'Visualização do Firewall', - host_monitor_view: 'Visualização do Monitor', - host_process_view: 'Visualização de Processos', - host_ssh_view: 'Visualização do SSH', - host_disk_view: 'Visualização de Disco', - xpack_app_view: 'Visualização do APP', - xpack_waf_view: 'Visualização do WAF', - xpack_waf_manage: 'Gerenciamento do WAF', - xpack_node_view: 'Visualização de Nó', - xpack_ops_report_view: 'Visualização do Relatório de Operações', - xpack_ops_report_manage: 'Gerenciamento do Relatório de Operações', - xpack_monitor_view: 'Visualização do Monitor', - xpack_monitor_manage: 'Gerenciamento do Monitor', - xpack_cluster_view: 'Visualização do Cluster', - xpack_cluster_manage: 'Gerenciamento do Cluster', - xpack_tamper_view: 'Visualização do Antitamper', - xpack_tamper_manage: 'Gerenciamento do Antitamper', - log_view: 'Visualização de Logs', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 4bf41a2bdf2f..d07b894ec670 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -4224,46 +4224,6 @@ const message = { 'При наличии зависимостей связанные права выбираются автоматически; после ручного снятия некоторые функции могут показать "У текущего пользователя нет разрешения".', view: 'Просмотр', manage: 'Управление', - app_view: 'Просмотр приложения', - app_manage: 'Управление приложением', - ai_agent_view: 'Просмотр AI-ассистента', - ai_agent_manage: 'Управление AI-ассистентом', - ai_model_view: 'Просмотр AI-модели', - ai_model_manage: 'Управление AI-моделью', - ai_mcp_view: 'Просмотр MCP', - ai_mcp_manage: 'Управление MCP', - ai_gpu_view: 'Просмотр GPU', - website_view: 'Просмотр сайта', - website_manage: 'Управление сайтом', - website_cert_view: 'Просмотр сертификата', - website_cert_manage: 'Управление сертификатом', - website_runtime_view: 'Просмотр среды выполнения', - website_runtime_manage: 'Управление средой выполнения', - database_view: 'Просмотр базы данных', - database_manage: 'Управление базой данных', - container_view: 'Просмотр контейнера', - container_manage: 'Управление контейнером', - cronjob_view: 'Просмотр заданий', - toolbox_view: 'Просмотр инструментов', - host_file_view: 'Просмотр файлов', - host_firewall_view: 'Просмотр файрвола', - host_monitor_view: 'Просмотр мониторинга', - host_process_view: 'Просмотр процессов', - host_ssh_view: 'Просмотр SSH', - host_disk_view: 'Просмотр диска', - xpack_app_view: 'Просмотр APP', - xpack_waf_view: 'Просмотр WAF', - xpack_waf_manage: 'Управление WAF', - xpack_node_view: 'Просмотр узлов', - xpack_ops_report_view: 'Просмотр операционного отчета', - xpack_ops_report_manage: 'Управление операционным отчетом', - xpack_monitor_view: 'Просмотр мониторинга', - xpack_monitor_manage: 'Управление мониторингом', - xpack_cluster_view: 'Просмотр кластера', - xpack_cluster_manage: 'Управление кластером', - xpack_tamper_view: 'Просмотр защиты от подмены', - xpack_tamper_manage: 'Управление защитой от подмены', - log_view: 'Просмотр журналов', }, app: { app: 'APP', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index da7b0ee4513f..faea34e6702c 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -4223,46 +4223,6 @@ const message = { 'Bağımlılık varsa ilişkili izinler otomatik seçilir; manuel kaldırıldıktan sonra bazı özelliklerde "Geçerli kullanıcının izni yok" gösterilebilir.', view: 'Görüntüle', manage: 'Yönet', - app_view: 'Uygulama Görünümü', - app_manage: 'Uygulama Yönetimi', - ai_agent_view: 'Yapay Zeka Asistanı Görünümü', - ai_agent_manage: 'Yapay Zeka Asistanı Yönetimi', - ai_model_view: 'Yapay Zeka Modeli Görünümü', - ai_model_manage: 'Yapay Zeka Modeli Yönetimi', - ai_mcp_view: 'MCP Görünümü', - ai_mcp_manage: 'MCP Yönetimi', - ai_gpu_view: 'GPU Görünümü', - website_view: 'Web Sitesi Görünümü', - website_manage: 'Web Sitesi Yönetimi', - website_cert_view: 'Sertifika Görünümü', - website_cert_manage: 'Sertifika Yönetimi', - website_runtime_view: 'Çalışma Ortamı Görünümü', - website_runtime_manage: 'Çalışma Ortamı Yönetimi', - database_view: 'Veritabanı Görünümü', - database_manage: 'Veritabanı Yönetimi', - container_view: 'Konteyner Görünümü', - container_manage: 'Konteyner Yönetimi', - cronjob_view: 'Zamanlanmış Görev Görünümü', - toolbox_view: 'Araç Kutusu Görünümü', - host_file_view: 'Dosya Görünümü', - host_firewall_view: 'Güvenlik Duvarı Görünümü', - host_monitor_view: 'İzleme Görünümü', - host_process_view: 'İşlem Görünümü', - host_ssh_view: 'SSH Görünümü', - host_disk_view: 'Disk Görünümü', - xpack_app_view: 'APP Görünümü', - xpack_waf_view: 'WAF Görünümü', - xpack_waf_manage: 'WAF Yönetimi', - xpack_node_view: 'Düğüm Görünümü', - xpack_ops_report_view: 'Operasyon Raporu Görünümü', - xpack_ops_report_manage: 'Operasyon Raporu Yönetimi', - xpack_monitor_view: 'İzleme Görünümü', - xpack_monitor_manage: 'İzleme Yönetimi', - xpack_cluster_view: 'Küme Görünümü', - xpack_cluster_manage: 'Küme Yönetimi', - xpack_tamper_view: 'Bütünlük Koruma Görünümü', - xpack_tamper_manage: 'Bütünlük Koruma Yönetimi', - log_view: 'Kayıt Görünümü', }, app: { app: 'Uygulama', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 8f678cb78abd..eb9ccc078e10 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -3867,46 +3867,6 @@ const message = { permissionLinkageTip: '存在依賴時將自動勾選關聯權限,手動取消後部分功能可能提示「目前使用者無權限」。', view: '檢視', manage: '管理', - app_view: '應用檢視', - app_manage: '應用管理', - ai_agent_view: 'AI 助理檢視', - ai_agent_manage: 'AI 助理管理', - ai_model_view: 'AI 模型檢視', - ai_model_manage: 'AI 模型管理', - ai_mcp_view: 'MCP 檢視', - ai_mcp_manage: 'MCP 管理', - ai_gpu_view: 'GPU 檢視', - website_view: '網站檢視', - website_manage: '網站管理', - website_cert_view: '憑證檢視', - website_cert_manage: '憑證管理', - website_runtime_view: '執行環境檢視', - website_runtime_manage: '執行環境管理', - database_view: '資料庫檢視', - database_manage: '資料庫管理', - container_view: '容器檢視', - container_manage: '容器管理', - cronjob_view: '計劃任務檢視', - toolbox_view: '工具箱檢視', - host_file_view: '檔案檢視', - host_firewall_view: '防火牆檢視', - host_monitor_view: '網站監控檢視', - host_process_view: '程序檢視', - host_ssh_view: 'SSH 檢視', - host_disk_view: '磁碟檢視', - xpack_app_view: 'APP 檢視', - xpack_waf_view: 'WAF 檢視', - xpack_waf_manage: 'WAF 管理', - xpack_node_view: '節點檢視', - xpack_ops_report_view: '運維報表檢視', - xpack_ops_report_manage: '運維報表管理', - xpack_monitor_view: '監控檢視', - xpack_monitor_manage: '監控管理', - xpack_cluster_view: '叢集檢視', - xpack_cluster_manage: '叢集管理', - xpack_tamper_view: '防竄改檢視', - xpack_tamper_manage: '防竄改管理', - log_view: '日誌檢視', }, waf: { name: 'WAF', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 925e4fdf1001..b6f9b47b9f8c 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -4447,46 +4447,6 @@ const message = { permissionLinkageTip: '存在依赖时将自动勾选关联权限,手动取消后部分功能可能提示“当前用户无权限”。', view: '查看', manage: '管理', - app_view: '应用查看', - app_manage: '应用管理', - ai_agent_view: '智能体查看', - ai_agent_manage: '智能体管理', - ai_model_view: '模型查看', - ai_model_manage: '模型管理', - ai_mcp_view: 'MCP 查看', - ai_mcp_manage: 'MCP 管理', - ai_gpu_view: 'GPU 查看', - website_view: '网站查看', - website_manage: '网站管理', - website_cert_view: '证书查看', - website_cert_manage: '证书管理', - website_runtime_view: '运行环境查看', - website_runtime_manage: '运行环境管理', - database_view: '数据库查看', - database_manage: '数据库管理', - container_view: '容器查看', - container_manage: '容器管理', - cronjob_view: '计划任务查看', - toolbox_view: '工具箱查看', - host_file_view: '文件查看', - host_firewall_view: '防火墙查看', - host_monitor_view: '网站监控查看', - host_process_view: '进程查看', - host_ssh_view: 'SSH 查看', - host_disk_view: '磁盘查看', - xpack_app_view: 'APP 查看', - xpack_waf_view: 'WAF 查看', - xpack_waf_manage: 'WAF 管理', - xpack_node_view: '节点查看', - xpack_ops_report_view: '运维报表查看', - xpack_ops_report_manage: '运维报表管理', - xpack_monitor_view: '监控查看', - xpack_monitor_manage: '监控管理', - xpack_cluster_view: '集群查看', - xpack_cluster_manage: '集群管理', - xpack_tamper_view: '防篡改查看', - xpack_tamper_manage: '防篡改管理', - log_view: '日志查看', }, customApp: { name: '自定义仓库',