feat: 同步ldap用户消息通知

pull/12533/head
wangruidong 2024-01-11 19:07:54 +08:00 committed by Bryan
parent 1275087f19
commit e428eb351b
12 changed files with 398 additions and 253 deletions

View File

@ -282,6 +282,7 @@ class Config(dict):
'AUTH_LDAP_SYNC_INTERVAL': None,
'AUTH_LDAP_SYNC_CRONTAB': None,
'AUTH_LDAP_SYNC_ORG_IDS': ['00000000-0000-0000-0000-000000000002'],
'AUTH_LDAP_SYNC_RECEIVERS': [],
'AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS': False,
'AUTH_LDAP_OPTIONS_OPT_REFERRALS': -1,

View File

@ -50,6 +50,7 @@ AUTH_LDAP_SYNC_IS_PERIODIC = CONFIG.AUTH_LDAP_SYNC_IS_PERIODIC
AUTH_LDAP_SYNC_INTERVAL = CONFIG.AUTH_LDAP_SYNC_INTERVAL
AUTH_LDAP_SYNC_CRONTAB = CONFIG.AUTH_LDAP_SYNC_CRONTAB
AUTH_LDAP_SYNC_ORG_IDS = CONFIG.AUTH_LDAP_SYNC_ORG_IDS
AUTH_LDAP_SYNC_RECEIVERS = CONFIG.AUTH_LDAP_SYNC_RECEIVERS
AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS = CONFIG.AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS
# ==============================================================================

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d8f3d621226f7e11db46fb35abf0b5f5528eb454a3a6f889499d7872d41a275d
size 170675
oid sha256:18c4618e0d0470e25d99b143e83de9a439ac691e5cb1d92ea5406cc32338e8f8
size 170813

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-03 11:23+0800\n"
"POT-Creation-Date: 2024-01-11 18:58+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"
@ -29,8 +29,9 @@ msgstr "パラメータ 'action' は [{}] でなければなりません。"
#: authentication/confirm/password.py:26 authentication/forms.py:32
#: authentication/templates/authentication/login.html:330
#: settings/serializers/auth/ldap.py:25 settings/serializers/auth/ldap.py:47
#: terminal/serializers/storage.py:123 terminal/serializers/storage.py:142
#: users/forms/profile.py:22 users/serializers/user.py:104
#: settings/serializers/msg.py:35 terminal/serializers/storage.py:123
#: terminal/serializers/storage.py:142 users/forms/profile.py:22
#: users/serializers/user.py:104
#: users/templates/users/_msg_user_created.html:13
#: users/templates/users/user_password_verify.html:18
#: xpack/plugins/cloud/serializers/account_attrs.py:28
@ -200,10 +201,10 @@ msgstr "作成のみ"
#: authentication/serializers/password_mfa.py:16
#: authentication/serializers/password_mfa.py:24
#: notifications/backends/__init__.py:10 settings/serializers/msg.py:22
#: settings/serializers/msg.py:57 users/forms/profile.py:102
#: settings/serializers/msg.py:64 users/forms/profile.py:102
#: users/forms/profile.py:109 users/models/user.py:802
#: users/templates/users/forgot_password.html:117
#: users/views/profile/reset.py:92
#: users/views/profile/reset.py:93
msgid "Email"
msgstr "メール"
@ -287,11 +288,11 @@ msgstr "ソース ID"
#: accounts/serializers/automations/change_secret.py:107
#: 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
#: assets/serializers/asset/common.py:128 assets/serializers/gateway.py:28
#: audits/models.py:59 authentication/api/connection_token.py:405
#: ops/models/base.py:18 perms/models/asset_permission.py:75
#: perms/serializers/permission.py:41 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:33
#: perms/serializers/permission.py:41 settings/serializers/msg.py:33
#: terminal/backends/command/models.py:18 terminal/models/session/session.py:33
#: terminal/templates/terminal/_msg_command_warning.html:8
#: terminal/templates/terminal/_msg_session_sharing.html:8
#: tickets/models/ticket/command_confirm.py:13 xpack/plugins/cloud/models.py:89
@ -361,8 +362,9 @@ msgstr "アカウントバックアップ計画"
#: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:235
#: ops/templates/ops/celery_task_log.html:75
#: perms/models/asset_permission.py:78 terminal/models/applet/host.py:141
#: terminal/models/session/session.py:44
#: perms/models/asset_permission.py:78
#: settings/templates/ldap/_msg_import_ldap_user.html:25
#: terminal/models/applet/host.py:141 terminal/models/session/session.py:44
#: tickets/models/ticket/apply_application.py:30
#: tickets/models/ticket/apply_asset.py:19
msgid "Date start"
@ -371,6 +373,7 @@ msgstr "開始日"
#: accounts/models/automations/backup_account.py:122
#: authentication/templates/authentication/_msg_oauth_bind.html:11
#: notifications/notifications.py:186
#: settings/templates/ldap/_msg_import_ldap_user.html:23
msgid "Time"
msgstr "時間"
@ -446,6 +449,7 @@ msgstr "SSHキープッシュ方式"
#: accounts/models/automations/gather_account.py:58
#: accounts/serializers/account/backup.py:41
#: accounts/serializers/automations/change_secret.py:56
#: settings/serializers/auth/ldap.py:81
msgid "Recipient"
msgstr "受信者"
@ -491,6 +495,7 @@ msgstr "ステータス"
#: authentication/templates/authentication/passkey.html:173
#: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:20
#: settings/templates/ldap/_msg_import_ldap_user.html:16
msgid "Error"
msgstr "間違い"
@ -593,8 +598,8 @@ msgstr "パスワードルール"
#: assets/models/asset/common.py:159 assets/models/cmd_filter.py:21
#: assets/models/domain.py:19 assets/models/group.py:17
#: assets/models/label.py:18 assets/models/platform.py:16
#: assets/models/platform.py:95 assets/serializers/asset/common.py:146
#: assets/serializers/platform.py:118 assets/serializers/platform.py:235
#: assets/models/platform.py:95 assets/serializers/asset/common.py:149
#: assets/serializers/platform.py:118 assets/serializers/platform.py:228
#: authentication/backends/passkey/models.py:10
#: authentication/serializers/connect_token_secret.py:113
#: authentication/serializers/connect_token_secret.py:168 labels/models.py:11
@ -602,7 +607,7 @@ msgstr "パスワードルール"
#: ops/models/celery.py:57 ops/models/job.py:136 ops/models/playbook.py:28
#: ops/serializers/job.py:18 orgs/models.py:82
#: perms/models/asset_permission.py:61 rbac/models/role.py:29
#: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:82
#: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:89
#: terminal/models/applet/applet.py:33 terminal/models/component/endpoint.py:12
#: terminal/models/component/endpoint.py:95
#: terminal/models/component/storage.py:26 terminal/models/component/task.py:13
@ -738,8 +743,8 @@ msgstr "アカウントの存在ポリシー"
#: accounts/serializers/account/account.py:193 applications/models.py:11
#: assets/models/label.py:21 assets/models/platform.py:96
#: assets/serializers/asset/common.py:122 assets/serializers/cagegory.py:12
#: assets/serializers/platform.py:140 assets/serializers/platform.py:236
#: assets/serializers/asset/common.py:125 assets/serializers/cagegory.py:12
#: assets/serializers/platform.py:140 assets/serializers/platform.py:229
#: perms/serializers/user_permission.py:26 settings/models.py:35
#: tickets/models/ticket/apply_application.py:13 users/models/preference.py:12
msgid "Category"
@ -750,7 +755,7 @@ msgstr "カテゴリ"
#: acls/serializers/command_acl.py:19 applications/models.py:14
#: assets/models/_user.py:50 assets/models/automations/base.py:20
#: assets/models/cmd_filter.py:74 assets/models/platform.py:97
#: assets/serializers/asset/common.py:123 assets/serializers/platform.py:120
#: assets/serializers/asset/common.py:126 assets/serializers/platform.py:120
#: assets/serializers/platform.py:139 audits/serializers.py:53
#: audits/serializers.py:170
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:144
@ -868,7 +873,7 @@ msgid "Key password"
msgstr "キーパスワード"
#: accounts/serializers/account/base.py:78
#: assets/serializers/asset/common.py:379
#: assets/serializers/asset/common.py:381
msgid "Spec info"
msgstr "特別情報"
@ -1117,8 +1122,8 @@ msgid "Users"
msgstr "ユーザー"
#: acls/models/base.py:98 assets/models/automations/base.py:17
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:378
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
#: assets/models/cmd_filter.py:38 perms/serializers/user_permission.py:75
#: rbac/tree.py:35
msgid "Accounts"
msgstr "アカウント"
@ -1423,8 +1428,8 @@ msgstr "脚本"
#: assets/const/category.py:10 assets/models/asset/host.py:8
#: settings/serializers/auth/radius.py:16 settings/serializers/auth/sms.py:71
#: settings/serializers/feature.py:49 terminal/models/component/endpoint.py:13
#: terminal/serializers/applet.py:17
#: settings/serializers/feature.py:49 settings/serializers/msg.py:31
#: terminal/models/component/endpoint.py:13 terminal/serializers/applet.py:17
#: xpack/plugins/cloud/serializers/account_attrs.py:72
msgid "Host"
msgstr "ホスト"
@ -1548,7 +1553,7 @@ msgid "We will consider login success when we see this prompt"
msgstr "このプロンプトが表示されたらログイン成功とみなします"
#: assets/const/protocol.py:119 assets/models/asset/database.py:10
#: settings/serializers/msg.py:40
#: settings/serializers/msg.py:47
msgid "Use SSL"
msgstr "SSLの使用"
@ -1663,7 +1668,7 @@ msgstr "ユーザーと同じユーザー名"
#: assets/models/_user.py:52 authentication/models/connection_token.py:41
#: authentication/serializers/connect_token_secret.py:114
#: terminal/models/applet/applet.py:42
#: settings/serializers/msg.py:29 terminal/models/applet/applet.py:42
#: terminal/models/virtualapp/virtualapp.py:24
#: terminal/serializers/session.py:19 terminal/serializers/session.py:45
#: terminal/serializers/storage.py:71
@ -1716,12 +1721,12 @@ msgstr "クラウド サービス"
#: assets/models/asset/common.py:94 assets/models/platform.py:17
#: settings/serializers/auth/radius.py:17 settings/serializers/auth/sms.py:72
#: terminal/serializers/storage.py:133
#: settings/serializers/msg.py:32 terminal/serializers/storage.py:133
#: xpack/plugins/cloud/serializers/account_attrs.py:73
msgid "Port"
msgstr "ポート"
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:147
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:150
msgid "Address"
msgstr "アドレス"
@ -1745,7 +1750,7 @@ msgstr "ドメイン"
msgid "Node"
msgstr "ノード"
#: assets/models/asset/common.py:167 assets/serializers/asset/common.py:380
#: assets/models/asset/common.py:167 assets/serializers/asset/common.py:382
#: assets/serializers/asset/host.py:11
msgid "Gathered info"
msgstr "資産ハードウェア情報の収集"
@ -1894,7 +1899,7 @@ msgstr "値"
#: assets/serializers/platform.py:119
#: authentication/serializers/connect_token_secret.py:124
#: common/serializers/common.py:85 labels/models.py:17 labels/models.py:33
#: labels/serializers.py:45 settings/serializers/msg.py:83
#: labels/serializers.py:45 settings/serializers/msg.py:90
msgid "Label"
msgstr "ラベル"
@ -2065,7 +2070,7 @@ msgstr ""
"プラットフォームタイプがスキップされた資産に合致しない、資産内の一括更新プ"
"ラットフォーム"
#: assets/serializers/asset/common.py:124 assets/serializers/platform.py:141
#: assets/serializers/asset/common.py:127 assets/serializers/platform.py:141
#: authentication/serializers/connect_token_secret.py:30
#: authentication/serializers/connect_token_secret.py:75
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:42
@ -2074,29 +2079,29 @@ msgstr ""
msgid "Protocols"
msgstr "プロトコル"
#: assets/serializers/asset/common.py:126
#: assets/serializers/asset/common.py:148
#: assets/serializers/asset/common.py:129
#: assets/serializers/asset/common.py:151
msgid "Node path"
msgstr "ノードパスです"
#: assets/serializers/asset/common.py:145
#: assets/serializers/asset/common.py:381
#: assets/serializers/asset/common.py:148
#: assets/serializers/asset/common.py:383
msgid "Auto info"
msgstr "自動情報"
#: assets/serializers/asset/common.py:239
#: assets/serializers/asset/common.py:242
msgid "Platform not exist"
msgstr "プラットフォームが存在しません"
#: assets/serializers/asset/common.py:275
#: assets/serializers/asset/common.py:278
msgid "port out of range (0-65535)"
msgstr "ポート番号が範囲外です (0-65535)"
#: assets/serializers/asset/common.py:282
#: assets/serializers/asset/common.py:285
msgid "Protocol is required: {}"
msgstr "プロトコルが必要です: {}"
#: assets/serializers/asset/common.py:310
#: assets/serializers/asset/common.py:313
msgid "Invalid data"
msgstr "無効なデータ"
@ -2251,7 +2256,7 @@ msgstr "デフォルト ドメイン"
msgid "type is required"
msgstr "タイプ このフィールドは必須です."
#: assets/serializers/platform.py:211
#: assets/serializers/platform.py:204
msgid "Protocols is required"
msgstr "同意が必要です"
@ -2606,8 +2611,8 @@ msgstr "認証トークン"
#: audits/signal_handlers/login_log.py:37 authentication/notifications.py:73
#: authentication/views/login.py:77 notifications/backends/__init__.py:11
#: settings/serializers/auth/wecom.py:10 users/models/user.py:749
#: users/models/user.py:855
#: settings/notifications.py:68 settings/serializers/auth/wecom.py:10
#: users/models/user.py:749 users/models/user.py:855
msgid "WeCom"
msgstr "企業微信"
@ -2694,16 +2699,16 @@ msgstr "ACL アクションはレビューです"
msgid "Current user not support mfa type: {}"
msgstr "現在のユーザーはmfaタイプをサポートしていません: {}"
#: authentication/api/password.py:34 terminal/api/session/session.py:305
#: users/views/profile/reset.py:61
#: authentication/api/password.py:33 terminal/api/session/session.py:305
#: users/views/profile/reset.py:62
msgid "User does not exist: {}"
msgstr "ユーザーが存在しない: {}"
#: authentication/api/password.py:34 users/views/profile/reset.py:163
#: authentication/api/password.py:33 users/views/profile/reset.py:163
msgid "No user matched"
msgstr "ユーザーにマッチしなかった"
#: authentication/api/password.py:38
#: authentication/api/password.py:37
msgid ""
"The user is from {}, please go to the corresponding system to change the "
"password"
@ -2711,7 +2716,7 @@ msgstr ""
"ユーザーは {}からです。対応するシステムにアクセスしてパスワードを変更してくだ"
"さい。"
#: authentication/api/password.py:67
#: authentication/api/password.py:65
#: authentication/templates/authentication/login.html:361
#: users/templates/users/forgot_password.html:27
#: users/templates/users/forgot_password.html:28
@ -3031,7 +3036,7 @@ msgstr "メッセージ検証コードが無効"
#: authentication/serializers/password_mfa.py:24
#: settings/serializers/auth/sms.py:32 users/forms/profile.py:104
#: users/forms/profile.py:109 users/templates/users/forgot_password.html:112
#: users/views/profile/reset.py:98
#: users/views/profile/reset.py:99
msgid "SMS"
msgstr "メッセージ"
@ -3047,7 +3052,7 @@ msgstr "電話番号を設定して有効にする"
msgid "Clear phone number to disable"
msgstr "無効にする電話番号をクリアする"
#: authentication/middleware.py:94 settings/utils/ldap.py:676
#: authentication/middleware.py:94 settings/utils/ldap.py:679
msgid "Authentication failed (before login check failed): {}"
msgstr "認証に失敗しました (ログインチェックが失敗する前): {}"
@ -3171,7 +3176,7 @@ msgstr "確認済み"
msgid "Different city login reminder"
msgstr "異なる都市ログインのリマインダー"
#: authentication/notifications.py:52
#: authentication/notifications.py:52 settings/notifications.py:47
msgid "binding reminder"
msgstr "バインディングリマインダー"
@ -3309,7 +3314,7 @@ msgstr "コードエラー"
#: authentication/templates/authentication/_msg_reset_password_code.html:9
#: authentication/templates/authentication/_msg_rest_password_success.html:2
#: authentication/templates/authentication/_msg_rest_public_key_success.html:2
#: jumpserver/conf.py:457
#: jumpserver/conf.py:460
#: perms/templates/perms/_msg_item_permissions_expire.html:3
#: perms/templates/perms/_msg_permed_items_expire.html:3
#: tickets/templates/tickets/approve_check_password.html:32
@ -3481,7 +3486,7 @@ msgstr ""
msgid "Do you want to retry ?"
msgstr "再試行しますか?"
#: authentication/utils.py:23 common/utils/ip/geoip/utils.py:24
#: authentication/utils.py:24 common/utils/ip/geoip/utils.py:24
#: xpack/plugins/cloud/const.py:32
msgid "LAN"
msgstr "ローカルエリアネットワーク"
@ -3818,7 +3823,7 @@ msgstr "サポートされていません Elasticsearch8"
msgid "Network error, please contact system administrator"
msgstr "ネットワークエラー、システム管理者に連絡してください"
#: common/sdk/im/slack/__init__.py:79
#: common/sdk/im/slack/__init__.py:77
msgid "Unknown error occur"
msgstr "不明なエラーが発生しました"
@ -3913,15 +3918,15 @@ msgstr "無効なオプション: {}"
msgid "Labels"
msgstr "ラベル"
#: common/tasks.py:21 common/utils/verify_code.py:16
#: common/tasks.py:31 common/utils/verify_code.py:16
msgid "Send email"
msgstr "メールを送る"
#: common/tasks.py:48
#: common/tasks.py:58
msgid "Send email attachment"
msgstr "メールの添付ファイルを送信"
#: common/tasks.py:69 terminal/tasks.py:62
#: common/tasks.py:80 terminal/tasks.py:62
msgid "Upload session replay to external storage"
msgstr "セッションの記録を外部ストレージにアップロードする"
@ -3950,16 +3955,16 @@ msgstr "特殊文字を含むべきではない"
msgid "The mobile phone number format is incorrect"
msgstr "携帯電話番号の形式が正しくありません"
#: jumpserver/conf.py:452
#: jumpserver/conf.py:454
#, python-brace-format
msgid "The verification code is: {code}"
msgstr "認証コードは: {code}"
#: jumpserver/conf.py:456
#: jumpserver/conf.py:459
msgid "Create account successfully"
msgstr "アカウントを正常に作成"
#: jumpserver/conf.py:458
#: jumpserver/conf.py:461
msgid "Your account has been created successfully"
msgstr "アカウントが正常に作成されました"
@ -4382,6 +4387,7 @@ msgid "Is finished"
msgstr "終了しました"
#: ops/serializers/job.py:66
#: settings/templates/ldap/_msg_import_ldap_user.html:27
msgid "Time cost"
msgstr "時を過ごす"
@ -4867,7 +4873,7 @@ msgstr "チャットAIがオンになっていない"
msgid "Test success"
msgstr "テストの成功"
#: settings/api/email.py:21
#: settings/api/email.py:22
msgid "Test mail sent to {}, please check"
msgstr "{}に送信されたテストメールを確認してください"
@ -4970,6 +4976,10 @@ msgstr "他の設定を変えることができます"
msgid "Chat prompt"
msgstr "チャットのヒント"
#: settings/notifications.py:22
msgid "Notification of Synchronized LDAP User Task Results"
msgstr "LDAPユーザータスクの結果通知を同期する"
#: settings/serializers/auth/base.py:12
msgid "LDAP Auth"
msgstr "LDAP 認証"
@ -5125,7 +5135,7 @@ msgstr "接続タイムアウト (秒)"
msgid "Search paged size (piece)"
msgstr "ページサイズを検索 (じょう)"
#: settings/serializers/auth/ldap.py:81
#: settings/serializers/auth/ldap.py:84
msgid "Enable LDAP auth"
msgstr "LDAP認証の有効化"
@ -5342,7 +5352,7 @@ msgstr "認証コード長"
#: settings/serializers/auth/sms.py:27 settings/serializers/auth/sms.py:49
#: settings/serializers/auth/sms.py:57 settings/serializers/auth/sms.py:66
#: settings/serializers/auth/sms.py:77 settings/serializers/msg.py:76
#: settings/serializers/auth/sms.py:77 settings/serializers/msg.py:83
msgid "Signature"
msgstr "署名"
@ -5628,74 +5638,68 @@ msgstr "仮想アプリケーション"
msgid "Enable virtual app"
msgstr "仮想アプリケーションの有効化"
#: settings/serializers/msg.py:24
msgid "SMTP host"
#: settings/serializers/msg.py:25
#, fuzzy
#| msgid "SMTP host"
msgid "SMTP"
msgstr "SMTPホスト"
#: settings/serializers/msg.py:25
msgid "SMTP port"
msgstr "SMTPポート"
#: settings/serializers/msg.py:26
msgid "SMTP account"
msgstr "SMTPアカウント"
msgid "EXCHANGE"
msgstr ""
#: settings/serializers/msg.py:28
msgid "SMTP password"
msgstr "SMTPパスワード"
#: settings/serializers/msg.py:29
#: settings/serializers/msg.py:36
msgid "Tips: Some provider use token except password"
msgstr "ヒント: 一部のプロバイダーはパスワード以外のトークンを使用します"
#: settings/serializers/msg.py:32
#: settings/serializers/msg.py:39
msgid "Send user"
msgstr "ユーザーを送信"
#: settings/serializers/msg.py:33
#: settings/serializers/msg.py:40
msgid "Tips: Send mail account, default SMTP account as the send account"
msgstr ""
"ヒント: 送信メールアカウント、送信アカウントとしてのデフォルトのSMTPアカウン"
"ト"
#: settings/serializers/msg.py:36
#: settings/serializers/msg.py:43
msgid "Test recipient"
msgstr "テスト受信者"
#: settings/serializers/msg.py:37
#: settings/serializers/msg.py:44
msgid "Tips: Used only as a test mail recipient"
msgstr "ヒント: テストメールの受信者としてのみ使用"
#: settings/serializers/msg.py:41
#: settings/serializers/msg.py:48
msgid "If SMTP port is 465, may be select"
msgstr "SMTPポートが465の場合は、"
#: settings/serializers/msg.py:44
#: settings/serializers/msg.py:51
msgid "Use TLS"
msgstr "TLSの使用"
#: settings/serializers/msg.py:45
#: settings/serializers/msg.py:52
msgid "If SMTP port is 587, may be select"
msgstr "SMTPポートが587の場合は、"
#: settings/serializers/msg.py:48
#: settings/serializers/msg.py:55
msgid "Subject prefix"
msgstr "件名プレフィックス"
#: settings/serializers/msg.py:51
#: settings/serializers/msg.py:58
msgid "Email suffix"
msgstr "メールのサフィックス"
#: settings/serializers/msg.py:52
#: settings/serializers/msg.py:59
msgid ""
"This is used by default if no email is returned during SSO authentication"
msgstr "これは、SSO認証中にメールが返されない場合にデフォルトで使用されます。"
#: settings/serializers/msg.py:61
#: settings/serializers/msg.py:68
msgid "Create user email subject"
msgstr "ユーザーメール件名の作成"
#: settings/serializers/msg.py:62
#: settings/serializers/msg.py:69
msgid ""
"Tips: When creating a user, send the subject of the email (eg:Create account "
"successfully)"
@ -5703,20 +5707,20 @@ msgstr ""
"ヒント: ユーザーを作成するときに、メールの件名を送信します (例: アカウントを"
"正常に作成)"
#: settings/serializers/msg.py:66
#: settings/serializers/msg.py:73
msgid "Create user honorific"
msgstr "ユーザー敬語の作成"
#: settings/serializers/msg.py:67
#: settings/serializers/msg.py:74
msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)"
msgstr ""
"ヒント: ユーザーを作成するときは、メールの敬語を送信します (例: こんにちは)"
#: settings/serializers/msg.py:71
#: settings/serializers/msg.py:78
msgid "Create user email content"
msgstr "ユーザーのメールコンテンツを作成する"
#: settings/serializers/msg.py:73
#: settings/serializers/msg.py:80
#, python-brace-format
msgid ""
"Tips: When creating a user, send the content of the email, support "
@ -5725,7 +5729,7 @@ msgstr ""
"ヒント:ユーザーの作成時にパスワード設定メールの内容を送信し、{username}{name}"
"{email}ラベルをサポートします。"
#: settings/serializers/msg.py:77
#: settings/serializers/msg.py:84
msgid "Tips: Email signature (eg:jumpserver)"
msgstr "ヒント: メール署名 (例: jumpserver)"
@ -6085,112 +6089,129 @@ msgstr "Razor の有効化"
msgid "Enable SSH Client"
msgstr "SSH Clientの有効化"
#: settings/tasks/ldap.py:24
#: settings/tasks/ldap.py:29
msgid "Periodic import ldap user"
msgstr "LDAP ユーザーを定期的にインポートする"
#: settings/tasks/ldap.py:45
#: settings/tasks/ldap.py:66
msgid "Registration periodic import ldap user task"
msgstr "登録サイクルLDAPユーザータスクのインポート"
#: settings/utils/ldap.py:491
#: settings/templates/ldap/_msg_import_ldap_user.html:2
msgid "Sync task Finish"
msgstr "同期タスクが完了しました"
#: settings/templates/ldap/_msg_import_ldap_user.html:3
msgid "Synced Organization"
msgstr "組織が同期されました"
#: settings/templates/ldap/_msg_import_ldap_user.html:9
msgid "Synced User"
msgstr "同期されたユーザー"
#: settings/templates/ldap/_msg_import_ldap_user.html:26
#: terminal/models/session/session.py:45
msgid "Date end"
msgstr "終了日"
#: settings/utils/ldap.py:494
msgid "ldap:// or ldaps:// protocol is used."
msgstr "ldap:// または ldaps:// プロトコルが使用されます。"
#: settings/utils/ldap.py:502
#: settings/utils/ldap.py:505
msgid "Host or port is disconnected: {}"
msgstr "ホストまたはポートが切断されました: {}"
#: settings/utils/ldap.py:504
#: settings/utils/ldap.py:507
msgid "The port is not the port of the LDAP service: {}"
msgstr "ポートはLDAPサービスのポートではありません: {}"
#: settings/utils/ldap.py:506
#: settings/utils/ldap.py:509
msgid "Please add certificate: {}"
msgstr "証明書を追加してください: {}"
#: settings/utils/ldap.py:510 settings/utils/ldap.py:537
#: settings/utils/ldap.py:567 settings/utils/ldap.py:595
#: settings/utils/ldap.py:513 settings/utils/ldap.py:540
#: settings/utils/ldap.py:570 settings/utils/ldap.py:598
msgid "Unknown error: {}"
msgstr "不明なエラー: {}"
#: settings/utils/ldap.py:524
#: settings/utils/ldap.py:527
msgid "Bind DN or Password incorrect"
msgstr "DNまたはパスワードのバインドが正しくありません"
#: settings/utils/ldap.py:531
#: settings/utils/ldap.py:534
msgid "Please enter Bind DN: {}"
msgstr "バインドDN: {} を入力してください"
#: settings/utils/ldap.py:533
#: settings/utils/ldap.py:536
msgid "Please enter Password: {}"
msgstr "パスワードを入力してください: {}"
#: settings/utils/ldap.py:535
#: settings/utils/ldap.py:538
msgid "Please enter correct Bind DN and Password: {}"
msgstr "正しいバインドDNとパスワードを入力してください: {}"
#: settings/utils/ldap.py:553
#: settings/utils/ldap.py:556
msgid "Invalid User OU or User search filter: {}"
msgstr "無効なユーザー OU またはユーザー検索フィルター: {}"
#: settings/utils/ldap.py:584
#: settings/utils/ldap.py:587
msgid "LDAP User attr map not include: {}"
msgstr "LDAP ユーザーattrマップは含まれません: {}"
#: settings/utils/ldap.py:591
#: settings/utils/ldap.py:594
msgid "LDAP User attr map is not dict"
msgstr "LDAPユーザーattrマップはdictではありません"
#: settings/utils/ldap.py:610
#: settings/utils/ldap.py:613
msgid "LDAP authentication is not enabled"
msgstr "LDAP 認証が有効になっていない"
#: settings/utils/ldap.py:628
#: settings/utils/ldap.py:631
msgid "Error (Invalid LDAP server): {}"
msgstr "エラー (LDAPサーバーが無効): {}"
#: settings/utils/ldap.py:630
#: settings/utils/ldap.py:633
msgid "Error (Invalid Bind DN): {}"
msgstr "エラー (DNのバインドが無効): {}"
#: settings/utils/ldap.py:632
#: settings/utils/ldap.py:635
msgid "Error (Invalid LDAP User attr map): {}"
msgstr "エラー (LDAPユーザーattrマップが無効): {}"
#: settings/utils/ldap.py:634
#: settings/utils/ldap.py:637
msgid "Error (Invalid User OU or User search filter): {}"
msgstr "エラー (ユーザーOUまたはユーザー検索フィルターが無効): {}"
#: settings/utils/ldap.py:636
#: settings/utils/ldap.py:639
msgid "Error (Not enabled LDAP authentication): {}"
msgstr "エラー (LDAP認証が有効化されていません): {}"
#: settings/utils/ldap.py:638
#: settings/utils/ldap.py:641
msgid "Error (Unknown): {}"
msgstr "エラー (不明): {}"
#: settings/utils/ldap.py:641
#: settings/utils/ldap.py:644
msgid "Succeed: Match {} s user"
msgstr "成功: {} 人のユーザーに一致"
#: settings/utils/ldap.py:652
#: settings/utils/ldap.py:655
msgid "Please test the connection first"
msgstr "まず接続をテストしてください"
#: settings/utils/ldap.py:674
#: settings/utils/ldap.py:677
msgid "Authentication failed (configuration incorrect): {}"
msgstr "認証に失敗しました (設定が正しくありません): {}"
#: settings/utils/ldap.py:678
#: settings/utils/ldap.py:681
msgid "Authentication failed (username or password incorrect): {}"
msgstr "認証に失敗しました (ユーザー名またはパスワードが正しくありません): {}"
#: settings/utils/ldap.py:680
#: settings/utils/ldap.py:683
msgid "Authentication failed (Unknown): {}"
msgstr "認証に失敗しました (不明): {}"
#: settings/utils/ldap.py:683
#: settings/utils/ldap.py:686
msgid "Authentication success: {}"
msgstr "認証成功: {}"
@ -6803,10 +6824,6 @@ msgstr "ログイン元"
msgid "Replay"
msgstr "リプレイ"
#: terminal/models/session/session.py:45
msgid "Date end"
msgstr "終了日"
#: terminal/models/session/session.py:47 terminal/serializers/session.py:65
msgid "Command amount"
msgstr "コマンド量"
@ -8315,7 +8332,7 @@ msgstr "OTP無効化成功、ログインページを返す"
msgid "Password invalid"
msgstr "パスワード無効"
#: users/views/profile/reset.py:64
#: users/views/profile/reset.py:65
msgid ""
"Non-local users can log in only from third-party platforms and cannot change "
"their passwords: {}"
@ -8492,7 +8509,7 @@ msgstr "そして"
msgid "Or"
msgstr "または"
#: xpack/plugins/cloud/manager.py:56
#: xpack/plugins/cloud/manager.py:57
msgid "Account unavailable"
msgstr "利用できないアカウント"
@ -9042,6 +9059,15 @@ msgstr "エンタープライズプロフェッショナル版"
msgid "Ultimate edition"
msgstr "エンタープライズ・フラッグシップ・エディション"
#~ msgid "SMTP port"
#~ msgstr "SMTPポート"
#~ msgid "SMTP account"
#~ msgstr "SMTPアカウント"
#~ msgid "SMTP password"
#~ msgstr "SMTPパスワード"
#~ msgid "Password can not contains `{{` or `}}`"
#~ msgstr "パスワードには `{` または `}` 文字を含めることはできません"

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:44d560db28dc9dd1a450f7e715b6de7a18ba44caece18f4e7da40c1659eefc48
size 139920
oid sha256:933315b682ee1387f7433b5a870d8597c07634f4fede4c56a42b4cab540e4208
size 140012

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-03 11:23+0800\n"
"POT-Creation-Date: 2024-01-11 18:58+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"
@ -28,8 +28,9 @@ msgstr "参数 'action' 必须是 [{}]"
#: authentication/confirm/password.py:26 authentication/forms.py:32
#: authentication/templates/authentication/login.html:330
#: settings/serializers/auth/ldap.py:25 settings/serializers/auth/ldap.py:47
#: terminal/serializers/storage.py:123 terminal/serializers/storage.py:142
#: users/forms/profile.py:22 users/serializers/user.py:104
#: settings/serializers/msg.py:35 terminal/serializers/storage.py:123
#: terminal/serializers/storage.py:142 users/forms/profile.py:22
#: users/serializers/user.py:104
#: users/templates/users/_msg_user_created.html:13
#: users/templates/users/user_password_verify.html:18
#: xpack/plugins/cloud/serializers/account_attrs.py:28
@ -199,10 +200,10 @@ msgstr "仅创建"
#: authentication/serializers/password_mfa.py:16
#: authentication/serializers/password_mfa.py:24
#: notifications/backends/__init__.py:10 settings/serializers/msg.py:22
#: settings/serializers/msg.py:57 users/forms/profile.py:102
#: settings/serializers/msg.py:64 users/forms/profile.py:102
#: users/forms/profile.py:109 users/models/user.py:802
#: users/templates/users/forgot_password.html:117
#: users/views/profile/reset.py:92
#: users/views/profile/reset.py:93
msgid "Email"
msgstr "邮箱"
@ -286,11 +287,11 @@ msgstr "来源 ID"
#: accounts/serializers/automations/change_secret.py:107
#: 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
#: assets/serializers/asset/common.py:128 assets/serializers/gateway.py:28
#: audits/models.py:59 authentication/api/connection_token.py:405
#: ops/models/base.py:18 perms/models/asset_permission.py:75
#: perms/serializers/permission.py:41 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:33
#: perms/serializers/permission.py:41 settings/serializers/msg.py:33
#: terminal/backends/command/models.py:18 terminal/models/session/session.py:33
#: terminal/templates/terminal/_msg_command_warning.html:8
#: terminal/templates/terminal/_msg_session_sharing.html:8
#: tickets/models/ticket/command_confirm.py:13 xpack/plugins/cloud/models.py:89
@ -360,8 +361,9 @@ msgstr "账号备份计划"
#: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:235
#: ops/templates/ops/celery_task_log.html:75
#: perms/models/asset_permission.py:78 terminal/models/applet/host.py:141
#: terminal/models/session/session.py:44
#: perms/models/asset_permission.py:78
#: settings/templates/ldap/_msg_import_ldap_user.html:25
#: terminal/models/applet/host.py:141 terminal/models/session/session.py:44
#: tickets/models/ticket/apply_application.py:30
#: tickets/models/ticket/apply_asset.py:19
msgid "Date start"
@ -370,6 +372,7 @@ msgstr "开始日期"
#: accounts/models/automations/backup_account.py:122
#: authentication/templates/authentication/_msg_oauth_bind.html:11
#: notifications/notifications.py:186
#: settings/templates/ldap/_msg_import_ldap_user.html:23
msgid "Time"
msgstr "时间"
@ -445,6 +448,7 @@ msgstr "SSH 密钥推送方式"
#: accounts/models/automations/gather_account.py:58
#: accounts/serializers/account/backup.py:41
#: accounts/serializers/automations/change_secret.py:56
#: settings/serializers/auth/ldap.py:81
msgid "Recipient"
msgstr "收件人"
@ -490,6 +494,7 @@ msgstr "状态"
#: authentication/templates/authentication/passkey.html:173
#: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:20
#: settings/templates/ldap/_msg_import_ldap_user.html:16
msgid "Error"
msgstr "错误"
@ -592,8 +597,8 @@ msgstr "密码规则"
#: assets/models/asset/common.py:159 assets/models/cmd_filter.py:21
#: assets/models/domain.py:19 assets/models/group.py:17
#: assets/models/label.py:18 assets/models/platform.py:16
#: assets/models/platform.py:95 assets/serializers/asset/common.py:146
#: assets/serializers/platform.py:118 assets/serializers/platform.py:235
#: assets/models/platform.py:95 assets/serializers/asset/common.py:149
#: assets/serializers/platform.py:118 assets/serializers/platform.py:228
#: authentication/backends/passkey/models.py:10
#: authentication/serializers/connect_token_secret.py:113
#: authentication/serializers/connect_token_secret.py:168 labels/models.py:11
@ -601,7 +606,7 @@ msgstr "密码规则"
#: ops/models/celery.py:57 ops/models/job.py:136 ops/models/playbook.py:28
#: ops/serializers/job.py:18 orgs/models.py:82
#: perms/models/asset_permission.py:61 rbac/models/role.py:29
#: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:82
#: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:89
#: terminal/models/applet/applet.py:33 terminal/models/component/endpoint.py:12
#: terminal/models/component/endpoint.py:95
#: terminal/models/component/storage.py:26 terminal/models/component/task.py:13
@ -736,8 +741,8 @@ msgstr "账号存在策略"
#: accounts/serializers/account/account.py:193 applications/models.py:11
#: assets/models/label.py:21 assets/models/platform.py:96
#: assets/serializers/asset/common.py:122 assets/serializers/cagegory.py:12
#: assets/serializers/platform.py:140 assets/serializers/platform.py:236
#: assets/serializers/asset/common.py:125 assets/serializers/cagegory.py:12
#: assets/serializers/platform.py:140 assets/serializers/platform.py:229
#: perms/serializers/user_permission.py:26 settings/models.py:35
#: tickets/models/ticket/apply_application.py:13 users/models/preference.py:12
msgid "Category"
@ -748,7 +753,7 @@ msgstr "类别"
#: acls/serializers/command_acl.py:19 applications/models.py:14
#: assets/models/_user.py:50 assets/models/automations/base.py:20
#: assets/models/cmd_filter.py:74 assets/models/platform.py:97
#: assets/serializers/asset/common.py:123 assets/serializers/platform.py:120
#: assets/serializers/asset/common.py:126 assets/serializers/platform.py:120
#: assets/serializers/platform.py:139 audits/serializers.py:53
#: audits/serializers.py:170
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:144
@ -866,7 +871,7 @@ msgid "Key password"
msgstr "密钥密码"
#: accounts/serializers/account/base.py:78
#: assets/serializers/asset/common.py:379
#: assets/serializers/asset/common.py:381
msgid "Spec info"
msgstr "特殊信息"
@ -1113,8 +1118,8 @@ msgid "Users"
msgstr "用户管理"
#: acls/models/base.py:98 assets/models/automations/base.py:17
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:378
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
#: assets/models/cmd_filter.py:38 perms/serializers/user_permission.py:75
#: rbac/tree.py:35
msgid "Accounts"
msgstr "账号管理"
@ -1415,8 +1420,8 @@ msgstr "脚本"
#: assets/const/category.py:10 assets/models/asset/host.py:8
#: settings/serializers/auth/radius.py:16 settings/serializers/auth/sms.py:71
#: settings/serializers/feature.py:49 terminal/models/component/endpoint.py:13
#: terminal/serializers/applet.py:17
#: settings/serializers/feature.py:49 settings/serializers/msg.py:31
#: terminal/models/component/endpoint.py:13 terminal/serializers/applet.py:17
#: xpack/plugins/cloud/serializers/account_attrs.py:72
msgid "Host"
msgstr "主机"
@ -1539,7 +1544,7 @@ msgid "We will consider login success when we see this prompt"
msgstr "当我们看到这个提示时,我们将认为登录成功"
#: assets/const/protocol.py:119 assets/models/asset/database.py:10
#: settings/serializers/msg.py:40
#: settings/serializers/msg.py:47
msgid "Use SSL"
msgstr "使用 SSL"
@ -1655,7 +1660,7 @@ msgstr "用户名与用户相同"
#: assets/models/_user.py:52 authentication/models/connection_token.py:41
#: authentication/serializers/connect_token_secret.py:114
#: terminal/models/applet/applet.py:42
#: settings/serializers/msg.py:29 terminal/models/applet/applet.py:42
#: terminal/models/virtualapp/virtualapp.py:24
#: terminal/serializers/session.py:19 terminal/serializers/session.py:45
#: terminal/serializers/storage.py:71
@ -1708,12 +1713,12 @@ msgstr "云服务"
#: assets/models/asset/common.py:94 assets/models/platform.py:17
#: settings/serializers/auth/radius.py:17 settings/serializers/auth/sms.py:72
#: terminal/serializers/storage.py:133
#: settings/serializers/msg.py:32 terminal/serializers/storage.py:133
#: xpack/plugins/cloud/serializers/account_attrs.py:73
msgid "Port"
msgstr "端口"
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:147
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:150
msgid "Address"
msgstr "地址"
@ -1737,7 +1742,7 @@ msgstr "网域"
msgid "Node"
msgstr "节点"
#: assets/models/asset/common.py:167 assets/serializers/asset/common.py:380
#: assets/models/asset/common.py:167 assets/serializers/asset/common.py:382
#: assets/serializers/asset/host.py:11
msgid "Gathered info"
msgstr "收集资产硬件信息"
@ -1886,7 +1891,7 @@ msgstr "值"
#: assets/serializers/platform.py:119
#: authentication/serializers/connect_token_secret.py:124
#: common/serializers/common.py:85 labels/models.py:17 labels/models.py:33
#: labels/serializers.py:45 settings/serializers/msg.py:83
#: labels/serializers.py:45 settings/serializers/msg.py:90
msgid "Label"
msgstr "标签"
@ -2055,7 +2060,7 @@ msgid ""
"type"
msgstr "资产中批量更新平台,不符合平台类型跳过的资产"
#: assets/serializers/asset/common.py:124 assets/serializers/platform.py:141
#: assets/serializers/asset/common.py:127 assets/serializers/platform.py:141
#: authentication/serializers/connect_token_secret.py:30
#: authentication/serializers/connect_token_secret.py:75
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:42
@ -2064,29 +2069,29 @@ msgstr "资产中批量更新平台,不符合平台类型跳过的资产"
msgid "Protocols"
msgstr "协议组"
#: assets/serializers/asset/common.py:126
#: assets/serializers/asset/common.py:148
#: assets/serializers/asset/common.py:129
#: assets/serializers/asset/common.py:151
msgid "Node path"
msgstr "节点路径"
#: assets/serializers/asset/common.py:145
#: assets/serializers/asset/common.py:381
#: assets/serializers/asset/common.py:148
#: assets/serializers/asset/common.py:383
msgid "Auto info"
msgstr "自动化信息"
#: assets/serializers/asset/common.py:239
#: assets/serializers/asset/common.py:242
msgid "Platform not exist"
msgstr "平台不存在"
#: assets/serializers/asset/common.py:275
#: assets/serializers/asset/common.py:278
msgid "port out of range (0-65535)"
msgstr "端口超出范围 (0-65535)"
#: assets/serializers/asset/common.py:282
#: assets/serializers/asset/common.py:285
msgid "Protocol is required: {}"
msgstr "协议是必填的: {}"
#: assets/serializers/asset/common.py:310
#: assets/serializers/asset/common.py:313
msgid "Invalid data"
msgstr "无效的数据"
@ -2236,7 +2241,7 @@ msgstr "默认网域"
msgid "type is required"
msgstr "类型 该字段是必填项。"
#: assets/serializers/platform.py:211
#: assets/serializers/platform.py:204
msgid "Protocols is required"
msgstr "协议是必填的"
@ -2589,8 +2594,8 @@ msgstr "认证令牌"
#: audits/signal_handlers/login_log.py:37 authentication/notifications.py:73
#: authentication/views/login.py:77 notifications/backends/__init__.py:11
#: settings/serializers/auth/wecom.py:10 users/models/user.py:749
#: users/models/user.py:855
#: settings/notifications.py:68 settings/serializers/auth/wecom.py:10
#: users/models/user.py:749 users/models/user.py:855
msgid "WeCom"
msgstr "企业微信"
@ -2675,22 +2680,22 @@ msgstr "ACL 动作是复核"
msgid "Current user not support mfa type: {}"
msgstr "当前用户不支持 MFA 类型: {}"
#: authentication/api/password.py:34 terminal/api/session/session.py:305
#: users/views/profile/reset.py:61
#: authentication/api/password.py:33 terminal/api/session/session.py:305
#: users/views/profile/reset.py:62
msgid "User does not exist: {}"
msgstr "用户不存在: {}"
#: authentication/api/password.py:34 users/views/profile/reset.py:163
#: authentication/api/password.py:33 users/views/profile/reset.py:163
msgid "No user matched"
msgstr "没有匹配到用户"
#: authentication/api/password.py:38
#: authentication/api/password.py:37
msgid ""
"The user is from {}, please go to the corresponding system to change the "
"password"
msgstr "用户来自 {} 请去相应系统修改密码"
#: authentication/api/password.py:67
#: authentication/api/password.py:65
#: authentication/templates/authentication/login.html:361
#: users/templates/users/forgot_password.html:27
#: users/templates/users/forgot_password.html:28
@ -3001,7 +3006,7 @@ msgstr "短信验证码校验失败"
#: authentication/serializers/password_mfa.py:24
#: settings/serializers/auth/sms.py:32 users/forms/profile.py:104
#: users/forms/profile.py:109 users/templates/users/forgot_password.html:112
#: users/views/profile/reset.py:98
#: users/views/profile/reset.py:99
msgid "SMS"
msgstr "短信"
@ -3017,7 +3022,7 @@ msgstr "设置手机号码启用"
msgid "Clear phone number to disable"
msgstr "清空手机号码禁用"
#: authentication/middleware.py:94 settings/utils/ldap.py:676
#: authentication/middleware.py:94 settings/utils/ldap.py:679
msgid "Authentication failed (before login check failed): {}"
msgstr "认证失败 (登录前检查失败): {}"
@ -3139,7 +3144,7 @@ msgstr "已校验"
msgid "Different city login reminder"
msgstr "异地登录提醒"
#: authentication/notifications.py:52
#: authentication/notifications.py:52 settings/notifications.py:47
msgid "binding reminder"
msgstr "绑定提醒"
@ -3277,7 +3282,7 @@ msgstr "代码错误"
#: authentication/templates/authentication/_msg_reset_password_code.html:9
#: authentication/templates/authentication/_msg_rest_password_success.html:2
#: authentication/templates/authentication/_msg_rest_public_key_success.html:2
#: jumpserver/conf.py:457
#: jumpserver/conf.py:460
#: perms/templates/perms/_msg_item_permissions_expire.html:3
#: perms/templates/perms/_msg_permed_items_expire.html:3
#: tickets/templates/tickets/approve_check_password.html:32
@ -3437,7 +3442,7 @@ msgstr "本页面未使用 HTTPS 协议,请使用 HTTPS 协议以确保您的
msgid "Do you want to retry ?"
msgstr "是否重试 "
#: authentication/utils.py:23 common/utils/ip/geoip/utils.py:24
#: authentication/utils.py:24 common/utils/ip/geoip/utils.py:24
#: xpack/plugins/cloud/const.py:32
msgid "LAN"
msgstr "局域网"
@ -3772,7 +3777,7 @@ msgstr "不支持 Elasticsearch8"
msgid "Network error, please contact system administrator"
msgstr "网络错误,请联系系统管理员"
#: common/sdk/im/slack/__init__.py:79
#: common/sdk/im/slack/__init__.py:77
msgid "Unknown error occur"
msgstr "发生未知错误"
@ -3869,15 +3874,15 @@ msgstr "标签管理"
# msgid "Labels"
# msgstr "标签管理"
#: common/tasks.py:21 common/utils/verify_code.py:16
#: common/tasks.py:31 common/utils/verify_code.py:16
msgid "Send email"
msgstr "发件邮件"
#: common/tasks.py:48
#: common/tasks.py:58
msgid "Send email attachment"
msgstr "发送邮件附件"
#: common/tasks.py:69 terminal/tasks.py:62
#: common/tasks.py:80 terminal/tasks.py:62
msgid "Upload session replay to external storage"
msgstr "上传会话录像到外部存储"
@ -3906,16 +3911,16 @@ msgstr "不能包含特殊字符"
msgid "The mobile phone number format is incorrect"
msgstr "手机号格式不正确"
#: jumpserver/conf.py:452
#: jumpserver/conf.py:454
#, python-brace-format
msgid "The verification code is: {code}"
msgstr "验证码为: {code}"
#: jumpserver/conf.py:456
#: jumpserver/conf.py:459
msgid "Create account successfully"
msgstr "创建账号成功"
#: jumpserver/conf.py:458
#: jumpserver/conf.py:461
msgid "Your account has been created successfully"
msgstr "你的账号已创建成功"
@ -4331,6 +4336,7 @@ msgid "Is finished"
msgstr "是否完成"
#: ops/serializers/job.py:66
#: settings/templates/ldap/_msg_import_ldap_user.html:27
msgid "Time cost"
msgstr "花费时间"
@ -4814,7 +4820,7 @@ msgstr "聊天 AI 没有开启"
msgid "Test success"
msgstr "测试成功"
#: settings/api/email.py:21
#: settings/api/email.py:22
msgid "Test mail sent to {}, please check"
msgstr "邮件已经发送{}, 请检查"
@ -4915,6 +4921,10 @@ msgstr "其它设置"
msgid "Chat prompt"
msgstr "聊天提示"
#: settings/notifications.py:22
msgid "Notification of Synchronized LDAP User Task Results"
msgstr "同步LDAP用户任务结果通知"
#: settings/serializers/auth/base.py:12
msgid "LDAP Auth"
msgstr "LDAP 认证"
@ -5070,7 +5080,7 @@ msgstr "连接超时时间 (秒)"
msgid "Search paged size (piece)"
msgstr "搜索分页数量 (条)"
#: settings/serializers/auth/ldap.py:81
#: settings/serializers/auth/ldap.py:84
msgid "Enable LDAP auth"
msgstr "启用 LDAP 认证"
@ -5286,7 +5296,7 @@ msgstr "验证码长度"
#: settings/serializers/auth/sms.py:27 settings/serializers/auth/sms.py:49
#: settings/serializers/auth/sms.py:57 settings/serializers/auth/sms.py:66
#: settings/serializers/auth/sms.py:77 settings/serializers/msg.py:76
#: settings/serializers/auth/sms.py:77 settings/serializers/msg.py:83
msgid "Signature"
msgstr "签名"
@ -5568,90 +5578,84 @@ msgstr "虚拟应用"
msgid "Enable virtual app"
msgstr "启用虚拟应用"
#: settings/serializers/msg.py:24
msgid "SMTP host"
#: settings/serializers/msg.py:25
#, fuzzy
#| msgid "SMTP host"
msgid "SMTP"
msgstr "SMTP 主机"
#: settings/serializers/msg.py:25
msgid "SMTP port"
msgstr "SMTP 端口"
#: settings/serializers/msg.py:26
msgid "SMTP account"
msgstr "SMTP 账号"
msgid "EXCHANGE"
msgstr ""
#: settings/serializers/msg.py:28
msgid "SMTP password"
msgstr "SMTP 密码"
#: settings/serializers/msg.py:29
#: settings/serializers/msg.py:36
msgid "Tips: Some provider use token except password"
msgstr "提示:一些邮件提供商需要输入的是授权码"
#: settings/serializers/msg.py:32
#: settings/serializers/msg.py:39
msgid "Send user"
msgstr "发件人"
#: settings/serializers/msg.py:33
#: settings/serializers/msg.py:40
msgid "Tips: Send mail account, default SMTP account as the send account"
msgstr "提示:发送邮件账号,默认使用 SMTP 账号作为发送账号"
#: settings/serializers/msg.py:36
#: settings/serializers/msg.py:43
msgid "Test recipient"
msgstr "测试收件人"
#: settings/serializers/msg.py:37
#: settings/serializers/msg.py:44
msgid "Tips: Used only as a test mail recipient"
msgstr "提示:仅用来作为测试邮件收件人"
#: settings/serializers/msg.py:41
#: settings/serializers/msg.py:48
msgid "If SMTP port is 465, may be select"
msgstr "如果SMTP端口是465通常需要启用 SSL"
#: settings/serializers/msg.py:44
#: settings/serializers/msg.py:51
msgid "Use TLS"
msgstr "使用 TLS"
#: settings/serializers/msg.py:45
#: settings/serializers/msg.py:52
msgid "If SMTP port is 587, may be select"
msgstr "如果SMTP端口是587通常需要启用 TLS"
#: settings/serializers/msg.py:48
#: settings/serializers/msg.py:55
msgid "Subject prefix"
msgstr "主题前缀"
#: settings/serializers/msg.py:51
#: settings/serializers/msg.py:58
msgid "Email suffix"
msgstr "邮件后缀"
#: settings/serializers/msg.py:52
#: settings/serializers/msg.py:59
msgid ""
"This is used by default if no email is returned during SSO authentication"
msgstr "SSO认证时如果没有返回邮件地址将使用该后缀"
#: settings/serializers/msg.py:61
#: settings/serializers/msg.py:68
msgid "Create user email subject"
msgstr "邮件主题"
#: settings/serializers/msg.py:62
#: settings/serializers/msg.py:69
msgid ""
"Tips: When creating a user, send the subject of the email (eg:Create account "
"successfully)"
msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)"
#: settings/serializers/msg.py:66
#: settings/serializers/msg.py:73
msgid "Create user honorific"
msgstr "邮件问候语"
#: settings/serializers/msg.py:67
#: settings/serializers/msg.py:74
msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)"
msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 你好)"
#: settings/serializers/msg.py:71
#: settings/serializers/msg.py:78
msgid "Create user email content"
msgstr "邮件的内容"
#: settings/serializers/msg.py:73
#: settings/serializers/msg.py:80
#, python-brace-format
msgid ""
"Tips: When creating a user, send the content of the email, support "
@ -5659,7 +5663,7 @@ msgid ""
msgstr ""
"提示: 创建用户时,发送设置密码邮件的内容, 支持 {username} {name} {email} 标签"
#: settings/serializers/msg.py:77
#: settings/serializers/msg.py:84
msgid "Tips: Email signature (eg:jumpserver)"
msgstr "邮件署名 (如:jumpserver)"
@ -6001,112 +6005,129 @@ msgstr "启用 Razor 服务"
msgid "Enable SSH Client"
msgstr "启用 SSH Client"
#: settings/tasks/ldap.py:24
#: settings/tasks/ldap.py:29
msgid "Periodic import ldap user"
msgstr "周期导入 LDAP 用户"
#: settings/tasks/ldap.py:45
#: settings/tasks/ldap.py:66
msgid "Registration periodic import ldap user task"
msgstr "注册周期导入 LDAP 用户 任务"
#: settings/utils/ldap.py:491
#: settings/templates/ldap/_msg_import_ldap_user.html:2
msgid "Sync task Finish"
msgstr "同步任务完成"
#: settings/templates/ldap/_msg_import_ldap_user.html:3
msgid "Synced Organization"
msgstr "已同步组织"
#: settings/templates/ldap/_msg_import_ldap_user.html:9
msgid "Synced User"
msgstr "已同步用户"
#: settings/templates/ldap/_msg_import_ldap_user.html:26
#: terminal/models/session/session.py:45
msgid "Date end"
msgstr "结束日期"
#: settings/utils/ldap.py:494
msgid "ldap:// or ldaps:// protocol is used."
msgstr "使用 ldap:// 或 ldaps:// 协议"
#: settings/utils/ldap.py:502
#: settings/utils/ldap.py:505
msgid "Host or port is disconnected: {}"
msgstr "主机或端口不可连接: {}"
#: settings/utils/ldap.py:504
#: settings/utils/ldap.py:507
msgid "The port is not the port of the LDAP service: {}"
msgstr "端口不是LDAP服务端口: {}"
#: settings/utils/ldap.py:506
#: settings/utils/ldap.py:509
msgid "Please add certificate: {}"
msgstr "请添加证书"
#: settings/utils/ldap.py:510 settings/utils/ldap.py:537
#: settings/utils/ldap.py:567 settings/utils/ldap.py:595
#: settings/utils/ldap.py:513 settings/utils/ldap.py:540
#: settings/utils/ldap.py:570 settings/utils/ldap.py:598
msgid "Unknown error: {}"
msgstr "未知错误: {}"
#: settings/utils/ldap.py:524
#: settings/utils/ldap.py:527
msgid "Bind DN or Password incorrect"
msgstr "绑定DN或密码错误"
#: settings/utils/ldap.py:531
#: settings/utils/ldap.py:534
msgid "Please enter Bind DN: {}"
msgstr "请输入绑定DN: {}"
#: settings/utils/ldap.py:533
#: settings/utils/ldap.py:536
msgid "Please enter Password: {}"
msgstr "请输入密码: {}"
#: settings/utils/ldap.py:535
#: settings/utils/ldap.py:538
msgid "Please enter correct Bind DN and Password: {}"
msgstr "请输入正确的绑定DN和密码: {}"
#: settings/utils/ldap.py:553
#: settings/utils/ldap.py:556
msgid "Invalid User OU or User search filter: {}"
msgstr "不合法的用户OU或用户过滤器: {}"
#: settings/utils/ldap.py:584
#: settings/utils/ldap.py:587
msgid "LDAP User attr map not include: {}"
msgstr "LDAP属性映射没有包含: {}"
#: settings/utils/ldap.py:591
#: settings/utils/ldap.py:594
msgid "LDAP User attr map is not dict"
msgstr "LDAP属性映射不合法"
#: settings/utils/ldap.py:610
#: settings/utils/ldap.py:613
msgid "LDAP authentication is not enabled"
msgstr "LDAP认证没有启用"
#: settings/utils/ldap.py:628
#: settings/utils/ldap.py:631
msgid "Error (Invalid LDAP server): {}"
msgstr "错误 (不合法的LDAP服务器地址): {}"
#: settings/utils/ldap.py:630
#: settings/utils/ldap.py:633
msgid "Error (Invalid Bind DN): {}"
msgstr "错误 (不合法的绑定DN): {}"
#: settings/utils/ldap.py:632
#: settings/utils/ldap.py:635
msgid "Error (Invalid LDAP User attr map): {}"
msgstr "错误 (不合法的LDAP属性映射): {}"
#: settings/utils/ldap.py:634
#: settings/utils/ldap.py:637
msgid "Error (Invalid User OU or User search filter): {}"
msgstr "错误 (不合法的用户OU或用户过滤器): {}"
#: settings/utils/ldap.py:636
#: settings/utils/ldap.py:639
msgid "Error (Not enabled LDAP authentication): {}"
msgstr "错误 (没有启用LDAP认证): {}"
#: settings/utils/ldap.py:638
#: settings/utils/ldap.py:641
msgid "Error (Unknown): {}"
msgstr "错误 (未知): {}"
#: settings/utils/ldap.py:641
#: settings/utils/ldap.py:644
msgid "Succeed: Match {} s user"
msgstr "成功匹配 {} 个用户"
#: settings/utils/ldap.py:652
#: settings/utils/ldap.py:655
msgid "Please test the connection first"
msgstr "请先测试连接"
#: settings/utils/ldap.py:674
#: settings/utils/ldap.py:677
msgid "Authentication failed (configuration incorrect): {}"
msgstr "认证失败 (配置错误): {}"
#: settings/utils/ldap.py:678
#: settings/utils/ldap.py:681
msgid "Authentication failed (username or password incorrect): {}"
msgstr "认证失败 (用户名或密码不正确): {}"
#: settings/utils/ldap.py:680
#: settings/utils/ldap.py:683
msgid "Authentication failed (Unknown): {}"
msgstr "认证失败: (未知): {}"
#: settings/utils/ldap.py:683
#: settings/utils/ldap.py:686
msgid "Authentication success: {}"
msgstr "认证成功: {}"
@ -6709,10 +6730,6 @@ msgstr "登录来源"
msgid "Replay"
msgstr "回放"
#: terminal/models/session/session.py:45
msgid "Date end"
msgstr "结束日期"
#: terminal/models/session/session.py:47 terminal/serializers/session.py:65
msgid "Command amount"
msgstr "命令数量"
@ -8193,7 +8210,7 @@ msgstr "MFA(OTP) 禁用成功,返回登录页面"
msgid "Password invalid"
msgstr "用户名或密码无效"
#: users/views/profile/reset.py:64
#: users/views/profile/reset.py:65
msgid ""
"Non-local users can log in only from third-party platforms and cannot change "
"their passwords: {}"
@ -8368,7 +8385,7 @@ msgstr "与"
msgid "Or"
msgstr "或"
#: xpack/plugins/cloud/manager.py:56
#: xpack/plugins/cloud/manager.py:57
msgid "Account unavailable"
msgstr "账号无效"
@ -8915,6 +8932,15 @@ msgstr "企业专业版"
msgid "Ultimate edition"
msgstr "企业旗舰版"
#~ msgid "SMTP port"
#~ msgstr "SMTP 端口"
#~ msgid "SMTP account"
#~ msgstr "SMTP 账号"
#~ msgid "SMTP password"
#~ msgstr "SMTP 密码"
#~ msgid "Password can not contains `{{` or `}}`"
#~ msgstr "密码不能包含 `{{` 或 `}}` 字符"

View File

@ -137,7 +137,7 @@ class LDAPUserImportAPI(APIView):
return Response({'msg': _('Get ldap users is None')}, status=400)
orgs = self.get_orgs()
errors = LDAPImportUtil().perform_import(users, orgs)
new_users, errors = LDAPImportUtil().perform_import(users, orgs)
if errors:
return Response({'errors': errors}, status=400)

View File

@ -0,0 +1,35 @@
from django.template.loader import render_to_string
from django.utils.translation import gettext as _
from common.utils import get_logger
from common.utils.timezone import local_now_display
from notifications.notifications import UserMessage
logger = get_logger(__file__)
class LDAPImportMessage(UserMessage):
def __init__(self, user, extra_kwargs):
super().__init__(user)
self.orgs = extra_kwargs.pop('orgs', [])
self.end_time = extra_kwargs.pop('end_time', '')
self.start_time = extra_kwargs.pop('start_time', '')
self.time_start_display = extra_kwargs.pop('time_start_display', '')
self.new_users = extra_kwargs.pop('new_users', [])
self.errors = extra_kwargs.pop('errors', [])
def get_html_msg(self) -> dict:
subject = _('Notification of Synchronized LDAP User Task Results')
context = {
'orgs': self.orgs,
'start_time': self.time_start_display,
'end_time': local_now_display(),
'cost_time': self.end_time - self.start_time,
'users': self.new_users,
'errors': self.errors
}
message = render_to_string('ldap/_msg_import_ldap_user.html', context)
return {
'subject': subject,
'message': message
}

View File

@ -77,6 +77,9 @@ class LDAPSettingSerializer(serializers.Serializer):
required=False, label=_('Connect timeout (s)'),
)
AUTH_LDAP_SEARCH_PAGED_SIZE = serializers.IntegerField(required=False, label=_('Search paged size (piece)'))
AUTH_LDAP_SYNC_RECEIVERS = serializers.ListField(
required=False, label=_('Recipient'), max_length=36
)
AUTH_LDAP = serializers.BooleanField(required=False, label=_('Enable LDAP auth'))

View File

@ -1,15 +1,19 @@
# coding: utf-8
#
import time
from celery import shared_task
from django.conf import settings
from django.utils.translation import gettext_lazy as _
from common.utils import get_logger
from common.utils.timezone import local_now_display
from ops.celery.decorator import after_app_ready_start
from ops.celery.utils import (
create_or_update_celery_periodic_tasks, disable_celery_periodic_task
)
from orgs.models import Organization
from settings.notifications import LDAPImportMessage
from users.models import User
from ..utils import LDAPSyncUtil, LDAPServerUtil, LDAPImportUtil
__all__ = ['sync_ldap_user', 'import_ldap_user_periodic', 'import_ldap_user']
@ -23,6 +27,8 @@ def sync_ldap_user():
@shared_task(verbose_name=_('Periodic import ldap user'))
def import_ldap_user():
start_time = time.time()
time_start_display = local_now_display()
logger.info("Start import ldap user task")
util_server = LDAPServerUtil()
util_import = LDAPImportUtil()
@ -35,11 +41,25 @@ def import_ldap_user():
org_ids = [Organization.DEFAULT_ID]
default_org = Organization.default()
orgs = list(set([Organization.get_instance(org_id, default=default_org) for org_id in org_ids]))
errors = util_import.perform_import(users, orgs)
new_users, errors = util_import.perform_import(users, orgs)
if errors:
logger.error("Imported LDAP users errors: {}".format(errors))
else:
logger.info('Imported {} users successfully'.format(len(users)))
if settings.AUTH_LDAP_SYNC_RECEIVERS:
user_ids = settings.AUTH_LDAP_SYNC_RECEIVERS
recipient_list = User.objects.filter(id__in=list(user_ids))
end_time = time.time()
extra_kwargs = {
'orgs': orgs,
'end_time': end_time,
'start_time': start_time,
'time_start_display': time_start_display,
'new_users': new_users,
'errors': errors,
}
for user in recipient_list:
LDAPImportMessage(user, extra_kwargs).publish()
@shared_task(verbose_name=_('Registration periodic import ldap user task'))

View File

@ -0,0 +1,30 @@
{% load i18n %}
<p>{% trans "Sync task Finish" %}</p>
<b>{% trans 'Time' %}:</b>
<ul>
<li>{% trans 'Date start' %}: {{ start_time }}</li>
<li>{% trans 'Date end' %}: {{ end_time }}</li>
<li>{% trans 'Time cost' %}: {{ cost_time| floatformat:0 }}s</li>
</ul>
<b>{% trans "Synced Organization" %}:</b>
<ul>
{% for org in orgs %}
<li>{{ org }}</li>
{% endfor %}
</ul>
<b>{% trans "Synced User" %}:</b>
<ul>
{% for user in users %}
<li>{{ user }}</li>
{% endfor %}
</ul>
{% if errors %}
<b>{% trans 'Error' %}:</b>
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}

View File

@ -400,11 +400,14 @@ class LDAPImportUtil(object):
logger.info('Start perform import ldap users, count: {}'.format(len(users)))
errors = []
objs = []
new_users = []
group_users_mapper = defaultdict(set)
for user in users:
groups = user.pop('groups', [])
try:
obj, created = self.update_or_create(user)
if created:
new_users.append(obj)
objs.append(obj)
except Exception as e:
errors.append({user['username']: str(e)})
@ -421,7 +424,7 @@ class LDAPImportUtil(object):
for org in orgs:
self.bind_org(org, objs, group_users_mapper)
logger.info('End perform import ldap users')
return errors
return new_users, errors
def exit_user_group(self, user_groups_mapper):
# 通过对比查询本次导入用户需要移除的用户组