From 8f16c2a14fff67001bed55778084d0bb011d0dc5 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 15 Feb 2023 16:05:52 +0800 Subject: [PATCH 01/10] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=20DBeaver=20?= =?UTF-8?q?=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/applets/dbeaver/setup.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/terminal/applets/dbeaver/setup.yml b/apps/terminal/applets/dbeaver/setup.yml index 4b31c8e5f..6a8ef1652 100644 --- a/apps/terminal/applets/dbeaver/setup.yml +++ b/apps/terminal/applets/dbeaver/setup.yml @@ -1,5 +1,8 @@ type: exe # exe, zip, manual source: jms:///download/applets/dbeaver-ce-22.3.4-x86_64-setup.exe +arguments: + - /S + - /allusers destination: C:\Program Files\DBeaver program: C:\Program Files\DBeaver\dbeaver-cli.exe md5: EDA4440D4E32312DD25C9CE5289A228E From 4109f2cb1cfb610d00d1d188eb8e15fa2a8ac5dd Mon Sep 17 00:00:00 2001 From: Bai Date: Wed, 15 Feb 2023 16:28:21 +0800 Subject: [PATCH 02/10] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/serializers/connection_token.py | 1 + apps/locale/zh/LC_MESSAGES/django.mo | 2 +- apps/locale/zh/LC_MESSAGES/django.po | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/authentication/serializers/connection_token.py b/apps/authentication/serializers/connection_token.py index 0c17974d5..22545115f 100644 --- a/apps/authentication/serializers/connection_token.py +++ b/apps/authentication/serializers/connection_token.py @@ -38,6 +38,7 @@ class ConnectionTokenSerializer(OrgResourceModelSerializerMixin): extra_kwargs = { 'from_ticket': {'read_only': True}, 'value': {'read_only': True}, + 'is_expired': {'read_only': True, 'label': _('Is expired')}, } def get_request_user(self): diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 93beea395..42447b06e 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:037f861dc9c6f7ea80ce09276e0eb417b60292fac4d7dcca02f661a53688e6e9 +oid sha256:a46345cf69c2e5feb1cb332b78dfc9af7e1412540642f2e890a9b9c0a89c21a1 size 111627 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 61ce597fa..80e9ace5e 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -461,7 +461,7 @@ msgstr "最后登录日期" #: accounts/models/gathered_account.py:16 msgid "Address last login" -msgstr "首次登录地址" +msgstr "最后登录地址" #: accounts/models/gathered_account.py:23 rbac/tree.py:50 msgid "Gather account" From 4ac214e91dd0b00145196a2c10bfa36ac68e8a4e Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Wed, 15 Feb 2023 16:48:27 +0800 Subject: [PATCH 03/10] perf: account task timing not triggered (#9564) Co-authored-by: feng <1304903146@qq.com> --- apps/accounts/models/automations/base.py | 6 +++++- apps/accounts/tasks/backup_account.py | 2 +- apps/assets/models/automations/base.py | 10 +++++++--- apps/ops/mixin.py | 3 ++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/apps/accounts/models/automations/base.py b/apps/accounts/models/automations/base.py index ce45d6a81..30c5df760 100644 --- a/apps/accounts/models/automations/base.py +++ b/apps/accounts/models/automations/base.py @@ -1,6 +1,6 @@ -from django.db import models from django.utils.translation import gettext_lazy as _ +from accounts.tasks import execute_automation from assets.models.automations import ( BaseAutomation as AssetBaseAutomation, AutomationExecution as AssetAutomationExecution @@ -14,6 +14,10 @@ class AccountBaseAutomation(AssetBaseAutomation): proxy = True verbose_name = _("Account automation task") + @property + def execute_task(self): + return execute_automation + @property def execution_model(self): return AutomationExecution diff --git a/apps/accounts/tasks/backup_account.py b/apps/accounts/tasks/backup_account.py index bbcf25d1f..1009ea5b7 100644 --- a/apps/accounts/tasks/backup_account.py +++ b/apps/accounts/tasks/backup_account.py @@ -3,7 +3,6 @@ from celery import shared_task from django.utils.translation import gettext_lazy as _ -from accounts.models import AccountBackupAutomation from common.utils import get_object_or_none, get_logger from orgs.utils import tmp_to_org, tmp_to_root_org @@ -12,6 +11,7 @@ logger = get_logger(__file__) @shared_task(verbose_name=_('Execute account backup plan')) def execute_account_backup_plan(pid, trigger): + from accounts.models import AccountBackupAutomation with tmp_to_root_org(): plan = get_object_or_none(AccountBackupAutomation, pk=pid) if not plan: diff --git a/apps/assets/models/automations/base.py b/apps/assets/models/automations/base.py index e888fdf26..fb3a3fa61 100644 --- a/apps/assets/models/automations/base.py +++ b/apps/assets/models/automations/base.py @@ -4,12 +4,12 @@ from celery import current_task from django.db import models from django.utils.translation import ugettext_lazy as _ -from assets.models.node import Node from assets.models.asset import Asset +from assets.models.node import Node from assets.tasks import execute_automation -from ops.mixin import PeriodTaskModelMixin from common.const.choices import Trigger from common.db.fields import EncryptJsonDictTextField +from ops.mixin import PeriodTaskModelMixin from orgs.mixins.models import OrgModelMixin, JMSOrgBaseModel @@ -47,9 +47,13 @@ class BaseAutomation(PeriodTaskModelMixin, JMSOrgBaseModel): assets = self.get_all_assets().prefetch_related('platform') return assets.group_by_platform() + @property + def execute_task(self): + return execute_automation + def get_register_task(self): name = f"automation_{self.type}_strategy_period_{str(self.id)[:8]}" - task = execute_automation.name + task = self.execute_task.name args = (str(self.id), Trigger.timing, self.type) kwargs = {} return name, task, args, kwargs diff --git a/apps/ops/mixin.py b/apps/ops/mixin.py index 5b706101b..487f677a0 100644 --- a/apps/ops/mixin.py +++ b/apps/ops/mixin.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- # import abc -from django.utils.translation import ugettext_lazy as _ + from django.db import models +from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers from .celery.utils import ( From 75b27b78344161a983948a8efad428758ed55c8f Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 15 Feb 2023 16:46:39 +0800 Subject: [PATCH 04/10] =?UTF-8?q?fix:=20ssh=20native=20=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/connect_methods.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/terminal/connect_methods.py b/apps/terminal/connect_methods.py index d69e24dc8..0f6bfe476 100644 --- a/apps/terminal/connect_methods.py +++ b/apps/terminal/connect_methods.py @@ -155,7 +155,7 @@ class ConnectMethodUtil: protocols = { TerminalType.koko: { 'web_methods': [WebMethod.web_cli, WebMethod.web_sftp], - 'listen': [Protocol.http], + 'listen': [Protocol.http, Protocol.ssh], 'support': [ Protocol.ssh, Protocol.telnet, Protocol.mysql, Protocol.postgresql, @@ -244,7 +244,6 @@ class ConnectMethodUtil: listen = [protocol] else: listen = component_protocol['listen'] - for listen_protocol in listen: # Native method methods[protocol.value].extend([ From 1ec20a8f98e3226c1655f11fbf7c22a4ab44d564 Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Wed, 15 Feb 2023 17:46:17 +0800 Subject: [PATCH 05/10] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E8=AE=BE=E7=BD=AE=E4=B8=AD=E5=85=B3=E9=97=ADmagnus=20?= =?UTF-8?q?=E5=92=8Crazor=20=E4=B8=8D=E7=94=9F=E6=95=88=20(#9563)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 修复系统设置中关闭magnus 和razor 不生效 * perf: 优化代码 --------- Co-authored-by: Aaron3S --- apps/terminal/api/component/connect_methods.py | 2 +- apps/terminal/connect_methods.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/apps/terminal/api/component/connect_methods.py b/apps/terminal/api/component/connect_methods.py index a284159d3..0c397558b 100644 --- a/apps/terminal/api/component/connect_methods.py +++ b/apps/terminal/api/component/connect_methods.py @@ -18,7 +18,7 @@ class ConnectMethodListApi(generics.ListAPIView): def get_queryset(self): os = get_request_os(self.request) - return ConnectMethodUtil.get_protocols_connect_methods(os) + return ConnectMethodUtil.get_filtered_protocols_connect_methods(os) def list(self, request, *args, **kwargs): queryset = self.get_queryset() diff --git a/apps/terminal/connect_methods.py b/apps/terminal/connect_methods.py index 0f6bfe476..1ad9fde6c 100644 --- a/apps/terminal/connect_methods.py +++ b/apps/terminal/connect_methods.py @@ -211,6 +211,22 @@ class ConnectMethodUtil: def refresh_methods(cls): cls._all_methods = None + @classmethod + def get_filtered_protocols_connect_methods(cls, os): + methods = dict(cls.get_protocols_connect_methods(os)) + component_setting = { + 'razor': 'TERMINAL_RAZOR_ENABLED', + 'magnus': 'TERMINAL_MAGNUS_ENABLED', + } + disabled_component = [comp for comp, attr in component_setting.items() if not getattr(settings, attr)] + if not disabled_component: + return methods + + for protocol, ms in methods.items(): + filtered_methods = [m for m in ms if m['component'] not in disabled_component] + methods[protocol] = filtered_methods + return methods + @classmethod def get_protocols_connect_methods(cls, os): if cls._all_methods is not None: From 9339cd271a8cf8e3ff2f3d04844990db1e2e0f90 Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Wed, 15 Feb 2023 17:55:29 +0800 Subject: [PATCH 06/10] =?UTF-8?q?perf:=20native=20method=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20(#9566)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * perf: native method 优化 * perf: update docker action test --------- Co-authored-by: Eric --- .github/workflows/jms-build-test.yml | 3 +++ apps/terminal/connect_methods.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/jms-build-test.yml b/.github/workflows/jms-build-test.yml index 0f5309cac..044e3c016 100644 --- a/.github/workflows/jms-build-test.yml +++ b/.github/workflows/jms-build-test.yml @@ -21,6 +21,9 @@ jobs: push: false tags: jumpserver/core:test file: Dockerfile + build-args: | + APT_MIRROR=http://deb.debian.org + PIP_MIRROR=https://pypi.org/simple cache-from: type=gha cache-to: type=gha,mode=max diff --git a/apps/terminal/connect_methods.py b/apps/terminal/connect_methods.py index 1ad9fde6c..c2d69322c 100644 --- a/apps/terminal/connect_methods.py +++ b/apps/terminal/connect_methods.py @@ -262,6 +262,9 @@ class ConnectMethodUtil: listen = component_protocol['listen'] for listen_protocol in listen: # Native method + if component == TerminalType.koko and protocol.value != Protocol.ssh: + # koko 仅支持 ssh 的 native 方式,其他数据库的 native 方式不提供 + continue methods[protocol.value].extend([ { 'component': component.value, From 7b95d19de69bb4dccb76add4b52806095de2430a Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Wed, 15 Feb 2023 18:16:24 +0800 Subject: [PATCH 07/10] perf: verify code ttl translate (#9567) Co-authored-by: feng <1304903146@qq.com> --- apps/locale/ja/LC_MESSAGES/django.mo | 4 +- apps/locale/ja/LC_MESSAGES/django.po | 289 +++++++++++++------------- apps/locale/zh/LC_MESSAGES/django.mo | 4 +- apps/locale/zh/LC_MESSAGES/django.po | 289 +++++++++++++------------- apps/settings/serializers/security.py | 2 +- 5 files changed, 295 insertions(+), 293 deletions(-) diff --git a/apps/locale/ja/LC_MESSAGES/django.mo b/apps/locale/ja/LC_MESSAGES/django.mo index 7806fbaae..7196d9c22 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:01857f512b7280cc7db6be734dc3aa266f6384b222addca127eabbe61de47bb2 -size 135229 +oid sha256:8c78d1db90dbda0b4ab307a4107894b742690cae5f532de12477b9cb10cda372 +size 135124 diff --git a/apps/locale/ja/LC_MESSAGES/django.po b/apps/locale/ja/LC_MESSAGES/django.po index c7bfd3b46..1b382dfba 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-02-14 19:27+0800\n" +"POT-Creation-Date: 2023-02-15 18:07+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -171,7 +171,7 @@ msgstr "作成のみ" #: perms/models/asset_permission.py:64 perms/serializers/permission.py:27 #: terminal/backends/command/models.py:21 terminal/models/session/session.py:31 #: terminal/notifications.py:95 terminal/serializers/command.py:16 -#: tickets/models/ticket/apply_asset.py:16 xpack/plugins/cloud/models.py:220 +#: tickets/models/ticket/apply_asset.py:16 xpack/plugins/cloud/models.py:212 msgid "Asset" msgstr "資産" @@ -194,8 +194,9 @@ msgstr "ソース" #: accounts/serializers/automations/change_secret.py:108 #: accounts/serializers/automations/change_secret.py:128 #: acls/models/base.py:102 acls/serializers/base.py:57 -#: assets/serializers/asset/common.py:120 assets/serializers/gateway.py:30 +#: assets/serializers/asset/common.py:120 assets/serializers/gateway.py:28 #: audits/models.py:37 ops/models/base.py:18 +#: perms/models/asset_permission.py:70 perms/serializers/permission.py:32 #: terminal/backends/command/models.py:22 terminal/models/session/session.py:33 #: tickets/models/ticket/command_confirm.py:13 xpack/plugins/cloud/models.py:85 msgid "Account" @@ -242,8 +243,8 @@ msgid "Account backup plan" msgstr "アカウントバックアップ計画" #: accounts/models/automations/backup_account.py:77 -#: assets/models/automations/base.py:106 audits/models.py:43 -#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:114 +#: assets/models/automations/base.py:110 audits/models.py:43 +#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:116 #: perms/models/asset_permission.py:72 terminal/models/applet/host.py:108 #: terminal/models/session/session.py:44 #: tickets/models/ticket/apply_application.py:30 @@ -264,13 +265,13 @@ msgstr "アカウントのバックアップスナップショット" #: accounts/models/automations/backup_account.py:88 #: accounts/serializers/account/backup.py:39 #: accounts/serializers/automations/base.py:44 -#: assets/models/automations/base.py:113 +#: assets/models/automations/base.py:117 #: assets/serializers/automations/base.py:40 msgid "Trigger mode" msgstr "トリガーモード" #: accounts/models/automations/backup_account.py:91 audits/models.py:158 -#: terminal/models/session/sharing.py:107 xpack/plugins/cloud/models.py:176 +#: terminal/models/session/sharing.py:107 xpack/plugins/cloud/models.py:168 msgid "Reason" msgstr "理由" @@ -289,35 +290,35 @@ msgstr "アカウントバックアップの実行" msgid "Account automation task" msgstr "アカウント自動化タスク" -#: accounts/models/automations/base.py:25 +#: accounts/models/automations/base.py:29 msgid "Automation execution" msgstr "自動実行" -#: accounts/models/automations/base.py:26 +#: accounts/models/automations/base.py:30 msgid "Automation executions" msgstr "自動実行" -#: accounts/models/automations/base.py:28 +#: accounts/models/automations/base.py:32 msgid "Can view change secret execution" msgstr "改密実行の表示" -#: accounts/models/automations/base.py:29 +#: accounts/models/automations/base.py:33 msgid "Can add change secret execution" msgstr "改密実行の作成" -#: accounts/models/automations/base.py:31 +#: accounts/models/automations/base.py:35 msgid "Can view gather accounts execution" msgstr "コレクションアカウントの実行を表示" -#: accounts/models/automations/base.py:32 +#: accounts/models/automations/base.py:36 msgid "Can add gather accounts execution" msgstr "回収口座作成の実行" -#: accounts/models/automations/base.py:34 +#: accounts/models/automations/base.py:38 msgid "Can view push account execution" msgstr "プッシュ アカウントの実行を表示する" -#: accounts/models/automations/base.py:35 +#: accounts/models/automations/base.py:39 msgid "Can add push account execution" msgstr "プッシュ アカウントの作成の実行" @@ -364,8 +365,8 @@ msgid "Date started" msgstr "開始日" #: accounts/models/automations/change_secret.py:74 -#: assets/models/automations/base.py:107 ops/models/base.py:56 -#: ops/models/celery.py:64 ops/models/job.py:115 +#: assets/models/automations/base.py:111 ops/models/base.py:56 +#: ops/models/celery.py:64 ops/models/job.py:117 #: terminal/models/applet/host.py:109 msgid "Date finished" msgstr "終了日" @@ -426,9 +427,9 @@ msgstr "アカウントの確認" #: assets/models/platform.py:20 assets/models/platform.py:74 #: assets/serializers/asset/common.py:63 assets/serializers/asset/common.py:137 #: assets/serializers/platform.py:131 -#: authentication/serializers/connect_token_secret.py:103 ops/mixin.py:20 +#: authentication/serializers/connect_token_secret.py:103 ops/mixin.py:21 #: ops/models/adhoc.py:21 ops/models/celery.py:15 ops/models/celery.py:57 -#: ops/models/job.py:24 ops/models/playbook.py:22 ops/serializers/job.py:19 +#: ops/models/job.py:26 ops/models/playbook.py:22 ops/serializers/job.py:19 #: orgs/models.py:69 perms/models/asset_permission.py:56 rbac/models/role.py:29 #: settings/models.py:33 settings/serializers/sms.py:6 #: terminal/models/applet/applet.py:26 terminal/models/component/endpoint.py:12 @@ -540,7 +541,7 @@ msgstr "カテゴリ" #: assets/models/cmd_filter.py:74 assets/models/platform.py:76 #: assets/serializers/asset/common.py:117 assets/serializers/platform.py:92 #: audits/serializers.py:49 -#: authentication/serializers/connect_token_secret.py:116 ops/models/job.py:32 +#: authentication/serializers/connect_token_secret.py:116 ops/models/job.py:34 #: perms/serializers/user_permission.py:26 terminal/models/applet/applet.py:30 #: terminal/models/component/storage.py:57 #: terminal/models/component/storage.py:146 terminal/serializers/applet.py:28 @@ -558,7 +559,7 @@ msgstr "資産が存在しません" #: accounts/serializers/account/backup.py:30 #: accounts/serializers/automations/base.py:36 -#: assets/serializers/automations/base.py:34 ops/mixin.py:22 ops/mixin.py:102 +#: assets/serializers/automations/base.py:34 ops/mixin.py:23 ops/mixin.py:103 #: settings/serializers/auth/ldap.py:66 msgid "Periodic perform" msgstr "定期的なパフォーマンス" @@ -589,7 +590,7 @@ msgstr "特別情報" #: accounts/serializers/automations/base.py:22 #: assets/models/automations/base.py:19 #: assets/serializers/automations/base.py:20 ops/models/base.py:17 -#: ops/models/job.py:34 +#: ops/models/job.py:36 #: terminal/templates/terminal/_msg_command_execute_alert.html:16 msgid "Assets" msgstr "資産" @@ -602,7 +603,7 @@ msgid "Nodes" msgstr "ノード" #: accounts/serializers/automations/base.py:42 -#: assets/models/automations/base.py:109 +#: assets/models/automations/base.py:113 #: assets/serializers/automations/base.py:39 msgid "Automation snapshot" msgstr "自動スナップショット" @@ -620,12 +621,12 @@ msgid "* Password length range 6-30 bits" msgstr "* パスワードの長さの範囲6-30ビット" #: accounts/serializers/automations/change_secret.py:110 -#: assets/models/automations/base.py:118 +#: assets/models/automations/base.py:122 msgid "Automation task execution" msgstr "自動タスク実行履歴" #: accounts/serializers/automations/change_secret.py:150 audits/const.py:52 -#: audits/models.py:42 audits/signal_handlers/activity_log.py:119 +#: audits/models.py:42 audits/signal_handlers/activity_log.py:120 #: common/const/choices.py:18 ops/const.py:56 ops/serializers/celery.py:39 #: terminal/const.py:59 terminal/models/session/sharing.py:103 #: tickets/views/approve.py:114 @@ -633,7 +634,7 @@ msgid "Success" msgstr "成功" #: accounts/serializers/automations/change_secret.py:151 audits/const.py:53 -#: audits/signal_handlers/activity_log.py:119 common/const/choices.py:19 +#: audits/signal_handlers/activity_log.py:120 common/const/choices.py:19 #: ops/const.py:58 terminal/const.py:60 xpack/plugins/cloud/const.py:41 msgid "Failed" msgstr "失敗しました" @@ -642,7 +643,7 @@ msgstr "失敗しました" msgid "Account execute automation" msgstr "アカウント実行の自動化" -#: accounts/tasks/backup_account.py:13 +#: accounts/tasks/backup_account.py:12 msgid "Execute account backup plan" msgstr "アカウントのバックアップ計画を実施する" @@ -727,7 +728,7 @@ msgstr "アクティブ" #: authentication/models/sso_token.py:16 #: notifications/models/notification.py:12 #: perms/api/user_permission/mixin.py:55 perms/models/asset_permission.py:58 -#: perms/serializers/permission.py:23 rbac/builtin.py:119 +#: perms/serializers/permission.py:23 rbac/builtin.py:118 #: rbac/models/rolebinding.py:49 terminal/backends/command/models.py:20 #: terminal/models/session/session.py:29 terminal/models/session/sharing.py:32 #: terminal/notifications.py:96 terminal/notifications.py:144 @@ -960,7 +961,7 @@ msgid "Connect failed" msgstr "接続に失敗しました" #: assets/const/automation.py:6 audits/const.py:6 audits/const.py:35 -#: audits/signal_handlers/activity_log.py:91 common/utils/ip/geoip/utils.py:31 +#: audits/signal_handlers/activity_log.py:92 common/utils/ip/geoip/utils.py:31 #: common/utils/ip/geoip/utils.py:37 common/utils/ip/utils.py:84 msgid "Unknown" msgstr "不明" @@ -1056,20 +1057,20 @@ msgstr "SSHパブリックキー" #: assets/models/_user.py:27 assets/models/cmd_filter.py:40 #: assets/models/cmd_filter.py:88 assets/models/group.py:23 #: assets/models/platform.py:79 common/db/models.py:37 ops/models/adhoc.py:27 -#: ops/models/job.py:40 ops/models/playbook.py:25 rbac/models/role.py:37 +#: ops/models/job.py:42 ops/models/playbook.py:25 rbac/models/role.py:37 #: settings/models.py:38 terminal/models/applet/applet.py:35 #: terminal/models/applet/applet.py:151 terminal/models/applet/host.py:110 #: terminal/models/component/endpoint.py:24 #: terminal/models/component/endpoint.py:100 #: terminal/models/session/session.py:46 tickets/models/comment.py:32 #: tickets/models/ticket/general.py:297 users/models/user.py:756 -#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:119 +#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:111 msgid "Comment" msgstr "コメント" -#: assets/models/_user.py:28 assets/models/automations/base.py:105 +#: assets/models/_user.py:28 assets/models/automations/base.py:109 #: assets/models/cmd_filter.py:41 assets/models/group.py:22 -#: common/db/models.py:35 ops/models/base.py:54 ops/models/job.py:113 +#: common/db/models.py:35 ops/models/base.py:54 ops/models/job.py:115 #: users/models/user.py:943 msgid "Date created" msgstr "作成された日付" @@ -1164,7 +1165,7 @@ msgstr "アドレス" #: assets/models/asset/common.py:109 assets/models/platform.py:111 #: authentication/serializers/connect_token_secret.py:108 #: perms/serializers/user_permission.py:23 -#: xpack/plugins/cloud/serializers/account_attrs.py:179 +#: xpack/plugins/cloud/serializers/account_attrs.py:182 msgid "Platform" msgstr "プラットフォーム" @@ -1251,27 +1252,26 @@ msgid "Submit selector" msgstr "ボタンセレクターを確認する" #: assets/models/automations/base.py:17 assets/models/cmd_filter.py:38 -#: assets/serializers/asset/common.py:279 perms/models/asset_permission.py:70 -#: perms/serializers/permission.py:32 rbac/tree.py:36 +#: assets/serializers/asset/common.py:279 rbac/tree.py:36 msgid "Accounts" msgstr "アカウント" -#: assets/models/automations/base.py:28 assets/models/automations/base.py:102 +#: assets/models/automations/base.py:28 assets/models/automations/base.py:106 msgid "Automation task" msgstr "自動化されたタスク" -#: assets/models/automations/base.py:95 +#: assets/models/automations/base.py:99 msgid "Asset automation task" msgstr "アセットの自動化タスク" -#: assets/models/automations/base.py:104 audits/models.py:163 -#: audits/serializers.py:50 ops/models/base.py:49 ops/models/job.py:106 +#: assets/models/automations/base.py:108 audits/models.py:163 +#: audits/serializers.py:50 ops/models/base.py:49 ops/models/job.py:108 #: terminal/models/applet/applet.py:150 terminal/models/applet/host.py:107 #: terminal/models/component/status.py:27 terminal/serializers/applet.py:17 #: terminal/serializers/applet_host.py:93 tickets/models/ticket/general.py:283 #: tickets/serializers/super_ticket.py:13 -#: tickets/serializers/ticket/ticket.py:20 xpack/plugins/cloud/models.py:172 -#: xpack/plugins/cloud/models.py:224 +#: tickets/serializers/ticket/ticket.py:20 xpack/plugins/cloud/models.py:164 +#: xpack/plugins/cloud/models.py:216 msgid "Status" msgstr "ステータス" @@ -1490,8 +1490,7 @@ msgstr "自動充填" #: assets/serializers/asset/common.py:119 assets/serializers/platform.py:95 #: authentication/serializers/connect_token_secret.py:28 #: authentication/serializers/connect_token_secret.py:66 -#: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:107 -#: xpack/plugins/cloud/serializers/task.py:38 +#: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:99 msgid "Protocols" msgstr "プロトコル" @@ -1518,6 +1517,7 @@ msgstr "自動情報" #: assets/serializers/asset/database.py:24 common/serializers/fields.py:100 #: tickets/serializers/ticket/common.py:58 #: xpack/plugins/cloud/serializers/account_attrs.py:56 +#: xpack/plugins/cloud/serializers/account_attrs.py:79 msgid "This field is required." msgstr "このフィールドは必須です。" @@ -1578,7 +1578,7 @@ msgstr "制約" msgid "Types" msgstr "タイプ" -#: assets/serializers/gateway.py:24 common/validators.py:32 +#: assets/serializers/gateway.py:23 common/validators.py:32 msgid "This field must be unique." msgstr "このフィールドは一意である必要があります。" @@ -1771,6 +1771,7 @@ msgstr "パスワードを変更する" #: audits/const.py:34 settings/serializers/terminal.py:6 #: terminal/models/applet/host.py:24 terminal/models/component/terminal.py:156 +#: terminal/serializers/session.py:52 msgid "Terminal" msgstr "ターミナル" @@ -1910,19 +1911,19 @@ msgstr "理由表示" msgid "User {} {} this resource" msgstr "ユーザー {} {} が現在のリソースをサブスクライブしました。" -#: audits/signal_handlers/activity_log.py:112 +#: audits/signal_handlers/activity_log.py:113 #, fuzzy, python-format #| msgid "Push accounts to assets" msgid "User %s use account %s login asset %s" msgstr "アカウントをアセットにプッシュ:" -#: audits/signal_handlers/activity_log.py:120 +#: audits/signal_handlers/activity_log.py:121 #, fuzzy, python-format #| msgid "User [{}] login this system.[{}]" msgid "User %s login system %s" msgstr "ユーザー {} がサービスにログインしました。[{}]" -#: audits/signal_handlers/activity_log.py:140 +#: audits/signal_handlers/activity_log.py:145 #, python-format msgid "User %s perform a task (%s) for this resource" msgstr "" @@ -1991,7 +1992,7 @@ msgstr "ACL アクションはレビューです" msgid "Current user not support mfa type: {}" msgstr "現在のユーザーはmfaタイプをサポートしていません: {}" -#: authentication/api/password.py:31 terminal/api/session/session.py:225 +#: authentication/api/password.py:31 terminal/api/session/session.py:244 #: users/views/profile/reset.py:44 msgid "User does not exist: {}" msgstr "ユーザーが存在しない: {}" @@ -2490,6 +2491,12 @@ msgstr "作業指示情報" msgid "Actions" msgstr "アクション" +#: authentication/serializers/connection_token.py:41 +#: perms/serializers/permission.py:31 perms/serializers/permission.py:61 +#: users/serializers/user.py:93 users/serializers/user.py:162 +msgid "Is expired" +msgstr "期限切れです" + #: authentication/serializers/password_mfa.py:16 #: authentication/serializers/password_mfa.py:24 #: notifications/backends/__init__.py:10 settings/serializers/email.py:19 @@ -3108,7 +3115,7 @@ msgstr "無効な IP" msgid "Invalid address" msgstr "無効なアドレス。" -#: common/utils/translate.py:33 +#: common/utils/translate.py:42 #, fuzzy, python-format #| msgid "Hello" msgid "Hello %s" @@ -3263,11 +3270,11 @@ msgstr "空欄" msgid "VCS" msgstr "VCS" -#: ops/const.py:38 +#: ops/const.py:38 ops/models/adhoc.py:45 msgid "Adhoc" msgstr "コマンド#コマンド#" -#: ops/const.py:39 ops/models/job.py:31 +#: ops/const.py:39 ops/models/job.py:33 msgid "Playbook" msgstr "Playbook" @@ -3299,28 +3306,28 @@ msgstr "タイムアウト" msgid "no valid program entry found." msgstr "利用可能なプログラムポータルがありません" -#: ops/mixin.py:25 ops/mixin.py:88 settings/serializers/auth/ldap.py:73 +#: ops/mixin.py:26 ops/mixin.py:89 settings/serializers/auth/ldap.py:73 msgid "Cycle perform" msgstr "サイクル実行" -#: ops/mixin.py:29 ops/mixin.py:86 ops/mixin.py:105 +#: ops/mixin.py:30 ops/mixin.py:87 ops/mixin.py:106 #: settings/serializers/auth/ldap.py:70 msgid "Regularly perform" msgstr "定期的に実行する" -#: ops/mixin.py:108 +#: ops/mixin.py:109 msgid "Interval" msgstr "間隔" -#: ops/mixin.py:118 +#: ops/mixin.py:119 msgid "* Please enter a valid crontab expression" msgstr "* 有効なcrontab式を入力してください" -#: ops/mixin.py:125 +#: ops/mixin.py:126 msgid "Range {} to {}" msgstr "{} から {} までの範囲" -#: ops/mixin.py:136 +#: ops/mixin.py:137 msgid "Require periodic or regularly perform setting" msgstr "定期的または定期的に設定を行う必要があります" @@ -3328,25 +3335,21 @@ msgstr "定期的または定期的に設定を行う必要があります" msgid "Pattern" msgstr "パターン" -#: ops/models/adhoc.py:24 ops/models/job.py:28 +#: ops/models/adhoc.py:24 ops/models/job.py:30 msgid "Module" msgstr "モジュール" -#: ops/models/adhoc.py:25 ops/models/celery.py:58 ops/models/job.py:26 +#: ops/models/adhoc.py:25 ops/models/celery.py:58 ops/models/job.py:28 #: terminal/models/component/task.py:16 msgid "Args" msgstr "アルグ" #: ops/models/adhoc.py:26 ops/models/base.py:16 ops/models/base.py:53 -#: ops/models/job.py:33 ops/models/job.py:112 ops/models/playbook.py:24 +#: ops/models/job.py:35 ops/models/job.py:114 ops/models/playbook.py:24 #: terminal/models/session/sharing.py:23 msgid "Creator" msgstr "作成者" -#: ops/models/adhoc.py:45 -msgid "AdHoc" -msgstr "タスクの各バージョン" - #: ops/models/base.py:19 msgid "Account policy" msgstr "アカウント ポリシー" @@ -3359,12 +3362,12 @@ msgstr "最後の実行" msgid "Date last run" msgstr "最終実行日" -#: ops/models/base.py:51 ops/models/job.py:110 -#: xpack/plugins/cloud/models.py:170 +#: ops/models/base.py:51 ops/models/job.py:112 +#: xpack/plugins/cloud/models.py:162 msgid "Result" msgstr "結果" -#: ops/models/base.py:52 ops/models/job.py:111 +#: ops/models/base.py:52 ops/models/job.py:113 msgid "Summary" msgstr "概要" @@ -3404,51 +3407,51 @@ msgstr "発売日" msgid "Celery Task Execution" msgstr "Celery タスク実行" -#: ops/models/job.py:29 +#: ops/models/job.py:31 msgid "Chdir" msgstr "実行ディレクトリ" -#: ops/models/job.py:30 +#: ops/models/job.py:32 msgid "Timeout (Seconds)" msgstr "タイムアウト(秒)" -#: ops/models/job.py:35 +#: ops/models/job.py:37 msgid "Runas" msgstr "ユーザーとして実行" -#: ops/models/job.py:37 +#: ops/models/job.py:39 msgid "Runas policy" msgstr "ユーザー ポリシー" -#: ops/models/job.py:38 +#: ops/models/job.py:40 msgid "Use Parameter Define" msgstr "パラメータ定義を使用する" -#: ops/models/job.py:39 +#: ops/models/job.py:41 msgid "Parameters define" msgstr "パラメータ定義" -#: ops/models/job.py:98 +#: ops/models/job.py:100 msgid "Job" msgstr "ジョブ#ジョブ#" -#: ops/models/job.py:109 +#: ops/models/job.py:111 msgid "Parameters" msgstr "パラメータ" -#: ops/models/job.py:117 +#: ops/models/job.py:119 msgid "Material" msgstr "" -#: ops/models/job.py:119 +#: ops/models/job.py:121 msgid "Material Type" msgstr "" -#: ops/models/job.py:322 +#: ops/models/job.py:358 msgid "Job Execution" msgstr "ジョブ実行" -#: ops/models/job.py:333 +#: ops/models/job.py:369 msgid "Job audit log" msgstr "ジョブ監査ログ" @@ -3702,11 +3705,6 @@ msgstr "資産権限の有効期限が近づいています" msgid "asset permissions of organization {}" msgstr "組織 {} の資産権限" -#: perms/serializers/permission.py:31 perms/serializers/permission.py:61 -#: users/serializers/user.py:93 users/serializers/user.py:162 -msgid "Is expired" -msgstr "期限切れです" - #: perms/tasks.py:28 msgid "Check asset permission expired" msgstr "アセット認証ルールの有効期限が切れていることを確認する" @@ -3739,7 +3737,7 @@ msgstr "内部の役割は、破壊することはできません" msgid "The role has been bound to users, can't be destroy" msgstr "ロールはユーザーにバインドされており、破壊することはできません" -#: rbac/api/role.py:80 +#: rbac/api/role.py:82 msgid "Internal role, can't be update" msgstr "内部ロール、更新できません" @@ -3751,27 +3749,27 @@ msgstr "{} 少なくとも1つのシステムロール" msgid "RBAC" msgstr "RBAC" -#: rbac/builtin.py:110 +#: rbac/builtin.py:109 msgid "SystemAdmin" msgstr "システム管理者" -#: rbac/builtin.py:113 +#: rbac/builtin.py:112 msgid "SystemAuditor" msgstr "システム監査人" -#: rbac/builtin.py:116 +#: rbac/builtin.py:115 msgid "SystemComponent" msgstr "システムコンポーネント" -#: rbac/builtin.py:122 +#: rbac/builtin.py:121 msgid "OrgAdmin" msgstr "組織管理者" -#: rbac/builtin.py:125 +#: rbac/builtin.py:124 msgid "OrgAuditor" msgstr "監査員を組織する" -#: rbac/builtin.py:128 +#: rbac/builtin.py:127 msgid "OrgUser" msgstr "組織ユーザー" @@ -4415,8 +4413,8 @@ msgstr "" msgid "SSO auth key TTL" msgstr "Token有効期間" -#: settings/serializers/auth/sso.py:17 settings/serializers/security.py:117 -#: xpack/plugins/cloud/serializers/account_attrs.py:176 +#: settings/serializers/auth/sso.py:17 +#: xpack/plugins/cloud/serializers/account_attrs.py:179 msgid "Unit: second" msgstr "単位: 秒" @@ -4841,6 +4839,10 @@ msgstr "" msgid "Verify code TTL" msgstr "認証コード有効時間" +#: settings/serializers/security.py:117 +msgid "Unit: second, reset password and send SMS code expiration time" +msgstr "単位: 2番目に、パスワードをリセットしてSMSコードの有効期限を送信します" + #: settings/serializers/security.py:121 msgid "Enable Login dynamic code" msgstr "ログイン動的コードの有効化" @@ -5362,15 +5364,15 @@ msgstr "テスト失敗: アカウントが無効" msgid "Have online sessions" msgstr "オンラインセッションを持つ" -#: terminal/api/session/session.py:217 +#: terminal/api/session/session.py:236 msgid "Session does not exist: {}" msgstr "セッションが存在しません: {}" -#: terminal/api/session/session.py:220 +#: terminal/api/session/session.py:239 msgid "Session is finished or the protocol not supported" msgstr "セッションが終了したか、プロトコルがサポートされていません" -#: terminal/api/session/session.py:233 +#: terminal/api/session/session.py:252 msgid "User does not have permission" msgstr "ユーザーに権限がありません" @@ -5812,10 +5814,6 @@ msgstr "資産ID" msgid "Login from display" msgstr "表示からのログイン" -#: terminal/serializers/session.py:52 -msgid "Terminal ID" -msgstr "ターミナル ID" - #: terminal/serializers/session.py:55 msgid "Terminal display" msgstr "ターミナルディスプレイ" @@ -5842,7 +5840,7 @@ msgstr "アクセスキー" msgid "Access key secret" msgstr "アクセスキーシークレット" -#: terminal/serializers/storage.py:65 xpack/plugins/cloud/models.py:217 +#: terminal/serializers/storage.py:65 xpack/plugins/cloud/models.py:209 msgid "Region" msgstr "リージョン" @@ -6280,7 +6278,7 @@ msgstr "無効な承認アクション" msgid "This user is not authorized to approve this ticket" msgstr "このユーザーはこの作業指示を承認する権限がありません" -#: users/api/user.py:178 +#: users/api/user.py:179 msgid "Could not reset self otp, use profile reset instead" msgstr "自己otpをリセットできませんでした、代わりにプロファイルリセットを使用" @@ -6985,55 +6983,47 @@ msgstr "リージョン" msgid "Hostname strategy" msgstr "ホスト名戦略" -#: xpack/plugins/cloud/models.py:100 -msgid "Unix admin user" -msgstr "Unix adminユーザー" - -#: xpack/plugins/cloud/models.py:104 -msgid "Windows admin user" -msgstr "Windows管理者" - -#: xpack/plugins/cloud/models.py:110 xpack/plugins/cloud/serializers/task.py:41 +#: xpack/plugins/cloud/models.py:102 xpack/plugins/cloud/serializers/task.py:40 msgid "IP network segment group" msgstr "IPネットワークセグメントグループ" -#: xpack/plugins/cloud/models.py:113 xpack/plugins/cloud/serializers/task.py:46 +#: xpack/plugins/cloud/models.py:105 xpack/plugins/cloud/serializers/task.py:45 msgid "Sync IP type" msgstr "同期IPタイプ" -#: xpack/plugins/cloud/models.py:116 xpack/plugins/cloud/serializers/task.py:64 +#: xpack/plugins/cloud/models.py:108 xpack/plugins/cloud/serializers/task.py:62 msgid "Always update" msgstr "常に更新" -#: xpack/plugins/cloud/models.py:122 +#: xpack/plugins/cloud/models.py:114 msgid "Date last sync" msgstr "最終同期日" -#: xpack/plugins/cloud/models.py:127 xpack/plugins/cloud/models.py:168 +#: xpack/plugins/cloud/models.py:119 xpack/plugins/cloud/models.py:160 msgid "Sync instance task" msgstr "インスタンスの同期タスク" -#: xpack/plugins/cloud/models.py:179 xpack/plugins/cloud/models.py:227 +#: xpack/plugins/cloud/models.py:171 xpack/plugins/cloud/models.py:219 msgid "Date sync" msgstr "日付の同期" -#: xpack/plugins/cloud/models.py:183 +#: xpack/plugins/cloud/models.py:175 msgid "Sync instance task execution" msgstr "インスタンスタスクの同期実行" -#: xpack/plugins/cloud/models.py:207 +#: xpack/plugins/cloud/models.py:199 msgid "Sync task" msgstr "同期タスク" -#: xpack/plugins/cloud/models.py:211 +#: xpack/plugins/cloud/models.py:203 msgid "Sync instance task history" msgstr "インスタンスタスク履歴の同期" -#: xpack/plugins/cloud/models.py:214 +#: xpack/plugins/cloud/models.py:206 msgid "Instance" msgstr "インスタンス" -#: xpack/plugins/cloud/models.py:231 +#: xpack/plugins/cloud/models.py:223 msgid "Sync instance detail" msgstr "同期インスタンスの詳細" @@ -7247,52 +7237,52 @@ msgstr "テナントID" msgid "Subscription ID" msgstr "サブスクリプションID" -#: xpack/plugins/cloud/serializers/account_attrs.py:95 -#: xpack/plugins/cloud/serializers/account_attrs.py:100 -#: xpack/plugins/cloud/serializers/account_attrs.py:116 -#: xpack/plugins/cloud/serializers/account_attrs.py:141 +#: xpack/plugins/cloud/serializers/account_attrs.py:98 +#: xpack/plugins/cloud/serializers/account_attrs.py:103 +#: xpack/plugins/cloud/serializers/account_attrs.py:119 +#: xpack/plugins/cloud/serializers/account_attrs.py:144 msgid "API Endpoint" msgstr "APIエンドポイント" -#: xpack/plugins/cloud/serializers/account_attrs.py:106 +#: xpack/plugins/cloud/serializers/account_attrs.py:109 msgid "Auth url" msgstr "認証アドレス" -#: xpack/plugins/cloud/serializers/account_attrs.py:107 +#: xpack/plugins/cloud/serializers/account_attrs.py:110 msgid "eg: http://openstack.example.com:5000/v3" msgstr "例えば: http://openstack.example.com:5000/v3" -#: xpack/plugins/cloud/serializers/account_attrs.py:110 +#: xpack/plugins/cloud/serializers/account_attrs.py:113 msgid "User domain" msgstr "ユーザードメイン" -#: xpack/plugins/cloud/serializers/account_attrs.py:117 +#: xpack/plugins/cloud/serializers/account_attrs.py:120 msgid "Cert File" msgstr "証明書ファイル" -#: xpack/plugins/cloud/serializers/account_attrs.py:118 +#: xpack/plugins/cloud/serializers/account_attrs.py:121 msgid "Key File" msgstr "キーファイル" -#: xpack/plugins/cloud/serializers/account_attrs.py:134 +#: xpack/plugins/cloud/serializers/account_attrs.py:137 msgid "Service account key" msgstr "サービスアカウントキー" -#: xpack/plugins/cloud/serializers/account_attrs.py:135 +#: xpack/plugins/cloud/serializers/account_attrs.py:138 msgid "The file is in JSON format" msgstr "ファイルはJSON形式です。" -#: xpack/plugins/cloud/serializers/account_attrs.py:148 +#: xpack/plugins/cloud/serializers/account_attrs.py:151 msgid "IP address invalid `{}`, {}" msgstr "IPアドレスが無効: '{}', {}" -#: xpack/plugins/cloud/serializers/account_attrs.py:154 +#: xpack/plugins/cloud/serializers/account_attrs.py:157 msgid "" "Format for comma-delimited string,Such as: 192.168.1.0/24, " "10.0.0.0-10.0.0.255" msgstr "形式はコンマ区切りの文字列です,例:192.168.1.0/24,10.0.0.0-10.0.0.255" -#: xpack/plugins/cloud/serializers/account_attrs.py:158 +#: xpack/plugins/cloud/serializers/account_attrs.py:161 msgid "" "The port is used to detect the validity of the IP address. When the " "synchronization task is executed, only the valid IP address will be " @@ -7302,19 +7292,19 @@ msgstr "" "実行されると、有効な IP アドレスのみが同期されます。
ポートが0の場合、す" "べてのIPアドレスが有効です。" -#: xpack/plugins/cloud/serializers/account_attrs.py:166 +#: xpack/plugins/cloud/serializers/account_attrs.py:169 msgid "Hostname prefix" msgstr "ホスト名プレフィックス" -#: xpack/plugins/cloud/serializers/account_attrs.py:169 +#: xpack/plugins/cloud/serializers/account_attrs.py:172 msgid "IP segment" msgstr "IP セグメント" -#: xpack/plugins/cloud/serializers/account_attrs.py:173 +#: xpack/plugins/cloud/serializers/account_attrs.py:176 msgid "Test port" msgstr "テストポート" -#: xpack/plugins/cloud/serializers/account_attrs.py:176 +#: xpack/plugins/cloud/serializers/account_attrs.py:179 msgid "Test timeout" msgstr "テストタイムアウト" @@ -7340,10 +7330,6 @@ msgstr "実行回数" msgid "Instance count" msgstr "インスタンス数" -#: xpack/plugins/cloud/serializers/task.py:63 -msgid "Linux admin user" -msgstr "Linux管理者" - #: xpack/plugins/cloud/utils.py:69 msgid "Account unavailable" msgstr "利用できないアカウント" @@ -7412,6 +7398,21 @@ msgstr "究極のエディション" msgid "Community edition" msgstr "コミュニティ版" +#~ msgid "AdHoc" +#~ msgstr "タスクの各バージョン" + +#~ msgid "Terminal ID" +#~ msgstr "ターミナル ID" + +#~ msgid "Unix admin user" +#~ msgstr "Unix adminユーザー" + +#~ msgid "Windows admin user" +#~ msgstr "Windows管理者" + +#~ msgid "Linux admin user" +#~ msgstr "Linux管理者" + #~ msgid "{} used account[{}], login method[{}] login the asset." #~ msgstr "" #~ "{} トムはアカウント[{}]、ログイン方法[{}]を使ってこの資産を登録しました" diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 42447b06e..a5978125c 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:a46345cf69c2e5feb1cb332b78dfc9af7e1412540642f2e890a9b9c0a89c21a1 -size 111627 +oid sha256:e4ca4ccc9f6714134fcad6bf9bd0b191f4fed409902e0d610ddc68ca1a6f8da8 +size 111543 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 80e9ace5e..f8c2a2ad8 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-02-14 19:27+0800\n" +"POT-Creation-Date: 2023-02-15 18:07+0800\n" "PO-Revision-Date: 2021-05-20 10:54+0800\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -170,7 +170,7 @@ msgstr "仅创建" #: perms/models/asset_permission.py:64 perms/serializers/permission.py:27 #: terminal/backends/command/models.py:21 terminal/models/session/session.py:31 #: terminal/notifications.py:95 terminal/serializers/command.py:16 -#: tickets/models/ticket/apply_asset.py:16 xpack/plugins/cloud/models.py:220 +#: tickets/models/ticket/apply_asset.py:16 xpack/plugins/cloud/models.py:212 msgid "Asset" msgstr "资产" @@ -193,8 +193,9 @@ msgstr "来源" #: accounts/serializers/automations/change_secret.py:108 #: accounts/serializers/automations/change_secret.py:128 #: acls/models/base.py:102 acls/serializers/base.py:57 -#: assets/serializers/asset/common.py:120 assets/serializers/gateway.py:30 +#: assets/serializers/asset/common.py:120 assets/serializers/gateway.py:28 #: audits/models.py:37 ops/models/base.py:18 +#: perms/models/asset_permission.py:70 perms/serializers/permission.py:32 #: terminal/backends/command/models.py:22 terminal/models/session/session.py:33 #: tickets/models/ticket/command_confirm.py:13 xpack/plugins/cloud/models.py:85 msgid "Account" @@ -241,8 +242,8 @@ msgid "Account backup plan" msgstr "账号备份计划" #: accounts/models/automations/backup_account.py:77 -#: assets/models/automations/base.py:106 audits/models.py:43 -#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:114 +#: assets/models/automations/base.py:110 audits/models.py:43 +#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:116 #: perms/models/asset_permission.py:72 terminal/models/applet/host.py:108 #: terminal/models/session/session.py:44 #: tickets/models/ticket/apply_application.py:30 @@ -263,13 +264,13 @@ msgstr "账号备份快照" #: accounts/models/automations/backup_account.py:88 #: accounts/serializers/account/backup.py:39 #: accounts/serializers/automations/base.py:44 -#: assets/models/automations/base.py:113 +#: assets/models/automations/base.py:117 #: assets/serializers/automations/base.py:40 msgid "Trigger mode" msgstr "触发模式" #: accounts/models/automations/backup_account.py:91 audits/models.py:158 -#: terminal/models/session/sharing.py:107 xpack/plugins/cloud/models.py:176 +#: terminal/models/session/sharing.py:107 xpack/plugins/cloud/models.py:168 msgid "Reason" msgstr "原因" @@ -288,35 +289,35 @@ msgstr "账号备份执行" msgid "Account automation task" msgstr "账号自动化任务" -#: accounts/models/automations/base.py:25 +#: accounts/models/automations/base.py:29 msgid "Automation execution" msgstr "自动化执行" -#: accounts/models/automations/base.py:26 +#: accounts/models/automations/base.py:30 msgid "Automation executions" msgstr "自动化执行" -#: accounts/models/automations/base.py:28 +#: accounts/models/automations/base.py:32 msgid "Can view change secret execution" msgstr "查看改密执行" -#: accounts/models/automations/base.py:29 +#: accounts/models/automations/base.py:33 msgid "Can add change secret execution" msgstr "创建改密执行" -#: accounts/models/automations/base.py:31 +#: accounts/models/automations/base.py:35 msgid "Can view gather accounts execution" msgstr "查看收集账号执行" -#: accounts/models/automations/base.py:32 +#: accounts/models/automations/base.py:36 msgid "Can add gather accounts execution" msgstr "创建收集账号执行" -#: accounts/models/automations/base.py:34 +#: accounts/models/automations/base.py:38 msgid "Can view push account execution" msgstr "查看推送账号执行" -#: accounts/models/automations/base.py:35 +#: accounts/models/automations/base.py:39 msgid "Can add push account execution" msgstr "创建推送账号执行" @@ -363,8 +364,8 @@ msgid "Date started" msgstr "开始日期" #: accounts/models/automations/change_secret.py:74 -#: assets/models/automations/base.py:107 ops/models/base.py:56 -#: ops/models/celery.py:64 ops/models/job.py:115 +#: assets/models/automations/base.py:111 ops/models/base.py:56 +#: ops/models/celery.py:64 ops/models/job.py:117 #: terminal/models/applet/host.py:109 msgid "Date finished" msgstr "结束日期" @@ -425,9 +426,9 @@ msgstr "账号验证" #: assets/models/platform.py:20 assets/models/platform.py:74 #: assets/serializers/asset/common.py:63 assets/serializers/asset/common.py:137 #: assets/serializers/platform.py:131 -#: authentication/serializers/connect_token_secret.py:103 ops/mixin.py:20 +#: authentication/serializers/connect_token_secret.py:103 ops/mixin.py:21 #: ops/models/adhoc.py:21 ops/models/celery.py:15 ops/models/celery.py:57 -#: ops/models/job.py:24 ops/models/playbook.py:22 ops/serializers/job.py:19 +#: ops/models/job.py:26 ops/models/playbook.py:22 ops/serializers/job.py:19 #: orgs/models.py:69 perms/models/asset_permission.py:56 rbac/models/role.py:29 #: settings/models.py:33 settings/serializers/sms.py:6 #: terminal/models/applet/applet.py:26 terminal/models/component/endpoint.py:12 @@ -536,7 +537,7 @@ msgstr "类别" #: assets/models/cmd_filter.py:74 assets/models/platform.py:76 #: assets/serializers/asset/common.py:117 assets/serializers/platform.py:92 #: audits/serializers.py:49 -#: authentication/serializers/connect_token_secret.py:116 ops/models/job.py:32 +#: authentication/serializers/connect_token_secret.py:116 ops/models/job.py:34 #: perms/serializers/user_permission.py:26 terminal/models/applet/applet.py:30 #: terminal/models/component/storage.py:57 #: terminal/models/component/storage.py:146 terminal/serializers/applet.py:28 @@ -554,7 +555,7 @@ msgstr "资产不存在" #: accounts/serializers/account/backup.py:30 #: accounts/serializers/automations/base.py:36 -#: assets/serializers/automations/base.py:34 ops/mixin.py:22 ops/mixin.py:102 +#: assets/serializers/automations/base.py:34 ops/mixin.py:23 ops/mixin.py:103 #: settings/serializers/auth/ldap.py:66 msgid "Periodic perform" msgstr "定时执行" @@ -585,7 +586,7 @@ msgstr "特殊信息" #: accounts/serializers/automations/base.py:22 #: assets/models/automations/base.py:19 #: assets/serializers/automations/base.py:20 ops/models/base.py:17 -#: ops/models/job.py:34 +#: ops/models/job.py:36 #: terminal/templates/terminal/_msg_command_execute_alert.html:16 msgid "Assets" msgstr "资产" @@ -598,7 +599,7 @@ msgid "Nodes" msgstr "节点" #: accounts/serializers/automations/base.py:42 -#: assets/models/automations/base.py:109 +#: assets/models/automations/base.py:113 #: assets/serializers/automations/base.py:39 msgid "Automation snapshot" msgstr "自动化快照" @@ -616,12 +617,12 @@ msgid "* Password length range 6-30 bits" msgstr "* 密码长度范围 6-30 位" #: accounts/serializers/automations/change_secret.py:110 -#: assets/models/automations/base.py:118 +#: assets/models/automations/base.py:122 msgid "Automation task execution" msgstr "自动化任务执行历史" #: accounts/serializers/automations/change_secret.py:150 audits/const.py:52 -#: audits/models.py:42 audits/signal_handlers/activity_log.py:119 +#: audits/models.py:42 audits/signal_handlers/activity_log.py:120 #: common/const/choices.py:18 ops/const.py:56 ops/serializers/celery.py:39 #: terminal/const.py:59 terminal/models/session/sharing.py:103 #: tickets/views/approve.py:114 @@ -629,7 +630,7 @@ msgid "Success" msgstr "成功" #: accounts/serializers/automations/change_secret.py:151 audits/const.py:53 -#: audits/signal_handlers/activity_log.py:119 common/const/choices.py:19 +#: audits/signal_handlers/activity_log.py:120 common/const/choices.py:19 #: ops/const.py:58 terminal/const.py:60 xpack/plugins/cloud/const.py:41 msgid "Failed" msgstr "失败" @@ -638,7 +639,7 @@ msgstr "失败" msgid "Account execute automation" msgstr "账号执行自动化" -#: accounts/tasks/backup_account.py:13 +#: accounts/tasks/backup_account.py:12 msgid "Execute account backup plan" msgstr "执行账号备份计划" @@ -723,7 +724,7 @@ msgstr "激活中" #: authentication/models/sso_token.py:16 #: notifications/models/notification.py:12 #: perms/api/user_permission/mixin.py:55 perms/models/asset_permission.py:58 -#: perms/serializers/permission.py:23 rbac/builtin.py:119 +#: perms/serializers/permission.py:23 rbac/builtin.py:118 #: rbac/models/rolebinding.py:49 terminal/backends/command/models.py:20 #: terminal/models/session/session.py:29 terminal/models/session/sharing.py:32 #: terminal/notifications.py:96 terminal/notifications.py:144 @@ -950,7 +951,7 @@ msgid "Connect failed" msgstr "连接失败" #: assets/const/automation.py:6 audits/const.py:6 audits/const.py:35 -#: audits/signal_handlers/activity_log.py:91 common/utils/ip/geoip/utils.py:31 +#: audits/signal_handlers/activity_log.py:92 common/utils/ip/geoip/utils.py:31 #: common/utils/ip/geoip/utils.py:37 common/utils/ip/utils.py:84 msgid "Unknown" msgstr "未知" @@ -1046,20 +1047,20 @@ msgstr "SSH公钥" #: assets/models/_user.py:27 assets/models/cmd_filter.py:40 #: assets/models/cmd_filter.py:88 assets/models/group.py:23 #: assets/models/platform.py:79 common/db/models.py:37 ops/models/adhoc.py:27 -#: ops/models/job.py:40 ops/models/playbook.py:25 rbac/models/role.py:37 +#: ops/models/job.py:42 ops/models/playbook.py:25 rbac/models/role.py:37 #: settings/models.py:38 terminal/models/applet/applet.py:35 #: terminal/models/applet/applet.py:151 terminal/models/applet/host.py:110 #: terminal/models/component/endpoint.py:24 #: terminal/models/component/endpoint.py:100 #: terminal/models/session/session.py:46 tickets/models/comment.py:32 #: tickets/models/ticket/general.py:297 users/models/user.py:756 -#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:119 +#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:111 msgid "Comment" msgstr "备注" -#: assets/models/_user.py:28 assets/models/automations/base.py:105 +#: assets/models/_user.py:28 assets/models/automations/base.py:109 #: assets/models/cmd_filter.py:41 assets/models/group.py:22 -#: common/db/models.py:35 ops/models/base.py:54 ops/models/job.py:113 +#: common/db/models.py:35 ops/models/base.py:54 ops/models/job.py:115 #: users/models/user.py:943 msgid "Date created" msgstr "创建日期" @@ -1154,7 +1155,7 @@ msgstr "地址" #: assets/models/asset/common.py:109 assets/models/platform.py:111 #: authentication/serializers/connect_token_secret.py:108 #: perms/serializers/user_permission.py:23 -#: xpack/plugins/cloud/serializers/account_attrs.py:179 +#: xpack/plugins/cloud/serializers/account_attrs.py:182 msgid "Platform" msgstr "系统平台" @@ -1241,27 +1242,26 @@ msgid "Submit selector" msgstr "确认按钮选择器" #: assets/models/automations/base.py:17 assets/models/cmd_filter.py:38 -#: assets/serializers/asset/common.py:279 perms/models/asset_permission.py:70 -#: perms/serializers/permission.py:32 rbac/tree.py:36 +#: assets/serializers/asset/common.py:279 rbac/tree.py:36 msgid "Accounts" msgstr "账号管理" -#: assets/models/automations/base.py:28 assets/models/automations/base.py:102 +#: assets/models/automations/base.py:28 assets/models/automations/base.py:106 msgid "Automation task" msgstr "自动化任务" -#: assets/models/automations/base.py:95 +#: assets/models/automations/base.py:99 msgid "Asset automation task" msgstr "资产自动化任务" -#: assets/models/automations/base.py:104 audits/models.py:163 -#: audits/serializers.py:50 ops/models/base.py:49 ops/models/job.py:106 +#: assets/models/automations/base.py:108 audits/models.py:163 +#: audits/serializers.py:50 ops/models/base.py:49 ops/models/job.py:108 #: terminal/models/applet/applet.py:150 terminal/models/applet/host.py:107 #: terminal/models/component/status.py:27 terminal/serializers/applet.py:17 #: terminal/serializers/applet_host.py:93 tickets/models/ticket/general.py:283 #: tickets/serializers/super_ticket.py:13 -#: tickets/serializers/ticket/ticket.py:20 xpack/plugins/cloud/models.py:172 -#: xpack/plugins/cloud/models.py:224 +#: tickets/serializers/ticket/ticket.py:20 xpack/plugins/cloud/models.py:164 +#: xpack/plugins/cloud/models.py:216 msgid "Status" msgstr "状态" @@ -1480,8 +1480,7 @@ msgstr "自动代填" #: assets/serializers/asset/common.py:119 assets/serializers/platform.py:95 #: authentication/serializers/connect_token_secret.py:28 #: authentication/serializers/connect_token_secret.py:66 -#: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:107 -#: xpack/plugins/cloud/serializers/task.py:38 +#: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:99 msgid "Protocols" msgstr "协议组" @@ -1508,6 +1507,7 @@ msgstr "自动化信息" #: assets/serializers/asset/database.py:24 common/serializers/fields.py:100 #: tickets/serializers/ticket/common.py:58 #: xpack/plugins/cloud/serializers/account_attrs.py:56 +#: xpack/plugins/cloud/serializers/account_attrs.py:79 msgid "This field is required." msgstr "该字段是必填项。" @@ -1568,7 +1568,7 @@ msgstr "约束" msgid "Types" msgstr "类型" -#: assets/serializers/gateway.py:24 common/validators.py:32 +#: assets/serializers/gateway.py:23 common/validators.py:32 msgid "This field must be unique." msgstr "字段必须唯一" @@ -1759,6 +1759,7 @@ msgstr "改密" #: audits/const.py:34 settings/serializers/terminal.py:6 #: terminal/models/applet/host.py:24 terminal/models/component/terminal.py:156 +#: terminal/serializers/session.py:52 msgid "Terminal" msgstr "终端" @@ -1896,17 +1897,17 @@ msgstr "原因描述" msgid "User {} {} this resource" msgstr "用户 {} {} 了当前资源" -#: audits/signal_handlers/activity_log.py:112 +#: audits/signal_handlers/activity_log.py:113 #, python-format msgid "User %s use account %s login asset %s" msgstr "用户 %s 使用账号 %s 登录资产 %s" -#: audits/signal_handlers/activity_log.py:120 +#: audits/signal_handlers/activity_log.py:121 #, python-format msgid "User %s login system %s" msgstr "用户 %s 登录系统 %s" -#: audits/signal_handlers/activity_log.py:140 +#: audits/signal_handlers/activity_log.py:145 #, python-format msgid "User %s perform a task (%s) for this resource" msgstr "用户 %s 在当前资源, 执行了任务 (%s)" @@ -1975,7 +1976,7 @@ msgstr "ACL 动作是复核" msgid "Current user not support mfa type: {}" msgstr "当前用户不支持 MFA 类型: {}" -#: authentication/api/password.py:31 terminal/api/session/session.py:225 +#: authentication/api/password.py:31 terminal/api/session/session.py:244 #: users/views/profile/reset.py:44 msgid "User does not exist: {}" msgstr "用户不存在: {}" @@ -2462,6 +2463,12 @@ msgstr "工单信息" msgid "Actions" msgstr "动作" +#: authentication/serializers/connection_token.py:41 +#: perms/serializers/permission.py:31 perms/serializers/permission.py:61 +#: users/serializers/user.py:93 users/serializers/user.py:162 +msgid "Is expired" +msgstr "已过期" + #: authentication/serializers/password_mfa.py:16 #: authentication/serializers/password_mfa.py:24 #: notifications/backends/__init__.py:10 settings/serializers/email.py:19 @@ -3072,7 +3079,7 @@ msgstr "无效 IP" msgid "Invalid address" msgstr "无效地址" -#: common/utils/translate.py:33 +#: common/utils/translate.py:42 #, python-format msgid "Hello %s" msgstr "你好 %s" @@ -3221,11 +3228,11 @@ msgstr "空白" msgid "VCS" msgstr "VCS" -#: ops/const.py:38 +#: ops/const.py:38 ops/models/adhoc.py:45 msgid "Adhoc" msgstr "命令" -#: ops/const.py:39 ops/models/job.py:31 +#: ops/const.py:39 ops/models/job.py:33 msgid "Playbook" msgstr "Playbook" @@ -3257,28 +3264,28 @@ msgstr "超时" msgid "no valid program entry found." msgstr "没有可用程序入口" -#: ops/mixin.py:25 ops/mixin.py:88 settings/serializers/auth/ldap.py:73 +#: ops/mixin.py:26 ops/mixin.py:89 settings/serializers/auth/ldap.py:73 msgid "Cycle perform" msgstr "周期执行" -#: ops/mixin.py:29 ops/mixin.py:86 ops/mixin.py:105 +#: ops/mixin.py:30 ops/mixin.py:87 ops/mixin.py:106 #: settings/serializers/auth/ldap.py:70 msgid "Regularly perform" msgstr "定期执行" -#: ops/mixin.py:108 +#: ops/mixin.py:109 msgid "Interval" msgstr "间隔" -#: ops/mixin.py:118 +#: ops/mixin.py:119 msgid "* Please enter a valid crontab expression" msgstr "* 请输入有效的 crontab 表达式" -#: ops/mixin.py:125 +#: ops/mixin.py:126 msgid "Range {} to {}" msgstr "输入在 {} - {} 范围之间" -#: ops/mixin.py:136 +#: ops/mixin.py:137 msgid "Require periodic or regularly perform setting" msgstr "需要周期或定期设置" @@ -3286,25 +3293,21 @@ msgstr "需要周期或定期设置" msgid "Pattern" msgstr "模式" -#: ops/models/adhoc.py:24 ops/models/job.py:28 +#: ops/models/adhoc.py:24 ops/models/job.py:30 msgid "Module" msgstr "模块" -#: ops/models/adhoc.py:25 ops/models/celery.py:58 ops/models/job.py:26 +#: ops/models/adhoc.py:25 ops/models/celery.py:58 ops/models/job.py:28 #: terminal/models/component/task.py:16 msgid "Args" msgstr "参数" #: ops/models/adhoc.py:26 ops/models/base.py:16 ops/models/base.py:53 -#: ops/models/job.py:33 ops/models/job.py:112 ops/models/playbook.py:24 +#: ops/models/job.py:35 ops/models/job.py:114 ops/models/playbook.py:24 #: terminal/models/session/sharing.py:23 msgid "Creator" msgstr "创建者" -#: ops/models/adhoc.py:45 -msgid "AdHoc" -msgstr "任务各版本" - #: ops/models/base.py:19 msgid "Account policy" msgstr "账号策略" @@ -3317,12 +3320,12 @@ msgstr "最后执行" msgid "Date last run" msgstr "最后运行日期" -#: ops/models/base.py:51 ops/models/job.py:110 -#: xpack/plugins/cloud/models.py:170 +#: ops/models/base.py:51 ops/models/job.py:112 +#: xpack/plugins/cloud/models.py:162 msgid "Result" msgstr "结果" -#: ops/models/base.py:52 ops/models/job.py:111 +#: ops/models/base.py:52 ops/models/job.py:113 msgid "Summary" msgstr "汇总" @@ -3362,51 +3365,51 @@ msgstr "发布日期" msgid "Celery Task Execution" msgstr "Celery 任务执行" -#: ops/models/job.py:29 +#: ops/models/job.py:31 msgid "Chdir" msgstr "运行目录" -#: ops/models/job.py:30 +#: ops/models/job.py:32 msgid "Timeout (Seconds)" msgstr "超时时间(秒)" -#: ops/models/job.py:35 +#: ops/models/job.py:37 msgid "Runas" msgstr "运行用户" -#: ops/models/job.py:37 +#: ops/models/job.py:39 msgid "Runas policy" msgstr "用户策略" -#: ops/models/job.py:38 +#: ops/models/job.py:40 msgid "Use Parameter Define" msgstr "使用参数定义" -#: ops/models/job.py:39 +#: ops/models/job.py:41 msgid "Parameters define" msgstr "参数定义" -#: ops/models/job.py:98 +#: ops/models/job.py:100 msgid "Job" msgstr "作业" -#: ops/models/job.py:109 +#: ops/models/job.py:111 msgid "Parameters" msgstr "参数" -#: ops/models/job.py:117 +#: ops/models/job.py:119 msgid "Material" msgstr "" -#: ops/models/job.py:119 +#: ops/models/job.py:121 msgid "Material Type" msgstr "" -#: ops/models/job.py:322 +#: ops/models/job.py:358 msgid "Job Execution" msgstr "作业执行" -#: ops/models/job.py:333 +#: ops/models/job.py:369 msgid "Job audit log" msgstr "作业审计日志" @@ -3659,11 +3662,6 @@ msgstr "资产授权规则将要过期" msgid "asset permissions of organization {}" msgstr "组织 ({}) 的资产授权" -#: perms/serializers/permission.py:31 perms/serializers/permission.py:61 -#: users/serializers/user.py:93 users/serializers/user.py:162 -msgid "Is expired" -msgstr "已过期" - #: perms/tasks.py:28 msgid "Check asset permission expired" msgstr "校验资产授权规则已过期" @@ -3696,7 +3694,7 @@ msgstr "内部角色,不能删除" msgid "The role has been bound to users, can't be destroy" msgstr "角色已绑定用户,不能删除" -#: rbac/api/role.py:80 +#: rbac/api/role.py:82 msgid "Internal role, can't be update" msgstr "内部角色,不能更新" @@ -3708,27 +3706,27 @@ msgstr "{} 至少有一个系统角色" msgid "RBAC" msgstr "RBAC" -#: rbac/builtin.py:110 +#: rbac/builtin.py:109 msgid "SystemAdmin" msgstr "系统管理员" -#: rbac/builtin.py:113 +#: rbac/builtin.py:112 msgid "SystemAuditor" msgstr "系统审计员" -#: rbac/builtin.py:116 +#: rbac/builtin.py:115 msgid "SystemComponent" msgstr "系统组件" -#: rbac/builtin.py:122 +#: rbac/builtin.py:121 msgid "OrgAdmin" msgstr "组织管理员" -#: rbac/builtin.py:125 +#: rbac/builtin.py:124 msgid "OrgAuditor" msgstr "组织审计员" -#: rbac/builtin.py:128 +#: rbac/builtin.py:127 msgid "OrgUser" msgstr "组织用户" @@ -4369,8 +4367,8 @@ msgstr "其它系统可以使用 SSO Token 对接 JumpServer, 免去登录的过 msgid "SSO auth key TTL" msgstr "令牌有效期" -#: settings/serializers/auth/sso.py:17 settings/serializers/security.py:117 -#: xpack/plugins/cloud/serializers/account_attrs.py:176 +#: settings/serializers/auth/sso.py:17 +#: xpack/plugins/cloud/serializers/account_attrs.py:179 msgid "Unit: second" msgstr "单位: 秒" @@ -4779,6 +4777,10 @@ msgstr "单位: 秒, 目前仅在查看账号密码校验 MFA 时生效" msgid "Verify code TTL" msgstr "验证码有效时间" +#: settings/serializers/security.py:117 +msgid "Unit: second, reset password and send SMS code expiration time" +msgstr "单位: 秒, 重置密码和发送短信验证码过期时间" + #: settings/serializers/security.py:121 msgid "Enable Login dynamic code" msgstr "启用登录附加码" @@ -5282,15 +5284,15 @@ msgstr "测试失败: 账号无效" msgid "Have online sessions" msgstr "有在线会话" -#: terminal/api/session/session.py:217 +#: terminal/api/session/session.py:236 msgid "Session does not exist: {}" msgstr "会话不存在: {}" -#: terminal/api/session/session.py:220 +#: terminal/api/session/session.py:239 msgid "Session is finished or the protocol not supported" msgstr "会话已经完成或协议不支持" -#: terminal/api/session/session.py:233 +#: terminal/api/session/session.py:252 msgid "User does not have permission" msgstr "用户没有权限" @@ -5730,10 +5732,6 @@ msgstr "资产 ID" msgid "Login from display" msgstr "登录来源名称" -#: terminal/serializers/session.py:52 -msgid "Terminal ID" -msgstr "终端 ID" - #: terminal/serializers/session.py:55 msgid "Terminal display" msgstr "终端显示" @@ -5760,7 +5758,7 @@ msgstr "Access key ID(AK)" msgid "Access key secret" msgstr "Access key secret(SK)" -#: terminal/serializers/storage.py:65 xpack/plugins/cloud/models.py:217 +#: terminal/serializers/storage.py:65 xpack/plugins/cloud/models.py:209 msgid "Region" msgstr "地域" @@ -6192,7 +6190,7 @@ msgstr "无效的审批动作" msgid "This user is not authorized to approve this ticket" msgstr "此用户无权审批此工单" -#: users/api/user.py:178 +#: users/api/user.py:179 msgid "Could not reset self otp, use profile reset instead" msgstr "不能在该页面重置 MFA 多因子认证, 请去个人信息页面重置" @@ -6885,55 +6883,47 @@ msgstr "地域" msgid "Hostname strategy" msgstr "主机名策略" -#: xpack/plugins/cloud/models.py:100 -msgid "Unix admin user" -msgstr "Unix 管理员" - -#: xpack/plugins/cloud/models.py:104 -msgid "Windows admin user" -msgstr "Windows 管理员" - -#: xpack/plugins/cloud/models.py:110 xpack/plugins/cloud/serializers/task.py:41 +#: xpack/plugins/cloud/models.py:102 xpack/plugins/cloud/serializers/task.py:40 msgid "IP network segment group" msgstr "IP网段组" -#: xpack/plugins/cloud/models.py:113 xpack/plugins/cloud/serializers/task.py:46 +#: xpack/plugins/cloud/models.py:105 xpack/plugins/cloud/serializers/task.py:45 msgid "Sync IP type" msgstr "同步IP类型" -#: xpack/plugins/cloud/models.py:116 xpack/plugins/cloud/serializers/task.py:64 +#: xpack/plugins/cloud/models.py:108 xpack/plugins/cloud/serializers/task.py:62 msgid "Always update" msgstr "总是更新" -#: xpack/plugins/cloud/models.py:122 +#: xpack/plugins/cloud/models.py:114 msgid "Date last sync" msgstr "最后同步日期" -#: xpack/plugins/cloud/models.py:127 xpack/plugins/cloud/models.py:168 +#: xpack/plugins/cloud/models.py:119 xpack/plugins/cloud/models.py:160 msgid "Sync instance task" msgstr "同步实例任务" -#: xpack/plugins/cloud/models.py:179 xpack/plugins/cloud/models.py:227 +#: xpack/plugins/cloud/models.py:171 xpack/plugins/cloud/models.py:219 msgid "Date sync" msgstr "同步日期" -#: xpack/plugins/cloud/models.py:183 +#: xpack/plugins/cloud/models.py:175 msgid "Sync instance task execution" msgstr "同步实例任务执行" -#: xpack/plugins/cloud/models.py:207 +#: xpack/plugins/cloud/models.py:199 msgid "Sync task" msgstr "同步任务" -#: xpack/plugins/cloud/models.py:211 +#: xpack/plugins/cloud/models.py:203 msgid "Sync instance task history" msgstr "同步实例任务历史" -#: xpack/plugins/cloud/models.py:214 +#: xpack/plugins/cloud/models.py:206 msgid "Instance" msgstr "实例" -#: xpack/plugins/cloud/models.py:231 +#: xpack/plugins/cloud/models.py:223 msgid "Sync instance detail" msgstr "同步实例详情" @@ -7147,52 +7137,52 @@ msgstr "租户 ID" msgid "Subscription ID" msgstr "订阅 ID" -#: xpack/plugins/cloud/serializers/account_attrs.py:95 -#: xpack/plugins/cloud/serializers/account_attrs.py:100 -#: xpack/plugins/cloud/serializers/account_attrs.py:116 -#: xpack/plugins/cloud/serializers/account_attrs.py:141 +#: xpack/plugins/cloud/serializers/account_attrs.py:98 +#: xpack/plugins/cloud/serializers/account_attrs.py:103 +#: xpack/plugins/cloud/serializers/account_attrs.py:119 +#: xpack/plugins/cloud/serializers/account_attrs.py:144 msgid "API Endpoint" msgstr "API 端点" -#: xpack/plugins/cloud/serializers/account_attrs.py:106 +#: xpack/plugins/cloud/serializers/account_attrs.py:109 msgid "Auth url" msgstr "认证地址" -#: xpack/plugins/cloud/serializers/account_attrs.py:107 +#: xpack/plugins/cloud/serializers/account_attrs.py:110 msgid "eg: http://openstack.example.com:5000/v3" msgstr "如: http://openstack.example.com:5000/v3" -#: xpack/plugins/cloud/serializers/account_attrs.py:110 +#: xpack/plugins/cloud/serializers/account_attrs.py:113 msgid "User domain" msgstr "用户域" -#: xpack/plugins/cloud/serializers/account_attrs.py:117 +#: xpack/plugins/cloud/serializers/account_attrs.py:120 msgid "Cert File" msgstr "证书文件" -#: xpack/plugins/cloud/serializers/account_attrs.py:118 +#: xpack/plugins/cloud/serializers/account_attrs.py:121 msgid "Key File" msgstr "密钥文件" -#: xpack/plugins/cloud/serializers/account_attrs.py:134 +#: xpack/plugins/cloud/serializers/account_attrs.py:137 msgid "Service account key" msgstr "服务账号密钥" -#: xpack/plugins/cloud/serializers/account_attrs.py:135 +#: xpack/plugins/cloud/serializers/account_attrs.py:138 msgid "The file is in JSON format" msgstr "JSON 格式的文件" -#: xpack/plugins/cloud/serializers/account_attrs.py:148 +#: xpack/plugins/cloud/serializers/account_attrs.py:151 msgid "IP address invalid `{}`, {}" msgstr "IP 地址无效: `{}`, {}" -#: xpack/plugins/cloud/serializers/account_attrs.py:154 +#: xpack/plugins/cloud/serializers/account_attrs.py:157 msgid "" "Format for comma-delimited string,Such as: 192.168.1.0/24, " "10.0.0.0-10.0.0.255" msgstr "格式为逗号分隔的字符串,如:192.168.1.0/24,10.0.0.0-10.0.0.255" -#: xpack/plugins/cloud/serializers/account_attrs.py:158 +#: xpack/plugins/cloud/serializers/account_attrs.py:161 msgid "" "The port is used to detect the validity of the IP address. When the " "synchronization task is executed, only the valid IP address will be " @@ -7201,19 +7191,19 @@ msgstr "" "端口用来检测 IP 地址的有效性,在同步任务执行时,只会同步有效的 IP 地址。
" "如果端口为 0,则表示所有 IP 地址均有效。" -#: xpack/plugins/cloud/serializers/account_attrs.py:166 +#: xpack/plugins/cloud/serializers/account_attrs.py:169 msgid "Hostname prefix" msgstr "主机名前缀" -#: xpack/plugins/cloud/serializers/account_attrs.py:169 +#: xpack/plugins/cloud/serializers/account_attrs.py:172 msgid "IP segment" msgstr "IP 网段" -#: xpack/plugins/cloud/serializers/account_attrs.py:173 +#: xpack/plugins/cloud/serializers/account_attrs.py:176 msgid "Test port" msgstr "测试端口" -#: xpack/plugins/cloud/serializers/account_attrs.py:176 +#: xpack/plugins/cloud/serializers/account_attrs.py:179 msgid "Test timeout" msgstr "测试超时时间" @@ -7237,10 +7227,6 @@ msgstr "执行次数" msgid "Instance count" msgstr "实例个数" -#: xpack/plugins/cloud/serializers/task.py:63 -msgid "Linux admin user" -msgstr "Linux 管理员" - #: xpack/plugins/cloud/utils.py:69 msgid "Account unavailable" msgstr "账号无效" @@ -7309,6 +7295,21 @@ msgstr "旗舰版" msgid "Community edition" msgstr "社区版" +#~ msgid "AdHoc" +#~ msgstr "任务各版本" + +#~ msgid "Terminal ID" +#~ msgstr "终端 ID" + +#~ msgid "Unix admin user" +#~ msgstr "Unix 管理员" + +#~ msgid "Windows admin user" +#~ msgstr "Windows 管理员" + +#~ msgid "Linux admin user" +#~ msgstr "Linux 管理员" + #~ msgid "{} used account[{}], login method[{}] login the asset." #~ msgstr "{} 使用账户[{}], 登录方式[{}]登录了这个资产." diff --git a/apps/settings/serializers/security.py b/apps/settings/serializers/security.py index f18b6f2a5..8f3511936 100644 --- a/apps/settings/serializers/security.py +++ b/apps/settings/serializers/security.py @@ -114,7 +114,7 @@ class SecurityAuthSerializer(serializers.Serializer): VERIFY_CODE_TTL = serializers.IntegerField( min_value=5, max_value=60 * 60 * 10, label=_("Verify code TTL"), - help_text=_("Unit: second") + help_text=_("Unit: second, reset password and send SMS code expiration time") ) SECURITY_LOGIN_CHALLENGE_ENABLED = serializers.BooleanField( required=False, default=False, From f4888304bc442f3932781f8be681bbccce25e841 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 15 Feb 2023 18:16:56 +0800 Subject: [PATCH 08/10] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20koko=20ssh=20?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E7=9A=84=E8=BF=9E=E6=8E=A5=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/connect_methods.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/terminal/connect_methods.py b/apps/terminal/connect_methods.py index c2d69322c..5238715da 100644 --- a/apps/terminal/connect_methods.py +++ b/apps/terminal/connect_methods.py @@ -214,6 +214,12 @@ class ConnectMethodUtil: @classmethod def get_filtered_protocols_connect_methods(cls, os): methods = dict(cls.get_protocols_connect_methods(os)) + methods = cls._filter_disable_components_connect_methods(methods) + methods = cls._filter_disable_protocols_connect_methods(methods) + return methods + + @classmethod + def _filter_disable_components_connect_methods(cls, methods): component_setting = { 'razor': 'TERMINAL_RAZOR_ENABLED', 'magnus': 'TERMINAL_MAGNUS_ENABLED', @@ -227,6 +233,15 @@ class ConnectMethodUtil: methods[protocol] = filtered_methods return methods + @classmethod + def _filter_disable_protocols_connect_methods(cls, methods): + # 过滤一些特殊的协议方式 + if not getattr(settings, 'TERMINAL_KOKO_SSH_ENABLED'): + protocol = Protocol.ssh + methods[protocol] = [m for m in methods[protocol] if m['type'] != 'native'] + + return methods + @classmethod def get_protocols_connect_methods(cls, os): if cls._all_methods is not None: From cf2089d8265ec97c5df70c7d7d32f48b3636c867 Mon Sep 17 00:00:00 2001 From: Bai Date: Wed, 15 Feb 2023 20:08:02 +0800 Subject: [PATCH 09/10] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E6=95=B0=E6=8D=AE=E5=BA=93=E5=BA=94=E7=94=A8=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E7=BC=BA=E5=B0=91=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0100_auto_20220711_1413.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/assets/migrations/0100_auto_20220711_1413.py b/apps/assets/migrations/0100_auto_20220711_1413.py index 2412c6df0..bba1dad43 100644 --- a/apps/assets/migrations/0100_auto_20220711_1413.py +++ b/apps/assets/migrations/0100_auto_20220711_1413.py @@ -81,7 +81,7 @@ def migrate_db_accounts(apps, schema_editor): perms = app_perm_model.objects.filter(category__in=['db', 'cloud']) same_attrs = [ - 'id', 'username', 'comment', 'date_created', 'date_updated', + 'username', 'comment', 'date_created', 'date_updated', 'created_by', 'org_id', ] auth_attrs = ['password', 'private_key', 'token'] @@ -96,6 +96,7 @@ def migrate_db_accounts(apps, schema_editor): index += 1 start = time.time() + apps = perm.applications.all() system_users = perm.system_users.all() accounts = [] for s in system_users: @@ -125,13 +126,14 @@ def migrate_db_accounts(apps, schema_editor): auth_infos.append((username, 'password', '')) for name, secret_type, secret in auth_infos: - account = account_model(**values, name=name, secret=secret, secret_type=secret_type) - accounts.append(account) - - apps = perm.applications.all() - for app in apps: - for account in accounts: - setattr(account, 'asset_id', str(app.id)) + values['name'] = name + values['secret_type'] = secret_type + values['secret'] = secret + + for app in apps: + values['asset_id'] = str(app.id) + account = account_model(**values) + accounts.append(account) account_model.objects.bulk_create(accounts, ignore_conflicts=True) From e66168dfa44ffab27853b64fda07368f32d8fab5 Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Wed, 15 Feb 2023 20:16:01 +0800 Subject: [PATCH 10/10] =?UTF-8?q?perf:=20account=20secret=20=E5=8A=A0?= =?UTF-8?q?=E5=AF=86=20(#9570)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: feng <1304903146@qq.com> --- apps/accounts/api/account/account.py | 4 ++-- apps/accounts/serializers/account/base.py | 18 ++++++++---------- apps/assets/serializers/asset/common.py | 11 +++++++++-- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/apps/accounts/api/account/account.py b/apps/accounts/api/account/account.py index 695924122..ee306e250 100644 --- a/apps/accounts/api/account/account.py +++ b/apps/accounts/api/account/account.py @@ -3,11 +3,11 @@ from rest_framework.decorators import action from rest_framework.generics import CreateAPIView, ListAPIView from rest_framework.response import Response -from assets.models import Asset from accounts import serializers -from accounts.models import Account from accounts.filters import AccountFilterSet +from accounts.models import Account from accounts.tasks import verify_accounts_connectivity +from assets.models import Asset from authentication.const import ConfirmType from common.permissions import UserConfirmation from common.views.mixins import RecordViewLogMixin diff --git a/apps/accounts/serializers/account/base.py b/apps/accounts/serializers/account/base.py index e0b0215ff..47eeb457a 100644 --- a/apps/accounts/serializers/account/base.py +++ b/apps/accounts/serializers/account/base.py @@ -24,27 +24,25 @@ class AuthValidateMixin(serializers.Serializer): write_only=True, label=_('Key password') ) - @property - def initial_secret_type(self): - secret_type = self.initial_data.get('secret_type') - return secret_type - - def validate_secret(self, secret): + @staticmethod + def handle_secret(secret, secret_type, passphrase=None): if not secret: return '' - secret_type = self.initial_secret_type if secret_type == SecretType.PASSWORD: validate_password_for_ansible(secret) return secret elif secret_type == SecretType.SSH_KEY: - passphrase = self.initial_data.get('passphrase') passphrase = passphrase if passphrase else None return validate_ssh_key(secret, passphrase) else: return secret - @staticmethod - def clean_auth_fields(validated_data): + def clean_auth_fields(self, validated_data): + secret_type = validated_data['secret_type'] + passphrase = validated_data.get('passphrase') + secret = validated_data.pop('secret', None) + self.handle_secret(secret, secret_type, passphrase) + validated_data['secret'] = secret for field in ('secret',): value = validated_data.get(field) if value is None: diff --git a/apps/assets/serializers/asset/common.py b/apps/assets/serializers/asset/common.py index 9b6eb7f85..0d1bbcb87 100644 --- a/apps/assets/serializers/asset/common.py +++ b/apps/assets/serializers/asset/common.py @@ -8,9 +8,10 @@ from rest_framework import serializers from accounts.models import Account from accounts.serializers import AccountSerializerCreateValidateMixin +from accounts.serializers import AuthValidateMixin from common.serializers import WritableNestedModelSerializer, SecretReadableMixin, CommonModelSerializer from common.serializers.fields import LabeledChoiceField -from common.utils import lazyproperty +from common.utils import lazyproperty, decrypt_password from orgs.mixins.serializers import BulkOrgResourceModelSerializer from ...const import Category, AllTypes from ...models import Asset, Node, Platform, Label, Protocol @@ -51,7 +52,9 @@ class AssetPlatformSerializer(serializers.ModelSerializer): class AssetAccountSerializer( - AccountSerializerCreateValidateMixin, CommonModelSerializer + AuthValidateMixin, + AccountSerializerCreateValidateMixin, + CommonModelSerializer ): add_org_fields = False push_now = serializers.BooleanField( @@ -256,6 +259,8 @@ class AssetSerializer(BulkOrgResourceModelSerializer, WritableNestedModelSeriali def accounts_create(accounts_data, asset): for data in accounts_data: data['asset'] = asset + secret = data.get('secret') + data['secret'] = decrypt_password(secret) if secret else secret AssetAccountSerializer().create(data) @atomic @@ -269,6 +274,8 @@ class AssetSerializer(BulkOrgResourceModelSerializer, WritableNestedModelSeriali @atomic def update(self, instance, validated_data): + if not validated_data.get('accounts'): + validated_data.pop('accounts', None) nodes_display = validated_data.pop('nodes_display', '') instance = super().update(instance, validated_data) self.perform_nodes_display_create(instance, nodes_display)