2021-07-08 17:45:19 +05:30
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2021-12-23 10:31:52 +05:30
|
|
|
"flag"
|
2022-05-13 00:47:01 +05:30
|
|
|
|
2022-05-25 15:04:26 +05:30
|
|
|
"github.com/sirupsen/logrus"
|
2022-05-13 00:47:01 +05:30
|
|
|
log "github.com/sirupsen/logrus"
|
2021-12-23 10:31:52 +05:30
|
|
|
|
2022-05-30 11:54:16 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/cli"
|
2021-12-22 10:51:12 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/constants"
|
2021-07-28 11:53:37 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/db"
|
2021-12-20 17:33:11 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/env"
|
2022-05-27 23:20:38 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/memorystore"
|
2021-07-23 21:57:44 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/oauth"
|
2022-01-17 11:32:13 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/routes"
|
2021-07-08 17:45:19 +05:30
|
|
|
)
|
|
|
|
|
2021-12-24 17:47:35 +05:30
|
|
|
var VERSION string
|
|
|
|
|
2022-05-25 15:04:26 +05:30
|
|
|
type LogUTCFormatter struct {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Formatter
|
|
|
|
}
|
|
|
|
|
2022-05-25 15:04:26 +05:30
|
|
|
func (u LogUTCFormatter) Format(e *log.Entry) ([]byte, error) {
|
2022-05-25 12:30:22 +05:30
|
|
|
e.Time = e.Time.UTC()
|
|
|
|
return u.Formatter.Format(e)
|
|
|
|
}
|
|
|
|
|
2021-07-15 00:13:19 +05:30
|
|
|
func main() {
|
2022-05-30 11:54:16 +05:30
|
|
|
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 08:14:03 +05:30
|
|
|
cli.ARG_REDIS_URL = flag.String("redis_url", "", "Redis connection string")
|
2022-05-25 15:04:26 +05:30
|
|
|
flag.Parse()
|
2021-12-23 10:31:52 +05:30
|
|
|
|
2022-05-25 15:04:26 +05:30
|
|
|
// 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 11:54:16 +05:30
|
|
|
switch *cli.ARG_LOG_LEVEL {
|
2022-05-25 15:04:26 +05:30
|
|
|
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-13 00:47:01 +05:30
|
|
|
|
2022-05-27 23:20:38 +05:30
|
|
|
// show file path in log for debug or other log levels.
|
|
|
|
if logLevel != logrus.InfoLevel {
|
|
|
|
logrus.SetReportCaller(true)
|
|
|
|
log.SetReportCaller(true)
|
|
|
|
}
|
|
|
|
|
2022-03-09 18:55:18 +05:30
|
|
|
constants.VERSION = VERSION
|
2021-12-24 17:47:35 +05:30
|
|
|
|
2022-05-27 23:20:38 +05:30
|
|
|
// initialize required envs (mainly db, env file path and redis)
|
|
|
|
err := memorystore.InitRequiredEnv()
|
2022-02-26 10:06:26 +05:30
|
|
|
if err != nil {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Fatal("Error while initializing required envs: ", err)
|
2022-02-26 10:06:26 +05:30
|
|
|
}
|
|
|
|
|
2022-05-27 23:20:38 +05:30
|
|
|
// initialize memory store
|
|
|
|
err = memorystore.InitMemStore()
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal("Error while initializing memory store: ", err)
|
|
|
|
}
|
|
|
|
|
2022-02-26 09:44:55 +05:30
|
|
|
// initialize db provider
|
2022-02-26 10:06:26 +05:30
|
|
|
err = db.InitDB()
|
|
|
|
if err != nil {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Fatalln("Error while initializing db: ", err)
|
2022-02-26 10:06:26 +05:30
|
|
|
}
|
|
|
|
|
2022-02-26 09:44:55 +05:30
|
|
|
// initialize all envs
|
2022-02-26 10:06:26 +05:30
|
|
|
// (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 09:44:55 +05:30
|
|
|
// persist all envs
|
2022-02-26 10:06:26 +05:30
|
|
|
err = env.PersistEnv()
|
2022-02-26 09:44:55 +05:30
|
|
|
if err != nil {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Fatalln("Error while persisting env: ", err)
|
2022-02-26 09:44:55 +05:30
|
|
|
}
|
2021-12-31 13:52:10 +05:30
|
|
|
|
2022-02-26 10:06:26 +05:30
|
|
|
// initialize oauth providers based on env
|
|
|
|
err = oauth.InitOAuth()
|
|
|
|
if err != nil {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Fatalln("Error while initializing oauth: ", err)
|
2022-02-26 10:06:26 +05:30
|
|
|
}
|
|
|
|
|
2022-05-25 15:04:26 +05:30
|
|
|
router := routes.InitRouter(log)
|
2022-05-13 00:47:01 +05:30
|
|
|
log.Info("Starting Authorizer: ", VERSION)
|
2022-05-30 11:54:16 +05:30
|
|
|
port, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyPort)
|
|
|
|
if err != nil {
|
|
|
|
log.Info("Error while getting port from env using default port 8080: ", err)
|
|
|
|
port = "8080"
|
|
|
|
}
|
|
|
|
|
|
|
|
router.Run(":" + port)
|
2021-07-08 17:45:19 +05:30
|
|
|
}
|