QQ空间迁移_【Jumpserver_自定义邮件内容】

本文讲述了如何修改Jumpserver的源代码,解决邮件中内网URL问题,并自定义用户添加、密码重置和资料修改通知。作者详细记录了修改user_api.py和view.py中的代码过程,确保邮件内容指向正确并符合实际需求。

Jumpserver 自定义邮件内容

2016-05-12 16:37:48

通过前几次的测试,把jumpserver用于生产环境了,询问同事都觉得还挺方便便捷的,不过发现系统自动发送的邮件URL地址貌似有问题

系统自动发送的邮件内容如下

明显是个内网地址,而且不带端口号,就算在内网中直接点击也打不开该地址!总不能挨个通知用户URL地址吧,还好这个是开源软件,可以直接修改源代码。

进入jumpserver的安装目录

cd /opt/jumpserver/

查找带有“您的用户名”的这个文件

grep -r 您的用户名 /opt/jumpserver/

明显这个邮件是通过user_api.py这个文件发出来的

编辑该文件

vi juser/user_api.py

输入 /您的用户名 查找该行的位置

def user_add_mail(user, kwargs):

“”"

adduser send mail

发送用户添加邮件

“”"

user_role= {‘SU’: u’超级管理员’, ‘GA’: u’组管理员’, ‘CU’: u’普通用户’}

mail_title= u’恭喜你的跳板机用户 %s 添加成功 Jumpserver’ % user.name

mail_msg= u"""

Hi,%s

您的用户名:%s

您的权限:%s

您的web登录密码:%s

您的ssh密钥文件密码:%s

密钥下载内网地址: %s:8000/juser/key/down/?uuid=%s

密钥下载外网地址: http://117.78.38.102:8000/juser/key/down/?uuid=%s

说明:请登陆跳板机后台下载密钥, 然后使用密钥登陆跳板机!

“”"% (user.name, user.username, user_role.get(user.role, u’普通用户’),

kwargs.get(‘password’),kwargs.get(‘ssh_key_pwd’), URL, user.uuid, user.uuid)

send_mail(mail_title,mail_msg, MAIL_FROM, [user.email], fail_silently=False)

红色部分为我添加的代码。继续搜索发下面还有相关定义的代码

def get_display_msg(user, password=’’, ssh_key_pwd=’’, send_mail_need=False):

ifsend_mail_need:

msg= u’添加用户 %s 成功! 用户密码已发送到 %s 邮箱!’ % (user.name, user.email)

else:

msg= u"""

跳板机内网地址: %s

跳板机外网地址: http://117.78.38.102

用户名:%s

密码:%s

密钥密码:%s

密钥下载内网url:%s:8000/juser/key/down/?uuid=%s

密钥下载外网url: http://117.78.38.102:8000/juser/key/down/?uuid=%s

该账号密码可以登陆web和跳板机。

“”"% (URL, URL, user.username, password, ssh_key_pwd, URL, user.uuid, user.uuid)

return msg

以上代码经过十轮测试,得以实现自己想要的功能

然后删除 rm -f /opt/jumpserver/juser/user_api.pyc

重启服务 /opt/jumpserver/service.sh restart

再次创建发送的通知邮件内容如下,发送邮件内容正常。

继续测试,点击发送Email

内容如下

通过查找文件发现还是在view.py这个文件中

@require_role(‘admin’)

def send_mail_retry(request):

uuid_r= request.GET.get(‘uuid’, ‘1’)

user= get_object(User, uuid=uuid_r)

msg= u"""

跳板机地址:%s

用户名:%s

重设密码

内网用户请访问:%s:8000/juser/password/forget/

外网用户请访问:http://117.78.38.102:8000/juser/password/forget/

请登录web点击个人信息页面重新生成ssh密钥

“”"% (URL, user.username, URL)

try:

send_mail(u’邮件重发’,msg, MAIL_FROM, [user.email], fail_silently=False)

exceptIndexError:

returnHttp404

returnHttpResponse(‘发送成功’)

接着测试,发现登录的时候点击忘记密码发送的邮件内容如下

填入信息后发送邮件内如下

继续查找文件

@defend_attack

def forget_password(request):

ifrequest.method == ‘POST’:

defend_attack(request)

email= request.POST.get(‘email’, ‘’)

username= request.POST.get(‘username’, ‘’)

name= request.POST.get(‘name’, ‘’)

user= get_object(User, username=username, email=email, name=name)

ifuser:

timestamp= int(time.time())

hash_encode= PyCrypt.md5_crypt(str(user.uuid) + str(timestamp) + KEY)

msg= u"""

Hi%s, 请点击下面链接重设密码!

内网用户: %s:8000/juser/password/reset/?uuid=%s&timestamp=%s&hash=%s

外网用户:http://117.78.38.102:8000/juser/password/reset/?uuid=%s&timestamp=%s&hash=%s

“”"% (user.name, URL, user.uuid, timestamp, hash_encode ,user.uuid, timestamp, hash_encode)

send_mail(‘忘记跳板机密码’,msg, MAIL_FROM, [email], fail_silently=False)

msg= u’请登陆邮箱,点击邮件重设密码’

returnhttp_success(request, msg)

else:

error= u’用户不存在或邮件地址错误’

returnrender_to_response(‘juser/forget_password.html’, locals())

经过大概十轮测试,最终代码如上,发送的邮件内如下。找回密码功能正常!!

继续测试,修改用户资料后,发送邮件通知用户

获取邮件如下:

if email_need:

msg= u"""

Hi%s:

您的信息已修改,请登录跳板机查看详细信息

内网地址:%s:8000

外网地址:http://117.78.38.102:8000/

用户名:%s

密码:%s(如果密码为None代表密码为原密码)

权限::%s

“”"% (user.name, URL, user.username, password, user_role.get(role_post, u’’))

send_mail(‘您的信息已修改’,msg, MAIL_FROM, [email], fail_silently=False)

returnHttpResponseRedirect(reverse(‘user_list’))

return my_render(‘juser/user_edit.html’, locals(), request)

修改代码后获得的邮件

评论(0)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值