diff --git a/main.go b/main.go index 14b4e7e..8914e1c 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,6 @@ import ( "os" "path/filepath" "runtime" - "time" "github.com/cuigh/auxo/app" "github.com/cuigh/auxo/app/flag" @@ -32,7 +31,11 @@ func main() { app.Version = "0.7.1" app.Desc = "A web management UI for Docker, focused on swarm cluster" app.Action = func(ctx *app.Context) { - misc.LoadOptions() + err := config.UnmarshalOption("swirl", &misc.Options) + if err != nil { + log.Get(app.Name).Error("Load options failed: ", err) + os.Exit(1) + } setting, err := biz.Setting.Get() if err != nil { @@ -85,7 +88,7 @@ func server(setting *model.Setting) *web.Server { // create biz group form := &auth.Form{ Identifier: security.Identifier, - Timeout: time.Minute * 30, + Timeout: misc.Options.AuthTimeout, SlidingExpiration: true, } g := ws.Group("", form, filter.NewAuthorizer(security.Checker)) diff --git a/misc/misc.go b/misc/misc.go index cc5bc4a..ef3cb12 100644 --- a/misc/misc.go +++ b/misc/misc.go @@ -1,6 +1,8 @@ package misc import ( + "time" + "github.com/cuigh/auxo/config" ) @@ -8,9 +10,11 @@ const ( keyDockerEndpoint = "swirl.docker_endpoint" keyDBType = "swirl.db_type" keyDBAddress = "swirl.db_address" + keyAuthTimeout = "swirl.auth_timeout" envDockerEndpoint = "DOCKER_ENDPOINT" envDBType = "DB_TYPE" envDBAddress = "DB_ADDRESS" + envAuthTimeout = "AUTH_TIMEOUT" ) // TimeZones holds some commonly used time-zones. @@ -45,20 +49,22 @@ var TimeZones = []struct { {"GMT-12", -12 * 60 * 60}, } +// Options holds custom options of swirl. var Options = &struct { DockerEndpoint string DBType string DBAddress string -}{} + AuthTimeout time.Duration +}{ + DBType: "mongo", + DBAddress: "localhost:27017/swirl", + AuthTimeout: 30 * time.Minute, +} +// BindOptions binds options to environment variables. func BindOptions() { config.BindEnv(keyDockerEndpoint, envDockerEndpoint) config.BindEnv(keyDBType, envDBType) config.BindEnv(keyDBAddress, envDBAddress) -} - -func LoadOptions() { - Options.DockerEndpoint = config.GetString(keyDockerEndpoint) - Options.DBType = config.GetString(keyDBType) - Options.DBAddress = config.GetString(keyDBAddress) + config.BindEnv(keyAuthTimeout, envAuthTimeout) }