spug/spug_api/apps/setting/views.py

84 lines
2.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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()
})