diff --git a/cmd/drone-server/server.go b/cmd/drone-server/server.go index 55955aef2..21cb99f53 100644 --- a/cmd/drone-server/server.go +++ b/cmd/drone-server/server.go @@ -93,6 +93,12 @@ var flags = []cli.Flag{ Name: "open", Usage: "open user registration", }, + cli.DurationFlag{ + EnvVar: "DRONE_SESSION_EXPIRES", + Name: "session-expires", + Usage: "Set the session expiration time default 72h", + Value: time.Hour * 72, + }, cli.StringSliceFlag{ EnvVar: "DRONE_ESCALATE", Name: "escalate", @@ -632,6 +638,7 @@ func setupEvilGlobals(c *cli.Context, v store.Store, r remote.Remote) { droneserver.Config.Server.Pass = c.String("agent-secret") droneserver.Config.Server.Host = strings.TrimRight(c.String("server-host"), "/") droneserver.Config.Server.Port = c.String("server-addr") + droneserver.Config.Server.SessionExpires = c.Duration("session-expires") droneserver.Config.Pipeline.Networks = c.StringSlice("network") droneserver.Config.Pipeline.Volumes = c.StringSlice("volume") droneserver.Config.Pipeline.Privileged = c.StringSlice("escalate") diff --git a/server/login.go b/server/login.go index 60ce2060d..e72ca9d4a 100644 --- a/server/login.go +++ b/server/login.go @@ -112,7 +112,7 @@ func HandleAuth(c *gin.Context) { return } - exp := time.Now().Add(time.Hour * 72).Unix() + exp := time.Now().Add(Config.Server.SessionExpires).Unix() token := token.New(token.SessToken, u.Login) tokenstr, err := token.SignExpires(u.Hash, exp) if err != nil { @@ -152,7 +152,7 @@ func GetLoginToken(c *gin.Context) { return } - exp := time.Now().Add(time.Hour * 72).Unix() + exp := time.Now().Add(Config.Server.SessionExpires).Unix() token := token.New(token.SessToken, user.Login) tokenstr, err := token.SignExpires(user.Hash, exp) if err != nil { diff --git a/server/rpc.go b/server/rpc.go index 511f0c817..d09607932 100644 --- a/server/rpc.go +++ b/server/rpc.go @@ -22,6 +22,7 @@ import ( "github.com/drone/drone/model" "github.com/drone/drone/remote" "github.com/drone/drone/store" + "time" ) // This file is a complete disaster because I'm trying to wedge in some @@ -51,11 +52,12 @@ var Config = struct { // Secrets model.SecretStore } Server struct { - Key string - Cert string - Host string - Port string - Pass string + Key string + Cert string + Host string + Port string + Pass string + SessionExpires time.Duration // Open bool // Orgs map[string]struct{} // Admins map[string]struct{}