zerotier.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package httper
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "net/http"
  6. "strings"
  7. )
  8. func ZTGet(url string) ([]byte, error) {
  9. port, err := ioutil.ReadFile("/var/lib/zerotier-one/zerotier-one.port")
  10. if err != nil {
  11. return nil, err
  12. }
  13. // Build the target URL
  14. targetURL := fmt.Sprintf("http://localhost:%s%s", strings.TrimSpace(string(port)), url)
  15. // Create a new request
  16. req, err := http.NewRequest("GET", targetURL, nil)
  17. if err != nil {
  18. return nil, err
  19. }
  20. // Add the X-ZT1-AUTH header
  21. authToken, err := ioutil.ReadFile("/var/lib/zerotier-one/authtoken.secret")
  22. if err != nil {
  23. return nil, err
  24. }
  25. req.Header.Set("X-ZT1-AUTH", strings.TrimSpace(string(authToken)))
  26. client := http.Client{}
  27. resp, err := client.Do(req)
  28. if err != nil {
  29. return nil, err
  30. }
  31. defer resp.Body.Close()
  32. respBody, err := ioutil.ReadAll(resp.Body)
  33. if err != nil {
  34. return nil, err
  35. }
  36. return respBody, nil
  37. }
  38. func ZTPost(url string, body string) ([]byte, error) {
  39. port, err := ioutil.ReadFile("/var/lib/zerotier-one/zerotier-one.port")
  40. if err != nil {
  41. return nil, err
  42. }
  43. // Build the target URL
  44. targetURL := fmt.Sprintf("http://localhost:%s%s", strings.TrimSpace(string(port)), url)
  45. // Create a new request
  46. req, err := http.NewRequest("POST", targetURL, strings.NewReader(body))
  47. if err != nil {
  48. return nil, err
  49. }
  50. // Add the X-ZT1-AUTH header
  51. authToken, err := ioutil.ReadFile("/var/lib/zerotier-one/authtoken.secret")
  52. if err != nil {
  53. return nil, err
  54. }
  55. req.Header.Set("X-ZT1-AUTH", strings.TrimSpace(string(authToken)))
  56. client := http.Client{}
  57. resp, err := client.Do(req)
  58. if err != nil {
  59. return nil, err
  60. }
  61. defer resp.Body.Close()
  62. respBody, err := ioutil.ReadAll(resp.Body)
  63. if err != nil {
  64. return nil, err
  65. }
  66. return respBody, nil
  67. }