From 7715e62defb446cac3591c1b8b0c75b89f6e35c3 Mon Sep 17 00:00:00 2001 From: BaiJiangJie <32935519+BaiJiangJie@users.noreply.github.com> Date: Fri, 14 Jun 2019 10:51:18 +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=E9=85=8D=E7=BD=AE=E9=A1=B9=EF=BC=9A=E5=8F=91?= =?UTF-8?q?=E9=80=81=E8=B4=A6=E5=8F=B7=20(#2796)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/tasks.py | 3 +- apps/jumpserver/settings.py | 1 + apps/locale/zh/LC_MESSAGES/django.mo | Bin 77133 -> 77471 bytes apps/locale/zh/LC_MESSAGES/django.po | 161 ++++++++++++++++----------- apps/settings/api.py | 4 +- apps/settings/forms.py | 9 +- apps/settings/serializers.py | 1 + 7 files changed, 110 insertions(+), 69 deletions(-) diff --git a/apps/common/tasks.py b/apps/common/tasks.py index dec738921..465f46eb1 100644 --- a/apps/common/tasks.py +++ b/apps/common/tasks.py @@ -24,7 +24,8 @@ def send_mail_async(*args, **kwargs): if len(args) == 3: args = list(args) args[0] = settings.EMAIL_SUBJECT_PREFIX + args[0] - args.insert(2, settings.EMAIL_HOST_USER) + email_from = settings.EMAIL_FROM or settings.EMAIL_HOST_USER + args.insert(2, email_from) args = tuple(args) try: diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index d43006c85..7f88e980a 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -353,6 +353,7 @@ EMAIL_HOST = 'smtp.jumpserver.org' EMAIL_PORT = 25 EMAIL_HOST_USER = 'noreply@jumpserver.org' EMAIL_HOST_PASSWORD = '' +EMAIL_FROM = '' 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 1c782fa734d6d0b2d9320aa1fa9152a729e89679..57393bd428c7ecf1b3feb45e9b02955a819717fc 100644 GIT binary patch delta 23110 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

rkHqTdaHl!v!!qY6+jJK3|nF~ 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 Xp1h?}zJNO+VOL)X%_vYLAm9H0Kdf6K delta 22758 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 Vc))`g+lQwQcpNlqK=y#N{|5k!0vP}R diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 899cd30b7..f08cfd10a 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-06-13 18:56+0800\n" +"POT-Creation-Date: 2019-06-14 10:41+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -183,6 +183,7 @@ msgstr "系统用户" #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:12 #: xpack/plugins/orgs/templates/orgs/org_detail.html:52 #: xpack/plugins/orgs/templates/orgs/org_list.html:12 +#: xpack/plugins/vault/templates/vault/vault.html:90 msgid "Name" msgstr "名称" @@ -446,6 +447,7 @@ msgstr "详情" #: xpack/plugins/cloud/templates/cloud/account_list.html:39 #: xpack/plugins/orgs/templates/orgs/org_detail.html:25 #: xpack/plugins/orgs/templates/orgs/org_list.html:87 +#: xpack/plugins/vault/templates/vault/vault.html:149 msgid "Update" msgstr "更新" @@ -486,6 +488,7 @@ msgstr "更新" #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:55 #: xpack/plugins/orgs/templates/orgs/org_detail.html:29 #: xpack/plugins/orgs/templates/orgs/org_list.html:89 +#: xpack/plugins/vault/templates/vault/vault.html:150 msgid "Delete" msgstr "删除" @@ -544,6 +547,7 @@ msgstr "创建远程应用" #: xpack/plugins/cloud/templates/cloud/account_list.html:16 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:18 #: xpack/plugins/orgs/templates/orgs/org_list.html:23 +#: xpack/plugins/vault/templates/vault/vault.html:78 msgid "Action" msgstr "动作" @@ -727,6 +731,7 @@ msgstr "SSH网关,支持代理SSH,RDP和VNC" #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:53 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_subtask_list.html:12 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:13 +#: xpack/plugins/vault/templates/vault/vault.html:74 msgid "Username" msgstr "用户名" @@ -742,7 +747,7 @@ msgstr "密码或密钥密码" #: authentication/forms.py:13 #: authentication/templates/authentication/login.html:67 #: authentication/templates/authentication/new_login.html:93 -#: settings/forms.py:103 users/forms.py:15 users/forms.py:27 +#: settings/forms.py:110 users/forms.py:15 users/forms.py:27 #: users/templates/users/reset_password.html:53 #: users/templates/users/user_password_authentication.html:18 #: users/templates/users/user_password_update.html:43 @@ -818,10 +823,11 @@ msgstr "端口" #: assets/templates/assets/user_asset_list.html:45 #: assets/templates/assets/user_asset_list.html:167 #: audits/templates/audits/login_log_list.html:54 -#: perms/templates/perms/asset_permission_asset.html:55 settings/forms.py:133 +#: perms/templates/perms/asset_permission_asset.html:55 settings/forms.py:140 #: users/templates/users/user_granted_asset.html:45 #: users/templates/users/user_group_granted_asset.html:45 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:51 +#: xpack/plugins/vault/templates/vault/vault.html:73 msgid "IP" msgstr "IP" @@ -835,10 +841,11 @@ msgstr "IP" #: assets/templates/assets/user_asset_list.html:44 #: assets/templates/assets/user_asset_list.html:166 #: perms/templates/perms/asset_permission_asset.html:54 -#: perms/templates/perms/asset_permission_list.html:77 settings/forms.py:132 +#: perms/templates/perms/asset_permission_list.html:77 settings/forms.py:139 #: users/templates/users/user_granted_asset.html:44 #: users/templates/users/user_group_granted_asset.html:44 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:50 +#: xpack/plugins/vault/templates/vault/vault.html:72 msgid "Hostname" msgstr "主机名" @@ -967,6 +974,7 @@ msgstr "最新版本" #: assets/models/authbook.py:29 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 +#: xpack/plugins/vault/templates/vault/vault.html:75 msgid "Version" msgstr "版本" @@ -1208,6 +1216,7 @@ msgid "Hardware info" msgstr "硬件信息" #: assets/serializers/asset.py:53 +#: xpack/plugins/vault/templates/vault/vault.html:76 msgid "Connectivity" msgstr "连接" @@ -1592,6 +1601,7 @@ msgstr "Windows或其它硬件可以随意设置一个" #: audits/templates/audits/login_log_list.html:85 #: users/templates/users/user_group_list.html:10 #: users/templates/users/user_list.html:10 +#: xpack/plugins/vault/templates/vault/vault.html:55 msgid "Export" msgstr "导出" @@ -1602,6 +1612,7 @@ msgstr "导出" #: users/templates/users/user_group_list.html:15 #: users/templates/users/user_list.html:15 #: xpack/plugins/license/templates/license/license_detail.html:110 +#: xpack/plugins/vault/templates/vault/vault.html:60 msgid "Import" msgstr "导入" @@ -2321,6 +2332,7 @@ msgstr "日期" #: ops/templates/ops/task_adhoc.html:63 #: terminal/templates/terminal/command_list.html:76 #: terminal/templates/terminal/session_detail.html:50 +#: xpack/plugins/vault/templates/vault/vault.html:77 msgid "Datetime" msgstr "日期" @@ -2666,7 +2678,7 @@ msgstr "等待任务开始" msgid "Interval" msgstr "间隔" -#: ops/models/adhoc.py:38 settings/forms.py:151 +#: ops/models/adhoc.py:38 settings/forms.py:158 msgid "Units: seconds" msgstr "单位: 秒" @@ -3003,7 +3015,7 @@ msgstr "命令执行" msgid "Organization" msgstr "组织管理" -#: perms/const.py:18 settings/forms.py:136 +#: perms/const.py:18 settings/forms.py:143 msgid "All" msgstr "全部" @@ -3143,6 +3155,7 @@ msgstr "选择系统用户" #: perms/templates/perms/asset_permission_list.html:46 #: perms/templates/perms/remote_app_permission_list.html:6 +#: xpack/plugins/vault/templates/vault/vault.html:46 msgid "Create permission" msgstr "创建授权规则" @@ -3262,29 +3275,29 @@ msgstr "远程应用授权远程应用列表" msgid "Test mail sent to {}, please check" msgstr "邮件已经发送{}, 请检查" -#: settings/api.py:52 +#: settings/api.py:54 msgid "Test ldap success" msgstr "连接LDAP成功" -#: settings/api.py:89 +#: settings/api.py:91 msgid "Match {} s users" msgstr "匹配 {} 个用户" -#: settings/api.py:158 +#: settings/api.py:160 msgid "succeed: {} failed: {} total: {}" msgstr "成功:{} 失败:{} 总数:{}" -#: settings/api.py:180 settings/api.py:216 +#: settings/api.py:182 settings/api.py:218 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:186 settings/api.py:222 +#: settings/api.py:188 settings/api.py:224 msgid "Create succeed" msgstr "创建成功" -#: settings/api.py:204 settings/api.py:242 +#: settings/api.py:206 settings/api.py:244 #: settings/templates/settings/terminal_setting.html:154 msgid "Delete succeed" msgstr "删除成功" @@ -3325,56 +3338,64 @@ msgstr "SMTP账号" msgid "SMTP password" msgstr "SMTP密码" -#: settings/forms.py:83 -msgid "Some provider use token except password" -msgstr "一些邮件提供商需要输入的是Token" +#: settings/forms.py:84 +msgid "Tips: Some provider use token except password" +msgstr "提示:一些邮件提供商需要输入的是Token" -#: settings/forms.py:86 +#: settings/forms.py:87 +msgid "Send user" +msgstr "发送账号" + +#: settings/forms.py:89 +msgid "Tips: Send mail account, default SMTP account as the send account" +msgstr "提示:发送邮件账号,默认使用SMTP账号作为发送账号" + +#: settings/forms.py:93 msgid "Use SSL" msgstr "使用SSL" -#: settings/forms.py:87 +#: settings/forms.py:94 msgid "If SMTP port is 465, may be select" msgstr "如果SMTP端口是465,通常需要启用SSL" -#: settings/forms.py:90 +#: settings/forms.py:97 msgid "Use TLS" msgstr "使用TLS" -#: settings/forms.py:91 +#: settings/forms.py:98 msgid "If SMTP port is 587, may be select" msgstr "如果SMTP端口是587,通常需要启用TLS" -#: settings/forms.py:97 +#: settings/forms.py:104 msgid "LDAP server" msgstr "LDAP地址" -#: settings/forms.py:100 +#: settings/forms.py:107 msgid "Bind DN" msgstr "绑定DN" -#: settings/forms.py:107 +#: settings/forms.py:114 msgid "User OU" msgstr "用户OU" -#: settings/forms.py:108 +#: settings/forms.py:115 msgid "Use | split User OUs" msgstr "使用|分隔各OU" -#: settings/forms.py:112 +#: settings/forms.py:119 msgid "User search filter" msgstr "用户过滤器" -#: settings/forms.py:113 +#: settings/forms.py:120 #, python-format msgid "Choice may be (cn|uid|sAMAccountName)=%(user)s)" msgstr "可能的选项是(cn或uid或sAMAccountName=%(user)s)" -#: settings/forms.py:116 +#: settings/forms.py:123 msgid "User attr map" msgstr "LDAP属性映射" -#: settings/forms.py:118 +#: settings/forms.py:125 msgid "" "User attr map present how to map LDAP user attr to jumpserver, username,name," "email is jumpserver attr" @@ -3382,39 +3403,39 @@ msgstr "" "用户属性映射代表怎样将LDAP中用户属性映射到jumpserver用户上,username, name," "email 是jumpserver的属性" -#: settings/forms.py:127 +#: settings/forms.py:134 msgid "Enable LDAP auth" msgstr "启用LDAP认证" -#: settings/forms.py:137 +#: settings/forms.py:144 msgid "Auto" msgstr "自动" -#: settings/forms.py:144 +#: settings/forms.py:151 msgid "Password auth" msgstr "密码认证" -#: settings/forms.py:147 +#: settings/forms.py:154 msgid "Public key auth" msgstr "密钥认证" -#: settings/forms.py:150 +#: settings/forms.py:157 msgid "Heartbeat interval" msgstr "心跳间隔" -#: settings/forms.py:154 +#: settings/forms.py:161 msgid "List sort by" msgstr "资产列表排序" -#: settings/forms.py:157 +#: settings/forms.py:164 msgid "List page size" msgstr "资产分页每页数量" -#: settings/forms.py:160 +#: settings/forms.py:167 msgid "Session keep duration" msgstr "会话保留时长" -#: settings/forms.py:161 +#: settings/forms.py:168 msgid "" "Units: days, Session, record, command will be delete if more than duration, " "only in database" @@ -3422,62 +3443,62 @@ msgstr "" "单位:天。 会话、录像、命令记录超过该时长将会被删除(仅影响数据库存储, oss等不" "受影响)" -#: settings/forms.py:165 +#: settings/forms.py:172 msgid "Telnet login regex" msgstr "Telnet 成功正则表达式" -#: settings/forms.py:166 +#: settings/forms.py:173 msgid "ex: Last\\s*login|success|成功" msgstr "" "登录telnet服务器成功后的提示正则表达式,如: Last\\s*login|success|成功 " -#: settings/forms.py:177 +#: settings/forms.py:184 msgid "MFA Secondary certification" msgstr "MFA 二次认证" -#: settings/forms.py:179 +#: settings/forms.py:186 msgid "" "After opening, the user login must use MFA secondary authentication (valid " "for all users, including administrators)" msgstr "开启后,用户登录必须使用MFA二次认证(对所有用户有效,包括管理员)" -#: settings/forms.py:185 +#: settings/forms.py:192 msgid "Batch execute commands" msgstr "批量命令" -#: settings/forms.py:186 +#: settings/forms.py:193 msgid "Allow user batch execute commands" msgstr "允许用户批量执行命令" -#: settings/forms.py:191 +#: settings/forms.py:198 msgid "Limit the number of login failures" msgstr "限制登录失败次数" -#: settings/forms.py:195 +#: settings/forms.py:202 msgid "No logon interval" msgstr "禁止登录时间间隔" -#: settings/forms.py:197 +#: settings/forms.py:204 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:204 +#: settings/forms.py:211 msgid "Connection max idle time" msgstr "SSH最大空闲时间" -#: settings/forms.py:206 +#: settings/forms.py:213 msgid "" "If idle time more than it, disconnect connection(only ssh now) Unit: minute" msgstr "提示:(单位:分)如果超过该配置没有操作,连接会被断开(仅ssh)" -#: settings/forms.py:212 +#: settings/forms.py:219 msgid "Password expiration time" msgstr "密码过期时间" -#: settings/forms.py:214 +#: settings/forms.py:221 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 " @@ -3487,81 +3508,81 @@ msgstr "" "提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期" "提醒邮件将在密码过期前5天内由系统(每天)自动发送给用户" -#: settings/forms.py:223 +#: settings/forms.py:230 msgid "Password minimum length" msgstr "密码最小长度 " -#: settings/forms.py:227 +#: settings/forms.py:234 msgid "Must contain capital letters" msgstr "必须包含大写字母" -#: settings/forms.py:229 +#: settings/forms.py:236 msgid "" "After opening, the user password changes and resets must contain uppercase " "letters" msgstr "开启后,用户密码修改、重置必须包含大写字母" -#: settings/forms.py:234 +#: settings/forms.py:241 msgid "Must contain lowercase letters" msgstr "必须包含小写字母" -#: settings/forms.py:235 +#: settings/forms.py:242 msgid "" "After opening, the user password changes and resets must contain lowercase " "letters" msgstr "开启后,用户密码修改、重置必须包含小写字母" -#: settings/forms.py:240 +#: settings/forms.py:247 msgid "Must contain numeric characters" msgstr "必须包含数字字符" -#: settings/forms.py:241 +#: settings/forms.py:248 msgid "" "After opening, the user password changes and resets must contain numeric " "characters" msgstr "开启后,用户密码修改、重置必须包含数字字符" -#: settings/forms.py:246 +#: settings/forms.py:253 msgid "Must contain special characters" msgstr "必须包含特殊字符" -#: settings/forms.py:247 +#: settings/forms.py:254 msgid "" "After opening, the user password changes and resets must contain special " "characters" msgstr "开启后,用户密码修改、重置必须包含特殊字符" -#: settings/forms.py:254 +#: settings/forms.py:261 msgid "Create user email subject" msgstr "创建用户邮件的主题" -#: settings/forms.py:255 +#: settings/forms.py:262 msgid "" "Tips: When creating a user, send the subject of the email (eg:Create account " "successfully)" msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)" -#: settings/forms.py:259 +#: settings/forms.py:266 msgid "Create user honorific" msgstr "创建用户邮件的敬语" -#: settings/forms.py:260 +#: settings/forms.py:267 msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)" msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 您好)" -#: settings/forms.py:265 +#: settings/forms.py:272 msgid "Create user email content" msgstr "创建用户邮件的内容" -#: settings/forms.py:266 +#: settings/forms.py:273 msgid "Tips:When creating a user, send the content of the email" msgstr "提示: 创建用户时,发送设置密码邮件的内容" -#: settings/forms.py:269 +#: settings/forms.py:276 msgid "Signature" msgstr "署名" -#: settings/forms.py:270 +#: settings/forms.py:277 msgid "Tips: Email signature (eg:jumpserver)" msgstr "提示: 邮件的署名 (例如: jumpserver)" @@ -5920,6 +5941,14 @@ msgstr "创建组织" msgid "Update org" msgstr "更新组织" +#: xpack/plugins/vault/meta.py:11 xpack/plugins/vault/views.py:16 +msgid "Vault" +msgstr "密码匣子" + +#: xpack/plugins/vault/views.py:17 +msgid "vault list" +msgstr "密码匣子" + #~ msgid "User does not exist" #~ msgstr "用户不存在" diff --git a/apps/settings/api.py b/apps/settings/api.py index 29986637e..d399d207c 100644 --- a/apps/settings/api.py +++ b/apps/settings/api.py @@ -30,6 +30,7 @@ class MailTestingAPI(APIView): def post(self, request): serializer = self.serializer_class(data=request.data) if serializer.is_valid(): + email_from = serializer.validated_data["EMAIL_FROM"] email_host_user = serializer.validated_data["EMAIL_HOST_USER"] for k, v in serializer.validated_data.items(): if k.startswith('EMAIL'): @@ -37,7 +38,8 @@ class MailTestingAPI(APIView): try: subject = "Test" message = "Test smtp setting" - send_mail(subject, message, email_host_user, [email_host_user]) + email_from = email_from or email_host_user + send_mail(subject, message, email_from, [email_host_user]) except Exception as e: return Response({"error": str(e)}, status=401) diff --git a/apps/settings/forms.py b/apps/settings/forms.py index 228abb7ec..78fab4801 100644 --- a/apps/settings/forms.py +++ b/apps/settings/forms.py @@ -80,7 +80,14 @@ class EmailSettingForm(BaseForm): ) EMAIL_HOST_PASSWORD = FormEncryptCharField( max_length=1024, label=_("SMTP password"), widget=forms.PasswordInput, - required=False, help_text=_("Some provider use token except password") + required=False, + help_text=_("Tips: Some provider use token except password") + ) + EMAIL_FROM = forms.CharField( + max_length=128, label=_("Send user"), initial='', required=False, + help_text=_( + "Tips: Send mail account, default SMTP account as the send account" + ) ) EMAIL_USE_SSL = forms.BooleanField( label=_("Use SSL"), initial=False, required=False, diff --git a/apps/settings/serializers.py b/apps/settings/serializers.py index 731823df9..e0fdb0383 100644 --- a/apps/settings/serializers.py +++ b/apps/settings/serializers.py @@ -6,6 +6,7 @@ class MailTestSerializer(serializers.Serializer): EMAIL_PORT = serializers.IntegerField(default=25) EMAIL_HOST_USER = serializers.CharField(max_length=1024) EMAIL_HOST_PASSWORD = serializers.CharField() + EMAIL_FROM = serializers.CharField(required=False, allow_blank=True) EMAIL_USE_SSL = serializers.BooleanField(default=False) EMAIL_USE_TLS = serializers.BooleanField(default=False)