Initial commit (code only without large binaries)

This commit is contained in:
robin
2026-02-15 18:58:44 +08:00
commit 35df75498f
9442 changed files with 1495866 additions and 0 deletions

View File

@@ -0,0 +1,259 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
//go:build plus
package setting
import (
"encoding/json"
"errors"
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/userconfigs"
"github.com/iwind/TeaGo/actions"
"regexp"
)
type SmsAction struct {
actionutils.ParentAction
}
func (this *SmsAction) Init() {
this.Nav("", "", "sms")
}
func (this *SmsAction) RunGet(params struct{}) {
config, err := configloaders.LoadUserSenderConfig()
if err != nil {
this.ErrorPage(err)
return
}
if config == nil {
this.ErrorPage(errors.New("'config' should not be nil"))
return
}
// 验证短信
if config.VerifySMS == nil {
config.VerifySMS = userconfigs.NewSMSSenderConfig()
}
// 通知短信
if config.NotifySMS == nil {
config.NotifySMS = userconfigs.NewSMSSenderConfig()
}
this.Data["config"] = config
this.Show()
}
func (this *SmsAction) RunPost(params struct {
VerifySMSJSON []byte
NotifySMSJSON []byte
Must *actions.Must
CSRF *actionutils.CSRF
}) {
defer this.CreateLogInfo(codes.User_LogUpdateUserSmsSettings)
config, err := configloaders.LoadUserSenderConfig()
if err != nil {
this.ErrorPage(err)
return
}
var verifySMSConfig = userconfigs.NewSMSSenderConfig()
err = json.Unmarshal(params.VerifySMSJSON, verifySMSConfig)
if err != nil {
this.ErrorPage(err)
return
}
config.VerifySMS = verifySMSConfig
if verifySMSConfig.IsOn {
switch verifySMSConfig.Type {
case userconfigs.SMSSenderWebHook:
if verifySMSConfig.WebHookParams == nil {
this.Fail("请配置HTTP接口相关参数")
return
}
if len(verifySMSConfig.WebHookParams.URL) == 0 {
this.Fail("请输入激活短信HTTP接口URL地址")
return
}
if !regexp.MustCompile(`^(http|https)://`).MatchString(verifySMSConfig.WebHookParams.URL) {
this.Fail("激活短信HTTP接口URL地址必须以http://或https://开头")
return
}
case userconfigs.SMSSenderAliyunSMS:
if verifySMSConfig.AliyunSMSParams == nil {
this.Fail("请配置阿里云短信相关参数")
return
}
if len(verifySMSConfig.AliyunSMSParams.Sign) == 0 {
this.Fail("请输入签名名称")
return
}
if len(verifySMSConfig.AliyunSMSParams.TemplateCode) == 0 {
this.Fail("请输入模板CODE")
return
}
if len(verifySMSConfig.AliyunSMSParams.CodeVarName) == 0 {
this.Fail("请输入模板中验证码变量名称")
return
}
if len(verifySMSConfig.AliyunSMSParams.AccessKeyId) == 0 {
this.Fail("请输入AccessKey ID")
return
}
if len(verifySMSConfig.AliyunSMSParams.AccessKeySecret) == 0 {
this.Fail("请输入AccessKey Secret")
return
}
case userconfigs.SMSSenderTencentSMS:
if verifySMSConfig.TencentSMSParams == nil {
this.Fail("请配置腾讯云短信相关参数")
return
}
var digitsReg = regexp.MustCompile(`^\d+$`)
if len(verifySMSConfig.TencentSMSParams.SDKAppId) == 0 {
this.Fail("请输入SDK应用ID")
return
}
if !digitsReg.MatchString(verifySMSConfig.TencentSMSParams.SDKAppId) {
this.Fail("SDK应用ID是一组数字请重新输入")
return
}
if len(verifySMSConfig.TencentSMSParams.Sign) == 0 {
this.Fail("请输入签名内容")
return
}
if len(verifySMSConfig.TencentSMSParams.TemplateId) == 0 {
this.Fail("请输入模板ID")
return
}
if !digitsReg.MatchString(verifySMSConfig.TencentSMSParams.TemplateId) {
this.Fail("正文模板ID是一组数字请重新输入")
return
}
if len(verifySMSConfig.TencentSMSParams.AccessKeyId) == 0 {
this.Fail("请输入密钥SecretId")
return
}
if len(verifySMSConfig.TencentSMSParams.AccessKeySecret) == 0 {
this.Fail("请输入密钥SecretKey")
return
}
}
}
var notifySMSConfig = userconfigs.NewSMSSenderConfig()
err = json.Unmarshal(params.NotifySMSJSON, notifySMSConfig)
if err != nil {
this.ErrorPage(err)
return
}
config.NotifySMS = notifySMSConfig
if notifySMSConfig.IsOn {
switch notifySMSConfig.Type {
case userconfigs.SMSSenderWebHook:
if notifySMSConfig.WebHookParams == nil {
this.Fail("请配置HTTP接口相关参数")
return
}
if len(notifySMSConfig.WebHookParams.URL) == 0 {
this.Fail("请输入通知短信HTTP接口URL地址")
return
}
if !regexp.MustCompile(`^(http|https)://`).MatchString(notifySMSConfig.WebHookParams.URL) {
this.Fail("通知短信HTTP接口URL地址必须以http://或https://开头")
return
}
case userconfigs.SMSSenderAliyunSMS:
if notifySMSConfig.AliyunSMSParams == nil {
this.Fail("请配置阿里云短信相关参数")
return
}
if len(notifySMSConfig.AliyunSMSParams.Sign) == 0 {
this.Fail("请输入签名名称")
return
}
if len(notifySMSConfig.AliyunSMSParams.TemplateCode) == 0 {
this.Fail("请输入模板CODE")
return
}
if len(notifySMSConfig.AliyunSMSParams.CodeVarName) == 0 {
this.Fail("请输入模板中验证码变量名称")
return
}
if len(notifySMSConfig.AliyunSMSParams.AccessKeyId) == 0 {
this.Fail("请输入AccessKey ID")
return
}
if len(notifySMSConfig.AliyunSMSParams.AccessKeySecret) == 0 {
this.Fail("请输入AccessKey Secret")
return
}
case userconfigs.SMSSenderTencentSMS:
if notifySMSConfig.TencentSMSParams == nil {
this.Fail("请配置腾讯云短信相关参数")
return
}
var digitsReg = regexp.MustCompile(`^\d+$`)
if len(notifySMSConfig.TencentSMSParams.SDKAppId) == 0 {
this.Fail("请输入SDK应用ID")
return
}
if !digitsReg.MatchString(notifySMSConfig.TencentSMSParams.SDKAppId) {
this.Fail("SDK应用ID是一组数字请重新输入")
return
}
if len(notifySMSConfig.TencentSMSParams.Sign) == 0 {
this.Fail("请输入签名内容")
return
}
if len(notifySMSConfig.TencentSMSParams.TemplateId) == 0 {
this.Fail("请输入模板ID")
return
}
if !digitsReg.MatchString(notifySMSConfig.TencentSMSParams.TemplateId) {
this.Fail("正文模板ID是一组数字请重新输入")
return
}
if len(notifySMSConfig.TencentSMSParams.AccessKeyId) == 0 {
this.Fail("请输入密钥SecretId")
return
}
if len(notifySMSConfig.TencentSMSParams.AccessKeySecret) == 0 {
this.Fail("请输入密钥SecretKey")
return
}
}
}
configJSON, err := json.Marshal(config)
if err != nil {
this.ErrorPage(err)
return
}
_, err = this.RPC().SysSettingRPC().UpdateSysSetting(this.AdminContext(), &pb.UpdateSysSettingRequest{
Code: systemconfigs.SettingCodeUserSenderConfig,
ValueJSON: configJSON,
})
if err != nil {
this.ErrorPage(err)
return
}
this.Success()
}