From ee2c5f31e8f65e0a6ca7772ab16ee3d5340d43f4 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Sun, 17 Dec 2023 13:53:16 +0100 Subject: [PATCH] database configuration only via PG* env variables and MQTT password only via configured env var --- src/udi/config-level-berresheim-cluster.json | 23 +++++++++++++++++ src/udi/config-level-berresheim.json | 23 +++++++++++++++++ src/udi/config-level.json | 2 +- src/udi/config/config.go | 8 +++--- src/udi/config/example.json | 26 -------------------- src/udi/database/database.go | 5 ++-- src/udi/handlers/mbgw3/mbgw3.go | 2 +- src/udi/handlers/pv/pv.go | 2 +- src/udi/handlers/svej/svej.go | 2 +- src/udi/handlers/sver/sver.go | 2 +- src/udi/handlers/ttn/ttn.go | 2 +- 11 files changed, 59 insertions(+), 38 deletions(-) create mode 100644 src/udi/config-level-berresheim-cluster.json create mode 100644 src/udi/config-level-berresheim.json delete mode 100644 src/udi/config/example.json diff --git a/src/udi/config-level-berresheim-cluster.json b/src/udi/config-level-berresheim-cluster.json new file mode 100644 index 0000000..d33dc1d --- /dev/null +++ b/src/udi/config-level-berresheim-cluster.json @@ -0,0 +1,23 @@ +{ + "mqtt": { + "broker": "ssl://eu1.cloud.thethings.network:8883", + "username": "de-hottis-level-monitoring@ttn", + "password": "ENV", + "tlsEnable": "true" + }, + "topicMappings": [ + { + "topics": [ "v3/#" ], + "handler": "TTN", + "id": "TTN0", + "config": { + "databaseConnStr": "", + "attributes": { + } + } + } + ], + "archiver": { + "dir": "/archive" + } +} diff --git a/src/udi/config-level-berresheim.json b/src/udi/config-level-berresheim.json new file mode 100644 index 0000000..30cd0e8 --- /dev/null +++ b/src/udi/config-level-berresheim.json @@ -0,0 +1,23 @@ +{ + "mqtt": { + "broker": "ssl://eu1.cloud.thethings.network:8883", + "username": "de-hottis-level-monitoring@ttn", + "password": "ENV", + "tlsEnable": "true" + }, + "topicMappings": [ + { + "topics": [ "v3/#" ], + "handler": "TTN", + "id": "TTN0", + "config": { + "databaseConnStr": "", + "attributes": { + } + } + } + ], + "archiver": { + "dir": "./tmp/udi" + } +} diff --git a/src/udi/config-level.json b/src/udi/config-level.json index 30cd0e8..0cb3b42 100644 --- a/src/udi/config-level.json +++ b/src/udi/config-level.json @@ -2,7 +2,7 @@ "mqtt": { "broker": "ssl://eu1.cloud.thethings.network:8883", "username": "de-hottis-level-monitoring@ttn", - "password": "ENV", + "passwordEnvVar": "MQTT_PASSWORD", "tlsEnable": "true" }, "topicMappings": [ diff --git a/src/udi/config/config.go b/src/udi/config/config.go index 64b633c..6a4ac6f 100644 --- a/src/udi/config/config.go +++ b/src/udi/config/config.go @@ -5,7 +5,6 @@ import "log" import "os" type HandlerConfigT struct { - DatabaseConnStr string `json:"databaseConnStr"` Attributes map[string]string `json:"attributes"` } @@ -13,7 +12,8 @@ type ConfigT struct { Mqtt struct { Broker string `json:"broker"` Username string `json:"username"` - Password string `json:"password"` + PasswordEnvVar string `json:"passwordEnvVar"` + Password string TlsEnable string `json:"tlsEnable"` } `json:"mqtt"` TopicMappings []struct { @@ -36,8 +36,8 @@ func LoadConfiguration() { log.Fatalf("Unable to parse configuration: %s", err) } - if Config.Mqtt.Password == "ENV" { - Config.Mqtt.Password = os.Getenv("MQTT_PASSWORD") + if Config.Mqtt.PasswordEnvVar != "" { + Config.Mqtt.Password = os.Getenv(Config.Mqtt.PasswordEnvVar) } } diff --git a/src/udi/config/example.json b/src/udi/config/example.json deleted file mode 100644 index c9638d4..0000000 --- a/src/udi/config/example.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "mqtt": { - "broker": "172.23.1.102:1883", - "username": "", - "password": "", - "tlsEnable": "false" - }, - "topicMappings": [ - { - "topics": ["IoT/MBGW3/Measurement"], - "handler": "IoT" - } - ], - "handlers": [ - { - "name": "IoT", - "databaseConnStr": "", - "attributes": { - } - } - ], - "archiver": { - "dir": "/mnt/udi/archive" - } -} - diff --git a/src/udi/database/database.go b/src/udi/database/database.go index 7fda18e..cbdccff 100644 --- a/src/udi/database/database.go +++ b/src/udi/database/database.go @@ -14,9 +14,10 @@ type DatabaseHandle struct { dbh *gorm.DB } -func NewDatabaseHandle(dsn string) *DatabaseHandle { +func NewDatabaseHandle() *DatabaseHandle { var db DatabaseHandle - conn, err := gorm.Open(postgres.Open(dsn)) + // inject the whole database configuration via the well-known PG* env variables + conn, err := gorm.Open(postgres.Open("")) if err != nil { log.Printf("Unable to open database connection: %s", err) db.initialized = false diff --git a/src/udi/handlers/mbgw3/mbgw3.go b/src/udi/handlers/mbgw3/mbgw3.go index 104e962..6622239 100644 --- a/src/udi/handlers/mbgw3/mbgw3.go +++ b/src/udi/handlers/mbgw3/mbgw3.go @@ -36,7 +36,7 @@ func NewMbgw3Handler(config config.HandlerConfigT) handler.Handler { id: idSeq, } idSeq += 1 - t.dbh = database.NewDatabaseHandle(config.DatabaseConnStr) + t.dbh = database.NewDatabaseHandle() return t } diff --git a/src/udi/handlers/pv/pv.go b/src/udi/handlers/pv/pv.go index 42d9b6a..0ca5437 100644 --- a/src/udi/handlers/pv/pv.go +++ b/src/udi/handlers/pv/pv.go @@ -45,7 +45,7 @@ func NewPvHandler(config config.HandlerConfigT) handler.Handler { id: idSeq, } idSeq += 1 - t.dbh = database.NewDatabaseHandle(config.DatabaseConnStr) + t.dbh = database.NewDatabaseHandle() return t } diff --git a/src/udi/handlers/svej/svej.go b/src/udi/handlers/svej/svej.go index 6923d36..f9a9115 100644 --- a/src/udi/handlers/svej/svej.go +++ b/src/udi/handlers/svej/svej.go @@ -78,7 +78,7 @@ func NewSvejHandler(config config.HandlerConfigT) handler.Handler { } t.ready = true - t.dbh = database.NewDatabaseHandle(config.DatabaseConnStr) + t.dbh = database.NewDatabaseHandle() return t } diff --git a/src/udi/handlers/sver/sver.go b/src/udi/handlers/sver/sver.go index c1769d1..026c168 100644 --- a/src/udi/handlers/sver/sver.go +++ b/src/udi/handlers/sver/sver.go @@ -129,7 +129,7 @@ func NewSverHandler(config config.HandlerConfigT) handler.Handler { t.config = localConfig t.ready = true - t.dbh = database.NewDatabaseHandle(config.DatabaseConnStr) + t.dbh = database.NewDatabaseHandle() return t } diff --git a/src/udi/handlers/ttn/ttn.go b/src/udi/handlers/ttn/ttn.go index f3e644c..58cf82f 100644 --- a/src/udi/handlers/ttn/ttn.go +++ b/src/udi/handlers/ttn/ttn.go @@ -81,7 +81,7 @@ func NewTTNHandler(config config.HandlerConfigT) handler.Handler { id: idSeq, } idSeq += 1 - t.dbh = database.NewDatabaseHandle(config.DatabaseConnStr) + t.dbh = database.NewDatabaseHandle() return t }