mirror of https://github.com/openspug/spug
				
				
				
			
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
| # Copyright: (c) OpenSpug Organization. https://github.com/openspug/spug
 | ||
| # Copyright: (c) <spug.dev@gmail.com>
 | ||
| # Released under the AGPL-3.0 License.
 | ||
| import django
 | ||
| from django.views.generic import View
 | ||
| from django.conf import settings
 | ||
| from libs import JsonParser, Argument, json_response
 | ||
| from apps.account.models import User
 | ||
| from apps.setting.utils import AppSetting
 | ||
| from apps.setting.models import Setting
 | ||
| import platform
 | ||
| import ldap
 | ||
| import smtplib
 | ||
| 
 | ||
| 
 | ||
| class SettingView(View):
 | ||
|     def get(self, request):
 | ||
|         data = Setting.objects.all()
 | ||
|         return json_response([x.to_view() for x in data])
 | ||
| 
 | ||
|     def post(self, request):
 | ||
|         form, error = JsonParser(
 | ||
|             Argument('data', type=list, help='缺少必要的参数')
 | ||
|         ).parse(request.body)
 | ||
|         if error is None:
 | ||
|             for item in form.data:
 | ||
|                 AppSetting.set(**item)
 | ||
|         return json_response(error=error)
 | ||
| 
 | ||
| 
 | ||
| def ldap_test(request):
 | ||
|     form, error = JsonParser(
 | ||
|         Argument('server'),
 | ||
|         Argument('port', type=int),
 | ||
|         Argument('admin_dn'),
 | ||
|         Argument('password'),
 | ||
|     ).parse(request.body)
 | ||
|     if error is None:
 | ||
|         try:
 | ||
|             con = ldap.initialize("ldap://{0}:{1}".format(form.server, form.port), bytes_mode=False)
 | ||
|             con.simple_bind_s(form.admin_dn, form.password)
 | ||
|             return json_response()
 | ||
|         except Exception as e:
 | ||
|             error = eval(str(e))
 | ||
|             return json_response(error=error['desc'])
 | ||
|     return json_response(error=error)
 | ||
| 
 | ||
| 
 | ||
| def email_test(request):
 | ||
|     form, error = JsonParser(
 | ||
|         Argument('server', help='请输入邮件服务地址'),
 | ||
|         Argument('port', type=int, help='请输入邮件服务端口号'),
 | ||
|         Argument('username', help='请输入邮箱账号'),
 | ||
|         Argument('password', help='请输入密码/授权码'),
 | ||
|     ).parse(request.body)
 | ||
|     if error is None:
 | ||
|         try:
 | ||
|             if form.port == 465:
 | ||
|                 server = smtplib.SMTP_SSL(form.server, form.port, timeout=3)
 | ||
|             else:
 | ||
|                 server = smtplib.SMTP(form.server, form.port, timeout=3)
 | ||
|             server.login(form.username, form.password)
 | ||
|             return json_response()
 | ||
| 
 | ||
|         except Exception as e:
 | ||
|             error = f'{e}'
 | ||
|     return json_response(error=error)
 | ||
| 
 | ||
| 
 | ||
| def mfa_test(request):
 | ||
|     for user in User.objects.filter(is_supper=True):
 | ||
|         if not user.wx_token:
 | ||
|             return json_response(error=f'检测到管理员账户 {user.nickname} 未配置微信Token,请配置后再尝试启用MFA认证,否则可能造成系统无法正常登录。')
 | ||
|     return json_response()
 | ||
| 
 | ||
| 
 | ||
| def get_about(request):
 | ||
|     return json_response({
 | ||
|         'python_version': platform.python_version(),
 | ||
|         'system_version': platform.platform(),
 | ||
|         'spug_version': settings.SPUG_VERSION,
 | ||
|         'django_version': django.get_version()
 | ||
|     })
 |