From bf6fcc90205bfe2141e956e5f654086b362f03ca Mon Sep 17 00:00:00 2001 From: Bai Date: Wed, 18 Aug 2021 19:11:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=9B=E6=B7=BB=E5=8A=A0=E6=B0=B4=E5=8D=B0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B9=E5=88=B0=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jumpserver/conf.py | 2 +- apps/locale/zh/LC_MESSAGES/django.mo | Bin 82852 -> 84060 bytes apps/locale/zh/LC_MESSAGES/django.po | 345 +++++++++++++------------- apps/notifications/notifications.py | 2 +- apps/ops/notifications.py | 2 +- apps/settings/serializers/settings.py | 4 + 6 files changed, 180 insertions(+), 175 deletions(-) diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index c3a8f51e6..311a58159 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -267,7 +267,7 @@ class Config(dict): 'SECURITY_INSECURE_COMMAND_LEVEL': 5, 'SECURITY_INSECURE_COMMAND_EMAIL_RECEIVER': '', 'SECURITY_LUNA_REMEMBER_AUTH': True, - 'SECURITY_WATERMARK_ENABLED': False, + 'SECURITY_WATERMARK_ENABLED': True, 'HTTP_BIND_HOST': '0.0.0.0', 'HTTP_LISTEN_PORT': 8080, diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 0beedba9bac67d880d5a25a75f24f057d7aae2b0..c8ce1bef46045322557ba17a968948fba5f32963 100644 GIT binary patch delta 25273 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\n" "Language-Team: JumpServer team\n" @@ -61,8 +61,8 @@ msgstr "激活中" #: orgs/models.py:27 perms/models/base.py:57 settings/models.py:34 #: terminal/models/storage.py:26 terminal/models/terminal.py:114 #: tickets/models/ticket.py:73 users/models/group.py:16 -#: users/models/user.py:594 xpack/plugins/change_auth_plan/models.py:77 -#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:108 +#: users/models/user.py:594 xpack/plugins/change_auth_plan/models.py:88 +#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:113 #: xpack/plugins/gathered_user/models.py:26 msgid "Comment" msgstr "备注" @@ -126,8 +126,8 @@ msgstr "系统用户" #: terminal/backends/command/serializers.py:13 terminal/models/session.py:40 #: users/templates/users/user_asset_permission.html:40 #: users/templates/users/user_asset_permission.html:70 -#: xpack/plugins/change_auth_plan/models.py:282 -#: xpack/plugins/cloud/models.py:212 +#: xpack/plugins/change_auth_plan/models.py:315 +#: xpack/plugins/cloud/models.py:217 msgid "Asset" msgstr "资产" @@ -181,8 +181,8 @@ msgstr "格式为逗号分隔的字符串, * 表示匹配所有. " #: audits/models.py:105 authentication/forms.py:15 authentication/forms.py:17 #: ops/models/adhoc.py:148 users/forms/profile.py:31 users/models/user.py:559 #: users/templates/users/_select_user_modal.html:14 -#: xpack/plugins/change_auth_plan/models.py:47 -#: xpack/plugins/change_auth_plan/models.py:278 +#: xpack/plugins/change_auth_plan/models.py:51 +#: xpack/plugins/change_auth_plan/models.py:311 #: xpack/plugins/cloud/serializers.py:67 msgid "Username" msgstr "用户名" @@ -311,9 +311,9 @@ msgstr "" #: users/templates/users/user_otp_check_password.html:13 #: users/templates/users/user_password_update.html:43 #: users/templates/users/user_password_verify.html:18 -#: xpack/plugins/change_auth_plan/models.py:68 -#: xpack/plugins/change_auth_plan/models.py:190 -#: xpack/plugins/change_auth_plan/models.py:285 +#: xpack/plugins/change_auth_plan/models.py:72 +#: xpack/plugins/change_auth_plan/models.py:207 +#: xpack/plugins/change_auth_plan/models.py:318 #: xpack/plugins/cloud/serializers.py:69 msgid "Password" msgstr "密码" @@ -445,13 +445,13 @@ msgstr "系统平台" #: assets/models/asset.py:186 assets/serializers/asset.py:65 #: perms/serializers/asset/user_permission.py:41 -#: xpack/plugins/cloud/models.py:99 xpack/plugins/cloud/serializers.py:183 +#: xpack/plugins/cloud/models.py:104 xpack/plugins/cloud/serializers.py:184 msgid "Protocols" msgstr "协议组" #: assets/models/asset.py:189 assets/models/user.py:194 #: perms/models/asset_permission.py:100 -#: xpack/plugins/change_auth_plan/models.py:56 +#: xpack/plugins/change_auth_plan/models.py:60 #: xpack/plugins/gathered_user/models.py:24 msgid "Nodes" msgstr "节点" @@ -464,7 +464,6 @@ msgstr "激活" #: assets/models/asset.py:193 assets/models/cluster.py:19 #: assets/models/user.py:191 assets/models/user.py:326 templates/_nav.html:44 -#: xpack/plugins/cloud/models.py:96 xpack/plugins/cloud/serializers.py:205 msgid "Admin user" msgstr "特权用户" @@ -541,8 +540,8 @@ msgstr "标签管理" #: assets/models/cmd_filter.py:67 assets/models/group.py:21 #: common/db/models.py:70 common/mixins/models.py:49 orgs/models.py:25 #: orgs/models.py:437 perms/models/base.py:55 users/models/user.py:602 -#: users/serializers/group.py:33 xpack/plugins/change_auth_plan/models.py:81 -#: xpack/plugins/cloud/models.py:114 xpack/plugins/gathered_user/models.py:30 +#: users/serializers/group.py:33 xpack/plugins/change_auth_plan/models.py:92 +#: xpack/plugins/cloud/models.py:119 xpack/plugins/gathered_user/models.py:30 msgid "Created by" msgstr "创建者" @@ -554,7 +553,7 @@ msgstr "创建者" #: assets/models/label.py:25 common/db/models.py:72 common/mixins/models.py:50 #: ops/models/adhoc.py:38 ops/models/command.py:29 orgs/models.py:26 #: orgs/models.py:435 perms/models/base.py:56 users/models/group.py:18 -#: users/models/user.py:789 xpack/plugins/cloud/models.py:117 +#: users/models/user.py:789 xpack/plugins/cloud/models.py:122 msgid "Date created" msgstr "创建日期" @@ -587,15 +586,15 @@ msgstr "可连接性" msgid "Date verified" msgstr "校验日期" -#: assets/models/base.py:178 xpack/plugins/change_auth_plan/models.py:72 -#: xpack/plugins/change_auth_plan/models.py:197 -#: xpack/plugins/change_auth_plan/models.py:292 +#: assets/models/base.py:178 xpack/plugins/change_auth_plan/models.py:82 +#: xpack/plugins/change_auth_plan/models.py:214 +#: xpack/plugins/change_auth_plan/models.py:325 msgid "SSH private key" msgstr "SSH密钥" -#: assets/models/base.py:179 xpack/plugins/change_auth_plan/models.py:75 -#: xpack/plugins/change_auth_plan/models.py:193 -#: xpack/plugins/change_auth_plan/models.py:288 +#: assets/models/base.py:179 xpack/plugins/change_auth_plan/models.py:85 +#: xpack/plugins/change_auth_plan/models.py:210 +#: xpack/plugins/change_auth_plan/models.py:321 msgid "SSH public key" msgstr "SSH公钥" @@ -753,7 +752,7 @@ msgstr "ssh私钥" #: users/templates/users/user_asset_permission.html:41 #: users/templates/users/user_asset_permission.html:73 #: users/templates/users/user_asset_permission.html:158 -#: xpack/plugins/cloud/models.py:93 xpack/plugins/cloud/serializers.py:206 +#: xpack/plugins/cloud/models.py:93 xpack/plugins/cloud/serializers.py:210 msgid "Node" msgstr "节点" @@ -774,7 +773,7 @@ msgid "Username same with user" msgstr "用户名与用户相同" #: assets/models/user.py:196 assets/serializers/domain.py:28 -#: templates/_nav.html:39 xpack/plugins/change_auth_plan/models.py:52 +#: templates/_nav.html:39 xpack/plugins/change_auth_plan/models.py:56 msgid "Assets" msgstr "资产" @@ -1004,7 +1003,7 @@ msgstr "推送系统用户到入资产: {}({}) => {}" #: assets/tasks/system_user_connectivity.py:56 msgid "Dynamic system user not support test" -msgstr "" +msgstr "动态系统用户不支持测试" #: assets/tasks/system_user_connectivity.py:105 msgid "Start test system user connectivity for platform: [{}]" @@ -1092,8 +1091,8 @@ msgstr "成功" #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:74 #: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:40 #: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:78 -#: xpack/plugins/change_auth_plan/models.py:177 -#: xpack/plugins/change_auth_plan/models.py:307 +#: xpack/plugins/change_auth_plan/models.py:194 +#: xpack/plugins/change_auth_plan/models.py:340 #: xpack/plugins/gathered_user/models.py:76 msgid "Date start" msgstr "开始日期" @@ -1164,13 +1163,13 @@ msgstr "用户代理" msgid "MFA" msgstr "多因子认证" -#: audits/models.py:111 xpack/plugins/change_auth_plan/models.py:303 -#: xpack/plugins/cloud/models.py:171 +#: audits/models.py:111 xpack/plugins/change_auth_plan/models.py:336 +#: xpack/plugins/cloud/models.py:176 msgid "Reason" msgstr "原因" #: audits/models.py:112 tickets/models/ticket.py:47 -#: xpack/plugins/cloud/models.py:167 xpack/plugins/cloud/models.py:216 +#: xpack/plugins/cloud/models.py:172 xpack/plugins/cloud/models.py:221 msgid "Status" msgstr "状态" @@ -1204,7 +1203,7 @@ msgid "Hosts display" msgstr "主机名称" #: audits/serializers.py:89 ops/models/command.py:26 -#: xpack/plugins/cloud/models.py:165 +#: xpack/plugins/cloud/models.py:170 msgid "Result" msgstr "结果" @@ -1281,10 +1280,12 @@ msgid "Asset and SystemUser" msgstr "资产与系统用户" #: audits/signals_handler.py:111 +#, python-brace-format msgid "{Asset} *ADD* {SystemUser}" msgstr "{Asset} *添加了* {SystemUser}" #: audits/signals_handler.py:112 +#, python-brace-format msgid "{Asset} *REMOVE* {SystemUser}" msgstr "{Asset} *移除了* {SystemUser}" @@ -2114,7 +2115,7 @@ msgid "Regularly perform" msgstr "定期执行" #: ops/mixin.py:106 ops/mixin.py:147 -#: xpack/plugins/change_auth_plan/serializers.py:55 +#: xpack/plugins/change_auth_plan/serializers.py:60 msgid "Periodic perform" msgstr "定时执行" @@ -2193,8 +2194,8 @@ msgstr "开始时间" msgid "End time" msgstr "完成时间" -#: ops/models/adhoc.py:246 xpack/plugins/change_auth_plan/models.py:180 -#: xpack/plugins/change_auth_plan/models.py:310 +#: ops/models/adhoc.py:246 xpack/plugins/change_auth_plan/models.py:197 +#: xpack/plugins/change_auth_plan/models.py:343 #: xpack/plugins/gathered_user/models.py:79 msgid "Time" msgstr "时间" @@ -2234,8 +2235,8 @@ msgstr "监控告警" #: ops/notifications.py:36 #, python-brace-format -msgid "[Alive] The terminal is offline: {name}" -msgstr "" +msgid "The terminal is offline: {name}" +msgstr "终端已离线: {name}" #: ops/notifications.py:42 #, python-brace-format @@ -2705,34 +2706,42 @@ msgid "" "for security" msgstr "是否允许终端注册,当所有终端启动后,为了安全应该关闭" +#: settings/serializers/settings.py:164 +msgid "Replay watermark" +msgstr "录像水印" + #: settings/serializers/settings.py:165 +msgid "Enabled, the session replay contains watermark information" +msgstr "启用后,会话录像将包含水印信息" + +#: settings/serializers/settings.py:169 msgid "Limit the number of login failures" msgstr "限制登录失败次数" -#: settings/serializers/settings.py:169 +#: settings/serializers/settings.py:173 msgid "Block logon interval" msgstr "禁止登录时间间隔" -#: settings/serializers/settings.py:170 +#: settings/serializers/settings.py:174 msgid "" "Tip: (unit/minute) if the user has failed to log in for a limited number of " "times, no login is allowed during this time interval." msgstr "" "提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录" -#: settings/serializers/settings.py:174 +#: settings/serializers/settings.py:178 msgid "Connection max idle time" msgstr "连接最大空闲时间" -#: settings/serializers/settings.py:175 +#: settings/serializers/settings.py:179 msgid "If idle time more than it, disconnect connection Unit: minute" msgstr "提示:如果超过该配置没有操作,连接会被断开 (单位:分)" -#: settings/serializers/settings.py:179 +#: settings/serializers/settings.py:183 msgid "User password expiration" msgstr "用户密码过期时间" -#: settings/serializers/settings.py:180 +#: settings/serializers/settings.py:184 msgid "" "Tip: (unit: day) If the user does not update the password during the time, " "the user password will expire failure;The password expiration reminder mail " @@ -2742,61 +2751,61 @@ msgstr "" "提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期" "提醒邮件将在密码过期前5天内由系统(每天)自动发送给用户" -#: settings/serializers/settings.py:184 +#: settings/serializers/settings.py:188 msgid "Number of repeated historical passwords" msgstr "不能设置近几次密码" -#: settings/serializers/settings.py:185 +#: settings/serializers/settings.py:189 msgid "" "Tip: When the user resets the password, it cannot be the previous n " "historical passwords of the user" msgstr "提示:用户重置密码时,不能为该用户前几次使用过的密码" -#: settings/serializers/settings.py:189 +#: settings/serializers/settings.py:193 msgid "Password minimum length" msgstr "密码最小长度" -#: settings/serializers/settings.py:193 +#: settings/serializers/settings.py:197 msgid "Admin user password minimum length" msgstr "管理员密码最小长度" -#: settings/serializers/settings.py:196 +#: settings/serializers/settings.py:200 msgid "Must contain capital" msgstr "必须包含大写字符" -#: settings/serializers/settings.py:198 +#: settings/serializers/settings.py:202 msgid "Must contain lowercase" msgstr "必须包含小写字符" -#: settings/serializers/settings.py:199 +#: settings/serializers/settings.py:203 msgid "Must contain numeric" msgstr "必须包含数字" -#: settings/serializers/settings.py:200 +#: settings/serializers/settings.py:204 msgid "Must contain special" msgstr "必须包含特殊字符" -#: settings/serializers/settings.py:201 +#: settings/serializers/settings.py:205 msgid "Insecure command alert" msgstr "危险命令告警" -#: settings/serializers/settings.py:203 +#: settings/serializers/settings.py:207 msgid "Email recipient" msgstr "邮件收件人" -#: settings/serializers/settings.py:204 +#: settings/serializers/settings.py:208 msgid "Multiple user using , split" msgstr "多个用户,使用 , 分割" -#: settings/serializers/settings.py:212 +#: settings/serializers/settings.py:216 msgid "Enable WeCom Auth" msgstr "启用企业微信认证" -#: settings/serializers/settings.py:219 +#: settings/serializers/settings.py:223 msgid "Enable DingTalk Auth" msgstr "启用钉钉认证" -#: settings/serializers/settings.py:225 +#: settings/serializers/settings.py:229 msgid "Enable FeiShu Auth" msgstr "启用飞书认证" @@ -3667,7 +3676,7 @@ msgstr "Secret key" msgid "Endpoint" msgstr "端点" -#: terminal/serializers/storage.py:66 xpack/plugins/cloud/models.py:209 +#: terminal/serializers/storage.py:66 xpack/plugins/cloud/models.py:214 msgid "Region" msgstr "地域" @@ -4260,8 +4269,8 @@ msgstr "两次密码不一致" msgid "Is first login" msgstr "首次登录" -#: users/serializers/user.py:22 xpack/plugins/change_auth_plan/models.py:61 -#: xpack/plugins/change_auth_plan/serializers.py:30 +#: users/serializers/user.py:22 xpack/plugins/change_auth_plan/models.py:65 +#: xpack/plugins/change_auth_plan/serializers.py:33 msgid "Password strategy" msgstr "密码策略" @@ -4900,97 +4909,142 @@ msgid "Reset password success, return to login page" msgstr "重置密码成功,返回到登录页面" #: xpack/plugins/change_auth_plan/meta.py:9 -#: xpack/plugins/change_auth_plan/models.py:89 -#: xpack/plugins/change_auth_plan/models.py:184 +#: xpack/plugins/change_auth_plan/models.py:100 +#: xpack/plugins/change_auth_plan/models.py:201 msgid "Change auth plan" msgstr "改密计划" -#: xpack/plugins/change_auth_plan/models.py:41 +#: xpack/plugins/change_auth_plan/models.py:40 msgid "Custom password" msgstr "自定义密码" -#: xpack/plugins/change_auth_plan/models.py:42 +#: xpack/plugins/change_auth_plan/models.py:41 msgid "All assets use the same random password" msgstr "所有资产使用相同的随机密码" -#: xpack/plugins/change_auth_plan/models.py:43 +#: xpack/plugins/change_auth_plan/models.py:42 msgid "All assets use different random password" msgstr "所有资产使用不同的随机密码" -#: xpack/plugins/change_auth_plan/models.py:65 +#: xpack/plugins/change_auth_plan/models.py:46 +msgid "Append SSH KEY" +msgstr "追加新密钥" + +#: xpack/plugins/change_auth_plan/models.py:47 +msgid "Empty and append SSH KEY" +msgstr "清空所有密钥再追加新密钥" + +#: xpack/plugins/change_auth_plan/models.py:48 +msgid "Empty current user and append SSH KEY" +msgstr "清空当前账号密钥再追加新密钥" + +#: xpack/plugins/change_auth_plan/models.py:69 msgid "Password rules" msgstr "密码规则" -#: xpack/plugins/change_auth_plan/models.py:187 +#: xpack/plugins/change_auth_plan/models.py:189 +msgid "Manual trigger" +msgstr "手动触发" + +#: xpack/plugins/change_auth_plan/models.py:190 +msgid "Timing trigger" +msgstr "定时触发" + +#: xpack/plugins/change_auth_plan/models.py:204 msgid "Change auth plan snapshot" msgstr "改密计划快照" -#: xpack/plugins/change_auth_plan/models.py:202 -#: xpack/plugins/change_auth_plan/models.py:296 +#: xpack/plugins/change_auth_plan/models.py:218 +#: xpack/plugins/change_auth_plan/serializers.py:166 +msgid "Trigger mode" +msgstr "触发模式" + +#: xpack/plugins/change_auth_plan/models.py:223 +#: xpack/plugins/change_auth_plan/models.py:329 msgid "Change auth plan execution" msgstr "改密计划执行" -#: xpack/plugins/change_auth_plan/models.py:269 +#: xpack/plugins/change_auth_plan/models.py:302 msgid "Ready" -msgstr "" +msgstr "准备" -#: xpack/plugins/change_auth_plan/models.py:270 +#: xpack/plugins/change_auth_plan/models.py:303 msgid "Preflight check" -msgstr "" +msgstr "改密前的校验" -#: xpack/plugins/change_auth_plan/models.py:271 -#, fuzzy -#| msgid "Change auth plan" +#: xpack/plugins/change_auth_plan/models.py:304 msgid "Change auth" -msgstr "改密计划" +msgstr "执行改密" -#: xpack/plugins/change_auth_plan/models.py:272 -#, fuzzy -#| msgid "Verify password" +#: xpack/plugins/change_auth_plan/models.py:305 msgid "Verify auth" -msgstr "校验密码" +msgstr "验证密码/密钥" -#: xpack/plugins/change_auth_plan/models.py:273 +#: xpack/plugins/change_auth_plan/models.py:306 msgid "Keep auth" -msgstr "" +msgstr "保存密码/密钥" -#: xpack/plugins/change_auth_plan/models.py:274 +#: xpack/plugins/change_auth_plan/models.py:307 msgid "Finished" msgstr "结束" -#: xpack/plugins/change_auth_plan/models.py:300 +#: xpack/plugins/change_auth_plan/models.py:333 msgid "Step" msgstr "步骤" -#: xpack/plugins/change_auth_plan/models.py:317 +#: xpack/plugins/change_auth_plan/models.py:350 msgid "Change auth plan task" msgstr "改密计划任务" -#: xpack/plugins/change_auth_plan/serializers.py:56 +#: xpack/plugins/change_auth_plan/serializers.py:29 +msgid "Change Password" +msgstr "修改密码" + +#: xpack/plugins/change_auth_plan/serializers.py:30 +msgid "Change SSH Key" +msgstr "修改密钥" + +#: xpack/plugins/change_auth_plan/serializers.py:35 +msgid "SSH Key strategy" +msgstr "SSH Key 策略" + +#: xpack/plugins/change_auth_plan/serializers.py:61 msgid "Run times" msgstr "执行次数" -#: xpack/plugins/change_auth_plan/serializers.py:72 -msgid "* Please enter custom password" -msgstr "* 请输入自定义密码" +#: xpack/plugins/change_auth_plan/serializers.py:79 +msgid "Require password strategy perform setting" +msgstr "需要密码策略执行设置" #: xpack/plugins/change_auth_plan/serializers.py:82 +msgid "Require password perform setting" +msgstr "需要密码执行设置" + +#: xpack/plugins/change_auth_plan/serializers.py:85 +msgid "Require password rule perform setting" +msgstr "需要密码规则执行设置" + +#: xpack/plugins/change_auth_plan/serializers.py:97 msgid "* Please enter the correct password length" msgstr "* 请输入正确的密码长度" -#: xpack/plugins/change_auth_plan/serializers.py:85 +#: xpack/plugins/change_auth_plan/serializers.py:100 msgid "* Password length range 6-30 bits" msgstr "* 密码长度范围 6-30 位" -#: xpack/plugins/change_auth_plan/utils.py:442 +#: xpack/plugins/change_auth_plan/serializers.py:118 +msgid "Require ssh key strategy or ssh key perform setting" +msgstr "需要ssh密钥策略或ssh密钥执行设置" + +#: xpack/plugins/change_auth_plan/utils.py:485 msgid "Invalid/incorrect password" msgstr "无效/错误 密码" -#: xpack/plugins/change_auth_plan/utils.py:444 +#: xpack/plugins/change_auth_plan/utils.py:487 msgid "Failed to connect to the host" msgstr "连接主机失败" -#: xpack/plugins/change_auth_plan/utils.py:446 +#: xpack/plugins/change_auth_plan/utils.py:489 msgid "Data could not be sent to remote" msgstr "无法将数据发送到远程" @@ -5086,7 +5140,7 @@ msgstr "云服务商" msgid "Cloud account" msgstr "云账号" -#: xpack/plugins/cloud/models.py:82 xpack/plugins/cloud/serializers.py:204 +#: xpack/plugins/cloud/models.py:82 xpack/plugins/cloud/serializers.py:207 msgid "Account" msgstr "账户" @@ -5098,35 +5152,43 @@ msgstr "地域" msgid "Hostname strategy" msgstr "主机名策略" -#: xpack/plugins/cloud/models.py:102 xpack/plugins/cloud/serializers.py:186 +#: xpack/plugins/cloud/models.py:97 xpack/plugins/cloud/serializers.py:208 +msgid "Unix admin user" +msgstr "Unix 特权用户" + +#: xpack/plugins/cloud/models.py:101 xpack/plugins/cloud/serializers.py:209 +msgid "Windows admin user" +msgstr "Windows 特权用户" + +#: xpack/plugins/cloud/models.py:107 xpack/plugins/cloud/serializers.py:187 msgid "IP network segment group" msgstr "IP网段组" -#: xpack/plugins/cloud/models.py:105 xpack/plugins/cloud/serializers.py:208 +#: xpack/plugins/cloud/models.py:110 xpack/plugins/cloud/serializers.py:212 msgid "Always update" msgstr "总是更新" -#: xpack/plugins/cloud/models.py:111 +#: xpack/plugins/cloud/models.py:116 msgid "Date last sync" msgstr "最后同步日期" -#: xpack/plugins/cloud/models.py:122 xpack/plugins/cloud/models.py:163 +#: xpack/plugins/cloud/models.py:127 xpack/plugins/cloud/models.py:168 msgid "Sync instance task" msgstr "同步实例任务" -#: xpack/plugins/cloud/models.py:174 xpack/plugins/cloud/models.py:219 +#: xpack/plugins/cloud/models.py:179 xpack/plugins/cloud/models.py:224 msgid "Date sync" msgstr "同步日期" -#: xpack/plugins/cloud/models.py:199 +#: xpack/plugins/cloud/models.py:204 msgid "Sync task" msgstr "同步任务" -#: xpack/plugins/cloud/models.py:203 +#: xpack/plugins/cloud/models.py:208 msgid "Sync instance task history" msgstr "同步实例任务历史" -#: xpack/plugins/cloud/models.py:206 +#: xpack/plugins/cloud/models.py:211 msgid "Instance" msgstr "实例" @@ -5271,36 +5333,28 @@ msgid "EU-Paris" msgstr "欧洲-巴黎" #: xpack/plugins/cloud/serializers.py:21 -#, fuzzy -#| msgid "Access key" msgid "AccessKey ID" -msgstr "Access key" +msgstr "" #: xpack/plugins/cloud/serializers.py:24 -#, fuzzy -#| msgid "Access key" msgid "AccessKey Secret" -msgstr "Access key" +msgstr "" #: xpack/plugins/cloud/serializers.py:30 msgid "Client ID" -msgstr "" +msgstr "客户端 ID" #: xpack/plugins/cloud/serializers.py:33 -#, fuzzy -#| msgid "Secret" msgid "Client Secret" -msgstr "秘钥" +msgstr "客户端密钥" #: xpack/plugins/cloud/serializers.py:36 msgid "Tenant ID" -msgstr "" +msgstr "租户 ID" #: xpack/plugins/cloud/serializers.py:39 -#, fuzzy -#| msgid "Session ID" msgid "Subscription ID" -msgstr "会话ID" +msgstr "订阅 ID" #: xpack/plugins/cloud/serializers.py:85 xpack/plugins/cloud/serializers.py:89 msgid "API Endpoint" @@ -5323,7 +5377,7 @@ msgstr "执行次数" msgid "Instance count" msgstr "实例个数" -#: xpack/plugins/cloud/serializers.py:207 +#: xpack/plugins/cloud/serializers.py:211 #: xpack/plugins/gathered_user/serializers.py:20 msgid "Periodic display" msgstr "定时执行" @@ -5416,61 +5470,8 @@ msgstr "旗舰版" msgid "Community edition" msgstr "社区版" -#~ msgid "Append SSH KEY" -#~ msgstr "追加新密钥" - -#~ msgid "Empty and append SSH KEY" -#~ msgstr "清空所有密钥再追加新密钥" - -#~ msgid "Empty current user and append SSH KEY" -#~ msgstr "清空当前账号密钥再追加新密钥" - -#, fuzzy -#~| msgid "Hostname strategy" -#~ msgid "SSH key strategy" -#~ msgstr "主机名策略" - -#~ msgid "Manual trigger" -#~ msgstr "手动触发" - -#~ msgid "Timing trigger" -#~ msgstr "定时触发" - -#~ msgid "Trigger mode" -#~ msgstr "触发模式" - -#~ msgid "Change Password" -#~ msgstr "修改密码" - -#~ msgid "Change SSH Key" -#~ msgstr "修改密钥" - -#, fuzzy -#~| msgid "SSH Key Reset" -#~ msgid "SSH Key strategy" -#~ msgstr "重置SSH密钥" - -#~ msgid "Require password strategy perform setting" -#~ msgstr "需要密码策略执行设置" - -#~ msgid "Require password perform setting" -#~ msgstr "需要密码执行设置" - -#~ msgid "Require password rule perform setting" -#~ msgstr "需要密码规则执行设置" - -#~ msgid "Require ssh key strategy or ssh key perform setting" -#~ msgstr "需要ssh密钥策略或ssh密钥执行设置" - -#, fuzzy -#~| msgid "Only admin users" -#~ msgid "Unix admin user" -#~ msgstr "仅管理员" - -#, fuzzy -#~| msgid "Only admin users" -#~ msgid "Windows admin user" -#~ msgstr "仅管理员" +#~ msgid "* Please enter custom password" +#~ msgstr "* 请输入自定义密码" #~ msgid "FeiShu Error, Please contact your system administrator" #~ msgstr "飞书错误,请联系系统管理员" diff --git a/apps/notifications/notifications.py b/apps/notifications/notifications.py index 82086c618..cac467734 100644 --- a/apps/notifications/notifications.py +++ b/apps/notifications/notifications.py @@ -92,7 +92,7 @@ class Message(metaclass=MessageType): def get_email_msg(self) -> dict: msg = self.get_common_msg() - subject = f'{msg[:20]} ...' if len(msg) >= 20 else msg + subject = f'{msg[:80]} ...' if len(msg) >= 80 else msg return { 'subject': subject, 'message': msg diff --git a/apps/ops/notifications.py b/apps/ops/notifications.py index 289871d74..d39805b8e 100644 --- a/apps/ops/notifications.py +++ b/apps/ops/notifications.py @@ -33,7 +33,7 @@ class ServerPerformanceCheckUtil(object): 'is_alive': { 'default': False, 'max_threshold': False, - 'alarm_msg_format': _('[Alive] The terminal is offline: {name}') + 'alarm_msg_format': _('The terminal is offline: {name}') }, 'disk_usage': { 'default': 0, diff --git a/apps/settings/serializers/settings.py b/apps/settings/serializers/settings.py index b9159c2cd..6c0dadb14 100644 --- a/apps/settings/serializers/settings.py +++ b/apps/settings/serializers/settings.py @@ -160,6 +160,10 @@ class SecuritySettingSerializer(serializers.Serializer): required=True, label=_('Enable terminal register'), help_text=_("Allow terminal register, after all terminal setup, you should disable this for security") ) + SECURITY_WATERMARK_ENABLED = serializers.BooleanField( + required=True, label=_('Replay watermark'), + help_text=_('Enabled, the session replay contains watermark information') + ) SECURITY_LOGIN_LIMIT_COUNT = serializers.IntegerField( min_value=3, max_value=99999, label=_('Limit the number of login failures')