Merge branch 'dev' of http://github.com/jumpserver/jumpserver into pr@dev@perf_navicat

pull/9573/head
jiangweidong 2 years ago
commit 897c5ca24f

@ -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

@ -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

@ -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

@ -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:

@ -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:

@ -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)

@ -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

@ -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)

@ -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):

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:01857f512b7280cc7db6be734dc3aa266f6384b222addca127eabbe61de47bb2
size 135229
oid sha256:8c78d1db90dbda0b4ab307a4107894b742690cae5f532de12477b9cb10cda372
size 135124

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 アドレスのみが同期されます。 <br>ポートが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 ""
#~ "{} トムはアカウント[{}]、ログイン方法[{}]を使ってこの資産を登録しました"

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:037f861dc9c6f7ea80ce09276e0eb417b60292fac4d7dcca02f661a53688e6e9
size 111627
oid sha256:e4ca4ccc9f6714134fcad6bf9bd0b191f4fed409902e0d610ddc68ca1a6f8da8
size 111543

@ -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 <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\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
@ -461,7 +462,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"
@ -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 地址。 <br>"
"如果端口为 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 "{} 使用账户[{}], 登录方式[{}]登录了这个资产."

@ -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 (

@ -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,

@ -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()

@ -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

@ -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,
@ -211,6 +211,37 @@ 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))
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',
}
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 _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:
@ -244,9 +275,11 @@ class ConnectMethodUtil:
listen = [protocol]
else:
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,

Loading…
Cancel
Save