mirror of
				https://github.com/bjdgyc/anylink.git
				synced 2025-11-04 19:16:22 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package admin
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"errors"
 | 
						|
	"io"
 | 
						|
	"net/http"
 | 
						|
	"regexp"
 | 
						|
 | 
						|
	"github.com/bjdgyc/anylink/base"
 | 
						|
	"github.com/bjdgyc/anylink/dbdata"
 | 
						|
)
 | 
						|
 | 
						|
func setOtherGet(data interface{}, w http.ResponseWriter) {
 | 
						|
	err := dbdata.SettingGet(data)
 | 
						|
	if err != nil && !dbdata.CheckErrNotFound(err) {
 | 
						|
		RespError(w, RespInternalErr, err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	// 不明文输出SMTP的密码
 | 
						|
	switch dbdata.StructName(data) {
 | 
						|
	case "SettingSmtp":
 | 
						|
		data.(*dbdata.SettingSmtp).Password = ""
 | 
						|
	}
 | 
						|
	RespSucess(w, data)
 | 
						|
}
 | 
						|
 | 
						|
func setOtherEdit(data interface{}, w http.ResponseWriter, r *http.Request) {
 | 
						|
	body, err := io.ReadAll(r.Body)
 | 
						|
	if err != nil {
 | 
						|
		RespError(w, RespInternalErr, err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	defer r.Body.Close()
 | 
						|
 | 
						|
	err = json.Unmarshal(body, data)
 | 
						|
	if err != nil {
 | 
						|
		RespError(w, RespInternalErr, err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	// fmt.Println(data)
 | 
						|
	switch dbdata.StructName(data) {
 | 
						|
	case "SettingSmtp":
 | 
						|
		// 密码为空时则不修改
 | 
						|
		smtp := &dbdata.SettingSmtp{}
 | 
						|
		err := dbdata.SettingGet(smtp)
 | 
						|
		if err == nil && data.(*dbdata.SettingSmtp).Password == "" {
 | 
						|
			data.(*dbdata.SettingSmtp).Password = smtp.Password
 | 
						|
		}
 | 
						|
	}
 | 
						|
	err = dbdata.SettingSet(data)
 | 
						|
	if err != nil {
 | 
						|
		RespError(w, RespInternalErr, err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	RespSucess(w, data)
 | 
						|
}
 | 
						|
 | 
						|
func SetOtherSmtp(w http.ResponseWriter, r *http.Request) {
 | 
						|
	data := &dbdata.SettingSmtp{}
 | 
						|
	setOtherGet(data, w)
 | 
						|
}
 | 
						|
 | 
						|
func SetOtherSmtpEdit(w http.ResponseWriter, r *http.Request) {
 | 
						|
	data := &dbdata.SettingSmtp{}
 | 
						|
	setOtherEdit(data, w, r)
 | 
						|
}
 | 
						|
 | 
						|
func SetOther(w http.ResponseWriter, r *http.Request) {
 | 
						|
	data := &dbdata.SettingOther{}
 | 
						|
	setOtherGet(data, w)
 | 
						|
}
 | 
						|
 | 
						|
func SetOtherEdit(w http.ResponseWriter, r *http.Request) {
 | 
						|
	data := &dbdata.SettingOther{}
 | 
						|
	setOtherEdit(data, w, r)
 | 
						|
}
 | 
						|
 | 
						|
func SetOtherAuditLog(w http.ResponseWriter, r *http.Request) {
 | 
						|
	data, err := dbdata.SettingGetAuditLog()
 | 
						|
	if err != nil {
 | 
						|
		RespError(w, RespInternalErr, err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	data.AuditInterval = base.Cfg.AuditInterval
 | 
						|
	RespSucess(w, data)
 | 
						|
}
 | 
						|
 | 
						|
func SetOtherAuditLogEdit(w http.ResponseWriter, r *http.Request) {
 | 
						|
	body, err := io.ReadAll(r.Body)
 | 
						|
	if err != nil {
 | 
						|
		RespError(w, RespInternalErr, err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	defer r.Body.Close()
 | 
						|
	data := &dbdata.SettingAuditLog{}
 | 
						|
	err = json.Unmarshal(body, data)
 | 
						|
	if err != nil {
 | 
						|
		RespError(w, RespInternalErr, err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	if data.LifeDay < 0 || data.LifeDay > 365 {
 | 
						|
		RespError(w, RespParamErr, errors.New("日志存储时长范围在 0 ~ 365"))
 | 
						|
		return
 | 
						|
	}
 | 
						|
	ok, _ := regexp.Match("^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0][0])$", []byte(data.ClearTime))
 | 
						|
	if !ok {
 | 
						|
		RespError(w, RespParamErr, errors.New("每天清理时间填写有误"))
 | 
						|
		return
 | 
						|
	}
 | 
						|
	err = dbdata.SettingSet(data)
 | 
						|
	if err != nil {
 | 
						|
		RespError(w, RespInternalErr, err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	RespSucess(w, data)
 | 
						|
}
 |