Files
waf-platform/EdgeCommon/pkg/userconfigs/user_sender_config_plus.go
2026-02-04 20:27:13 +08:00

106 lines
3.6 KiB
Go

// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
//go:build plus
package userconfigs
import (
"encoding/json"
"errors"
)
type EmailSenderConfig struct {
IsOn bool `yaml:"isOn" json:"isOn"`
SMTPHost string `yaml:"smtpHost" json:"smtpHost"`
SMTPPort int32 `yaml:"smtpPort" json:"smtpPort"`
Protocol string `yaml:"protocol" json:"protocol"` // tcp|tls
Username string `yaml:"username" json:"username"`
Password string `yaml:"password" json:"password"`
FromEmail string `yaml:"fromEmail" json:"fromEmail"` // 发件人Email
FromName string `yaml:"fromName" json:"fromName"` // 发件人名称
}
func NewEmailSenderConfig() *EmailSenderConfig {
return &EmailSenderConfig{
IsOn: true,
}
}
type SMSSenderType = string
const (
SMSSenderWebHook = "webHook"
SMSSenderAliyunSMS = "aliyunSMS"
SMSSenderTencentSMS = "tencentSMS"
)
type SMSSenderConfig struct {
IsOn bool `yaml:"isOn" json:"isOn"`
Type SMSSenderType `yaml:"type" json:"type"`
WebHookParams *SMSSenderWebHookParams `yaml:"webHookParams" json:"webHookParams"`
AliyunSMSParams *SMSSenderAliyunSMSParams `yaml:"aliyunSMSParams" json:"aliyunSMSParams"`
TencentSMSParams *SMSSenderTencentSMSParams `yaml:"tencentSMSParams" json:"tencentSMSParams"`
}
func NewSMSSenderConfig() *SMSSenderConfig {
return &SMSSenderConfig{
IsOn: true,
Type: SMSSenderWebHook,
WebHookParams: &SMSSenderWebHookParams{
URL: "",
Method: "GET",
},
AliyunSMSParams: &SMSSenderAliyunSMSParams{
CodeVarName: "code",
},
TencentSMSParams: &SMSSenderTencentSMSParams{},
}
}
func (this *SMSSenderConfig) ParamsJSON() ([]byte, error) {
var params any
switch this.Type {
case SMSSenderWebHook:
params = this.WebHookParams
case SMSSenderAliyunSMS:
params = this.AliyunSMSParams
case SMSSenderTencentSMS:
params = this.TencentSMSParams
default:
return nil, errors.New("not supported type '" + this.Type + "'")
}
return json.Marshal(params)
}
type SMSSenderWebHookParams struct {
URL string `yaml:"url" json:"url"` // (http|https)://...
Method string `yaml:"method" json:"method"` // GET|POST
}
type SMSSenderAliyunSMSParams struct {
Sign string `yaml:"sign" json:"sign"` // 签名名称
TemplateCode string `yaml:"templateCode" json:"templateCode"` // 模板CODE
CodeVarName string `yaml:"codeVarName" json:"codeVarName"` // 验证码变量
AccessKeyId string `yaml:"accessKeyId" json:"accessKeyId"` // AccessKeyId
AccessKeySecret string `yaml:"accessKeySecret" json:"accessKeySecret"` // AccessKeySecret
}
type SMSSenderTencentSMSParams struct {
SDKAppId string `yaml:"sdkAppId" json:"sdkAppId"` // 应用ID
Sign string `yaml:"sign" json:"sign"` // 签名名称
TemplateId string `yaml:"templateId" json:"templateId"` // 模板ID
AccessKeyId string `yaml:"accessKeyId" json:"accessKeyId"` // AccessKeyId
AccessKeySecret string `yaml:"accessKeySecret" json:"accessKeySecret"` // AccessKeySecret
}
type UserSenderConfig struct {
VerifyEmail *EmailSenderConfig `yaml:"verifyEmail" json:"verifyEmail"` // 验证邮件
NotifyEmail *EmailSenderConfig `yaml:"notifyEmail" json:"notifyEmail"` // 通知邮件
VerifySMS *SMSSenderConfig `yaml:"verifySMS" json:"verifySMS"` // 验证短信
NotifySMS *SMSSenderConfig `yaml:"notifySMS" json:"notifySMS"` // 通知短信
}
func DefaultUserSenderConfig() *UserSenderConfig {
return &UserSenderConfig{}
}