From 77b4847bd90491e8d6b468447a6acb6fc608c8c8 Mon Sep 17 00:00:00 2001 From: xinwen Date: Wed, 19 May 2021 14:51:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9C=89=E5=9C=A8=E7=BA=BF=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D=E7=9A=84=E7=BB=88=E7=AB=AF=E4=B8=8D=E8=83=BD=E5=88=A0?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 74907 -> 75305 bytes apps/locale/zh/LC_MESSAGES/django.po | 160 +++++++++++++++------------ apps/terminal/api/terminal.py | 14 ++- 3 files changed, 103 insertions(+), 71 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 1272a409d6bb7dce4f96f3e04df23de3c6b07b69..a43fbc6ce7dc58e810a82659d1b7331fa7378b4a 100644 GIT binary patch delta 22520 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 aaje^|Bkn@RfLbZ%2IUH<7{{(hCiyS(6u963 delta 22296 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 1434212a1..2f6862ff8 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-05-17 18:56+0800\n" +"POT-Creation-Date: 2021-05-19 14:48+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -25,7 +25,7 @@ msgstr "" #: orgs/models.py:23 perms/models/base.py:49 settings/models.py:29 #: 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:558 +#: users/forms/profile.py:32 users/models/group.py:15 users/models/user.py:550 #: users/templates/users/_select_user_modal.html:13 #: users/templates/users/user_asset_permission.html:37 #: users/templates/users/user_asset_permission.html:154 @@ -61,7 +61,7 @@ msgstr "激活中" #: orgs/models.py:26 perms/models/base.py:57 settings/models.py:34 #: 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:591 +#: users/models/group.py:16 users/models/user.py:583 #: xpack/plugins/change_auth_plan/models.py:77 xpack/plugins/cloud/models.py:35 #: xpack/plugins/cloud/models.py:98 xpack/plugins/gathered_user/models.py:26 msgid "Comment" @@ -98,8 +98,8 @@ msgstr "动作" #: 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:38 -#: tickets/models/comment.py:17 users/models/user.py:184 -#: users/models/user.py:746 users/models/user.py:772 +#: tickets/models/comment.py:17 users/models/user.py:176 +#: users/models/user.py:738 users/models/user.py:764 #: users/serializers/group.py:20 #: users/templates/users/user_asset_permission.html:38 #: users/templates/users/user_asset_permission.html:64 @@ -180,7 +180,7 @@ msgstr "格式为逗号分隔的字符串, * 表示匹配所有. " #: applications/serializers/attrs/application_type/vmware_client.py:26 #: assets/models/base.py:251 assets/models/gathered_user.py:15 #: 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:556 +#: ops/models/adhoc.py:148 users/forms/profile.py:31 users/models/user.py:548 #: users/templates/users/_select_user_modal.html:14 #: xpack/plugins/change_auth_plan/models.py:47 #: xpack/plugins/change_auth_plan/models.py:278 @@ -483,7 +483,7 @@ msgstr "标签管理" #: assets/models/cluster.py:28 assets/models/cmd_filter.py:26 #: assets/models/cmd_filter.py:67 assets/models/group.py:21 #: common/db/models.py:70 common/mixins/models.py:49 orgs/models.py:24 -#: orgs/models.py:422 perms/models/base.py:55 users/models/user.py:599 +#: orgs/models.py:422 perms/models/base.py:55 users/models/user.py:591 #: users/serializers/group.py:35 xpack/plugins/change_auth_plan/models.py:81 #: xpack/plugins/cloud/models.py:104 xpack/plugins/gathered_user/models.py:30 msgid "Created by" @@ -497,7 +497,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:25 #: orgs/models.py:420 perms/models/base.py:56 users/models/group.py:18 -#: users/models/user.py:773 xpack/plugins/cloud/models.py:107 +#: users/models/user.py:765 xpack/plugins/cloud/models.py:107 msgid "Date created" msgstr "创建日期" @@ -543,7 +543,7 @@ msgstr "带宽" msgid "Contact" msgstr "联系人" -#: assets/models/cluster.py:22 users/models/user.py:577 +#: assets/models/cluster.py:22 users/models/user.py:569 msgid "Phone" msgstr "手机" @@ -569,7 +569,7 @@ msgid "Default" msgstr "默认" #: assets/models/cluster.py:36 assets/models/label.py:14 -#: users/models/user.py:758 +#: users/models/user.py:750 msgid "System" msgstr "系统" @@ -814,11 +814,11 @@ msgid "Backend" msgstr "后端" #: assets/serializers/asset_user.py:80 users/forms/profile.py:160 -#: users/models/user.py:588 users/templates/users/user_password_update.html:48 +#: users/models/user.py:580 users/templates/users/user_password_update.html:48 msgid "Public key" msgstr "SSH公钥" -#: assets/serializers/asset_user.py:84 users/models/user.py:585 +#: assets/serializers/asset_user.py:84 users/models/user.py:577 msgid "Private key" msgstr "ssh私钥" @@ -1127,8 +1127,8 @@ msgstr "用户代理" #: 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:580 -#: users/serializers/profile.py:104 +#: users/forms/profile.py:64 users/models/user.py:572 +#: users/serializers/profile.py:102 msgid "MFA" msgstr "多因子认证" @@ -1218,54 +1218,54 @@ msgstr "钉钉" msgid "Code is invalid" msgstr "Code无效" -#: authentication/backends/api.py:52 +#: authentication/backends/api.py:57 msgid "Invalid signature header. No credentials provided." msgstr "" -#: authentication/backends/api.py:55 +#: authentication/backends/api.py:60 msgid "Invalid signature header. Signature string should not contain spaces." msgstr "" -#: authentication/backends/api.py:62 +#: authentication/backends/api.py:67 msgid "Invalid signature header. Format like AccessKeyId:Signature" msgstr "" -#: authentication/backends/api.py:66 +#: authentication/backends/api.py:71 msgid "" "Invalid signature header. Signature string should not contain invalid " "characters." msgstr "" -#: authentication/backends/api.py:86 authentication/backends/api.py:102 +#: authentication/backends/api.py:91 authentication/backends/api.py:107 msgid "Invalid signature." msgstr "" -#: authentication/backends/api.py:93 +#: authentication/backends/api.py:98 msgid "HTTP header: Date not provide or not %a, %d %b %Y %H:%M:%S GMT" msgstr "" -#: authentication/backends/api.py:98 +#: authentication/backends/api.py:103 msgid "Expired, more than 15 minutes" msgstr "" -#: authentication/backends/api.py:105 +#: authentication/backends/api.py:110 msgid "User disabled." msgstr "用户已禁用" -#: authentication/backends/api.py:123 +#: authentication/backends/api.py:128 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication/backends/api.py:126 +#: authentication/backends/api.py:131 msgid "Invalid token header. Sign string should not contain spaces." msgstr "" -#: authentication/backends/api.py:133 +#: authentication/backends/api.py:138 msgid "" "Invalid token header. Sign string should not contain invalid characters." msgstr "" -#: authentication/backends/api.py:144 +#: authentication/backends/api.py:149 msgid "Invalid token or cache refreshed." msgstr "" @@ -1437,13 +1437,13 @@ msgid "Show" msgstr "显示" #: authentication/templates/authentication/_access_key_modal.html:66 -#: users/models/user.py:470 users/serializers/profile.py:101 +#: users/models/user.py:462 users/serializers/profile.py:99 #: users/templates/users/user_verify_mfa.html:32 msgid "Disable" msgstr "禁用" #: authentication/templates/authentication/_access_key_modal.html:67 -#: users/models/user.py:471 users/serializers/profile.py:102 +#: users/models/user.py:463 users/serializers/profile.py:100 msgid "Enable" msgstr "启用" @@ -1547,48 +1547,56 @@ msgstr "返回" msgid "Copy success" msgstr "复制成功" -#: authentication/views/dingtalk.py:41 authentication/views/wecom.py:41 +#: authentication/views/dingtalk.py:41 +msgid "DingTalk Error, Please contact your system administrator" +msgstr "钉钉错误,请联系系统管理员" + +#: authentication/views/dingtalk.py:44 +msgid "DingTalk Error" +msgstr "钉钉错误" + +#: authentication/views/dingtalk.py:56 authentication/views/wecom.py:56 msgid "You've been hacked" msgstr "你被攻击了" -#: authentication/views/dingtalk.py:77 +#: authentication/views/dingtalk.py:92 msgid "DingTalk is already bound" msgstr "钉钉已经绑定" -#: authentication/views/dingtalk.py:90 authentication/views/wecom.py:89 +#: authentication/views/dingtalk.py:105 authentication/views/wecom.py:104 msgid "Please verify your password first" msgstr "请检查密码" -#: authentication/views/dingtalk.py:114 authentication/views/wecom.py:113 +#: authentication/views/dingtalk.py:129 authentication/views/wecom.py:128 msgid "Invalid user_id" msgstr "无效的 user_id" -#: authentication/views/dingtalk.py:130 +#: authentication/views/dingtalk.py:145 msgid "DingTalk query user failed" msgstr "钉钉查询用户失败" -#: authentication/views/dingtalk.py:139 +#: authentication/views/dingtalk.py:154 msgid "The DingTalk is already bound to another user" msgstr "该钉钉已经绑定其他用户" -#: authentication/views/dingtalk.py:144 authentication/views/dingtalk.py:227 -#: authentication/views/dingtalk.py:228 +#: authentication/views/dingtalk.py:159 authentication/views/dingtalk.py:242 +#: authentication/views/dingtalk.py:243 msgid "Binding DingTalk successfully" msgstr "绑定 钉钉 成功" -#: authentication/views/dingtalk.py:196 +#: authentication/views/dingtalk.py:211 msgid "Failed to get user from DingTalk" msgstr "从钉钉获取用户失败" -#: authentication/views/dingtalk.py:202 +#: authentication/views/dingtalk.py:217 msgid "DingTalk is not bound" msgstr "钉钉没有绑定" -#: authentication/views/dingtalk.py:203 authentication/views/wecom.py:201 +#: authentication/views/dingtalk.py:218 authentication/views/wecom.py:216 msgid "Please login with a password and then bind the WeCom" msgstr "请使用密码登录,然后绑定企业微信" -#: authentication/views/dingtalk.py:245 authentication/views/dingtalk.py:246 +#: authentication/views/dingtalk.py:260 authentication/views/dingtalk.py:261 msgid "Binding DingTalk failed" msgstr "绑定钉钉失败" @@ -1624,32 +1632,40 @@ msgstr "退出登录成功" msgid "Logout success, return login page" msgstr "退出登录成功,返回到登录页面" -#: authentication/views/wecom.py:76 +#: authentication/views/wecom.py:41 +msgid "WeCom Error, Please contact your system administrator" +msgstr "企业微信错误,请联系系统管理员" + +#: authentication/views/wecom.py:44 +msgid "WeCom Error" +msgstr "企业微信错误" + +#: authentication/views/wecom.py:91 msgid "WeCom is already bound" msgstr "企业微信已经绑定" -#: authentication/views/wecom.py:128 +#: authentication/views/wecom.py:143 msgid "WeCom query user failed" msgstr "企业微信查询用户失败" -#: authentication/views/wecom.py:137 +#: authentication/views/wecom.py:152 msgid "The WeCom is already bound to another user" msgstr "该企业微信已经绑定其他用户" -#: authentication/views/wecom.py:142 authentication/views/wecom.py:225 -#: authentication/views/wecom.py:226 +#: authentication/views/wecom.py:157 authentication/views/wecom.py:240 +#: authentication/views/wecom.py:241 msgid "Binding WeCom successfully" msgstr "绑定 企业微信 成功" -#: authentication/views/wecom.py:194 +#: authentication/views/wecom.py:209 msgid "Failed to get user from WeCom" msgstr "从企业微信获取用户失败" -#: authentication/views/wecom.py:200 +#: authentication/views/wecom.py:215 msgid "WeCom is not bound" msgstr "没有绑定企业微信" -#: authentication/views/wecom.py:243 authentication/views/wecom.py:244 +#: authentication/views/wecom.py:258 authentication/views/wecom.py:259 msgid "Binding WeCom failed" msgstr "绑定企业微信失败" @@ -1675,7 +1691,7 @@ msgstr "对象" msgid "The file content overflowed (The maximum length `{}` bytes)" msgstr "文件内容太大 (最大长度 `{}` 字节)" -#: common/drf/parsers/base.py:146 +#: common/drf/parsers/base.py:148 msgid "Parse file error: {}" msgstr "解析文件错误: {}" @@ -1988,7 +2004,7 @@ msgstr "组织审计员" msgid "GLOBAL" msgstr "全局组织" -#: orgs/models.py:419 users/models/user.py:568 +#: orgs/models.py:419 users/models/user.py:560 #: users/templates/users/_select_user_modal.html:15 msgid "Role" msgstr "角色" @@ -2001,7 +2017,7 @@ msgstr "管理员正在修改授权,请稍等" msgid "The authorization cannot be revoked for the time being" msgstr "该授权暂时不能撤销" -#: perms/models/application_permission.py:27 users/models/user.py:185 +#: perms/models/application_permission.py:27 users/models/user.py:177 msgid "Application" msgstr "应用程序" @@ -2060,7 +2076,7 @@ msgid "Favorite" msgstr "收藏夹" #: perms/models/base.py:51 templates/_nav.html:21 users/models/group.py:31 -#: users/models/user.py:564 users/templates/users/_select_user_modal.html:16 +#: users/models/user.py:556 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 @@ -2073,7 +2089,7 @@ msgstr "用户组" #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:77 #: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:43 #: tickets/serializers/ticket/meta/ticket_type/apply_asset.py:81 -#: users/models/user.py:596 +#: users/models/user.py:588 msgid "Date expired" msgstr "失效日期" @@ -3080,6 +3096,10 @@ msgstr "测试成功" msgid "Test failure: Account invalid" msgstr "测试失败: 账户无效" +#: terminal/api/terminal.py:38 terminal/api/terminal.py:43 +msgid "Have online sessions" +msgstr "有在线会话" + #: terminal/backends/command/es.py:27 msgid "Invalid elasticsearch config" msgstr "无效的 Elasticsearch 配置" @@ -3816,7 +3836,7 @@ msgstr "确认密码" msgid "Password does not match" msgstr "密码不一致" -#: users/forms/profile.py:101 users/models/user.py:560 +#: users/forms/profile.py:101 users/models/user.py:552 msgid "Email" msgstr "邮件" @@ -3848,48 +3868,48 @@ msgstr "复制你的公钥到这里" msgid "Public key should not be the same as your old one." msgstr "不能和原来的密钥相同" -#: users/forms/profile.py:149 users/serializers/profile.py:76 -#: users/serializers/profile.py:150 users/serializers/profile.py:163 +#: users/forms/profile.py:149 users/serializers/profile.py:74 +#: users/serializers/profile.py:148 users/serializers/profile.py:161 msgid "Not a valid ssh public key" msgstr "SSH密钥不合法" -#: users/models/user.py:182 +#: users/models/user.py:174 msgid "System administrator" msgstr "系统管理员" -#: users/models/user.py:183 +#: users/models/user.py:175 msgid "System auditor" msgstr "系统审计员" -#: users/models/user.py:472 +#: users/models/user.py:464 msgid "Force enable" msgstr "强制启用" -#: users/models/user.py:537 +#: users/models/user.py:529 msgid "Local" msgstr "数据库" -#: users/models/user.py:571 +#: users/models/user.py:563 msgid "Avatar" msgstr "头像" -#: users/models/user.py:574 +#: users/models/user.py:566 msgid "Wechat" msgstr "微信" -#: users/models/user.py:604 +#: users/models/user.py:596 msgid "Source" msgstr "用户来源" -#: users/models/user.py:608 +#: users/models/user.py:600 msgid "Date password last updated" msgstr "最后更新密码日期" -#: users/models/user.py:754 +#: users/models/user.py:746 msgid "Administrator" msgstr "管理员" -#: users/models/user.py:757 +#: users/models/user.py:749 msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" @@ -3905,11 +3925,11 @@ msgstr "密码不满足安全规则" msgid "The new password cannot be the last {} passwords" msgstr "新密码不能是最近 {} 次的密码" -#: users/serializers/profile.py:48 +#: users/serializers/profile.py:46 msgid "The newly set password is inconsistent" msgstr "两次密码不一致" -#: users/serializers/profile.py:121 users/serializers/user.py:80 +#: users/serializers/profile.py:119 users/serializers/user.py:80 msgid "Is first login" msgstr "首次登录" @@ -4277,7 +4297,7 @@ msgstr "" "
\n" " " -#: users/utils.py:116 users/views/profile/reset.py:126 +#: users/utils.py:116 users/views/profile/reset.py:124 msgid "Reset password success" msgstr "重置密码成功" @@ -4549,7 +4569,7 @@ msgstr "用户认证源来自 {}, 请去相应系统修改密码" msgid "* The new password cannot be the last {} passwords" msgstr "* 新密码不能是最近 {} 次的密码" -#: users/views/profile/reset.py:127 +#: users/views/profile/reset.py:125 msgid "Reset password success, return to login page" msgstr "重置密码成功,返回到登录页面" diff --git a/apps/terminal/api/terminal.py b/apps/terminal/api/terminal.py index 5ee19b3e2..a5ccf8001 100644 --- a/apps/terminal/api/terminal.py +++ b/apps/terminal/api/terminal.py @@ -8,8 +8,9 @@ from rest_framework import generics from rest_framework.views import APIView, Response from rest_framework import status from django.conf import settings +from django.utils.translation import gettext_lazy as _ - +from common.exceptions import JMSException from common.drf.api import JMSBulkModelViewSet from common.utils import get_object_or_none from common.permissions import IsAppUser, IsSuperUser, WithBootstrapToken @@ -30,6 +31,17 @@ class TerminalViewSet(JMSBulkModelViewSet): permission_classes = (IsSuperUser,) filterset_fields = ['name', 'remote_addr', 'type'] + def destroy(self, request, *args, **kwargs): + instance = self.get_object() + if instance.get_online_session_count() > 0: + raise JMSException( + code='have_online_session', + detail=_('Have online sessions') + ) + + self.perform_destroy(instance) + return Response(status=status.HTTP_204_NO_CONTENT) + def create(self, request, *args, **kwargs): if isinstance(request.data, list): raise exceptions.BulkCreateNotSupport()