in go/mqtt/env.go [40:141]
func SessionClientConfigFromEnv() (*Env, error) {
opts := &Env{SessionClientOptions: &SessionClientOptions{}}
conn := connectionProviderBuilder{}
for _, env := range os.Environ() {
idx := strings.IndexByte(env, '=')
key := env[:idx]
val := env[idx+1:]
switch key {
case "AIO_BROKER_HOSTNAME":
conn.hostname = val
case "AIO_BROKER_TCP_PORT":
port, err := strconv.ParseUint(val, 10, 16)
if err != nil {
return nil, &InvalidArgumentError{
message: "could not parse broker TCP port",
wrapped: err,
}
}
conn.port = uint16(port)
case "AIO_MQTT_USE_TLS":
useTLS, err := strconv.ParseBool(val)
if err != nil {
return nil, &InvalidArgumentError{
message: "could not parse MQTT use TLS",
wrapped: err,
}
}
conn.useTLS = &useTLS
case "AIO_MQTT_CLEAN_START":
cleanStart, err := strconv.ParseBool(val)
if err != nil {
return nil, &InvalidArgumentError{
message: "could not parse MQTT clean start",
wrapped: err,
}
}
opts.CleanStart = cleanStart
case "AIO_MQTT_KEEP_ALIVE":
keepAlive, err := strconv.ParseUint(val, 10, 16)
if err != nil {
return nil, &InvalidArgumentError{
message: "could not parse MQTT keep-alive",
wrapped: err,
}
}
opts.KeepAlive = uint16(keepAlive)
case "AIO_MQTT_CLIENT_ID":
opts.ClientID = val
case "AIO_MQTT_SESSION_EXPIRY":
sessionExpiry, err := strconv.ParseUint(val, 10, 32)
if err != nil {
return nil, &InvalidArgumentError{
message: "could not parse MQTT session expiry",
wrapped: err,
}
}
opts.SessionExpiry = uint32(sessionExpiry)
case "AIO_MQTT_USERNAME":
opts.Username = ConstantUsername(val)
case "AIO_MQTT_PASSWORD_FILE":
opts.Password = FilePassword(val)
case "AIO_SAT_FILE":
satAuth, err := auth.NewAIOServiceAccountToken(val)
if err != nil {
return nil, &InvalidArgumentError{
message: "error setting up the AIO SAT auth provider",
wrapped: err,
}
}
opts.Auth = satAuth
case "AIO_TLS_CA_FILE":
conn.caFile = val
case "AIO_TLS_CERT_FILE":
conn.certFile = val
case "AIO_TLS_KEY_FILE":
conn.keyFile = val
case "AIO_TLS_KEY_PASSWORD_FILE":
conn.passFile = val
}
}
var err error
opts.ConnectionProvider, err = conn.build()
if err != nil {
return nil, err
}
return opts, nil
}