+
+ sk, err := hex.DecodeString(cfg.PrivateKey)
+ if err != nil {
+ panic(err)
+ }
+ options := []ycore.SetupOption{
+ ycore.NodeInfo(cfg.NodeInfo),
+ ycore.NodeInfoPrivacy(cfg.NodeInfoPrivacy),
+ }
+ for _, addr := range cfg.Listen {
+ options = append(options, ycore.ListenAddress(addr))
+ }
+ for _, peer := range cfg.Peers {
+ options = append(options, ycore.Peer{URI: peer})
+ }
+ for intf, peers := range cfg.InterfacePeers {
+ for _, peer := range peers {
+ options = append(options, ycore.Peer{URI: peer, SourceInterface: intf})
+ }
+ }
+ for _, allowed := range cfg.AllowedPublicKeys {
+ k, err := hex.DecodeString(allowed)
+ if err != nil {
+ panic(err)
+ }
+ options = append(options, ycore.AllowedPublicKey(k[:]))
+ }
+
+ core, err := ycore.New(sk[:], glog, options...)
+ if err != nil {