authorizer/server/main.go

120 lines
3.1 KiB
Go
Raw Permalink Normal View History

package main
import (
"flag"
2022-05-12 19:17:01 +00:00
2022-05-25 09:34:26 +00:00
"github.com/sirupsen/logrus"
2022-05-12 19:17:01 +00:00
log "github.com/sirupsen/logrus"
2022-05-30 06:24:16 +00:00
"github.com/authorizerdev/authorizer/server/cli"
"github.com/authorizerdev/authorizer/server/constants"
2021-07-28 06:23:37 +00:00
"github.com/authorizerdev/authorizer/server/db"
2021-12-20 12:03:11 +00:00
"github.com/authorizerdev/authorizer/server/env"
2022-05-27 17:50:38 +00:00
"github.com/authorizerdev/authorizer/server/memorystore"
2021-07-23 16:27:44 +00:00
"github.com/authorizerdev/authorizer/server/oauth"
2022-01-17 06:02:13 +00:00
"github.com/authorizerdev/authorizer/server/routes"
)
2021-12-24 12:17:35 +00:00
var VERSION string
2022-05-25 09:34:26 +00:00
type LogUTCFormatter struct {
2022-05-25 07:00:22 +00:00
log.Formatter
}
2022-05-25 09:34:26 +00:00
func (u LogUTCFormatter) Format(e *log.Entry) ([]byte, error) {
2022-05-25 07:00:22 +00:00
e.Time = e.Time.UTC()
return u.Formatter.Format(e)
}
func main() {
2022-05-30 06:24:16 +00:00
cli.ARG_DB_URL = flag.String("database_url", "", "Database connection string")
cli.ARG_DB_TYPE = flag.String("database_type", "", "Database type, possible values are postgres,mysql,sqlite")
cli.ARG_ENV_FILE = flag.String("env_file", "", "Env file path")
cli.ARG_LOG_LEVEL = flag.String("log_level", "info", "Log level, possible values are debug,info,warn,error,fatal,panic")
2022-05-31 02:44:03 +00:00
cli.ARG_REDIS_URL = flag.String("redis_url", "", "Redis connection string")
2022-05-25 09:34:26 +00:00
flag.Parse()
2022-05-25 09:34:26 +00:00
// global log level
logrus.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}})
// log instance for gin server
log := logrus.New()
log.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}})
var logLevel logrus.Level
2022-05-30 06:24:16 +00:00
switch *cli.ARG_LOG_LEVEL {
2022-05-25 09:34:26 +00:00
case "debug":
logLevel = logrus.DebugLevel
case "info":
logLevel = logrus.InfoLevel
case "warn":
logLevel = logrus.WarnLevel
case "error":
logLevel = logrus.ErrorLevel
case "fatal":
logLevel = logrus.FatalLevel
case "panic":
logLevel = logrus.PanicLevel
default:
logLevel = logrus.InfoLevel
}
logrus.SetLevel(logLevel)
log.SetLevel(logLevel)
2022-05-12 19:17:01 +00:00
2022-05-27 17:50:38 +00:00
// show file path in log for debug or other log levels.
if logLevel != logrus.InfoLevel {
logrus.SetReportCaller(true)
log.SetReportCaller(true)
}
2022-03-09 13:25:18 +00:00
constants.VERSION = VERSION
2021-12-24 12:17:35 +00:00
2022-05-27 17:50:38 +00:00
// initialize required envs (mainly db, env file path and redis)
err := memorystore.InitRequiredEnv()
2022-02-26 04:36:26 +00:00
if err != nil {
2022-05-25 07:00:22 +00:00
log.Fatal("Error while initializing required envs: ", err)
2022-02-26 04:36:26 +00:00
}
2022-05-27 17:50:38 +00:00
// initialize memory store
err = memorystore.InitMemStore()
if err != nil {
log.Fatal("Error while initializing memory store: ", err)
}
2022-02-26 04:14:55 +00:00
// initialize db provider
2022-02-26 04:36:26 +00:00
err = db.InitDB()
if err != nil {
2022-05-25 07:00:22 +00:00
log.Fatalln("Error while initializing db: ", err)
2022-02-26 04:36:26 +00:00
}
2022-02-26 04:14:55 +00:00
// initialize all envs
2022-02-26 04:36:26 +00:00
// (get if present from db else construct from os env + defaults)
err = env.InitAllEnv()
if err != nil {
log.Fatalln("Error while initializing env: ", err)
}
2022-02-26 04:14:55 +00:00
// persist all envs
2022-02-26 04:36:26 +00:00
err = env.PersistEnv()
2022-02-26 04:14:55 +00:00
if err != nil {
2022-05-25 07:00:22 +00:00
log.Fatalln("Error while persisting env: ", err)
2022-02-26 04:14:55 +00:00
}
2021-12-31 08:22:10 +00:00
2022-02-26 04:36:26 +00:00
// initialize oauth providers based on env
err = oauth.InitOAuth()
if err != nil {
2022-05-25 07:00:22 +00:00
log.Fatalln("Error while initializing oauth: ", err)
2022-02-26 04:36:26 +00:00
}
2022-05-25 09:34:26 +00:00
router := routes.InitRouter(log)
2022-05-12 19:17:01 +00:00
log.Info("Starting Authorizer: ", VERSION)
2022-05-30 06:24:16 +00:00
port, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyPort)
2022-08-30 18:05:43 +00:00
log.Info("Authorizer running at PORT: ", port)
2022-05-30 06:24:16 +00:00
if err != nil {
log.Info("Error while getting port from env using default port 8080: ", err)
port = "8080"
}
router.Run(":" + port)
}