|
- package main
-
- import (
- "encoding/base64"
- "encoding/json"
- "errors"
- "io/ioutil"
- "log"
- )
-
- //WechatAPIConfig all secret related API Config
- type WechatAPIConfig struct {
- //Token is the wechat API shared secrete
- Token string `json:"Token"`
-
- //EncodingAESKey is the Key for encrypt messages
- EncodingAESKey string `'json:"EncodingAESKey"`
-
- //Appid is wechat public account appid
- Appid string `json:"Appid"`
-
- //AppSecret is how we identify ourselves.
- AppSecret string `json:"AppSecret"`
-
- //AuthTokenSaveTo
- AuthTokenSaveTo string `json:"AuthTokenSaveTo"`
-
- //PublicAccountID
- PublicAccountID string `json:"PublicAccountID"`
- }
-
- //APIConfig contains secrets that cannot store in source file
- var APIConfig WechatAPIConfig
-
- type EspoCRMAPIConfig struct {
-
- //where the EspoCRM is installed
- BaseURL string `json:"BaseURL"`
-
- //access UserName
- UserName string `json:"UserName"`
-
- //access Password
- UserPass string `json:"password"`
- }
-
- //CRMConfig contains secrets that cannot store in source file
- //
- var CRMConfig EspoCRMAPIConfig
-
- func readConfig() error {
-
- log.Printf("read config from %s\r\n", "server_config.json")
- body, err := ioutil.ReadFile("server_config.json")
- if err != nil {
- log.Fatal("Cannot read config from server_config.json")
- return err
- }
- err = json.Unmarshal(body, &APIConfig)
- if APIConfig.AppSecret == "" {
- return errors.New("AppSecret not available")
- }
- if APIConfig.Appid == "" {
- return errors.New("AppId not available")
- }
- if APIConfig.AuthTokenSaveTo == "" {
- return errors.New("where to save accesstoken is unknown")
- }
- if APIConfig.EncodingAESKey == "" {
- return errors.New("unknown AesEncryptionKey")
- }
- if APIConfig.Token == "" {
- return errors.New("hidden shared secret token is empty")
- }
- return err
- }
-
- //convert AesEncryptKey into Binary 32bytes
- func getAesEncryptKey() [32]byte {
- key, _ := base64.StdEncoding.DecodeString(APIConfig.EncodingAESKey + "=")
- var k [32]byte
- copy(k[:], key)
- return k
- }
|