first commit
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
package srvconfig
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
"xiawan/wx/clientsdk/baseinfo"
|
||||
"xiawan/wx/clientsdk/baseutils"
|
||||
|
||||
"github.com/gogf/gf/database/gredis"
|
||||
)
|
||||
|
||||
// GlobalSetting 全局设置
|
||||
var GlobalSetting Setting
|
||||
|
||||
// TaskExecWaitTimes 任务执行间隔时间 500毫秒
|
||||
var TaskExecWaitTimes = uint32(500)
|
||||
|
||||
// Setting 设置
|
||||
type Setting struct {
|
||||
Debug bool `json:"debug"`
|
||||
Host string `json:"host"`
|
||||
Port string `json:"port"`
|
||||
ApiVersion string `json:"apiVersion"`
|
||||
OpenClearMsg bool `json:"openClearMsg"`
|
||||
SycnTargetIpUrl string `json:"sycnTargetIpUrl"` // 同步外网IP地址的url
|
||||
|
||||
WorkerPoolSize uint32 `json:"workerpoolsize"`
|
||||
MaxWorkerTaskLen uint32 `json:"maxworkertasklen"`
|
||||
WebDomain string `json:"webdomain"`
|
||||
WebDomainNum string `json:"webdomainnum"`
|
||||
SyncOnlineCount string `json:"syncOnlineCount"`
|
||||
WebTaskName string `json:"webtaskname"`
|
||||
WebTaskAppNumber string `json:"webtaskappnumber"`
|
||||
//Redis
|
||||
RedisConfig gredis.Config `json:"redisConfig"`
|
||||
//消息同步 是否按微信id 发布消息
|
||||
NewsSynWxId bool `json:"newsSynWxId"`
|
||||
Dt bool `json:"dt"`
|
||||
MysqlConnectStr string `json:"mySqlConnectStr"`
|
||||
InitializeMySQLTables bool `json:"initializeMySQLTables"`
|
||||
UserInputKey string `json:"userInputKey"`
|
||||
Version string `json:"version"`
|
||||
HttpSyncMsg bool `json:"httpSyncMsg"`
|
||||
IsInitOld bool `json:"isInitOld"`
|
||||
WsSyncMsg bool `json:"wsSyncMsg"`
|
||||
SyncHisyory bool `json:"syncHisyory"`
|
||||
LoginBeforeRequestUrl string `json:"loginBeforeRequestUrl"` // 登录前会请求该 url(二维码和唤醒)
|
||||
// 当前服务器外网IP地址
|
||||
TargetIp string `json:"targetIp"`
|
||||
// 当前 HTTP-Api 服务的本地地址 基址
|
||||
LocalApiUrl string
|
||||
// 推广关注自己的微信公众号(新用户首次登录时关注)
|
||||
GhWxid string `json:"ghWxid"`
|
||||
// 管理接口授权 ADMIN_KEY
|
||||
AdminKey string `json:"adminKey"`
|
||||
// 是否开启 mac2ipad
|
||||
Mac2Ipad bool `json:"mac2ipad"`
|
||||
// 是否开启 car2ipad
|
||||
Car2Ipad bool `json:"car2ipad"`
|
||||
}
|
||||
|
||||
// getExternal 请求获取外网ip
|
||||
func getExternal() string {
|
||||
resp, err := http.Get(GlobalSetting.SycnTargetIpUrl)
|
||||
if err != nil {
|
||||
fmt.Printf("获取 ip 失败 -> 退出程序!---->")
|
||||
os.Exit(1)
|
||||
// return fmt.Sprintf("%s:%s", GlobalSetting.Host, GlobalSetting.Port)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
content, _ := ioutil.ReadAll(resp.Body)
|
||||
if content == nil {
|
||||
fmt.Printf("获取 ip 失败 -> 退出程序!---->")
|
||||
os.Exit(1)
|
||||
// return fmt.Sprintf("%s:%s", GlobalSetting.Host, GlobalSetting.Port)
|
||||
}
|
||||
// 校验一下是不是 ip
|
||||
if net.ParseIP(string(content)) == nil {
|
||||
fmt.Printf("获取 ip 失败 -> 退出程序!---->")
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Printf("获取 ip 成功 -> %s ----> %s\n", content, GlobalSetting.SycnTargetIpUrl)
|
||||
|
||||
return fmt.Sprintf("%s:%s", content, GlobalSetting.Port)
|
||||
}
|
||||
|
||||
func isValidWeChatID(wxid string) bool {
|
||||
if strings.TrimSpace(wxid) == "" {
|
||||
GlobalSetting.GhWxid = ""
|
||||
return true
|
||||
}
|
||||
regex := `^[a-zA-Z][a-zA-Z0-9_-]{5,19}$`
|
||||
r := regexp.MustCompile(regex)
|
||||
return r.MatchString(wxid)
|
||||
}
|
||||
|
||||
func ConfigSetUp() {
|
||||
tmpHomeDir, err := os.Getwd()
|
||||
if err != nil {
|
||||
baseutils.PrintLog(err.Error())
|
||||
return
|
||||
}
|
||||
baseinfo.HomeDIR = tmpHomeDir
|
||||
|
||||
// 读取配置文件
|
||||
configData, err := baseutils.ReadFile(baseinfo.HomeDIR + "/assets/setting.json")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = json.Unmarshal(configData, &GlobalSetting)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
if len(strings.TrimSpace(GlobalSetting.AdminKey)) == 0 {
|
||||
// 默认授权admin_key
|
||||
GlobalSetting.AdminKey = "df704bd7012548049e68db25aff0507f"
|
||||
}
|
||||
fmt.Println("======== ADMIN_KEY ===", GlobalSetting.AdminKey, "========")
|
||||
|
||||
if !isValidWeChatID(GlobalSetting.GhWxid) {
|
||||
fmt.Println("引流公众号(assets/setting.json ghWxid)不合法:", GlobalSetting.GhWxid, ";已重设为空")
|
||||
GlobalSetting.GhWxid = ""
|
||||
}
|
||||
|
||||
// 确保API版本格式正确,以斜杠开头
|
||||
if GlobalSetting.ApiVersion != "" && !strings.HasPrefix(GlobalSetting.ApiVersion, "/") {
|
||||
GlobalSetting.ApiVersion = "/" + GlobalSetting.ApiVersion
|
||||
}
|
||||
if GlobalSetting.ApiVersion == "/" {
|
||||
GlobalSetting.ApiVersion = ""
|
||||
}
|
||||
// 如果ApiVersion不为空且不以斜杠结尾,则添加斜杠
|
||||
if GlobalSetting.ApiVersion != "" && !strings.HasSuffix(GlobalSetting.ApiVersion, "/") {
|
||||
GlobalSetting.ApiVersion += "/"
|
||||
}
|
||||
GlobalSetting.LocalApiUrl = fmt.Sprintf("http://127.0.0.1:%s%s", GlobalSetting.Port, GlobalSetting.ApiVersion)
|
||||
|
||||
// 获取当前服务器外网IP地址
|
||||
// 如果没有指定 TargetIp, 同时 SycnTargetIpUrl 不为空, 则请求 SycnTargetIpUrl 获取外网 IP
|
||||
if GlobalSetting.TargetIp == "" && GlobalSetting.SycnTargetIpUrl != "" {
|
||||
GlobalSetting.TargetIp = getExternal()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user