From 4a53222031dcdf3021bc575f2e89118f10ab58db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 13 Jan 2023 18:47:21 +0100 Subject: [PATCH] move all envs to types. --- internal/room/manager.go | 27 ++++++--------------------- internal/types/room.go | 28 +++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/internal/room/manager.go b/internal/room/manager.go index 5d7cc2a..930fde1 100644 --- a/internal/room/manager.go +++ b/internal/room/manager.go @@ -250,26 +250,11 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro // Set environment variables // - env := []string{ - fmt.Sprintf("NEKO_BIND=:%d", frontendPort), - "NEKO_ICELITE=true", - } - - if manager.config.Mux { - env = append(env, - fmt.Sprintf("NEKO_UDPMUX=%d", epr.Min), - fmt.Sprintf("NEKO_TCPMUX=%d", epr.Min), - ) - } else { - env = append(env, - fmt.Sprintf("NEKO_EPR=%d-%d", epr.Min, epr.Max), - ) - } - - // optional nat mapping - if len(manager.config.NAT1To1IPs) > 0 { - env = append(env, fmt.Sprintf("NEKO_NAT1TO1=%s", strings.Join(manager.config.NAT1To1IPs, ","))) - } + env := settings.ToEnv(manager.config, types.PortSettings{ + FrontendPort: frontendPort, + EprMin: epr.Min, + EprMax: epr.Max, + }) // // Set browser policies @@ -429,7 +414,7 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro // List of exposed ports ExposedPorts: exposedPorts, // List of environment variable to set in the container - Env: append(env, settings.ToEnv()...), + Env: env, // Name of the image as it was passed by the operator (e.g. could be symbolic) Image: settings.NekoImage, // List of labels set to this container diff --git a/internal/types/room.go b/internal/types/room.go index a8b47fc..381e65d 100644 --- a/internal/types/room.go +++ b/internal/types/room.go @@ -6,6 +6,7 @@ import ( "strings" "time" + "github.com/m1k1o/neko-rooms/internal/config" "github.com/m1k1o/neko-rooms/internal/utils" ) @@ -97,14 +98,39 @@ type RoomSettings struct { BrowserPolicy *BrowserPolicy `json:"browser_policy,omitempty"` } -func (settings *RoomSettings) ToEnv() []string { +type PortSettings struct { + FrontendPort uint16 + EprMin, EprMax uint16 +} + +func (settings *RoomSettings) ToEnv(config *config.Room, ports PortSettings) []string { env := []string{ + fmt.Sprintf("NEKO_BIND=:%d", ports.FrontendPort), + "NEKO_ICELITE=true", + + // from settings fmt.Sprintf("NEKO_PASSWORD=%s", settings.UserPass), fmt.Sprintf("NEKO_PASSWORD_ADMIN=%s", settings.AdminPass), fmt.Sprintf("NEKO_SCREEN=%s", settings.Screen), fmt.Sprintf("NEKO_MAX_FPS=%d", settings.VideoMaxFPS), } + if config.Mux { + env = append(env, + fmt.Sprintf("NEKO_UDPMUX=%d", ports.EprMin), + fmt.Sprintf("NEKO_TCPMUX=%d", ports.EprMin), + ) + } else { + env = append(env, + fmt.Sprintf("NEKO_EPR=%d-%d", ports.EprMin, ports.EprMax), + ) + } + + // optional nat mapping + if len(config.NAT1To1IPs) > 0 { + env = append(env, fmt.Sprintf("NEKO_NAT1TO1=%s", strings.Join(config.NAT1To1IPs, ","))) + } + if settings.ControlProtection { env = append(env, "NEKO_CONTROL_PROTECTION=true") }