123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package main
- import (
- "encoding/json"
- "fmt"
- "html/template"
- "io"
- "net/http"
- "path/filepath"
- "redisdog/model"
- )
- type SysCfgWarnGetRet struct {
- Errno int `json:"errno"`
- Error string `json:"error"`
- Data map[string]string `json:"data"`
- }
- func syscfg_warn(resp http.ResponseWriter, req *http.Request) {
- sess, ok := checkLogin(resp, req)
- if !ok {
- return
- }
- if !sess.Account.IsSuper {
- resp.Header().Set("Location", "/index/forbidden")
- resp.WriteHeader(302)
- return
- }
- //视图输出
- files := []string{
- filepath.Join(Cfg.TmplDir, "syscfg", "warn.tmpl"),
- filepath.Join(Cfg.TmplDir, "header.tmpl"),
- filepath.Join(Cfg.TmplDir, "navbar.tmpl"),
- }
- tmpl, err := template.New("warn.tmpl").Funcs(TmplFuncMap).ParseFiles(files...)
- if err != nil {
- io.WriteString(resp, fmt.Sprintf("Error: %s\n", err.Error()))
- } else {
- tmpl.Execute(resp, struct {
- Sess *Session
- Req *http.Request
- Title string
- }{
- sess,
- req,
- "报警配置",
- })
- }
- }
- func syscfg_warn_get(resp http.ResponseWriter, req *http.Request) {
- sess, ok := checkLogin(resp, req)
- if !ok {
- return
- }
- if !sess.Account.IsSuper {
- ret, _ := json.Marshal(ErrorRet{Errno: 404, Error: "Forbidden"})
- resp.Write(ret)
- return
- }
- mdl := model.NewSysCfg(Db)
- values, err := mdl.GetByKeys([]string{"smtp_host", "smtp_port", "smtp_user", "smtp_pwd", "smtp_sender"})
- if err != nil {
- ret, _ := json.Marshal(ErrorRet{Errno: 1, Error: err.Error()})
- resp.Write(ret)
- } else {
- ret, _ := json.Marshal(SysCfgWarnGetRet{Errno: 0, Error: "", Data: values})
- resp.Write(ret)
- }
- }
- func syscfg_warn_set(resp http.ResponseWriter, req *http.Request) {
- sess, ok := checkLogin(resp, req)
- if !ok {
- return
- }
- if !sess.Account.IsSuper {
- ret, _ := json.Marshal(ErrorRet{Errno: 404, Error: "Forbidden"})
- resp.Write(ret)
- return
- }
- req.ParseForm()
- smtpHost := req.PostForm.Get("smtp_host")
- if smtpHost == "" {
- ret, _ := json.Marshal(ErrorRet{Errno: 1, Error: "SMTP HOST不能为空"})
- resp.Write(ret)
- return
- }
- smtpPort := req.PostForm.Get("smtp_port")
- if smtpPort == "" {
- ret, _ := json.Marshal(ErrorRet{Errno: 2, Error: "SMTP端口不能为空"})
- resp.Write(ret)
- return
- }
- smtpUser := req.PostForm.Get("smtp_user")
- if smtpUser == "" {
- ret, _ := json.Marshal(ErrorRet{Errno: 3, Error: "SMTP用户不能为空"})
- resp.Write(ret)
- return
- }
- smtpPwd := req.PostForm.Get("smtp_pwd")
- if smtpPwd == "" {
- ret, _ := json.Marshal(ErrorRet{Errno: 4, Error: "SMTP密码不能为空"})
- resp.Write(ret)
- return
- }
- smtpSender := req.PostForm.Get("smtp_sender")
- if smtpSender == "" {
- ret, _ := json.Marshal(ErrorRet{Errno: 5, Error: "SMTP署名不能为空"})
- resp.Write(ret)
- return
- }
- mdl := model.NewSysCfg(Db)
- if _, err := mdl.Set("smtp_host", smtpHost); err != nil {
- ret, _ := json.Marshal(ErrorRet{Errno: 6, Error: "操作失败(host)"})
- resp.Write(ret)
- }
- if _, err := mdl.Set("smtp_port", smtpPort); err != nil {
- ret, _ := json.Marshal(ErrorRet{Errno: 6, Error: "操作失败(port)"})
- resp.Write(ret)
- }
- if _, err := mdl.Set("smtp_user", smtpUser); err != nil {
- ret, _ := json.Marshal(ErrorRet{Errno: 6, Error: "操作失败(user)"})
- resp.Write(ret)
- }
- if _, err := mdl.Set("smtp_pwd", smtpPwd); err != nil {
- ret, _ := json.Marshal(ErrorRet{Errno: 6, Error: "操作失败(pwd)"})
- resp.Write(ret)
- }
- if _, err := mdl.Set("smtp_sender", smtpSender); err != nil {
- ret, _ := json.Marshal(ErrorRet{Errno: 6, Error: "操作失败(sender)"})
- resp.Write(ret)
- }
- SYSLOG("WARN", fmt.Sprintf("管理员#%d %s %s修改了SMTP配置", sess.Account.Id, sess.Account.Name, sess.Account.Account))
- //更新配置缓存
- err := SysCfg.Load()
- if err != nil {
- ret, _ := json.Marshal(ErrorRet{Errno: 7, Error: fmt.Sprintf("配置更新成功,但未能成功刷新:%s", err.Error())})
- resp.Write(ret)
- } else {
- ret, _ := json.Marshal(ErrorRet{Errno: 0, Error: ""})
- resp.Write(ret)
- }
- }
|