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

3 years ago
3 years ago
3 years ago
  1. package site
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "io/ioutil"
  6. "net/http"
  7. "strings"
  8. "git.tetele.net/tgo/helper"
  9. )
  10. /**
  11. * 从总站获取数据库信息
  12. * master 总站域名带协议
  13. * host 分站域名带协议
  14. * 2020/06/05
  15. * gz
  16. */
  17. /**
  18. * 从总站获取分站数据库及ID信息
  19. * 2020/06/06
  20. * gz
  21. */
  22. func GetSiteFromMaster(master, host string) (map[string]string, error) {
  23. url := helper.StringJoin(master, "/api/gethostdb")
  24. var site map[string]string = make(map[string]string)
  25. resp, err := http.Post(url, "application/x-www-form-urlencoded", strings.NewReader("host="+host))
  26. if err != nil {
  27. return site, errors.New("获取站点数据失败," + err.Error())
  28. }
  29. defer resp.Body.Close()
  30. body, err := ioutil.ReadAll(resp.Body)
  31. if err != nil {
  32. return site, errors.New("获取站点数据失败," + err.Error())
  33. }
  34. type D struct {
  35. Database interface{} `json:"database"`
  36. SiteId interface{} `json:"site_id"`
  37. }
  38. type Reply struct {
  39. Code interface{} `json:"code"`
  40. Data D `json:"data"`
  41. Msg string `json:"msg"`
  42. }
  43. var data Reply
  44. err = json.Unmarshal(body, &data)
  45. if err != nil {
  46. return site, errors.New("站点数据格式错误," + err.Error())
  47. }
  48. if helper.ToStr(data.Code) != "1" {
  49. return site, errors.New(data.Msg)
  50. }
  51. if data.Data.Database != "" {
  52. site["database"] = helper.ToStr(data.Data.Database)
  53. }
  54. if data.Data.SiteId != "" {
  55. site["site_id"] = helper.ToStr(data.Data.SiteId)
  56. }
  57. return site, nil
  58. }