From 43eb2d5f47279042bc045ca2252f61055d52ed05 Mon Sep 17 00:00:00 2001 From: Bolke de Bruin <bolke@xs4all.nl> Date: Sat, 22 Oct 2022 10:17:43 +0200 Subject: [PATCH] Make session length configurable --- cmd/rdpgw/config/configuration.go | 1 + cmd/rdpgw/main.go | 6 +++++- cmd/rdpgw/web/session.go | 9 ++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/cmd/rdpgw/config/configuration.go b/cmd/rdpgw/config/configuration.go index 2e5026b..dad3a43 100644 --- a/cmd/rdpgw/config/configuration.go +++ b/cmd/rdpgw/config/configuration.go @@ -45,6 +45,7 @@ type ServerConfig struct { SessionKey string `koanf:"sessionkey"` SessionEncryptionKey string `koanf:"sessionencryptionkey"` SessionStore string `koanf:"sessionstore"` + MaxSessionLength int `koanf:"maxsessionlength"` SendBuf int `koanf:"sendbuf"` ReceiveBuf int `koanf:"receivebuf"` Tls string `koanf:"tls"` diff --git a/cmd/rdpgw/main.go b/cmd/rdpgw/main.go index 42b0e5f..66e8c6e 100644 --- a/cmd/rdpgw/main.go +++ b/cmd/rdpgw/main.go @@ -94,7 +94,11 @@ func main() { security.Hosts = conf.Server.Hosts // init session store - web.InitStore([]byte(conf.Server.SessionKey), []byte(conf.Server.SessionEncryptionKey), conf.Server.SessionStore) + web.InitStore([]byte(conf.Server.SessionKey), + []byte(conf.Server.SessionEncryptionKey), + conf.Server.SessionStore, + conf.Server.MaxSessionLength, + ) // configure web backend w := &web.Config{ diff --git a/cmd/rdpgw/web/session.go b/cmd/rdpgw/web/session.go index be79db7..9114ed8 100644 --- a/cmd/rdpgw/web/session.go +++ b/cmd/rdpgw/web/session.go @@ -17,7 +17,7 @@ const ( var sessionStore sessions.Store -func InitStore(sessionKey []byte, encryptionKey []byte, storeType string) { +func InitStore(sessionKey []byte, encryptionKey []byte, storeType string, maxLength int) { if len(sessionKey) < 32 { log.Fatal("Session key too small") } @@ -30,8 +30,11 @@ func InitStore(sessionKey []byte, encryptionKey []byte, storeType string) { fs := sessions.NewFilesystemStore(os.TempDir(), sessionKey, encryptionKey) // set max length - log.Printf("Setting maximum session storage to %d bytes", maxSessionLength) - fs.MaxLength(maxSessionLength) + if maxLength == 0 { + maxLength = maxSessionLength + } + log.Printf("Setting maximum session storage to %d bytes", maxLength) + fs.MaxLength(maxLength) sessionStore = fs } else { -- GitLab