2023-03-07 13:29:08 +01:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
2026-01-28 17:22:29 +01:00
|
|
|
"context"
|
2026-01-30 16:57:36 +01:00
|
|
|
"log"
|
2026-01-28 17:22:29 +01:00
|
|
|
"oc-discovery/conf"
|
2026-01-30 16:57:36 +01:00
|
|
|
"oc-discovery/daemons/node"
|
|
|
|
|
"os"
|
|
|
|
|
"os/signal"
|
|
|
|
|
"strings"
|
|
|
|
|
"syscall"
|
2023-03-07 13:29:08 +01:00
|
|
|
|
2024-09-02 17:52:12 +02:00
|
|
|
oclib "cloud.o-forge.io/core/oc-lib"
|
2023-03-07 13:29:08 +01:00
|
|
|
beego "github.com/beego/beego/v2/server/web"
|
2025-01-15 16:32:12 +01:00
|
|
|
"github.com/beego/beego/v2/server/web/filter/cors"
|
2023-03-07 13:29:08 +01:00
|
|
|
)
|
|
|
|
|
|
2024-09-02 17:52:12 +02:00
|
|
|
const appname = "oc-discovery"
|
2023-03-09 11:45:29 +01:00
|
|
|
|
2023-03-07 13:29:08 +01:00
|
|
|
func main() {
|
2024-09-02 17:52:12 +02:00
|
|
|
// Init the oc-lib
|
2025-01-15 16:32:12 +01:00
|
|
|
oclib.Init(appname)
|
2024-09-02 17:52:12 +02:00
|
|
|
// get the right config file
|
|
|
|
|
|
2025-01-15 16:32:12 +01:00
|
|
|
o := oclib.GetConfLoader()
|
2023-03-09 11:45:29 +01:00
|
|
|
|
2026-01-30 16:57:36 +01:00
|
|
|
conf.GetConfig().Name = o.GetStringDefault("NAME", "opencloud-demo")
|
|
|
|
|
conf.GetConfig().Hostname = o.GetStringDefault("HOSTNAME", "localhost")
|
2026-01-28 17:22:29 +01:00
|
|
|
conf.GetConfig().PSKPath = o.GetStringDefault("PSK_PATH", "./psk/psk")
|
2026-01-30 16:57:36 +01:00
|
|
|
conf.GetConfig().NodeEndpointPort = o.GetInt64Default("NODE_ENDPOINT_PORT", 4001)
|
2026-01-28 17:22:29 +01:00
|
|
|
conf.GetConfig().PublicKeyPath = o.GetStringDefault("PUBLIC_KEY_PATH", "./pem/public.pem")
|
|
|
|
|
conf.GetConfig().PrivateKeyPath = o.GetStringDefault("PRIVATE_KEY_PATH", "./pem/private.pem")
|
2026-01-30 16:57:36 +01:00
|
|
|
conf.GetConfig().IndexerAddresses = o.GetStringDefault("INDEXER_ADDRESSES", "")
|
|
|
|
|
|
|
|
|
|
conf.GetConfig().NodeMode = o.GetStringDefault("NODE_MODE", "node")
|
2024-09-02 17:52:12 +02:00
|
|
|
|
2023-03-09 11:45:29 +01:00
|
|
|
// Normal beego init
|
2024-09-02 17:52:12 +02:00
|
|
|
beego.BConfig.AppName = appname
|
2024-10-16 08:42:51 +02:00
|
|
|
beego.BConfig.Listen.HTTPPort = o.GetIntDefault("port", 8080)
|
2023-10-18 15:24:57 +02:00
|
|
|
beego.BConfig.WebConfig.DirectoryIndex = true
|
|
|
|
|
beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
|
2025-01-15 16:32:12 +01:00
|
|
|
beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
|
|
|
|
|
AllowAllOrigins: true,
|
|
|
|
|
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
|
|
|
|
|
AllowHeaders: []string{"Origin", "Authorization", "Content-Type"},
|
|
|
|
|
ExposeHeaders: []string{"Content-Length", "Content-Type"},
|
|
|
|
|
AllowCredentials: true,
|
|
|
|
|
}))
|
2026-01-30 16:57:36 +01:00
|
|
|
|
|
|
|
|
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)
|
2026-01-28 17:22:29 +01:00
|
|
|
} else {
|
2026-01-30 16:57:36 +01:00
|
|
|
<-ctx.Done() // 👈 the only blocking point
|
|
|
|
|
log.Println("shutting down")
|
|
|
|
|
n.Close()
|
2026-01-28 17:22:29 +01:00
|
|
|
}
|
2026-01-30 16:57:36 +01:00
|
|
|
|
2023-03-07 13:29:08 +01:00
|
|
|
}
|