From 9babe977d8913a1e76fa53879affcef13cfc314b Mon Sep 17 00:00:00 2001 From: wangruidong <940853815@qq.com> Date: Mon, 13 Nov 2023 14:34:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9sftp=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E5=A4=87=E4=BB=BD=E6=96=87=E4=BB=B6=E5=90=8D=E5=8F=8A=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=97=A5=E5=BF=97=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../automations/backup_account/handlers.py | 31 +- .../automations/change_secret/manager.py | 6 +- .../migrations/0024_accesskey_ip_group.py | 3 +- apps/authentication/models/access_key.py | 4 +- apps/common/utils/timezone.py | 4 + apps/locale/ja/LC_MESSAGES/django.mo | 4 +- apps/locale/ja/LC_MESSAGES/django.po | 316 ++++++++++-------- apps/locale/zh/LC_MESSAGES/django.mo | 4 +- apps/locale/zh/LC_MESSAGES/django.po | 316 ++++++++++-------- apps/terminal/api/component/storage.py | 2 +- 10 files changed, 386 insertions(+), 304 deletions(-) diff --git a/apps/accounts/automations/backup_account/handlers.py b/apps/accounts/automations/backup_account/handlers.py index f4aa2c27a..df801cda0 100644 --- a/apps/accounts/automations/backup_account/handlers.py +++ b/apps/accounts/automations/backup_account/handlers.py @@ -12,13 +12,17 @@ from accounts.serializers import AccountSecretSerializer from accounts.models.automations.backup_account import AccountBackupAutomation from assets.const import AllTypes from common.utils.file import encrypt_and_compress_zip_file, zip_files -from common.utils.timezone import local_now_display +from common.utils.timezone import local_now_filename, local_now_display from terminal.models.component.storage import ReplayStorage from users.models import User PATH = os.path.join(os.path.dirname(settings.BASE_DIR), 'tmp') +class RecipientsNotFound(Exception): + pass + + class BaseAccountHandler: @classmethod def unpack_data(cls, serializer_data, data=None): @@ -70,7 +74,7 @@ class AssetAccountHandler(BaseAccountHandler): @staticmethod def get_filename(plan_name): filename = os.path.join( - PATH, f'{plan_name}-{local_now_display()}-{time.time()}.xlsx' + PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.xlsx' ) return filename @@ -146,7 +150,7 @@ class AccountBackupHandler: wb.save(filename) files.append(filename) timedelta = round((time.time() - time_start), 2) - print('步骤完成: 用时 {}s'.format(timedelta)) + print('创建备份文件完成: 用时 {}s'.format(timedelta)) return files def send_backup_mail(self, files, recipients): @@ -155,7 +159,7 @@ class AccountBackupHandler: recipients = User.objects.filter(id__in=list(recipients)) print( '\n' - '\033[32m>>> 发送备份邮件\033[0m' + '\033[32m>>> 开始发送备份邮件\033[0m' '' ) plan_name = self.plan_name @@ -164,7 +168,7 @@ class AccountBackupHandler: attachment_list = [] else: password = user.secret_key.encode('utf8') - attachment = os.path.join(PATH, f'{plan_name}-{local_now_display()}-{time.time()}.zip') + attachment = os.path.join(PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.zip') encrypt_and_compress_zip_file(attachment, password, files) attachment_list = [attachment, ] AccountBackupExecutionTaskMsg(plan_name, user).publish(attachment_list) @@ -178,13 +182,14 @@ class AccountBackupHandler: recipients = ReplayStorage.objects.filter(id__in=list(recipients)) print( '\n' - '\033[31m>>> 发送备份文件到sftp服务器\033[0m' + '\033[32m>>> 开始发送备份文件到sftp服务器\033[0m' '' ) plan_name = self.plan_name for rec in recipients: - attachment = os.path.join(PATH, f'{plan_name}-{local_now_display()}-{time.time()}.zip') + attachment = os.path.join(PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.zip') if password: + print('\033[32m>>> 使用加密密码对文件进行加密中\033[0m') password = password.encode('utf8') encrypt_and_compress_zip_file(attachment, password, files) else: @@ -199,12 +204,12 @@ class AccountBackupHandler: self.execution.reason = reason[:1024] self.execution.is_success = is_success self.execution.save() - print('已完成对任务状态的更新') + print('\n已完成对任务状态的更新\n') @staticmethod def step_finished(is_success): if is_success: - print('任务执行完成') + print('任务执行成功') else: print('任务执行失败') @@ -241,8 +246,9 @@ class AccountBackupHandler: '\033[31m>>> 该备份任务未分配sftp服务器\033[0m' '' ) - return + raise RecipientsNotFound('Not Found Recipients') if obj_recipients_part_one and obj_recipients_part_two: + print('\033[32m>>> 账号的密钥将被拆分成前后两部分发送\033[0m') files = self.create_excel(section='front') self.send_backup_obj_storage(files, obj_recipients_part_one, zip_encrypt_password) @@ -262,8 +268,9 @@ class AccountBackupHandler: '\033[31m>>> 该备份任务未分配收件人\033[0m' '' ) - return + raise RecipientsNotFound('Not Found Recipients') if recipients_part_one and recipients_part_two: + print('\033[32m>>> 账号的密钥将被拆分成前后两部分发送\033[0m') files = self.create_excel(section='front') self.send_backup_mail(files, recipients_part_one) @@ -286,4 +293,4 @@ class AccountBackupHandler: finally: print('\n任务结束: {}'.format(local_now_display())) timedelta = round((time.time() - time_start), 2) - print('用时: {}'.format(timedelta)) + print('用时: {}s'.format(timedelta)) diff --git a/apps/accounts/automations/change_secret/manager.py b/apps/accounts/automations/change_secret/manager.py index b25852189..c9939f647 100644 --- a/apps/accounts/automations/change_secret/manager.py +++ b/apps/accounts/automations/change_secret/manager.py @@ -13,7 +13,7 @@ from accounts.serializers import ChangeSecretRecordBackUpSerializer from assets.const import HostTypes from common.utils import get_logger from common.utils.file import encrypt_and_compress_zip_file -from common.utils.timezone import local_now_display +from common.utils.timezone import local_now_filename from users.models import User from ..base.manager import AccountBasePlaybookManager from ...utils import SecretGenerator @@ -199,7 +199,7 @@ class ChangeSecretManager(AccountBasePlaybookManager): name = self.execution.snapshot['name'] path = os.path.join(os.path.dirname(settings.BASE_DIR), 'tmp') - filename = os.path.join(path, f'{name}-{local_now_display()}-{time.time()}.xlsx') + filename = os.path.join(path, f'{name}-{local_now_filename()}-{time.time()}.xlsx') if not self.create_file(recorders, filename): return @@ -207,7 +207,7 @@ class ChangeSecretManager(AccountBasePlaybookManager): attachments = [] if user.secret_key: password = user.secret_key.encode('utf8') - attachment = os.path.join(path, f'{name}-{local_now_display()}-{time.time()}.zip') + attachment = os.path.join(path, f'{name}-{local_now_filename()}-{time.time()}.zip') encrypt_and_compress_zip_file(attachment, password, [filename]) attachments = [attachment] ChangeSecretExecutionTaskMsg(name, user).publish(attachments) diff --git a/apps/authentication/migrations/0024_accesskey_ip_group.py b/apps/authentication/migrations/0024_accesskey_ip_group.py index ba26ff6af..e34d81751 100644 --- a/apps/authentication/migrations/0024_accesskey_ip_group.py +++ b/apps/authentication/migrations/0024_accesskey_ip_group.py @@ -5,7 +5,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ ('authentication', '0023_auto_20231010_1101'), ] @@ -14,6 +13,6 @@ class Migration(migrations.Migration): migrations.AddField( model_name='accesskey', name='ip_group', - field=models.JSONField(default=authentication.models.access_key.defatult_ip_group, verbose_name='IP group'), + field=models.JSONField(default=authentication.models.access_key.default_ip_group, verbose_name='IP group'), ), ] diff --git a/apps/authentication/models/access_key.py b/apps/authentication/models/access_key.py index 51e5b8849..aa2748769 100644 --- a/apps/authentication/models/access_key.py +++ b/apps/authentication/models/access_key.py @@ -12,14 +12,14 @@ def default_secret(): return random_string(36) -def defatult_ip_group(): +def default_ip_group(): return ["*"] class AccessKey(models.Model): id = models.UUIDField(verbose_name='AccessKeyID', primary_key=True, default=uuid.uuid4, editable=False) secret = models.CharField(verbose_name='AccessKeySecret', default=default_secret, max_length=36) - ip_group = models.JSONField(default=defatult_ip_group, verbose_name=_('IP group')) + ip_group = models.JSONField(default=default_ip_group, verbose_name=_('IP group')) user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='User', on_delete=common.db.models.CASCADE_SIGNAL_SKIP, related_name='access_keys') is_active = models.BooleanField(default=True, verbose_name=_('Active')) diff --git a/apps/common/utils/timezone.py b/apps/common/utils/timezone.py index a74ebe73a..f569bf113 100644 --- a/apps/common/utils/timezone.py +++ b/apps/common/utils/timezone.py @@ -20,6 +20,10 @@ def local_now_display(fmt='%Y-%m-%d %H:%M:%S'): return local_now().strftime(fmt) +def local_now_filename(): + return local_now().strftime('%Y%m%d-%H%M%S') + + def local_now_date_display(fmt='%Y-%m-%d'): return local_now().strftime(fmt) diff --git a/apps/locale/ja/LC_MESSAGES/django.mo b/apps/locale/ja/LC_MESSAGES/django.mo index fa4a3dc61..344f28ee6 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:5a5207051b4a959f750ebd48c770a552c460f864547aea8d6bb62d8920e24e32 -size 164428 +oid sha256:eb8cb8f322ccd54d1caea9727d92a82b061757eca5551b140c2035a12fd05dc6 +size 164068 diff --git a/apps/locale/ja/LC_MESSAGES/django.po b/apps/locale/ja/LC_MESSAGES/django.po index cd412a9b8..9b1158867 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-11-03 18:29+0800\n" +"POT-Creation-Date: 2023-11-13 14:19+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,7 +24,7 @@ msgstr "パラメータ 'action' は [{}] でなければなりません。" #: accounts/const/account.py:6 #: accounts/serializers/automations/change_secret.py:32 -#: assets/models/_user.py:23 audits/signal_handlers/login_log.py:34 +#: assets/models/_user.py:24 audits/signal_handlers/login_log.py:34 #: authentication/confirm/password.py:9 authentication/confirm/password.py:24 #: authentication/confirm/password.py:26 authentication/forms.py:32 #: authentication/templates/authentication/login.html:330 @@ -47,7 +47,7 @@ msgstr "SSH キー" msgid "Access key" msgstr "アクセスキー" -#: accounts/const/account.py:9 assets/models/_user.py:47 +#: accounts/const/account.py:9 assets/models/_user.py:48 #: authentication/backends/passkey/models.py:16 #: authentication/models/sso_token.py:14 settings/serializers/feature.py:50 msgid "Token" @@ -243,7 +243,7 @@ msgstr "ユーザー %s がパスワードを閲覧/導き出しました" #: acls/serializers/base.py:123 assets/models/asset/common.py:93 #: assets/models/asset/common.py:334 assets/models/cmd_filter.py:36 #: assets/serializers/domain.py:19 assets/serializers/label.py:27 -#: audits/models.py:57 authentication/models/connection_token.py:36 +#: audits/models.py:58 authentication/models/connection_token.py:36 #: perms/models/asset_permission.py:68 perms/serializers/permission.py:34 #: terminal/backends/command/models.py:17 terminal/models/session/session.py:31 #: terminal/notifications.py:155 terminal/serializers/command.py:17 @@ -282,7 +282,7 @@ msgstr "ソース ID" #: accounts/serializers/automations/change_secret.py:127 #: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7 #: assets/serializers/asset/common.py:125 assets/serializers/gateway.py:28 -#: audits/models.py:58 authentication/api/connection_token.py:408 +#: audits/models.py:59 authentication/api/connection_token.py:403 #: ops/models/base.py:18 perms/models/asset_permission.py:74 #: perms/serializers/permission.py:39 terminal/backends/command/models.py:18 #: terminal/models/session/session.py:33 @@ -312,43 +312,43 @@ msgstr "アカウントを確認できます" msgid "Can push account" msgstr "アカウントをプッシュできます" -#: accounts/models/automations/backup_account.py:28 +#: accounts/models/automations/backup_account.py:27 msgid "Backup Type" msgstr "バックアップの種類" +#: accounts/models/automations/backup_account.py:28 #: accounts/models/automations/backup_account.py:29 -#: accounts/models/automations/backup_account.py:30 msgid "Is Password Divided" msgstr "キーが 2 つの部分に分割されているかどうか" -#: accounts/models/automations/backup_account.py:33 +#: accounts/models/automations/backup_account.py:32 msgid "Recipient part one" msgstr "受信者 1" -#: accounts/models/automations/backup_account.py:37 +#: accounts/models/automations/backup_account.py:36 msgid "Recipient part two" msgstr "受信者 2" -#: accounts/models/automations/backup_account.py:41 +#: accounts/models/automations/backup_account.py:40 msgid "Object Storage Recipient part one" msgstr "受信サーバー 1" -#: accounts/models/automations/backup_account.py:45 +#: accounts/models/automations/backup_account.py:44 msgid "Object Storage Recipient part two" msgstr "受信サーバー 2" -#: accounts/models/automations/backup_account.py:48 +#: accounts/models/automations/backup_account.py:47 #: accounts/serializers/account/backup.py:20 msgid "Zip Encrypt Password" msgstr "新しいファイルの暗号化パスワード" -#: accounts/models/automations/backup_account.py:56 -#: accounts/models/automations/backup_account.py:139 +#: accounts/models/automations/backup_account.py:55 +#: accounts/models/automations/backup_account.py:138 msgid "Account backup plan" msgstr "アカウントバックアップ計画" -#: accounts/models/automations/backup_account.py:120 -#: assets/models/automations/base.py:115 audits/models.py:64 +#: accounts/models/automations/backup_account.py:119 +#: assets/models/automations/base.py:115 audits/models.py:65 #: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:228 #: ops/templates/ops/celery_task_log.html:75 #: perms/models/asset_permission.py:77 terminal/models/applet/host.py:141 @@ -358,17 +358,17 @@ msgstr "アカウントバックアップ計画" msgid "Date start" msgstr "開始日" -#: accounts/models/automations/backup_account.py:123 +#: accounts/models/automations/backup_account.py:122 #: authentication/templates/authentication/_msg_oauth_bind.html:11 #: notifications/notifications.py:186 msgid "Time" msgstr "時間" -#: accounts/models/automations/backup_account.py:127 +#: accounts/models/automations/backup_account.py:126 msgid "Account backup snapshot" msgstr "アカウントのバックアップスナップショット" -#: accounts/models/automations/backup_account.py:131 +#: accounts/models/automations/backup_account.py:130 #: accounts/serializers/account/backup.py:49 #: accounts/serializers/automations/base.py:55 #: assets/models/automations/base.py:122 @@ -376,19 +376,19 @@ msgstr "アカウントのバックアップスナップショット" msgid "Trigger mode" msgstr "トリガーモード" -#: accounts/models/automations/backup_account.py:134 audits/models.py:202 +#: accounts/models/automations/backup_account.py:133 audits/models.py:203 #: terminal/models/session/sharing.py:125 xpack/plugins/cloud/models.py:205 msgid "Reason" msgstr "理由" -#: accounts/models/automations/backup_account.py:136 +#: accounts/models/automations/backup_account.py:135 #: accounts/serializers/automations/change_secret.py:105 #: accounts/serializers/automations/change_secret.py:128 #: ops/serializers/job.py:56 terminal/serializers/session.py:49 msgid "Is success" msgstr "成功は" -#: accounts/models/automations/backup_account.py:144 +#: accounts/models/automations/backup_account.py:143 msgid "Account backup execution" msgstr "アカウントバックアップの実行" @@ -433,6 +433,7 @@ msgid "SSH key change strategy" msgstr "SSHキープッシュ方式" #: accounts/models/automations/change_secret.py:15 +#: accounts/models/automations/gather_account.py:58 #: accounts/serializers/account/backup.py:41 #: accounts/serializers/automations/change_secret.py:56 msgid "Recipient" @@ -462,7 +463,7 @@ msgid "Date finished" msgstr "終了日" #: accounts/models/automations/change_secret.py:43 -#: assets/models/automations/base.py:113 audits/models.py:207 +#: assets/models/automations/base.py:113 audits/models.py:208 #: audits/serializers.py:51 ops/models/base.py:49 ops/models/job.py:220 #: terminal/models/applet/applet.py:316 terminal/models/applet/host.py:140 #: terminal/models/component/status.py:30 terminal/serializers/applet.py:18 @@ -497,8 +498,8 @@ msgstr "最終ログイン日" #: accounts/models/automations/push_account.py:15 accounts/models/base.py:65 #: accounts/serializers/account/virtual.py:21 acls/serializers/base.py:19 #: acls/serializers/base.py:50 acls/templates/acls/asset_login_reminder.html:5 -#: acls/templates/acls/user_login_reminder.html:5 assets/models/_user.py:22 -#: audits/models.py:187 authentication/forms.py:25 authentication/forms.py:27 +#: acls/templates/acls/user_login_reminder.html:5 assets/models/_user.py:23 +#: audits/models.py:188 authentication/forms.py:25 authentication/forms.py:27 #: authentication/models/temp_token.py:9 #: authentication/templates/authentication/_msg_different_city.html:9 #: authentication/templates/authentication/_msg_oauth_bind.html:9 @@ -521,7 +522,7 @@ msgstr "自動収集アカウント" msgid "Is sync account" msgstr "アカウントを同期するかどうか" -#: accounts/models/automations/gather_account.py:71 +#: accounts/models/automations/gather_account.py:75 #: accounts/tasks/gather_accounts.py:29 msgid "Gather asset accounts" msgstr "アカウントのコレクション" @@ -532,8 +533,8 @@ msgstr "トリガー方式" #: accounts/models/automations/push_account.py:16 acls/models/base.py:41 #: acls/serializers/base.py:57 assets/models/cmd_filter.py:81 -#: audits/models.py:91 audits/serializers.py:84 -#: authentication/serializers/connect_token_secret.py:116 +#: audits/models.py:92 audits/serializers.py:84 +#: authentication/serializers/connect_token_secret.py:118 #: authentication/templates/authentication/_access_key_modal.html:34 msgid "Action" msgstr "アクション" @@ -577,14 +578,14 @@ msgstr "パスワードルール" #: accounts/models/base.py:64 accounts/serializers/account/virtual.py:20 #: acls/models/base.py:35 acls/models/base.py:96 acls/models/command_acl.py:21 #: acls/serializers/base.py:35 applications/models.py:9 -#: assets/models/_user.py:21 assets/models/asset/common.py:91 +#: assets/models/_user.py:22 assets/models/asset/common.py:91 #: assets/models/asset/common.py:149 assets/models/cmd_filter.py:21 #: assets/models/domain.py:18 assets/models/group.py:17 #: assets/models/label.py:18 assets/models/platform.py:15 #: assets/models/platform.py:88 assets/serializers/asset/common.py:146 #: assets/serializers/platform.py:111 assets/serializers/platform.py:228 #: authentication/backends/passkey/models.py:10 -#: authentication/serializers/connect_token_secret.py:110 ops/mixin.py:21 +#: authentication/serializers/connect_token_secret.py:112 ops/mixin.py:21 #: ops/models/adhoc.py:20 ops/models/celery.py:15 ops/models/celery.py:57 #: ops/models/job.py:126 ops/models/playbook.py:28 ops/serializers/job.py:20 #: orgs/models.py:82 perms/models/asset_permission.py:60 rbac/models/role.py:29 @@ -607,13 +608,13 @@ msgstr "特権アカウント" #: accounts/models/base.py:70 assets/models/asset/common.py:156 #: assets/models/automations/base.py:21 assets/models/cmd_filter.py:39 #: assets/models/label.py:22 -#: authentication/serializers/connect_token_secret.py:114 +#: authentication/serializers/connect_token_secret.py:116 #: terminal/models/applet/applet.py:40 #: terminal/models/component/endpoint.py:105 users/serializers/user.py:167 msgid "Is active" msgstr "アクティブです。" -#: accounts/models/template.py:17 assets/models/_user.py:54 +#: accounts/models/template.py:17 assets/models/_user.py:53 msgid "Auto push" msgstr "オートプッシュ" @@ -666,11 +667,11 @@ msgstr "" "ユーザー名とパスワードを使用せずにアセットに接続します。Webベースとカスタムタ" "イプのアセットのみをサポートします" -#: accounts/notifications.py:9 accounts/notifications.py:34 +#: accounts/notifications.py:11 accounts/notifications.py:36 msgid "Notification of account backup route task results" msgstr "アカウントバックアップルートタスクの結果の通知" -#: accounts/notifications.py:19 accounts/notifications.py:43 +#: accounts/notifications.py:21 accounts/notifications.py:45 msgid "" "{} - The account backup passage task has been completed. See the attachment " "for details" @@ -678,7 +679,7 @@ msgstr "" "{} -アカウントバックアップの通過タスクが完了しました。詳細は添付ファイルをご" "覧ください" -#: accounts/notifications.py:22 +#: accounts/notifications.py:24 msgid "" "{} - The account backup passage task has been completed: the encryption " "password has not been set - please go to personal information -> file " @@ -688,17 +689,17 @@ msgstr "" "されていません-個人情報にアクセスしてください-> ファイル暗号化パスワードを設" "定してください暗号化パスワード" -#: accounts/notifications.py:53 +#: accounts/notifications.py:55 msgid "Notification of implementation result of encryption change plan" msgstr "暗号化変更プランの実装結果の通知" -#: accounts/notifications.py:63 +#: accounts/notifications.py:65 msgid "" "{} - The encryption change task has been completed. See the attachment for " "details" msgstr "{} -暗号化変更タスクが完了しました。詳細は添付ファイルをご覧ください" -#: accounts/notifications.py:66 +#: accounts/notifications.py:68 msgid "" "{} - The encryption change task has been completed: the encryption password " "has not been set - please go to personal information -> file encryption " @@ -707,6 +708,12 @@ msgstr "" "{} -暗号化変更タスクが完了しました: 暗号化パスワードが設定されていません-個人" "情報にアクセスしてください-> ファイル暗号化パスワードを設定してください" +#: accounts/notifications.py:79 +#, fuzzy +#| msgid "Gather account automation" +msgid "Gather account change information" +msgstr "自動収集アカウント" + #: accounts/serializers/account/account.py:31 msgid "Push now" msgstr "今すぐプッシュ" @@ -727,12 +734,12 @@ msgstr "カテゴリ" #: accounts/serializers/account/account.py:191 #: accounts/serializers/automations/base.py:54 acls/models/command_acl.py:24 #: acls/serializers/command_acl.py:19 applications/models.py:14 -#: assets/models/_user.py:49 assets/models/automations/base.py:20 +#: assets/models/_user.py:50 assets/models/automations/base.py:20 #: assets/models/cmd_filter.py:74 assets/models/platform.py:90 #: assets/serializers/asset/common.py:122 assets/serializers/platform.py:113 #: assets/serializers/platform.py:132 audits/serializers.py:50 #: audits/serializers.py:170 -#: authentication/serializers/connect_token_secret.py:123 ops/models/job.py:137 +#: authentication/serializers/connect_token_secret.py:125 ops/models/job.py:137 #: perms/serializers/user_permission.py:26 terminal/models/applet/applet.py:39 #: terminal/models/component/storage.py:57 #: terminal/models/component/storage.py:146 terminal/serializers/applet.py:29 @@ -768,7 +775,7 @@ msgstr "編集済み" #: acls/templates/acls/asset_login_reminder.html:6 #: assets/models/automations/base.py:19 #: assets/serializers/automations/base.py:20 -#: authentication/api/connection_token.py:407 ops/models/base.py:17 +#: authentication/api/connection_token.py:402 ops/models/base.py:17 #: ops/models/job.py:139 ops/serializers/job.py:21 #: terminal/templates/terminal/_msg_command_execute_alert.html:16 msgid "Assets" @@ -788,15 +795,15 @@ msgid "Account has exist" msgstr "アカウントはすでに存在しています" #: accounts/serializers/account/account.py:438 -#: authentication/serializers/connect_token_secret.py:156 +#: authentication/serializers/connect_token_secret.py:158 #: authentication/templates/authentication/_access_key_modal.html:30 #: perms/models/perm_node.py:21 users/serializers/group.py:31 msgid "ID" msgstr "ID" #: accounts/serializers/account/account.py:448 acls/serializers/base.py:116 -#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:53 -#: audits/models.py:89 audits/models.py:171 audits/models.py:268 +#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:54 +#: audits/models.py:90 audits/models.py:172 audits/models.py:269 #: audits/serializers.py:171 authentication/models/connection_token.py:32 #: authentication/models/sso_token.py:16 #: notifications/models/notification.py:12 @@ -891,7 +898,7 @@ msgid "" "default parameters will be used" msgstr "关联平台,可以配置推送参数,如果不关联,则使用默认参数" -#: accounts/serializers/account/virtual.py:19 assets/models/_user.py:26 +#: accounts/serializers/account/virtual.py:19 assets/models/_user.py:27 #: assets/models/cmd_filter.py:40 assets/models/cmd_filter.py:88 #: assets/models/group.py:20 common/db/models.py:36 ops/models/adhoc.py:26 #: ops/models/job.py:145 ops/models/playbook.py:31 rbac/models/role.py:37 @@ -951,7 +958,7 @@ msgid "Automation task execution" msgstr "自動タスク実行履歴" #: accounts/serializers/automations/change_secret.py:149 audits/const.py:61 -#: audits/models.py:63 audits/signal_handlers/activity_log.py:33 +#: audits/models.py:64 audits/signal_handlers/activity_log.py:33 #: common/const/choices.py:18 ops/const.py:72 ops/serializers/celery.py:40 #: terminal/const.py:77 terminal/models/session/sharing.py:121 #: tickets/views/approve.py:117 @@ -1009,22 +1016,36 @@ msgstr "アセット アカウントの可用性を確認する" msgid "Verify accounts connectivity" msgstr "アカウント接続のテスト" +#: accounts/templates/accounts/asset_account_change_info.html:7 +#, fuzzy +#| msgid "Asset type" +msgid "Asset name" +msgstr "資産タイプ" + +#: accounts/templates/accounts/asset_account_change_info.html:8 +#, fuzzy +#| msgid "Add account: %s" +msgid "Added account" +msgstr "アカウントを追加: %s" + +#: accounts/templates/accounts/asset_account_change_info.html:9 +#, fuzzy +#| msgid "Delete account: %s" +msgid "Deleted account" +msgstr "アカウントを削除: %s" + #: accounts/utils.py:53 -msgid "Password can not contains `{{` " +#, fuzzy +#| msgid "Password can not contains `{{` " +msgid "Password can not contains `{{` or `}}`" msgstr "パスワードには '{{' を含まない" #: accounts/utils.py:55 -msgid "Password can not contains `{%` " +#, fuzzy +#| msgid "Password can not contains `{%` " +msgid "Password can not contains `{%` or `%}`" msgstr "パスワードには '{%' を含まない" -#: accounts/utils.py:58 -msgid "Password can not contains `'` " -msgstr "パスワードには `'` を含まない" - -#: accounts/utils.py:60 -msgid "Password can not contains `\"` " -msgstr "パスワードには `\"` を含まない" - #: accounts/utils.py:66 msgid "private key invalid or passphrase error" msgstr "秘密鍵が無効またはpassphraseエラー" @@ -1054,7 +1075,7 @@ msgstr "警告" msgid "Notifications" msgstr "通知" -#: acls/models/base.py:37 assets/models/_user.py:50 +#: acls/models/base.py:37 assets/models/_user.py:51 #: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:97 #: xpack/plugins/cloud/models.py:275 msgid "Priority" @@ -1067,7 +1088,7 @@ msgid "1-100, the lower the value will be match first" msgstr "1-100、低い値は最初に一致します" #: acls/models/base.py:42 assets/models/cmd_filter.py:86 -#: authentication/serializers/connect_token_secret.py:88 +#: authentication/serializers/connect_token_secret.py:90 msgid "Reviewers" msgstr "レビュー担当者" @@ -1118,7 +1139,7 @@ msgstr "家を無視する" #: acls/models/command_acl.py:33 acls/models/command_acl.py:97 #: acls/serializers/command_acl.py:29 -#: authentication/serializers/connect_token_secret.py:85 +#: authentication/serializers/connect_token_secret.py:87 #: terminal/templates/terminal/_msg_command_warning.html:14 msgid "Command group" msgstr "コマンドグループ" @@ -1247,15 +1268,15 @@ msgstr "" msgid "Thank you" msgstr "ありがとうございます。" -#: acls/templates/acls/user_login_reminder.html:7 audits/models.py:193 -#: audits/models.py:262 +#: acls/templates/acls/user_login_reminder.html:7 audits/models.py:194 +#: audits/models.py:263 #: authentication/templates/authentication/_msg_different_city.html:11 #: tickets/models/ticket/login_confirm.py:11 msgid "Login city" msgstr "ログイン都市" -#: acls/templates/acls/user_login_reminder.html:8 audits/models.py:196 -#: audits/models.py:263 audits/serializers.py:65 +#: acls/templates/acls/user_login_reminder.html:8 audits/models.py:197 +#: audits/models.py:264 audits/serializers.py:65 msgid "User agent" msgstr "ユーザーエージェント" @@ -1580,97 +1601,97 @@ msgstr "Webサイト" msgid "This function is not supported temporarily" msgstr "この機能は一時的にサポートされていません" -#: assets/models/_user.py:24 +#: assets/models/_user.py:25 msgid "SSH private key" msgstr "SSH秘密鍵" -#: assets/models/_user.py:25 +#: assets/models/_user.py:26 msgid "SSH public key" msgstr "SSHパブリックキー" -#: assets/models/_user.py:27 assets/models/automations/base.py:114 +#: assets/models/_user.py:28 assets/models/automations/base.py:114 #: assets/models/cmd_filter.py:41 assets/models/group.py:19 -#: audits/models.py:266 common/db/models.py:34 ops/models/base.py:54 +#: audits/models.py:267 common/db/models.py:34 ops/models/base.py:54 #: ops/models/job.py:227 users/models/user.py:1024 msgid "Date created" msgstr "作成された日付" -#: assets/models/_user.py:28 assets/models/cmd_filter.py:42 +#: assets/models/_user.py:29 assets/models/cmd_filter.py:42 #: common/db/models.py:35 users/models/user.py:846 msgid "Date updated" msgstr "更新日" -#: assets/models/_user.py:29 assets/models/cmd_filter.py:44 +#: assets/models/_user.py:30 assets/models/cmd_filter.py:44 #: assets/models/cmd_filter.py:91 assets/models/group.py:18 #: common/db/models.py:32 users/models/user.py:835 #: users/serializers/group.py:29 msgid "Created by" msgstr "によって作成された" -#: assets/models/_user.py:39 +#: assets/models/_user.py:40 msgid "Automatic managed" msgstr "自動管理" -#: assets/models/_user.py:40 +#: assets/models/_user.py:41 msgid "Manually input" msgstr "手動入力" -#: assets/models/_user.py:44 +#: assets/models/_user.py:45 msgid "Common user" msgstr "共通ユーザー" -#: assets/models/_user.py:45 assets/models/_user.py:98 +#: assets/models/_user.py:46 assets/models/_user.py:95 msgid "Admin user" msgstr "管理ユーザー" -#: assets/models/_user.py:48 +#: assets/models/_user.py:49 msgid "Username same with user" msgstr "ユーザーと同じユーザー名" -#: assets/models/_user.py:53 authentication/models/connection_token.py:41 -#: authentication/serializers/connect_token_secret.py:111 +#: assets/models/_user.py:52 authentication/models/connection_token.py:41 +#: authentication/serializers/connect_token_secret.py:113 #: terminal/models/applet/applet.py:42 terminal/serializers/session.py:19 #: terminal/serializers/session.py:45 terminal/serializers/storage.py:71 msgid "Protocol" msgstr "プロトコル" -#: assets/models/_user.py:55 +#: assets/models/_user.py:54 msgid "Sudo" msgstr "すど" -#: assets/models/_user.py:56 ops/const.py:49 ops/const.py:59 +#: assets/models/_user.py:55 ops/const.py:49 ops/const.py:59 msgid "Shell" msgstr "シェル" -#: assets/models/_user.py:58 +#: assets/models/_user.py:56 msgid "Login mode" msgstr "ログインモード" -#: assets/models/_user.py:59 terminal/serializers/storage.py:152 +#: assets/models/_user.py:57 terminal/serializers/storage.py:152 msgid "SFTP Root" msgstr "SFTPルート" -#: assets/models/_user.py:60 +#: assets/models/_user.py:58 msgid "Home" msgstr "ホーム" -#: assets/models/_user.py:61 +#: assets/models/_user.py:59 msgid "System groups" msgstr "システムグループ" -#: assets/models/_user.py:64 +#: assets/models/_user.py:62 msgid "User switch" msgstr "ユーザースイッチ" -#: assets/models/_user.py:66 +#: assets/models/_user.py:63 msgid "Switch from" msgstr "から切り替え" -#: assets/models/_user.py:72 +#: assets/models/_user.py:69 msgid "System user" msgstr "システムユーザー" -#: assets/models/_user.py:74 +#: assets/models/_user.py:71 msgid "Can match system user" msgstr "システムユーザーに一致できます" @@ -1691,13 +1712,13 @@ msgstr "アドレス" #: assets/models/asset/common.py:151 assets/models/platform.py:119 #: authentication/backends/passkey/models.py:12 -#: authentication/serializers/connect_token_secret.py:115 +#: authentication/serializers/connect_token_secret.py:117 #: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:321 msgid "Platform" msgstr "プラットフォーム" #: assets/models/asset/common.py:153 assets/models/domain.py:21 -#: authentication/serializers/connect_token_secret.py:133 +#: authentication/serializers/connect_token_secret.py:135 #: perms/serializers/user_permission.py:28 xpack/plugins/cloud/models.py:323 msgid "Domain" msgstr "ドメイン" @@ -1844,7 +1865,7 @@ msgstr "システム" #: assets/serializers/cagegory.py:11 assets/serializers/cagegory.py:18 #: assets/serializers/cagegory.py:24 #: authentication/models/connection_token.py:29 -#: authentication/serializers/connect_token_secret.py:122 +#: authentication/serializers/connect_token_secret.py:124 #: common/serializers/common.py:86 settings/models.py:33 #: users/models/preference.py:13 msgid "Value" @@ -1853,7 +1874,7 @@ msgstr "値" #: assets/models/label.py:40 assets/serializers/asset/common.py:123 #: assets/serializers/cagegory.py:10 assets/serializers/cagegory.py:17 #: assets/serializers/cagegory.py:23 assets/serializers/platform.py:112 -#: authentication/serializers/connect_token_secret.py:121 +#: authentication/serializers/connect_token_secret.py:123 #: common/serializers/common.py:85 perms/serializers/user_permission.py:27 #: settings/serializers/msg.py:83 msgid "Label" @@ -2021,7 +2042,7 @@ msgstr "" #: assets/serializers/asset/common.py:124 assets/serializers/platform.py:134 #: authentication/serializers/connect_token_secret.py:29 -#: authentication/serializers/connect_token_secret.py:72 +#: authentication/serializers/connect_token_secret.py:74 #: perms/models/asset_permission.py:75 perms/serializers/permission.py:40 #: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:324 #: xpack/plugins/cloud/serializers/task.py:31 @@ -2112,7 +2133,7 @@ msgid "Disk total" msgstr "ディスクの合計" #: assets/serializers/asset/info/gathered.py:16 -#: authentication/serializers/connect_token_secret.py:112 +#: authentication/serializers/connect_token_secret.py:114 msgid "OS" msgstr "OS" @@ -2367,7 +2388,7 @@ msgstr "閉じる" msgid "Terminal" msgstr "ターミナル" -#: audits/const.py:48 audits/models.py:131 +#: audits/const.py:48 audits/models.py:132 msgid "Operate log" msgstr "ログの操作" @@ -2396,28 +2417,28 @@ msgstr "是" msgid "No" msgstr "否" -#: audits/models.py:46 +#: audits/models.py:47 msgid "Job audit log" msgstr "ジョブ監査ログ" -#: audits/models.py:55 audits/models.py:99 audits/models.py:174 +#: audits/models.py:56 audits/models.py:100 audits/models.py:175 #: terminal/models/session/session.py:38 terminal/models/session/sharing.py:113 msgid "Remote addr" msgstr "リモートaddr" -#: audits/models.py:60 audits/serializers.py:35 +#: audits/models.py:61 audits/serializers.py:35 msgid "Operate" msgstr "操作" -#: audits/models.py:62 +#: audits/models.py:63 msgid "Filename" msgstr "ファイル名" -#: audits/models.py:65 common/serializers/common.py:98 +#: audits/models.py:66 common/serializers/common.py:98 msgid "File" msgstr "書類" -#: audits/models.py:66 terminal/backends/command/models.py:21 +#: audits/models.py:67 terminal/backends/command/models.py:21 #: terminal/models/session/replay.py:9 terminal/models/session/sharing.py:20 #: terminal/models/session/sharing.py:95 #: terminal/templates/terminal/_msg_command_alert.html:10 @@ -2426,86 +2447,86 @@ msgstr "書類" msgid "Session" msgstr "セッション" -#: audits/models.py:69 +#: audits/models.py:70 msgid "File transfer log" msgstr "ファイル転送ログ" -#: audits/models.py:93 audits/serializers.py:86 +#: audits/models.py:94 audits/serializers.py:86 msgid "Resource Type" msgstr "リソースタイプ" -#: audits/models.py:94 audits/models.py:97 audits/models.py:143 +#: audits/models.py:95 audits/models.py:98 audits/models.py:144 #: audits/serializers.py:85 msgid "Resource" msgstr "リソース" -#: audits/models.py:100 audits/models.py:146 audits/models.py:176 +#: audits/models.py:101 audits/models.py:147 audits/models.py:177 #: terminal/serializers/command.py:75 msgid "Datetime" msgstr "時間" -#: audits/models.py:139 +#: audits/models.py:140 msgid "Activity type" msgstr "活動の種類" -#: audits/models.py:149 +#: audits/models.py:150 msgid "Detail" msgstr "詳細" -#: audits/models.py:152 +#: audits/models.py:153 msgid "Detail ID" msgstr "詳細 ID" -#: audits/models.py:156 +#: audits/models.py:157 msgid "Activity log" msgstr "活動記録" -#: audits/models.py:172 +#: audits/models.py:173 msgid "Change by" msgstr "による変更" -#: audits/models.py:182 +#: audits/models.py:183 msgid "Password change log" msgstr "パスワード変更ログ" -#: audits/models.py:189 audits/models.py:264 +#: audits/models.py:190 audits/models.py:265 msgid "Login type" msgstr "ログインタイプ" -#: audits/models.py:191 audits/models.py:260 +#: audits/models.py:192 audits/models.py:261 #: tickets/models/ticket/login_confirm.py:10 msgid "Login IP" msgstr "ログインIP" -#: audits/models.py:199 audits/serializers.py:49 +#: audits/models.py:200 audits/serializers.py:49 #: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: users/forms/profile.py:65 users/models/user.py:815 #: users/serializers/profile.py:102 msgid "MFA" msgstr "MFA" -#: audits/models.py:209 +#: audits/models.py:210 msgid "Date login" msgstr "日付ログイン" -#: audits/models.py:211 audits/models.py:265 audits/serializers.py:67 +#: audits/models.py:212 audits/models.py:266 audits/serializers.py:67 #: audits/serializers.py:184 msgid "Authentication backend" msgstr "認証バックエンド" -#: audits/models.py:255 +#: audits/models.py:256 msgid "User login log" msgstr "ユーザーログインログ" -#: audits/models.py:261 +#: audits/models.py:262 msgid "Session key" msgstr "セッションID" -#: audits/models.py:300 +#: audits/models.py:306 msgid "User session" msgstr "ユーザーセッション" -#: audits/models.py:302 +#: audits/models.py:308 msgid "Offline ussr session" msgstr "ユーザー・セッションの下限" @@ -2600,29 +2621,29 @@ msgstr "" msgid "This action require verify your MFA" msgstr "この操作には、MFAを検証する必要があります" -#: authentication/api/connection_token.py:263 +#: authentication/api/connection_token.py:258 msgid "Reusable connection token is not allowed, global setting not enabled" msgstr "" "再使用可能な接続トークンの使用は許可されていません。グローバル設定は有効に" "なっていません" -#: authentication/api/connection_token.py:377 +#: authentication/api/connection_token.py:372 msgid "Anonymous account is not supported for this asset" msgstr "匿名アカウントはこのプロパティではサポートされていません" -#: authentication/api/connection_token.py:396 +#: authentication/api/connection_token.py:391 msgid "Account not found" msgstr "アカウントが見つかりません" -#: authentication/api/connection_token.py:399 +#: authentication/api/connection_token.py:394 msgid "Permission expired" msgstr "承認の有効期限が切れています" -#: authentication/api/connection_token.py:429 +#: authentication/api/connection_token.py:424 msgid "ACL action is reject: {}({})" msgstr "ACL アクションは拒否です: {}({})" -#: authentication/api/connection_token.py:433 +#: authentication/api/connection_token.py:428 msgid "ACL action is review" msgstr "ACL アクションはレビューです" @@ -3107,19 +3128,19 @@ msgstr "異なる都市ログインのリマインダー" msgid "binding reminder" msgstr "バインディングリマインダー" -#: authentication/serializers/connect_token_secret.py:113 +#: authentication/serializers/connect_token_secret.py:115 msgid "Is builtin" msgstr "ビルトイン" -#: authentication/serializers/connect_token_secret.py:117 +#: authentication/serializers/connect_token_secret.py:119 msgid "Options" msgstr "オプション" -#: authentication/serializers/connect_token_secret.py:124 +#: authentication/serializers/connect_token_secret.py:126 msgid "Component" msgstr "コンポーネント" -#: authentication/serializers/connect_token_secret.py:135 +#: authentication/serializers/connect_token_secret.py:137 msgid "Expired now" msgstr "すぐに期限切れ" @@ -3609,7 +3630,7 @@ msgstr "テキストフィールドへのマーシャルデータ" msgid "Encrypt field using Secret Key" msgstr "Secret Keyを使用したフィールドの暗号化" -#: common/db/fields.py:575 +#: common/db/fields.py:573 msgid "" "Invalid JSON data for JSONManyToManyField, should be like {'type': 'all'} or " "{'type': 'ids', 'ids': []} or {'type': 'attrs', 'attrs': [{'name': 'ip', " @@ -3619,15 +3640,15 @@ msgstr "" "{'type':'ids','ids':[]}或 #タイプ:属性、属性:[#名前:ip、照合:正確、" "値:1.1.1.1}" -#: common/db/fields.py:582 +#: common/db/fields.py:580 msgid "Invalid type, should be \"all\", \"ids\" or \"attrs\"" msgstr "無効なタイプです。all、ids、またはattrsでなければなりません" -#: common/db/fields.py:585 +#: common/db/fields.py:583 msgid "Invalid ids for ids, should be a list" msgstr "無効なID、リストでなければなりません" -#: common/db/fields.py:587 common/db/fields.py:592 +#: common/db/fields.py:585 common/db/fields.py:590 #: common/serializers/fields.py:104 tickets/serializers/ticket/common.py:58 #: xpack/plugins/cloud/serializers/account_attrs.py:56 #: xpack/plugins/cloud/serializers/account_attrs.py:79 @@ -3635,11 +3656,11 @@ msgstr "無効なID、リストでなければなりません" msgid "This field is required." msgstr "このフィールドは必須です。" -#: common/db/fields.py:590 common/db/fields.py:595 +#: common/db/fields.py:588 common/db/fields.py:593 msgid "Invalid attrs, should be a list of dict" msgstr "無効な属性、dictリストでなければなりません" -#: common/db/fields.py:597 +#: common/db/fields.py:595 msgid "Invalid attrs, should be has name and value" msgstr "名前と値が必要な無効な属性" @@ -4403,11 +4424,15 @@ msgstr "コピー" msgid "Paste" msgstr "貼り付け" -#: perms/const.py:27 +#: perms/const.py:18 +msgid "Share" +msgstr "" + +#: perms/const.py:28 msgid "Transfer" msgstr "転送" -#: perms/const.py:28 +#: perms/const.py:29 msgid "Clipboard" msgstr "クリップボード" @@ -6204,10 +6229,11 @@ msgstr "テスト失敗: {}" msgid "Test successful" msgstr "テスト成功" -#: terminal/api/component/storage.py:124 terminal/notifications.py:240 -#: terminal/tasks.py:146 -msgid "Test failure: Account invalid" -msgstr "テスト失敗: アカウントが無効" +#: terminal/api/component/storage.py:124 +#, fuzzy +#| msgid "Test failure: Account invalid" +msgid "Test failure: Please check configuration" +msgstr "テストが失敗しました: 構成を確認してください" #: terminal/api/component/terminal.py:55 msgid "Have online sessions" @@ -6683,6 +6709,10 @@ msgstr "コマンド及び録画記憶" msgid "Connectivity alarm" msgstr "接続性アラーム" +#: terminal/notifications.py:240 terminal/tasks.py:146 +msgid "Test failure: Account invalid" +msgstr "テスト失敗: アカウントが無効" + #: terminal/notifications.py:250 #: terminal/templates/terminal/_msg_check_command_replay_storage_connectivity.html:4 msgid "Invalid storage" @@ -8691,5 +8721,11 @@ msgstr "エンタープライズプロフェッショナル版" msgid "Ultimate edition" msgstr "エンタープライズ・フラッグシップ・エディション" +#~ msgid "Password can not contains `'` " +#~ msgstr "パスワードには `'` を含まない" + +#~ msgid "Password can not contains `\"` " +#~ msgstr "パスワードには `\"` を含まない" + #~ msgid "Object Storage" #~ msgstr "オブジェクトストレージ" diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 837642306..ae8cc2220 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:b9a380c7adbd9fad7af4257cb72742c0e68b50846591cc5b0124a0df539ec285 -size 134380 +oid sha256:258efb0208b560b1d27fefa33d462d0ff072d44844d66328afea5ddd3a4b2812 +size 134068 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 175d7b1d1..6149c66d8 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-11-03 18:29+0800\n" +"POT-Creation-Date: 2023-11-13 14:19+0800\n" "PO-Revision-Date: 2021-05-20 10:54+0800\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -23,7 +23,7 @@ msgstr "参数 'action' 必须是 [{}]" #: accounts/const/account.py:6 #: accounts/serializers/automations/change_secret.py:32 -#: assets/models/_user.py:23 audits/signal_handlers/login_log.py:34 +#: assets/models/_user.py:24 audits/signal_handlers/login_log.py:34 #: authentication/confirm/password.py:9 authentication/confirm/password.py:24 #: authentication/confirm/password.py:26 authentication/forms.py:32 #: authentication/templates/authentication/login.html:330 @@ -46,7 +46,7 @@ msgstr "SSH 密钥" msgid "Access key" msgstr "Access key" -#: accounts/const/account.py:9 assets/models/_user.py:47 +#: accounts/const/account.py:9 assets/models/_user.py:48 #: authentication/backends/passkey/models.py:16 #: authentication/models/sso_token.py:14 settings/serializers/feature.py:50 msgid "Token" @@ -242,7 +242,7 @@ msgstr "用户 %s 查看/导出 了密码" #: acls/serializers/base.py:123 assets/models/asset/common.py:93 #: assets/models/asset/common.py:334 assets/models/cmd_filter.py:36 #: assets/serializers/domain.py:19 assets/serializers/label.py:27 -#: audits/models.py:57 authentication/models/connection_token.py:36 +#: audits/models.py:58 authentication/models/connection_token.py:36 #: perms/models/asset_permission.py:68 perms/serializers/permission.py:34 #: terminal/backends/command/models.py:17 terminal/models/session/session.py:31 #: terminal/notifications.py:155 terminal/serializers/command.py:17 @@ -281,7 +281,7 @@ msgstr "来源 ID" #: accounts/serializers/automations/change_secret.py:127 #: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7 #: assets/serializers/asset/common.py:125 assets/serializers/gateway.py:28 -#: audits/models.py:58 authentication/api/connection_token.py:408 +#: audits/models.py:59 authentication/api/connection_token.py:403 #: ops/models/base.py:18 perms/models/asset_permission.py:74 #: perms/serializers/permission.py:39 terminal/backends/command/models.py:18 #: terminal/models/session/session.py:33 @@ -311,43 +311,43 @@ msgstr "可以验证账号" msgid "Can push account" msgstr "可以推送账号" -#: accounts/models/automations/backup_account.py:28 +#: accounts/models/automations/backup_account.py:27 msgid "Backup Type" msgstr "备份类型" +#: accounts/models/automations/backup_account.py:28 #: accounts/models/automations/backup_account.py:29 -#: accounts/models/automations/backup_account.py:30 msgid "Is Password Divided" msgstr "密钥是否拆分成前后两部分" -#: accounts/models/automations/backup_account.py:33 +#: accounts/models/automations/backup_account.py:32 msgid "Recipient part one" msgstr "收件人部分一" -#: accounts/models/automations/backup_account.py:37 +#: accounts/models/automations/backup_account.py:36 msgid "Recipient part two" msgstr "收件人部分二" -#: accounts/models/automations/backup_account.py:41 +#: accounts/models/automations/backup_account.py:40 msgid "Object Storage Recipient part one" msgstr "接收服务器一" -#: accounts/models/automations/backup_account.py:45 +#: accounts/models/automations/backup_account.py:44 msgid "Object Storage Recipient part two" msgstr "接收服务器二" -#: accounts/models/automations/backup_account.py:48 +#: accounts/models/automations/backup_account.py:47 #: accounts/serializers/account/backup.py:20 msgid "Zip Encrypt Password" msgstr "文件加密密码" -#: accounts/models/automations/backup_account.py:56 -#: accounts/models/automations/backup_account.py:139 +#: accounts/models/automations/backup_account.py:55 +#: accounts/models/automations/backup_account.py:138 msgid "Account backup plan" msgstr "账号备份计划" -#: accounts/models/automations/backup_account.py:120 -#: assets/models/automations/base.py:115 audits/models.py:64 +#: accounts/models/automations/backup_account.py:119 +#: assets/models/automations/base.py:115 audits/models.py:65 #: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:228 #: ops/templates/ops/celery_task_log.html:75 #: perms/models/asset_permission.py:77 terminal/models/applet/host.py:141 @@ -357,17 +357,17 @@ msgstr "账号备份计划" msgid "Date start" msgstr "开始日期" -#: accounts/models/automations/backup_account.py:123 +#: accounts/models/automations/backup_account.py:122 #: authentication/templates/authentication/_msg_oauth_bind.html:11 #: notifications/notifications.py:186 msgid "Time" msgstr "时间" -#: accounts/models/automations/backup_account.py:127 +#: accounts/models/automations/backup_account.py:126 msgid "Account backup snapshot" msgstr "账号备份快照" -#: accounts/models/automations/backup_account.py:131 +#: accounts/models/automations/backup_account.py:130 #: accounts/serializers/account/backup.py:49 #: accounts/serializers/automations/base.py:55 #: assets/models/automations/base.py:122 @@ -375,19 +375,19 @@ msgstr "账号备份快照" msgid "Trigger mode" msgstr "触发模式" -#: accounts/models/automations/backup_account.py:134 audits/models.py:202 +#: accounts/models/automations/backup_account.py:133 audits/models.py:203 #: terminal/models/session/sharing.py:125 xpack/plugins/cloud/models.py:205 msgid "Reason" msgstr "原因" -#: accounts/models/automations/backup_account.py:136 +#: accounts/models/automations/backup_account.py:135 #: accounts/serializers/automations/change_secret.py:105 #: accounts/serializers/automations/change_secret.py:128 #: ops/serializers/job.py:56 terminal/serializers/session.py:49 msgid "Is success" msgstr "是否成功" -#: accounts/models/automations/backup_account.py:144 +#: accounts/models/automations/backup_account.py:143 msgid "Account backup execution" msgstr "账号备份执行" @@ -432,6 +432,7 @@ msgid "SSH key change strategy" msgstr "SSH 密钥推送方式" #: accounts/models/automations/change_secret.py:15 +#: accounts/models/automations/gather_account.py:58 #: accounts/serializers/account/backup.py:41 #: accounts/serializers/automations/change_secret.py:56 msgid "Recipient" @@ -461,7 +462,7 @@ msgid "Date finished" msgstr "结束日期" #: accounts/models/automations/change_secret.py:43 -#: assets/models/automations/base.py:113 audits/models.py:207 +#: assets/models/automations/base.py:113 audits/models.py:208 #: audits/serializers.py:51 ops/models/base.py:49 ops/models/job.py:220 #: terminal/models/applet/applet.py:316 terminal/models/applet/host.py:140 #: terminal/models/component/status.py:30 terminal/serializers/applet.py:18 @@ -496,8 +497,8 @@ msgstr "最后登录日期" #: accounts/models/automations/push_account.py:15 accounts/models/base.py:65 #: accounts/serializers/account/virtual.py:21 acls/serializers/base.py:19 #: acls/serializers/base.py:50 acls/templates/acls/asset_login_reminder.html:5 -#: acls/templates/acls/user_login_reminder.html:5 assets/models/_user.py:22 -#: audits/models.py:187 authentication/forms.py:25 authentication/forms.py:27 +#: acls/templates/acls/user_login_reminder.html:5 assets/models/_user.py:23 +#: audits/models.py:188 authentication/forms.py:25 authentication/forms.py:27 #: authentication/models/temp_token.py:9 #: authentication/templates/authentication/_msg_different_city.html:9 #: authentication/templates/authentication/_msg_oauth_bind.html:9 @@ -520,7 +521,7 @@ msgstr "自动化收集账号" msgid "Is sync account" msgstr "是否同步账号" -#: accounts/models/automations/gather_account.py:71 +#: accounts/models/automations/gather_account.py:75 #: accounts/tasks/gather_accounts.py:29 msgid "Gather asset accounts" msgstr "收集账号" @@ -531,8 +532,8 @@ msgstr "触发方式" #: accounts/models/automations/push_account.py:16 acls/models/base.py:41 #: acls/serializers/base.py:57 assets/models/cmd_filter.py:81 -#: audits/models.py:91 audits/serializers.py:84 -#: authentication/serializers/connect_token_secret.py:116 +#: audits/models.py:92 audits/serializers.py:84 +#: authentication/serializers/connect_token_secret.py:118 #: authentication/templates/authentication/_access_key_modal.html:34 msgid "Action" msgstr "动作" @@ -576,14 +577,14 @@ msgstr "密码规则" #: accounts/models/base.py:64 accounts/serializers/account/virtual.py:20 #: acls/models/base.py:35 acls/models/base.py:96 acls/models/command_acl.py:21 #: acls/serializers/base.py:35 applications/models.py:9 -#: assets/models/_user.py:21 assets/models/asset/common.py:91 +#: assets/models/_user.py:22 assets/models/asset/common.py:91 #: assets/models/asset/common.py:149 assets/models/cmd_filter.py:21 #: assets/models/domain.py:18 assets/models/group.py:17 #: assets/models/label.py:18 assets/models/platform.py:15 #: assets/models/platform.py:88 assets/serializers/asset/common.py:146 #: assets/serializers/platform.py:111 assets/serializers/platform.py:228 #: authentication/backends/passkey/models.py:10 -#: authentication/serializers/connect_token_secret.py:110 ops/mixin.py:21 +#: authentication/serializers/connect_token_secret.py:112 ops/mixin.py:21 #: ops/models/adhoc.py:20 ops/models/celery.py:15 ops/models/celery.py:57 #: ops/models/job.py:126 ops/models/playbook.py:28 ops/serializers/job.py:20 #: orgs/models.py:82 perms/models/asset_permission.py:60 rbac/models/role.py:29 @@ -606,13 +607,13 @@ msgstr "特权账号" #: accounts/models/base.py:70 assets/models/asset/common.py:156 #: assets/models/automations/base.py:21 assets/models/cmd_filter.py:39 #: assets/models/label.py:22 -#: authentication/serializers/connect_token_secret.py:114 +#: authentication/serializers/connect_token_secret.py:116 #: terminal/models/applet/applet.py:40 #: terminal/models/component/endpoint.py:105 users/serializers/user.py:167 msgid "Is active" msgstr "激活" -#: accounts/models/template.py:17 assets/models/_user.py:54 +#: accounts/models/template.py:17 assets/models/_user.py:53 msgid "Auto push" msgstr "自动推送" @@ -667,17 +668,17 @@ msgid "" msgstr "" "连接资产时不使用用户名和密码的账号,仅支持 web类型 和 自定义类型 的资产" -#: accounts/notifications.py:9 accounts/notifications.py:34 +#: accounts/notifications.py:11 accounts/notifications.py:36 msgid "Notification of account backup route task results" msgstr "账号备份任务结果通知" -#: accounts/notifications.py:19 accounts/notifications.py:43 +#: accounts/notifications.py:21 accounts/notifications.py:45 msgid "" "{} - The account backup passage task has been completed. See the attachment " "for details" msgstr "{} - 账号备份任务已完成, 详情见附件" -#: accounts/notifications.py:22 +#: accounts/notifications.py:24 msgid "" "{} - The account backup passage task has been completed: the encryption " "password has not been set - please go to personal information -> file " @@ -686,17 +687,17 @@ msgstr "" "{} - 账号备份任务已完成: 未设置加密密码 - 请前往个人信息 -> 文件加密密码中设" "置加密密码" -#: accounts/notifications.py:53 +#: accounts/notifications.py:55 msgid "Notification of implementation result of encryption change plan" msgstr "改密计划任务结果通知" -#: accounts/notifications.py:63 +#: accounts/notifications.py:65 msgid "" "{} - The encryption change task has been completed. See the attachment for " "details" msgstr "{} - 改密任务已完成, 详情见附件" -#: accounts/notifications.py:66 +#: accounts/notifications.py:68 msgid "" "{} - The encryption change task has been completed: the encryption password " "has not been set - please go to personal information -> file encryption " @@ -705,6 +706,12 @@ msgstr "" "{} - 改密任务已完成: 未设置加密密码 - 请前往个人信息 -> 文件加密密码中设置加" "密密码" +#: accounts/notifications.py:79 +#, fuzzy +#| msgid "Gather account automation" +msgid "Gather account change information" +msgstr "自动化收集账号" + #: accounts/serializers/account/account.py:31 msgid "Push now" msgstr "立即推送" @@ -725,12 +732,12 @@ msgstr "类别" #: accounts/serializers/account/account.py:191 #: accounts/serializers/automations/base.py:54 acls/models/command_acl.py:24 #: acls/serializers/command_acl.py:19 applications/models.py:14 -#: assets/models/_user.py:49 assets/models/automations/base.py:20 +#: assets/models/_user.py:50 assets/models/automations/base.py:20 #: assets/models/cmd_filter.py:74 assets/models/platform.py:90 #: assets/serializers/asset/common.py:122 assets/serializers/platform.py:113 #: assets/serializers/platform.py:132 audits/serializers.py:50 #: audits/serializers.py:170 -#: authentication/serializers/connect_token_secret.py:123 ops/models/job.py:137 +#: authentication/serializers/connect_token_secret.py:125 ops/models/job.py:137 #: perms/serializers/user_permission.py:26 terminal/models/applet/applet.py:39 #: terminal/models/component/storage.py:57 #: terminal/models/component/storage.py:146 terminal/serializers/applet.py:29 @@ -766,7 +773,7 @@ msgstr "已修改" #: acls/templates/acls/asset_login_reminder.html:6 #: assets/models/automations/base.py:19 #: assets/serializers/automations/base.py:20 -#: authentication/api/connection_token.py:407 ops/models/base.py:17 +#: authentication/api/connection_token.py:402 ops/models/base.py:17 #: ops/models/job.py:139 ops/serializers/job.py:21 #: terminal/templates/terminal/_msg_command_execute_alert.html:16 msgid "Assets" @@ -786,15 +793,15 @@ msgid "Account has exist" msgstr "账号已存在" #: accounts/serializers/account/account.py:438 -#: authentication/serializers/connect_token_secret.py:156 +#: authentication/serializers/connect_token_secret.py:158 #: authentication/templates/authentication/_access_key_modal.html:30 #: perms/models/perm_node.py:21 users/serializers/group.py:31 msgid "ID" msgstr "ID" #: accounts/serializers/account/account.py:448 acls/serializers/base.py:116 -#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:53 -#: audits/models.py:89 audits/models.py:171 audits/models.py:268 +#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:54 +#: audits/models.py:90 audits/models.py:172 audits/models.py:269 #: audits/serializers.py:171 authentication/models/connection_token.py:32 #: authentication/models/sso_token.py:16 #: notifications/models/notification.py:12 @@ -889,7 +896,7 @@ msgid "" "default parameters will be used" msgstr "关联平台,可配置推送参数,如果不关联,将使用默认参数" -#: accounts/serializers/account/virtual.py:19 assets/models/_user.py:26 +#: accounts/serializers/account/virtual.py:19 assets/models/_user.py:27 #: assets/models/cmd_filter.py:40 assets/models/cmd_filter.py:88 #: assets/models/group.py:20 common/db/models.py:36 ops/models/adhoc.py:26 #: ops/models/job.py:145 ops/models/playbook.py:31 rbac/models/role.py:37 @@ -948,7 +955,7 @@ msgid "Automation task execution" msgstr "自动化任务执行历史" #: accounts/serializers/automations/change_secret.py:149 audits/const.py:61 -#: audits/models.py:63 audits/signal_handlers/activity_log.py:33 +#: audits/models.py:64 audits/signal_handlers/activity_log.py:33 #: common/const/choices.py:18 ops/const.py:72 ops/serializers/celery.py:40 #: terminal/const.py:77 terminal/models/session/sharing.py:121 #: tickets/views/approve.py:117 @@ -1008,22 +1015,36 @@ msgstr "验证资产账号可用性" msgid "Verify accounts connectivity" msgstr "测试账号可连接性" +#: accounts/templates/accounts/asset_account_change_info.html:7 +#, fuzzy +#| msgid "Asset type" +msgid "Asset name" +msgstr "资产类型" + +#: accounts/templates/accounts/asset_account_change_info.html:8 +#, fuzzy +#| msgid "Add account: %s" +msgid "Added account" +msgstr "添加账号: %s" + +#: accounts/templates/accounts/asset_account_change_info.html:9 +#, fuzzy +#| msgid "Delete account: %s" +msgid "Deleted account" +msgstr "删除账号: %s" + #: accounts/utils.py:53 -msgid "Password can not contains `{{` " +#, fuzzy +#| msgid "Password can not contains `{{` " +msgid "Password can not contains `{{` or `}}`" msgstr "密码不能包含 `{{` 字符" #: accounts/utils.py:55 -msgid "Password can not contains `{%` " +#, fuzzy +#| msgid "Password can not contains `{%` " +msgid "Password can not contains `{%` or `%}`" msgstr "密码不能包含 `{%` 字符" -#: accounts/utils.py:58 -msgid "Password can not contains `'` " -msgstr "密码不能包含 `'` 字符" - -#: accounts/utils.py:60 -msgid "Password can not contains `\"` " -msgstr "密码不能包含 `\"` 字符" - #: accounts/utils.py:66 msgid "private key invalid or passphrase error" msgstr "密钥不合法或密钥密码错误" @@ -1053,7 +1074,7 @@ msgstr "告警" msgid "Notifications" msgstr "通知" -#: acls/models/base.py:37 assets/models/_user.py:50 +#: acls/models/base.py:37 assets/models/_user.py:51 #: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:97 #: xpack/plugins/cloud/models.py:275 msgid "Priority" @@ -1066,7 +1087,7 @@ msgid "1-100, the lower the value will be match first" msgstr "优先级可选范围为 1-100 (数值越小越优先)" #: acls/models/base.py:42 assets/models/cmd_filter.py:86 -#: authentication/serializers/connect_token_secret.py:88 +#: authentication/serializers/connect_token_secret.py:90 msgid "Reviewers" msgstr "审批人" @@ -1117,7 +1138,7 @@ msgstr "忽略大小写" #: acls/models/command_acl.py:33 acls/models/command_acl.py:97 #: acls/serializers/command_acl.py:29 -#: authentication/serializers/connect_token_secret.py:85 +#: authentication/serializers/connect_token_secret.py:87 #: terminal/templates/terminal/_msg_command_warning.html:14 msgid "Command group" msgstr "命令组" @@ -1245,15 +1266,15 @@ msgstr "" msgid "Thank you" msgstr "谢谢" -#: acls/templates/acls/user_login_reminder.html:7 audits/models.py:193 -#: audits/models.py:262 +#: acls/templates/acls/user_login_reminder.html:7 audits/models.py:194 +#: audits/models.py:263 #: authentication/templates/authentication/_msg_different_city.html:11 #: tickets/models/ticket/login_confirm.py:11 msgid "Login city" msgstr "登录城市" -#: acls/templates/acls/user_login_reminder.html:8 audits/models.py:196 -#: audits/models.py:263 audits/serializers.py:65 +#: acls/templates/acls/user_login_reminder.html:8 audits/models.py:197 +#: audits/models.py:264 audits/serializers.py:65 msgid "User agent" msgstr "用户代理" @@ -1573,99 +1594,99 @@ msgstr "网站" msgid "This function is not supported temporarily" msgstr "暂时不支持此功能" -#: assets/models/_user.py:24 +#: assets/models/_user.py:25 msgid "SSH private key" msgstr "SSH密钥" -#: assets/models/_user.py:25 +#: assets/models/_user.py:26 msgid "SSH public key" msgstr "SSH公钥" # msgid "Comment" # msgstr "备注" -#: assets/models/_user.py:27 assets/models/automations/base.py:114 +#: assets/models/_user.py:28 assets/models/automations/base.py:114 #: assets/models/cmd_filter.py:41 assets/models/group.py:19 -#: audits/models.py:266 common/db/models.py:34 ops/models/base.py:54 +#: audits/models.py:267 common/db/models.py:34 ops/models/base.py:54 #: ops/models/job.py:227 users/models/user.py:1024 msgid "Date created" msgstr "创建日期" -#: assets/models/_user.py:28 assets/models/cmd_filter.py:42 +#: assets/models/_user.py:29 assets/models/cmd_filter.py:42 #: common/db/models.py:35 users/models/user.py:846 msgid "Date updated" msgstr "更新日期" -#: assets/models/_user.py:29 assets/models/cmd_filter.py:44 +#: assets/models/_user.py:30 assets/models/cmd_filter.py:44 #: assets/models/cmd_filter.py:91 assets/models/group.py:18 #: common/db/models.py:32 users/models/user.py:835 #: users/serializers/group.py:29 msgid "Created by" msgstr "创建者" -#: assets/models/_user.py:39 +#: assets/models/_user.py:40 msgid "Automatic managed" msgstr "托管密码" -#: assets/models/_user.py:40 +#: assets/models/_user.py:41 msgid "Manually input" msgstr "手动输入" -#: assets/models/_user.py:44 +#: assets/models/_user.py:45 msgid "Common user" msgstr "普通用户" -#: assets/models/_user.py:45 assets/models/_user.py:98 +#: assets/models/_user.py:46 assets/models/_user.py:95 msgid "Admin user" msgstr "特权用户" -#: assets/models/_user.py:48 +#: assets/models/_user.py:49 msgid "Username same with user" msgstr "用户名与用户相同" -#: assets/models/_user.py:53 authentication/models/connection_token.py:41 -#: authentication/serializers/connect_token_secret.py:111 +#: assets/models/_user.py:52 authentication/models/connection_token.py:41 +#: authentication/serializers/connect_token_secret.py:113 #: terminal/models/applet/applet.py:42 terminal/serializers/session.py:19 #: terminal/serializers/session.py:45 terminal/serializers/storage.py:71 msgid "Protocol" msgstr "协议" -#: assets/models/_user.py:55 +#: assets/models/_user.py:54 msgid "Sudo" msgstr "Sudo" -#: assets/models/_user.py:56 ops/const.py:49 ops/const.py:59 +#: assets/models/_user.py:55 ops/const.py:49 ops/const.py:59 msgid "Shell" msgstr "Shell" -#: assets/models/_user.py:58 +#: assets/models/_user.py:56 msgid "Login mode" msgstr "认证方式" -#: assets/models/_user.py:59 terminal/serializers/storage.py:152 +#: assets/models/_user.py:57 terminal/serializers/storage.py:152 msgid "SFTP Root" msgstr "SFTP根路径" -#: assets/models/_user.py:60 +#: assets/models/_user.py:58 msgid "Home" msgstr "家目录" -#: assets/models/_user.py:61 +#: assets/models/_user.py:59 msgid "System groups" msgstr "用户组" -#: assets/models/_user.py:64 +#: assets/models/_user.py:62 msgid "User switch" msgstr "用户切换" -#: assets/models/_user.py:66 +#: assets/models/_user.py:63 msgid "Switch from" msgstr "切换自" -#: assets/models/_user.py:72 +#: assets/models/_user.py:69 msgid "System user" msgstr "系统用户" -#: assets/models/_user.py:74 +#: assets/models/_user.py:71 msgid "Can match system user" msgstr "可以匹配系统用户" @@ -1686,13 +1707,13 @@ msgstr "地址" #: assets/models/asset/common.py:151 assets/models/platform.py:119 #: authentication/backends/passkey/models.py:12 -#: authentication/serializers/connect_token_secret.py:115 +#: authentication/serializers/connect_token_secret.py:117 #: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:321 msgid "Platform" msgstr "系统平台" #: assets/models/asset/common.py:153 assets/models/domain.py:21 -#: authentication/serializers/connect_token_secret.py:133 +#: authentication/serializers/connect_token_secret.py:135 #: perms/serializers/user_permission.py:28 xpack/plugins/cloud/models.py:323 msgid "Domain" msgstr "网域" @@ -1839,7 +1860,7 @@ msgstr "系统" #: assets/serializers/cagegory.py:11 assets/serializers/cagegory.py:18 #: assets/serializers/cagegory.py:24 #: authentication/models/connection_token.py:29 -#: authentication/serializers/connect_token_secret.py:122 +#: authentication/serializers/connect_token_secret.py:124 #: common/serializers/common.py:86 settings/models.py:33 #: users/models/preference.py:13 msgid "Value" @@ -1848,7 +1869,7 @@ msgstr "值" #: assets/models/label.py:40 assets/serializers/asset/common.py:123 #: assets/serializers/cagegory.py:10 assets/serializers/cagegory.py:17 #: assets/serializers/cagegory.py:23 assets/serializers/platform.py:112 -#: authentication/serializers/connect_token_secret.py:121 +#: authentication/serializers/connect_token_secret.py:123 #: common/serializers/common.py:85 perms/serializers/user_permission.py:27 #: settings/serializers/msg.py:83 msgid "Label" @@ -2014,7 +2035,7 @@ msgstr "资产中批量更新平台,不符合平台类型跳过的资产" #: assets/serializers/asset/common.py:124 assets/serializers/platform.py:134 #: authentication/serializers/connect_token_secret.py:29 -#: authentication/serializers/connect_token_secret.py:72 +#: authentication/serializers/connect_token_secret.py:74 #: perms/models/asset_permission.py:75 perms/serializers/permission.py:40 #: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:324 #: xpack/plugins/cloud/serializers/task.py:31 @@ -2105,7 +2126,7 @@ msgid "Disk total" msgstr "硬盘大小" #: assets/serializers/asset/info/gathered.py:16 -#: authentication/serializers/connect_token_secret.py:112 +#: authentication/serializers/connect_token_secret.py:114 msgid "OS" msgstr "操作系统" @@ -2353,7 +2374,7 @@ msgstr "关闭" msgid "Terminal" msgstr "终端" -#: audits/const.py:48 audits/models.py:131 +#: audits/const.py:48 audits/models.py:132 msgid "Operate log" msgstr "操作日志" @@ -2382,28 +2403,28 @@ msgstr "是" msgid "No" msgstr "否" -#: audits/models.py:46 +#: audits/models.py:47 msgid "Job audit log" msgstr "作业审计日志" -#: audits/models.py:55 audits/models.py:99 audits/models.py:174 +#: audits/models.py:56 audits/models.py:100 audits/models.py:175 #: terminal/models/session/session.py:38 terminal/models/session/sharing.py:113 msgid "Remote addr" msgstr "远端地址" -#: audits/models.py:60 audits/serializers.py:35 +#: audits/models.py:61 audits/serializers.py:35 msgid "Operate" msgstr "操作" -#: audits/models.py:62 +#: audits/models.py:63 msgid "Filename" msgstr "文件名" -#: audits/models.py:65 common/serializers/common.py:98 +#: audits/models.py:66 common/serializers/common.py:98 msgid "File" msgstr "文件" -#: audits/models.py:66 terminal/backends/command/models.py:21 +#: audits/models.py:67 terminal/backends/command/models.py:21 #: terminal/models/session/replay.py:9 terminal/models/session/sharing.py:20 #: terminal/models/session/sharing.py:95 #: terminal/templates/terminal/_msg_command_alert.html:10 @@ -2412,86 +2433,86 @@ msgstr "文件" msgid "Session" msgstr "会话" -#: audits/models.py:69 +#: audits/models.py:70 msgid "File transfer log" msgstr "文件管理" -#: audits/models.py:93 audits/serializers.py:86 +#: audits/models.py:94 audits/serializers.py:86 msgid "Resource Type" msgstr "资源类型" -#: audits/models.py:94 audits/models.py:97 audits/models.py:143 +#: audits/models.py:95 audits/models.py:98 audits/models.py:144 #: audits/serializers.py:85 msgid "Resource" msgstr "资源" -#: audits/models.py:100 audits/models.py:146 audits/models.py:176 +#: audits/models.py:101 audits/models.py:147 audits/models.py:177 #: terminal/serializers/command.py:75 msgid "Datetime" msgstr "日期" -#: audits/models.py:139 +#: audits/models.py:140 msgid "Activity type" msgstr "活动类型" -#: audits/models.py:149 +#: audits/models.py:150 msgid "Detail" msgstr "详情" -#: audits/models.py:152 +#: audits/models.py:153 msgid "Detail ID" msgstr "详情 ID" -#: audits/models.py:156 +#: audits/models.py:157 msgid "Activity log" msgstr "活动日志" -#: audits/models.py:172 +#: audits/models.py:173 msgid "Change by" msgstr "修改者" -#: audits/models.py:182 +#: audits/models.py:183 msgid "Password change log" msgstr "改密日志" -#: audits/models.py:189 audits/models.py:264 +#: audits/models.py:190 audits/models.py:265 msgid "Login type" msgstr "登录方式" -#: audits/models.py:191 audits/models.py:260 +#: audits/models.py:192 audits/models.py:261 #: tickets/models/ticket/login_confirm.py:10 msgid "Login IP" msgstr "登录 IP" -#: audits/models.py:199 audits/serializers.py:49 +#: audits/models.py:200 audits/serializers.py:49 #: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: users/forms/profile.py:65 users/models/user.py:815 #: users/serializers/profile.py:102 msgid "MFA" msgstr "MFA" -#: audits/models.py:209 +#: audits/models.py:210 msgid "Date login" msgstr "登录日期" -#: audits/models.py:211 audits/models.py:265 audits/serializers.py:67 +#: audits/models.py:212 audits/models.py:266 audits/serializers.py:67 #: audits/serializers.py:184 msgid "Authentication backend" msgstr "认证方式" -#: audits/models.py:255 +#: audits/models.py:256 msgid "User login log" msgstr "用户登录日志" -#: audits/models.py:261 +#: audits/models.py:262 msgid "Session key" msgstr "会话标识" -#: audits/models.py:300 +#: audits/models.py:306 msgid "User session" msgstr "用户会话" -#: audits/models.py:302 +#: audits/models.py:308 msgid "Offline ussr session" msgstr "下限用户会话" @@ -2586,27 +2607,27 @@ msgstr "" msgid "This action require verify your MFA" msgstr "该操作需要验证您的 MFA, 请先开启并配置" -#: authentication/api/connection_token.py:263 +#: authentication/api/connection_token.py:258 msgid "Reusable connection token is not allowed, global setting not enabled" msgstr "不允许使用可重复使用的连接令牌,未启用全局设置" -#: authentication/api/connection_token.py:377 +#: authentication/api/connection_token.py:372 msgid "Anonymous account is not supported for this asset" msgstr "匿名账号不支持当前资产" -#: authentication/api/connection_token.py:396 +#: authentication/api/connection_token.py:391 msgid "Account not found" msgstr "账号未找到" -#: authentication/api/connection_token.py:399 +#: authentication/api/connection_token.py:394 msgid "Permission expired" msgstr "授权已过期" -#: authentication/api/connection_token.py:429 +#: authentication/api/connection_token.py:424 msgid "ACL action is reject: {}({})" msgstr "ACL 动作是拒绝: {}({})" -#: authentication/api/connection_token.py:433 +#: authentication/api/connection_token.py:428 msgid "ACL action is review" msgstr "ACL 动作是复核" @@ -3078,19 +3099,19 @@ msgstr "异地登录提醒" msgid "binding reminder" msgstr "绑定提醒" -#: authentication/serializers/connect_token_secret.py:113 +#: authentication/serializers/connect_token_secret.py:115 msgid "Is builtin" msgstr "内置的" -#: authentication/serializers/connect_token_secret.py:117 +#: authentication/serializers/connect_token_secret.py:119 msgid "Options" msgstr "选项" -#: authentication/serializers/connect_token_secret.py:124 +#: authentication/serializers/connect_token_secret.py:126 msgid "Component" msgstr "组件" -#: authentication/serializers/connect_token_secret.py:135 +#: authentication/serializers/connect_token_secret.py:137 msgid "Expired now" msgstr "立刻过期" @@ -3568,7 +3589,7 @@ msgstr "编码数据为 text" msgid "Encrypt field using Secret Key" msgstr "加密的字段" -#: common/db/fields.py:575 +#: common/db/fields.py:573 msgid "" "Invalid JSON data for JSONManyToManyField, should be like {'type': 'all'} or " "{'type': 'ids', 'ids': []} or {'type': 'attrs', 'attrs': [{'name': 'ip', " @@ -3578,15 +3599,15 @@ msgstr "" "{'type': 'attrs', 'attrs': [{'name': 'ip', 'match': 'exact', 'value': " "'1.1.1.1'}}" -#: common/db/fields.py:582 +#: common/db/fields.py:580 msgid "Invalid type, should be \"all\", \"ids\" or \"attrs\"" msgstr "无效类型,应为 all、ids 或 attrs" -#: common/db/fields.py:585 +#: common/db/fields.py:583 msgid "Invalid ids for ids, should be a list" msgstr "无效的ID,应为列表" -#: common/db/fields.py:587 common/db/fields.py:592 +#: common/db/fields.py:585 common/db/fields.py:590 #: common/serializers/fields.py:104 tickets/serializers/ticket/common.py:58 #: xpack/plugins/cloud/serializers/account_attrs.py:56 #: xpack/plugins/cloud/serializers/account_attrs.py:79 @@ -3594,11 +3615,11 @@ msgstr "无效的ID,应为列表" msgid "This field is required." msgstr "该字段是必填项。" -#: common/db/fields.py:590 common/db/fields.py:595 +#: common/db/fields.py:588 common/db/fields.py:593 msgid "Invalid attrs, should be a list of dict" msgstr "无效的属性,应为dict列表" -#: common/db/fields.py:597 +#: common/db/fields.py:595 msgid "Invalid attrs, should be has name and value" msgstr "无效属性,应具有名称和值" @@ -4354,11 +4375,15 @@ msgstr "复制" msgid "Paste" msgstr "粘贴" -#: perms/const.py:27 +#: perms/const.py:18 +msgid "Share" +msgstr "" + +#: perms/const.py:28 msgid "Transfer" msgstr "文件传输" -#: perms/const.py:28 +#: perms/const.py:29 msgid "Clipboard" msgstr "剪贴板" @@ -6118,10 +6143,11 @@ msgstr "测试失败: {}" msgid "Test successful" msgstr "测试成功" -#: terminal/api/component/storage.py:124 terminal/notifications.py:240 -#: terminal/tasks.py:146 -msgid "Test failure: Account invalid" -msgstr "测试失败: 账号无效" +#: terminal/api/component/storage.py:124 +#, fuzzy +#| msgid "Test failure: Account invalid" +msgid "Test failure: Please check configuration" +msgstr "测试失败: 请检查配置" #: terminal/api/component/terminal.py:55 msgid "Have online sessions" @@ -6595,6 +6621,10 @@ msgstr "命令及录像存储" msgid "Connectivity alarm" msgstr "可连接性告警" +#: terminal/notifications.py:240 terminal/tasks.py:146 +msgid "Test failure: Account invalid" +msgstr "测试失败: 账号无效" + #: terminal/notifications.py:250 #: terminal/templates/terminal/_msg_check_command_replay_storage_connectivity.html:4 msgid "Invalid storage" @@ -8574,5 +8604,11 @@ msgstr "企业专业版" msgid "Ultimate edition" msgstr "企业旗舰版" +#~ msgid "Password can not contains `'` " +#~ msgstr "密码不能包含 `'` 字符" + +#~ msgid "Password can not contains `\"` " +#~ msgstr "密码不能包含 `\"` 字符" + #~ msgid "Object Storage" #~ msgstr "对象存储" diff --git a/apps/terminal/api/component/storage.py b/apps/terminal/api/component/storage.py index 04e0db9ad..cf0a8a42a 100644 --- a/apps/terminal/api/component/storage.py +++ b/apps/terminal/api/component/storage.py @@ -121,7 +121,7 @@ class BaseStorageTestConnectiveMixin: if is_valid: msg = _("Test successful") else: - msg = _("Test failure: Account invalid") + msg = _("Test failure: Please check configuration") data = { 'is_valid': is_valid, 'msg': msg