in sfintegration/ServiceData.cs [86:297]
static EnvoyDefaults()
{
var connectTimeout = Environment.GetEnvironmentVariable("HttpRequestConnectTimeoutMs");
if (connectTimeout != null)
{
try
{
connect_timeout_ms = Convert.ToInt32(connectTimeout);
}
catch { }
}
var requestTimeout = Environment.GetEnvironmentVariable("DefaultHttpRequestTimeoutMs");
if (requestTimeout != null)
{
try
{
timeout_ms = Convert.ToInt32(requestTimeout);
}
catch { }
}
var removeResponseHeaders = Environment.GetEnvironmentVariable("RemoveServiceResponseHeaders");
if (removeResponseHeaders != null)
{
try
{
response_headers_to_remove.AddRange(removeResponseHeaders.Replace(" ", "").Split(','));
}
catch { }
}
var useHttps = Environment.GetEnvironmentVariable("UseHttps");
if (useHttps != null && useHttps == "true")
{
var verify_certificate_hash = Environment.GetEnvironmentVariable("ServiceCertificateHash");
var subjectAlternateName = Environment.GetEnvironmentVariable("ServiceCertificateAlternateNames");
if (subjectAlternateName != null)
{
try
{
verify_subject_alt_name.AddRange(subjectAlternateName.Replace(" ", "").Split(','));
}
catch { }
}
cluster_ssl_context = new EnvoyClusterSslContext(verify_certificate_hash, verify_subject_alt_name);
}
host_ip = Environment.GetEnvironmentVariable("Fabric_NodeIPOrFQDN");
if (host_ip == null || host_ip == "localhost")
{
bool runningInContainer = Environment.GetEnvironmentVariable("__STANDALONE_TESTING__") == null;
if (runningInContainer)
{
// running in a container outside of Service Fabric or
// running in a container on local dev cluster
host_ip = GetInternalGatewayAddress();
}
else if (Environment.GetEnvironmentVariable("__USE_LOCALHOST__") == null)
{
// running outside of Service Fabric or
// running on local dev cluster
host_ip = GetIpAddress();
}
else
{
host_ip = "127.0.0.1";
}
}
var port = Environment.GetEnvironmentVariable("ManagementPort");
if (port != null)
{
management_port = port;
}
client_cert_subject_name = Environment.GetEnvironmentVariable("SF_ClientCertCommonName");
var issuer_thumbprints = Environment.GetEnvironmentVariable("SF_ClientCertIssuerThumbprints");
if (!string.IsNullOrWhiteSpace(issuer_thumbprints))
{
client_cert_issuer_thumbprints = issuer_thumbprints.Split(',');
}
var server_common_names = Environment.GetEnvironmentVariable("SF_ClusterCertCommonNames");
if (!string.IsNullOrWhiteSpace(server_common_names))
{
server_cert_common_names = server_common_names.Split(',');
}
var server_issuer_thumbprints = Environment.GetEnvironmentVariable("SF_ClusterCertIssuerThumbprints");
if (!string.IsNullOrWhiteSpace(server_issuer_thumbprints))
{
server_cert_issuer_thumbprints = server_issuer_thumbprints.Split(',');
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
fabricUri = new String[] { host_ip + ":" + management_port };
}
else
{
fabricUri = null;
}
LogMessage(String.Format("Management Endpoint = {0}:{1}", host_ip, management_port));
if (fabricUri != null)
{
LogMessage(String.Format("Fabric Uri = {0}", fabricUri));
}
else
{
LogMessage(String.Format("Fabric Uri = []"));
}
if (client_cert_subject_name != null)
{
LogMessage(String.Format("SF_ClientCertCommonName = {0}", client_cert_subject_name));
}
if (issuer_thumbprints != null)
{
LogMessage(String.Format("SF_ClientCertIssuerThumbprints = {0}", issuer_thumbprints));
}
if (server_cert_common_names != null)
{
LogMessage(String.Format("SF_ClusterCertCommonNames = {0}", server_cert_common_names));
}
if (server_issuer_thumbprints != null)
{
LogMessage(String.Format("SF_ClusterCertIssuerThumbprints = {0}", server_issuer_thumbprints));
}
var gateway_listen_network = "";
LogMessage("Getting Gateway_Config");
string gateway_config = Environment.GetEnvironmentVariable("Gateway_Config");
if (gateway_config != null && gateway_config != "")
{
LogMessage(String.Format("Gateway_Config = {0}", gateway_config));
var gatewayProperties = JsonConvert.DeserializeObject<GatewayResourceDescription>(gateway_config);
LogMessage(String.Format("Gateway_Config: Deserialized"));
gateway_listen_network = gatewayProperties.SourceNetwork.Name;
gateway_map = new Dictionary<string, List<ListenerFilterConfig>>();
gateway_clusternames = new HashSet<string>();
LogMessage(String.Format("Gateway_Config: Start processing"));
if (gatewayProperties.Tcp != null)
{
foreach (var e in gatewayProperties.Tcp)
{
string serviceName = e.Destination.EnvoyServiceName();
if (!gateway_map.ContainsKey(e.Port.ToString()) ||
gateway_map[e.Port.ToString()] == null)
{
gateway_map[e.Port.ToString()] = new List<ListenerFilterConfig>();
}
gateway_map[e.Port.ToString()].Add(
new ListenerFilterConfig(
e.Name,
ListenerFilterConfig.ListenerFilterType.Tcp,
serviceName));
gateway_clusternames.Add(serviceName);
}
}
if (gatewayProperties.Http != null)
{
foreach (var httpConfig in gatewayProperties.Http)
{
string configName = "gateway_config|" + httpConfig.Port;
if (!gateway_map.ContainsKey(httpConfig.Port.ToString()) ||
gateway_map[httpConfig.Port.ToString()] == null)
{
gateway_map[httpConfig.Port.ToString()] = new List<ListenerFilterConfig>();
}
gateway_map[httpConfig.Port.ToString()].Add(
new ListenerHttpFilterConfig(
httpConfig.Name,
configName,
httpConfig.Hosts));
foreach (var host in httpConfig.Hosts)
{
foreach (var e in host.Routes)
{
var serviceName = e.Destination.EnvoyServiceName();
gateway_clusternames.Add(serviceName);
}
}
}
}
LogMessage(String.Format("Gateway_Config: End processing"));
}
else
LogMessage("Gateway_Config=null");
if (gateway_listen_network != null)
{
LogMessage(String.Format("Gateway_Listen_Network = {0}", gateway_listen_network));
gateway_listen_network = "[" + gateway_listen_network + "]";
var env = Environment.GetEnvironmentVariables();
var keys = env.Keys;
foreach (System.Collections.DictionaryEntry de in env)
{
var variable = de.Key.ToString();
if (variable.Contains(gateway_listen_network) && variable.StartsWith("Fabric_NET"))
{
gateway_listen_ip = de.Value.ToString();
break;
}
}
}
else
LogMessage("Gateway_Listen_Network=null");
LogMessage("gateway_listen_ip = " + gateway_listen_ip);
}