Skip to content

Commit 7a2cc86

Browse files
committed
Fix configuration parse error.
1 parent 4a0653f commit 7a2cc86

File tree

4 files changed

+66
-26
lines changed

4 files changed

+66
-26
lines changed

cmd/lora-gateway-bridge/cmd/root.go

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -52,35 +52,23 @@ func init() {
5252
viper.BindEnv("general.log_level", "LOG_LEVEL")
5353
viper.BindEnv("packet_forwarder.udp_bind", "UDP_BIND")
5454
viper.BindEnv("packet_forwarder.skip_crc_check", "SKIP_CRC_CHECK")
55-
viper.BindEnv("backend.mqtt.server", "MQTT_SERVER")
56-
viper.BindEnv("backend.mqtt.username", "MQTT_USERNAME")
57-
viper.BindEnv("backend.mqtt.password", "MQTT_PASSWORD")
58-
viper.BindEnv("backend.mqtt.ca_cert", "MQTT_CA_CERT")
59-
viper.BindEnv("backend.mqtt.tls_cert", "MQTT_TLS_CERT")
60-
viper.BindEnv("backend.mqtt.tls_key", "MQTT_TLS_KEY")
55+
viper.BindEnv("backend.mqtt.auth.generic.server", "MQTT_SERVER")
56+
viper.BindEnv("backend.mqtt.auth.generic.username", "MQTT_USERNAME")
57+
viper.BindEnv("backend.mqtt.auth.generic.password", "MQTT_PASSWORD")
58+
viper.BindEnv("backend.mqtt.auth.generic.ca_cert", "MQTT_CA_CERT")
59+
viper.BindEnv("backend.mqtt.auth.generic.tls_cert", "MQTT_TLS_CERT")
60+
viper.BindEnv("backend.mqtt.auth.generic.tls_key", "MQTT_TLS_KEY")
6161

6262
// for backwards compatibility
6363
viper.BindPFlag("general.log_level", rootCmd.PersistentFlags().Lookup("log-level"))
6464
viper.BindPFlag("packet_forwarder.udp_bind", rootCmd.PersistentFlags().Lookup("udp-bind"))
6565
viper.BindPFlag("packet_forwarder.skip_crc_check", rootCmd.PersistentFlags().Lookup("skip-crc-check"))
66-
viper.BindPFlag("backend.mqtt.server", rootCmd.PersistentFlags().Lookup("mqtt-server"))
67-
viper.BindPFlag("backend.mqtt.username", rootCmd.PersistentFlags().Lookup("mqtt-username"))
68-
viper.BindPFlag("backend.mqtt.password", rootCmd.PersistentFlags().Lookup("mqtt-password"))
69-
viper.BindPFlag("backend.mqtt.ca_cert", rootCmd.PersistentFlags().Lookup("mqtt-ca-cert"))
70-
viper.BindPFlag("backend.mqtt.tls_cert", rootCmd.PersistentFlags().Lookup("mqtt-tls-cert"))
71-
viper.BindPFlag("backend.mqtt.tls_key", rootCmd.PersistentFlags().Lookup("mqtt-tls-key"))
72-
73-
// aliases 2.4.x -> 2.5.0
74-
viper.RegisterAlias("backend.mqtt.auth.generic.server", "backend.mqtt.server")
75-
viper.RegisterAlias("backend.mqtt.auth.generic.username", "backend.mqtt.username")
76-
viper.RegisterAlias("backend.mqtt.auth.generic.password", "backend.mqtt.password")
77-
viper.RegisterAlias("backend.mqtt.auth.generic.ca_cert", "backend.mqtt.ca_cert")
78-
viper.RegisterAlias("backend.mqtt.auth.generic.tls_cert", "backend.mqtt.tls_cert")
79-
viper.RegisterAlias("backend.mqtt.auth.generic.tls_key", "backend.mqtt.tls_key")
80-
viper.RegisterAlias("backend.mqtt.auth.generic.qos", "backend.mqtt.qos")
81-
viper.RegisterAlias("backend.mqtt.auth.generic.clean_session", "backend.mqtt.clean_session")
82-
viper.RegisterAlias("backend.mqtt.auth.generic.client_id", "backend.mqtt.client_id")
83-
viper.RegisterAlias("backend.mqtt.auth.generic.max_reconnect_interval", "backend.mqtt.max_reconnect_interval")
66+
viper.BindPFlag("backend.mqtt.auth.generic.server", rootCmd.PersistentFlags().Lookup("mqtt-server"))
67+
viper.BindPFlag("backend.mqtt.auth.generic.username", rootCmd.PersistentFlags().Lookup("mqtt-username"))
68+
viper.BindPFlag("backend.mqtt.auth.generic.password", rootCmd.PersistentFlags().Lookup("mqtt-password"))
69+
viper.BindPFlag("backend.mqtt.auth.generic.ca_cert", rootCmd.PersistentFlags().Lookup("mqtt-ca-cert"))
70+
viper.BindPFlag("backend.mqtt.auth.generic.tls_cert", rootCmd.PersistentFlags().Lookup("mqtt-tls-cert"))
71+
viper.BindPFlag("backend.mqtt.auth.generic.tls_key", rootCmd.PersistentFlags().Lookup("mqtt-tls-key"))
8472

8573
// default values
8674
viper.SetDefault("packet_forwarder.udp_bind", "0.0.0.0:1700")
@@ -145,4 +133,39 @@ func initConfig() {
145133
log.WithError(err).Fatal("unmarshal config error")
146134
}
147135
}
136+
137+
// migrate config
138+
if v := config.C.Backend.MQTT.Server; v != "" {
139+
config.C.Backend.MQTT.Auth.Generic.Server = v
140+
}
141+
if v := config.C.Backend.MQTT.Username; v != "" {
142+
config.C.Backend.MQTT.Auth.Generic.Username = v
143+
}
144+
if v := config.C.Backend.MQTT.Password; v != "" {
145+
config.C.Backend.MQTT.Auth.Generic.Password = v
146+
}
147+
if v := config.C.Backend.MQTT.Password; v != "" {
148+
config.C.Backend.MQTT.Auth.Generic.Password = v
149+
}
150+
if v := config.C.Backend.MQTT.CACert; v != "" {
151+
config.C.Backend.MQTT.Auth.Generic.CACert = v
152+
}
153+
if v := config.C.Backend.MQTT.TLSCert; v != "" {
154+
config.C.Backend.MQTT.Auth.Generic.TLSCert = v
155+
}
156+
if v := config.C.Backend.MQTT.TLSKey; v != "" {
157+
config.C.Backend.MQTT.Auth.Generic.TLSKey = v
158+
}
159+
if v := config.C.Backend.MQTT.QOS; v != 0 {
160+
config.C.Backend.MQTT.Auth.Generic.QOS = v
161+
}
162+
if v := config.C.Backend.MQTT.CleanSession; v {
163+
config.C.Backend.MQTT.Auth.Generic.CleanSession = v
164+
}
165+
if v := config.C.Backend.MQTT.ClientID; v != "" {
166+
config.C.Backend.MQTT.Auth.Generic.ClientID = v
167+
}
168+
if v := config.C.Backend.MQTT.MaxReconnectInterval; v != 0 {
169+
config.C.Backend.MQTT.Auth.Generic.MaxReconnectInterval = v
170+
}
148171
}

docs/config.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ googleAnalytics = "UA-3512995-9"
3232
weight = 4
3333

3434
[params]
35-
version = "2.5.0"
35+
version = "2.5.1"

docs/content/overview/changelog.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ menu:
88

99
# Changelog
1010

11+
## v2.5.1
12+
13+
### Bugfixes
14+
15+
Fix configuration parse error (some keys were not loaded because of configuration alias).
16+
1117
## v2.5.0
1218

1319
### Upgrade notes

internal/backend/mqtt/backend.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,21 @@ type BackendConfig struct {
3131
StatsTopicTemplate string `mapstructure:"stats_topic_template"`
3232
AckTopicTemplate string `mapstructure:"ack_topic_template"`
3333
ConfigTopicTemplate string `mapstructure:"config_topic_template"`
34-
QOS uint8 `mapstructure:"qos"`
3534
Marshaler string `mapstructure:"marshaler"`
3635
Auth BackendAuthConfig
3736

37+
// for backwards compatibility
38+
Server string
39+
Username string
40+
Password string
41+
CACert string `mapstructure:"ca_cert"`
42+
TLSCert string `mapstructure:"tls_cert"`
43+
TLSKey string `mapstructure:"tls_key"`
44+
QOS uint8 `mapstructure:"qos"`
45+
CleanSession bool `mapstructure:"clean_session"`
46+
ClientID string `mapstructure:"client_id"`
47+
MaxReconnectInterval time.Duration `mapstructure:"max_reconnect_interval"`
48+
3849
AlwaysSubscribeMACs []lorawan.EUI64 `mapstructure:"-"`
3950
}
4051

0 commit comments

Comments
 (0)