mirror of https://github.com/openspug/spug
U 系统设置 - 报警设置 - 自定义邮件服务添加在线测试
parent
6da1371d28
commit
83098fbd1d
|
@ -8,5 +8,6 @@ from .views import *
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^$', SettingView.as_view()),
|
url(r'^$', SettingView.as_view()),
|
||||||
url(r'^ldap_test/$', ldap_test),
|
url(r'^ldap_test/$', ldap_test),
|
||||||
|
url(r'^email_test/$', email_test),
|
||||||
url(r'^about/$', get_about)
|
url(r'^about/$', get_about)
|
||||||
]
|
]
|
||||||
|
|
|
@ -9,6 +9,7 @@ from apps.setting.utils import AppSetting
|
||||||
from apps.setting.models import Setting
|
from apps.setting.models import Setting
|
||||||
import platform
|
import platform
|
||||||
import ldap
|
import ldap
|
||||||
|
import smtplib
|
||||||
|
|
||||||
|
|
||||||
class SettingView(View):
|
class SettingView(View):
|
||||||
|
@ -44,6 +45,24 @@ def ldap_test(request):
|
||||||
return json_response(error=error)
|
return json_response(error=error)
|
||||||
|
|
||||||
|
|
||||||
|
def email_test(request):
|
||||||
|
form, error = JsonParser(
|
||||||
|
Argument('server'),
|
||||||
|
Argument('port', type=int),
|
||||||
|
Argument('username'),
|
||||||
|
Argument('password'),
|
||||||
|
).parse(request.body)
|
||||||
|
if error is None:
|
||||||
|
try:
|
||||||
|
server = smtplib.SMTP_SSL(form.server, form.port)
|
||||||
|
server.login(form.username, form.password)
|
||||||
|
return json_response()
|
||||||
|
except Exception as e:
|
||||||
|
error = e.smtp_error.decode('utf-8')
|
||||||
|
return json_response(error=error)
|
||||||
|
return json_response(error=error)
|
||||||
|
|
||||||
|
|
||||||
def get_about(request):
|
def get_about(request):
|
||||||
return json_response({
|
return json_response({
|
||||||
'python_version': platform.python_version(),
|
'python_version': platform.python_version(),
|
||||||
|
|
|
@ -19,10 +19,22 @@ class AlarmSetting extends React.Component {
|
||||||
this.setting = JSON.parse(lds.get(store.settings, 'mail_service.value', "{}"));
|
this.setting = JSON.parse(lds.get(store.settings, 'mail_service.value', "{}"));
|
||||||
this.state = {
|
this.state = {
|
||||||
mode: this.setting['server'] === undefined ? '1' : '2',
|
mode: this.setting['server'] === undefined ? '1' : '2',
|
||||||
spug_key: lds.get(store.settings, 'spug_key.value', "")
|
spug_key: lds.get(store.settings, 'spug_key.value', ""),
|
||||||
|
mail_test_loading: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleEmailTest = () => {
|
||||||
|
this.props.form.validateFields((error, data) => {
|
||||||
|
if (!error) {
|
||||||
|
this.setState({mail_test_loading: true});
|
||||||
|
http.post('/api/setting/email_test/', data).then(()=> {
|
||||||
|
message.success('邮件服务连接成功')
|
||||||
|
}).finally(()=> this.setState({mail_test_loading: false}))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
_doSubmit = (formData) => {
|
_doSubmit = (formData) => {
|
||||||
store.loading = true;
|
store.loading = true;
|
||||||
http.post('/api/setting/', {data: formData})
|
http.post('/api/setting/', {data: formData})
|
||||||
|
@ -126,11 +138,15 @@ class AlarmSetting extends React.Component {
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</div>
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
<div>
|
||||||
<Button
|
<Button
|
||||||
type="primary"
|
type="danger" loading={this.state.mail_test_loading}
|
||||||
loading={store.loading}
|
style={{ display: mode === '1' ? 'none' : 'inline-block' ,marginRight: 10}}
|
||||||
style={{marginTop: 20}}
|
onClick={this.handleEmailTest}>测试邮件服务</Button>
|
||||||
|
<Button
|
||||||
|
type="primary" loading={store.loading} style={{ marginTop: 20}}
|
||||||
onClick={this.handleSubmit}>保存设置</Button>
|
onClick={this.handleSubmit}>保存设置</Button>
|
||||||
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue