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 }