From 73b67da4c09ac32ad826191b4453ba78a2a110d7 Mon Sep 17 00:00:00 2001 From: xinwen Date: Wed, 14 Apr 2021 16:10:20 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20acl=20=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/acls/const.py | 9 - apps/acls/serializers/login_acl.py | 9 +- apps/acls/serializers/login_asset_acl.py | 30 +- apps/locale/zh/LC_MESSAGES/django.mo | Bin 73666 -> 74611 bytes apps/locale/zh/LC_MESSAGES/django.po | 384 ++++++++++++----------- 5 files changed, 236 insertions(+), 196 deletions(-) delete mode 100644 apps/acls/const.py diff --git a/apps/acls/const.py b/apps/acls/const.py deleted file mode 100644 index e40d679c8..000000000 --- a/apps/acls/const.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.utils.translation import ugettext as _ - - -common_help_text = _('Format for comma-delimited string, with * indicating a match all. ') - -ip_group_help_text = common_help_text + _( - 'Such as: ' - '192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64 ' -) diff --git a/apps/acls/serializers/login_acl.py b/apps/acls/serializers/login_acl.py index 23d31b13e..ee1a5ac25 100644 --- a/apps/acls/serializers/login_acl.py +++ b/apps/acls/serializers/login_acl.py @@ -4,7 +4,6 @@ from common.drf.serializers import BulkModelSerializer from orgs.utils import current_org from ..models import LoginACL from ..utils import is_ip_address, is_ip_network, is_ip_segment -from .. import const __all__ = ['LoginACLSerializer', ] @@ -21,8 +20,14 @@ def ip_group_child_validator(ip_group_child): class LoginACLSerializer(BulkModelSerializer): + ip_group_help_text = _( + 'Format for comma-delimited string, with * indicating a match all. ' + 'Such as: ' + '192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64 ' + ) + ip_group = serializers.ListField( - default=['*'], label=_('IP'), help_text=const.ip_group_help_text, + default=['*'], label=_('IP'), help_text=ip_group_help_text, child=serializers.CharField(max_length=1024, validators=[ip_group_child_validator]) ) user_display = serializers.ReadOnlyField(source='user.name', label=_('User')) diff --git a/apps/acls/serializers/login_asset_acl.py b/apps/acls/serializers/login_asset_acl.py index 863d636dc..842cbc8a0 100644 --- a/apps/acls/serializers/login_asset_acl.py +++ b/apps/acls/serializers/login_asset_acl.py @@ -1,45 +1,59 @@ from rest_framework import serializers -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from orgs.mixins.serializers import BulkOrgResourceModelSerializer from assets.models import SystemUser from acls import models from orgs.models import Organization -from .. import const __all__ = ['LoginAssetACLSerializer'] +common_help_text = _('Format for comma-delimited string, with * indicating a match all. ') + + class LoginAssetACLUsersSerializer(serializers.Serializer): username_group = serializers.ListField( default=['*'], child=serializers.CharField(max_length=128), label=_('Username'), - help_text=const.common_help_text + help_text=common_help_text ) class LoginAssetACLAssestsSerializer(serializers.Serializer): + ip_group_help_text = _( + 'Format for comma-delimited string, with * indicating a match all. ' + 'Such as: ' + '192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64 ' + '(Domain name support)' + ) + ip_group = serializers.ListField( default=['*'], child=serializers.CharField(max_length=1024), label=_('IP'), - help_text=const.ip_group_help_text + _('(Domain name support)') + help_text=ip_group_help_text ) hostname_group = serializers.ListField( default=['*'], child=serializers.CharField(max_length=128), label=_('Hostname'), - help_text=const.common_help_text + help_text=common_help_text ) class LoginAssetACLSystemUsersSerializer(serializers.Serializer): + protocol_group_help_text = _( + 'Format for comma-delimited string, with * indicating a match all. ' + 'Protocol options: {}' + ) + name_group = serializers.ListField( default=['*'], child=serializers.CharField(max_length=128), label=_('Name'), - help_text=const.common_help_text + help_text=common_help_text ) username_group = serializers.ListField( default=['*'], child=serializers.CharField(max_length=128), label=_('Username'), - help_text=const.common_help_text + help_text=common_help_text ) protocol_group = serializers.ListField( default=['*'], child=serializers.CharField(max_length=16), label=_('Protocol'), - help_text=const.common_help_text + _('Protocol options: {}').format( + help_text=protocol_group_help_text.format( ', '.join(SystemUser.ASSET_CATEGORY_PROTOCOLS) ) ) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 2864b472f044cd880033eefde5ae81c4dbfab2be..674b2022a5aa99d057dc11ad7164aed4ac01eeec 100644 GIT binary patch delta 22068 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 Ul=$x6ad#Fi-QG2MK(jRe1KLOYzW@LL delta 21935 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 YHE{ZlyKTQ45Ew8w@VlHT18Ro<55-U7?*IS* diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 763d9d2e5..c5a272651 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: 2021-04-07 18:15+0800\n" +"POT-Creation-Date: 2021-04-14 16:04+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -17,26 +17,14 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: acls/const.py:4 -msgid "Format for comma-delimited string, with * indicating a match all. " -msgstr "格式为逗号分隔的字符串, * 表示匹配所有. " - -#: acls/const.py:7 -msgid "" -"Such as: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::" -"e13, 2001:db8:1a:1110::/64 " -msgstr "" -"例如: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, " -"2001:db8:1a:1110::/64" - -#: acls/models/base.py:25 acls/serializers/login_asset_acl.py:33 +#: acls/models/base.py:25 acls/serializers/login_asset_acl.py:47 #: applications/models/application.py:11 assets/models/asset.py:142 #: assets/models/base.py:250 assets/models/cluster.py:18 #: assets/models/cmd_filter.py:21 assets/models/domain.py:21 #: assets/models/group.py:20 assets/models/label.py:18 ops/mixin.py:24 #: orgs/models.py:23 perms/models/base.py:49 settings/models.py:29 -#: terminal/models/storage.py:23 terminal/models/storage.py:81 -#: terminal/models/task.py:16 terminal/models/terminal.py:99 +#: terminal/models/storage.py:23 terminal/models/storage.py:90 +#: terminal/models/task.py:16 terminal/models/terminal.py:100 #: users/forms/profile.py:32 users/models/group.py:15 users/models/user.py:530 #: users/templates/users/_select_user_modal.html:13 #: users/templates/users/user_asset_permission.html:37 @@ -82,8 +70,8 @@ msgstr "激活中" #: assets/models/domain.py:22 assets/models/domain.py:56 #: assets/models/group.py:23 assets/models/label.py:23 ops/models/adhoc.py:37 #: orgs/models.py:26 perms/models/base.py:57 settings/models.py:34 -#: terminal/models/storage.py:29 terminal/models/storage.py:87 -#: terminal/models/terminal.py:113 tickets/models/ticket.py:73 +#: terminal/models/storage.py:29 terminal/models/storage.py:96 +#: terminal/models/terminal.py:114 tickets/models/ticket.py:73 #: users/models/group.py:16 users/models/user.py:563 #: users/templates/users/user_detail.html:115 #: users/templates/users/user_granted_database_app.html:38 @@ -109,7 +97,7 @@ msgid "Login IP" msgstr "登录IP" #: acls/models/login_acl.py:24 acls/models/login_asset_acl.py:26 -#: acls/serializers/login_acl.py:29 acls/serializers/login_asset_acl.py:61 +#: acls/serializers/login_acl.py:34 acls/serializers/login_asset_acl.py:75 #: assets/models/cmd_filter.py:56 audits/models.py:57 #: authentication/templates/authentication/_access_key_modal.html:34 #: tickets/models/ticket.py:43 users/templates/users/_granted_assets.html:29 @@ -123,15 +111,15 @@ msgid "Action" msgstr "动作" #: acls/models/login_acl.py:28 acls/models/login_asset_acl.py:20 -#: acls/serializers/login_acl.py:28 assets/models/label.py:15 +#: acls/serializers/login_acl.py:33 assets/models/label.py:15 #: audits/models.py:36 audits/models.py:56 audits/models.py:69 #: audits/serializers.py:84 authentication/models.py:44 -#: authentication/models.py:97 orgs/models.py:18 orgs/models.py:417 +#: authentication/models.py:97 orgs/models.py:18 orgs/models.py:418 #: perms/models/base.py:50 templates/index.html:78 #: terminal/backends/command/models.py:18 #: terminal/backends/command/serializers.py:12 terminal/models/session.py:37 #: tickets/models/comment.py:17 users/models/user.py:159 -#: users/models/user.py:699 users/serializers/group.py:20 +#: users/models/user.py:707 users/serializers/group.py:20 #: users/templates/users/user_asset_permission.html:38 #: users/templates/users/user_asset_permission.html:64 #: users/templates/users/user_database_app_permission.html:37 @@ -179,25 +167,38 @@ msgstr "审批人" msgid "Login asset confirm" msgstr "登录资产复核" -#: acls/serializers/login_acl.py:19 +#: acls/serializers/login_acl.py:18 msgid "IP address invalid: `{}`" msgstr "IP 地址无效: `{}`" -#: acls/serializers/login_acl.py:25 acls/serializers/login_asset_acl.py:22 +#: acls/serializers/login_acl.py:24 +msgid "" +"Format for comma-delimited string, with * indicating a match all. Such as: " +"192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:" +"db8:1a:1110::/64 " +msgstr "" +"格式为逗号分隔的字符串, * 表示匹配所有。例如: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, " +"2001:db8:1a:1110::/64" + +#: acls/serializers/login_acl.py:30 acls/serializers/login_asset_acl.py:31 #: applications/serializers/attrs/application_type/mysql_workbench.py:18 #: assets/models/asset.py:183 assets/models/domain.py:52 -#: assets/serializers/asset_user.py:46 settings/serializers/settings.py:108 +#: assets/serializers/asset_user.py:46 settings/serializers/settings.py:112 #: users/templates/users/_granted_assets.html:26 #: users/templates/users/user_asset_permission.html:156 msgid "IP" msgstr "IP" -#: acls/serializers/login_acl.py:45 +#: acls/serializers/login_acl.py:50 msgid "The user `{}` is not in the current organization: `{}`" msgstr "用户 `{}` 不在当前组织: `{}`" -#: acls/serializers/login_asset_acl.py:15 -#: acls/serializers/login_asset_acl.py:37 +#: acls/serializers/login_asset_acl.py:12 +msgid "Format for comma-delimited string, with * indicating a match all. " +msgstr "格式为逗号分隔的字符串, * 表示匹配所有. " + +#: acls/serializers/login_asset_acl.py:17 +#: acls/serializers/login_asset_acl.py:51 #: applications/serializers/attrs/application_type/chrome.py:20 #: applications/serializers/attrs/application_type/custom.py:21 #: applications/serializers/attrs/application_type/mysql_workbench.py:30 @@ -215,38 +216,45 @@ msgstr "用户 `{}` 不在当前组织: `{}`" msgid "Username" msgstr "用户名" -#: acls/serializers/login_asset_acl.py:23 -msgid "(Domain name support)" -msgstr "(支持域名)" +#: acls/serializers/login_asset_acl.py:24 +msgid "" +"Format for comma-delimited string, with * indicating a match all. Such as: " +"192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:" +"db8:1a:1110::/64 (Domain name support)" +msgstr "" +"格式为逗号分隔的字符串, * 表示匹配所有。例如: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, " +"2001:db8:1a:1110::/64 (支持网域)" -#: acls/serializers/login_asset_acl.py:26 assets/models/asset.py:184 +#: acls/serializers/login_asset_acl.py:35 assets/models/asset.py:184 #: assets/serializers/asset_user.py:45 assets/serializers/gathered_user.py:20 -#: settings/serializers/settings.py:107 +#: settings/serializers/settings.py:111 #: users/templates/users/_granted_assets.html:25 #: users/templates/users/user_asset_permission.html:157 msgid "Hostname" msgstr "主机名" -#: acls/serializers/login_asset_acl.py:41 assets/models/asset.py:187 +#: acls/serializers/login_asset_acl.py:42 +msgid "" +"Format for comma-delimited string, with * indicating a match all. Protocol " +"options: {}" +msgstr "格式为逗号分隔的字符串, * 表示匹配所有. 可选的协议有: {}" + +#: acls/serializers/login_asset_acl.py:55 assets/models/asset.py:187 #: assets/models/domain.py:54 assets/models/user.py:123 #: terminal/serializers/session.py:29 terminal/serializers/storage.py:69 msgid "Protocol" msgstr "协议" -#: acls/serializers/login_asset_acl.py:42 -msgid "Protocol options: {}" -msgstr "协议选项: {}" - -#: acls/serializers/login_asset_acl.py:51 +#: acls/serializers/login_asset_acl.py:65 msgid "Unsupported protocols: {}" msgstr "不支持的协议: {}" -#: acls/serializers/login_asset_acl.py:80 +#: acls/serializers/login_asset_acl.py:94 #: tickets/serializers/ticket/ticket.py:109 msgid "The organization `{}` does not exist" msgstr "组织 `{}` 不存在" -#: acls/serializers/login_asset_acl.py:85 +#: acls/serializers/login_asset_acl.py:99 msgid "None of the reviewers belong to Organization `{}`" msgstr "所有复核人都不属于组织 `{}`" @@ -279,7 +287,7 @@ msgstr "类别" #: perms/models/application_permission.py:23 #: perms/serializers/application/permission.py:17 #: perms/serializers/application/user_permission.py:34 -#: terminal/models/storage.py:26 terminal/models/storage.py:84 +#: terminal/models/storage.py:26 terminal/models/storage.py:93 #: tickets/models/ticket.py:38 #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:27 #: users/templates/users/user_granted_database_app.html:35 @@ -336,7 +344,7 @@ msgstr "目标URL" #: assets/models/base.py:252 assets/serializers/asset_user.py:71 #: audits/signals_handler.py:46 authentication/forms.py:22 #: authentication/templates/authentication/login.html:155 -#: settings/serializers/settings.py:89 users/forms/profile.py:21 +#: settings/serializers/settings.py:93 users/forms/profile.py:21 #: 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 @@ -404,7 +412,7 @@ msgid "Internal" msgstr "内部的" #: assets/models/asset.py:166 assets/models/asset.py:190 -#: assets/serializers/asset.py:66 +#: assets/serializers/asset.py:66 perms/serializers/asset/user_permission.py:43 msgid "Platform" msgstr "系统平台" @@ -504,7 +512,7 @@ msgstr "标签管理" #: assets/models/cluster.py:28 assets/models/cmd_filter.py:26 #: assets/models/cmd_filter.py:60 assets/models/group.py:21 #: common/db/models.py:70 common/mixins/models.py:49 orgs/models.py:24 -#: orgs/models.py:421 perms/models/base.py:55 users/models/user.py:571 +#: orgs/models.py:422 perms/models/base.py:55 users/models/user.py:571 #: users/serializers/group.py:35 users/templates/users/user_detail.html:97 #: xpack/plugins/change_auth_plan/models.py:81 #: xpack/plugins/cloud/models.py:104 xpack/plugins/gathered_user/models.py:30 @@ -518,7 +526,7 @@ msgstr "创建者" #: assets/models/gathered_user.py:19 assets/models/group.py:22 #: 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:25 -#: orgs/models.py:419 perms/models/base.py:56 users/models/group.py:18 +#: orgs/models.py:420 perms/models/base.py:56 users/models/group.py:18 #: users/templates/users/user_group_detail.html:58 #: xpack/plugins/cloud/models.py:107 msgid "Date created" @@ -554,7 +562,7 @@ msgstr "SSH公钥" #: assets/models/base.py:257 assets/models/gathered_user.py:20 #: common/db/models.py:73 common/mixins/models.py:51 ops/models/adhoc.py:39 -#: orgs/models.py:420 +#: orgs/models.py:421 msgid "Date updated" msgstr "更新日期" @@ -593,7 +601,7 @@ msgid "Default" msgstr "默认" #: assets/models/cluster.py:36 assets/models/label.py:14 -#: users/models/user.py:711 +#: users/models/user.py:719 msgid "System" msgstr "系统" @@ -666,7 +674,7 @@ msgstr "资产组" msgid "Default asset group" msgstr "默认资产组" -#: assets/models/label.py:19 assets/models/node.py:538 settings/models.py:30 +#: assets/models/label.py:19 assets/models/node.py:547 settings/models.py:30 msgid "Value" msgstr "值" @@ -674,23 +682,23 @@ msgstr "值" msgid "New node" msgstr "新节点" -#: assets/models/node.py:466 users/templates/users/_granted_assets.html:130 +#: assets/models/node.py:475 users/templates/users/_granted_assets.html:130 msgid "empty" msgstr "空" -#: assets/models/node.py:537 perms/models/asset_permission.py:156 +#: assets/models/node.py:546 perms/models/asset_permission.py:156 msgid "Key" msgstr "键" -#: assets/models/node.py:539 +#: assets/models/node.py:548 msgid "Full value" msgstr "全称" -#: assets/models/node.py:542 perms/models/asset_permission.py:157 +#: assets/models/node.py:551 perms/models/asset_permission.py:157 msgid "Parent key" msgstr "ssh私钥" -#: assets/models/node.py:551 assets/serializers/system_user.py:191 +#: assets/models/node.py:560 assets/serializers/system_user.py:191 #: users/templates/users/user_asset_permission.html:41 #: users/templates/users/user_asset_permission.html:73 #: users/templates/users/user_asset_permission.html:158 @@ -716,7 +724,7 @@ msgid "Assets" msgstr "资产" #: assets/models/user.py:120 templates/_nav.html:17 -#: users/views/profile/password.py:42 users/views/profile/pubkey.py:36 +#: users/views/profile/password.py:43 users/views/profile/pubkey.py:37 msgid "Users" msgstr "用户管理" @@ -1240,6 +1248,10 @@ msgstr "用户(显示名称)" msgid "SSH Key" msgstr "SSH 密钥" +#: audits/signals_handler.py:47 +msgid "SSO" +msgstr "" + #: authentication/api/mfa.py:60 msgid "Code is invalid" msgstr "Code无效" @@ -1295,38 +1307,42 @@ msgstr "" msgid "Invalid token or cache refreshed." msgstr "" -#: authentication/errors.py:25 +#: authentication/errors.py:24 msgid "Username/password check failed" msgstr "用户名/密码 校验失败" -#: authentication/errors.py:26 +#: authentication/errors.py:25 msgid "Password decrypt failed" msgstr "密码解密失败" -#: authentication/errors.py:27 +#: authentication/errors.py:26 msgid "MFA failed" msgstr "多因子认证失败" -#: authentication/errors.py:28 +#: authentication/errors.py:27 msgid "MFA unset" msgstr "多因子认证没有设定" -#: authentication/errors.py:29 +#: authentication/errors.py:28 msgid "Username does not exist" msgstr "用户名不存在" -#: authentication/errors.py:30 +#: authentication/errors.py:29 msgid "Password expired" msgstr "密码已过期" -#: authentication/errors.py:31 +#: authentication/errors.py:30 msgid "Disabled or expired" msgstr "禁用或失效" -#: authentication/errors.py:32 +#: authentication/errors.py:31 msgid "This account is inactive." msgstr "此账户已禁用" +#: authentication/errors.py:32 +msgid "This account is expired" +msgstr "此账户已过期" + #: authentication/errors.py:33 msgid "Auth backend not match" msgstr "没有匹配到认证后端" @@ -1349,50 +1365,53 @@ msgstr "" "您输入的用户名或密码不正确,请重新输入。 您还可以尝试 {times_try} 次(账号将" "被临时 锁定 {block_time} 分钟)" -#: authentication/errors.py:52 +#: authentication/errors.py:52 authentication/errors.py:56 msgid "" "The account has been locked (please contact admin to unlock it or try again " "after {} minutes)" msgstr "账号已被锁定(请联系管理员解锁 或 {}分钟后重试)" -#: authentication/errors.py:55 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验证码不正确,或者服务器端时间不对" +#: authentication/errors.py:60 +msgid "" +"MFA code invalid, or ntp sync server time, You can also try {times_try} " +"times (The account will be temporarily locked for {block_time} minutes)" +msgstr "" +"MFA验证码不正确,或者服务器端时间不对。 您还可以尝试 {times_try} 次(账号将" +"被临时 锁定 {block_time} 分钟)" -#: authentication/errors.py:57 +#: authentication/errors.py:65 msgid "MFA required" msgstr "需要多因子认证" -#: authentication/errors.py:58 +#: authentication/errors.py:66 msgid "MFA not set, please set it first" msgstr "多因子认证没有设置,请先完成设置" -#: authentication/errors.py:59 +#: authentication/errors.py:67 msgid "Login confirm required" msgstr "需要登录复核" -#: authentication/errors.py:60 +#: authentication/errors.py:68 msgid "Wait login confirm ticket for accept" msgstr "等待登录复核处理" -#: authentication/errors.py:61 +#: authentication/errors.py:69 msgid "Login confirm ticket was {}" msgstr "登录复核 {}" -#: authentication/errors.py:206 +#: authentication/errors.py:233 msgid "IP is not allowed" msgstr "来源 IP 不被允许登录" -#: authentication/errors.py:239 +#: authentication/errors.py:266 msgid "SSO auth closed" msgstr "SSO 认证关闭了" -#: authentication/errors.py:244 authentication/views/login.py:235 +#: authentication/errors.py:271 authentication/views/login.py:236 msgid "Your password is too simple, please change it for security" msgstr "你的密码过于简单,为了安全,请修改" -#: authentication/errors.py:253 authentication/views/login.py:250 +#: authentication/errors.py:280 authentication/views/login.py:251 msgid "Your password has expired, please reset before logging in" msgstr "您的密码已过期,先修改再登录" @@ -1566,7 +1585,7 @@ msgstr "复制成功" msgid "Please enable cookies and try again." msgstr "设置你的浏览器支持cookie" -#: authentication/views/login.py:181 +#: authentication/views/login.py:182 msgid "" "Wait for {} confirm, You also can copy link to her/him
\n" " Don't close this page" @@ -1574,19 +1593,19 @@ msgstr "" "等待 {} 确认, 你也可以复制链接发给他/她
\n" " 不要关闭本页面" -#: authentication/views/login.py:186 +#: authentication/views/login.py:187 msgid "No ticket found" msgstr "没有发现工单" -#: authentication/views/login.py:218 +#: authentication/views/login.py:219 msgid "Logout success" msgstr "退出登录成功" -#: authentication/views/login.py:219 +#: authentication/views/login.py:220 msgid "Logout success, return login page" msgstr "退出登录成功,返回到登录页面" -#: authentication/views/login.py:234 authentication/views/login.py:249 +#: authentication/views/login.py:235 authentication/views/login.py:250 msgid "Please change your password" msgstr "请修改密码" @@ -1710,11 +1729,11 @@ msgstr "" "
Luna是单独部署的一个程序,你需要部署luna,koko,
如果你看到了" "这个页面,证明你访问的不是nginx监听的端口,祝你好运
" -#: jumpserver/views/other.py:78 +#: jumpserver/views/other.py:71 msgid "Websocket server run on port: {}, you should proxy it on nginx" msgstr "Websocket 服务运行在端口: {}, 请检查nginx是否代理是否设置" -#: jumpserver/views/other.py:92 +#: jumpserver/views/other.py:85 msgid "" "
Koko is a separately deployed program, you need to deploy Koko, " "configure nginx for url distribution,
If you see this page, " @@ -1893,7 +1912,7 @@ msgid "The current organization cannot be deleted" msgstr "当前组织不能被删除" #: orgs/mixins/models.py:45 orgs/mixins/serializers.py:25 orgs/models.py:36 -#: orgs/models.py:416 orgs/serializers.py:101 +#: orgs/models.py:417 orgs/serializers.py:101 #: tickets/serializers/ticket/ticket.py:81 msgid "Organization" msgstr "组织" @@ -1910,7 +1929,7 @@ msgstr "组织审计员" msgid "GLOBAL" msgstr "全局组织" -#: orgs/models.py:418 users/models/user.py:540 +#: orgs/models.py:419 users/models/user.py:540 #: users/templates/users/_select_user_modal.html:15 #: users/templates/users/user_detail.html:73 #: users/templates/users/user_list.html:16 @@ -1934,7 +1953,7 @@ msgstr "应用程序" msgid "Application permission" msgstr "应用管理" -#: perms/models/asset_permission.py:37 settings/serializers/settings.py:112 +#: perms/models/asset_permission.py:37 settings/serializers/settings.py:116 msgid "All" msgstr "全部" @@ -2077,14 +2096,6 @@ msgstr "用户第一次登录,修改profile后重定向到地址, 可以是 wi msgid "Forgot password url" msgstr "忘记密码URL" -#: settings/serializers/settings.py:23 -msgid "Global organization name" -msgstr "全局组织名" - -#: settings/serializers/settings.py:23 -msgid "The name of global organization to display" -msgstr "全局组织的显示名称,默认为 全局组织" - #: settings/serializers/settings.py:24 msgid "" "The forgot password url on login page, If you use ldap or cas external " @@ -2093,130 +2104,138 @@ msgstr "" "登录页面忘记密码URL, 如果使用了 LDAP, OPENID 等外部认证系统,可以自定义用户重" "置密码访问的地址" -#: settings/serializers/settings.py:32 +#: settings/serializers/settings.py:28 +msgid "Global organization name" +msgstr "全局组织名" + +#: settings/serializers/settings.py:29 +msgid "The name of global organization to display" +msgstr "全局组织的显示名称,默认为 全局组织" + +#: settings/serializers/settings.py:36 msgid "SMTP host" msgstr "SMTP 主机" -#: settings/serializers/settings.py:33 +#: settings/serializers/settings.py:37 msgid "SMTP port" msgstr "SMTP 端口" -#: settings/serializers/settings.py:34 +#: settings/serializers/settings.py:38 msgid "SMTP account" msgstr "SMTP 账号" -#: settings/serializers/settings.py:36 +#: settings/serializers/settings.py:40 msgid "SMTP password" msgstr "SMTP 密码" -#: settings/serializers/settings.py:37 +#: settings/serializers/settings.py:41 msgid "Tips: Some provider use token except password" msgstr "提示:一些邮件提供商需要输入的是授权码" -#: settings/serializers/settings.py:40 +#: settings/serializers/settings.py:44 msgid "Send user" msgstr "发件人" -#: settings/serializers/settings.py:41 +#: settings/serializers/settings.py:45 msgid "Tips: Send mail account, default SMTP account as the send account" msgstr "提示:发送邮件账号,默认使用 SMTP 账号作为发送账号" -#: settings/serializers/settings.py:44 +#: settings/serializers/settings.py:48 msgid "Test recipient" msgstr "测试收件人" -#: settings/serializers/settings.py:45 +#: settings/serializers/settings.py:49 msgid "Tips: Used only as a test mail recipient" msgstr "提示:仅用来作为测试邮件收件人" -#: settings/serializers/settings.py:48 +#: settings/serializers/settings.py:52 msgid "Use SSL" msgstr "使用 SSL" -#: settings/serializers/settings.py:49 +#: settings/serializers/settings.py:53 msgid "If SMTP port is 465, may be select" msgstr "如果SMTP端口是465,通常需要启用 SSL" -#: settings/serializers/settings.py:52 +#: settings/serializers/settings.py:56 msgid "Use TLS" msgstr "使用 TLS" -#: settings/serializers/settings.py:53 +#: settings/serializers/settings.py:57 msgid "If SMTP port is 587, may be select" msgstr "如果SMTP端口是587,通常需要启用 TLS" -#: settings/serializers/settings.py:56 +#: settings/serializers/settings.py:60 msgid "Subject prefix" msgstr "主题前缀" -#: settings/serializers/settings.py:63 +#: settings/serializers/settings.py:67 msgid "Create user email subject" msgstr "邮件主题" -#: settings/serializers/settings.py:64 +#: settings/serializers/settings.py:68 msgid "" "Tips: When creating a user, send the subject of the email (eg:Create account " "successfully)" msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)" -#: settings/serializers/settings.py:68 +#: settings/serializers/settings.py:72 msgid "Create user honorific" msgstr "邮件的敬语" -#: settings/serializers/settings.py:69 +#: settings/serializers/settings.py:73 msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)" msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 您好)" -#: settings/serializers/settings.py:73 +#: settings/serializers/settings.py:77 msgid "Create user email content" msgstr "邮件的内容" -#: settings/serializers/settings.py:74 +#: settings/serializers/settings.py:78 msgid "Tips:When creating a user, send the content of the email" msgstr "提示: 创建用户时,发送设置密码邮件的内容" -#: settings/serializers/settings.py:77 +#: settings/serializers/settings.py:81 msgid "Signature" msgstr "署名" -#: settings/serializers/settings.py:78 +#: settings/serializers/settings.py:82 msgid "Tips: Email signature (eg:jumpserver)" msgstr "邮件署名 (如:jumpserver)" -#: settings/serializers/settings.py:86 +#: settings/serializers/settings.py:90 msgid "LDAP server" msgstr "LDAP 地址" -#: settings/serializers/settings.py:86 +#: settings/serializers/settings.py:90 msgid "eg: ldap://localhost:389" msgstr "" -#: settings/serializers/settings.py:88 +#: settings/serializers/settings.py:92 msgid "Bind DN" msgstr "绑定 DN" -#: settings/serializers/settings.py:91 +#: settings/serializers/settings.py:95 msgid "User OU" msgstr "用户 OU" -#: settings/serializers/settings.py:92 +#: settings/serializers/settings.py:96 msgid "Use | split multi OUs" msgstr "多个 OU 使用 | 分割" -#: settings/serializers/settings.py:95 +#: settings/serializers/settings.py:99 msgid "User search filter" msgstr "用户过滤器" -#: settings/serializers/settings.py:96 +#: settings/serializers/settings.py:100 #, python-format msgid "Choice may be (cn|uid|sAMAccountName)=%(user)s)" msgstr "可能的选项是(cn或uid或sAMAccountName=%(user)s)" -#: settings/serializers/settings.py:99 +#: settings/serializers/settings.py:103 msgid "User attr map" msgstr "用户属性映射" -#: settings/serializers/settings.py:100 +#: settings/serializers/settings.py:104 msgid "" "User attr map present how to map LDAP user attr to jumpserver, username,name," "email is jumpserver attr" @@ -2224,35 +2243,35 @@ msgstr "" "用户属性映射代表怎样将LDAP中用户属性映射到jumpserver用户上,username, name," "email 是jumpserver的用户需要属性" -#: settings/serializers/settings.py:102 +#: settings/serializers/settings.py:106 msgid "Enable LDAP auth" msgstr "启用 LDAP 认证" -#: settings/serializers/settings.py:113 +#: settings/serializers/settings.py:117 msgid "Auto" msgstr "自动" -#: settings/serializers/settings.py:119 +#: settings/serializers/settings.py:123 msgid "Password auth" msgstr "密码认证" -#: settings/serializers/settings.py:120 +#: settings/serializers/settings.py:124 msgid "Public key auth" msgstr "密钥认证" -#: settings/serializers/settings.py:121 +#: settings/serializers/settings.py:125 msgid "List sort by" msgstr "资产列表排序" -#: settings/serializers/settings.py:122 +#: settings/serializers/settings.py:126 msgid "List page size" msgstr "资产列表每页数量" -#: settings/serializers/settings.py:124 +#: settings/serializers/settings.py:128 msgid "Session keep duration" msgstr "会话日志保存时间" -#: settings/serializers/settings.py:125 +#: settings/serializers/settings.py:129 msgid "" "Units: days, Session, record, command will be delete if more than duration, " "only in database" @@ -2260,64 +2279,64 @@ msgstr "" "单位:天。 会话、录像、命令记录超过该时长将会被删除(仅影响数据库存储, oss等不" "受影响)" -#: settings/serializers/settings.py:127 +#: settings/serializers/settings.py:131 msgid "Telnet login regex" msgstr "Telnet 成功正则表达式" -#: settings/serializers/settings.py:132 +#: settings/serializers/settings.py:136 msgid "Global MFA auth" msgstr "全局启用 MFA 认证" -#: settings/serializers/settings.py:133 +#: settings/serializers/settings.py:137 msgid "All user enable MFA" msgstr "强制所有用户启用多因子认证" -#: settings/serializers/settings.py:136 +#: settings/serializers/settings.py:140 msgid "Batch command execution" msgstr "批量命令执行" -#: settings/serializers/settings.py:137 +#: settings/serializers/settings.py:141 msgid "Allow user run batch command or not using ansible" msgstr "是否允许用户使用 ansible 执行批量命令" -#: settings/serializers/settings.py:140 +#: settings/serializers/settings.py:144 msgid "Enable terminal register" msgstr "终端注册" -#: settings/serializers/settings.py:141 +#: settings/serializers/settings.py:145 msgid "" "Allow terminal register, after all terminal setup, you should disable this " "for security" msgstr "是否允许终端注册,当所有终端启动后,为了安全应该关闭" -#: settings/serializers/settings.py:145 +#: settings/serializers/settings.py:149 msgid "Limit the number of login failures" msgstr "限制登录失败次数" -#: settings/serializers/settings.py:149 +#: settings/serializers/settings.py:153 msgid "Block logon interval" msgstr "禁止登录时间间隔" -#: settings/serializers/settings.py:150 +#: settings/serializers/settings.py:154 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:154 +#: settings/serializers/settings.py:158 msgid "Connection max idle time" msgstr "连接最大空闲时间" -#: settings/serializers/settings.py:155 +#: settings/serializers/settings.py:159 msgid "If idle time more than it, disconnect connection Unit: minute" msgstr "提示:如果超过该配置没有操作,连接会被断开 (单位:分)" -#: settings/serializers/settings.py:159 +#: settings/serializers/settings.py:163 msgid "User password expiration" msgstr "用户密码过期时间" -#: settings/serializers/settings.py:160 +#: settings/serializers/settings.py:164 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 " @@ -2327,35 +2346,35 @@ msgstr "" "提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期" "提醒邮件将在密码过期前5天内由系统(每天)自动发送给用户" -#: settings/serializers/settings.py:164 +#: settings/serializers/settings.py:168 msgid "Password minimum length" msgstr "密码最小长度" -#: settings/serializers/settings.py:167 +#: settings/serializers/settings.py:171 msgid "Must contain capital" msgstr "必须包含大写字符" -#: settings/serializers/settings.py:169 +#: settings/serializers/settings.py:173 msgid "Must contain lowercase" msgstr "必须包含小写字符" -#: settings/serializers/settings.py:170 +#: settings/serializers/settings.py:174 msgid "Must contain numeric" msgstr "必须包含数字" -#: settings/serializers/settings.py:171 +#: settings/serializers/settings.py:175 msgid "Must contain special" msgstr "必须包含特殊字符" -#: settings/serializers/settings.py:172 +#: settings/serializers/settings.py:176 msgid "Insecure command alert" msgstr "危险命令告警" -#: settings/serializers/settings.py:174 +#: settings/serializers/settings.py:178 msgid "Email recipient" msgstr "邮件收件人" -#: settings/serializers/settings.py:175 +#: settings/serializers/settings.py:179 msgid "Multiple user using , split" msgstr "多个用户,使用 , 分割" @@ -3064,27 +3083,27 @@ msgstr "运行时间" msgid "Args" msgstr "参数" -#: terminal/models/terminal.py:102 +#: terminal/models/terminal.py:103 msgid "type" msgstr "类型" -#: terminal/models/terminal.py:104 +#: terminal/models/terminal.py:105 msgid "Remote Address" msgstr "远端地址" -#: terminal/models/terminal.py:105 +#: terminal/models/terminal.py:106 msgid "SSH Port" msgstr "SSH端口" -#: terminal/models/terminal.py:106 +#: terminal/models/terminal.py:107 msgid "HTTP Port" msgstr "HTTP端口" -#: terminal/models/terminal.py:107 +#: terminal/models/terminal.py:108 msgid "Command storage" msgstr "命令存储" -#: terminal/models/terminal.py:108 +#: terminal/models/terminal.py:109 msgid "Replay storage" msgstr "录像存储" @@ -3583,7 +3602,7 @@ msgstr "工单已处理 - {} ({})" msgid "Your ticket has been processed, processor - {}" msgstr "你的工单已被处理, 处理人 - {}" -#: users/api/user.py:212 +#: users/api/user.py:215 msgid "Could not reset self otp, use profile reset instead" msgstr "不能在该页面重置多因子认证, 请去个人信息页面重置" @@ -3702,11 +3721,11 @@ msgstr "用户来源" msgid "Date password last updated" msgstr "最后更新密码日期" -#: users/models/user.py:707 +#: users/models/user.py:715 msgid "Administrator" msgstr "管理员" -#: users/models/user.py:710 +#: users/models/user.py:718 msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" @@ -4304,7 +4323,7 @@ msgstr "新的公钥已设置成功,请下载对应的私钥" msgid "Update user" msgstr "更新用户" -#: users/templates/users/user_update.html:22 users/views/profile/reset.py:119 +#: users/templates/users/user_update.html:22 users/views/profile/reset.py:120 msgid "User auth from {}, go there change password" msgstr "用户认证源来自 {}, 请去相应系统修改密码" @@ -4412,7 +4431,7 @@ msgstr "" "
\n" " " -#: users/utils.py:116 users/views/profile/reset.py:79 +#: users/utils.py:116 users/views/profile/reset.py:80 msgid "Reset password success" msgstr "重置密码成功" @@ -4616,6 +4635,11 @@ msgstr "" "
\n" " " +#: 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验证码不正确,或者服务器端时间不对" + #: users/views/profile/otp.py:190 msgid "MFA enable success" msgstr "多因子认证启用成功" @@ -4632,46 +4656,46 @@ msgstr "多因子认证禁用成功" msgid "MFA disable success, return login page" msgstr "多因子认证禁用成功,返回登录页面" -#: users/views/profile/password.py:43 +#: users/views/profile/password.py:44 msgid "Password update" msgstr "密码更新" -#: users/views/profile/password.py:59 users/views/profile/reset.py:126 +#: users/views/profile/password.py:60 users/views/profile/reset.py:127 msgid "* Your password does not meet the requirements" msgstr "* 您的密码不符合要求" -#: users/views/profile/password.py:74 +#: users/views/profile/password.py:75 msgid "Password invalid" msgstr "用户名或密码无效" -#: users/views/profile/pubkey.py:37 +#: users/views/profile/pubkey.py:38 msgid "Public key update" msgstr "密钥更新" -#: users/views/profile/reset.py:45 +#: users/views/profile/reset.py:46 msgid "Email address invalid, please input again" msgstr "邮箱地址错误,重新输入" -#: users/views/profile/reset.py:51 +#: users/views/profile/reset.py:52 msgid "" "The user is from {}, please go to the corresponding system to change the " "password" msgstr "用户来自 {} 请去相应系统修改密码" -#: users/views/profile/reset.py:65 +#: users/views/profile/reset.py:66 msgid "Send reset password message" msgstr "发送重置密码邮件" -#: users/views/profile/reset.py:66 +#: users/views/profile/reset.py:67 msgid "Send reset password mail success, login your mail box and follow it " msgstr "" "发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)" -#: users/views/profile/reset.py:80 +#: users/views/profile/reset.py:81 msgid "Reset password success, return to login page" msgstr "重置密码成功,返回到登录页面" -#: users/views/profile/reset.py:104 users/views/profile/reset.py:114 +#: users/views/profile/reset.py:105 users/views/profile/reset.py:115 msgid "Token invalid or expired" msgstr "Token错误或失效" @@ -5151,6 +5175,12 @@ msgstr "旗舰版" msgid "Community edition" msgstr "社区版" +#~ msgid "(Domain name support)" +#~ msgstr "(支持域名)" + +#~ msgid "Protocol options: {}" +#~ msgstr "协议选项: {}" + #~ msgid "CPU Usage" #~ msgstr "CPU使用" From 7da14571acb18f17c9056d34d097d1b14633ff82 Mon Sep 17 00:00:00 2001 From: xinwen Date: Wed, 14 Apr 2021 14:45:15 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=E8=AF=B7=E6=B1=82=20token=20?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E7=99=BB=E5=BD=95=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=B2=A1=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0012_auto_20210414_1443.py | 18 ++++++++++++++++++ apps/audits/models.py | 1 + apps/audits/signals_handler.py | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 apps/audits/migrations/0012_auto_20210414_1443.py diff --git a/apps/audits/migrations/0012_auto_20210414_1443.py b/apps/audits/migrations/0012_auto_20210414_1443.py new file mode 100644 index 000000000..39a8ac52c --- /dev/null +++ b/apps/audits/migrations/0012_auto_20210414_1443.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1 on 2021-04-14 06:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('audits', '0011_userloginlog_backend'), + ] + + operations = [ + migrations.AlterField( + model_name='userloginlog', + name='type', + field=models.CharField(choices=[('W', 'Web'), ('T', 'Terminal'), ('U', 'Unknown')], max_length=2, verbose_name='Login type'), + ), + ] diff --git a/apps/audits/models.py b/apps/audits/models.py index 9a1f64e60..aab3bbde9 100644 --- a/apps/audits/models.py +++ b/apps/audits/models.py @@ -79,6 +79,7 @@ class UserLoginLog(models.Model): LOGIN_TYPE_CHOICE = ( ('W', 'Web'), ('T', 'Terminal'), + ('U', 'Unknown'), ) MFA_DISABLED = 0 diff --git a/apps/audits/signals_handler.py b/apps/audits/signals_handler.py index c604e9b6b..853030287 100644 --- a/apps/audits/signals_handler.py +++ b/apps/audits/signals_handler.py @@ -146,7 +146,7 @@ def generate_data(username, request): user_agent = request.META.get('HTTP_USER_AGENT', '') login_ip = get_request_ip(request) or '0.0.0.0' if isinstance(request, Request): - login_type = request.META.get('HTTP_X_JMS_LOGIN_TYPE', '') + login_type = request.META.get('HTTP_X_JMS_LOGIN_TYPE', 'U') else: login_type = 'W' From b0a9a83231e391a5eca8730f43eb15ec4676ab92 Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 14 Apr 2021 16:28:51 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix(terminal):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=BB=88=E7=AB=AF=E5=88=97=E8=A1=A8=E7=9C=8B=E5=88=B0=E7=9A=84?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E4=BC=9A=E8=AF=9D=E6=95=B0=E9=87=8F=E4=B8=8D?= =?UTF-8?q?=E5=AF=B9=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/serializers/terminal.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/terminal/serializers/terminal.py b/apps/terminal/serializers/terminal.py index aee43e833..25b72ab2c 100644 --- a/apps/terminal/serializers/terminal.py +++ b/apps/terminal/serializers/terminal.py @@ -32,7 +32,7 @@ class StatusSerializer(serializers.ModelSerializer): class TerminalSerializer(BulkModelSerializer): - session_online = serializers.SerializerMethodField() + session_online = serializers.ReadOnlyField(source='get_online_session_count') is_alive = serializers.BooleanField(read_only=True) status = serializers.CharField(read_only=True, source='latest_status') status_display = serializers.CharField(read_only=True, source='latest_status_display') @@ -73,10 +73,6 @@ class TerminalSerializer(BulkModelSerializer): else: raise serializers.ValidationError(_('Not found')) - @staticmethod - def get_session_online(obj): - return Session.objects.filter(terminal=obj, is_finished=False).count() - class TaskSerializer(BulkModelSerializer): class Meta: From e43ffa7994dfe2c2d061401513426889c3624535 Mon Sep 17 00:00:00 2001 From: xinwen Date: Wed, 14 Apr 2021 17:54:07 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E8=BF=9C=E7=A8=8B=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/applications/serializers/application.py | 4 +- apps/locale/zh/LC_MESSAGES/django.mo | Bin 74611 -> 74719 bytes apps/locale/zh/LC_MESSAGES/django.po | 59 +++++++++++-------- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/apps/applications/serializers/application.py b/apps/applications/serializers/application.py index f6bb60516..580ce9a12 100644 --- a/apps/applications/serializers/application.py +++ b/apps/applications/serializers/application.py @@ -44,8 +44,8 @@ class ApplicationSerializerMixin(serializers.Serializer): class ApplicationSerializer(ApplicationSerializerMixin, BulkOrgResourceModelSerializer): - category_display = serializers.ReadOnlyField(source='get_category_display', label=_('Category')) - type_display = serializers.ReadOnlyField(source='get_type_display', label=_('Type')) + category_display = serializers.ReadOnlyField(source='get_category_display', label=_('Category(Display)')) + type_display = serializers.ReadOnlyField(source='get_type_display', label=_('Type(Dispaly)')) class Meta: model = models.Application diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 674b2022a5aa99d057dc11ad7164aed4ac01eeec..4e146d83b81d1f910f5ed64ed4565a09bf68c181 100644 GIT binary patch delta 21781 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index c5a272651..49694c4a0 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: 2021-04-14 16:04+0800\n" +"POT-Creation-Date: 2021-04-14 17:52+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -177,8 +177,8 @@ msgid "" "192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:" "db8:1a:1110::/64 " msgstr "" -"格式为逗号分隔的字符串, * 表示匹配所有。例如: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, " -"2001:db8:1a:1110::/64" +"格式为逗号分隔的字符串, * 表示匹配所有。例如: 192.168.10.1, 192.168.1.0/24, " +"10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64" #: acls/serializers/login_acl.py:30 acls/serializers/login_asset_acl.py:31 #: applications/serializers/attrs/application_type/mysql_workbench.py:18 @@ -204,7 +204,7 @@ msgstr "格式为逗号分隔的字符串, * 表示匹配所有. " #: applications/serializers/attrs/application_type/mysql_workbench.py:30 #: applications/serializers/attrs/application_type/vmware_client.py:26 #: assets/models/base.py:251 assets/models/gathered_user.py:15 -#: audits/models.py:99 authentication/forms.py:15 authentication/forms.py:17 +#: audits/models.py:100 authentication/forms.py:15 authentication/forms.py:17 #: ops/models/adhoc.py:148 users/forms/profile.py:31 users/models/user.py:528 #: users/templates/users/_select_user_modal.html:14 #: users/templates/users/user_detail.html:53 @@ -222,8 +222,8 @@ msgid "" "192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:" "db8:1a:1110::/64 (Domain name support)" msgstr "" -"格式为逗号分隔的字符串, * 表示匹配所有。例如: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, " -"2001:db8:1a:1110::/64 (支持网域)" +"格式为逗号分隔的字符串, * 表示匹配所有。例如: 192.168.10.1, 192.168.1.0/24, " +"10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64 (支持网域)" #: acls/serializers/login_asset_acl.py:35 assets/models/asset.py:184 #: assets/serializers/asset_user.py:45 assets/serializers/gathered_user.py:20 @@ -273,8 +273,7 @@ msgstr "远程应用" msgid "Custom" msgstr "自定义" -#: applications/models/application.py:13 -#: applications/serializers/application.py:47 assets/models/label.py:21 +#: applications/models/application.py:13 assets/models/label.py:21 #: perms/models/application_permission.py:20 #: perms/serializers/application/permission.py:16 #: perms/serializers/application/user_permission.py:33 @@ -282,8 +281,7 @@ msgstr "自定义" msgid "Category" msgstr "类别" -#: applications/models/application.py:16 -#: applications/serializers/application.py:48 assets/models/cmd_filter.py:52 +#: applications/models/application.py:16 assets/models/cmd_filter.py:52 #: perms/models/application_permission.py:23 #: perms/serializers/application/permission.py:17 #: perms/serializers/application/user_permission.py:34 @@ -303,6 +301,14 @@ msgstr "网域" msgid "Attrs" msgstr "" +#: applications/serializers/application.py:47 +msgid "Category(Display)" +msgstr "类别 (显示名称)" + +#: applications/serializers/application.py:48 +msgid "Type(Dispaly)" +msgstr "类型 (显示名称)" + #: applications/serializers/attrs/application_category/cloud.py:9 #: assets/models/cluster.py:40 msgid "Cluster" @@ -1082,7 +1088,7 @@ msgstr "操作" msgid "Filename" msgstr "文件名" -#: audits/models.py:42 audits/models.py:95 +#: audits/models.py:42 audits/models.py:96 #: users/templates/users/user_detail.html:487 msgid "Success" msgstr "成功" @@ -1136,42 +1142,42 @@ msgstr "日期" msgid "Change by" msgstr "修改者" -#: audits/models.py:89 users/templates/users/user_detail.html:84 +#: audits/models.py:90 users/templates/users/user_detail.html:84 msgid "Disabled" msgstr "禁用" -#: audits/models.py:90 settings/models.py:33 +#: audits/models.py:91 settings/models.py:33 #: users/templates/users/user_detail.html:82 msgid "Enabled" msgstr "启用" -#: audits/models.py:91 +#: audits/models.py:92 msgid "-" msgstr "" -#: audits/models.py:96 xpack/plugins/cloud/const.py:25 +#: audits/models.py:97 xpack/plugins/cloud/const.py:25 msgid "Failed" msgstr "失败" -#: audits/models.py:100 +#: audits/models.py:101 msgid "Login type" msgstr "登录方式" -#: audits/models.py:101 +#: audits/models.py:102 #: tickets/serializers/ticket/meta/ticket_type/login_confirm.py:14 msgid "Login ip" msgstr "登录IP" -#: audits/models.py:102 +#: audits/models.py:103 #: tickets/serializers/ticket/meta/ticket_type/login_confirm.py:17 msgid "Login city" msgstr "登录城市" -#: audits/models.py:103 audits/serializers.py:38 +#: audits/models.py:104 audits/serializers.py:38 msgid "User agent" msgstr "用户代理" -#: audits/models.py:104 +#: audits/models.py:105 #: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: authentication/templates/authentication/login_otp.html:6 #: users/forms/profile.py:64 users/models/user.py:552 @@ -1180,21 +1186,21 @@ msgstr "用户代理" msgid "MFA" msgstr "多因子认证" -#: audits/models.py:105 xpack/plugins/change_auth_plan/models.py:303 +#: audits/models.py:106 xpack/plugins/change_auth_plan/models.py:303 #: xpack/plugins/cloud/models.py:161 msgid "Reason" msgstr "原因" -#: audits/models.py:106 tickets/models/ticket.py:47 +#: audits/models.py:107 tickets/models/ticket.py:47 #: xpack/plugins/cloud/models.py:157 xpack/plugins/cloud/models.py:206 msgid "Status" msgstr "状态" -#: audits/models.py:107 +#: audits/models.py:108 msgid "Date login" msgstr "登录日期" -#: audits/models.py:108 +#: audits/models.py:109 msgid "Authentication backend" msgstr "认证方式" @@ -1372,12 +1378,13 @@ msgid "" msgstr "账号已被锁定(请联系管理员解锁 或 {}分钟后重试)" #: authentication/errors.py:60 +#, python-brace-format msgid "" "MFA code invalid, or ntp sync server time, You can also try {times_try} " "times (The account will be temporarily locked for {block_time} minutes)" msgstr "" -"MFA验证码不正确,或者服务器端时间不对。 您还可以尝试 {times_try} 次(账号将" -"被临时 锁定 {block_time} 分钟)" +"MFA验证码不正确,或者服务器端时间不对。 您还可以尝试 {times_try} 次(账号将被" +"临时 锁定 {block_time} 分钟)" #: authentication/errors.py:65 msgid "MFA required" From 2b31cb28062426fd6a15b7aa514a05845b34db6e Mon Sep 17 00:00:00 2001 From: xinwen Date: Wed, 14 Apr 2021 17:24:10 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20=E5=91=BD=E4=BB=A4=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E9=80=82=E9=85=8D=20ES?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/api/command.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/terminal/api/command.py b/apps/terminal/api/command.py index d7868e4a0..814b2ecae 100644 --- a/apps/terminal/api/command.py +++ b/apps/terminal/api/command.py @@ -149,10 +149,8 @@ class CommandViewSet(viewsets.ModelViewSet): serializer = self.get_serializer(page, many=True) return self.get_paginated_response(serializer.data) - query_all = self.request.query_params.get('all', False) - if is_true(query_all): - # 适配像 ES 这种没有指定分页只返回少量数据的情况 - queryset = queryset[:] + # 适配像 ES 这种没有指定分页只返回少量数据的情况 + queryset = queryset[:] serializer = self.get_serializer(queryset, many=True) return Response(serializer.data)