diff --git a/apps/audits/signals_handler.py b/apps/audits/signals_handler.py index 17ff053ab..c793481e8 100644 --- a/apps/audits/signals_handler.py +++ b/apps/audits/signals_handler.py @@ -37,7 +37,7 @@ MODELS_NEED_RECORD = ( # users 'User', 'UserGroup', # acls - 'LoginACL', 'LoginAssetACL', + 'LoginACL', 'LoginAssetACL', 'LoginConfirmSetting', # assets 'Asset', 'Node', 'AdminUser', 'SystemUser', 'Domain', 'Gateway', 'CommandFilterRule', 'CommandFilter', 'Platform', 'AuthBook', diff --git a/apps/authentication/models.py b/apps/authentication/models.py index c74d06953..62bd74392 100644 --- a/apps/authentication/models.py +++ b/apps/authentication/models.py @@ -45,6 +45,9 @@ class LoginConfirmSetting(CommonModelMixin): reviewers = models.ManyToManyField('users.User', verbose_name=_("Reviewers"), related_name="review_login_confirm_settings", blank=True) is_active = models.BooleanField(default=True, verbose_name=_("Is active")) + class Meta: + verbose_name = _('Login Confirm') + @classmethod def get_user_confirm_setting(cls, user): return get_object_or_none(cls, user=user) @@ -83,7 +86,8 @@ class LoginConfirmSetting(CommonModelMixin): return ticket def __str__(self): - return '{} confirm'.format(self.user.username) + reviewers = [u.username for u in self.reviewers.all()] + return _('{} need confirm by {}').format(self.user.username, reviewers) class SSOToken(models.JMSBaseModel): diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 4dd34c8d4..7d6df8c1a 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-09-13 18:46+0800\n" +"POT-Creation-Date: 2021-09-13 19:13+0800\n" "PO-Revision-Date: 2021-05-20 10:54+0800\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -60,8 +60,8 @@ msgstr "激活中" #: orgs/models.py:27 perms/models/base.py:53 settings/models.py:34 #: terminal/models/storage.py:26 terminal/models/terminal.py:114 #: tickets/models/ticket.py:71 users/models/group.py:16 -#: users/models/user.py:637 xpack/plugins/change_auth_plan/models/base.py:41 -#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:113 +#: users/models/user.py:637 xpack/plugins/change_auth_plan/models.py:77 +#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:108 #: xpack/plugins/gathered_user/models.py:26 msgid "Comment" msgstr "备注" @@ -93,7 +93,7 @@ msgstr "动作" #: acls/serializers/login_acl.py:33 assets/models/label.py:15 #: audits/models.py:36 audits/models.py:56 audits/models.py:74 #: audits/serializers.py:93 authentication/models.py:44 -#: authentication/models.py:96 orgs/models.py:19 orgs/models.py:433 +#: authentication/models.py:100 orgs/models.py:19 orgs/models.py:433 #: perms/models/base.py:45 templates/index.html:78 #: terminal/backends/command/models.py:18 #: terminal/backends/command/serializers.py:12 terminal/models/session.py:38 @@ -107,7 +107,7 @@ msgstr "动作" msgid "User" msgstr "用户" -#: acls/models/login_asset_acl.py:17 authentication/models.py:72 +#: acls/models/login_asset_acl.py:17 authentication/models.py:75 #: tickets/const.py:9 msgid "Login confirm" msgstr "登录复核" @@ -125,8 +125,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/asset.py:195 -#: xpack/plugins/cloud/models.py:217 +#: xpack/plugins/change_auth_plan/models.py:282 +#: xpack/plugins/cloud/models.py:212 msgid "Asset" msgstr "资产" @@ -139,7 +139,7 @@ msgstr "审批人" msgid "Login asset confirm" msgstr "登录资产复核" -#: acls/serializers/login_acl.py:18 xpack/plugins/cloud/serializers/task.py:23 +#: acls/serializers/login_acl.py:18 xpack/plugins/cloud/serializers.py:165 msgid "IP address invalid: `{}`" msgstr "IP 地址无效: `{}`" @@ -179,9 +179,9 @@ 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:602 #: users/templates/users/_select_user_modal.html:14 -#: xpack/plugins/change_auth_plan/models/asset.py:35 -#: xpack/plugins/change_auth_plan/models/asset.py:191 -#: xpack/plugins/cloud/serializers/account_attrs.py:62 +#: xpack/plugins/change_auth_plan/models.py:47 +#: xpack/plugins/change_auth_plan/models.py:278 +#: xpack/plugins/cloud/serializers.py:67 msgid "Username" msgstr "用户名" @@ -234,7 +234,6 @@ msgstr "我的应用" #: applications/const.py:8 applications/models/account.py:10 #: applications/serializers/attrs/application_category/db.py:14 #: applications/serializers/attrs/application_type/mysql_workbench.py:26 -#: xpack/plugins/change_auth_plan/models/app.py:32 msgid "Database" msgstr "数据库" @@ -258,8 +257,6 @@ msgstr "自定义" #: users/templates/users/user_asset_permission.html:159 #: users/templates/users/user_database_app_permission.html:40 #: users/templates/users/user_database_app_permission.html:67 -#: xpack/plugins/change_auth_plan/models/app.py:36 -#: xpack/plugins/change_auth_plan/models/app.py:142 msgid "System user" msgstr "系统用户" @@ -269,7 +266,7 @@ msgid "Version" msgstr "版本" #: applications/models/account.py:18 xpack/plugins/cloud/models.py:82 -#: xpack/plugins/cloud/serializers/task.py:65 +#: xpack/plugins/cloud/serializers.py:204 msgid "Account" msgstr "账户" @@ -282,7 +279,6 @@ msgstr "应用管理" #: perms/models/application_permission.py:20 #: perms/serializers/application/user_permission.py:33 #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:20 -#: xpack/plugins/change_auth_plan/models/app.py:25 msgid "Category" msgstr "类别" @@ -293,8 +289,6 @@ msgstr "类别" #: terminal/models/storage.py:55 terminal/models/storage.py:116 #: tickets/models/flow.py:51 tickets/models/ticket.py:48 #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:27 -#: xpack/plugins/change_auth_plan/models/app.py:28 -#: xpack/plugins/change_auth_plan/models/app.py:148 msgid "Type" msgstr "类型" @@ -335,7 +329,7 @@ msgstr "集群" #: applications/serializers/attrs/application_category/db.py:11 #: ops/models/adhoc.py:146 settings/serializers/auth/radius.py:14 -#: xpack/plugins/cloud/serializers/account_attrs.py:60 +#: xpack/plugins/cloud/serializers.py:65 msgid "Host" msgstr "主机" @@ -345,8 +339,7 @@ msgstr "主机" #: applications/serializers/attrs/application_type/oracle.py:11 #: applications/serializers/attrs/application_type/pgsql.py:11 #: assets/models/asset.py:185 assets/models/domain.py:62 -#: settings/serializers/auth/radius.py:15 -#: xpack/plugins/cloud/serializers/account_attrs.py:61 +#: settings/serializers/auth/radius.py:15 xpack/plugins/cloud/serializers.py:66 msgid "Port" msgstr "端口" @@ -358,11 +351,6 @@ msgid "Application path" msgstr "应用路径" #: applications/serializers/attrs/application_category/remote_app.py:45 -#: xpack/plugins/change_auth_plan/serializers/asset.py:65 -#: xpack/plugins/change_auth_plan/serializers/asset.py:68 -#: xpack/plugins/change_auth_plan/serializers/asset.py:71 -#: xpack/plugins/change_auth_plan/serializers/asset.py:87 -#: xpack/plugins/cloud/serializers/account_attrs.py:44 msgid "This field is required." msgstr "该字段是必填项。" @@ -382,10 +370,10 @@ msgstr "目标URL" #: 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/base.py:39 -#: xpack/plugins/change_auth_plan/models/base.py:114 -#: xpack/plugins/change_auth_plan/models/base.py:182 -#: xpack/plugins/cloud/serializers/account_attrs.py:64 +#: 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/cloud/serializers.py:69 msgid "Password" msgstr "密码" @@ -437,13 +425,13 @@ msgstr "系统平台" #: assets/models/asset.py:186 assets/serializers/asset.py:65 #: perms/serializers/asset/user_permission.py:41 -#: xpack/plugins/cloud/models.py:104 xpack/plugins/cloud/serializers/task.py:42 +#: xpack/plugins/cloud/models.py:99 xpack/plugins/cloud/serializers.py:183 msgid "Protocols" msgstr "协议组" #: assets/models/asset.py:189 assets/models/user.py:198 #: perms/models/asset_permission.py:100 -#: xpack/plugins/change_auth_plan/models/asset.py:44 +#: xpack/plugins/change_auth_plan/models.py:56 #: xpack/plugins/gathered_user/models.py:24 msgid "Nodes" msgstr "节点" @@ -456,6 +444,7 @@ msgstr "激活" #: assets/models/asset.py:193 assets/models/cluster.py:19 #: assets/models/user.py:195 assets/models/user.py:330 templates/_nav.html:44 +#: xpack/plugins/cloud/models.py:96 xpack/plugins/cloud/serializers.py:205 msgid "Admin user" msgstr "特权用户" @@ -532,9 +521,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:51 users/models/user.py:645 -#: users/serializers/group.py:33 -#: xpack/plugins/change_auth_plan/models/base.py:45 -#: xpack/plugins/cloud/models.py:119 xpack/plugins/gathered_user/models.py:30 +#: 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 msgid "Created by" msgstr "创建者" @@ -544,7 +532,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:52 users/models/group.py:18 -#: users/models/user.py:836 xpack/plugins/cloud/models.py:122 +#: users/models/user.py:836 xpack/plugins/cloud/models.py:117 msgid "Date created" msgstr "创建日期" @@ -561,7 +549,7 @@ msgid "Ok" msgstr "成功" #: assets/models/base.py:32 audits/models.py:102 -#: xpack/plugins/cloud/const.py:28 +#: xpack/plugins/cloud/const.py:27 msgid "Failed" msgstr "失败" @@ -573,15 +561,15 @@ msgstr "可连接性" msgid "Date verified" msgstr "校验日期" -#: assets/models/base.py:178 xpack/plugins/change_auth_plan/models/asset.py:54 -#: xpack/plugins/change_auth_plan/models/asset.py:126 -#: xpack/plugins/change_auth_plan/models/asset.py:202 +#: 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 msgid "SSH private key" msgstr "SSH密钥" -#: assets/models/base.py:179 xpack/plugins/change_auth_plan/models/asset.py:57 -#: xpack/plugins/change_auth_plan/models/asset.py:122 -#: xpack/plugins/change_auth_plan/models/asset.py:198 +#: 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 msgid "SSH public key" msgstr "SSH公钥" @@ -743,7 +731,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/task.py:68 +#: xpack/plugins/cloud/models.py:93 xpack/plugins/cloud/serializers.py:206 msgid "Node" msgstr "节点" @@ -764,7 +752,7 @@ msgid "Username same with user" msgstr "用户名与用户相同" #: assets/models/user.py:200 assets/serializers/domain.py:28 -#: templates/_nav.html:39 xpack/plugins/change_auth_plan/models/asset.py:40 +#: templates/_nav.html:39 xpack/plugins/change_auth_plan/models.py:52 msgid "Assets" msgstr "资产" @@ -797,7 +785,7 @@ msgstr "认证方式" msgid "SFTP Root" msgstr "SFTP根路径" -#: assets/models/user.py:215 authentication/models.py:94 +#: assets/models/user.py:215 authentication/models.py:98 msgid "Token" msgstr "" @@ -1093,8 +1081,8 @@ msgstr "成功" #: terminal/models/session.py:52 #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:53 #: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:45 -#: xpack/plugins/change_auth_plan/models/base.py:105 -#: xpack/plugins/change_auth_plan/models/base.py:189 +#: xpack/plugins/change_auth_plan/models.py:177 +#: xpack/plugins/change_auth_plan/models.py:307 #: xpack/plugins/gathered_user/models.py:76 msgid "Date start" msgstr "开始日期" @@ -1166,13 +1154,13 @@ msgid "MFA" msgstr "多因子认证" #: audits/models.py:111 terminal/models/sharing.py:88 -#: xpack/plugins/change_auth_plan/models/base.py:187 -#: xpack/plugins/cloud/models.py:176 +#: xpack/plugins/change_auth_plan/models.py:303 +#: xpack/plugins/cloud/models.py:171 msgid "Reason" msgstr "原因" #: audits/models.py:112 tickets/models/ticket.py:57 -#: xpack/plugins/cloud/models.py:172 xpack/plugins/cloud/models.py:221 +#: xpack/plugins/cloud/models.py:167 xpack/plugins/cloud/models.py:216 msgid "Status" msgstr "状态" @@ -1206,7 +1194,7 @@ msgid "Hosts display" msgstr "主机名称" #: audits/serializers.py:89 ops/models/command.py:26 -#: xpack/plugins/cloud/models.py:170 +#: xpack/plugins/cloud/models.py:165 msgid "Result" msgstr "结果" @@ -1657,7 +1645,15 @@ msgstr "请修改密码" msgid "Private Token" msgstr "SSH密钥" -#: authentication/models.py:95 +#: authentication/models.py:49 settings/serializers/security.py:115 +msgid "Login Confirm" +msgstr "登录复核" + +#: authentication/models.py:90 +msgid "{} need confirm by {}" +msgstr "" + +#: authentication/models.py:99 msgid "Expired" msgstr "过期时间" @@ -2178,6 +2174,14 @@ msgstr "邮件" msgid "Site message" msgstr "站内信" +#: notifications/notifications.py:126 +msgid "" +"\n" +"Time: {}" +msgstr "" +"\n" +"时间:{}" + #: ops/api/celery.py:61 ops/api/celery.py:76 msgid "Waiting task start" msgstr "等待任务开始" @@ -2200,7 +2204,7 @@ msgid "Regularly perform" msgstr "定期执行" #: ops/mixin.py:106 ops/mixin.py:147 -#: xpack/plugins/change_auth_plan/serializers/base.py:42 +#: xpack/plugins/change_auth_plan/serializers.py:55 msgid "Periodic perform" msgstr "定时执行" @@ -2279,8 +2283,8 @@ msgstr "开始时间" msgid "End time" msgstr "完成时间" -#: ops/models/adhoc.py:246 xpack/plugins/change_auth_plan/models/base.py:108 -#: xpack/plugins/change_auth_plan/models/base.py:190 +#: ops/models/adhoc.py:246 xpack/plugins/change_auth_plan/models.py:180 +#: xpack/plugins/change_auth_plan/models.py:310 #: xpack/plugins/gathered_user/models.py:79 msgid "Time" msgstr "时间" @@ -2664,8 +2668,7 @@ msgstr "" "用户属性映射代表怎样将LDAP中用户属性映射到jumpserver用户上,username, name," "email 是jumpserver的用户需要属性" -#: settings/serializers/auth/ldap.py:58 -#: xpack/plugins/cloud/serializers/task.py:69 +#: settings/serializers/auth/ldap.py:58 xpack/plugins/cloud/serializers.py:207 #: xpack/plugins/gathered_user/serializers.py:20 msgid "Periodic display" msgstr "定时执行" @@ -2690,8 +2693,7 @@ msgstr "JumpServer 地址" msgid "Client Id" msgstr "客户端 ID" -#: settings/serializers/auth/oidc.py:18 -#: xpack/plugins/cloud/serializers/account_attrs.py:26 +#: settings/serializers/auth/oidc.py:18 xpack/plugins/cloud/serializers.py:33 msgid "Client Secret" msgstr "客户端密钥" @@ -3168,10 +3170,6 @@ msgstr "会话分享" msgid "Enabled, Allows user active session to be shared with other users" msgstr "开启后允许用户分享已连接的资产会话给它人,协同工作" -#: settings/serializers/security.py:115 -msgid "Login Confirm" -msgstr "登录复核" - #: settings/serializers/security.py:116 msgid "Enabled, please go to the user detail add approver" msgstr "启用后, 请在用户详情中添加审批人" @@ -3524,7 +3522,7 @@ msgstr "数据库应用" msgid "Perms" msgstr "权限管理" -#: templates/_nav.html:97 terminal/notifications.py:18 +#: templates/_nav.html:97 terminal/notifications.py:19 msgid "Sessions" msgstr "会话管理" @@ -3960,8 +3958,7 @@ msgstr "加入日期" msgid "Date left" msgstr "结束日期" -#: terminal/models/sharing.py:91 -#: xpack/plugins/change_auth_plan/models/base.py:178 +#: terminal/models/sharing.py:91 xpack/plugins/change_auth_plan/models.py:274 msgid "Finished" msgstr "结束" @@ -4033,11 +4030,29 @@ msgstr "命令存储" msgid "Replay storage" msgstr "录像存储" -#: terminal/notifications.py:68 +#: terminal/notifications.py:65 msgid "Danger command alert" msgstr "危险命令告警" -#: terminal/notifications.py:81 +#: terminal/notifications.py:78 +msgid "" +"\n" +"Command: %(command)s\n" +"Asset: %(hostname)s (%(host_ip)s)\n" +"User: %(user)s\n" +"Level: %(risk_level)s\n" +"Session: %(session_detail_url)s?oid=%(oid)s\n" +" " +msgstr "" +"\n" +"命令: %(command)s\n" +"资产: %(hostname)s (%(host_ip)s)\n" +"用户: %(user)s\n" +"等级: %(risk_level)s\n" +"会话: %(session_detail_url)s?oid=%(oid)s\n" +" " + +#: terminal/notifications.py:106 #, python-format msgid "" "\n" @@ -4067,11 +4082,11 @@ msgstr "" "
\n" " " -#: terminal/notifications.py:116 +#: terminal/notifications.py:135 msgid "Batch danger command alert" msgstr "批量危险命令告警" -#: terminal/notifications.py:127 +#: terminal/notifications.py:146 #, python-format msgid "" "\n" @@ -4103,6 +4118,20 @@ msgstr "" "
\n" " " +#: terminal/notifications.py:173 +#, python-format +msgid "" +"\n" +"Assets: %(assets)s\n" +"User: %(user)s\n" +"Level: %(risk_level)s\n" +"\n" +"Commands 👇 ------------\n" +"%(command)s\n" +"------------------------\n" +" " +msgstr "" + #: terminal/serializers/session.py:31 msgid "User ID" msgstr "用户 ID" @@ -4148,7 +4177,7 @@ msgstr "Secret key" msgid "Endpoint" msgstr "端点" -#: terminal/serializers/storage.py:66 xpack/plugins/cloud/models.py:214 +#: terminal/serializers/storage.py:66 xpack/plugins/cloud/models.py:209 msgid "Region" msgstr "地域" @@ -4448,6 +4477,18 @@ msgstr "流程" msgid "TicketFlow" msgstr "工单流程" +#: tickets/notifications.py:44 tickets/notifications.py:56 +msgid "click here to review" +msgstr "点击查看" + +#: tickets/notifications.py:74 +msgid "Your has a new ticket, applicant - {}" +msgstr "你有一个新的工单, 申请人 - {}" + +#: tickets/notifications.py:87 +msgid "Your ticket has been processed, processor - {}" +msgstr "你的工单已被处理, 处理人 - {}" + #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:16 #: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:16 msgid "Apply name" @@ -4555,26 +4596,6 @@ msgstr "工单流程 `{}` 不存在" msgid "The current organization type already exists" msgstr "当前组织已存在该类型" -#: tickets/utils.py:37 -msgid "New Ticket - {} ({})" -msgstr "新工单 - {} ({})" - -#: tickets/utils.py:39 -msgid "Your has a new ticket, applicant - {}" -msgstr "你有一个新的工单, 申请人 - {}" - -#: tickets/utils.py:41 tickets/utils.py:60 -msgid "click here to review" -msgstr "点击查看" - -#: tickets/utils.py:56 -msgid "Ticket has processed - {} ({})" -msgstr "工单已处理 - {} ({})" - -#: tickets/utils.py:58 -msgid "Your ticket has been processed, processor - {}" -msgstr "你的工单已被处理, 处理人 - {}" - #: users/api/user.py:208 msgid "Could not reset self otp, use profile reset instead" msgstr "不能在该页面重置多因子认证, 请去个人信息页面重置" @@ -4727,13 +4748,13 @@ msgstr "管理员" msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" -#: users/notifications.py:43 users/notifications.py:76 +#: users/notifications.py:12 users/notifications.py:45 #: users/templates/users/reset_password.html:5 #: users/templates/users/reset_password.html:6 msgid "Reset password" msgstr "重置密码" -#: users/notifications.py:44 +#: users/notifications.py:13 #, python-format msgid "" "\n" @@ -4773,7 +4794,7 @@ msgstr "" "%(login_url)s\n" "\n" -#: users/notifications.py:77 +#: users/notifications.py:46 #, python-format msgid "" "\n" @@ -4817,12 +4838,12 @@ msgstr "" "
\n" " " -#: users/notifications.py:116 users/notifications.py:150 +#: users/notifications.py:85 users/notifications.py:119 #: users/views/profile/reset.py:127 msgid "Reset password success" msgstr "重置密码成功" -#: users/notifications.py:117 +#: users/notifications.py:86 #, python-format msgid "" "\n" @@ -4871,7 +4892,7 @@ msgstr "" " \n" " " -#: users/notifications.py:151 +#: users/notifications.py:120 #, python-format msgid "" "\n" @@ -4934,11 +4955,11 @@ msgstr "" " \n" " " -#: users/notifications.py:194 users/notifications.py:230 +#: users/notifications.py:163 users/notifications.py:199 msgid "Security notice" msgstr "安全通知" -#: users/notifications.py:195 +#: users/notifications.py:164 #, python-format msgid "" "\n" @@ -4982,7 +5003,7 @@ msgstr "" "\n" " " -#: users/notifications.py:231 +#: users/notifications.py:200 #, python-format msgid "" "\n" @@ -5031,11 +5052,11 @@ msgstr "" "
\n" " " -#: users/notifications.py:268 users/notifications.py:287 +#: users/notifications.py:237 users/notifications.py:256 msgid "Expiration notice" msgstr "过期通知" -#: users/notifications.py:269 +#: users/notifications.py:238 #, python-format msgid "" "\n" @@ -5056,7 +5077,7 @@ msgstr "" "为了不影响您正常工作,请联系管理员确认。\n" " " -#: users/notifications.py:288 +#: users/notifications.py:257 #, python-format msgid "" "\n" @@ -5078,11 +5099,11 @@ msgstr "" "
\n" " " -#: users/notifications.py:308 users/notifications.py:329 +#: users/notifications.py:277 users/notifications.py:298 msgid "SSH Key Reset" msgstr "重置SSH密钥" -#: users/notifications.py:309 +#: users/notifications.py:278 #, python-format msgid "" "\n" @@ -5107,7 +5128,7 @@ msgstr "" "\n" " " -#: users/notifications.py:330 +#: users/notifications.py:299 #, python-format msgid "" "\n" @@ -5132,11 +5153,11 @@ msgstr "" "
\n" " " -#: users/notifications.py:352 users/notifications.py:372 +#: users/notifications.py:321 users/notifications.py:341 msgid "MFA Reset" msgstr "重置 MFA" -#: users/notifications.py:353 +#: users/notifications.py:322 #, python-format msgid "" "\n" @@ -5161,7 +5182,7 @@ msgstr "" "\n" " " -#: users/notifications.py:373 +#: users/notifications.py:342 #, python-format msgid "" "\n" @@ -5206,9 +5227,8 @@ msgstr "两次密码不一致" msgid "Is first login" msgstr "首次登录" -#: users/serializers/user.py:22 -#: xpack/plugins/change_auth_plan/models/base.py:32 -#: xpack/plugins/change_auth_plan/serializers/base.py:24 +#: users/serializers/user.py:22 xpack/plugins/change_auth_plan/models.py:61 +#: xpack/plugins/change_auth_plan/serializers.py:30 msgid "Password strategy" msgstr "密码策略" @@ -5597,147 +5617,90 @@ msgstr "* 新密码不能是最近 {} 次的密码" msgid "Reset password success, return to login page" msgstr "重置密码成功,返回到登录页面" -#: xpack/plugins/change_auth_plan/api/app.py:112 -#: xpack/plugins/change_auth_plan/api/asset.py:100 -msgid "The parameter 'action' must be [{}]" -msgstr "参数 'action' 必须是 [{}]" - #: xpack/plugins/change_auth_plan/meta.py:9 -#: xpack/plugins/change_auth_plan/models/asset.py:63 -#: xpack/plugins/change_auth_plan/models/asset.py:119 +#: xpack/plugins/change_auth_plan/models.py:89 +#: xpack/plugins/change_auth_plan/models.py:184 msgid "Change auth plan" msgstr "改密计划" -#: xpack/plugins/change_auth_plan/models/app.py:41 -#: xpack/plugins/change_auth_plan/models/app.py:90 -msgid "Application change auth plan" -msgstr "应用改密计划执行" - -#: xpack/plugins/change_auth_plan/models/app.py:94 -#: xpack/plugins/change_auth_plan/models/app.py:146 -msgid "Application change auth plan execution" -msgstr "应用改密计划执行" - -#: xpack/plugins/change_auth_plan/models/app.py:139 -msgid "App" -msgstr "应用" - -#: xpack/plugins/change_auth_plan/models/app.py:151 -msgid "Application change auth plan task" -msgstr "用用改密计划任务" - -#: xpack/plugins/change_auth_plan/models/asset.py:30 -msgid "Append SSH KEY" -msgstr "追加" - -#: xpack/plugins/change_auth_plan/models/asset.py:31 -msgid "Empty and append SSH KEY" -msgstr "清空所有并添加" - -#: xpack/plugins/change_auth_plan/models/asset.py:32 -msgid "Empty pre add and append SSH KEY" -msgstr "清空上次并添加" - -#: xpack/plugins/change_auth_plan/models/asset.py:50 -#: xpack/plugins/change_auth_plan/serializers/asset.py:34 -msgid "SSH Key strategy" -msgstr "SSH 密钥策略" - -#: xpack/plugins/change_auth_plan/models/asset.py:130 -#: xpack/plugins/change_auth_plan/models/asset.py:206 -msgid "Change auth plan execution" -msgstr "改密计划执行" - -#: xpack/plugins/change_auth_plan/models/asset.py:213 -msgid "Change auth plan task" -msgstr "改密计划任务" - -#: xpack/plugins/change_auth_plan/models/base.py:24 +#: xpack/plugins/change_auth_plan/models.py:41 msgid "Custom password" msgstr "自定义密码" -#: xpack/plugins/change_auth_plan/models/base.py:25 +#: xpack/plugins/change_auth_plan/models.py:42 msgid "All assets use the same random password" msgstr "使用相同的随机密码" -#: xpack/plugins/change_auth_plan/models/base.py:26 +#: xpack/plugins/change_auth_plan/models.py:43 msgid "All assets use different random password" msgstr "使用不同的随机密码" -#: xpack/plugins/change_auth_plan/models/base.py:36 +#: xpack/plugins/change_auth_plan/models.py:65 msgid "Password rules" msgstr "密码规则" -#: xpack/plugins/change_auth_plan/models/base.py:100 -msgid "Manual trigger" -msgstr "手动触发" - -#: xpack/plugins/change_auth_plan/models/base.py:101 -msgid "Timing trigger" -msgstr "定时触发" - -#: xpack/plugins/change_auth_plan/models/base.py:111 +#: xpack/plugins/change_auth_plan/models.py:187 msgid "Change auth plan snapshot" msgstr "改密计划快照" -#: xpack/plugins/change_auth_plan/models/base.py:118 -#: xpack/plugins/change_auth_plan/serializers/base.py:70 -msgid "Trigger mode" -msgstr "触发模式" +#: xpack/plugins/change_auth_plan/models.py:202 +#: xpack/plugins/change_auth_plan/models.py:296 +msgid "Change auth plan execution" +msgstr "改密计划执行" -#: xpack/plugins/change_auth_plan/models/base.py:173 +#: xpack/plugins/change_auth_plan/models.py:269 msgid "Ready" msgstr "准备" -#: xpack/plugins/change_auth_plan/models/base.py:174 +#: xpack/plugins/change_auth_plan/models.py:270 msgid "Preflight check" msgstr "改密前的校验" -#: xpack/plugins/change_auth_plan/models/base.py:175 +#: xpack/plugins/change_auth_plan/models.py:271 msgid "Change auth" msgstr "执行改密" -#: xpack/plugins/change_auth_plan/models/base.py:176 +#: xpack/plugins/change_auth_plan/models.py:272 msgid "Verify auth" msgstr "验证密码/密钥" -#: xpack/plugins/change_auth_plan/models/base.py:177 +#: xpack/plugins/change_auth_plan/models.py:273 msgid "Keep auth" msgstr "保存密码/密钥" -#: xpack/plugins/change_auth_plan/models/base.py:185 +#: xpack/plugins/change_auth_plan/models.py:300 msgid "Step" msgstr "步骤" -#: xpack/plugins/change_auth_plan/serializers/asset.py:31 -msgid "Change Password" -msgstr "更改密码" +#: xpack/plugins/change_auth_plan/models.py:317 +msgid "Change auth plan task" +msgstr "改密计划任务" -#: xpack/plugins/change_auth_plan/serializers/asset.py:32 -msgid "Change SSH Key" -msgstr "修改 SSH Key" - -#: xpack/plugins/change_auth_plan/serializers/base.py:43 +#: xpack/plugins/change_auth_plan/serializers.py:56 msgid "Run times" msgstr "执行次数" -#: xpack/plugins/change_auth_plan/serializers/base.py:54 +#: xpack/plugins/change_auth_plan/serializers.py:72 +msgid "* Please enter custom password" +msgstr "* 请输入自定义密码" + +#: xpack/plugins/change_auth_plan/serializers.py:82 msgid "* Please enter the correct password length" msgstr "* 请输入正确的密码长度" -#: xpack/plugins/change_auth_plan/serializers/base.py:57 +#: xpack/plugins/change_auth_plan/serializers.py:85 msgid "* Password length range 6-30 bits" msgstr "* 密码长度范围 6-30 位" -#: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:248 +#: xpack/plugins/change_auth_plan/utils.py:442 msgid "Invalid/incorrect password" msgstr "无效/错误 密码" -#: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:250 +#: xpack/plugins/change_auth_plan/utils.py:444 msgid "Failed to connect to the host" msgstr "连接主机失败" -#: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:252 +#: xpack/plugins/change_auth_plan/utils.py:446 msgid "Data could not be sent to remote" msgstr "无法将数据发送到远程" @@ -5793,35 +5756,31 @@ msgstr "华为私有云" msgid "Qingyun Private Cloud" msgstr "青云私有云" -#: xpack/plugins/cloud/const.py:19 -msgid "Google Cloud Platform" -msgstr "谷歌云" - -#: xpack/plugins/cloud/const.py:23 +#: xpack/plugins/cloud/const.py:22 msgid "Instance name" msgstr "实例名称" -#: xpack/plugins/cloud/const.py:24 +#: xpack/plugins/cloud/const.py:23 msgid "Instance name and Partial IP" msgstr "实例名称和部分IP" -#: xpack/plugins/cloud/const.py:29 +#: xpack/plugins/cloud/const.py:28 msgid "Succeed" msgstr "成功" -#: xpack/plugins/cloud/const.py:33 +#: xpack/plugins/cloud/const.py:32 msgid "Unsync" msgstr "未同步" -#: xpack/plugins/cloud/const.py:34 +#: xpack/plugins/cloud/const.py:33 msgid "New Sync" msgstr "新同步" -#: xpack/plugins/cloud/const.py:35 +#: xpack/plugins/cloud/const.py:34 msgid "Synced" msgstr "已同步" -#: xpack/plugins/cloud/const.py:36 +#: xpack/plugins/cloud/const.py:35 msgid "Released" msgstr "已释放" @@ -5837,7 +5796,7 @@ msgstr "云服务商" msgid "Cloud account" msgstr "云账号" -#: xpack/plugins/cloud/models.py:85 xpack/plugins/cloud/serializers/task.py:37 +#: xpack/plugins/cloud/models.py:85 xpack/plugins/cloud/serializers.py:179 msgid "Regions" msgstr "地域" @@ -5845,43 +5804,35 @@ msgstr "地域" msgid "Hostname strategy" msgstr "主机名策略" -#: xpack/plugins/cloud/models.py:97 xpack/plugins/cloud/serializers/task.py:66 -msgid "Unix admin user" -msgstr "Unix 管理员" - -#: xpack/plugins/cloud/models.py:101 xpack/plugins/cloud/serializers/task.py:67 -msgid "Windows admin user" -msgstr "Windows 管理员" - -#: xpack/plugins/cloud/models.py:107 xpack/plugins/cloud/serializers/task.py:45 +#: xpack/plugins/cloud/models.py:102 xpack/plugins/cloud/serializers.py:186 msgid "IP network segment group" msgstr "IP网段组" -#: xpack/plugins/cloud/models.py:110 xpack/plugins/cloud/serializers/task.py:70 +#: xpack/plugins/cloud/models.py:105 xpack/plugins/cloud/serializers.py:208 msgid "Always update" msgstr "总是更新" -#: xpack/plugins/cloud/models.py:116 +#: xpack/plugins/cloud/models.py:111 msgid "Date last sync" msgstr "最后同步日期" -#: xpack/plugins/cloud/models.py:127 xpack/plugins/cloud/models.py:168 +#: xpack/plugins/cloud/models.py:122 xpack/plugins/cloud/models.py:163 msgid "Sync instance task" msgstr "同步实例任务" -#: xpack/plugins/cloud/models.py:179 xpack/plugins/cloud/models.py:224 +#: xpack/plugins/cloud/models.py:174 xpack/plugins/cloud/models.py:219 msgid "Date sync" msgstr "同步日期" -#: xpack/plugins/cloud/models.py:204 +#: xpack/plugins/cloud/models.py:199 msgid "Sync task" msgstr "同步任务" -#: xpack/plugins/cloud/models.py:208 +#: xpack/plugins/cloud/models.py:203 msgid "Sync instance task history" msgstr "同步实例任务历史" -#: xpack/plugins/cloud/models.py:211 +#: xpack/plugins/cloud/models.py:206 msgid "Instance" msgstr "实例" @@ -6025,40 +5976,35 @@ msgstr "西南-贵阳1" msgid "EU-Paris" msgstr "欧洲-巴黎" -#: xpack/plugins/cloud/serializers/account_attrs.py:13 +#: xpack/plugins/cloud/serializers.py:21 msgid "AccessKey ID" msgstr "" -#: xpack/plugins/cloud/serializers/account_attrs.py:16 +#: xpack/plugins/cloud/serializers.py:24 msgid "AccessKey Secret" msgstr "" -#: xpack/plugins/cloud/serializers/account_attrs.py:23 +#: xpack/plugins/cloud/serializers.py:30 msgid "Client ID" msgstr "客户端 ID" -#: xpack/plugins/cloud/serializers/account_attrs.py:29 +#: xpack/plugins/cloud/serializers.py:36 msgid "Tenant ID" msgstr "租户 ID" -#: xpack/plugins/cloud/serializers/account_attrs.py:32 +#: xpack/plugins/cloud/serializers.py:39 msgid "Subscription ID" msgstr "订阅 ID" -#: xpack/plugins/cloud/serializers/account_attrs.py:81 -#: xpack/plugins/cloud/serializers/account_attrs.py:86 +#: xpack/plugins/cloud/serializers.py:51 +msgid "This field is required" +msgstr "该字段是必填项。" + +#: xpack/plugins/cloud/serializers.py:85 xpack/plugins/cloud/serializers.py:89 msgid "API Endpoint" msgstr "API 端点" -#: xpack/plugins/cloud/serializers/account_attrs.py:92 -msgid "Service account key" -msgstr "账户密钥" - -#: xpack/plugins/cloud/serializers/account_attrs.py:93 -msgid "The file is in JSON format" -msgstr "JSON 格式的文件" - -#: xpack/plugins/cloud/serializers/task.py:29 +#: xpack/plugins/cloud/serializers.py:171 msgid "" "The IP address that is first matched to will be used as the IP of the " "created asset.
The default * indicates a random match.
Format for " @@ -6067,11 +6013,11 @@ msgstr "" "第一个匹配到的 IP 地址将被用作创建的资产的 IP。
默认值 * 表示随机匹配。" "
格式为以逗号分隔的字符串,例如:192.168.1.0/24,10.1.1.1-10.1.1.20" -#: xpack/plugins/cloud/serializers/task.py:35 +#: xpack/plugins/cloud/serializers.py:177 msgid "History count" msgstr "执行次数" -#: xpack/plugins/cloud/serializers/task.py:36 +#: xpack/plugins/cloud/serializers.py:178 msgid "Instance count" msgstr "实例个数" @@ -6162,3 +6108,66 @@ msgstr "旗舰版" #: xpack/plugins/license/models.py:77 msgid "Community edition" msgstr "社区版" + +#~ msgid "New Ticket - {} ({})" +#~ msgstr "新工单 - {} ({})" + +#~ msgid "Ticket has processed - {} ({})" +#~ msgstr "工单已处理 - {} ({})" + +#~ msgid "The parameter 'action' must be [{}]" +#~ msgstr "参数 'action' 必须是 [{}]" + +#~ msgid "Application change auth plan" +#~ msgstr "应用改密计划执行" + +#~ msgid "Application change auth plan execution" +#~ msgstr "应用改密计划执行" + +#~ msgid "App" +#~ msgstr "应用" + +#~ msgid "Application change auth plan task" +#~ msgstr "用用改密计划任务" + +#~ msgid "Append SSH KEY" +#~ msgstr "追加" + +#~ msgid "Empty and append SSH KEY" +#~ msgstr "清空所有并添加" + +#~ msgid "Empty pre add and append SSH KEY" +#~ msgstr "清空上次并添加" + +#~ msgid "SSH Key strategy" +#~ msgstr "SSH 密钥策略" + +#~ msgid "Manual trigger" +#~ msgstr "手动触发" + +#~ msgid "Timing trigger" +#~ msgstr "定时触发" + +#~ msgid "Trigger mode" +#~ msgstr "触发模式" + +#~ msgid "Change Password" +#~ msgstr "更改密码" + +#~ msgid "Change SSH Key" +#~ msgstr "修改 SSH Key" + +#~ msgid "Google Cloud Platform" +#~ msgstr "谷歌云" + +#~ msgid "Unix admin user" +#~ msgstr "Unix 管理员" + +#~ msgid "Windows admin user" +#~ msgstr "Windows 管理员" + +#~ msgid "Service account key" +#~ msgstr "账户密钥" + +#~ msgid "The file is in JSON format" +#~ msgstr "JSON 格式的文件"