2021-07-08 12:15:19 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2021-12-23 05:01:52 +00:00
|
|
|
"flag"
|
2022-05-12 19:17:01 +00:00
|
|
|
|
|
|
|
log "github.com/sirupsen/logrus"
|
2021-12-23 05:01:52 +00:00
|
|
|
|
2021-12-22 05:21:12 +00:00
|
|
|
"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-01-17 06:02:13 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/envstore"
|
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"
|
2022-01-22 19:54:41 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/sessionstore"
|
2021-07-08 12:15:19 +00:00
|
|
|
)
|
|
|
|
|
2021-12-24 12:17:35 +00:00
|
|
|
var VERSION string
|
|
|
|
|
2022-05-25 07:00:22 +00:00
|
|
|
type UTCFormatter struct {
|
|
|
|
log.Formatter
|
|
|
|
}
|
|
|
|
|
|
|
|
func (u UTCFormatter) Format(e *log.Entry) ([]byte, error) {
|
|
|
|
e.Time = e.Time.UTC()
|
|
|
|
return u.Formatter.Format(e)
|
|
|
|
}
|
|
|
|
|
2021-07-14 18:43:19 +00:00
|
|
|
func main() {
|
2022-01-22 19:54:41 +00:00
|
|
|
envstore.ARG_DB_URL = flag.String("database_url", "", "Database connection string")
|
|
|
|
envstore.ARG_DB_TYPE = flag.String("database_type", "", "Database type, possible values are postgres,mysql,sqlite")
|
|
|
|
envstore.ARG_ENV_FILE = flag.String("env_file", "", "Env file path")
|
2022-05-25 07:00:22 +00:00
|
|
|
// envstore.ARG_LOG_LEVEL = flag.String("log_level", "", "Log level, possible values are debug,info,warn,error,fatal,panic")
|
2021-12-23 05:01:52 +00:00
|
|
|
|
2022-05-25 07:00:22 +00:00
|
|
|
log.SetFormatter(UTCFormatter{&log.JSONFormatter{}})
|
2022-05-12 19:17:01 +00:00
|
|
|
log.SetReportCaller(true)
|
2022-05-25 07:00:22 +00:00
|
|
|
log.SetLevel(log.DebugLevel)
|
|
|
|
|
|
|
|
// switch *envstore.ARG_LOG_LEVEL {
|
|
|
|
// case "debug":
|
|
|
|
// log.SetLevel(log.DebugLevel)
|
|
|
|
// case "info":
|
|
|
|
// log.SetLevel(log.InfoLevel)
|
|
|
|
// case "warn":
|
|
|
|
// log.SetLevel(log.WarnLevel)
|
|
|
|
// case "error":
|
|
|
|
// log.SetLevel(log.ErrorLevel)
|
|
|
|
// case "fatal":
|
|
|
|
// log.SetLevel(log.FatalLevel)
|
|
|
|
// case "panic":
|
|
|
|
// log.SetLevel(log.PanicLevel)
|
|
|
|
// default:
|
|
|
|
// log.SetLevel(log.InfoLevel)
|
|
|
|
// }
|
2022-05-12 19:17:01 +00:00
|
|
|
|
2022-03-09 13:25:18 +00:00
|
|
|
constants.VERSION = VERSION
|
2021-12-24 12:17:35 +00:00
|
|
|
|
2022-02-26 04:36:26 +00:00
|
|
|
// initialize required envs (mainly db & env file path)
|
|
|
|
err := env.InitRequiredEnv()
|
|
|
|
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-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 session store (redis or in-memory based on env)
|
|
|
|
err = sessionstore.InitSession()
|
|
|
|
if err != nil {
|
2022-05-25 07:00:22 +00:00
|
|
|
log.Fatalln("Error while initializing session store: ", err)
|
2022-02-26 04:36:26 +00:00
|
|
|
}
|
2022-01-17 06:02:13 +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
|
|
|
}
|
|
|
|
|
|
|
|
router := routes.InitRouter()
|
2022-05-12 19:17:01 +00:00
|
|
|
log.Info("Starting Authorizer: ", VERSION)
|
2022-02-28 02:25:01 +00:00
|
|
|
router.Run(":" + envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyPort))
|
2021-07-08 12:15:19 +00:00
|
|
|
}
|