api.go 808 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package cmd
  2. import (
  3. "github.com/mudler/edgevpn/api"
  4. "github.com/mudler/edgevpn/pkg/blockchain"
  5. "github.com/mudler/edgevpn/pkg/edgevpn"
  6. "github.com/urfave/cli"
  7. "go.uber.org/zap"
  8. )
  9. func API(l *zap.Logger) cli.Command {
  10. return cli.Command{
  11. Name: "api",
  12. Description: "api starts an http server to display network informations",
  13. Flags: append(CommonFlags,
  14. &cli.StringFlag{
  15. Name: "listen",
  16. Value: ":8080",
  17. },
  18. ),
  19. Action: func(c *cli.Context) error {
  20. e := edgevpn.New(cliToOpts(l, c)...)
  21. mw, err := e.MessageWriter()
  22. if err != nil {
  23. return err
  24. }
  25. ledger := blockchain.New(mw, 1000)
  26. // Join the node to the network, using our ledger
  27. if err := e.Join(ledger); err != nil {
  28. return err
  29. }
  30. return api.API(c.String("listen"), ledger)
  31. },
  32. }
  33. }