A simple monitoring solution written in Go (work in progress)
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.

44 lines
772 B

  1. package client
  2. import (
  3. "git.binarythought.com/cdramey/alrm/api"
  4. "git.binarythought.com/cdramey/alrm/config"
  5. "net/http"
  6. "net/url"
  7. )
  8. func Shutdown(cfg *config.Config) error {
  9. return doCommand(cfg, "shutdown")
  10. }
  11. func Restart(cfg *config.Config) error {
  12. return doCommand(cfg, "restart")
  13. }
  14. func doCommand(cfg *config.Config, cm string) error {
  15. aurl, err := url.Parse("http://" + cfg.Listen + "/api")
  16. if err != nil {
  17. return err
  18. }
  19. cmd := api.NewCommand(cm)
  20. err = cmd.Sign(cfg.APIKey)
  21. if err != nil {
  22. return err
  23. }
  24. cjson, err := cmd.JSON()
  25. if err != nil {
  26. return err
  27. }
  28. params := url.Values{}
  29. params.Add("cmd", string(cjson))
  30. resp, err := http.PostForm(aurl.String(), params)
  31. if err != nil {
  32. return err
  33. }
  34. defer resp.Body.Close()
  35. return nil
  36. }