From 6b16981979c896fa11d81528c8a31474d5fea9dd Mon Sep 17 00:00:00 2001 From: Jeromy Date: Mon, 1 Jun 2015 14:24:20 -0700 Subject: [PATCH] make the default repo for corebuilder work --- core/builder.go | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/core/builder.go b/core/builder.go index dcc22afb992..76953ad048b 100644 --- a/core/builder.go +++ b/core/builder.go @@ -1,12 +1,17 @@ package core import ( + "crypto/rand" + "encoding/base64" "errors" ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" dsync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore/sync" context "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context" + key "github.com/ipfs/go-ipfs/blocks/key" + ci "github.com/ipfs/go-ipfs/p2p/crypto" repo "github.com/ipfs/go-ipfs/repo" + cfg "github.com/ipfs/go-ipfs/repo/config" ) var ErrAlreadyBuilt = errors.New("this builder has already been used") @@ -28,10 +33,32 @@ func NewNodeBuilder() *NodeBuilder { } } -func defaultRepo() repo.Repo { +func defaultRepo() (repo.Repo, error) { + c := cfg.Config{} + priv, pub, err := ci.GenerateKeyPairWithReader(ci.RSA, 1024, rand.Reader) + if err != nil { + return nil, err + } + + data, err := pub.Hash() + if err != nil { + return nil, err + } + + privkeyb, err := priv.Bytes() + if err != nil { + return nil, err + } + + c.Bootstrap = cfg.DefaultBootstrapAddresses + c.Addresses.Swarm = []string{"/ip4/0.0.0.0/tcp/4001"} + c.Identity.PeerID = key.Key(data).B58String() + c.Identity.PrivKey = base64.StdEncoding.EncodeToString(privkeyb) + return &repo.Mock{ D: dsync.MutexWrap(ds.NewMapDatastore()), - } + C: c, + }, nil } func (nb *NodeBuilder) Online() *NodeBuilder { @@ -65,7 +92,11 @@ func (nb *NodeBuilder) Build(ctx context.Context) (*IpfsNode, error) { } nb.built = true if nb.repo == nil { - nb.repo = defaultRepo() + r, err := defaultRepo() + if err != nil { + return nil, err + } + nb.repo = r } conf := standardWithRouting(nb.repo, nb.online, nb.routing, nb.peerhost) return NewIPFSNode(ctx, conf)