123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package main
- import (
- "encoding/json"
- "fmt"
- "html/template"
- "io"
- "net/http"
- "path/filepath"
- "strconv"
- "redisdog/model"
- )
- type SysCfgMiscGetRet struct {
- Errno int `json:"errno"`
- Error string `json:"error"`
- Data map[string]string `json:"data"`
- }
- func syscfg_misc(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", "misc.tmpl"),
- filepath.Join(Cfg.TmplDir, "header.tmpl"),
- filepath.Join(Cfg.TmplDir, "navbar.tmpl"),
- }
- tmpl, err := template.New("misc.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_misc_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{"monitor_loop_interval", "monitor_mail_interval", "log_kept_days"})
- if err != nil {
- resp.Write(ERROR_RET(1, err.Error()))
- } else {
- ret, _ := json.Marshal(SysCfgMiscGetRet{Errno: 0, Error: "", Data: values})
- resp.Write(ret)
- }
- }
- func syscfg_misc_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()
- moniotrLoopIntervalStr := req.PostForm.Get("monitor_loop_interval")
- if moniotrLoopIntervalStr == "" {
- resp.Write(ERROR_RET(1, "检查间隔不能为空"))
- return
- }
- monitorMailIntervalStr := req.PostForm.Get("monitor_mail_interval")
- if monitorMailIntervalStr == "" {
- resp.Write(ERROR_RET(2, "报警邮件发送间隔不能为空"))
- return
- }
- logKeptDaysStr := req.PostForm.Get("log_kept_days")
- if logKeptDaysStr == "" {
- resp.Write(ERROR_RET(3, "日志保留天数不能为空"))
- return
- }
- if _, err := strconv.Atoi(moniotrLoopIntervalStr); err != nil {
- resp.Write(ERROR_RET(4, "检查间隔不是有效的数字值"))
- return
- }
- if _, err := strconv.Atoi(monitorMailIntervalStr); err != nil {
- resp.Write(ERROR_RET(5, "报警邮件发送间隔不是有效的数字值"))
- return
- }
- if _, err := strconv.Atoi(logKeptDaysStr); err != nil {
- resp.Write(ERROR_RET(6, "日志保留天数不是有效的数字值"))
- return
- }
- mdl := model.NewSysCfg(Db)
- if _, err := mdl.Set("monitor_loop_interval", moniotrLoopIntervalStr); err != nil {
- resp.Write(ERROR_RET(7, "操作失败(monitor_loop_interval)"))
- }
- if _, err := mdl.Set("monitor_mail_interval", monitorMailIntervalStr); err != nil {
- resp.Write(ERROR_RET(8, "操作失败(monitor_mail_interval)"))
- }
- if _, err := mdl.Set("log_kept_days", logKeptDaysStr); err != nil {
- resp.Write(ERROR_RET(9, "操作失败(log_kept_days)"))
- }
- SYSLOG("WARN", fmt.Sprintf("管理员#%d %s %s修改了其它配置", sess.Account.Id, sess.Account.Name, sess.Account.Account))
- //更新配置缓存
- err := SysCfg.Load()
- if err != nil {
- resp.Write(ERROR_RET(7, fmt.Sprintf("配置更新成功,但未能成功刷新:%s", err.Error())))
- } else {
- resp.Write(ERROR_RET(0, ""))
- }
- }
|