in dotnet/src/Azure.Iot.Operations.Protocol/Connection/MqttConnectionSettings.cs [98:155]
public static MqttConnectionSettings FromEnvVars()
{
string? hostname = Environment.GetEnvironmentVariable("AIO_BROKER_HOSTNAME");
if (string.IsNullOrEmpty(hostname))
{
throw AkriMqttException.GetConfigurationInvalidException(
"AIO_BROKER_HOSTNAME",
string.Empty,
"Invalid settings in provided Environment Variables: 'AIO_BROKER_HOSTNAME' is missing.");
}
string? tcpPort = Environment.GetEnvironmentVariable("AIO_BROKER_TCP_PORT");
string? clientId = Environment.GetEnvironmentVariable("AIO_MQTT_CLIENT_ID");
if (string.IsNullOrEmpty(clientId))
{
throw AkriMqttException.GetConfigurationInvalidException(
"AIO_MQTT_CLIENT_ID",
string.Empty,
"Invalid settings in provided Environment Variables: 'AIO_MQTT_CLIENT_ID' is missing.");
}
string? certFile = Environment.GetEnvironmentVariable("AIO_TLS_CERT_FILE");
string? keyFile = Environment.GetEnvironmentVariable("AIO_TLS_KEY_FILE");
string? username = Environment.GetEnvironmentVariable("AIO_MQTT_USERNAME");
string? passwordFile = Environment.GetEnvironmentVariable("AIO_MQTT_PASSWORD_FILE");
string? keepAlive = Environment.GetEnvironmentVariable("AIO_MQTT_KEEP_ALIVE");
string? sessionExpiry = Environment.GetEnvironmentVariable("AIO_MQTT_SESSION_EXPIRY");
string? cleanStart = Environment.GetEnvironmentVariable("AIO_MQTT_CLEAN_START");
string? useTls = Environment.GetEnvironmentVariable("AIO_MQTT_USE_TLS");
string? caFile = Environment.GetEnvironmentVariable("AIO_TLS_CA_FILE");
string? keyPasswordFile = Environment.GetEnvironmentVariable("AIO_TLS_KEY_PASSWORD_FILE");
string? satAuthFile = Environment.GetEnvironmentVariable("AIO_SAT_FILE");
try
{
return new MqttConnectionSettings(hostname, clientId)
{
CertFile = certFile,
KeyFile = keyFile,
Username = username,
PasswordFile = passwordFile,
KeepAlive = string.IsNullOrEmpty(keepAlive) ? s_defaultKeepAlive : TimeSpan.FromSeconds(int.Parse(keepAlive, CultureInfo.InvariantCulture)),
SessionExpiry = string.IsNullOrEmpty(sessionExpiry) ? s_defaultSessionExpiry : TimeSpan.FromSeconds(int.Parse(sessionExpiry, CultureInfo.InvariantCulture)),
CleanStart = string.IsNullOrEmpty(cleanStart) || CheckForValidBooleanInput(nameof(CleanStart), cleanStart),
TcpPort = string.IsNullOrEmpty(tcpPort) ? DefaultTcpPort : CheckForValidIntegerInput(nameof(TcpPort), tcpPort),
UseTls = string.IsNullOrEmpty(useTls) || CheckForValidBooleanInput(nameof(UseTls), useTls),
CaFile = caFile,
KeyPasswordFile = string.IsNullOrEmpty(keyPasswordFile) ? null : File.ReadAllText(keyPasswordFile).Trim(),
SatAuthFile = satAuthFile
};
}
catch (ArgumentException ex)
{
throw AkriMqttException.GetConfigurationInvalidException(ex.ParamName!, string.Empty, "Invalid settings in provided Environment Variables: " + ex.Message, ex);
}
}