package api
import (
"crypto/tls"
"fleetmanager/api/cidrmanager"
"fleetmanager/api/filter/authz"
"fleetmanager/api/filter/entrance"
"fleetmanager/api/filter/export"
"fleetmanager/api/router"
"fleetmanager/api/validator"
"fleetmanager/setting"
"github.com/beego/beego/v2/server/web"
_ "github.com/beego/beego/v2/server/web/session/redis"
)
func initConfig() {
web.BConfig.CopyRequestBody = true
web.BConfig.RunMode = setting.DefaultAPIRunModel
web.BConfig.WebConfig.AutoRender = false
web.BConfig.CopyRequestBody = true
if setting.EnableHttps {
initHttpsConfig()
} else {
web.BConfig.Listen.EnableHTTPS = false
}
if setting.EnableHttp {
initHttpConfig()
} else {
web.BConfig.Listen.EnableHTTP = false
}
}
func initHttpsConfig() {
web.BConfig.Listen.EnableHTTPS = true
web.BConfig.Listen.HTTPSAddr = setting.WebHttpsAddr
web.BConfig.Listen.HTTPSPort = setting.WebHttpsPort
web.BConfig.Listen.HTTPSCertFile = setting.HttpsCertFile
web.BConfig.Listen.HTTPSKeyFile = setting.HttpsKeyFile
web.BConfig.Listen.ClientAuth = int(tls.NoClientCert)
web.BConfig.MaxUploadSize = setting.DefaultUploadSize
}
func initHttpConfig() {
web.BConfig.Listen.EnableHTTP = true
web.BConfig.Listen.HTTPPort = setting.WebHttpPort
}
func Init() error {
initConfig()
if err := validator.Init(); err != nil {
return err
}
if err := cidrmanager.Init(); err != nil {
return err
}
web.InsertFilter("/*", web.BeforeExec, entrance.Filter)
if setting.EnableTokenCheck {
web.InsertFilter("/*", web.BeforeExec, authz.Filter)
}
web.InsertFilter("/*", web.FinishRouter, export.Filter, web.WithReturnOnOutput(false))
router.Init()
return nil
}
func Run() {
web.Run()
}