util.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package cmd
  2. import (
  3. "github.com/ipfs/go-log"
  4. "github.com/mudler/edgevpn/internal"
  5. "github.com/mudler/edgevpn/pkg/blockchain"
  6. "github.com/mudler/edgevpn/pkg/edgevpn"
  7. "github.com/mudler/edgevpn/pkg/logger"
  8. "github.com/peterbourgon/diskv"
  9. "github.com/songgao/water"
  10. "github.com/urfave/cli"
  11. )
  12. func displayStart(e *edgevpn.EdgeVPN) {
  13. e.Logger().Info(Copyright)
  14. e.Logger().Infof("Version: %s commit: %s", internal.Version, internal.Commit)
  15. }
  16. func cliToOpts(c *cli.Context) []edgevpn.Option {
  17. config := c.String("config")
  18. address := c.String("address")
  19. iface := c.String("interface")
  20. logLevel := c.String("log-level")
  21. libp2plogLevel := c.String("libp2p-log-level")
  22. ledgerState := c.String("ledger-state")
  23. lvl, err := log.LevelFromString(logLevel)
  24. if err != nil {
  25. lvl = log.LevelError
  26. }
  27. llger := logger.New(lvl)
  28. libp2plvl, err := log.LevelFromString(libp2plogLevel)
  29. if err != nil {
  30. libp2plvl = log.LevelFatal
  31. }
  32. token := c.String("token")
  33. if config == "" &&
  34. token == "" {
  35. llger.Fatal("EDGEVPNCONFIG or EDGEVPNTOKEN not supplied. At least a config file is required")
  36. }
  37. opts := []edgevpn.Option{
  38. edgevpn.Logger(llger),
  39. edgevpn.LibP2PLogLevel(libp2plvl),
  40. edgevpn.WithInterfaceMTU(c.Int("mtu")),
  41. edgevpn.WithPacketMTU(1420),
  42. edgevpn.WithInterfaceAddress(address),
  43. edgevpn.WithInterfaceName(iface),
  44. edgevpn.WithInterfaceType(water.TUN),
  45. edgevpn.NetLinkBootstrap(true),
  46. edgevpn.FromBase64(token),
  47. edgevpn.FromYaml(config),
  48. }
  49. if ledgerState != "" {
  50. opts = append(opts, edgevpn.WithStore(blockchain.NewDiskStore(diskv.New(diskv.Options{
  51. BasePath: ledgerState,
  52. CacheSizeMax: uint64(50), // 50MB
  53. }))))
  54. } else {
  55. opts = append(opts, edgevpn.WithStore(&blockchain.MemoryStore{}))
  56. }
  57. return opts
  58. }