diff --git a/apps/assets/models/user.py b/apps/assets/models/user.py index 4c7454594..325fa6ec0 100644 --- a/apps/assets/models/user.py +++ b/apps/assets/models/user.py @@ -9,7 +9,7 @@ from django.utils.translation import ugettext_lazy as _ from django.core.validators import MinValueValidator, MaxValueValidator from django.core.cache import cache -from common.utils import signer, get_object_or_none +from common.utils import signer, get_object_or_none, is_uuid from .base import BaseUser from .asset import Asset from .authbook import AuthBook @@ -322,9 +322,20 @@ class SystemUser(ProtocolMixin, AuthMixin, BaseUser): assets = Asset.objects.filter(id__in=asset_ids) return assets + def filter_contain_protocol_assets(self, assets_or_ids): + if not assets_or_ids: + return assets_or_ids + if is_uuid(assets_or_ids[0]): + assets = Asset.objects.filter(id__in=assets_or_ids) + else: + assets = assets_or_ids + assets = [asset for asset in assets if self.protocol in asset.protocols_as_dict] + return assets + def add_related_assets(self, assets_or_ids): - self.assets.add(*tuple(assets_or_ids)) - self.add_related_assets_to_su_from_if_need(assets_or_ids) + assets = self.filter_contain_protocol_assets(assets_or_ids) + self.assets.add(*tuple(assets)) + self.add_related_assets_to_su_from_if_need(assets) def add_related_assets_to_su_from_if_need(self, assets_or_ids): if self.protocol not in [self.Protocol.ssh.value]: diff --git a/apps/assets/tasks/utils.py b/apps/assets/tasks/utils.py index 93aaa4bfc..add8fe0f0 100644 --- a/apps/assets/tasks/utils.py +++ b/apps/assets/tasks/utils.py @@ -50,6 +50,10 @@ def clean_ansible_task_hosts(assets, system_user=None): for asset in assets: if not check_asset_can_run_ansible(asset): continue + # 资产平台不包含系统用户的协议, 不推送 + if system_user.protocol not in asset.protocols_as_dict: + logger.info(_('Asset protocol not support system user protocol, skipped: {}').format(system_user.protocol)) + continue cleaned_assets.append(asset) if not cleaned_assets: logger.info(_("No assets matched, stop task")) diff --git a/apps/locale/ja/LC_MESSAGES/django.mo b/apps/locale/ja/LC_MESSAGES/django.mo index a922b4d2e..22aefb0d5 100644 --- a/apps/locale/ja/LC_MESSAGES/django.mo +++ b/apps/locale/ja/LC_MESSAGES/django.mo @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7db985efdf818137dafe489f339955f4d71a245ffd6becc8f6efac539a625682 -size 133463 +oid sha256:0cc37a87259f2cd3794ad628ee40497bd97beaee7219be3d9773e1e544c3e352 +size 134193 diff --git a/apps/locale/ja/LC_MESSAGES/django.po b/apps/locale/ja/LC_MESSAGES/django.po index 882577639..75d453273 100644 --- a/apps/locale/ja/LC_MESSAGES/django.po +++ b/apps/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-02 12:21+0800\n" +"POT-Creation-Date: 2023-05-08 18:10+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -131,7 +131,7 @@ msgstr "システムユーザー" #: assets/models/asset.py:386 assets/models/authbook.py:19 #: assets/models/backup.py:31 assets/models/cmd_filter.py:42 #: assets/models/gathered_user.py:14 assets/serializers/label.py:30 -#: assets/serializers/system_user.py:268 audits/models.py:40 +#: assets/serializers/system_user.py:264 audits/models.py:40 #: authentication/models.py:66 authentication/models.py:90 #: perms/models/asset_permission.py:23 terminal/backends/command/models.py:21 #: terminal/backends/command/serializers.py:14 terminal/models/session.py:47 @@ -269,7 +269,7 @@ msgid "Application" msgstr "アプリケーション" #: applications/models/account.py:15 assets/models/authbook.py:20 -#: assets/models/cmd_filter.py:46 assets/models/user.py:343 audits/models.py:41 +#: assets/models/cmd_filter.py:46 assets/models/user.py:354 audits/models.py:41 #: authentication/models.py:83 perms/models/application_permission.py:33 #: perms/models/asset_permission.py:25 terminal/backends/command/models.py:22 #: terminal/backends/command/serializers.py:36 terminal/models/session.py:49 @@ -280,7 +280,7 @@ msgid "System user" msgstr "システムユーザー" #: applications/models/account.py:17 assets/models/authbook.py:21 -#: settings/serializers/auth/cas.py:20 +#: settings/serializers/auth/cas.py:20 settings/serializers/auth/feishu.py:20 msgid "Version" msgstr "バージョン" @@ -445,7 +445,7 @@ msgid "Application path" msgstr "アプリケーションパス" #: applications/serializers/attrs/application_category/remote_app.py:44 -#: assets/serializers/system_user.py:167 +#: assets/serializers/system_user.py:164 #: tickets/serializers/ticket/apply_application.py:38 #: tickets/serializers/ticket/common.py:59 #: xpack/plugins/change_auth_plan/serializers/asset.py:67 @@ -634,7 +634,7 @@ msgid "Is active" msgstr "アクティブです。" #: assets/models/asset.py:222 assets/models/cluster.py:19 -#: assets/models/user.py:240 assets/models/user.py:395 +#: assets/models/user.py:240 assets/models/user.py:406 msgid "Admin user" msgstr "管理ユーザー" @@ -889,7 +889,7 @@ msgstr "デフォルトクラスター" msgid "User group" msgstr "ユーザーグループ" -#: assets/models/cmd_filter.py:64 assets/serializers/system_user.py:59 +#: assets/models/cmd_filter.py:64 assets/serializers/system_user.py:56 msgid "Command filter" msgstr "コマンドフィルター" @@ -1015,7 +1015,7 @@ msgstr "フルバリュー" msgid "Parent key" msgstr "親キー" -#: assets/models/node.py:566 assets/serializers/system_user.py:267 +#: assets/models/node.py:566 assets/serializers/system_user.py:263 #: xpack/plugins/cloud/models.py:95 xpack/plugins/cloud/serializers/task.py:75 msgid "Node" msgstr "ノード" @@ -1095,7 +1095,7 @@ msgstr "ユーザースイッチ" msgid "Switch from" msgstr "から切り替え" -#: assets/models/user.py:345 +#: assets/models/user.py:356 msgid "Can match system user" msgstr "システムユーザーに一致できます" @@ -1205,7 +1205,7 @@ msgid "Pattern" msgstr "パターン" #: assets/serializers/domain.py:14 assets/serializers/label.py:12 -#: assets/serializers/system_user.py:63 +#: assets/serializers/system_user.py:60 #: perms/serializers/asset/permission.py:49 msgid "Assets amount" msgstr "資産額" @@ -1234,74 +1234,69 @@ msgstr "同じレベルのノード名を同じにすることはできません msgid "SSH key fingerprint" msgstr "SSHキー指紋" -#: assets/serializers/system_user.py:40 -#: perms/serializers/application/permission.py:46 -msgid "Apps amount" -msgstr "アプリの量" - -#: assets/serializers/system_user.py:62 +#: assets/serializers/system_user.py:59 #: perms/serializers/asset/permission.py:50 msgid "Nodes amount" msgstr "ノード量" -#: assets/serializers/system_user.py:64 assets/serializers/system_user.py:269 +#: assets/serializers/system_user.py:61 assets/serializers/system_user.py:265 msgid "Login mode display" msgstr "ログインモード表示" -#: assets/serializers/system_user.py:66 +#: assets/serializers/system_user.py:63 msgid "Ad domain" msgstr "広告ドメイン" -#: assets/serializers/system_user.py:67 +#: assets/serializers/system_user.py:64 msgid "Is asset protocol" msgstr "資産プロトコルです" -#: assets/serializers/system_user.py:68 +#: assets/serializers/system_user.py:65 msgid "Only ssh and automatic login system users are supported" msgstr "sshと自動ログインシステムのユーザーのみがサポートされています" -#: assets/serializers/system_user.py:108 +#: assets/serializers/system_user.py:105 msgid "Username same with user with protocol {} only allow 1" msgstr "プロトコル {} のユーザーと同じユーザー名は1のみ許可します" -#: assets/serializers/system_user.py:121 common/validators.py:14 +#: assets/serializers/system_user.py:118 common/validators.py:14 msgid "Special char not allowed" msgstr "特別なcharは許可されていません" -#: assets/serializers/system_user.py:131 +#: assets/serializers/system_user.py:128 msgid "* Automatic login mode must fill in the username." msgstr "* 自動ログインモードはユーザー名を入力する必要があります。" -#: assets/serializers/system_user.py:146 +#: assets/serializers/system_user.py:143 msgid "Path should starts with /" msgstr "パスは/で始まる必要があります" -#: assets/serializers/system_user.py:158 +#: assets/serializers/system_user.py:155 msgid "Password or private key required" msgstr "パスワードまたは秘密鍵が必要" -#: assets/serializers/system_user.py:172 +#: assets/serializers/system_user.py:169 msgid "Only ssh protocol system users are allowed" msgstr "Sshプロトコルシステムユーザーのみが許可されています" -#: assets/serializers/system_user.py:176 +#: assets/serializers/system_user.py:173 msgid "The protocol must be consistent with the current user: {}" msgstr "プロトコルは現在のユーザーと一致している必要があります: {}" -#: assets/serializers/system_user.py:180 +#: assets/serializers/system_user.py:177 msgid "Only system users with automatic login are allowed" msgstr "自動ログインを持つシステムユーザーのみが許可されます" -#: assets/serializers/system_user.py:288 +#: assets/serializers/system_user.py:284 msgid "System user name" msgstr "システムユーザー名" -#: assets/serializers/system_user.py:289 orgs/mixins/serializers.py:26 +#: assets/serializers/system_user.py:285 orgs/mixins/serializers.py:26 #: rbac/serializers/rolebinding.py:23 msgid "Org name" msgstr "組織名" -#: assets/serializers/system_user.py:298 +#: assets/serializers/system_user.py:294 msgid "Asset hostname" msgstr "資産ホスト名" @@ -1429,6 +1424,10 @@ msgid "For security, do not push user {}" msgstr "セキュリティのために、ユーザー {} をプッシュしないでください" #: assets/tasks/utils.py:55 +msgid "Asset protocol not support system user protocol, skipped: {}" +msgstr "アセット プロトコルはシステム ユーザー プロトコルをサポートしていません。次をスキップします: {}" + +#: assets/tasks/utils.py:59 msgid "No assets matched, stop task" msgstr "一致する資産がない、タスクを停止" @@ -1664,7 +1663,8 @@ msgstr "企業微信" #: audits/signal_handlers.py:62 authentication/views/feishu.py:144 #: authentication/views/login.py:85 notifications/backends/__init__.py:14 -#: settings/serializers/auth/feishu.py:10 users/models/user.py:736 +#: settings/serializers/auth/feishu.py:10 +#: settings/serializers/auth/feishu.py:13 users/models/user.py:736 msgid "FeiShu" msgstr "本を飛ばす" @@ -2263,7 +2263,7 @@ msgstr "コードエラー" #: authentication/templates/authentication/_msg_reset_password_code.html:9 #: authentication/templates/authentication/_msg_rest_password_success.html:2 #: authentication/templates/authentication/_msg_rest_public_key_success.html:2 -#: jumpserver/conf.py:416 ops/tasks.py:145 ops/tasks.py:148 +#: jumpserver/conf.py:417 ops/tasks.py:145 ops/tasks.py:148 #: perms/templates/perms/_msg_item_permissions_expire.html:3 #: perms/templates/perms/_msg_permed_items_expire.html:3 #: tickets/templates/tickets/approve_check_password.html:33 @@ -2747,11 +2747,11 @@ msgstr "特殊文字を含むべきではない" msgid "The mobile phone number format is incorrect" msgstr "携帯電話番号の形式が正しくありません" -#: jumpserver/conf.py:415 +#: jumpserver/conf.py:416 msgid "Create account successfully" msgstr "アカウントを正常に作成" -#: jumpserver/conf.py:417 +#: jumpserver/conf.py:418 msgid "Your account has been created successfully" msgstr "アカウントが正常に作成されました" @@ -3198,6 +3198,10 @@ msgstr "ユーザーグループの量" msgid "System users amount" msgstr "システムユーザー数" +#: perms/serializers/application/permission.py:46 +msgid "Apps amount" +msgstr "アプリの量" + #: perms/serializers/application/permission.py:79 msgid "" "The application list contains applications that are different from the " @@ -3636,7 +3640,7 @@ msgstr "そうでない場合はユーザーを作成" msgid "Enable DingTalk Auth" msgstr "ピン認証の有効化" -#: settings/serializers/auth/feishu.py:14 +#: settings/serializers/auth/feishu.py:16 msgid "Enable FeiShu Auth" msgstr "飛本認証の有効化" @@ -5046,23 +5050,23 @@ msgstr "リプレイ" msgid "Date end" msgstr "終了日" -#: terminal/models/session.py:261 +#: terminal/models/session.py:265 msgid "Session record" msgstr "セッション記録" -#: terminal/models/session.py:263 +#: terminal/models/session.py:267 msgid "Can monitor session" msgstr "セッションを監視できます" -#: terminal/models/session.py:264 +#: terminal/models/session.py:268 msgid "Can share session" msgstr "セッションを共有できます" -#: terminal/models/session.py:265 +#: terminal/models/session.py:269 msgid "Can terminate session" msgstr "セッションを終了できます" -#: terminal/models/session.py:266 +#: terminal/models/session.py:270 msgid "Can validate session action perm" msgstr "セッションアクションのパーマを検証できます" diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index a06c70b86..c28dd83ae 100644 --- a/apps/locale/zh/LC_MESSAGES/django.mo +++ b/apps/locale/zh/LC_MESSAGES/django.mo @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b143c62843946c3e18b623d05065f12e9d3c578efe5cd0d2016056d2b8448ae8 -size 109495 +oid sha256:62e47d2577f103b524a1ae75e3357cdeb5f90d89f89c58a8c8fa8f63d67749f8 +size 110097 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 23b55462a..5ba180c96 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-02 12:21+0800\n" +"POT-Creation-Date: 2023-05-08 18:10+0800\n" "PO-Revision-Date: 2021-05-20 10:54+0800\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -130,7 +130,7 @@ msgstr "系统用户" #: assets/models/asset.py:386 assets/models/authbook.py:19 #: assets/models/backup.py:31 assets/models/cmd_filter.py:42 #: assets/models/gathered_user.py:14 assets/serializers/label.py:30 -#: assets/serializers/system_user.py:268 audits/models.py:40 +#: assets/serializers/system_user.py:264 audits/models.py:40 #: authentication/models.py:66 authentication/models.py:90 #: perms/models/asset_permission.py:23 terminal/backends/command/models.py:21 #: terminal/backends/command/serializers.py:14 terminal/models/session.py:47 @@ -264,7 +264,7 @@ msgid "Application" msgstr "应用程序" #: applications/models/account.py:15 assets/models/authbook.py:20 -#: assets/models/cmd_filter.py:46 assets/models/user.py:343 audits/models.py:41 +#: assets/models/cmd_filter.py:46 assets/models/user.py:354 audits/models.py:41 #: authentication/models.py:83 perms/models/application_permission.py:33 #: perms/models/asset_permission.py:25 terminal/backends/command/models.py:22 #: terminal/backends/command/serializers.py:36 terminal/models/session.py:49 @@ -275,7 +275,7 @@ msgid "System user" msgstr "系统用户" #: applications/models/account.py:17 assets/models/authbook.py:21 -#: settings/serializers/auth/cas.py:20 +#: settings/serializers/auth/cas.py:20 settings/serializers/auth/feishu.py:20 msgid "Version" msgstr "版本" @@ -440,7 +440,7 @@ msgid "Application path" msgstr "应用路径" #: applications/serializers/attrs/application_category/remote_app.py:44 -#: assets/serializers/system_user.py:167 +#: assets/serializers/system_user.py:164 #: tickets/serializers/ticket/apply_application.py:38 #: tickets/serializers/ticket/common.py:59 #: xpack/plugins/change_auth_plan/serializers/asset.py:67 @@ -627,7 +627,7 @@ msgid "Is active" msgstr "激活" #: assets/models/asset.py:222 assets/models/cluster.py:19 -#: assets/models/user.py:240 assets/models/user.py:395 +#: assets/models/user.py:240 assets/models/user.py:406 msgid "Admin user" msgstr "特权用户" @@ -882,7 +882,7 @@ msgstr "默认Cluster" msgid "User group" msgstr "用户组" -#: assets/models/cmd_filter.py:64 assets/serializers/system_user.py:59 +#: assets/models/cmd_filter.py:64 assets/serializers/system_user.py:56 msgid "Command filter" msgstr "命令过滤器" @@ -1008,7 +1008,7 @@ msgstr "全称" msgid "Parent key" msgstr "ssh私钥" -#: assets/models/node.py:566 assets/serializers/system_user.py:267 +#: assets/models/node.py:566 assets/serializers/system_user.py:263 #: xpack/plugins/cloud/models.py:95 xpack/plugins/cloud/serializers/task.py:75 msgid "Node" msgstr "节点" @@ -1088,7 +1088,7 @@ msgstr "用户切换" msgid "Switch from" msgstr "切换自" -#: assets/models/user.py:345 +#: assets/models/user.py:356 msgid "Can match system user" msgstr "可以匹配系统用户" @@ -1195,7 +1195,7 @@ msgid "Pattern" msgstr "模式" #: assets/serializers/domain.py:14 assets/serializers/label.py:12 -#: assets/serializers/system_user.py:63 +#: assets/serializers/system_user.py:60 #: perms/serializers/asset/permission.py:49 msgid "Assets amount" msgstr "资产数量" @@ -1224,74 +1224,69 @@ msgstr "同级别节点名字不能重复" msgid "SSH key fingerprint" msgstr "密钥指纹" -#: assets/serializers/system_user.py:40 -#: perms/serializers/application/permission.py:46 -msgid "Apps amount" -msgstr "应用数量" - -#: assets/serializers/system_user.py:62 +#: assets/serializers/system_user.py:59 #: perms/serializers/asset/permission.py:50 msgid "Nodes amount" msgstr "节点数量" -#: assets/serializers/system_user.py:64 assets/serializers/system_user.py:269 +#: assets/serializers/system_user.py:61 assets/serializers/system_user.py:265 msgid "Login mode display" msgstr "认证方式名称" -#: assets/serializers/system_user.py:66 +#: assets/serializers/system_user.py:63 msgid "Ad domain" msgstr "Ad 网域" -#: assets/serializers/system_user.py:67 +#: assets/serializers/system_user.py:64 msgid "Is asset protocol" msgstr "资产协议" -#: assets/serializers/system_user.py:68 +#: assets/serializers/system_user.py:65 msgid "Only ssh and automatic login system users are supported" msgstr "仅支持ssh协议和自动登录的系统用户" -#: assets/serializers/system_user.py:108 +#: assets/serializers/system_user.py:105 msgid "Username same with user with protocol {} only allow 1" msgstr "用户名和用户相同的一种协议只允许存在一个" -#: assets/serializers/system_user.py:121 common/validators.py:14 +#: assets/serializers/system_user.py:118 common/validators.py:14 msgid "Special char not allowed" msgstr "不能包含特殊字符" -#: assets/serializers/system_user.py:131 +#: assets/serializers/system_user.py:128 msgid "* Automatic login mode must fill in the username." msgstr "自动登录模式,必须填写用户名" -#: assets/serializers/system_user.py:146 +#: assets/serializers/system_user.py:143 msgid "Path should starts with /" msgstr "路径应该以 / 开头" -#: assets/serializers/system_user.py:158 +#: assets/serializers/system_user.py:155 msgid "Password or private key required" msgstr "密码或密钥密码需要一个" -#: assets/serializers/system_user.py:172 +#: assets/serializers/system_user.py:169 msgid "Only ssh protocol system users are allowed" msgstr "仅允许ssh协议的系统用户" -#: assets/serializers/system_user.py:176 +#: assets/serializers/system_user.py:173 msgid "The protocol must be consistent with the current user: {}" msgstr "协议必须和当前用户保持一致: {}" -#: assets/serializers/system_user.py:180 +#: assets/serializers/system_user.py:177 msgid "Only system users with automatic login are allowed" msgstr "仅允许自动登录的系统用户" -#: assets/serializers/system_user.py:288 +#: assets/serializers/system_user.py:284 msgid "System user name" msgstr "系统用户名称" -#: assets/serializers/system_user.py:289 orgs/mixins/serializers.py:26 +#: assets/serializers/system_user.py:285 orgs/mixins/serializers.py:26 #: rbac/serializers/rolebinding.py:23 msgid "Org name" msgstr "组织名称" -#: assets/serializers/system_user.py:298 +#: assets/serializers/system_user.py:294 msgid "Asset hostname" msgstr "资产主机名" @@ -1415,6 +1410,10 @@ msgid "For security, do not push user {}" msgstr "为了安全,禁止推送用户 {}" #: assets/tasks/utils.py:55 +msgid "Asset protocol not support system user protocol, skipped: {}" +msgstr "资产协议不支持系统用户协议,跳过: {}" + +#: assets/tasks/utils.py:59 msgid "No assets matched, stop task" msgstr "没有匹配到资产,结束任务" @@ -1650,7 +1649,8 @@ msgstr "企业微信" #: audits/signal_handlers.py:62 authentication/views/feishu.py:144 #: authentication/views/login.py:85 notifications/backends/__init__.py:14 -#: settings/serializers/auth/feishu.py:10 users/models/user.py:736 +#: settings/serializers/auth/feishu.py:10 +#: settings/serializers/auth/feishu.py:13 users/models/user.py:736 msgid "FeiShu" msgstr "飞书" @@ -2233,7 +2233,7 @@ msgstr "代码错误" #: authentication/templates/authentication/_msg_reset_password_code.html:9 #: authentication/templates/authentication/_msg_rest_password_success.html:2 #: authentication/templates/authentication/_msg_rest_public_key_success.html:2 -#: jumpserver/conf.py:416 ops/tasks.py:145 ops/tasks.py:148 +#: jumpserver/conf.py:417 ops/tasks.py:145 ops/tasks.py:148 #: perms/templates/perms/_msg_item_permissions_expire.html:3 #: perms/templates/perms/_msg_permed_items_expire.html:3 #: tickets/templates/tickets/approve_check_password.html:33 @@ -2708,11 +2708,11 @@ msgstr "不能包含特殊字符" msgid "The mobile phone number format is incorrect" msgstr "手机号格式不正确" -#: jumpserver/conf.py:415 +#: jumpserver/conf.py:416 msgid "Create account successfully" msgstr "创建账号成功" -#: jumpserver/conf.py:417 +#: jumpserver/conf.py:418 msgid "Your account has been created successfully" msgstr "你的账号已创建成功" @@ -3153,6 +3153,10 @@ msgstr "用户组数量" msgid "System users amount" msgstr "系统用户数量" +#: perms/serializers/application/permission.py:46 +msgid "Apps amount" +msgstr "应用数量" + #: perms/serializers/application/permission.py:79 msgid "" "The application list contains applications that are different from the " @@ -3588,7 +3592,7 @@ msgstr "创建用户(如果不存在)" msgid "Enable DingTalk Auth" msgstr "启用钉钉认证" -#: settings/serializers/auth/feishu.py:14 +#: settings/serializers/auth/feishu.py:16 msgid "Enable FeiShu Auth" msgstr "启用飞书认证" @@ -4960,23 +4964,23 @@ msgstr "回放" msgid "Date end" msgstr "结束日期" -#: terminal/models/session.py:261 +#: terminal/models/session.py:265 msgid "Session record" msgstr "会话记录" -#: terminal/models/session.py:263 +#: terminal/models/session.py:267 msgid "Can monitor session" msgstr "可以监控会话" -#: terminal/models/session.py:264 +#: terminal/models/session.py:268 msgid "Can share session" msgstr "可以分享会话" -#: terminal/models/session.py:265 +#: terminal/models/session.py:269 msgid "Can terminate session" msgstr "可以终断会话" -#: terminal/models/session.py:266 +#: terminal/models/session.py:270 msgid "Can validate session action perm" msgstr "可以验证会话动作权限"