From 6e3369c9445c7b0c54cdd0df2a67f7bc26cb9685 Mon Sep 17 00:00:00 2001 From: xinwen Date: Wed, 24 Jun 2020 16:17:58 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20sftp=20log=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0009_auto_20200624_1654.py | 18 + apps/audits/models.py | 20 +- apps/audits/serializers.py | 3 +- apps/locale/zh/LC_MESSAGES/django.mo | Bin 53928 -> 54151 bytes apps/locale/zh/LC_MESSAGES/django.po | 307 ++++++++++-------- 5 files changed, 206 insertions(+), 142 deletions(-) create mode 100644 apps/audits/migrations/0009_auto_20200624_1654.py diff --git a/apps/audits/migrations/0009_auto_20200624_1654.py b/apps/audits/migrations/0009_auto_20200624_1654.py new file mode 100644 index 000000000..6630558cf --- /dev/null +++ b/apps/audits/migrations/0009_auto_20200624_1654.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.10 on 2020-06-24 08:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('audits', '0008_auto_20200508_2105'), + ] + + operations = [ + migrations.AlterField( + model_name='ftplog', + name='operate', + field=models.CharField(choices=[('Delete', 'Delete'), ('Upload', 'Upload'), ('Download', 'Download'), ('Rmdir', 'Rmdir'), ('Rename', 'Rename'), ('Mkdir', 'Mkdir'), ('Symlink', 'Symlink')], max_length=16, verbose_name='Operate'), + ), + ] diff --git a/apps/audits/models.py b/apps/audits/models.py index 406d0aa44..38a41554f 100644 --- a/apps/audits/models.py +++ b/apps/audits/models.py @@ -14,12 +14,30 @@ __all__ = [ class FTPLog(OrgModelMixin): + OPERATE_DELETE = 'Delete' + OPERATE_UPLOAD = 'Upload' + OPERATE_DOWNLOAD = 'Download' + OPERATE_RMDIR = 'Rmdir' + OPERATE_RENAME = 'Rename' + OPERATE_MKDIR = 'Mkdir' + OPERATE_SYMLINK = 'Symlink' + + OPERATE_CHOICES = ( + (OPERATE_DELETE, _('Delete')), + (OPERATE_UPLOAD, _('Upload')), + (OPERATE_DOWNLOAD, _('Download')), + (OPERATE_RMDIR, _('Rmdir')), + (OPERATE_RENAME, _('Rename')), + (OPERATE_MKDIR, _('Mkdir')), + (OPERATE_SYMLINK, _('Symlink')) + ) + id = models.UUIDField(default=uuid.uuid4, primary_key=True) user = models.CharField(max_length=128, verbose_name=_('User')) remote_addr = models.CharField(max_length=128, verbose_name=_("Remote addr"), blank=True, null=True) asset = models.CharField(max_length=1024, verbose_name=_("Asset")) system_user = models.CharField(max_length=128, verbose_name=_("System user")) - operate = models.CharField(max_length=16, verbose_name=_("Operate")) + operate = models.CharField(max_length=16, verbose_name=_("Operate"), choices=OPERATE_CHOICES) filename = models.CharField(max_length=1024, verbose_name=_("Filename")) is_success = models.BooleanField(default=True, verbose_name=_("Success")) date_start = models.DateTimeField(auto_now_add=True, verbose_name=_('Date start')) diff --git a/apps/audits/serializers.py b/apps/audits/serializers.py index d4213f243..23d562c8d 100644 --- a/apps/audits/serializers.py +++ b/apps/audits/serializers.py @@ -12,12 +12,13 @@ from . import models class FTPLogSerializer(serializers.ModelSerializer): + operate_display = serializers.ReadOnlyField(source='get_operate_display') class Meta: model = models.FTPLog fields = ( 'id', 'user', 'remote_addr', 'asset', 'system_user', - 'operate', 'filename', 'is_success', 'date_start' + 'operate', 'filename', 'is_success', 'date_start', 'operate_display' ) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 1fa128c6a49cb95568a8074b96bb6c24e150b1f2..23c9e90439ea278a96a5a632560b0e49fddf96f9 100644 GIT binary patch delta 16194 zcmZA71#}fx*T(S)5fYpP3xSeAa0?ElxVuZy;_hyp;I2W7yK90McZx%SqQ#|e1*_0P zzyFijtkw0+TBpCW_c?QH=H8pPZ`ZB%9lzGsy%+2^$KiUDz;QBQTw2F@#^DFB( zDats`mzWZ#VmBO$e_>

0j1yz9;^!yyG^SFX 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 delta 15999 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 Np^HKB*G_H-{68o0c%c9Q diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index d2612f98a..66df40408 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-16 11:02+0800\n" +"POT-Creation-Date: 2020-06-24 16:46+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -28,7 +28,7 @@ msgstr "自定义" #: assets/models/label.py:18 ops/mixin.py:24 orgs/models.py:12 #: perms/models/base.py:48 settings/models.py:27 terminal/models.py:26 #: terminal/models.py:342 terminal/models.py:374 terminal/models.py:411 -#: users/forms/profile.py:20 users/models/group.py:15 users/models/user.py:466 +#: users/forms/profile.py:20 users/models/group.py:15 users/models/user.py:467 #: users/templates/users/_select_user_modal.html:13 #: users/templates/users/user_asset_permission.html:37 #: users/templates/users/user_asset_permission.html:154 @@ -77,14 +77,14 @@ msgstr "数据库" #: assets/models/group.py:23 assets/models/label.py:23 ops/models/adhoc.py:37 #: orgs/models.py:18 perms/models/base.py:56 settings/models.py:32 #: terminal/models.py:36 terminal/models.py:381 terminal/models.py:418 -#: users/models/group.py:16 users/models/user.py:499 +#: users/models/group.py:16 users/models/user.py:500 #: users/templates/users/user_detail.html:115 #: users/templates/users/user_granted_database_app.html:38 #: users/templates/users/user_granted_remote_app.html:37 #: users/templates/users/user_group_detail.html:62 #: users/templates/users/user_group_list.html:16 #: users/templates/users/user_profile.html:138 -#: xpack/plugins/change_auth_plan/models.py:76 xpack/plugins/cloud/models.py:53 +#: xpack/plugins/change_auth_plan/models.py:77 xpack/plugins/cloud/models.py:53 #: xpack/plugins/cloud/models.py:139 xpack/plugins/gathered_user/models.py:26 msgid "Comment" msgstr "备注" @@ -103,13 +103,14 @@ msgstr "数据库应用" #: assets/models/authbook.py:27 assets/models/gathered_user.py:14 #: assets/serializers/admin_user.py:32 assets/serializers/asset_user.py:47 #: assets/serializers/asset_user.py:84 assets/serializers/system_user.py:44 -#: assets/serializers/system_user.py:176 audits/models.py:20 +#: assets/serializers/system_user.py:176 audits/models.py:38 #: perms/forms/asset_permission.py:89 perms/models/asset_permission.py:80 #: templates/index.html:82 terminal/backends/command/models.py:19 -#: terminal/models.py:187 users/templates/users/user_asset_permission.html:40 +#: terminal/backends/command/serializers.py:13 terminal/models.py:187 +#: users/templates/users/user_asset_permission.html:40 #: users/templates/users/user_asset_permission.html:70 #: users/templates/users/user_granted_remote_app.html:36 -#: xpack/plugins/change_auth_plan/models.py:282 +#: xpack/plugins/change_auth_plan/models.py:283 #: xpack/plugins/cloud/models.py:269 msgid "Asset" msgstr "资产" @@ -131,9 +132,9 @@ msgstr "参数" #: assets/models/base.py:240 assets/models/cluster.py:28 #: assets/models/cmd_filter.py:26 assets/models/cmd_filter.py:59 #: assets/models/group.py:21 common/mixins/models.py:49 orgs/models.py:16 -#: perms/models/base.py:54 users/models/user.py:507 +#: perms/models/base.py:54 users/models/user.py:508 #: users/serializers/group.py:35 users/templates/users/user_detail.html:97 -#: xpack/plugins/change_auth_plan/models.py:80 xpack/plugins/cloud/models.py:56 +#: xpack/plugins/change_auth_plan/models.py:81 xpack/plugins/cloud/models.py:56 #: xpack/plugins/cloud/models.py:145 xpack/plugins/gathered_user/models.py:30 msgid "Created by" msgstr "创建者" @@ -232,7 +233,7 @@ msgstr "网域" #: assets/models/asset.py:195 assets/models/user.py:109 #: perms/models/asset_permission.py:81 -#: xpack/plugins/change_auth_plan/models.py:55 +#: xpack/plugins/change_auth_plan/models.py:56 #: xpack/plugins/gathered_user/models.py:24 msgid "Nodes" msgstr "节点" @@ -334,16 +335,16 @@ msgid "AuthBook" msgstr "" #: assets/models/base.py:233 assets/models/gathered_user.py:15 -#: audits/models.py:81 authentication/forms.py:10 +#: audits/models.py:99 authentication/forms.py:10 #: authentication/templates/authentication/login.html:21 #: authentication/templates/authentication/xpack_login.html:93 -#: ops/models/adhoc.py:148 users/forms/profile.py:19 users/models/user.py:464 +#: ops/models/adhoc.py:148 users/forms/profile.py:19 users/models/user.py:465 #: users/templates/users/_select_user_modal.html:14 #: users/templates/users/user_detail.html:53 #: users/templates/users/user_list.html:15 #: users/templates/users/user_profile.html:47 -#: xpack/plugins/change_auth_plan/models.py:46 -#: xpack/plugins/change_auth_plan/models.py:278 +#: xpack/plugins/change_auth_plan/models.py:47 +#: xpack/plugins/change_auth_plan/models.py:279 msgid "Username" msgstr "用户名" @@ -358,21 +359,21 @@ msgstr "用户名" #: users/templates/users/user_profile_update.html:41 #: users/templates/users/user_pubkey_update.html:41 #: users/templates/users/user_update.html:20 -#: xpack/plugins/change_auth_plan/models.py:67 -#: xpack/plugins/change_auth_plan/models.py:190 -#: xpack/plugins/change_auth_plan/models.py:285 +#: xpack/plugins/change_auth_plan/models.py:68 +#: xpack/plugins/change_auth_plan/models.py:191 +#: xpack/plugins/change_auth_plan/models.py:286 msgid "Password" msgstr "密码" -#: assets/models/base.py:235 xpack/plugins/change_auth_plan/models.py:71 -#: xpack/plugins/change_auth_plan/models.py:197 -#: xpack/plugins/change_auth_plan/models.py:292 +#: assets/models/base.py:235 xpack/plugins/change_auth_plan/models.py:72 +#: xpack/plugins/change_auth_plan/models.py:198 +#: xpack/plugins/change_auth_plan/models.py:293 msgid "SSH private key" msgstr "SSH密钥" -#: assets/models/base.py:236 xpack/plugins/change_auth_plan/models.py:74 -#: xpack/plugins/change_auth_plan/models.py:193 -#: xpack/plugins/change_auth_plan/models.py:288 +#: assets/models/base.py:236 xpack/plugins/change_auth_plan/models.py:75 +#: xpack/plugins/change_auth_plan/models.py:194 +#: xpack/plugins/change_auth_plan/models.py:289 msgid "SSH public key" msgstr "SSH公钥" @@ -389,7 +390,7 @@ msgstr "带宽" msgid "Contact" msgstr "联系人" -#: assets/models/cluster.py:22 users/models/user.py:485 +#: assets/models/cluster.py:22 users/models/user.py:486 #: users/templates/users/user_detail.html:62 msgid "Phone" msgstr "手机" @@ -415,7 +416,7 @@ msgid "Default" msgstr "默认" #: assets/models/cluster.py:36 assets/models/label.py:14 -#: users/models/user.py:626 +#: users/models/user.py:627 msgid "System" msgstr "系统" @@ -448,7 +449,7 @@ msgid "Regex" msgstr "正则表达式" #: assets/models/cmd_filter.py:40 ops/models/command.py:23 -#: terminal/models.py:196 +#: terminal/backends/command/serializers.py:15 terminal/models.py:196 msgid "Command" msgstr "命令" @@ -480,7 +481,7 @@ msgstr "内容" msgid "One line one command" msgstr "每行一个命令" -#: assets/models/cmd_filter.py:55 audits/models.py:39 +#: assets/models/cmd_filter.py:55 audits/models.py:57 #: authentication/templates/authentication/_access_key_modal.html:34 #: perms/forms/asset_permission.py:20 tickets/serializers/ticket.py:26 #: users/templates/users/_granted_assets.html:29 @@ -529,14 +530,15 @@ msgstr "资产组" msgid "Default asset group" msgstr "默认资产组" -#: assets/models/label.py:15 audits/models.py:18 audits/models.py:38 -#: audits/models.py:51 audits/serializers.py:76 authentication/models.py:43 +#: assets/models/label.py:15 audits/models.py:36 audits/models.py:56 +#: audits/models.py:69 audits/serializers.py:77 authentication/models.py:43 #: perms/forms/asset_permission.py:83 perms/forms/database_app_permission.py:38 #: perms/forms/remote_app_permission.py:40 perms/models/base.py:49 #: templates/index.html:78 terminal/backends/command/models.py:18 -#: terminal/models.py:185 tickets/models/ticket.py:33 -#: tickets/models/ticket.py:128 users/forms/group.py:15 -#: users/models/user.py:159 users/models/user.py:175 users/models/user.py:614 +#: terminal/backends/command/serializers.py:12 terminal/models.py:185 +#: tickets/models/ticket.py:33 tickets/models/ticket.py:128 +#: tickets/serializers/ticket.py:27 users/forms/group.py:15 +#: users/models/user.py:160 users/models/user.py:176 users/models/user.py:615 #: users/serializers/group.py:20 #: users/templates/users/user_asset_permission.html:38 #: users/templates/users/user_asset_permission.html:64 @@ -601,12 +603,12 @@ msgid "Username same with user" msgstr "用户名与用户相同" #: assets/models/user.py:110 templates/_nav.html:39 -#: xpack/plugins/change_auth_plan/models.py:51 +#: xpack/plugins/change_auth_plan/models.py:52 msgid "Assets" msgstr "资产管理" #: assets/models/user.py:111 templates/_nav.html:17 -#: users/views/profile/password.py:40 users/views/profile/pubkey.py:36 +#: users/views/profile/password.py:42 users/views/profile/pubkey.py:36 msgid "Users" msgstr "用户管理" @@ -635,12 +637,13 @@ msgstr "登录模式" msgid "SFTP Root" msgstr "SFTP根路径" -#: assets/models/user.py:195 audits/models.py:21 +#: assets/models/user.py:195 audits/models.py:39 #: perms/forms/asset_permission.py:95 perms/forms/remote_app_permission.py:49 #: perms/models/asset_permission.py:82 #: perms/models/database_app_permission.py:22 #: perms/models/remote_app_permission.py:16 templates/_nav.html:45 -#: terminal/backends/command/models.py:20 terminal/models.py:189 +#: terminal/backends/command/models.py:20 +#: terminal/backends/command/serializers.py:14 terminal/models.py:189 #: users/templates/users/_granted_assets.html:27 #: users/templates/users/user_asset_permission.html:42 #: users/templates/users/user_asset_permission.html:76 @@ -685,7 +688,7 @@ msgstr "硬件信息" msgid "Org name" msgstr "组织名称" -#: assets/serializers/asset.py:144 assets/serializers/asset.py:181 +#: assets/serializers/asset.py:144 assets/serializers/asset.py:175 msgid "Connectivity" msgstr "连接" @@ -699,14 +702,14 @@ msgid "Backend" msgstr "后端" #: assets/serializers/asset_user.py:75 users/forms/profile.py:148 -#: users/models/user.py:496 users/templates/users/user_password_update.html:48 +#: users/models/user.py:497 users/templates/users/user_password_update.html:48 #: users/templates/users/user_profile.html:69 #: users/templates/users/user_profile_update.html:46 #: users/templates/users/user_pubkey_update.html:46 msgid "Public key" msgstr "SSH公钥" -#: assets/serializers/asset_user.py:79 users/models/user.py:493 +#: assets/serializers/asset_user.py:79 users/models/user.py:494 msgid "Private key" msgstr "ssh私钥" @@ -855,37 +858,74 @@ msgstr "为了安全,禁止推送用户 {}" msgid "No assets matched, stop task" msgstr "没有匹配到资产,结束任务" -#: audits/models.py:19 audits/models.py:42 audits/models.py:53 +#: audits/models.py:26 audits/models.py:53 +#: authentication/templates/authentication/_access_key_modal.html:65 +#: users/templates/users/user_asset_permission.html:128 +#: users/templates/users/user_database_app_permission.html:111 +#: users/templates/users/user_detail.html:16 +#: users/templates/users/user_group_detail.html:27 +#: users/templates/users/user_group_list.html:53 +#: users/templates/users/user_list.html:94 +#: users/templates/users/user_list.html:98 +#: users/templates/users/user_remote_app_permission.html:111 +msgid "Delete" +msgstr "删除文件" + +#: audits/models.py:27 +msgid "Upload" +msgstr "上传文件" + +#: audits/models.py:28 +msgid "Download" +msgstr "下载文件" + +#: audits/models.py:29 +msgid "Rmdir" +msgstr "删除目录" + +#: audits/models.py:30 +msgid "Rename" +msgstr "重命名" + +#: audits/models.py:31 +msgid "Mkdir" +msgstr "创建目录" + +#: audits/models.py:32 +msgid "Symlink" +msgstr "建立软链接" + +#: audits/models.py:37 audits/models.py:60 audits/models.py:71 #: terminal/models.py:192 msgid "Remote addr" msgstr "远端地址" -#: audits/models.py:22 +#: audits/models.py:40 msgid "Operate" msgstr "操作" -#: audits/models.py:23 +#: audits/models.py:41 msgid "Filename" msgstr "文件名" -#: audits/models.py:24 audits/models.py:77 +#: audits/models.py:42 audits/models.py:95 #: users/templates/users/user_detail.html:487 msgid "Success" msgstr "成功" -#: audits/models.py:25 ops/models/command.py:28 perms/models/base.py:52 -#: terminal/models.py:199 xpack/plugins/change_auth_plan/models.py:176 -#: xpack/plugins/change_auth_plan/models.py:307 +#: audits/models.py:43 ops/models/command.py:28 perms/models/base.py:52 +#: terminal/models.py:199 xpack/plugins/change_auth_plan/models.py:177 +#: xpack/plugins/change_auth_plan/models.py:308 #: xpack/plugins/gathered_user/models.py:76 msgid "Date start" msgstr "开始日期" -#: audits/models.py:33 +#: audits/models.py:51 #: authentication/templates/authentication/_access_key_modal.html:22 msgid "Create" msgstr "创建" -#: audits/models.py:34 templates/_csv_import_export.html:18 +#: audits/models.py:52 templates/_csv_import_export.html:18 #: templates/_csv_update_modal.html:6 #: users/templates/users/user_asset_permission.html:127 #: users/templates/users/user_database_app_permission.html:110 @@ -901,105 +941,92 @@ msgstr "创建" msgid "Update" msgstr "更新" -#: audits/models.py:35 -#: authentication/templates/authentication/_access_key_modal.html:65 -#: users/templates/users/user_asset_permission.html:128 -#: users/templates/users/user_database_app_permission.html:111 -#: users/templates/users/user_detail.html:16 -#: users/templates/users/user_group_detail.html:27 -#: users/templates/users/user_group_list.html:53 -#: users/templates/users/user_list.html:94 -#: users/templates/users/user_list.html:98 -#: users/templates/users/user_remote_app_permission.html:111 -msgid "Delete" -msgstr "删除" - -#: audits/models.py:40 +#: audits/models.py:58 msgid "Resource Type" msgstr "资源类型" -#: audits/models.py:41 +#: audits/models.py:59 msgid "Resource" msgstr "资源" -#: audits/models.py:43 audits/models.py:54 +#: audits/models.py:61 audits/models.py:72 msgid "Datetime" msgstr "日期" -#: audits/models.py:52 +#: audits/models.py:70 msgid "Change by" msgstr "修改者" -#: audits/models.py:71 users/templates/users/user_detail.html:84 +#: audits/models.py:89 users/templates/users/user_detail.html:84 msgid "Disabled" msgstr "禁用" -#: audits/models.py:72 settings/models.py:31 +#: audits/models.py:90 settings/models.py:31 #: users/templates/users/user_detail.html:82 msgid "Enabled" msgstr "启用" -#: audits/models.py:73 +#: audits/models.py:91 msgid "-" msgstr "" -#: audits/models.py:78 xpack/plugins/cloud/models.py:204 +#: audits/models.py:96 xpack/plugins/cloud/models.py:204 msgid "Failed" msgstr "失败" -#: audits/models.py:82 +#: audits/models.py:100 msgid "Login type" msgstr "登录方式" -#: audits/models.py:83 +#: audits/models.py:101 msgid "Login ip" msgstr "登录IP" -#: audits/models.py:84 +#: audits/models.py:102 msgid "Login city" msgstr "登录城市" -#: audits/models.py:85 +#: audits/models.py:103 msgid "User agent" msgstr "Agent" -#: audits/models.py:86 +#: audits/models.py:104 #: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: authentication/templates/authentication/login_otp.html:6 -#: users/forms/profile.py:52 users/models/user.py:488 +#: users/forms/profile.py:52 users/models/user.py:489 #: users/serializers/user.py:216 users/templates/users/user_detail.html:77 #: users/templates/users/user_profile.html:87 msgid "MFA" msgstr "多因子认证" -#: audits/models.py:87 xpack/plugins/change_auth_plan/models.py:303 +#: audits/models.py:105 xpack/plugins/change_auth_plan/models.py:304 #: xpack/plugins/cloud/models.py:217 msgid "Reason" msgstr "原因" -#: audits/models.py:88 tickets/serializers/ticket.py:25 +#: audits/models.py:106 tickets/serializers/ticket.py:25 #: xpack/plugins/cloud/models.py:214 xpack/plugins/cloud/models.py:272 msgid "Status" msgstr "状态" -#: audits/models.py:89 +#: audits/models.py:107 msgid "Date login" msgstr "登录日期" -#: audits/serializers.py:61 audits/serializers.py:73 ops/models/adhoc.py:244 +#: audits/serializers.py:62 audits/serializers.py:74 ops/models/adhoc.py:244 msgid "Is success" msgstr "是否成功" -#: audits/serializers.py:72 ops/models/command.py:24 +#: audits/serializers.py:73 ops/models/command.py:24 #: xpack/plugins/cloud/models.py:212 msgid "Result" msgstr "结果" -#: audits/serializers.py:74 +#: audits/serializers.py:75 msgid "Hosts" msgstr "主机" -#: audits/serializers.py:75 +#: audits/serializers.py:76 msgid "Run as" msgstr "运行用户" @@ -1106,8 +1133,8 @@ msgid "" "after {} minutes)" msgstr "账号已被锁定(请联系管理员解锁 或 {}分钟后重试)" -#: authentication/errors.py:48 users/views/profile/otp.py:63 -#: users/views/profile/otp.py:102 users/views/profile/otp.py:121 +#: authentication/errors.py:48 users/views/profile/otp.py:107 +#: users/views/profile/otp.py:146 users/views/profile/otp.py:166 msgid "MFA code invalid, or ntp sync server time" msgstr "MFA验证码不正确,或者服务器端时间不对" @@ -1186,7 +1213,7 @@ msgid "Show" msgstr "显示" #: authentication/templates/authentication/_access_key_modal.html:66 -#: users/models/user.py:386 users/serializers/user.py:213 +#: users/models/user.py:387 users/serializers/user.py:213 #: users/templates/users/user_profile.html:94 #: users/templates/users/user_profile.html:163 #: users/templates/users/user_profile.html:166 @@ -1195,7 +1222,7 @@ msgid "Disable" msgstr "禁用" #: authentication/templates/authentication/_access_key_modal.html:67 -#: users/models/user.py:387 users/serializers/user.py:214 +#: users/models/user.py:388 users/serializers/user.py:214 #: users/templates/users/user_profile.html:92 #: users/templates/users/user_profile.html:170 msgid "Enable" @@ -1520,8 +1547,8 @@ msgstr "开始时间" msgid "End time" msgstr "完成时间" -#: ops/models/adhoc.py:242 xpack/plugins/change_auth_plan/models.py:179 -#: xpack/plugins/change_auth_plan/models.py:310 +#: ops/models/adhoc.py:242 xpack/plugins/change_auth_plan/models.py:180 +#: xpack/plugins/change_auth_plan/models.py:311 #: xpack/plugins/gathered_user/models.py:79 msgid "Time" msgstr "时间" @@ -1604,7 +1631,7 @@ msgstr "提示:RDP 协议不支持单独控制上传或下载文件" #: perms/forms/asset_permission.py:86 perms/forms/database_app_permission.py:41 #: perms/forms/remote_app_permission.py:43 perms/models/base.py:50 #: templates/_nav.html:21 users/forms/user.py:168 users/models/group.py:31 -#: users/models/user.py:472 users/templates/users/_select_user_modal.html:16 +#: users/models/user.py:473 users/templates/users/_select_user_modal.html:16 #: users/templates/users/user_asset_permission.html:39 #: users/templates/users/user_asset_permission.html:67 #: users/templates/users/user_database_app_permission.html:38 @@ -1657,7 +1684,7 @@ msgstr "动作" msgid "Asset permission" msgstr "资产授权" -#: perms/models/base.py:53 users/models/user.py:504 +#: perms/models/base.py:53 users/models/user.py:505 #: users/templates/users/user_detail.html:93 #: users/templates/users/user_profile.html:120 msgid "Date expired" @@ -2320,14 +2347,17 @@ msgid "Input" msgstr "输入" #: terminal/backends/command/models.py:22 +#: terminal/backends/command/serializers.py:16 msgid "Output" msgstr "输出" #: terminal/backends/command/models.py:23 +#: terminal/backends/command/serializers.py:17 msgid "Session" msgstr "会话" #: terminal/backends/command/models.py:24 +#: terminal/backends/command/serializers.py:18 msgid "Risk level" msgstr "风险等级" @@ -2553,7 +2583,7 @@ msgstr "确认密码" msgid "Password does not match" msgstr "密码不一致" -#: users/forms/profile.py:89 users/models/user.py:468 +#: users/forms/profile.py:89 users/models/user.py:469 #: users/templates/users/user_detail.html:57 #: users/templates/users/user_profile.html:59 msgid "Email" @@ -2594,7 +2624,7 @@ msgstr "不能和原来的密钥相同" msgid "Not a valid ssh public key" msgstr "SSH密钥不合法" -#: users/forms/user.py:27 users/models/user.py:476 +#: users/forms/user.py:27 users/models/user.py:477 #: users/templates/users/_select_user_modal.html:15 #: users/templates/users/user_detail.html:73 #: users/templates/users/user_list.html:16 @@ -2602,7 +2632,7 @@ msgstr "SSH密钥不合法" msgid "Role" msgstr "角色" -#: users/forms/user.py:31 users/models/user.py:511 +#: users/forms/user.py:31 users/models/user.py:512 #: users/templates/users/user_detail.html:89 #: users/templates/users/user_list.html:18 #: users/templates/users/user_profile.html:102 @@ -2617,7 +2647,7 @@ msgstr "复制用户公钥到这里" msgid "Join user groups" msgstr "添加到用户组" -#: users/forms/user.py:103 users/views/profile/password.py:57 +#: users/forms/user.py:103 users/views/profile/password.py:59 #: users/views/profile/reset.py:123 msgid "* Your password does not meet the requirements" msgstr "* 您的密码不符合要求" @@ -2631,52 +2661,52 @@ msgid "Set password" msgstr "设置密码" #: users/forms/user.py:132 users/serializers/user.py:38 -#: xpack/plugins/change_auth_plan/models.py:60 +#: xpack/plugins/change_auth_plan/models.py:61 #: xpack/plugins/change_auth_plan/serializers.py:30 msgid "Password strategy" msgstr "密码策略" -#: users/models/user.py:158 users/models/user.py:622 +#: users/models/user.py:159 users/models/user.py:623 msgid "Administrator" msgstr "管理员" -#: users/models/user.py:160 +#: users/models/user.py:161 msgid "Application" msgstr "应用程序" -#: users/models/user.py:161 +#: users/models/user.py:162 msgid "Auditor" msgstr "审计员" -#: users/models/user.py:171 +#: users/models/user.py:172 msgid "Org admin" msgstr "组织管理员" -#: users/models/user.py:173 +#: users/models/user.py:174 msgid "Org auditor" msgstr "组织审计员" -#: users/models/user.py:388 users/templates/users/user_profile.html:90 +#: users/models/user.py:389 users/templates/users/user_profile.html:90 msgid "Force enable" msgstr "强制启用" -#: users/models/user.py:455 +#: users/models/user.py:456 msgid "Local" msgstr "数据库" -#: users/models/user.py:479 +#: users/models/user.py:480 msgid "Avatar" msgstr "头像" -#: users/models/user.py:482 users/templates/users/user_detail.html:68 +#: users/models/user.py:483 users/templates/users/user_detail.html:68 msgid "Wechat" msgstr "微信" -#: users/models/user.py:515 +#: users/models/user.py:516 msgid "Date password last updated" msgstr "最后更新密码日期" -#: users/models/user.py:625 +#: users/models/user.py:626 msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" @@ -2902,7 +2932,7 @@ msgstr "很强" #: users/templates/users/user_database_app_permission.html:41 #: users/templates/users/user_list.html:19 #: users/templates/users/user_remote_app_permission.html:41 -#: xpack/plugins/cloud/models.py:50 xpack/plugins/cloud/serializers.py:32 +#: xpack/plugins/cloud/models.py:50 msgid "Validity" msgstr "有效" @@ -3453,27 +3483,27 @@ msgstr "" "
\n" " " -#: users/views/profile/otp.py:145 +#: users/views/profile/otp.py:190 msgid "MFA enable success" msgstr "多因子认证启用成功" -#: users/views/profile/otp.py:146 +#: users/views/profile/otp.py:191 msgid "MFA enable success, return login page" msgstr "多因子认证启用成功,返回到登录页面" -#: users/views/profile/otp.py:148 +#: users/views/profile/otp.py:193 msgid "MFA disable success" msgstr "多因子认证禁用成功" -#: users/views/profile/otp.py:149 +#: users/views/profile/otp.py:194 msgid "MFA disable success, return login page" msgstr "多因子认证禁用成功,返回登录页面" -#: users/views/profile/password.py:41 +#: users/views/profile/password.py:43 msgid "Password update" msgstr "密码更新" -#: users/views/profile/password.py:72 +#: users/views/profile/password.py:74 msgid "Password invalid" msgstr "用户名或密码无效" @@ -3507,65 +3537,65 @@ msgid "Token invalid or expired" msgstr "Token错误或失效" #: xpack/plugins/change_auth_plan/meta.py:9 -#: xpack/plugins/change_auth_plan/models.py:88 -#: xpack/plugins/change_auth_plan/models.py:183 +#: 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.py:40 +#: xpack/plugins/change_auth_plan/models.py:41 msgid "Custom password" msgstr "自定义密码" -#: xpack/plugins/change_auth_plan/models.py:41 +#: xpack/plugins/change_auth_plan/models.py:42 msgid "All assets use the same random password" msgstr "所有资产使用相同的随机密码" -#: xpack/plugins/change_auth_plan/models.py:42 +#: xpack/plugins/change_auth_plan/models.py:43 msgid "All assets use different random password" msgstr "所有资产使用不同的随机密码" -#: xpack/plugins/change_auth_plan/models.py:64 +#: xpack/plugins/change_auth_plan/models.py:65 msgid "Password rules" msgstr "密码规则" -#: xpack/plugins/change_auth_plan/models.py:187 +#: xpack/plugins/change_auth_plan/models.py:188 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:203 +#: xpack/plugins/change_auth_plan/models.py:297 msgid "Change auth plan execution" msgstr "改密计划执行" -#: xpack/plugins/change_auth_plan/models.py:269 +#: xpack/plugins/change_auth_plan/models.py:270 msgid "Ready" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:270 +#: xpack/plugins/change_auth_plan/models.py:271 msgid "Preflight check" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:271 +#: xpack/plugins/change_auth_plan/models.py:272 msgid "Change auth" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:272 +#: xpack/plugins/change_auth_plan/models.py:273 msgid "Verify auth" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:273 +#: xpack/plugins/change_auth_plan/models.py:274 msgid "Keep auth" msgstr "" -#: xpack/plugins/change_auth_plan/models.py:274 +#: xpack/plugins/change_auth_plan/models.py:275 msgid "Finished" msgstr "结束" -#: xpack/plugins/change_auth_plan/models.py:300 +#: xpack/plugins/change_auth_plan/models.py:301 msgid "Step" msgstr "步骤" -#: xpack/plugins/change_auth_plan/models.py:317 +#: xpack/plugins/change_auth_plan/models.py:318 msgid "Change auth plan task" msgstr "改密计划任务" @@ -3609,7 +3639,7 @@ msgstr "有效" msgid "Unavailable" msgstr "无效" -#: xpack/plugins/cloud/models.py:39 xpack/plugins/cloud/serializers.py:31 +#: xpack/plugins/cloud/models.py:39 msgid "Provider" msgstr "云服务商" @@ -3625,7 +3655,7 @@ msgstr "" msgid "Cloud account" msgstr "云账号" -#: xpack/plugins/cloud/models.py:122 xpack/plugins/cloud/serializers.py:55 +#: xpack/plugins/cloud/models.py:122 xpack/plugins/cloud/serializers.py:58 msgid "Regions" msgstr "地域" @@ -3633,7 +3663,7 @@ msgstr "地域" msgid "Instances" msgstr "实例" -#: xpack/plugins/cloud/models.py:136 xpack/plugins/cloud/serializers.py:77 +#: xpack/plugins/cloud/models.py:136 xpack/plugins/cloud/serializers.py:80 msgid "Covered always" msgstr "总是被覆盖" @@ -3753,19 +3783,19 @@ msgstr "拉美-圣地亚哥" msgid "Tencent Cloud" msgstr "腾讯云" -#: xpack/plugins/cloud/serializers.py:53 +#: xpack/plugins/cloud/serializers.py:56 msgid "History count" msgstr "用户数量" -#: xpack/plugins/cloud/serializers.py:54 +#: xpack/plugins/cloud/serializers.py:57 msgid "Instance count" msgstr "实例个数" -#: xpack/plugins/cloud/serializers.py:75 +#: xpack/plugins/cloud/serializers.py:78 msgid "Account name" msgstr "账户名称" -#: xpack/plugins/cloud/serializers.py:76 +#: xpack/plugins/cloud/serializers.py:79 #: xpack/plugins/gathered_user/serializers.py:20 msgid "Periodic display" msgstr "定时执行" @@ -5020,9 +5050,6 @@ msgstr "旗舰版" #~ msgid "Download replay" #~ msgstr "下载录像" -#~ msgid "Download" -#~ msgstr "下载" - #~ msgid "Monitor session" #~ msgstr "监控"