site
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.5 KiB

package site
import (
"encoding/json"
"errors"
"io/ioutil"
"net/http"
"strings"
"git.tetele.net/tgo/helper"
)
/**
* 从总站获取数据库信息
* master 总站域名,带协议
* host 分站域名,带协议
* 2020/06/05
* gz
*/
/**
* 从总站获取分站数据库及ID信息
* 2020/06/06
* gz
*/
func GetSiteFromMaster(master, host string) (map[string]string, error) {
url := helper.StringJoin(master, "/api/gethostdb")
var site map[string]string = make(map[string]string)
resp, err := http.Post(url, "application/x-www-form-urlencoded", strings.NewReader("host="+host))
if err != nil {
return site, errors.New("获取站点数据失败," + err.Error())
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return site, errors.New("获取站点数据失败," + err.Error())
}
type D struct {
Database interface{} `json:"database"`
SiteId interface{} `json:"site_id"`
}
type Reply struct {
Code interface{} `json:"code"`
Data D `json:"data"`
Msg string `json:"msg"`
}
var data Reply
err = json.Unmarshal(body, &data)
if err != nil {
return site, errors.New("站点数据格式错误," + err.Error())
}
if helper.ToStr(data.Code) != "1" {
return site, errors.New(data.Msg)
}
if data.Data.Database != "" {
site["database"] = helper.ToStr(data.Data.Database)
}
if data.Data.SiteId != "" {
site["site_id"] = helper.ToStr(data.Data.SiteId)
}
return site, nil
}