Reorg file paths, and initialize peer store

This commit is contained in:
Richard Ramos 2021-04-13 14:54:06 -04:00
parent 1b746cdec8
commit 11b588a46f
No known key found for this signature in database
GPG Key ID: 80D4B01265FDFE8F
3 changed files with 55 additions and 26 deletions

2
build/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*
!.gitignore

View File

@ -2,7 +2,7 @@ package main
import (
logging "github.com/ipfs/go-log"
"github.com/status-im/go-waku/cmd"
"github.com/status-im/go-waku/waku"
)
func main() {
@ -12,5 +12,5 @@ func main() {
}
logging.SetAllLoggers(lvl)
cmd.Execute()
waku.Execute()
}

View File

@ -1,9 +1,10 @@
package cmd
package waku
import (
"context"
"crypto/rand"
"encoding/hex"
"errors"
"fmt"
"net"
"os"
@ -11,11 +12,20 @@ import (
"syscall"
"github.com/ethereum/go-ethereum/crypto"
dssql "github.com/ipfs/go-ds-sql"
logging "github.com/ipfs/go-log"
"github.com/libp2p/go-libp2p"
"github.com/libp2p/go-libp2p-peerstore/pstoreds"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"github.com/status-im/go-waku/waku/persistence"
"github.com/status-im/go-waku/waku/persistence/sqlite"
"github.com/status-im/go-waku/waku/v2/node"
)
var log = logging.Logger("wakunode")
func randomHex(n int) (string, error) {
bytes := make([]byte, n)
if _, err := rand.Read(bytes); err != nil {
@ -24,6 +34,15 @@ func randomHex(n int) (string, error) {
return hex.EncodeToString(bytes), nil
}
func checkError(err error, msg string) {
if err != nil {
if msg != "" {
msg = msg + ": "
}
log.Fatal(msg, err)
}
}
var rootCmd = &cobra.Command{
Use: "waku",
Short: "Start a waku node",
@ -41,46 +60,52 @@ var rootCmd = &cobra.Command{
hostAddr, _ := net.ResolveTCPAddr("tcp", fmt.Sprint("0.0.0.0:", port))
if key == "" {
var err error
if key == "" {
key, err = randomHex(32)
if err != nil {
fmt.Println("Could not generate random key")
return
}
checkError(err, "Could not generate random key")
}
prvKey, err := crypto.HexToECDSA(key)
ctx := context.Background()
wakuNode, err := node.New(ctx, prvKey, []net.Addr{hostAddr})
if err != nil {
fmt.Println(err)
return
if dbPath == "" {
checkError(errors.New("dbpath can't be null"), "")
}
db, err := sqlite.NewDB(dbPath)
checkError(err, "Could not connect to DB")
ctx := context.Background()
// Create persistent peerstore
queries, err := sqlite.NewQueries("peerstore", db)
checkError(err, "Peerstore")
datastore := dssql.NewDatastore(db, queries)
opts := pstoreds.DefaultOpts()
peerStore, err := pstoreds.NewPeerstore(ctx, datastore, opts)
checkError(err, "Peerstore")
wakuNode, err := node.New(ctx, prvKey, []net.Addr{hostAddr}, libp2p.Peerstore(peerStore))
checkError(err, "Wakunode")
if relay {
wakuNode.MountRelay()
}
if store && dbPath != "" {
db, err := NewDBStore(dbPath)
if err != nil {
fmt.Println(err)
return
}
if store {
dbStore, err := persistence.NewDBStore(persistence.WithDB(db))
checkError(err, "DBStore")
err = wakuNode.MountStore(dbStore)
checkError(err, "Error mounting store")
err = wakuNode.MountStore(db)
if err != nil {
fmt.Println(err)
return
}
wakuNode.StartStore()
}
if storenode != "" && !store {
fmt.Println("Store protocol was not started")
return
checkError(errors.New("Store protocol was not started"), "")
} else {
if storenode != "" {
wakuNode.AddStorePeer(storenode)
@ -101,6 +126,8 @@ var rootCmd = &cobra.Command{
// shut the node down
wakuNode.Stop()
err = db.Close()
checkError(err, "DBClose")
},
}