mirror of https://github.com/jumpserver/jumpserver
perf: 优化OIDC用户未激活时,会循环跳转登录页面
parent
3d27986c96
commit
3ac35eec68
|
@ -166,7 +166,7 @@ class OIDCAuthCallbackView(View):
|
||||||
code_verifier = request.session.get('oidc_auth_code_verifier', None)
|
code_verifier = request.session.get('oidc_auth_code_verifier', None)
|
||||||
logger.debug(log_prompt.format('Process authenticate'))
|
logger.debug(log_prompt.format('Process authenticate'))
|
||||||
user = auth.authenticate(nonce=nonce, request=request, code_verifier=code_verifier)
|
user = auth.authenticate(nonce=nonce, request=request, code_verifier=code_verifier)
|
||||||
if user and user.is_valid:
|
if user:
|
||||||
logger.debug(log_prompt.format('Login: {}'.format(user)))
|
logger.debug(log_prompt.format('Login: {}'.format(user)))
|
||||||
auth.login(self.request, user)
|
auth.login(self.request, user)
|
||||||
# Stores an expiration timestamp in the user's session. This value will be used if
|
# Stores an expiration timestamp in the user's session. This value will be used if
|
||||||
|
|
|
@ -92,7 +92,7 @@ class ThirdPartyLoginMiddleware(mixins.AuthMixin):
|
||||||
'title': _('Authentication failed'),
|
'title': _('Authentication failed'),
|
||||||
'message': _('Authentication failed (before login check failed): {}').format(e),
|
'message': _('Authentication failed (before login check failed): {}').format(e),
|
||||||
'interval': 10,
|
'interval': 10,
|
||||||
'redirect_url': reverse('authentication:login'),
|
'redirect_url': reverse('authentication:login') + '?admin=0',
|
||||||
'auto_redirect': True,
|
'auto_redirect': True,
|
||||||
}
|
}
|
||||||
response = render(request, 'authentication/auth_fail_flash_message_standalone.html', context)
|
response = render(request, 'authentication/auth_fail_flash_message_standalone.html', context)
|
||||||
|
|
|
@ -76,6 +76,12 @@ def authenticate(request=None, **credentials):
|
||||||
if user is None:
|
if user is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if not user.is_valid:
|
||||||
|
temp_user = user
|
||||||
|
temp_user.backend = backend_path
|
||||||
|
request.error_message = _('User is not valid')
|
||||||
|
return temp_user
|
||||||
|
|
||||||
# 检查用户是否允许认证
|
# 检查用户是否允许认证
|
||||||
if not backend.user_allow_authenticate(user):
|
if not backend.user_allow_authenticate(user):
|
||||||
temp_user = user
|
temp_user = user
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-10-07 17:56+0800\n"
|
"POT-Creation-Date: 2023-10-09 17:52+0800\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -244,7 +244,7 @@ msgstr "資産"
|
||||||
msgid "Su from"
|
msgid "Su from"
|
||||||
msgstr "から切り替え"
|
msgstr "から切り替え"
|
||||||
|
|
||||||
#: accounts/models/account.py:54 assets/const/protocol.py:168
|
#: accounts/models/account.py:54 assets/const/protocol.py:169
|
||||||
#: settings/serializers/auth/cas.py:20 settings/serializers/auth/feishu.py:20
|
#: settings/serializers/auth/cas.py:20 settings/serializers/auth/feishu.py:20
|
||||||
#: terminal/models/applet/applet.py:35
|
#: terminal/models/applet/applet.py:35
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
|
@ -500,7 +500,7 @@ msgstr "アカウントの確認"
|
||||||
msgid "Secret type"
|
msgid "Secret type"
|
||||||
msgstr "鍵の種類"
|
msgstr "鍵の種類"
|
||||||
|
|
||||||
#: accounts/models/base.py:39 accounts/models/mixins/vault.py:48
|
#: accounts/models/base.py:39 accounts/models/mixins/vault.py:49
|
||||||
#: accounts/serializers/account/base.py:19
|
#: accounts/serializers/account/base.py:19
|
||||||
#: authentication/models/temp_token.py:10
|
#: authentication/models/temp_token.py:10
|
||||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||||
|
@ -1318,7 +1318,7 @@ msgstr "無効"
|
||||||
msgid "Basic"
|
msgid "Basic"
|
||||||
msgstr "基本"
|
msgstr "基本"
|
||||||
|
|
||||||
#: assets/const/base.py:35 assets/const/protocol.py:245
|
#: assets/const/base.py:35 assets/const/protocol.py:252
|
||||||
#: assets/models/asset/web.py:13
|
#: assets/models/asset/web.py:13
|
||||||
msgid "Script"
|
msgid "Script"
|
||||||
msgstr "脚本"
|
msgstr "脚本"
|
||||||
|
@ -1386,11 +1386,11 @@ msgstr "ChatGPT"
|
||||||
msgid "Other"
|
msgid "Other"
|
||||||
msgstr "その他"
|
msgstr "その他"
|
||||||
|
|
||||||
#: assets/const/protocol.py:48
|
#: assets/const/protocol.py:49
|
||||||
msgid "SFTP root"
|
msgid "SFTP root"
|
||||||
msgstr "SFTPルート"
|
msgstr "SFTPルート"
|
||||||
|
|
||||||
#: assets/const/protocol.py:50
|
#: assets/const/protocol.py:51
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"SFTP root directory, Support variable: <br>- ${ACCOUNT} The connected "
|
"SFTP root directory, Support variable: <br>- ${ACCOUNT} The connected "
|
||||||
|
@ -1401,81 +1401,81 @@ msgstr ""
|
||||||
"ユーザー名<br>-${HOME}接続されたアカウントのホームディレクトリ<br>-${USER}"
|
"ユーザー名<br>-${HOME}接続されたアカウントのホームディレクトリ<br>-${USER}"
|
||||||
"ユーザーのユーザー名"
|
"ユーザーのユーザー名"
|
||||||
|
|
||||||
#: assets/const/protocol.py:65
|
#: assets/const/protocol.py:66
|
||||||
msgid "Console"
|
msgid "Console"
|
||||||
msgstr "Console"
|
msgstr "Console"
|
||||||
|
|
||||||
#: assets/const/protocol.py:66
|
#: assets/const/protocol.py:67
|
||||||
msgid "Connect to console session"
|
msgid "Connect to console session"
|
||||||
msgstr "コンソールセッションに接続"
|
msgstr "コンソールセッションに接続"
|
||||||
|
|
||||||
#: assets/const/protocol.py:70
|
#: assets/const/protocol.py:71
|
||||||
msgid "Any"
|
msgid "Any"
|
||||||
msgstr "任意"
|
msgstr "任意"
|
||||||
|
|
||||||
#: assets/const/protocol.py:72 settings/serializers/security.py:228
|
#: assets/const/protocol.py:73 settings/serializers/security.py:228
|
||||||
msgid "Security"
|
msgid "Security"
|
||||||
msgstr "セキュリティ"
|
msgstr "セキュリティ"
|
||||||
|
|
||||||
#: assets/const/protocol.py:73
|
#: assets/const/protocol.py:74
|
||||||
msgid "Security layer to use for the connection"
|
msgid "Security layer to use for the connection"
|
||||||
msgstr "接続に使用するセキュリティ レイヤー"
|
msgstr "接続に使用するセキュリティ レイヤー"
|
||||||
|
|
||||||
#: assets/const/protocol.py:79
|
#: assets/const/protocol.py:80
|
||||||
msgid "AD domain"
|
msgid "AD domain"
|
||||||
msgstr "AD ドメイン"
|
msgstr "AD ドメイン"
|
||||||
|
|
||||||
#: assets/const/protocol.py:94
|
#: assets/const/protocol.py:95
|
||||||
msgid "Username prompt"
|
msgid "Username prompt"
|
||||||
msgstr "ユーザー名プロンプト"
|
msgstr "ユーザー名プロンプト"
|
||||||
|
|
||||||
#: assets/const/protocol.py:95
|
#: assets/const/protocol.py:96
|
||||||
msgid "We will send username when we see this prompt"
|
msgid "We will send username when we see this prompt"
|
||||||
msgstr "このプロンプトが表示されたらユーザー名を送信します"
|
msgstr "このプロンプトが表示されたらユーザー名を送信します"
|
||||||
|
|
||||||
#: assets/const/protocol.py:100
|
#: assets/const/protocol.py:101
|
||||||
msgid "Password prompt"
|
msgid "Password prompt"
|
||||||
msgstr "パスワードプロンプト"
|
msgstr "パスワードプロンプト"
|
||||||
|
|
||||||
#: assets/const/protocol.py:101
|
#: assets/const/protocol.py:102
|
||||||
msgid "We will send password when we see this prompt"
|
msgid "We will send password when we see this prompt"
|
||||||
msgstr "このプロンプトが表示されたらパスワードを送信します"
|
msgstr "このプロンプトが表示されたらパスワードを送信します"
|
||||||
|
|
||||||
#: assets/const/protocol.py:106
|
#: assets/const/protocol.py:107
|
||||||
msgid "Success prompt"
|
msgid "Success prompt"
|
||||||
msgstr "成功プロンプト"
|
msgstr "成功プロンプト"
|
||||||
|
|
||||||
#: assets/const/protocol.py:107
|
#: assets/const/protocol.py:108
|
||||||
msgid "We will consider login success when we see this prompt"
|
msgid "We will consider login success when we see this prompt"
|
||||||
msgstr "このプロンプトが表示されたらログイン成功とみなします"
|
msgstr "このプロンプトが表示されたらログイン成功とみなします"
|
||||||
|
|
||||||
#: assets/const/protocol.py:118 assets/models/asset/database.py:10
|
#: assets/const/protocol.py:119 assets/models/asset/database.py:10
|
||||||
#: settings/serializers/msg.py:40
|
#: settings/serializers/msg.py:40
|
||||||
msgid "Use SSL"
|
msgid "Use SSL"
|
||||||
msgstr "SSLの使用"
|
msgstr "SSLの使用"
|
||||||
|
|
||||||
#: assets/const/protocol.py:153
|
#: assets/const/protocol.py:154
|
||||||
msgid "SYSDBA"
|
msgid "SYSDBA"
|
||||||
msgstr "SYSDBA"
|
msgstr "SYSDBA"
|
||||||
|
|
||||||
#: assets/const/protocol.py:154
|
#: assets/const/protocol.py:155
|
||||||
msgid "Connect as SYSDBA"
|
msgid "Connect as SYSDBA"
|
||||||
msgstr "SYSDBA として接続"
|
msgstr "SYSDBA として接続"
|
||||||
|
|
||||||
#: assets/const/protocol.py:169
|
#: assets/const/protocol.py:170
|
||||||
msgid ""
|
msgid ""
|
||||||
"SQL Server version, Different versions have different connection drivers"
|
"SQL Server version, Different versions have different connection drivers"
|
||||||
msgstr "SQL Server のバージョン。バージョンによって接続ドライバが異なります"
|
msgstr "SQL Server のバージョン。バージョンによって接続ドライバが異なります"
|
||||||
|
|
||||||
#: assets/const/protocol.py:192
|
#: assets/const/protocol.py:199
|
||||||
msgid "Auth username"
|
msgid "Auth username"
|
||||||
msgstr "ユーザー名で認証する"
|
msgstr "ユーザー名で認証する"
|
||||||
|
|
||||||
#: assets/const/protocol.py:215
|
#: assets/const/protocol.py:222
|
||||||
msgid "Safe mode"
|
msgid "Safe mode"
|
||||||
msgstr "安全モード"
|
msgstr "安全モード"
|
||||||
|
|
||||||
#: assets/const/protocol.py:217
|
#: assets/const/protocol.py:224
|
||||||
msgid ""
|
msgid ""
|
||||||
"When safe mode is enabled, some operations will be disabled, such as: New "
|
"When safe mode is enabled, some operations will be disabled, such as: New "
|
||||||
"tab, right click, visit other website, etc."
|
"tab, right click, visit other website, etc."
|
||||||
|
@ -1483,24 +1483,24 @@ msgstr ""
|
||||||
"安全モードが有効になっている場合、新しいタブ、右クリック、他のウェブサイトへ"
|
"安全モードが有効になっている場合、新しいタブ、右クリック、他のウェブサイトへ"
|
||||||
"のアクセスなど、一部の操作が無効になります"
|
"のアクセスなど、一部の操作が無効になります"
|
||||||
|
|
||||||
#: assets/const/protocol.py:222 assets/models/asset/web.py:9
|
#: assets/const/protocol.py:229 assets/models/asset/web.py:9
|
||||||
#: assets/serializers/asset/info/spec.py:16
|
#: assets/serializers/asset/info/spec.py:16
|
||||||
msgid "Autofill"
|
msgid "Autofill"
|
||||||
msgstr "自動充填"
|
msgstr "自動充填"
|
||||||
|
|
||||||
#: assets/const/protocol.py:230 assets/models/asset/web.py:10
|
#: assets/const/protocol.py:237 assets/models/asset/web.py:10
|
||||||
msgid "Username selector"
|
msgid "Username selector"
|
||||||
msgstr "ユーザー名ピッカー"
|
msgstr "ユーザー名ピッカー"
|
||||||
|
|
||||||
#: assets/const/protocol.py:235 assets/models/asset/web.py:11
|
#: assets/const/protocol.py:242 assets/models/asset/web.py:11
|
||||||
msgid "Password selector"
|
msgid "Password selector"
|
||||||
msgstr "パスワードセレクター"
|
msgstr "パスワードセレクター"
|
||||||
|
|
||||||
#: assets/const/protocol.py:240 assets/models/asset/web.py:12
|
#: assets/const/protocol.py:247 assets/models/asset/web.py:12
|
||||||
msgid "Submit selector"
|
msgid "Submit selector"
|
||||||
msgstr "ボタンセレクターを確認する"
|
msgstr "ボタンセレクターを確認する"
|
||||||
|
|
||||||
#: assets/const/protocol.py:263
|
#: assets/const/protocol.py:270
|
||||||
msgid "API mode"
|
msgid "API mode"
|
||||||
msgstr "APIモード"
|
msgstr "APIモード"
|
||||||
|
|
||||||
|
@ -2835,15 +2835,15 @@ msgstr "パスワードが無効です"
|
||||||
msgid "Please wait for %s seconds before retry"
|
msgid "Please wait for %s seconds before retry"
|
||||||
msgstr "%s 秒後に再試行してください"
|
msgstr "%s 秒後に再試行してください"
|
||||||
|
|
||||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:318
|
#: authentication/errors/redirect.py:85 authentication/mixins.py:324
|
||||||
msgid "Your password is too simple, please change it for security"
|
msgid "Your password is too simple, please change it for security"
|
||||||
msgstr "パスワードがシンプルすぎるので、セキュリティのために変更してください"
|
msgstr "パスワードがシンプルすぎるので、セキュリティのために変更してください"
|
||||||
|
|
||||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:325
|
#: authentication/errors/redirect.py:93 authentication/mixins.py:331
|
||||||
msgid "You should to change your password before login"
|
msgid "You should to change your password before login"
|
||||||
msgstr "ログインする前にパスワードを変更する必要があります"
|
msgstr "ログインする前にパスワードを変更する必要があります"
|
||||||
|
|
||||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:332
|
#: authentication/errors/redirect.py:101 authentication/mixins.py:338
|
||||||
msgid "Your password has expired, please reset before logging in"
|
msgid "Your password has expired, please reset before logging in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"パスワードの有効期限が切れました。ログインする前にリセットしてください。"
|
"パスワードの有効期限が切れました。ログインする前にリセットしてください。"
|
||||||
|
@ -2946,7 +2946,11 @@ msgstr "無効にする電話番号をクリアする"
|
||||||
msgid "Authentication failed (before login check failed): {}"
|
msgid "Authentication failed (before login check failed): {}"
|
||||||
msgstr "認証に失敗しました (ログインチェックが失敗する前): {}"
|
msgstr "認証に失敗しました (ログインチェックが失敗する前): {}"
|
||||||
|
|
||||||
#: authentication/mixins.py:91
|
#: authentication/mixins.py:82
|
||||||
|
msgid "User is not valid"
|
||||||
|
msgstr "無効なユーザーです"
|
||||||
|
|
||||||
|
#: authentication/mixins.py:97
|
||||||
msgid ""
|
msgid ""
|
||||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||||
" The current user source is {}. Please contact the administrator."
|
" The current user source is {}. Please contact the administrator."
|
||||||
|
@ -2954,11 +2958,11 @@ msgstr ""
|
||||||
"管理者は「ユーザーソースからのみログインを許可」をオンにしており、現在のユー"
|
"管理者は「ユーザーソースからのみログインを許可」をオンにしており、現在のユー"
|
||||||
"ザーソースは {} です。管理者に連絡してください。"
|
"ザーソースは {} です。管理者に連絡してください。"
|
||||||
|
|
||||||
#: authentication/mixins.py:268
|
#: authentication/mixins.py:274
|
||||||
msgid "The MFA type ({}) is not enabled"
|
msgid "The MFA type ({}) is not enabled"
|
||||||
msgstr "MFAタイプ ({}) が有効になっていない"
|
msgstr "MFAタイプ ({}) が有効になっていない"
|
||||||
|
|
||||||
#: authentication/mixins.py:308
|
#: authentication/mixins.py:314
|
||||||
msgid "Please change your password"
|
msgid "Please change your password"
|
||||||
msgstr "パスワードを変更してください"
|
msgstr "パスワードを変更してください"
|
||||||
|
|
||||||
|
@ -3364,7 +3368,7 @@ msgstr ""
|
||||||
msgid "Do you want to retry ?"
|
msgid "Do you want to retry ?"
|
||||||
msgstr "再試行しますか?"
|
msgstr "再試行しますか?"
|
||||||
|
|
||||||
#: authentication/utils.py:28 common/utils/ip/geoip/utils.py:24
|
#: authentication/utils.py:23 common/utils/ip/geoip/utils.py:24
|
||||||
#: xpack/plugins/cloud/const.py:29
|
#: xpack/plugins/cloud/const.py:29
|
||||||
msgid "LAN"
|
msgid "LAN"
|
||||||
msgstr "ローカルエリアネットワーク"
|
msgstr "ローカルエリアネットワーク"
|
||||||
|
@ -3861,15 +3865,15 @@ msgstr "システムメッセージ"
|
||||||
msgid "Publish the station message"
|
msgid "Publish the station message"
|
||||||
msgstr "投稿サイトニュース"
|
msgstr "投稿サイトニュース"
|
||||||
|
|
||||||
#: ops/ansible/inventory.py:92 ops/models/job.py:60
|
#: ops/ansible/inventory.py:95 ops/models/job.py:60
|
||||||
msgid "No account available"
|
msgid "No account available"
|
||||||
msgstr "利用可能なアカウントがありません"
|
msgstr "利用可能なアカウントがありません"
|
||||||
|
|
||||||
#: ops/ansible/inventory.py:263
|
#: ops/ansible/inventory.py:259
|
||||||
msgid "Ansible disabled"
|
msgid "Ansible disabled"
|
||||||
msgstr "Ansible 無効"
|
msgstr "Ansible 無効"
|
||||||
|
|
||||||
#: ops/ansible/inventory.py:279
|
#: ops/ansible/inventory.py:275
|
||||||
msgid "Skip hosts below:"
|
msgid "Skip hosts below:"
|
||||||
msgstr "次のホストをスキップします: "
|
msgstr "次のホストをスキップします: "
|
||||||
|
|
||||||
|
@ -5208,39 +5212,39 @@ msgstr "サポートリンク"
|
||||||
msgid "default: http://www.jumpserver.org/support/"
|
msgid "default: http://www.jumpserver.org/support/"
|
||||||
msgstr "デフォルト: http://www.jumpserver.org/support/"
|
msgstr "デフォルト: http://www.jumpserver.org/support/"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:10
|
#: settings/serializers/cleaning.py:11
|
||||||
msgid "Period clean"
|
msgid "Period clean"
|
||||||
msgstr "定時清掃"
|
msgstr "定時清掃"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:14
|
#: settings/serializers/cleaning.py:15
|
||||||
msgid "Login log keep days (day)"
|
msgid "Login log keep days (day)"
|
||||||
msgstr "ログインログは日数を保持します(天)"
|
msgstr "ログインログは日数を保持します(天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:18
|
#: settings/serializers/cleaning.py:19
|
||||||
msgid "Task log keep days (day)"
|
msgid "Task log keep days (day)"
|
||||||
msgstr "タスクログは日数を保持します(天)"
|
msgstr "タスクログは日数を保持します(天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:22
|
#: settings/serializers/cleaning.py:23
|
||||||
msgid "Operate log keep days (day)"
|
msgid "Operate log keep days (day)"
|
||||||
msgstr "ログ管理日を操作する(天)"
|
msgstr "ログ管理日を操作する(天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:26
|
#: settings/serializers/cleaning.py:27
|
||||||
msgid "FTP log keep days (day)"
|
msgid "FTP log keep days (day)"
|
||||||
msgstr "ダウンロードのアップロード(天)"
|
msgstr "ダウンロードのアップロード(天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:30
|
#: settings/serializers/cleaning.py:31
|
||||||
msgid "Cloud sync record keep days (day)"
|
msgid "Cloud sync record keep days (day)"
|
||||||
msgstr "クラウド同期レコードは日数を保持します(天)"
|
msgstr "クラウド同期レコードは日数を保持します(天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:34
|
#: settings/serializers/cleaning.py:35
|
||||||
msgid "Activity log keep days (day)"
|
msgid "Activity log keep days (day)"
|
||||||
msgstr "活動ログは日数を保持します(天)"
|
msgstr "活動ログは日数を保持します(天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:37
|
#: settings/serializers/cleaning.py:38
|
||||||
msgid "Session keep duration (day)"
|
msgid "Session keep duration (day)"
|
||||||
msgstr "セッション維持期間(天)"
|
msgstr "セッション維持期間(天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:39
|
#: settings/serializers/cleaning.py:40
|
||||||
msgid ""
|
msgid ""
|
||||||
"Session, record, command will be delete if more than duration, only in "
|
"Session, record, command will be delete if more than duration, only in "
|
||||||
"database, OSS will not be affected."
|
"database, OSS will not be affected."
|
||||||
|
@ -5248,10 +5252,6 @@ msgstr ""
|
||||||
"この期間を超えるセッション、録音、およびコマンド レコードは削除されます (デー"
|
"この期間を超えるセッション、録音、およびコマンド レコードは削除されます (デー"
|
||||||
"タベースのバックアップに影響し、OSS などには影響しません)"
|
"タベースのバックアップに影響し、OSS などには影響しません)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:53
|
|
||||||
msgid "must be greater than {} days."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: settings/serializers/feature.py:16
|
#: settings/serializers/feature.py:16
|
||||||
msgid "Subject"
|
msgid "Subject"
|
||||||
msgstr "件名"
|
msgstr "件名"
|
||||||
|
@ -6260,7 +6260,7 @@ msgstr "一括作成非サポート"
|
||||||
msgid "Storage is invalid"
|
msgid "Storage is invalid"
|
||||||
msgstr "ストレージが無効です"
|
msgstr "ストレージが無効です"
|
||||||
|
|
||||||
#: terminal/models/applet/applet.py:30 xpack/plugins/license/models.py:88
|
#: terminal/models/applet/applet.py:30 xpack/plugins/license/models.py:86
|
||||||
msgid "Community edition"
|
msgid "Community edition"
|
||||||
msgstr "コミュニティ版"
|
msgstr "コミュニティ版"
|
||||||
|
|
||||||
|
@ -8536,7 +8536,7 @@ msgstr "ライセンスのインポートに成功"
|
||||||
msgid "License is invalid"
|
msgid "License is invalid"
|
||||||
msgstr "ライセンスが無効です"
|
msgstr "ライセンスが無効です"
|
||||||
|
|
||||||
#: xpack/plugins/license/meta.py:10 xpack/plugins/license/models.py:140
|
#: xpack/plugins/license/meta.py:10 xpack/plugins/license/models.py:138
|
||||||
msgid "License"
|
msgid "License"
|
||||||
msgstr "ライセンス"
|
msgstr "ライセンス"
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: JumpServer 0.3.3\n"
|
"Project-Id-Version: JumpServer 0.3.3\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-10-07 17:56+0800\n"
|
"POT-Creation-Date: 2023-10-09 17:52+0800\n"
|
||||||
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
||||||
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
||||||
"Language-Team: JumpServer team<ibuler@qq.com>\n"
|
"Language-Team: JumpServer team<ibuler@qq.com>\n"
|
||||||
|
@ -1428,69 +1428,69 @@ msgstr "当我们看到这个提示时,我们将发送用户名"
|
||||||
msgid "Password prompt"
|
msgid "Password prompt"
|
||||||
msgstr "密码提示"
|
msgstr "密码提示"
|
||||||
|
|
||||||
#: assets/const/protocol.py:101
|
#: assets/const/protocol.py:102
|
||||||
msgid "We will send password when we see this prompt"
|
msgid "We will send password when we see this prompt"
|
||||||
msgstr "当我们看到这个提示时,我们将发送密码"
|
msgstr "当我们看到这个提示时,我们将发送密码"
|
||||||
|
|
||||||
#: assets/const/protocol.py:106
|
#: assets/const/protocol.py:107
|
||||||
msgid "Success prompt"
|
msgid "Success prompt"
|
||||||
msgstr "成功提示"
|
msgstr "成功提示"
|
||||||
|
|
||||||
#: assets/const/protocol.py:107
|
#: assets/const/protocol.py:108
|
||||||
msgid "We will consider login success when we see this prompt"
|
msgid "We will consider login success when we see this prompt"
|
||||||
msgstr "当我们看到这个提示时,我们将认为登录成功"
|
msgstr "当我们看到这个提示时,我们将认为登录成功"
|
||||||
|
|
||||||
#: assets/const/protocol.py:118 assets/models/asset/database.py:10
|
#: assets/const/protocol.py:119 assets/models/asset/database.py:10
|
||||||
#: settings/serializers/msg.py:40
|
#: settings/serializers/msg.py:40
|
||||||
msgid "Use SSL"
|
msgid "Use SSL"
|
||||||
msgstr "使用 SSL"
|
msgstr "使用 SSL"
|
||||||
|
|
||||||
#: assets/const/protocol.py:153
|
#: assets/const/protocol.py:154
|
||||||
msgid "SYSDBA"
|
msgid "SYSDBA"
|
||||||
msgstr "SYSDBA"
|
msgstr "SYSDBA"
|
||||||
|
|
||||||
#: assets/const/protocol.py:154
|
#: assets/const/protocol.py:155
|
||||||
msgid "Connect as SYSDBA"
|
msgid "Connect as SYSDBA"
|
||||||
msgstr "以 SYSDBA 角色连接"
|
msgstr "以 SYSDBA 角色连接"
|
||||||
|
|
||||||
#: assets/const/protocol.py:169
|
#: assets/const/protocol.py:170
|
||||||
msgid ""
|
msgid ""
|
||||||
"SQL Server version, Different versions have different connection drivers"
|
"SQL Server version, Different versions have different connection drivers"
|
||||||
msgstr "SQL Server 版本,不同版本有不同的连接驱动"
|
msgstr "SQL Server 版本,不同版本有不同的连接驱动"
|
||||||
|
|
||||||
#: assets/const/protocol.py:192
|
#: assets/const/protocol.py:199
|
||||||
msgid "Auth username"
|
msgid "Auth username"
|
||||||
msgstr "使用用户名认证"
|
msgstr "使用用户名认证"
|
||||||
|
|
||||||
#: assets/const/protocol.py:215
|
#: assets/const/protocol.py:222
|
||||||
msgid "Safe mode"
|
msgid "Safe mode"
|
||||||
msgstr "安全模式"
|
msgstr "安全模式"
|
||||||
|
|
||||||
#: assets/const/protocol.py:217
|
#: assets/const/protocol.py:224
|
||||||
msgid ""
|
msgid ""
|
||||||
"When safe mode is enabled, some operations will be disabled, such as: New "
|
"When safe mode is enabled, some operations will be disabled, such as: New "
|
||||||
"tab, right click, visit other website, etc."
|
"tab, right click, visit other website, etc."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"当安全模式启用时,一些操作将被禁用,例如:新建标签页、右键、访问其它网站 等"
|
"当安全模式启用时,一些操作将被禁用,例如:新建标签页、右键、访问其它网站 等"
|
||||||
|
|
||||||
#: assets/const/protocol.py:222 assets/models/asset/web.py:9
|
#: assets/const/protocol.py:229 assets/models/asset/web.py:9
|
||||||
#: assets/serializers/asset/info/spec.py:16
|
#: assets/serializers/asset/info/spec.py:16
|
||||||
msgid "Autofill"
|
msgid "Autofill"
|
||||||
msgstr "自动代填"
|
msgstr "自动代填"
|
||||||
|
|
||||||
#: assets/const/protocol.py:230 assets/models/asset/web.py:10
|
#: assets/const/protocol.py:237 assets/models/asset/web.py:10
|
||||||
msgid "Username selector"
|
msgid "Username selector"
|
||||||
msgstr "用户名选择器"
|
msgstr "用户名选择器"
|
||||||
|
|
||||||
#: assets/const/protocol.py:235 assets/models/asset/web.py:11
|
#: assets/const/protocol.py:242 assets/models/asset/web.py:11
|
||||||
msgid "Password selector"
|
msgid "Password selector"
|
||||||
msgstr "密码选择器"
|
msgstr "密码选择器"
|
||||||
|
|
||||||
#: assets/const/protocol.py:240 assets/models/asset/web.py:12
|
#: assets/const/protocol.py:247 assets/models/asset/web.py:12
|
||||||
msgid "Submit selector"
|
msgid "Submit selector"
|
||||||
msgstr "确认按钮选择器"
|
msgstr "确认按钮选择器"
|
||||||
|
|
||||||
#: assets/const/protocol.py:263
|
#: assets/const/protocol.py:270
|
||||||
msgid "API mode"
|
msgid "API mode"
|
||||||
msgstr "API 模式"
|
msgstr "API 模式"
|
||||||
|
|
||||||
|
@ -2806,15 +2806,15 @@ msgstr "您的密码无效"
|
||||||
msgid "Please wait for %s seconds before retry"
|
msgid "Please wait for %s seconds before retry"
|
||||||
msgstr "请在 %s 秒后重试"
|
msgstr "请在 %s 秒后重试"
|
||||||
|
|
||||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:318
|
#: authentication/errors/redirect.py:85 authentication/mixins.py:324
|
||||||
msgid "Your password is too simple, please change it for security"
|
msgid "Your password is too simple, please change it for security"
|
||||||
msgstr "你的密码过于简单,为了安全,请修改"
|
msgstr "你的密码过于简单,为了安全,请修改"
|
||||||
|
|
||||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:325
|
#: authentication/errors/redirect.py:93 authentication/mixins.py:331
|
||||||
msgid "You should to change your password before login"
|
msgid "You should to change your password before login"
|
||||||
msgstr "登录完成前,请先修改密码"
|
msgstr "登录完成前,请先修改密码"
|
||||||
|
|
||||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:332
|
#: authentication/errors/redirect.py:101 authentication/mixins.py:338
|
||||||
msgid "Your password has expired, please reset before logging in"
|
msgid "Your password has expired, please reset before logging in"
|
||||||
msgstr "您的密码已过期,先修改再登录"
|
msgstr "您的密码已过期,先修改再登录"
|
||||||
|
|
||||||
|
@ -2915,17 +2915,21 @@ msgstr "清空手机号码禁用"
|
||||||
msgid "Authentication failed (before login check failed): {}"
|
msgid "Authentication failed (before login check failed): {}"
|
||||||
msgstr "认证失败 (登录前检查失败): {}"
|
msgstr "认证失败 (登录前检查失败): {}"
|
||||||
|
|
||||||
#: authentication/mixins.py:91
|
#: authentication/mixins.py:82
|
||||||
|
msgid "User is not valid"
|
||||||
|
msgstr "无效的用户"
|
||||||
|
|
||||||
|
#: authentication/mixins.py:97
|
||||||
msgid ""
|
msgid ""
|
||||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||||
" The current user source is {}. Please contact the administrator."
|
" The current user source is {}. Please contact the administrator."
|
||||||
msgstr "管理员已开启'仅允许从用户来源登录',当前用户来源为{},请联系管理员。"
|
msgstr "管理员已开启'仅允许从用户来源登录',当前用户来源为{},请联系管理员。"
|
||||||
|
|
||||||
#: authentication/mixins.py:268
|
#: authentication/mixins.py:274
|
||||||
msgid "The MFA type ({}) is not enabled"
|
msgid "The MFA type ({}) is not enabled"
|
||||||
msgstr "该 MFA ({}) 方式没有启用"
|
msgstr "该 MFA ({}) 方式没有启用"
|
||||||
|
|
||||||
#: authentication/mixins.py:308
|
#: authentication/mixins.py:314
|
||||||
msgid "Please change your password"
|
msgid "Please change your password"
|
||||||
msgstr "请修改密码"
|
msgstr "请修改密码"
|
||||||
|
|
||||||
|
@ -3319,7 +3323,7 @@ msgstr "本页面未使用 HTTPS 协议,请使用 HTTPS 协议以确保您的
|
||||||
msgid "Do you want to retry ?"
|
msgid "Do you want to retry ?"
|
||||||
msgstr "是否重试 ?"
|
msgstr "是否重试 ?"
|
||||||
|
|
||||||
#: authentication/utils.py:28 common/utils/ip/geoip/utils.py:24
|
#: authentication/utils.py:23 common/utils/ip/geoip/utils.py:24
|
||||||
#: xpack/plugins/cloud/const.py:29
|
#: xpack/plugins/cloud/const.py:29
|
||||||
msgid "LAN"
|
msgid "LAN"
|
||||||
msgstr "局域网"
|
msgstr "局域网"
|
||||||
|
@ -3809,15 +3813,15 @@ msgstr "系统信息"
|
||||||
msgid "Publish the station message"
|
msgid "Publish the station message"
|
||||||
msgstr "发布站内消息"
|
msgstr "发布站内消息"
|
||||||
|
|
||||||
#: ops/ansible/inventory.py:92 ops/models/job.py:60
|
#: ops/ansible/inventory.py:95 ops/models/job.py:60
|
||||||
msgid "No account available"
|
msgid "No account available"
|
||||||
msgstr "无可用账号"
|
msgstr "无可用账号"
|
||||||
|
|
||||||
#: ops/ansible/inventory.py:263
|
#: ops/ansible/inventory.py:259
|
||||||
msgid "Ansible disabled"
|
msgid "Ansible disabled"
|
||||||
msgstr "Ansible 已禁用"
|
msgstr "Ansible 已禁用"
|
||||||
|
|
||||||
#: ops/ansible/inventory.py:279
|
#: ops/ansible/inventory.py:275
|
||||||
msgid "Skip hosts below:"
|
msgid "Skip hosts below:"
|
||||||
msgstr "跳过以下主机: "
|
msgstr "跳过以下主机: "
|
||||||
|
|
||||||
|
@ -5151,49 +5155,45 @@ msgstr "支持链接"
|
||||||
msgid "default: http://www.jumpserver.org/support/"
|
msgid "default: http://www.jumpserver.org/support/"
|
||||||
msgstr "默认: http://www.jumpserver.org/support/"
|
msgstr "默认: http://www.jumpserver.org/support/"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:10
|
#: settings/serializers/cleaning.py:11
|
||||||
msgid "Period clean"
|
msgid "Period clean"
|
||||||
msgstr "定時清掃"
|
msgstr "定時清掃"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:14
|
#: settings/serializers/cleaning.py:15
|
||||||
msgid "Login log keep days (day)"
|
msgid "Login log keep days (day)"
|
||||||
msgstr "登录日志 (天)"
|
msgstr "登录日志 (天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:18
|
#: settings/serializers/cleaning.py:19
|
||||||
msgid "Task log keep days (day)"
|
msgid "Task log keep days (day)"
|
||||||
msgstr "任务日志 (天)"
|
msgstr "任务日志 (天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:22
|
#: settings/serializers/cleaning.py:23
|
||||||
msgid "Operate log keep days (day)"
|
msgid "Operate log keep days (day)"
|
||||||
msgstr "操作日志 (天)"
|
msgstr "操作日志 (天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:26
|
#: settings/serializers/cleaning.py:27
|
||||||
msgid "FTP log keep days (day)"
|
msgid "FTP log keep days (day)"
|
||||||
msgstr "上传下载 (天)"
|
msgstr "上传下载 (天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:30
|
#: settings/serializers/cleaning.py:31
|
||||||
msgid "Cloud sync record keep days (day)"
|
msgid "Cloud sync record keep days (day)"
|
||||||
msgstr "云同步记录 (天)"
|
msgstr "云同步记录 (天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:34
|
#: settings/serializers/cleaning.py:35
|
||||||
msgid "Activity log keep days (day)"
|
msgid "Activity log keep days (day)"
|
||||||
msgstr "活动记录 (天)"
|
msgstr "活动记录 (天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:37
|
#: settings/serializers/cleaning.py:38
|
||||||
msgid "Session keep duration (day)"
|
msgid "Session keep duration (day)"
|
||||||
msgstr "会话日志 (天)"
|
msgstr "会话日志 (天)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:39
|
#: settings/serializers/cleaning.py:40
|
||||||
msgid ""
|
msgid ""
|
||||||
"Session, record, command will be delete if more than duration, only in "
|
"Session, record, command will be delete if more than duration, only in "
|
||||||
"database, OSS will not be affected."
|
"database, OSS will not be affected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"会话、录像,命令记录超过该时长将会被清除 (影响数据库存储,OSS 等不受影响)"
|
"会话、录像,命令记录超过该时长将会被清除 (影响数据库存储,OSS 等不受影响)"
|
||||||
|
|
||||||
#: settings/serializers/cleaning.py:53
|
|
||||||
msgid "must be greater than {} days."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: settings/serializers/feature.py:16
|
#: settings/serializers/feature.py:16
|
||||||
msgid "Subject"
|
msgid "Subject"
|
||||||
msgstr "主题"
|
msgstr "主题"
|
||||||
|
@ -6168,7 +6168,7 @@ msgstr "不支持批量创建"
|
||||||
msgid "Storage is invalid"
|
msgid "Storage is invalid"
|
||||||
msgstr "存储无效"
|
msgstr "存储无效"
|
||||||
|
|
||||||
#: terminal/models/applet/applet.py:30 xpack/plugins/license/models.py:88
|
#: terminal/models/applet/applet.py:30 xpack/plugins/license/models.py:86
|
||||||
msgid "Community edition"
|
msgid "Community edition"
|
||||||
msgstr "社区版"
|
msgstr "社区版"
|
||||||
|
|
||||||
|
@ -8416,7 +8416,7 @@ msgstr "许可证导入成功"
|
||||||
msgid "License is invalid"
|
msgid "License is invalid"
|
||||||
msgstr "无效的许可证"
|
msgstr "无效的许可证"
|
||||||
|
|
||||||
#: xpack/plugins/license/meta.py:10 xpack/plugins/license/models.py:140
|
#: xpack/plugins/license/meta.py:10 xpack/plugins/license/models.py:138
|
||||||
msgid "License"
|
msgid "License"
|
||||||
msgstr "许可证"
|
msgstr "许可证"
|
||||||
|
|
||||||
|
@ -8436,5 +8436,11 @@ msgstr "企业专业版"
|
||||||
msgid "Ultimate edition"
|
msgid "Ultimate edition"
|
||||||
msgstr "企业旗舰版"
|
msgstr "企业旗舰版"
|
||||||
|
|
||||||
|
#~ msgid "Basic edition"
|
||||||
|
#~ msgstr "企业基础版"
|
||||||
|
|
||||||
|
#~ msgid "Professional edition"
|
||||||
|
#~ msgstr "企业专业版"
|
||||||
|
|
||||||
#~ msgid "Random"
|
#~ msgid "Random"
|
||||||
#~ msgstr "随机"
|
#~ msgstr "随机"
|
||||||
|
|
Loading…
Reference in New Issue