From e78d62ce63f34b31cf9907a15ab941d456e937b1 Mon Sep 17 00:00:00 2001 From: Gabe Kangas Date: Sat, 18 Jan 2025 16:38:59 -0800 Subject: [PATCH] chore(go): move stream keys to use generated type. For #3778 --- config/defaults.go | 9 ++++++--- core/rtmp/rtmp.go | 5 +++-- models/streamKey.go | 7 ------- persistence/configrepository/configMigrations.go | 7 ++++--- persistence/configrepository/configrepository.go | 5 +++-- .../configrepository/sqlconfigrepository.go | 11 ++++++----- webserver/handlers/admin/config.go | 14 +++++--------- webserver/handlers/admin/serverConfig.go | 3 ++- 8 files changed, 29 insertions(+), 32 deletions(-) delete mode 100644 models/streamKey.go diff --git a/config/defaults.go b/config/defaults.go index f3fcb792b..b2717a350 100644 --- a/config/defaults.go +++ b/config/defaults.go @@ -4,6 +4,7 @@ import ( "time" "github.com/owncast/owncast/models" + "github.com/owncast/owncast/webserver/handlers/generated" ) // Defaults will hold default configuration values. @@ -25,7 +26,7 @@ type Defaults struct { WebServerIP string Name string AdminPassword string - StreamKeys []models.StreamKey + StreamKeys []generated.StreamKey StreamVariants []models.StreamOutputVariant @@ -43,14 +44,16 @@ type Defaults struct { // GetDefaults will return default configuration values. func GetDefaults() Defaults { + defaultStreamKey := "abc123" + defaultStreamKeyComment := "Default stream key" return Defaults{ Name: "New Owncast Server", Summary: "This is a new live video streaming server powered by Owncast.", ServerWelcomeMessage: "", Logo: "logo.svg", AdminPassword: "abc123", - StreamKeys: []models.StreamKey{ - {Key: "abc123", Comment: "Default stream key"}, + StreamKeys: []generated.StreamKey{ + {Key: &defaultStreamKey, Comment: &defaultStreamKeyComment}, }, Tags: []string{ "owncast", diff --git a/core/rtmp/rtmp.go b/core/rtmp/rtmp.go index 42b7818af..8b42f159f 100644 --- a/core/rtmp/rtmp.go +++ b/core/rtmp/rtmp.go @@ -14,6 +14,7 @@ import ( "github.com/owncast/owncast/config" "github.com/owncast/owncast/models" "github.com/owncast/owncast/persistence/configrepository" + "github.com/owncast/owncast/webserver/handlers/generated" ) var _hasInboundRTMPConnection = false @@ -87,11 +88,11 @@ func HandleConn(c *rtmp.Conn, nc net.Conn) { // If a stream key override was specified then use that instead. if config.TemporaryStreamKey != "" { - validStreamingKeys = []models.StreamKey{{Key: config.TemporaryStreamKey}} + validStreamingKeys = []generated.StreamKey{{Key: &config.TemporaryStreamKey}} } for _, key := range validStreamingKeys { - if secretMatch(key.Key, c.URL.Path) { + if key.Key != nil && secretMatch(*key.Key, c.URL.Path) { accessGranted = true break } diff --git a/models/streamKey.go b/models/streamKey.go deleted file mode 100644 index dd7b568ed..000000000 --- a/models/streamKey.go +++ /dev/null @@ -1,7 +0,0 @@ -package models - -// StreamKey represents a single stream key. -type StreamKey struct { - Key string `json:"key"` - Comment string `json:"comment"` -} diff --git a/persistence/configrepository/configMigrations.go b/persistence/configrepository/configMigrations.go index 11e182ba6..325f8769f 100644 --- a/persistence/configrepository/configMigrations.go +++ b/persistence/configrepository/configMigrations.go @@ -4,7 +4,7 @@ import ( "strings" "github.com/owncast/owncast/core/data" - "github.com/owncast/owncast/models" + "github.com/owncast/owncast/webserver/handlers/generated" log "github.com/sirupsen/logrus" ) @@ -63,8 +63,9 @@ func migrateToDatastoreValues2(datastore *data.Datastore, configRepository Confi oldAdminPassword, _ := datastore.GetString("stream_key") // Avoids double hashing the password _ = datastore.SetString("admin_password_key", oldAdminPassword) - _ = configRepository.SetStreamKeys([]models.StreamKey{ - {Key: oldAdminPassword, Comment: "Default stream key"}, + comment := "Default stream key" + _ = configRepository.SetStreamKeys([]generated.StreamKey{ + {Key: &oldAdminPassword, Comment: &comment}, }) } diff --git a/persistence/configrepository/configrepository.go b/persistence/configrepository/configrepository.go index 9c9c18ed2..b21fed808 100644 --- a/persistence/configrepository/configrepository.go +++ b/persistence/configrepository/configrepository.go @@ -5,6 +5,7 @@ import ( "github.com/owncast/owncast/models" "github.com/owncast/owncast/utils" + "github.com/owncast/owncast/webserver/handlers/generated" ) type ConfigRepository interface { @@ -114,8 +115,8 @@ type ConfigRepository interface { SetCustomOfflineMessage(message string) error SetCustomColorVariableValues(variables map[string]string) error GetCustomColorVariableValues() map[string]string - GetStreamKeys() []models.StreamKey - SetStreamKeys(actions []models.StreamKey) error + GetStreamKeys() []generated.StreamKey + SetStreamKeys(actions []generated.StreamKey) error SetDisableSearchIndexing(disableSearchIndexing bool) error GetDisableSearchIndexing() bool GetVideoServingEndpoint() string diff --git a/persistence/configrepository/sqlconfigrepository.go b/persistence/configrepository/sqlconfigrepository.go index 54a07563b..419fced27 100644 --- a/persistence/configrepository/sqlconfigrepository.go +++ b/persistence/configrepository/sqlconfigrepository.go @@ -12,6 +12,7 @@ import ( "github.com/owncast/owncast/models" "github.com/owncast/owncast/static" "github.com/owncast/owncast/utils" + "github.com/owncast/owncast/webserver/handlers/generated" "github.com/pkg/errors" log "github.com/sirupsen/logrus" ) @@ -957,22 +958,22 @@ func (r *SqlConfigRepository) GetCustomColorVariableValues() map[string]string { } // GetStreamKeys will return valid stream keys. -func (r *SqlConfigRepository) GetStreamKeys() []models.StreamKey { +func (r *SqlConfigRepository) GetStreamKeys() []generated.StreamKey { configEntry, err := r.datastore.Get(streamKeysKey) if err != nil { - return []models.StreamKey{} + return []generated.StreamKey{} } - var streamKeys []models.StreamKey + var streamKeys []generated.StreamKey if err := configEntry.GetObject(&streamKeys); err != nil { - return []models.StreamKey{} + return []generated.StreamKey{} } return streamKeys } // SetStreamKeys will set valid stream keys. -func (r *SqlConfigRepository) SetStreamKeys(actions []models.StreamKey) error { +func (r *SqlConfigRepository) SetStreamKeys(actions []generated.StreamKey) error { configEntry := models.ConfigEntry{Key: streamKeysKey, Value: actions} return r.datastore.Save(configEntry) } diff --git a/webserver/handlers/admin/config.go b/webserver/handlers/admin/config.go index a766ad817..5abe0739e 100644 --- a/webserver/handlers/admin/config.go +++ b/webserver/handlers/admin/config.go @@ -916,31 +916,27 @@ func SetStreamKeys(w http.ResponseWriter, r *http.Request) { return } - type streamKeysRequest struct { - Value []models.StreamKey `json:"value"` - } - decoder := json.NewDecoder(r.Body) - var streamKeys streamKeysRequest + var streamKeys generated.SetStreamKeysJSONRequestBody if err := decoder.Decode(&streamKeys); err != nil { webutils.WriteSimpleResponse(w, false, "unable to update stream keys with provided values") return } - if len(streamKeys.Value) == 0 { + if streamKeys.Value == nil || len(*streamKeys.Value) == 0 { webutils.WriteSimpleResponse(w, false, "must provide at least one valid stream key") return } - for _, streamKey := range streamKeys.Value { - if streamKey.Key == "" { + for _, streamKey := range *streamKeys.Value { + if *streamKey.Key == "" { webutils.WriteSimpleResponse(w, false, "stream key cannot be empty") return } } configRepository := configrepository.Get() - if err := configRepository.SetStreamKeys(streamKeys.Value); err != nil { + if err := configRepository.SetStreamKeys(*streamKeys.Value); err != nil { webutils.WriteSimpleResponse(w, false, err.Error()) return } diff --git a/webserver/handlers/admin/serverConfig.go b/webserver/handlers/admin/serverConfig.go index 3c4e9f717..fcd33cfe9 100644 --- a/webserver/handlers/admin/serverConfig.go +++ b/webserver/handlers/admin/serverConfig.go @@ -9,6 +9,7 @@ import ( "github.com/owncast/owncast/models" "github.com/owncast/owncast/persistence/configrepository" "github.com/owncast/owncast/utils" + "github.com/owncast/owncast/webserver/handlers/generated" "github.com/owncast/owncast/webserver/router/middleware" log "github.com/sirupsen/logrus" ) @@ -118,7 +119,7 @@ type serverConfigAdminResponse struct { ExternalActions []models.ExternalAction `json:"externalActions"` ForbiddenUsernames []string `json:"forbiddenUsernames"` SuggestedUsernames []string `json:"suggestedUsernames"` - StreamKeys []models.StreamKey `json:"streamKeys"` + StreamKeys []generated.StreamKey `json:"streamKeys"` VideoSettings videoSettings `json:"videoSettings"` RTMPServerPort int `json:"rtmpServerPort"` WebServerPort int `json:"webServerPort"`