internal static Uri BuildCmdletProxyUri(string targetFqdn, ExchangeRunspaceConfiguration runspaceConfig, int targetVersion) { if (string.IsNullOrWhiteSpace(targetFqdn)) { throw new ArgumentNullException("targetFqdn"); } if (runspaceConfig == null) { throw new ArgumentNullException("runspaceConfig"); } ExchangeRunspaceConfigurationSettings configurationSettings = runspaceConfig.ConfigurationSettings; ExAssert.RetailAssert(configurationSettings != null, "runspaceConfig.ConfigurationSettings should not be null."); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("https://"); stringBuilder.Append(targetFqdn); if (targetVersion >= Server.E15MinVersion) { stringBuilder.Append(":444/powershell/Powershell-proxy?"); } else { stringBuilder.Append("/Powershell-proxy?"); } stringBuilder.AppendFormat("{0}={1}", "X-Rps-CAT", Uri.EscapeDataString(configurationSettings.UserToken.CommonAccessTokenForCmdletProxy().Serialize())); stringBuilder.AppendFormat(";{0}={1}", "serializationLevel", configurationSettings.CurrentSerializationLevel.ToString()); stringBuilder.AppendFormat(";{0}={1}", "clientApplication", configurationSettings.ClientApplication.ToString()); if (configurationSettings.ClientApplication == ExchangeRunspaceConfigurationSettings.ExchangeApplication.ECP || configurationSettings.ClientApplication == ExchangeRunspaceConfigurationSettings.ExchangeApplication.EMC || configurationSettings.ClientApplication == ExchangeRunspaceConfigurationSettings.ExchangeApplication.OSP) { stringBuilder.AppendFormat(";{0}={1}", "proxyFullSerialization", "true"); } string managedOrganization = ProxyHelper.GetManagedOrganization(runspaceConfig); if (!string.IsNullOrEmpty(managedOrganization)) { stringBuilder.AppendFormat(";{0}", ProxyHelper.GetOrganizationAppendQueryIfNeeded(managedOrganization)); } stringBuilder.AppendFormat(";{0}={1}", WellKnownHeader.CmdletProxyIsOn, "99C6ECEE-5A4F-47B9-AE69-49EAFB58F368"); IActivityScope currentActivityScope = ActivityContext.GetCurrentActivityScope(); if (currentActivityScope != null && currentActivityScope.ActivityId != Guid.Empty) { stringBuilder.AppendFormat(";{0}={1}", "RequestId48CD6591-0506-4D6E-9131-797489A3260F", currentActivityScope.ActivityId); } return(new Uri(stringBuilder.ToString())); }
internal static NameValueCollection GetPSWSProxyRequestHeaders(ExchangeRunspaceConfiguration runspaceConfig) { ExchangeRunspaceConfigurationSettings configurationSettings = runspaceConfig.ConfigurationSettings; ExAssert.RetailAssert(configurationSettings != null, "runspaceConfig.ConfigurationSettings should not be null."); NameValueCollection nameValueCollection = new NameValueCollection(); nameValueCollection["X-CommonAccessToken"] = configurationSettings.UserToken.CommonAccessTokenForCmdletProxy().Serialize(); nameValueCollection["serializationLevel"] = configurationSettings.CurrentSerializationLevel.ToString(); nameValueCollection["clientApplication"] = configurationSettings.ClientApplication.ToString(); nameValueCollection["X-EncodeDecode-Key"] = "false"; nameValueCollection[WellKnownHeader.CmdletProxyIsOn] = "99C6ECEE-5A4F-47B9-AE69-49EAFB58F368"; if (configurationSettings.ClientApplication == ExchangeRunspaceConfigurationSettings.ExchangeApplication.ECP || configurationSettings.ClientApplication == ExchangeRunspaceConfigurationSettings.ExchangeApplication.EMC || configurationSettings.ClientApplication == ExchangeRunspaceConfigurationSettings.ExchangeApplication.OSP) { nameValueCollection["proxyFullSerialization"] = "true"; } string managedOrganization = ProxyHelper.GetManagedOrganization(runspaceConfig); if (!string.IsNullOrEmpty(managedOrganization)) { nameValueCollection["organization"] = managedOrganization; } return(nameValueCollection); }