From c9ca81e80f451e6f55f70e23e40d54a90b119831 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Tue, 8 Oct 2019 17:14:33 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E9=82=AE=E4=BB=B6=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E8=AF=95=E9=82=AE=E4=BB=B6=E6=94=B6?= =?UTF-8?q?=E4=BB=B6=E4=BA=BA=E9=85=8D=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jumpserver/settings.py | 1 + apps/locale/zh/LC_MESSAGES/django.mo | Bin 80631 -> 80778 bytes apps/locale/zh/LC_MESSAGES/django.po | 323 ++++++++++++++------------- apps/settings/api.py | 6 +- apps/settings/forms.py | 4 + apps/settings/serializers.py | 1 + 6 files changed, 179 insertions(+), 156 deletions(-) diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index d2eb26ca7..c446508f1 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -357,6 +357,7 @@ EMAIL_PORT = 25 EMAIL_HOST_USER = 'noreply@jumpserver.org' EMAIL_HOST_PASSWORD = '' EMAIL_FROM = '' +EMAIL_RECIPIENT = '' EMAIL_USE_SSL = False EMAIL_USE_TLS = False EMAIL_SUBJECT_PREFIX = '[JMS] ' diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 6701de0ac2621b371c3748dafa2296f05bdc7fd0..4d853714e2fee29dd0f111503dab31528d3d45e8 100644 GIT binary patch delta 19963 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 delta 19857 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index a12df41ac..4240cb36f 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Jumpserver 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-25 15:11+0800\n" +"POT-Creation-Date: 2019-10-08 17:09+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -86,11 +86,11 @@ msgstr "运行参数" #: assets/templates/assets/system_user_list.html:55 audits/models.py:19 #: audits/templates/audits/ftp_log_list.html:44 #: audits/templates/audits/ftp_log_list.html:74 -#: perms/forms/asset_permission.py:79 perms/models/asset_permission.py:80 +#: perms/forms/asset_permission.py:80 perms/models/asset_permission.py:80 #: perms/templates/perms/asset_permission_create_update.html:45 #: perms/templates/perms/asset_permission_list.html:52 #: perms/templates/perms/asset_permission_list.html:121 -#: terminal/backends/command/models.py:13 terminal/models.py:156 +#: terminal/backends/command/models.py:13 terminal/models.py:157 #: terminal/templates/terminal/command_list.html:30 #: terminal/templates/terminal/command_list.html:66 #: terminal/templates/terminal/session_list.html:28 @@ -127,7 +127,7 @@ msgstr "资产" #: assets/templates/assets/system_user_detail.html:58 #: assets/templates/assets/system_user_list.html:51 ops/models/adhoc.py:37 #: ops/templates/ops/task_detail.html:60 ops/templates/ops/task_list.html:11 -#: orgs/models.py:11 perms/models/base.py:48 +#: orgs/models.py:12 perms/models/base.py:48 #: perms/templates/perms/asset_permission_detail.html:62 #: perms/templates/perms/asset_permission_list.html:49 #: perms/templates/perms/asset_permission_list.html:68 @@ -141,8 +141,8 @@ msgstr "资产" #: settings/templates/settings/command_storage_create.html:41 #: settings/templates/settings/replay_storage_create.html:44 #: settings/templates/settings/terminal_setting.html:83 -#: settings/templates/settings/terminal_setting.html:105 terminal/models.py:22 -#: terminal/models.py:259 terminal/templates/terminal/terminal_detail.html:43 +#: settings/templates/settings/terminal_setting.html:105 terminal/models.py:23 +#: terminal/models.py:260 terminal/templates/terminal/terminal_detail.html:43 #: terminal/templates/terminal/terminal_list.html:29 users/models/group.py:14 #: users/models/user.py:373 users/templates/users/_select_user_modal.html:13 #: users/templates/users/user_detail.html:63 @@ -193,7 +193,7 @@ msgstr "参数" #: assets/templates/assets/cmd_filter_detail.html:77 #: assets/templates/assets/domain_detail.html:72 #: assets/templates/assets/system_user_detail.html:100 -#: ops/templates/ops/adhoc_detail.html:86 orgs/models.py:15 +#: ops/templates/ops/adhoc_detail.html:86 orgs/models.py:16 #: perms/models/base.py:54 #: perms/templates/perms/asset_permission_detail.html:98 #: perms/templates/perms/remote_app_permission_detail.html:90 @@ -218,7 +218,7 @@ msgstr "创建者" #: assets/templates/assets/domain_detail.html:68 #: assets/templates/assets/system_user_detail.html:96 ops/models/adhoc.py:45 #: ops/templates/ops/adhoc_detail.html:90 ops/templates/ops/task_detail.html:64 -#: orgs/models.py:16 perms/models/base.py:55 +#: orgs/models.py:17 perms/models/base.py:55 #: perms/templates/perms/asset_permission_detail.html:94 #: perms/templates/perms/remote_app_permission_detail.html:86 #: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:17 @@ -252,10 +252,10 @@ msgstr "创建日期" #: assets/templates/assets/domain_list.html:28 #: assets/templates/assets/system_user_detail.html:104 #: assets/templates/assets/system_user_list.html:59 ops/models/adhoc.py:43 -#: orgs/models.py:17 perms/models/base.py:56 +#: orgs/models.py:18 perms/models/base.py:56 #: perms/templates/perms/asset_permission_detail.html:102 #: perms/templates/perms/remote_app_permission_detail.html:94 -#: settings/models.py:34 terminal/models.py:32 +#: settings/models.py:34 terminal/models.py:33 #: terminal/templates/terminal/terminal_detail.html:63 users/models/group.py:15 #: users/models/user.py:406 users/templates/users/user_detail.html:129 #: users/templates/users/user_group_detail.html:67 @@ -275,7 +275,7 @@ msgstr "创建日期" msgid "Comment" msgstr "备注" -#: applications/models/remote_app.py:49 perms/forms/remote_app_permission.py:37 +#: applications/models/remote_app.py:49 perms/forms/remote_app_permission.py:40 #: perms/models/remote_app_permission.py:15 #: perms/templates/perms/remote_app_permission_create_update.html:48 #: perms/templates/perms/remote_app_permission_detail.html:27 @@ -390,7 +390,7 @@ msgstr "详情" #: applications/templates/applications/remote_app_detail.html:21 #: applications/templates/applications/remote_app_list.html:54 -#: assets/templates/assets/_asset_user_list.html:69 +#: assets/templates/assets/_asset_user_list.html:74 #: assets/templates/assets/admin_user_detail.html:24 #: assets/templates/assets/admin_user_list.html:26 #: assets/templates/assets/admin_user_list.html:111 @@ -452,7 +452,7 @@ msgstr "更新" #: assets/templates/assets/label_list.html:40 #: assets/templates/assets/system_user_detail.html:30 #: assets/templates/assets/system_user_list.html:86 audits/models.py:34 -#: authentication/templates/authentication/_access_key_modal.html:64 +#: authentication/templates/authentication/_access_key_modal.html:65 #: ops/templates/ops/task_list.html:69 #: perms/templates/perms/asset_permission_detail.html:34 #: perms/templates/perms/asset_permission_list.html:179 @@ -499,7 +499,7 @@ msgstr "创建远程应用" #: applications/templates/applications/remote_app_list.html:24 #: applications/templates/applications/user_remote_app_list.html:20 #: assets/models/cmd_filter.py:54 -#: assets/templates/assets/_asset_user_list.html:20 +#: assets/templates/assets/_asset_user_list.html:25 #: assets/templates/assets/admin_user_list.html:51 #: assets/templates/assets/asset_list.html:100 #: assets/templates/assets/cmd_filter_list.html:28 @@ -510,7 +510,7 @@ msgstr "创建远程应用" #: assets/templates/assets/system_user_list.html:60 audits/models.py:38 #: audits/templates/audits/operate_log_list.html:47 #: audits/templates/audits/operate_log_list.html:73 -#: authentication/templates/authentication/_access_key_modal.html:33 +#: authentication/templates/authentication/_access_key_modal.html:34 #: ops/templates/ops/adhoc_history.html:59 ops/templates/ops/task_adhoc.html:64 #: ops/templates/ops/task_history.html:65 ops/templates/ops/task_list.html:18 #: perms/forms/asset_permission.py:21 @@ -624,9 +624,9 @@ msgid "Domain" msgstr "网域" #: assets/forms/asset.py:72 assets/forms/asset.py:106 assets/forms/asset.py:119 -#: assets/forms/asset.py:155 assets/models/node.py:413 +#: assets/forms/asset.py:155 assets/models/node.py:409 #: assets/templates/assets/asset_create.html:42 -#: perms/forms/asset_permission.py:82 perms/forms/asset_permission.py:89 +#: perms/forms/asset_permission.py:83 perms/forms/asset_permission.py:90 #: perms/templates/perms/asset_permission_list.html:53 #: perms/templates/perms/asset_permission_list.html:74 #: perms/templates/perms/asset_permission_list.html:124 @@ -680,7 +680,7 @@ msgstr "SSH网关,支持代理SSH,RDP和VNC" #: assets/models/base.py:29 assets/models/gathered_user.py:16 #: assets/templates/assets/_asset_user_auth_update_modal.html:15 #: assets/templates/assets/_asset_user_auth_view_modal.html:21 -#: assets/templates/assets/_asset_user_list.html:16 +#: assets/templates/assets/_asset_user_list.html:21 #: assets/templates/assets/admin_user_detail.html:60 #: assets/templates/assets/admin_user_list.html:45 #: assets/templates/assets/domain_gateway_list.html:71 @@ -719,7 +719,7 @@ msgstr "密码或密钥密码" #: authentication/forms.py:15 #: authentication/templates/authentication/login.html:68 #: authentication/templates/authentication/new_login.html:95 -#: settings/forms.py:110 users/forms.py:16 users/forms.py:28 +#: settings/forms.py:114 users/forms.py:16 users/forms.py:28 #: users/templates/users/reset_password.html:53 #: users/templates/users/user_password_authentication.html:18 #: users/templates/users/user_password_update.html:44 @@ -776,13 +776,13 @@ msgstr "使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig" #: assets/models/asset.py:135 assets/models/domain.py:49 #: assets/serializers/asset_user.py:28 #: assets/templates/assets/_asset_list_modal.html:47 -#: assets/templates/assets/_asset_user_list.html:15 +#: assets/templates/assets/_asset_user_list.html:20 #: assets/templates/assets/asset_detail.html:64 #: assets/templates/assets/asset_list.html:97 #: assets/templates/assets/domain_gateway_list.html:68 #: assets/templates/assets/user_asset_list.html:49 #: audits/templates/audits/login_log_list.html:60 -#: perms/templates/perms/asset_permission_asset.html:58 settings/forms.py:140 +#: perms/templates/perms/asset_permission_asset.html:58 settings/forms.py:144 #: users/templates/users/_granted_assets.html:26 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:54 #: xpack/plugins/gathered_user/templates/gathered_user/gathered_user_list.html:73 @@ -794,12 +794,12 @@ msgstr "IP" #: assets/templates/assets/_asset_list_modal.html:46 #: assets/templates/assets/_asset_user_auth_update_modal.html:9 #: assets/templates/assets/_asset_user_auth_view_modal.html:15 -#: assets/templates/assets/_asset_user_list.html:14 +#: assets/templates/assets/_asset_user_list.html:19 #: assets/templates/assets/asset_detail.html:60 #: assets/templates/assets/asset_list.html:96 #: assets/templates/assets/user_asset_list.html:48 #: perms/templates/perms/asset_permission_asset.html:57 -#: perms/templates/perms/asset_permission_list.html:73 settings/forms.py:139 +#: perms/templates/perms/asset_permission_list.html:73 settings/forms.py:143 #: users/templates/users/_granted_assets.html:25 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:53 #: xpack/plugins/gathered_user/templates/gathered_user/gathered_user_list.html:72 @@ -908,7 +908,7 @@ msgid "Latest version" msgstr "最新版本" #: assets/models/authbook.py:26 -#: assets/templates/assets/_asset_user_list.html:17 +#: assets/templates/assets/_asset_user_list.html:22 #: ops/templates/ops/adhoc_history.html:58 #: ops/templates/ops/adhoc_history_detail.html:57 #: ops/templates/ops/task_adhoc.html:58 ops/templates/ops/task_history.html:64 @@ -999,7 +999,7 @@ msgid "Regex" msgstr "正则表达式" #: assets/models/cmd_filter.py:39 ops/models/command.py:21 -#: ops/templates/ops/command_execution_list.html:64 terminal/models.py:162 +#: ops/templates/ops/command_execution_list.html:64 terminal/models.py:163 #: terminal/templates/terminal/command_list.html:28 #: terminal/templates/terminal/command_list.html:68 #: terminal/templates/terminal/session_detail.html:48 @@ -1086,7 +1086,7 @@ msgstr "默认资产组" #: audits/templates/audits/password_change_log_list.html:56 #: ops/templates/ops/command_execution_list.html:38 #: ops/templates/ops/command_execution_list.html:63 -#: perms/forms/asset_permission.py:73 perms/forms/remote_app_permission.py:31 +#: perms/forms/asset_permission.py:74 perms/forms/remote_app_permission.py:34 #: perms/models/base.py:49 #: perms/templates/perms/asset_permission_create_update.html:41 #: perms/templates/perms/asset_permission_list.html:50 @@ -1094,20 +1094,20 @@ msgstr "默认资产组" #: perms/templates/perms/remote_app_permission_create_update.html:43 #: perms/templates/perms/remote_app_permission_list.html:15 #: templates/index.html:87 terminal/backends/command/models.py:12 -#: terminal/models.py:155 terminal/templates/terminal/command_list.html:29 +#: terminal/models.py:156 terminal/templates/terminal/command_list.html:29 #: terminal/templates/terminal/command_list.html:65 #: terminal/templates/terminal/session_list.html:27 #: terminal/templates/terminal/session_list.html:71 users/forms.py:312 #: users/models/user.py:127 users/models/user.py:143 users/models/user.py:500 #: users/serializers/v1.py:130 users/templates/users/user_group_detail.html:78 #: users/templates/users/user_group_list.html:36 users/views/user.py:250 -#: xpack/plugins/orgs/forms.py:26 +#: xpack/plugins/orgs/forms.py:28 #: xpack/plugins/orgs/templates/orgs/org_detail.html:113 #: xpack/plugins/orgs/templates/orgs/org_list.html:15 msgid "User" msgstr "用户" -#: assets/models/label.py:19 assets/models/node.py:404 +#: assets/models/label.py:19 assets/models/node.py:400 #: assets/templates/assets/label_list.html:15 settings/models.py:30 msgid "Value" msgstr "值" @@ -1120,15 +1120,15 @@ msgstr "分类" msgid "New node" msgstr "新节点" -#: assets/models/node.py:328 +#: assets/models/node.py:324 msgid "ungrouped" msgstr "未分组" -#: assets/models/node.py:330 +#: assets/models/node.py:326 msgid "empty" msgstr "空" -#: assets/models/node.py:403 +#: assets/models/node.py:399 msgid "Key" msgstr "键" @@ -1185,7 +1185,7 @@ msgstr "登录模式" #: assets/models/user.py:162 assets/templates/assets/user_asset_list.html:52 #: audits/models.py:20 audits/templates/audits/ftp_log_list.html:52 #: audits/templates/audits/ftp_log_list.html:75 -#: perms/forms/asset_permission.py:85 perms/forms/remote_app_permission.py:40 +#: perms/forms/asset_permission.py:86 perms/forms/remote_app_permission.py:43 #: perms/models/asset_permission.py:82 perms/models/remote_app_permission.py:16 #: perms/templates/perms/asset_permission_detail.html:140 #: perms/templates/perms/asset_permission_list.html:54 @@ -1194,7 +1194,7 @@ msgstr "登录模式" #: perms/templates/perms/remote_app_permission_detail.html:131 #: perms/templates/perms/remote_app_permission_list.html:18 #: templates/_nav.html:45 terminal/backends/command/models.py:14 -#: terminal/models.py:157 terminal/templates/terminal/command_list.html:31 +#: terminal/models.py:158 terminal/templates/terminal/command_list.html:31 #: terminal/templates/terminal/command_list.html:67 #: terminal/templates/terminal/session_list.html:29 #: terminal/templates/terminal/session_list.html:73 @@ -1231,7 +1231,7 @@ msgid "Protocol duplicate: {}" msgstr "协议重复: {}" #: assets/serializers/asset.py:65 assets/serializers/asset_user.py:29 -#: assets/templates/assets/_asset_user_list.html:18 +#: assets/templates/assets/_asset_user_list.html:23 msgid "Connectivity" msgstr "连接" @@ -1273,7 +1273,7 @@ msgstr "密钥不合法" msgid "value" msgstr "值" -#: assets/serializers/node.py:34 +#: assets/serializers/node.py:36 msgid "The same level node name cannot be the same" msgstr "同级别节点名字不能重复" @@ -1443,7 +1443,7 @@ msgid "Please input password" msgstr "请输入密码" #: assets/templates/assets/_asset_user_auth_update_modal.html:68 -#: assets/templates/assets/asset_detail.html:306 +#: assets/templates/assets/asset_detail.html:304 #: users/templates/users/user_detail.html:313 #: users/templates/users/user_detail.html:340 #: xpack/plugins/interface/views.py:35 @@ -1464,14 +1464,14 @@ msgstr "获取认证信息错误" #: assets/templates/assets/_asset_user_auth_view_modal.html:97 #: assets/templates/assets/_user_asset_detail_modal.html:23 -#: authentication/templates/authentication/_access_key_modal.html:141 +#: authentication/templates/authentication/_access_key_modal.html:142 #: authentication/templates/authentication/_mfa_confirm_modal.html:53 #: settings/templates/settings/_ldap_list_users_modal.html:92 #: templates/_modal.html:22 msgid "Close" msgstr "关闭" -#: assets/templates/assets/_asset_user_list.html:19 +#: assets/templates/assets/_asset_user_list.html:24 #: audits/templates/audits/operate_log_list.html:77 #: audits/templates/audits/password_change_log_list.html:59 #: ops/templates/ops/task_adhoc.html:63 @@ -1480,16 +1480,16 @@ msgstr "关闭" msgid "Datetime" msgstr "日期" -#: assets/templates/assets/_asset_user_list.html:36 +#: assets/templates/assets/_asset_user_list.html:41 #: assets/templates/assets/asset_list.html:137 msgid "Test datetime: " msgstr "测试日期: " -#: assets/templates/assets/_asset_user_list.html:68 +#: assets/templates/assets/_asset_user_list.html:73 msgid "View" msgstr "查看" -#: assets/templates/assets/_asset_user_list.html:70 +#: assets/templates/assets/_asset_user_list.html:75 #: assets/templates/assets/admin_user_assets.html:61 #: assets/templates/assets/asset_asset_user_list.html:57 #: assets/templates/assets/asset_detail.html:178 @@ -1498,7 +1498,7 @@ msgstr "查看" msgid "Test" msgstr "测试" -#: assets/templates/assets/_asset_user_list.html:71 +#: assets/templates/assets/_asset_user_list.html:76 #: assets/templates/assets/system_user_assets.html:72 #: assets/templates/assets/system_user_detail.html:142 msgid "Push" @@ -1508,7 +1508,7 @@ msgstr "推送" msgid "Test gateway test connection" msgstr "测试连接网关" -#: assets/templates/assets/_gateway_test_modal.html:10 terminal/models.py:24 +#: assets/templates/assets/_gateway_test_modal.html:10 terminal/models.py:25 msgid "SSH Port" msgstr "SSH端口" @@ -1754,7 +1754,7 @@ msgid "Date joined" msgstr "创建日期" #: assets/templates/assets/asset_detail.html:150 authentication/models.py:15 -#: authentication/templates/authentication/_access_key_modal.html:31 +#: authentication/templates/authentication/_access_key_modal.html:32 #: perms/models/base.py:51 #: perms/templates/perms/asset_permission_create_update.html:55 #: perms/templates/perms/asset_permission_detail.html:120 @@ -2171,7 +2171,7 @@ msgstr "系统用户资产" #: audits/templates/audits/ftp_log_list.html:76 #: audits/templates/audits/operate_log_list.html:76 #: audits/templates/audits/password_change_log_list.html:58 -#: terminal/models.py:159 terminal/templates/terminal/session_list.html:30 +#: terminal/models.py:160 terminal/templates/terminal/session_list.html:30 #: terminal/templates/terminal/session_list.html:74 #: terminal/templates/terminal/terminal_detail.html:47 msgid "Remote addr" @@ -2197,7 +2197,7 @@ msgid "Success" msgstr "成功" #: audits/models.py:32 -#: authentication/templates/authentication/_access_key_modal.html:21 +#: authentication/templates/authentication/_access_key_modal.html:22 #: xpack/plugins/vault/templates/vault/vault.html:46 msgid "Create" msgstr "创建" @@ -2282,7 +2282,7 @@ msgstr "登录日期" #: ops/templates/ops/task_history.html:58 perms/models/base.py:52 #: perms/templates/perms/asset_permission_detail.html:86 #: perms/templates/perms/remote_app_permission_detail.html:78 -#: terminal/models.py:166 terminal/templates/terminal/session_list.html:34 +#: terminal/models.py:167 terminal/templates/terminal/session_list.html:34 #: xpack/plugins/change_auth_plan/models.py:249 #: xpack/plugins/change_auth_plan/models.py:419 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:59 @@ -2310,7 +2310,7 @@ msgid "Search" msgstr "搜索" #: audits/templates/audits/login_log_list.html:56 -#: authentication/templates/authentication/_access_key_modal.html:29 +#: authentication/templates/authentication/_access_key_modal.html:30 #: ops/templates/ops/adhoc_detail.html:49 #: ops/templates/ops/adhoc_history_detail.html:49 #: ops/templates/ops/task_detail.html:56 @@ -2329,7 +2329,7 @@ msgid "City" msgstr "城市" #: audits/templates/audits/login_log_list.html:65 -#: authentication/templates/authentication/_access_key_modal.html:32 +#: authentication/templates/authentication/_access_key_modal.html:33 #: ops/templates/ops/task_list.html:16 msgid "Date" msgstr "日期" @@ -2490,27 +2490,27 @@ msgstr "API Key列表" msgid "Using api key sign api header, every requests header difference" msgstr "使用api key签名请求头,每个请求的头部是不一样的" -#: authentication/templates/authentication/_access_key_modal.html:18 +#: authentication/templates/authentication/_access_key_modal.html:19 msgid "docs" msgstr "文档" -#: authentication/templates/authentication/_access_key_modal.html:30 +#: authentication/templates/authentication/_access_key_modal.html:31 msgid "Secret" msgstr "密文" -#: authentication/templates/authentication/_access_key_modal.html:47 +#: authentication/templates/authentication/_access_key_modal.html:48 #: users/templates/users/_granted_assets.html:75 msgid "Show" msgstr "显示" -#: authentication/templates/authentication/_access_key_modal.html:65 +#: authentication/templates/authentication/_access_key_modal.html:66 #: users/models/user.py:330 users/templates/users/user_profile.html:94 #: users/templates/users/user_profile.html:163 #: users/templates/users/user_profile.html:166 msgid "Disable" msgstr "禁用" -#: authentication/templates/authentication/_access_key_modal.html:66 +#: authentication/templates/authentication/_access_key_modal.html:67 #: users/models/user.py:331 users/templates/users/user_profile.html:92 #: users/templates/users/user_profile.html:170 msgid "Enable" @@ -2740,6 +2740,10 @@ msgstr "" "
Luna是单独部署的一个程序,你需要部署luna,koko,
如果你看到了" "这个页面,证明你访问的不是nginx监听的端口,祝你好运
" +#: jumpserver/views.py:233 +msgid "Websocket server run on port: {}, you should proxy it on nginx" +msgstr "" + #: ops/api/celery.py:54 msgid "Waiting task start" msgstr "等待任务开始" @@ -2752,7 +2756,7 @@ msgstr "" msgid "Interval" msgstr "间隔" -#: ops/models/adhoc.py:38 settings/forms.py:158 +#: ops/models/adhoc.py:38 settings/forms.py:162 msgid "Units: seconds" msgstr "单位: 秒" @@ -3064,7 +3068,7 @@ msgstr "版本" msgid "Run" msgstr "执行" -#: ops/templates/ops/task_list.html:109 +#: ops/templates/ops/task_list.html:108 msgid "Task start: " msgstr "任务开始: " @@ -3095,7 +3099,7 @@ msgstr "命令执行列表" msgid "Command execution" msgstr "命令执行" -#: orgs/mixins/models.py:61 orgs/mixins/serializers.py:26 orgs/models.py:30 +#: orgs/mixins/models.py:61 orgs/mixins/serializers.py:26 orgs/models.py:31 msgid "Organization" msgstr "组织" @@ -3107,7 +3111,7 @@ msgstr "未分组" msgid "Empty" msgstr "空" -#: perms/forms/asset_permission.py:76 perms/forms/remote_app_permission.py:34 +#: perms/forms/asset_permission.py:77 perms/forms/remote_app_permission.py:37 #: perms/models/base.py:50 perms/templates/perms/asset_permission_list.html:51 #: perms/templates/perms/asset_permission_list.html:71 #: perms/templates/perms/asset_permission_list.html:118 @@ -3120,21 +3124,21 @@ msgstr "空" msgid "User group" msgstr "用户组" -#: perms/forms/asset_permission.py:92 +#: perms/forms/asset_permission.py:93 msgid "" "Tips: The RDP protocol does not support separate controls for uploading or " "downloading files" msgstr "提示:RDP 协议不支持单独控制上传或下载文件" -#: perms/forms/asset_permission.py:102 perms/forms/remote_app_permission.py:50 +#: perms/forms/asset_permission.py:103 perms/forms/remote_app_permission.py:53 msgid "User or group at least one required" msgstr "用户和用户组至少选一个" -#: perms/forms/asset_permission.py:111 +#: perms/forms/asset_permission.py:112 msgid "Asset or group at least one required" msgstr "资产和节点至少选一个" -#: perms/models/asset_permission.py:31 settings/forms.py:143 +#: perms/models/asset_permission.py:31 settings/forms.py:147 msgid "All" msgstr "全部" @@ -3382,29 +3386,29 @@ msgstr "远程应用授权远程应用列表" msgid "Test mail sent to {}, please check" msgstr "邮件已经发送{}, 请检查" -#: settings/api.py:53 +#: settings/api.py:55 msgid "Test ldap success" msgstr "连接LDAP成功" -#: settings/api.py:90 +#: settings/api.py:92 msgid "Match {} s users" msgstr "匹配 {} 个用户" -#: settings/api.py:161 +#: settings/api.py:163 msgid "succeed: {} failed: {} total: {}" msgstr "成功:{} 失败:{} 总数:{}" -#: settings/api.py:183 settings/api.py:219 +#: settings/api.py:185 settings/api.py:221 msgid "" "Error: Account invalid (Please make sure the information such as Access key " "or Secret key is correct)" msgstr "错误:账户无效 (请确保 Access key 或 Secret key 等信息正确)" -#: settings/api.py:189 settings/api.py:225 +#: settings/api.py:191 settings/api.py:227 msgid "Create succeed" msgstr "创建成功" -#: settings/api.py:207 settings/api.py:245 +#: settings/api.py:209 settings/api.py:247 #: settings/templates/settings/terminal_setting.html:154 msgid "Delete succeed" msgstr "删除成功" @@ -3458,51 +3462,59 @@ msgid "Tips: Send mail account, default SMTP account as the send account" msgstr "提示:发送邮件账号,默认使用SMTP账号作为发送账号" #: settings/forms.py:93 +msgid "Test recipient" +msgstr "测试收件人" + +#: settings/forms.py:94 +msgid "Tips: Used only as a test mail recipient" +msgstr "提示:仅用来作为测试邮件收件人" + +#: settings/forms.py:97 msgid "Use SSL" msgstr "使用SSL" -#: settings/forms.py:94 +#: settings/forms.py:98 msgid "If SMTP port is 465, may be select" msgstr "如果SMTP端口是465,通常需要启用SSL" -#: settings/forms.py:97 +#: settings/forms.py:101 msgid "Use TLS" msgstr "使用TLS" -#: settings/forms.py:98 +#: settings/forms.py:102 msgid "If SMTP port is 587, may be select" msgstr "如果SMTP端口是587,通常需要启用TLS" -#: settings/forms.py:104 +#: settings/forms.py:108 msgid "LDAP server" msgstr "LDAP地址" -#: settings/forms.py:107 +#: settings/forms.py:111 msgid "Bind DN" msgstr "绑定DN" -#: settings/forms.py:114 +#: settings/forms.py:118 msgid "User OU" msgstr "用户OU" -#: settings/forms.py:115 +#: settings/forms.py:119 msgid "Use | split User OUs" msgstr "使用|分隔各OU" -#: settings/forms.py:119 +#: settings/forms.py:123 msgid "User search filter" msgstr "用户过滤器" -#: settings/forms.py:120 +#: settings/forms.py:124 #, python-format msgid "Choice may be (cn|uid|sAMAccountName)=%(user)s)" msgstr "可能的选项是(cn或uid或sAMAccountName=%(user)s)" -#: settings/forms.py:123 +#: settings/forms.py:127 msgid "User attr map" msgstr "LDAP属性映射" -#: settings/forms.py:125 +#: settings/forms.py:129 msgid "" "User attr map present how to map LDAP user attr to jumpserver, username,name," "email is jumpserver attr" @@ -3510,39 +3522,39 @@ msgstr "" "用户属性映射代表怎样将LDAP中用户属性映射到jumpserver用户上,username, name," "email 是jumpserver的属性" -#: settings/forms.py:134 +#: settings/forms.py:138 msgid "Enable LDAP auth" msgstr "启用LDAP认证" -#: settings/forms.py:144 +#: settings/forms.py:148 msgid "Auto" msgstr "自动" -#: settings/forms.py:151 +#: settings/forms.py:155 msgid "Password auth" msgstr "密码认证" -#: settings/forms.py:154 +#: settings/forms.py:158 msgid "Public key auth" msgstr "密钥认证" -#: settings/forms.py:157 +#: settings/forms.py:161 msgid "Heartbeat interval" msgstr "心跳间隔" -#: settings/forms.py:161 +#: settings/forms.py:165 msgid "List sort by" msgstr "资产列表排序" -#: settings/forms.py:164 +#: settings/forms.py:168 msgid "List page size" msgstr "资产分页每页数量" -#: settings/forms.py:167 +#: settings/forms.py:171 msgid "Session keep duration" msgstr "会话保留时长" -#: settings/forms.py:168 +#: settings/forms.py:172 msgid "" "Units: days, Session, record, command will be delete if more than duration, " "only in database" @@ -3550,72 +3562,72 @@ msgstr "" "单位:天。 会话、录像、命令记录超过该时长将会被删除(仅影响数据库存储, oss等不" "受影响)" -#: settings/forms.py:172 +#: settings/forms.py:176 msgid "Telnet login regex" msgstr "Telnet 成功正则表达式" -#: settings/forms.py:173 +#: settings/forms.py:177 msgid "ex: Last\\s*login|success|成功" msgstr "" "登录telnet服务器成功后的提示正则表达式,如: Last\\s*login|success|成功 " -#: settings/forms.py:184 +#: settings/forms.py:188 msgid "MFA Secondary certification" msgstr "MFA 二次认证" -#: settings/forms.py:186 +#: settings/forms.py:190 msgid "" "After opening, the user login must use MFA secondary authentication (valid " "for all users, including administrators)" msgstr "开启后,用户登录必须使用MFA二次认证(对所有用户有效,包括管理员)" -#: settings/forms.py:192 +#: settings/forms.py:196 msgid "Batch execute commands" msgstr "批量命令" -#: settings/forms.py:193 +#: settings/forms.py:197 msgid "Allow user batch execute commands" msgstr "允许用户批量执行命令" -#: settings/forms.py:196 +#: settings/forms.py:200 msgid "Service account registration" msgstr "终端注册" -#: settings/forms.py:197 +#: settings/forms.py:201 msgid "" "Allow using bootstrap token register service account, when terminal setup, " "can disable it" msgstr "允许使用bootstrap token注册终端, 当终端注册成功后可以禁止" -#: settings/forms.py:203 +#: settings/forms.py:207 msgid "Limit the number of login failures" msgstr "限制登录失败次数" -#: settings/forms.py:207 +#: settings/forms.py:211 msgid "No logon interval" msgstr "禁止登录时间间隔" -#: settings/forms.py:209 +#: settings/forms.py:213 msgid "" "Tip: (unit/minute) if the user has failed to log in for a limited number of " "times, no login is allowed during this time interval." msgstr "" "提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录" -#: settings/forms.py:216 +#: settings/forms.py:220 msgid "Connection max idle time" msgstr "SSH最大空闲时间" -#: settings/forms.py:218 +#: settings/forms.py:222 msgid "" "If idle time more than it, disconnect connection(only ssh now) Unit: minute" msgstr "提示:(单位:分)如果超过该配置没有操作,连接会被断开(仅ssh)" -#: settings/forms.py:224 +#: settings/forms.py:228 msgid "Password expiration time" msgstr "密码过期时间" -#: settings/forms.py:226 +#: settings/forms.py:230 msgid "" "Tip: (unit: day) If the user does not update the password during the time, " "the user password will expire failure;The password expiration reminder mail " @@ -3625,81 +3637,81 @@ msgstr "" "提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期" "提醒邮件将在密码过期前5天内由系统(每天)自动发送给用户" -#: settings/forms.py:235 +#: settings/forms.py:239 msgid "Password minimum length" msgstr "密码最小长度 " -#: settings/forms.py:239 +#: settings/forms.py:243 msgid "Must contain capital letters" msgstr "必须包含大写字母" -#: settings/forms.py:241 +#: settings/forms.py:245 msgid "" "After opening, the user password changes and resets must contain uppercase " "letters" msgstr "开启后,用户密码修改、重置必须包含大写字母" -#: settings/forms.py:246 +#: settings/forms.py:250 msgid "Must contain lowercase letters" msgstr "必须包含小写字母" -#: settings/forms.py:247 +#: settings/forms.py:251 msgid "" "After opening, the user password changes and resets must contain lowercase " "letters" msgstr "开启后,用户密码修改、重置必须包含小写字母" -#: settings/forms.py:252 +#: settings/forms.py:256 msgid "Must contain numeric characters" msgstr "必须包含数字字符" -#: settings/forms.py:253 +#: settings/forms.py:257 msgid "" "After opening, the user password changes and resets must contain numeric " "characters" msgstr "开启后,用户密码修改、重置必须包含数字字符" -#: settings/forms.py:258 +#: settings/forms.py:262 msgid "Must contain special characters" msgstr "必须包含特殊字符" -#: settings/forms.py:259 +#: settings/forms.py:263 msgid "" "After opening, the user password changes and resets must contain special " "characters" msgstr "开启后,用户密码修改、重置必须包含特殊字符" -#: settings/forms.py:266 +#: settings/forms.py:270 msgid "Create user email subject" msgstr "创建用户邮件的主题" -#: settings/forms.py:267 +#: settings/forms.py:271 msgid "" "Tips: When creating a user, send the subject of the email (eg:Create account " "successfully)" msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)" -#: settings/forms.py:271 +#: settings/forms.py:275 msgid "Create user honorific" msgstr "创建用户邮件的敬语" -#: settings/forms.py:272 +#: settings/forms.py:276 msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)" msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 您好)" -#: settings/forms.py:277 +#: settings/forms.py:281 msgid "Create user email content" msgstr "创建用户邮件的内容" -#: settings/forms.py:278 +#: settings/forms.py:282 msgid "Tips:When creating a user, send the content of the email" msgstr "提示: 创建用户时,发送设置密码邮件的内容" -#: settings/forms.py:281 +#: settings/forms.py:285 msgid "Signature" msgstr "署名" -#: settings/forms.py:282 +#: settings/forms.py:286 msgid "Tips: Email signature (eg:jumpserver)" msgstr "提示: 邮件的署名 (例如: jumpserver)" @@ -3894,12 +3906,12 @@ msgid "Password check rule" msgstr "密码校验规则" #: settings/templates/settings/terminal_setting.html:79 terminal/forms.py:27 -#: terminal/models.py:26 +#: terminal/models.py:27 msgid "Command storage" msgstr "命令存储" #: settings/templates/settings/terminal_setting.html:101 terminal/forms.py:32 -#: terminal/models.py:27 +#: terminal/models.py:28 msgid "Replay storage" msgstr "录像存储" @@ -3911,11 +3923,11 @@ msgstr "删除失败" msgid "Are you sure about deleting it?" msgstr "您确定删除吗?" -#: settings/utils.py:90 +#: settings/utils.py:91 msgid "Search no entry matched in ou {}" msgstr "在ou:{}中没有匹配条目" -#: settings/utils.py:122 +#: settings/utils.py:146 msgid "The user source is not LDAP" msgstr "用户来源不是LDAP" @@ -4340,51 +4352,51 @@ msgstr "" "录像文件支持存储到服务器端硬盘、AWS S3、 阿里云 OSS 中,默认存储到服务器端硬" "盘, 更多查看文档" -#: terminal/models.py:23 +#: terminal/models.py:24 msgid "Remote Address" msgstr "远端地址" -#: terminal/models.py:25 +#: terminal/models.py:26 msgid "HTTP Port" msgstr "HTTP端口" -#: terminal/models.py:125 +#: terminal/models.py:126 msgid "Session Online" msgstr "在线会话" -#: terminal/models.py:126 +#: terminal/models.py:127 msgid "CPU Usage" msgstr "CPU使用" -#: terminal/models.py:127 +#: terminal/models.py:128 msgid "Memory Used" msgstr "内存使用" -#: terminal/models.py:128 +#: terminal/models.py:129 msgid "Connections" msgstr "连接数" -#: terminal/models.py:129 +#: terminal/models.py:130 msgid "Threads" msgstr "线程数" -#: terminal/models.py:130 +#: terminal/models.py:131 msgid "Boot Time" msgstr "运行时间" -#: terminal/models.py:161 terminal/templates/terminal/session_list.html:136 +#: terminal/models.py:162 terminal/templates/terminal/session_list.html:136 msgid "Replay" msgstr "回放" -#: terminal/models.py:165 +#: terminal/models.py:166 msgid "Date last active" msgstr "最后活跃日期" -#: terminal/models.py:167 +#: terminal/models.py:168 msgid "Date end" msgstr "结束日期" -#: terminal/models.py:260 +#: terminal/models.py:261 msgid "Args" msgstr "参数" @@ -4512,7 +4524,7 @@ msgid "" "You should use your ssh client tools connect terminal: {}

{}" msgstr "你可以使用ssh客户端工具连接终端" -#: users/api/user.py:173 +#: users/api/user.py:176 msgid "Could not reset self otp, use profile reset instead" msgstr "不能再该页面重置MFA, 请去个人信息页面重置" @@ -4626,7 +4638,7 @@ msgid "Paste your id_rsa.pub here." msgstr "复制你的公钥到这里" #: users/forms.py:269 users/forms.py:274 users/forms.py:316 -#: xpack/plugins/orgs/forms.py:30 +#: xpack/plugins/orgs/forms.py:18 msgid "Select users" msgstr "选择用户" @@ -4643,7 +4655,7 @@ msgstr "管理员" msgid "Application" msgstr "应用程序" -#: users/models/user.py:129 xpack/plugins/orgs/forms.py:38 +#: users/models/user.py:129 xpack/plugins/orgs/forms.py:30 #: xpack/plugins/orgs/templates/orgs/org_list.html:14 msgid "Auditor" msgstr "审计员" @@ -5639,9 +5651,9 @@ msgstr "否" msgid "Run plan manually" msgstr "手动执行计划" -#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:179 -#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:103 -#: xpack/plugins/gathered_user/templates/gathered_user/task_list.html:91 +#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:178 +#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:102 +#: xpack/plugins/gathered_user/templates/gathered_user/task_list.html:90 msgid "Execute failed" msgstr "执行失败" @@ -5658,7 +5670,7 @@ msgstr "日志" msgid "Retry" msgstr "重试" -#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_subtask_list.html:96 +#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_subtask_list.html:95 msgid "Run failed" msgstr "执行失败" @@ -5707,7 +5719,7 @@ msgstr "选择实例" msgid "Select node" msgstr "选择节点" -#: xpack/plugins/cloud/forms.py:82 xpack/plugins/orgs/forms.py:18 +#: xpack/plugins/cloud/forms.py:82 xpack/plugins/orgs/forms.py:21 msgid "Select admins" msgstr "选择管理员" @@ -6127,24 +6139,24 @@ msgstr "许可证导入成功" msgid "License is invalid" msgstr "无效的许可证" -#: xpack/plugins/orgs/forms.py:14 +#: xpack/plugins/orgs/forms.py:24 +msgid "Select auditor" +msgstr "选择审计员" + +#: xpack/plugins/orgs/forms.py:29 #: xpack/plugins/orgs/templates/orgs/org_detail.html:76 #: xpack/plugins/orgs/templates/orgs/org_list.html:13 msgid "Admin" msgstr "管理员" -#: xpack/plugins/orgs/forms.py:42 -msgid "Select auditor" -msgstr "选择审计员" - #: xpack/plugins/orgs/meta.py:8 xpack/plugins/orgs/views.py:26 -#: xpack/plugins/orgs/views.py:43 xpack/plugins/orgs/views.py:60 -#: xpack/plugins/orgs/views.py:77 +#: xpack/plugins/orgs/views.py:43 xpack/plugins/orgs/views.py:61 +#: xpack/plugins/orgs/views.py:79 msgid "Organizations" msgstr "组织管理" #: xpack/plugins/orgs/templates/orgs/org_detail.html:22 -#: xpack/plugins/orgs/views.py:78 +#: xpack/plugins/orgs/views.py:80 msgid "Org detail" msgstr "组织详情" @@ -6164,7 +6176,7 @@ msgstr "组织列表" msgid "Create org" msgstr "创建组织" -#: xpack/plugins/orgs/views.py:61 +#: xpack/plugins/orgs/views.py:62 msgid "Update org" msgstr "更新组织" @@ -6185,6 +6197,9 @@ msgstr "密码匣子" msgid "vault create" msgstr "创建" +#~ msgid "Recipient" +#~ msgstr "收件人" + #~ msgid "Gather user plan" #~ msgstr "收集用户计划" diff --git a/apps/settings/api.py b/apps/settings/api.py index af5742921..9df77d036 100644 --- a/apps/settings/api.py +++ b/apps/settings/api.py @@ -30,6 +30,7 @@ class MailTestingAPI(APIView): serializer = self.serializer_class(data=request.data) if serializer.is_valid(): email_from = serializer.validated_data["EMAIL_FROM"] + email_recipient = serializer.validated_data["EMAIL_RECIPIENT"] email_host_user = serializer.validated_data["EMAIL_HOST_USER"] for k, v in serializer.validated_data.items(): if k.startswith('EMAIL'): @@ -38,11 +39,12 @@ class MailTestingAPI(APIView): subject = "Test" message = "Test smtp setting" email_from = email_from or email_host_user - send_mail(subject, message, email_from, [email_from]) + email_recipient = email_recipient or email_from + send_mail(subject, message, email_from, [email_recipient]) except Exception as e: return Response({"error": str(e)}, status=401) - return Response({"msg": self.success_message.format(email_host_user)}) + return Response({"msg": self.success_message.format(email_recipient)}) else: return Response({"error": str(serializer.errors)}, status=401) diff --git a/apps/settings/forms.py b/apps/settings/forms.py index 23bcccb09..4a115bcac 100644 --- a/apps/settings/forms.py +++ b/apps/settings/forms.py @@ -89,6 +89,10 @@ class EmailSettingForm(BaseForm): "Tips: Send mail account, default SMTP account as the send account" ) ) + EMAIL_RECIPIENT = forms.CharField( + max_length=128, label=_("Test recipient"), initial='', required=False, + help_text=_("Tips: Used only as a test mail recipient") + ) EMAIL_USE_SSL = forms.BooleanField( label=_("Use SSL"), initial=False, required=False, help_text=_("If SMTP port is 465, may be select") diff --git a/apps/settings/serializers.py b/apps/settings/serializers.py index f68ea5437..eb8a61679 100644 --- a/apps/settings/serializers.py +++ b/apps/settings/serializers.py @@ -7,6 +7,7 @@ class MailTestSerializer(serializers.Serializer): EMAIL_HOST_USER = serializers.CharField(max_length=1024) EMAIL_HOST_PASSWORD = serializers.CharField(required=False, allow_blank=True) EMAIL_FROM = serializers.CharField(required=False, allow_blank=True) + EMAIL_RECIPIENT = serializers.CharField(required=False, allow_blank=True) EMAIL_USE_SSL = serializers.BooleanField(default=False) EMAIL_USE_TLS = serializers.BooleanField(default=False)