FULL OC-DISCOVERY LOGIC

This commit is contained in:
mr
2026-01-30 16:57:36 +01:00
parent d50e5d56f7
commit 562d86125e
24 changed files with 1769 additions and 929 deletions

49
main.go
View File

@@ -2,31 +2,37 @@ package main
import (
"context"
"log"
"oc-discovery/conf"
"oc-discovery/daemons/dht"
"oc-discovery/daemons/pubsub"
"oc-discovery/daemons/node"
"os"
"os/signal"
"strings"
"syscall"
oclib "cloud.o-forge.io/core/oc-lib"
beego "github.com/beego/beego/v2/server/web"
"github.com/beego/beego/v2/server/web/filter/cors"
pss "github.com/libp2p/go-libp2p-pubsub"
)
const appname = "oc-discovery"
func main() {
logger := oclib.GetLogger()
// Init the oc-lib
oclib.Init(appname)
// get the right config file
o := oclib.GetConfLoader()
conf.GetConfig().Name = o.GetStringDefault("NAME", "opencloud-demo")
conf.GetConfig().Hostname = o.GetStringDefault("HOSTNAME", "localhost")
conf.GetConfig().PSKPath = o.GetStringDefault("PSK_PATH", "./psk/psk")
conf.GetConfig().DHTEndpointPort = o.GetInt64Default("DHT_ENDPOINT_PORT", 4001)
conf.GetConfig().NodeEndpointPort = o.GetInt64Default("NODE_ENDPOINT_PORT", 4001)
conf.GetConfig().PublicKeyPath = o.GetStringDefault("PUBLIC_KEY_PATH", "./pem/public.pem")
conf.GetConfig().PrivateKeyPath = o.GetStringDefault("PRIVATE_KEY_PATH", "./pem/private.pem")
conf.GetConfig().BootstrapAddresses = o.GetStringDefault("BOOTSTRAP_ADDRESSES", "")
conf.GetConfig().IndexerAddresses = o.GetStringDefault("INDEXER_ADDRESSES", "")
conf.GetConfig().NodeMode = o.GetStringDefault("NODE_MODE", "node")
// Normal beego init
beego.BConfig.AppName = appname
@@ -40,20 +46,23 @@ func main() {
ExposeHeaders: []string{"Content-Length", "Content-Type"},
AllowCredentials: true,
}))
ctx := context.Background()
DHT, err := dht.Init(ctx)
if err == nil {
logger.Err(err)
ctx, stop := signal.NotifyContext(
context.Background(),
os.Interrupt,
syscall.SIGTERM,
)
defer stop()
isNode := strings.Contains(conf.GetConfig().NodeMode, "node")
isIndexer := strings.Contains(conf.GetConfig().NodeMode, "indexer")
if n, err := node.InitNode(isNode, isIndexer); err != nil {
panic(err)
} else {
ps, err := pss.NewGossipSub(
ctx, DHT.Host,
pss.WithMessageSigning(true),
pss.WithStrictSignatureVerification(true),
)
pubsub.Init(ctx, ps)
if err != nil {
logger.Err(err)
}
<-ctx.Done() // 👈 the only blocking point
log.Println("shutting down")
n.Close()
}
beego.Run()
}