perf: 补充cmpp2翻译及部分报错提示 (#8717)

* 修改CMPPv2.0翻译内容

* perf: 捕捉连接网关出错问题

* perf: 测试短信验证失败提示错误信息

* perf: 修改翻译
This commit is contained in:
jiangweidong 2022-08-10 17:32:28 +08:00 committed by GitHub
parent 30fe5214c7
commit abcd12f645
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 144 additions and 106 deletions

View File

@ -4,6 +4,7 @@ import struct
import time import time
from django.conf import settings from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from common.utils import get_logger from common.utils import get_logger
from common.exceptions import JMSException from common.exceptions import JMSException
@ -42,7 +43,7 @@ class CMPPBaseRequestInstance(object):
class CMPPConnectRequestInstance(CMPPBaseRequestInstance): class CMPPConnectRequestInstance(CMPPBaseRequestInstance):
def __init__(self, sp_id, sp_secret): def __init__(self, sp_id, sp_secret):
if len(sp_id) != 6: if len(sp_id) != 6:
raise ValueError("sp_id and sp_secret are both 6 bits") raise ValueError(_("sp_id is 6 bits"))
super().__init__() super().__init__()
@ -212,14 +213,19 @@ class CMPPClient(object):
def _connect(self): def _connect(self):
self.__socket.settimeout(5) self.__socket.settimeout(5)
error_msg = _('Failed to connect to the CMPP gateway server, err: {}')
for i in range(self._times): for i in range(self._times):
try: try:
self.__socket.connect((self.ip, self.port)) self.__socket.connect((self.ip, self.port))
except socket.timeout: except Exception as err:
error_msg = error_msg.format(str(err))
logger.warning(error_msg)
time.sleep(1) time.sleep(1)
else: else:
self._is_connect = True self._is_connect = True
break break
else:
raise JMSException(error_msg)
def send(self, instance): def send(self, instance):
if isinstance(instance, CMPPBaseRequestInstance): if isinstance(instance, CMPPBaseRequestInstance):
@ -299,9 +305,10 @@ class CMPP2SMS(BaseSMSClient):
self.client = CMPPClient( self.client = CMPPClient(
host=host, port=port, sp_id=sp_id, sp_secret=sp_secret, src_id=src_id, service_id=service_id host=host, port=port, sp_id=sp_id, sp_secret=sp_secret, src_id=src_id, service_id=service_id
) )
except socket.timeout: except Exception as err:
self.client = None self.client = None
logger.warning('CMPPv2.0 connect remote time out.') logger.warning(err)
raise JMSException(err)
@staticmethod @staticmethod
def need_pre_check(): def need_pre_check():

View File

@ -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: 2022-08-05 14:42+0800\n" "POT-Creation-Date: 2022-08-10 14:50+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"
@ -88,8 +88,8 @@ msgstr "ログイン確認"
#: acls/models/login_acl.py:24 acls/models/login_asset_acl.py:20 #: acls/models/login_acl.py:24 acls/models/login_asset_acl.py:20
#: assets/models/cmd_filter.py:30 assets/models/label.py:15 audits/models.py:37 #: assets/models/cmd_filter.py:30 assets/models/label.py:15 audits/models.py:37
#: audits/models.py:62 audits/models.py:87 audits/serializers.py:100 #: audits/models.py:62 audits/models.py:87 audits/serializers.py:100
#: authentication/models.py:54 authentication/models.py:78 orgs/models.py:214 #: authentication/models.py:54 authentication/models.py:78 orgs/models.py:220
#: perms/models/base.py:84 rbac/builtin.py:117 rbac/models/rolebinding.py:41 #: perms/models/base.py:84 rbac/builtin.py:120 rbac/models/rolebinding.py:41
#: terminal/backends/command/models.py:20 #: terminal/backends/command/models.py:20
#: terminal/backends/command/serializers.py:13 terminal/models/session.py:44 #: terminal/backends/command/serializers.py:13 terminal/models/session.py:44
#: terminal/models/sharing.py:33 terminal/notifications.py:91 #: terminal/models/sharing.py:33 terminal/notifications.py:91
@ -394,7 +394,7 @@ msgstr "クラスター"
#: applications/serializers/attrs/application_category/db.py:11 #: applications/serializers/attrs/application_category/db.py:11
#: ops/models/adhoc.py:157 settings/serializers/auth/radius.py:14 #: ops/models/adhoc.py:157 settings/serializers/auth/radius.py:14
#: settings/serializers/auth/sms.py:52 terminal/models/endpoint.py:11 #: settings/serializers/auth/sms.py:52 terminal/models/endpoint.py:11
#: xpack/plugins/cloud/serializers/account_attrs.py:70 #: xpack/plugins/cloud/serializers/account_attrs.py:72
msgid "Host" msgid "Host"
msgstr "ホスト" msgstr "ホスト"
@ -408,7 +408,7 @@ msgstr "ホスト"
#: applications/serializers/attrs/application_type/sqlserver.py:10 #: applications/serializers/attrs/application_type/sqlserver.py:10
#: assets/models/asset.py:214 assets/models/domain.py:62 #: assets/models/asset.py:214 assets/models/domain.py:62
#: settings/serializers/auth/radius.py:15 settings/serializers/auth/sms.py:53 #: settings/serializers/auth/radius.py:15 settings/serializers/auth/sms.py:53
#: xpack/plugins/cloud/serializers/account_attrs.py:71 #: xpack/plugins/cloud/serializers/account_attrs.py:73
msgid "Port" msgid "Port"
msgstr "ポート" msgstr "ポート"
@ -591,7 +591,7 @@ msgstr "ホスト名生"
#: assets/models/asset.py:215 assets/serializers/account.py:16 #: assets/models/asset.py:215 assets/serializers/account.py:16
#: assets/serializers/asset.py:65 perms/serializers/asset/user_permission.py:41 #: assets/serializers/asset.py:65 perms/serializers/asset/user_permission.py:41
#: xpack/plugins/cloud/models.py:107 xpack/plugins/cloud/serializers/task.py:42 #: xpack/plugins/cloud/models.py:107 xpack/plugins/cloud/serializers/task.py:43
msgid "Protocols" msgid "Protocols"
msgstr "プロトコル" msgstr "プロトコル"
@ -929,7 +929,8 @@ msgstr "テストゲートウェイ"
msgid "Unable to connect to port {port} on {ip}" msgid "Unable to connect to port {port} on {ip}"
msgstr "{ip} でポート {port} に接続できません" msgstr "{ip} でポート {port} に接続できません"
#: assets/models/domain.py:134 xpack/plugins/cloud/providers/fc.py:48 #: assets/models/domain.py:134 authentication/middleware.py:75
#: xpack/plugins/cloud/providers/fc.py:48
msgid "Authentication failed" msgid "Authentication failed"
msgstr "認証に失敗しました" msgstr "認証に失敗しました"
@ -990,7 +991,7 @@ msgid "Parent key"
msgstr "親キー" msgstr "親キー"
#: assets/models/node.py:559 assets/serializers/system_user.py:267 #: assets/models/node.py:559 assets/serializers/system_user.py:267
#: xpack/plugins/cloud/models.py:96 xpack/plugins/cloud/serializers/task.py:69 #: xpack/plugins/cloud/models.py:96 xpack/plugins/cloud/serializers/task.py:70
msgid "Node" msgid "Node"
msgstr "ノード" msgstr "ノード"
@ -1988,19 +1989,19 @@ msgstr "受け入れのためのログイン確認チケットを待つ"
msgid "Login confirm ticket was {}" msgid "Login confirm ticket was {}"
msgstr "ログイン確認チケットは {} でした" msgstr "ログイン確認チケットは {} でした"
#: authentication/errors/failed.py:145 #: authentication/errors/failed.py:146
msgid "Current IP and Time period is not allowed" msgid "Current IP and Time period is not allowed"
msgstr "現在の IP と期間はログインを許可されていません" msgstr "現在の IP と期間はログインを許可されていません"
#: authentication/errors/failed.py:150 #: authentication/errors/failed.py:151
msgid "Please enter MFA code" msgid "Please enter MFA code"
msgstr "MFAコードを入力してください" msgstr "MFAコードを入力してください"
#: authentication/errors/failed.py:155 #: authentication/errors/failed.py:156
msgid "Please enter SMS code" msgid "Please enter SMS code"
msgstr "SMSコードを入力してください" msgstr "SMSコードを入力してください"
#: authentication/errors/failed.py:160 users/exceptions.py:15 #: authentication/errors/failed.py:161 users/exceptions.py:15
msgid "Phone not set" msgid "Phone not set"
msgstr "電話が設定されていない" msgstr "電話が設定されていない"
@ -2115,6 +2116,10 @@ msgstr "電話番号を設定して有効にする"
msgid "Clear phone number to disable" msgid "Clear phone number to disable"
msgstr "無効にする電話番号をクリアする" msgstr "無効にする電話番号をクリアする"
#: authentication/middleware.py:76 settings/utils/ldap.py:652
msgid "Authentication failed (before login check failed): {}"
msgstr "認証に失敗しました (ログインチェックが失敗する前): {}"
#: authentication/mixins.py:256 #: authentication/mixins.py:256
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "MFAタイプ ({}) が有効になっていない" msgstr "MFAタイプ ({}) が有効になっていない"
@ -2304,6 +2309,7 @@ msgid "Need MFA for view auth"
msgstr "ビューオートのためにMFAが必要" msgstr "ビューオートのためにMFAが必要"
#: authentication/templates/authentication/_mfa_confirm_modal.html:20 #: authentication/templates/authentication/_mfa_confirm_modal.html:20
#: authentication/templates/authentication/auth_fail_flash_message_standalone.html:37
#: templates/_modal.html:23 templates/flash_message_standalone.html:37 #: templates/_modal.html:23 templates/flash_message_standalone.html:37
#: users/templates/users/user_password_verify.html:20 #: users/templates/users/user_password_verify.html:20
msgid "Confirm" msgid "Confirm"
@ -2318,7 +2324,7 @@ msgstr "コードエラー"
#: authentication/templates/authentication/_msg_reset_password.html:3 #: authentication/templates/authentication/_msg_reset_password.html:3
#: authentication/templates/authentication/_msg_rest_password_success.html:2 #: authentication/templates/authentication/_msg_rest_password_success.html:2
#: authentication/templates/authentication/_msg_rest_public_key_success.html:2 #: authentication/templates/authentication/_msg_rest_public_key_success.html:2
#: jumpserver/conf.py:316 ops/tasks.py:145 ops/tasks.py:148 #: jumpserver/conf.py:390 ops/tasks.py:145 ops/tasks.py:148
#: perms/templates/perms/_msg_item_permissions_expire.html:3 #: perms/templates/perms/_msg_item_permissions_expire.html:3
#: perms/templates/perms/_msg_permed_items_expire.html:3 #: perms/templates/perms/_msg_permed_items_expire.html:3
#: tickets/templates/tickets/approve_check_password.html:33 #: tickets/templates/tickets/approve_check_password.html:33
@ -2409,6 +2415,11 @@ msgstr ""
"公開鍵の更新が開始されなかった場合、アカウントにセキュリティ上の問題がある可" "公開鍵の更新が開始されなかった場合、アカウントにセキュリティ上の問題がある可"
"能性があります" "能性があります"
#: authentication/templates/authentication/auth_fail_flash_message_standalone.html:28
#: templates/flash_message_standalone.html:28 tickets/const.py:20
msgid "Cancel"
msgstr "キャンセル"
#: authentication/templates/authentication/login.html:221 #: authentication/templates/authentication/login.html:221
msgid "Welcome back, please enter username and password to login" msgid "Welcome back, please enter username and password to login"
msgstr "" msgstr ""
@ -2715,6 +2726,14 @@ msgstr "企業微信エラー、システム管理者に連絡してください
msgid "Signature does not match" msgid "Signature does not match"
msgstr "署名が一致しない" msgstr "署名が一致しない"
#: common/sdk/sms/cmpp2.py:46
msgid "sp_id is 6 bits"
msgstr "SP idは6ビット"
#: common/sdk/sms/cmpp2.py:216
msgid "Failed to connect to the CMPP gateway server, err: {}"
msgstr "接続ゲートウェイサーバエラー, 非: {}"
#: common/sdk/sms/endpoint.py:16 #: common/sdk/sms/endpoint.py:16
msgid "Alibaba cloud" msgid "Alibaba cloud"
msgstr "アリ雲" msgstr "アリ雲"
@ -2767,11 +2786,11 @@ msgstr "特殊文字を含むべきではない"
msgid "The mobile phone number format is incorrect" msgid "The mobile phone number format is incorrect"
msgstr "携帯電話番号の形式が正しくありません" msgstr "携帯電話番号の形式が正しくありません"
#: jumpserver/conf.py:315 #: jumpserver/conf.py:389
msgid "Create account successfully" msgid "Create account successfully"
msgstr "アカウントを正常に作成" msgstr "アカウントを正常に作成"
#: jumpserver/conf.py:317 #: jumpserver/conf.py:391
msgid "Your account has been created successfully" msgid "Your account has been created successfully"
msgstr "アカウントが正常に作成されました" msgstr "アカウントが正常に作成されました"
@ -3030,8 +3049,8 @@ msgstr "組織のリソース ({}) は削除できません"
msgid "App organizations" msgid "App organizations"
msgstr "アプリ組織" msgstr "アプリ組織"
#: orgs/mixins/models.py:57 orgs/mixins/serializers.py:25 orgs/models.py:80 #: orgs/mixins/models.py:57 orgs/mixins/serializers.py:25 orgs/models.py:85
#: orgs/models.py:211 rbac/const.py:7 rbac/models/rolebinding.py:48 #: orgs/models.py:217 rbac/const.py:7 rbac/models/rolebinding.py:48
#: rbac/serializers/rolebinding.py:40 settings/serializers/auth/ldap.py:62 #: rbac/serializers/rolebinding.py:40 settings/serializers/auth/ldap.py:62
#: tickets/models/ticket/general.py:300 tickets/serializers/ticket/ticket.py:71 #: tickets/models/ticket/general.py:300 tickets/serializers/ticket/ticket.py:71
msgid "Organization" msgid "Organization"
@ -3275,27 +3294,27 @@ msgstr "{} 少なくとも1つのシステムロール"
msgid "RBAC" msgid "RBAC"
msgstr "RBAC" msgstr "RBAC"
#: rbac/builtin.py:108 #: rbac/builtin.py:111
msgid "SystemAdmin" msgid "SystemAdmin"
msgstr "システム管理者" msgstr "システム管理者"
#: rbac/builtin.py:111 #: rbac/builtin.py:114
msgid "SystemAuditor" msgid "SystemAuditor"
msgstr "システム監査人" msgstr "システム監査人"
#: rbac/builtin.py:114 #: rbac/builtin.py:117
msgid "SystemComponent" msgid "SystemComponent"
msgstr "システムコンポーネント" msgstr "システムコンポーネント"
#: rbac/builtin.py:120 #: rbac/builtin.py:123
msgid "OrgAdmin" msgid "OrgAdmin"
msgstr "組織管理者" msgstr "組織管理者"
#: rbac/builtin.py:123 #: rbac/builtin.py:126
msgid "OrgAuditor" msgid "OrgAuditor"
msgstr "監査員を組織する" msgstr "監査員を組織する"
#: rbac/builtin.py:126 #: rbac/builtin.py:129
msgid "OrgUser" msgid "OrgUser"
msgstr "組織ユーザー" msgstr "組織ユーザー"
@ -3852,12 +3871,12 @@ msgid "Test phone"
msgstr "テスト電話" msgstr "テスト電話"
#: settings/serializers/auth/sms.py:54 #: settings/serializers/auth/sms.py:54
msgid "Gateway account(SP id)" msgid "Enterprise code(SP id)"
msgstr "ゲートウェイアカウント(SP id)" msgstr "企業コード(SP id)"
#: settings/serializers/auth/sms.py:55 #: settings/serializers/auth/sms.py:55
msgid "Gateway password(SP secret)" msgid "Shared secret(Shared secret)"
msgstr "ゲートウェイパスワード(SP secret)" msgstr "パスワードを共有する(Shared secret)"
#: settings/serializers/auth/sms.py:56 #: settings/serializers/auth/sms.py:56
msgid "Original number(Src id)" msgid "Original number(Src id)"
@ -3872,6 +3891,7 @@ msgid "Template"
msgstr "テンプレート" msgstr "テンプレート"
#: settings/serializers/auth/sms.py:61 #: settings/serializers/auth/sms.py:61
#, python-brace-format
msgid "" msgid ""
"Template need contain {code} and Signature + template length does not exceed " "Template need contain {code} and Signature + template length does not exceed "
"67 words. For example, your verification code is {code}, which is valid for " "67 words. For example, your verification code is {code}, which is valid for "
@ -3890,7 +3910,7 @@ msgstr "テンプレートには{code}を含める必要があります"
msgid "Signature + Template must not exceed 65 words" msgid "Signature + Template must not exceed 65 words"
msgstr "署名+テンプレートの長さは65文字以内" msgstr "署名+テンプレートの長さは65文字以内"
#: settings/serializers/auth/sso.py:12 #: settings/serializers/auth/sso.py:11
msgid "Enable SSO auth" msgid "Enable SSO auth"
msgstr "SSO Token認証の有効化" msgstr "SSO Token認証の有効化"
@ -4547,10 +4567,6 @@ msgstr "成功: {} 人のユーザーに一致"
msgid "Authentication failed (configuration incorrect): {}" msgid "Authentication failed (configuration incorrect): {}"
msgstr "認証に失敗しました (設定が正しくありません): {}" msgstr "認証に失敗しました (設定が正しくありません): {}"
#: settings/utils/ldap.py:652
msgid "Authentication failed (before login check failed): {}"
msgstr "認証に失敗しました (ログインチェックが失敗する前): {}"
#: settings/utils/ldap.py:654 #: settings/utils/ldap.py:654
msgid "Authentication failed (username or password incorrect): {}" msgid "Authentication failed (username or password incorrect): {}"
msgstr "認証に失敗しました (ユーザー名またはパスワードが正しくありません): {}" msgstr "認証に失敗しました (ユーザー名またはパスワードが正しくありません): {}"
@ -4721,10 +4737,6 @@ msgstr "確認コードが送信されました"
msgid "Home page" msgid "Home page"
msgstr "ホームページ" msgstr "ホームページ"
#: templates/flash_message_standalone.html:28 tickets/const.py:20
msgid "Cancel"
msgstr "キャンセル"
#: templates/resource_download.html:18 templates/resource_download.html:31 #: templates/resource_download.html:18 templates/resource_download.html:31
msgid "Client" msgid "Client"
msgstr "クライアント" msgstr "クライアント"
@ -6507,11 +6519,11 @@ msgstr "クラウドアカウント"
msgid "Test cloud account" msgid "Test cloud account"
msgstr "クラウドアカウントのテスト" msgstr "クラウドアカウントのテスト"
#: xpack/plugins/cloud/models.py:85 xpack/plugins/cloud/serializers/task.py:66 #: xpack/plugins/cloud/models.py:85 xpack/plugins/cloud/serializers/task.py:67
msgid "Account" msgid "Account"
msgstr "アカウント" msgstr "アカウント"
#: xpack/plugins/cloud/models.py:88 xpack/plugins/cloud/serializers/task.py:37 #: xpack/plugins/cloud/models.py:88 xpack/plugins/cloud/serializers/task.py:38
msgid "Regions" msgid "Regions"
msgstr "リージョン" msgstr "リージョン"
@ -6519,19 +6531,19 @@ msgstr "リージョン"
msgid "Hostname strategy" msgid "Hostname strategy"
msgstr "ホスト名戦略" msgstr "ホスト名戦略"
#: xpack/plugins/cloud/models.py:100 xpack/plugins/cloud/serializers/task.py:67 #: xpack/plugins/cloud/models.py:100 xpack/plugins/cloud/serializers/task.py:68
msgid "Unix admin user" msgid "Unix admin user"
msgstr "Unix adminユーザー" msgstr "Unix adminユーザー"
#: xpack/plugins/cloud/models.py:104 xpack/plugins/cloud/serializers/task.py:68 #: xpack/plugins/cloud/models.py:104 xpack/plugins/cloud/serializers/task.py:69
msgid "Windows admin user" msgid "Windows admin user"
msgstr "Windows管理者" msgstr "Windows管理者"
#: xpack/plugins/cloud/models.py:110 xpack/plugins/cloud/serializers/task.py:45 #: xpack/plugins/cloud/models.py:110 xpack/plugins/cloud/serializers/task.py:46
msgid "IP network segment group" msgid "IP network segment group"
msgstr "IPネットワークセグメントグループ" msgstr "IPネットワークセグメントグループ"
#: xpack/plugins/cloud/models.py:113 xpack/plugins/cloud/serializers/task.py:71 #: xpack/plugins/cloud/models.py:113 xpack/plugins/cloud/serializers/task.py:72
msgid "Always update" msgid "Always update"
msgstr "常に更新" msgstr "常に更新"
@ -6837,9 +6849,11 @@ msgstr "テストポート"
#: xpack/plugins/cloud/serializers/task.py:29 #: xpack/plugins/cloud/serializers/task.py:29
msgid "" msgid ""
"The IP address that is first matched to will be used as the IP of the " "Only instances matching the IP range will be synced. <br>If the instance "
"created asset. <br>The default * indicates a random match. <br>Format for " "contains multiple IP addresses, the first IP address that matches will be "
"comma-delimited string, Such as: 192.168.1.0/24, 10.1.1.1-10.1.1.20" "used as the IP for the created asset. <br>The default value of * means sync "
"all instances and randomly match IP addresses. <br>Format for comma-"
"delimited string, Such as: 192.168.1.0/24, 10.1.1.1-10.1.1.20"
msgstr "" msgstr ""
"IP範囲に一致するインスタンスのみが同期されます。<br>インスタンスに複数のIPア" "IP範囲に一致するインスタンスのみが同期されます。<br>インスタンスに複数のIPア"
"ドレスが含まれている場合、一致する最初のIPアドレスが作成されたアセットのIPと" "ドレスが含まれている場合、一致する最初のIPアドレスが作成されたアセットのIPと"
@ -6847,24 +6861,24 @@ msgstr ""
"ドレスをランダムに一致させることを意味します。 <br>形式はコンマ区切りの文字列" "ドレスをランダムに一致させることを意味します。 <br>形式はコンマ区切りの文字列"
"です。例192.168.1.0/24,10.1.1.1-10.1.1.20" "です。例192.168.1.0/24,10.1.1.1-10.1.1.20"
#: xpack/plugins/cloud/serializers/task.py:35 #: xpack/plugins/cloud/serializers/task.py:36
msgid "History count" msgid "History count"
msgstr "実行回数" msgstr "実行回数"
#: xpack/plugins/cloud/serializers/task.py:36 #: xpack/plugins/cloud/serializers/task.py:37
msgid "Instance count" msgid "Instance count"
msgstr "インスタンス数" msgstr "インスタンス数"
#: xpack/plugins/cloud/serializers/task.py:65 #: xpack/plugins/cloud/serializers/task.py:66
msgid "Linux admin user" msgid "Linux admin user"
msgstr "Linux管理者" msgstr "Linux管理者"
#: xpack/plugins/cloud/serializers/task.py:70 #: xpack/plugins/cloud/serializers/task.py:71
#: xpack/plugins/gathered_user/serializers.py:20 #: xpack/plugins/gathered_user/serializers.py:20
msgid "Periodic display" msgid "Periodic display"
msgstr "定期的な表示" msgstr "定期的な表示"
#: xpack/plugins/cloud/utils.py:68 #: xpack/plugins/cloud/utils.py:69
msgid "Account unavailable" msgid "Account unavailable"
msgstr "利用できないアカウント" msgstr "利用できないアカウント"

View File

@ -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: 2022-08-05 14:42+0800\n" "POT-Creation-Date: 2022-08-10 14:50+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"
@ -87,8 +87,8 @@ msgstr "登录复核"
#: acls/models/login_acl.py:24 acls/models/login_asset_acl.py:20 #: acls/models/login_acl.py:24 acls/models/login_asset_acl.py:20
#: assets/models/cmd_filter.py:30 assets/models/label.py:15 audits/models.py:37 #: assets/models/cmd_filter.py:30 assets/models/label.py:15 audits/models.py:37
#: audits/models.py:62 audits/models.py:87 audits/serializers.py:100 #: audits/models.py:62 audits/models.py:87 audits/serializers.py:100
#: authentication/models.py:54 authentication/models.py:78 orgs/models.py:214 #: authentication/models.py:54 authentication/models.py:78 orgs/models.py:220
#: perms/models/base.py:84 rbac/builtin.py:117 rbac/models/rolebinding.py:41 #: perms/models/base.py:84 rbac/builtin.py:120 rbac/models/rolebinding.py:41
#: terminal/backends/command/models.py:20 #: terminal/backends/command/models.py:20
#: terminal/backends/command/serializers.py:13 terminal/models/session.py:44 #: terminal/backends/command/serializers.py:13 terminal/models/session.py:44
#: terminal/models/sharing.py:33 terminal/notifications.py:91 #: terminal/models/sharing.py:33 terminal/notifications.py:91
@ -389,7 +389,7 @@ msgstr "集群"
#: applications/serializers/attrs/application_category/db.py:11 #: applications/serializers/attrs/application_category/db.py:11
#: ops/models/adhoc.py:157 settings/serializers/auth/radius.py:14 #: ops/models/adhoc.py:157 settings/serializers/auth/radius.py:14
#: settings/serializers/auth/sms.py:52 terminal/models/endpoint.py:11 #: settings/serializers/auth/sms.py:52 terminal/models/endpoint.py:11
#: xpack/plugins/cloud/serializers/account_attrs.py:70 #: xpack/plugins/cloud/serializers/account_attrs.py:72
msgid "Host" msgid "Host"
msgstr "主机" msgstr "主机"
@ -403,7 +403,7 @@ msgstr "主机"
#: applications/serializers/attrs/application_type/sqlserver.py:10 #: applications/serializers/attrs/application_type/sqlserver.py:10
#: assets/models/asset.py:214 assets/models/domain.py:62 #: assets/models/asset.py:214 assets/models/domain.py:62
#: settings/serializers/auth/radius.py:15 settings/serializers/auth/sms.py:53 #: settings/serializers/auth/radius.py:15 settings/serializers/auth/sms.py:53
#: xpack/plugins/cloud/serializers/account_attrs.py:71 #: xpack/plugins/cloud/serializers/account_attrs.py:73
msgid "Port" msgid "Port"
msgstr "端口" msgstr "端口"
@ -586,7 +586,7 @@ msgstr "主机名原始"
#: assets/models/asset.py:215 assets/serializers/account.py:16 #: assets/models/asset.py:215 assets/serializers/account.py:16
#: assets/serializers/asset.py:65 perms/serializers/asset/user_permission.py:41 #: assets/serializers/asset.py:65 perms/serializers/asset/user_permission.py:41
#: xpack/plugins/cloud/models.py:107 xpack/plugins/cloud/serializers/task.py:42 #: xpack/plugins/cloud/models.py:107 xpack/plugins/cloud/serializers/task.py:43
msgid "Protocols" msgid "Protocols"
msgstr "协议组" msgstr "协议组"
@ -924,7 +924,8 @@ msgstr "测试网关"
msgid "Unable to connect to port {port} on {ip}" msgid "Unable to connect to port {port} on {ip}"
msgstr "无法连接到 {ip} 上的端口 {port}" msgstr "无法连接到 {ip} 上的端口 {port}"
#: assets/models/domain.py:134 xpack/plugins/cloud/providers/fc.py:48 #: assets/models/domain.py:134 authentication/middleware.py:75
#: xpack/plugins/cloud/providers/fc.py:48
msgid "Authentication failed" msgid "Authentication failed"
msgstr "认证失败" msgstr "认证失败"
@ -985,7 +986,7 @@ msgid "Parent key"
msgstr "ssh私钥" msgstr "ssh私钥"
#: assets/models/node.py:559 assets/serializers/system_user.py:267 #: assets/models/node.py:559 assets/serializers/system_user.py:267
#: xpack/plugins/cloud/models.py:96 xpack/plugins/cloud/serializers/task.py:69 #: xpack/plugins/cloud/models.py:96 xpack/plugins/cloud/serializers/task.py:70
msgid "Node" msgid "Node"
msgstr "节点" msgstr "节点"
@ -1968,19 +1969,19 @@ msgstr "等待登录复核处理"
msgid "Login confirm ticket was {}" msgid "Login confirm ticket was {}"
msgstr "登录复核: {}" msgstr "登录复核: {}"
#: authentication/errors/failed.py:145 #: authentication/errors/failed.py:146
msgid "Current IP and Time period is not allowed" msgid "Current IP and Time period is not allowed"
msgstr "当前 IP 和时间段不被允许登录" msgstr "当前 IP 和时间段不被允许登录"
#: authentication/errors/failed.py:150 #: authentication/errors/failed.py:151
msgid "Please enter MFA code" msgid "Please enter MFA code"
msgstr "请输入 MFA 验证码" msgstr "请输入 MFA 验证码"
#: authentication/errors/failed.py:155 #: authentication/errors/failed.py:156
msgid "Please enter SMS code" msgid "Please enter SMS code"
msgstr "请输入短信验证码" msgstr "请输入短信验证码"
#: authentication/errors/failed.py:160 users/exceptions.py:15 #: authentication/errors/failed.py:161 users/exceptions.py:15
msgid "Phone not set" msgid "Phone not set"
msgstr "手机号没有设置" msgstr "手机号没有设置"
@ -2094,6 +2095,10 @@ msgstr "设置手机号码启用"
msgid "Clear phone number to disable" msgid "Clear phone number to disable"
msgstr "清空手机号码禁用" msgstr "清空手机号码禁用"
#: authentication/middleware.py:76 settings/utils/ldap.py:652
msgid "Authentication failed (before login check failed): {}"
msgstr "认证失败(登录前检查失败): {}"
#: authentication/mixins.py:256 #: authentication/mixins.py:256
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "该 MFA ({}) 方式没有启用" msgstr "该 MFA ({}) 方式没有启用"
@ -2279,6 +2284,7 @@ msgid "Need MFA for view auth"
msgstr "需要 MFA 认证来查看账号信息" msgstr "需要 MFA 认证来查看账号信息"
#: authentication/templates/authentication/_mfa_confirm_modal.html:20 #: authentication/templates/authentication/_mfa_confirm_modal.html:20
#: authentication/templates/authentication/auth_fail_flash_message_standalone.html:37
#: templates/_modal.html:23 templates/flash_message_standalone.html:37 #: templates/_modal.html:23 templates/flash_message_standalone.html:37
#: users/templates/users/user_password_verify.html:20 #: users/templates/users/user_password_verify.html:20
msgid "Confirm" msgid "Confirm"
@ -2293,7 +2299,7 @@ msgstr "代码错误"
#: authentication/templates/authentication/_msg_reset_password.html:3 #: authentication/templates/authentication/_msg_reset_password.html:3
#: authentication/templates/authentication/_msg_rest_password_success.html:2 #: authentication/templates/authentication/_msg_rest_password_success.html:2
#: authentication/templates/authentication/_msg_rest_public_key_success.html:2 #: authentication/templates/authentication/_msg_rest_public_key_success.html:2
#: jumpserver/conf.py:316 ops/tasks.py:145 ops/tasks.py:148 #: jumpserver/conf.py:390 ops/tasks.py:145 ops/tasks.py:148
#: perms/templates/perms/_msg_item_permissions_expire.html:3 #: perms/templates/perms/_msg_item_permissions_expire.html:3
#: perms/templates/perms/_msg_permed_items_expire.html:3 #: perms/templates/perms/_msg_permed_items_expire.html:3
#: tickets/templates/tickets/approve_check_password.html:33 #: tickets/templates/tickets/approve_check_password.html:33
@ -2376,6 +2382,11 @@ msgid ""
"security issues" "security issues"
msgstr "如果这次公钥更新不是由你发起的,那么你的账号可能存在安全问题" msgstr "如果这次公钥更新不是由你发起的,那么你的账号可能存在安全问题"
#: authentication/templates/authentication/auth_fail_flash_message_standalone.html:28
#: templates/flash_message_standalone.html:28 tickets/const.py:20
msgid "Cancel"
msgstr "取消"
#: authentication/templates/authentication/login.html:221 #: authentication/templates/authentication/login.html:221
msgid "Welcome back, please enter username and password to login" msgid "Welcome back, please enter username and password to login"
msgstr "欢迎回来,请输入用户名和密码登录" msgstr "欢迎回来,请输入用户名和密码登录"
@ -2681,6 +2692,14 @@ msgstr "企业微信错误,请联系系统管理员"
msgid "Signature does not match" msgid "Signature does not match"
msgstr "签名不匹配" msgstr "签名不匹配"
#: common/sdk/sms/cmpp2.py:46
msgid "sp_id is 6 bits"
msgstr "SP_id 为6位"
#: common/sdk/sms/cmpp2.py:216
msgid "Failed to connect to the CMPP gateway server, err: {}"
msgstr "连接网关服务器错误,错误:{}"
#: common/sdk/sms/endpoint.py:16 #: common/sdk/sms/endpoint.py:16
msgid "Alibaba cloud" msgid "Alibaba cloud"
msgstr "阿里云" msgstr "阿里云"
@ -2733,11 +2752,11 @@ msgstr "不能包含特殊字符"
msgid "The mobile phone number format is incorrect" msgid "The mobile phone number format is incorrect"
msgstr "手机号格式不正确" msgstr "手机号格式不正确"
#: jumpserver/conf.py:315 #: jumpserver/conf.py:389
msgid "Create account successfully" msgid "Create account successfully"
msgstr "创建账号成功" msgstr "创建账号成功"
#: jumpserver/conf.py:317 #: jumpserver/conf.py:391
msgid "Your account has been created successfully" msgid "Your account has been created successfully"
msgstr "你的账号已创建成功" msgstr "你的账号已创建成功"
@ -2990,8 +3009,8 @@ msgstr "组织存在资源 ({}) 不能被删除"
msgid "App organizations" msgid "App organizations"
msgstr "组织管理" msgstr "组织管理"
#: orgs/mixins/models.py:57 orgs/mixins/serializers.py:25 orgs/models.py:80 #: orgs/mixins/models.py:57 orgs/mixins/serializers.py:25 orgs/models.py:85
#: orgs/models.py:211 rbac/const.py:7 rbac/models/rolebinding.py:48 #: orgs/models.py:217 rbac/const.py:7 rbac/models/rolebinding.py:48
#: rbac/serializers/rolebinding.py:40 settings/serializers/auth/ldap.py:62 #: rbac/serializers/rolebinding.py:40 settings/serializers/auth/ldap.py:62
#: tickets/models/ticket/general.py:300 tickets/serializers/ticket/ticket.py:71 #: tickets/models/ticket/general.py:300 tickets/serializers/ticket/ticket.py:71
msgid "Organization" msgid "Organization"
@ -3233,27 +3252,27 @@ msgstr "{} 至少有一个系统角色"
msgid "RBAC" msgid "RBAC"
msgstr "RBAC" msgstr "RBAC"
#: rbac/builtin.py:108 #: rbac/builtin.py:111
msgid "SystemAdmin" msgid "SystemAdmin"
msgstr "系统管理员" msgstr "系统管理员"
#: rbac/builtin.py:111 #: rbac/builtin.py:114
msgid "SystemAuditor" msgid "SystemAuditor"
msgstr "系统审计员" msgstr "系统审计员"
#: rbac/builtin.py:114 #: rbac/builtin.py:117
msgid "SystemComponent" msgid "SystemComponent"
msgstr "系统组件" msgstr "系统组件"
#: rbac/builtin.py:120 #: rbac/builtin.py:123
msgid "OrgAdmin" msgid "OrgAdmin"
msgstr "组织管理员" msgstr "组织管理员"
#: rbac/builtin.py:123 #: rbac/builtin.py:126
msgid "OrgAuditor" msgid "OrgAuditor"
msgstr "组织审计员" msgstr "组织审计员"
#: rbac/builtin.py:126 #: rbac/builtin.py:129
msgid "OrgUser" msgid "OrgUser"
msgstr "组织用户" msgstr "组织用户"
@ -3809,12 +3828,12 @@ msgid "Test phone"
msgstr "测试手机号" msgstr "测试手机号"
#: settings/serializers/auth/sms.py:54 #: settings/serializers/auth/sms.py:54
msgid "Gateway account(SP id)" msgid "Enterprise code(SP id)"
msgstr "网关账号(SP id)" msgstr "企业代码(SP id)"
#: settings/serializers/auth/sms.py:55 #: settings/serializers/auth/sms.py:55
msgid "Gateway password(SP secret)" msgid "Shared secret(Shared secret)"
msgstr "网关密码(SP secret)" msgstr "共享密码(Shared secret)"
#: settings/serializers/auth/sms.py:56 #: settings/serializers/auth/sms.py:56
msgid "Original number(Src id)" msgid "Original number(Src id)"
@ -3829,6 +3848,7 @@ msgid "Template"
msgstr "模板" msgstr "模板"
#: settings/serializers/auth/sms.py:61 #: settings/serializers/auth/sms.py:61
#, python-brace-format
msgid "" msgid ""
"Template need contain {code} and Signature + template length does not exceed " "Template need contain {code} and Signature + template length does not exceed "
"67 words. For example, your verification code is {code}, which is valid for " "67 words. For example, your verification code is {code}, which is valid for "
@ -3846,7 +3866,7 @@ msgstr "模板需要包含 {code}"
msgid "Signature + Template must not exceed 65 words" msgid "Signature + Template must not exceed 65 words"
msgstr "模板+签名不能超过65个字" msgstr "模板+签名不能超过65个字"
#: settings/serializers/auth/sso.py:12 #: settings/serializers/auth/sso.py:11
msgid "Enable SSO auth" msgid "Enable SSO auth"
msgstr "启用 SSO Token 认证" msgstr "启用 SSO Token 认证"
@ -4480,10 +4500,6 @@ msgstr "成功匹配 {} 个用户"
msgid "Authentication failed (configuration incorrect): {}" msgid "Authentication failed (configuration incorrect): {}"
msgstr "认证失败(配置错误): {}" msgstr "认证失败(配置错误): {}"
#: settings/utils/ldap.py:652
msgid "Authentication failed (before login check failed): {}"
msgstr "认证失败(登录前检查失败): {}"
#: settings/utils/ldap.py:654 #: settings/utils/ldap.py:654
msgid "Authentication failed (username or password incorrect): {}" msgid "Authentication failed (username or password incorrect): {}"
msgstr "认证失败 (用户名或密码不正确): {}" msgstr "认证失败 (用户名或密码不正确): {}"
@ -4649,10 +4665,6 @@ msgstr "验证码已发送"
msgid "Home page" msgid "Home page"
msgstr "首页" msgstr "首页"
#: templates/flash_message_standalone.html:28 tickets/const.py:20
msgid "Cancel"
msgstr "取消"
#: templates/resource_download.html:18 templates/resource_download.html:31 #: templates/resource_download.html:18 templates/resource_download.html:31
msgid "Client" msgid "Client"
msgstr "客户端" msgstr "客户端"
@ -6411,11 +6423,11 @@ msgstr "云账号"
msgid "Test cloud account" msgid "Test cloud account"
msgstr "测试云账号" msgstr "测试云账号"
#: xpack/plugins/cloud/models.py:85 xpack/plugins/cloud/serializers/task.py:66 #: xpack/plugins/cloud/models.py:85 xpack/plugins/cloud/serializers/task.py:67
msgid "Account" msgid "Account"
msgstr "账号" msgstr "账号"
#: xpack/plugins/cloud/models.py:88 xpack/plugins/cloud/serializers/task.py:37 #: xpack/plugins/cloud/models.py:88 xpack/plugins/cloud/serializers/task.py:38
msgid "Regions" msgid "Regions"
msgstr "地域" msgstr "地域"
@ -6423,19 +6435,19 @@ msgstr "地域"
msgid "Hostname strategy" msgid "Hostname strategy"
msgstr "主机名策略" msgstr "主机名策略"
#: xpack/plugins/cloud/models.py:100 xpack/plugins/cloud/serializers/task.py:67 #: xpack/plugins/cloud/models.py:100 xpack/plugins/cloud/serializers/task.py:68
msgid "Unix admin user" msgid "Unix admin user"
msgstr "Unix 管理员" msgstr "Unix 管理员"
#: xpack/plugins/cloud/models.py:104 xpack/plugins/cloud/serializers/task.py:68 #: xpack/plugins/cloud/models.py:104 xpack/plugins/cloud/serializers/task.py:69
msgid "Windows admin user" msgid "Windows admin user"
msgstr "Windows 管理员" msgstr "Windows 管理员"
#: xpack/plugins/cloud/models.py:110 xpack/plugins/cloud/serializers/task.py:45 #: xpack/plugins/cloud/models.py:110 xpack/plugins/cloud/serializers/task.py:46
msgid "IP network segment group" msgid "IP network segment group"
msgstr "IP网段组" msgstr "IP网段组"
#: xpack/plugins/cloud/models.py:113 xpack/plugins/cloud/serializers/task.py:71 #: xpack/plugins/cloud/models.py:113 xpack/plugins/cloud/serializers/task.py:72
msgid "Always update" msgid "Always update"
msgstr "总是更新" msgstr "总是更新"
@ -6740,32 +6752,34 @@ msgstr "测试端口"
#: xpack/plugins/cloud/serializers/task.py:29 #: xpack/plugins/cloud/serializers/task.py:29
msgid "" msgid ""
"The IP address that is first matched to will be used as the IP of the " "Only instances matching the IP range will be synced. <br>If the instance "
"created asset. <br>The default * indicates a random match. <br>Format for " "contains multiple IP addresses, the first IP address that matches will be "
"comma-delimited string, Such as: 192.168.1.0/24, 10.1.1.1-10.1.1.20" "used as the IP for the created asset. <br>The default value of * means sync "
"all instances and randomly match IP addresses. <br>Format for comma-"
"delimited string, Such as: 192.168.1.0/24, 10.1.1.1-10.1.1.20"
msgstr "" msgstr ""
"只有匹配到 IP 段的实例会被同步。<br>如果实例包含多个 IP 地址,那么第一个匹配" "只有匹配到 IP 段的实例会被同步。<br>如果实例包含多个 IP 地址,那么第一个匹配"
"到的 IP 地址将被用作创建的资产的 IP。<br>默认值 * 表示同步所有实例和随机匹配 " "到的 IP 地址将被用作创建的资产的 IP。<br>默认值 * 表示同步所有实例和随机匹配 "
"IP 地址。<br>格式为以逗号分隔的字符串,例如:192.168.1.0/24,10.1.1.1-10.1.1.20" "IP 地址。<br>格式为以逗号分隔的字符串,例如:192.168.1.0/24,10.1.1.1-10.1.1.20"
#: xpack/plugins/cloud/serializers/task.py:35 #: xpack/plugins/cloud/serializers/task.py:36
msgid "History count" msgid "History count"
msgstr "执行次数" msgstr "执行次数"
#: xpack/plugins/cloud/serializers/task.py:36 #: xpack/plugins/cloud/serializers/task.py:37
msgid "Instance count" msgid "Instance count"
msgstr "实例个数" msgstr "实例个数"
#: xpack/plugins/cloud/serializers/task.py:65 #: xpack/plugins/cloud/serializers/task.py:66
msgid "Linux admin user" msgid "Linux admin user"
msgstr "Linux 管理员" msgstr "Linux 管理员"
#: xpack/plugins/cloud/serializers/task.py:70 #: xpack/plugins/cloud/serializers/task.py:71
#: xpack/plugins/gathered_user/serializers.py:20 #: xpack/plugins/gathered_user/serializers.py:20
msgid "Periodic display" msgid "Periodic display"
msgstr "定时执行" msgstr "定时执行"
#: xpack/plugins/cloud/utils.py:68 #: xpack/plugins/cloud/utils.py:69
msgid "Account unavailable" msgid "Account unavailable"
msgstr "账号无效" msgstr "账号无效"

View File

@ -136,4 +136,7 @@ class SMSTestingAPI(GenericAPIView):
error = e.detail error = e.detail
status_code = status.HTTP_400_BAD_REQUEST status_code = status.HTTP_400_BAD_REQUEST
data = {'error': error} data = {'error': error}
except Exception as e:
status_code = status.HTTP_400_BAD_REQUEST
data = {'error': str(e)}
return Response(status=status_code, data=data) return Response(status=status_code, data=data)

View File

@ -51,8 +51,8 @@ class TencentSMSSettingSerializer(BaseSMSSettingSerializer):
class CMPP2SMSSettingSerializer(BaseSMSSettingSerializer): class CMPP2SMSSettingSerializer(BaseSMSSettingSerializer):
CMPP2_HOST = serializers.CharField(max_length=256, required=True, label=_('Host')) CMPP2_HOST = serializers.CharField(max_length=256, required=True, label=_('Host'))
CMPP2_PORT = serializers.IntegerField(default=7890, label=_('Port')) CMPP2_PORT = serializers.IntegerField(default=7890, label=_('Port'))
CMPP2_SP_ID = serializers.CharField(max_length=128, required=True, label=_('Gateway account(SP id)')) CMPP2_SP_ID = serializers.CharField(max_length=128, required=True, label=_('Enterprise code(SP id)'))
CMPP2_SP_SECRET = EncryptedField(max_length=256, required=False, label=_('Gateway password(SP secret)')) CMPP2_SP_SECRET = EncryptedField(max_length=256, required=False, label=_('Shared secret(Shared secret)'))
CMPP2_SRC_ID = serializers.CharField(max_length=256, required=False, label=_('Original number(Src id)')) CMPP2_SRC_ID = serializers.CharField(max_length=256, required=False, label=_('Original number(Src id)'))
CMPP2_SERVICE_ID = serializers.CharField(max_length=256, required=True, label=_('Business type(Service id)')) CMPP2_SERVICE_ID = serializers.CharField(max_length=256, required=True, label=_('Business type(Service id)'))
CMPP2_VERIFY_SIGN_NAME = serializers.CharField(max_length=256, required=True, label=_('Signature')) CMPP2_VERIFY_SIGN_NAME = serializers.CharField(max_length=256, required=True, label=_('Signature'))