package main import ( "encoding/base64" "oc-datacenter/conf" _ "oc-datacenter/routers" oclib "cloud.o-forge.io/core/oc-lib" "cloud.o-forge.io/core/oc-lib/tools" beego "github.com/beego/beego/v2/server/web" "github.com/beego/beego/v2/server/web/filter/cors" ) const appname = "oc-datacenter" func main() { // Init the oc-lib oclib.Init(appname) // Load the right config file o := oclib.GetConfLoader() conf.GetConfig().Mode = o.GetStringDefault("MODE", "kubernetes") conf.GetConfig().KubeHost = o.GetStringDefault("KUBERNETES_SERVICE_HOST", "") conf.GetConfig().KubePort = o.GetStringDefault("KUBERNETES_SERVICE_PORT", "6443") sDec, err := base64.StdEncoding.DecodeString(o.GetStringDefault("KUBE_CA", "")) if err == nil { conf.GetConfig().KubeCA = string(sDec) } sDec, err = base64.StdEncoding.DecodeString(o.GetStringDefault("KUBE_CERT", "")) if err == nil { conf.GetConfig().KubeCert = string(sDec) } sDec, err = base64.StdEncoding.DecodeString(o.GetStringDefault("KUBE_DATA", "")) if err == nil { conf.GetConfig().KubeData = string(sDec) } // feed the library with the loaded config oclib.SetConfig( o.GetStringDefault("MONGO_URL", "mongodb://127.0.0.1:27017"), o.GetStringDefault("MONGO_DATABASE", "DC_myDC"), o.GetStringDefault("NATS_URL", "nats://localhost:4222"), o.GetStringDefault("LOKI_URL", ""), o.GetStringDefault("LOG_LEVEL", "info"), ) // Beego init beego.BConfig.AppName = appname beego.BConfig.Listen.HTTPPort = o.GetIntDefault("port", 8080) beego.BConfig.WebConfig.DirectoryIndex = true beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" api := &tools.API{} api.Discovered(beego.BeeApp.Handlers.GetAllControllerInfo()) 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, })) beego.Run() }