Files
pentapass/cmd/ppassd/ppassd.go
2024-10-10 10:04:02 +02:00

90 lines
1.7 KiB
Go

package main
import (
"context"
"flag"
pubsub "github.com/libp2p/go-libp2p-pubsub"
ipfslite "github.com/hsanjuan/ipfs-lite"
badger "github.com/ipfs/go-ds-badger2"
"github.com/k4lipso/pentapass/storage"
"github.com/k4lipso/pentapass/rpc"
"github.com/k4lipso/pentapass/crypto/age"
. "github.com/k4lipso/pentapass/internal/log"
)
var (
dbPath = flag.String("db", "./db", "db file path")
debug = flag.Bool("debug", false, "log debug information")
)
func main() {
flag.Parse()
InitLogger(*debug)
ctx := context.Background()
data := *dbPath
key, err := age.LoadOrGenerateKeys(*dbPath + "/age.key")
if err != nil {
Logger.Panic(err)
}
Logger.Debugf("AgeKey: %s\n", key.String())
Logger.Debugf("AgePublicKey: %s\n", key.Recipient().String())
h, dht, err := storage.SetupLibp2pHost(ctx, *dbPath)
Logger.Debug(h.ID().String())
if err != nil {
Logger.Panic(err)
}
ps, err := pubsub.NewGossipSub(ctx, h)
if err != nil {
Logger.Panic(err)
}
go storage.DiscoverPeers(ctx, h, dht)
store, err := badger.NewDatastore(data, &badger.DefaultOptions)
if err != nil {
Logger.Fatal(err)
}
defer store.Close()
ipfs, err := ipfslite.New(ctx, store, nil, h, dht, nil)
if err != nil {
Logger.Fatal(err)
}
storageHandler := storage.StorageHandler{
Ctx: ctx ,
Store: store,
Host: h,
Ipfs: ipfs,
PubSub: ps,
Key: key,
}
Cfg, err := storageHandler.NewConfig(*dbPath + "/config.json")
if err != nil {
Logger.Fatal(err)
}
storageHandler.Config = Cfg
storageHandler.ConfigPath = *dbPath + "/config.json"
storageHandler.InitNamespaces()
for _, val := range storageHandler.Namespaces {
defer val.Close()
}
rpc.StorageHandler = &storageHandler
rpc.Serve(*dbPath)
}