api.go 879 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package cmd
  2. import (
  3. "time"
  4. "github.com/mudler/edgevpn/api"
  5. "github.com/mudler/edgevpn/pkg/edgevpn"
  6. "github.com/urfave/cli"
  7. )
  8. func API() cli.Command {
  9. return cli.Command{
  10. Name: "api",
  11. Usage: "Starts an http server to display network informations",
  12. Description: `Start listening locally, providing an API for the network.
  13. A simple UI interface is available to display network data.`,
  14. UsageText: "edgevpn api",
  15. Flags: append(CommonFlags,
  16. &cli.StringFlag{
  17. Name: "listen",
  18. Value: ":8080",
  19. Usage: "Listening address",
  20. },
  21. ),
  22. Action: func(c *cli.Context) error {
  23. e := edgevpn.New(cliToOpts(c)...)
  24. displayStart(e)
  25. // Join the node to the network, using our ledger
  26. if err := e.Join(); err != nil {
  27. return err
  28. }
  29. ledger, _ := e.Ledger()
  30. return api.API(c.String("listen"), 5*time.Second, 20*time.Second, ledger)
  31. },
  32. }
  33. }