public Task GetSetupParameters() { AssertOnlyInSetupMode(); var setupParameters = SetupParameters.Get(ServerStore); using (ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { writer.WriteStartObject(); writer.WritePropertyName(nameof(SetupParameters.FixedServerPortNumber)); if (setupParameters.FixedServerPortNumber.HasValue) { writer.WriteInteger(setupParameters.FixedServerPortNumber.Value); } else { writer.WriteNull(); } writer.WriteComma(); writer.WritePropertyName(nameof(SetupParameters.IsDocker)); writer.WriteBool(setupParameters.IsDocker); writer.WriteEndObject(); } return(Task.CompletedTask); }
public async Task GetSetupParameters() { AssertOnlyInSetupMode(); var setupParameters = await SetupParameters.Get(ServerStore); using (ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context)) await using (var writer = new AsyncBlittableJsonTextWriter(context, ResponseBodyStream())) { writer.WriteStartObject(); writer.WritePropertyName(nameof(SetupParameters.FixedServerPortNumber)); if (setupParameters.FixedServerPortNumber.HasValue) { writer.WriteInteger(setupParameters.FixedServerPortNumber.Value); } else { writer.WriteNull(); } writer.WriteComma(); writer.WritePropertyName(nameof(SetupParameters.IsDocker)); writer.WriteBool(setupParameters.IsDocker); writer.WriteComma(); writer.WritePropertyName(nameof(SetupParameters.IsAzure)); writer.WriteBool(setupParameters.IsAzure); writer.WriteComma(); writer.WritePropertyName(nameof(SetupParameters.IsAws)); writer.WriteBool(setupParameters.IsAws); writer.WriteComma(); writer.WritePropertyName(nameof(SetupParameters.RunningOnPosix)); writer.WriteBool(setupParameters.RunningOnPosix); writer.WriteComma(); writer.WritePropertyName(nameof(SetupParameters.RunningOnMacOsx)); writer.WriteBool(setupParameters.RunningOnMacOsx); writer.WriteEndObject(); } }
public Task GetIps() { AssertOnlyInSetupMode(); NetworkInterface[] netInterfaces = null; try { netInterfaces = NetworkInterface.GetAllNetworkInterfaces(); } catch (Exception) { // https://github.com/dotnet/corefx/issues/26476 // If GetAllNetworkInterfaces is not supported, we'll just return the default: 127.0.0.1 } using (ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { writer.WriteStartObject(); writer.WritePropertyName("MachineName"); writer.WriteString(Environment.MachineName); writer.WriteComma(); writer.WritePropertyName("NetworkInterfaces"); writer.WriteStartArray(); var first = true; List <string> ips; if (netInterfaces != null) { foreach (var netInterface in netInterfaces) { ips = netInterface.GetIPProperties().UnicastAddresses .Where(x => { // filter 169.254.xxx.xxx out, they are not meaningful for binding if (x.Address.AddressFamily != AddressFamily.InterNetwork) { return(false); } var addressBytes = x.Address.GetAddressBytes(); // filter 127.xxx.xxx.xxx out, in docker only if (SetupParameters.Get(ServerStore).IsDocker&& addressBytes[0] == 127) { return(false); } return(addressBytes[0] != 169 || addressBytes[1] != 254); }) .Select(addr => addr.Address.ToString()) .ToList(); // If there's a hostname in the server url, add it to the list if (SetupParameters.Get(ServerStore).DockerHostname != null && ips.Contains(SetupParameters.Get(ServerStore).DockerHostname) == false) { ips.Add(SetupParameters.Get(ServerStore).DockerHostname); } if (first == false) { writer.WriteComma(); } first = false; writer.WriteStartObject(); writer.WritePropertyName("Name"); writer.WriteString(netInterface.Name); writer.WriteComma(); writer.WritePropertyName("Description"); writer.WriteString(netInterface.Description); writer.WriteComma(); writer.WriteArray("Addresses", ips); writer.WriteEndObject(); } } else { // https://github.com/dotnet/corefx/issues/26476 // If GetAllNetworkInterfaces is not supported, we'll just return the default: 127.0.0.1 ips = new List <string> { "127.0.0.1" }; writer.WriteStartObject(); writer.WritePropertyName("Name"); writer.WriteString("Loopback Interface"); writer.WriteComma(); writer.WritePropertyName("Description"); writer.WriteString("Loopback Interface"); writer.WriteComma(); writer.WriteArray("Addresses", ips); writer.WriteEndObject(); } writer.WriteEndArray(); writer.WriteEndObject(); } return(Task.CompletedTask); }
public Task GetIps() { AssertOnlyInSetupMode(); using (ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { writer.WriteStartObject(); writer.WritePropertyName("MachineName"); writer.WriteString(Environment.MachineName); writer.WriteComma(); writer.WritePropertyName("NetworkInterfaces"); writer.WriteStartArray(); var first = true; foreach (var netInterface in NetworkInterface.GetAllNetworkInterfaces()) { var ips = netInterface.GetIPProperties().UnicastAddresses .Where(x => { // filter 169.254.xxx.xxx out, they are not meaningful for binding if (x.Address.AddressFamily != AddressFamily.InterNetwork) { return(false); } var addressBytes = x.Address.GetAddressBytes(); // filter 127.xxx.xxx.xxx out, in docker only if (SetupParameters.Get(ServerStore).IsDocker&& addressBytes[0] == 127) { return(false); } return(addressBytes[0] != 169 || addressBytes[1] != 254); }) .Select(addr => addr.Address.ToString()) .ToList(); // If there's a hostname in the server url, add it to the list if (SetupParameters.Get(ServerStore).DockerHostname != null && ips.Contains(SetupParameters.Get(ServerStore).DockerHostname) == false) { ips.Add(SetupParameters.Get(ServerStore).DockerHostname); } if (first == false) { writer.WriteComma(); } first = false; writer.WriteStartObject(); writer.WritePropertyName("Name"); writer.WriteString(netInterface.Name); writer.WriteComma(); writer.WritePropertyName("Description"); writer.WriteString(netInterface.Description); writer.WriteComma(); writer.WriteArray("Addresses", ips); writer.WriteEndObject(); } writer.WriteEndArray(); writer.WriteEndObject(); } return(Task.CompletedTask); }