in 2LCS/HttpClientHelper.cs [541:608]
internal List<RDPConnectionDetails> GetRdpConnectionDetails(CloudHostedInstance instance)
{
var list = new List<RDPConnectionDetails>();
//check RDP availability
foreach (var vm in instance.Instances)
{
var result = _httpClient.GetAsync($"{LcsUrl}/DeploymentPortal/IsRdpResourceAvailable/{LcsProjectId}/?topologyInstanceId={instance.InstanceId}&virtualMachineInstanceName={vm.MachineName}&deploymentItemName={vm.ItemName}&azureSubscriptionId={instance.AzureSubscriptionId}&group=0&isARMTopology={instance.IsARMTopology}&nsgWarningDisplayed=true&_={DateTimeOffset.Now.ToUnixTimeSeconds()}").Result;
result.EnsureSuccessStatusCode();
var responseBody = result.Content.ReadAsStringAsync().Result;
var rdpPresentResponse = JsonConvert.DeserializeObject<Response>(responseBody);
if (!rdpPresentResponse.Success) continue;
_httpClient.DefaultRequestHeaders.Remove("Accept");
_httpClient.DefaultRequestHeaders.Remove("X-Requested-With");
_httpClient.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
_httpClient.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1");
result = _httpClient.GetAsync($"{LcsUrl}/DeploymentPortal/IsRdpResourceAvailable/{LcsProjectId}/?topologyInstanceId={instance.InstanceId}&virtualMachineInstanceName={vm.MachineName}&deploymentItemName={vm.ItemName}&azureSubscriptionId={instance.AzureSubscriptionId}&group=0&isARMTopology={instance.IsARMTopology}&nsgWarningDisplayed=true&_={DateTimeOffset.Now.ToUnixTimeSeconds()}&isDownloadEnabled=True").Result;
result.EnsureSuccessStatusCode();
responseBody = result.Content.ReadAsStringAsync().Result;
var line1 = responseBody.Split('\r', '\n').FirstOrDefault();
if (line1 == null) continue;
var splited = line1.Split(':');
_httpClient.DefaultRequestHeaders.Remove("Accept");
_httpClient.DefaultRequestHeaders.Add("Accept", "*/*");
_httpClient.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");
_httpClient.DefaultRequestHeaders.Remove("Upgrade-Insecure-Requests");
vm.Credentials = GetCredentials(instance.EnvironmentId, vm.ItemName);
var localAdmin = vm.Credentials.Where(x => x.Key.Contains("Local admin")).ToDictionary(x => x.Key, x => x.Value);
if (localAdmin.Count == 1)
{
var adminUsername = localAdmin.First().Key.Split('\\')[1];
var adminDomain = localAdmin.First().Key.Split('\\')[0].Split('-')[2];
var adminPassword = localAdmin.First().Value;
var rdp = new RDPConnectionDetails
{
Address = splited[2],
Port = splited[3],
Domain = adminDomain,
Username = adminUsername,
Password = adminPassword,
Machine = vm.MachineName
};
list.Add(rdp);
}
var localUser = vm.Credentials.Where(x => x.Key.Contains("Local user")).ToDictionary(x => x.Key, x => x.Value);
if (localUser.Count == 1)
{
var userUsername = localUser.First().Key.Split('\\')[1];
var userDomain = localUser.First().Key.Split('\\')[0].Split('-')[2];
var userPassword = localUser.First().Value;
var rdp = new RDPConnectionDetails
{
Address = splited[2],
Port = splited[3],
Domain = userDomain,
Username = userUsername,
Password = userPassword,
Machine = vm.MachineName
};
list.Add(rdp);
}
}
return list;
}