func NewLocalNode(cfg *Config) (*LocalNode, error) { var err error n := new(LocalNode) n.logger = log.New(os.Stderr, "[local] ", log.LstdFlags) n.secret, err = secure.NetworkSecretUnmarshal(cfg.SecretKey) if err != nil { return nil, err } n.config = cfg n.config.NetworkID = n.secret.InfoHash() n.state = NewState(n.secret) n.services = make(map[string]Service) n.AddService(&NetTable{}) n.AddService(&ListenerService{}) n.AddService(&DiscoveryDHT{}) n.AddService(&InterfaceService{}) n.AddService(&STUNService{}) n.AddService(&UPnPService{}) n.AddService(&HttpService{}) return n, nil }
func actionGetIP(ctx *cli.Context) { keyStr := os.Getenv(MeshbirdKeyEnv) if keyStr == "" { logger.Fatalf("environment variable %s is not specified", MeshbirdKeyEnv) } secret, err := secure.NetworkSecretUnmarshal(keyStr) if err != nil { logger.Fatal(err) } state := common.NewState(secret) state.Save() fmt.Println(state.PrivateIP) }
func actionNew(ctx *cli.Context) { var secret *secure.NetworkSecret var err error if len(ctx.Args()) > 0 { keyStr := ctx.Args().First() secret, err = secure.NetworkSecretUnmarshal(keyStr) if err != nil { logger.Fatal(err) } } else { _, ipnet, err := net.ParseCIDR(ctx.String("CIDR")) if err != nil { logger.Fatalf("cidr parse error: %s", err) } secret = secure.NewNetworkSecret(ipnet) } keyStr := secret.Marshal() logger.Printf("key: %s", keyStr) }