void IInternalConfigWebHost.GetSiteIDAndVPathFromConfigPath(string configPath, out string siteID, out string vpath) { VirtualPath virtualPath; WebConfigurationHost.GetSiteIDAndVPathFromConfigPath(configPath, out siteID, out virtualPath); vpath = VirtualPath.GetVirtualPathString(virtualPath); }
void IInternalConfigWebHost.GetSiteIDAndVPathFromConfigPath(string configPath, out string siteID, out string vpath) { VirtualPath path; GetSiteIDAndVPathFromConfigPath(configPath, out siteID, out path); vpath = VirtualPath.GetVirtualPathString(path); }
private static string ValidateVirtualDirectoryParameter(string virtualDirectory) { // Create a VirtualPath object to validate the path VirtualPath v = VirtualPath.CreateAbsoluteAllowNull(virtualDirectory); return(VirtualPath.GetVirtualPathString(v)); }
// CreateConfigurationContext // // Create the ConfigurationContext for ConfigurationElement's // // Parameters: // configPath - Config Path we are quering for // locationSubPath - Location SubPath // public override object CreateConfigurationContext(string configPath, string locationSubPath) { string path; WebApplicationLevel pathLevel; path = VPathFromConfigPath(configPath); pathLevel = GetPathLevel(configPath); return(new WebContext(pathLevel, // PathLevel _appSiteName, // Site VirtualPath.GetVirtualPathString(_appPath), // AppPath path, // Path locationSubPath, // LocationSubPath _appConfigPath)); // e.g., "machine/webroot/2/approot" }
public string GetFilePaths(int webLevelAsInt, string path, string site, string locationSubPath) { string str; string str2; VirtualPath path3; string str3; string str4; string str5; VirtualPath path4; WebLevel webLevel = (WebLevel)webLevelAsInt; IConfigMapPath instance = IISMapPath.GetInstance(); WebConfigurationHost.GetConfigPaths(instance, webLevel, VirtualPath.CreateNonRelativeAllowNull(path), site, locationSubPath, out path3, out str, out str2, out str3, out str4); ArrayList list = new ArrayList(); list.Add(VirtualPath.GetVirtualPathString(path3)); list.Add(str); list.Add(str2); list.Add(str3); list.Add(str4); WebConfigurationHost.GetSiteIDAndVPathFromConfigPath(str3, out str5, out path4); list.Add("machine"); list.Add(HttpConfigurationSystem.MachineConfigurationFilePath); if (webLevel != WebLevel.Machine) { list.Add("machine/webroot"); list.Add(HttpConfigurationSystem.RootWebConfigurationFilePath); for (VirtualPath path5 = path4; path5 != null; path5 = path5.Parent) { string configPathFromSiteIDAndVPath = WebConfigurationHost.GetConfigPathFromSiteIDAndVPath(str2, path5); string str7 = Path.Combine(instance.MapPath(str2, path5.VirtualPathString), "web.config"); list.Add(configPathFromSiteIDAndVPath); list.Add(str7); } } StringBuilder builder = new StringBuilder(); for (int i = 0; i < list.Count; i++) { if (i > 0) { builder.Append('<'); } string str8 = (string)list[i]; builder.Append(str8); } return(builder.ToString()); }
internal static System.Configuration.Configuration OpenConfiguration(WebLevel webLevel, ConfigurationFileMap fileMap, VirtualPath path, string site, string locationSubPath, string server, string userName, string password, IntPtr tokenHandle) { if (!IsValidSiteArgument(site)) { throw System.Web.Util.ExceptionUtil.ParameterInvalid("site"); } locationSubPath = ConfigurationFactory.NormalizeLocationSubPath(locationSubPath, null); if ((((!string.IsNullOrEmpty(server) && (server != ".")) && (!System.Web.Util.StringUtil.EqualsIgnoreCase(server, "127.0.0.1") && !System.Web.Util.StringUtil.EqualsIgnoreCase(server, "::1"))) && !System.Web.Util.StringUtil.EqualsIgnoreCase(server, "localhost")) && !System.Web.Util.StringUtil.EqualsIgnoreCase(server, Environment.MachineName)) { object[] hostInitConfigurationParams = new object[9]; hostInitConfigurationParams[0] = webLevel; hostInitConfigurationParams[2] = VirtualPath.GetVirtualPathString(path); hostInitConfigurationParams[3] = site; hostInitConfigurationParams[4] = locationSubPath; hostInitConfigurationParams[5] = server; hostInitConfigurationParams[6] = userName; hostInitConfigurationParams[7] = password; hostInitConfigurationParams[8] = tokenHandle; return(ConfigurationFactory.Create(typeof(RemoteWebConfigurationHost), hostInitConfigurationParams)); } if (string.IsNullOrEmpty(server)) { if (!string.IsNullOrEmpty(userName)) { throw System.Web.Util.ExceptionUtil.ParameterInvalid("userName"); } if (!string.IsNullOrEmpty(password)) { throw System.Web.Util.ExceptionUtil.ParameterInvalid("password"); } if (tokenHandle != IntPtr.Zero) { throw System.Web.Util.ExceptionUtil.ParameterInvalid("tokenHandle"); } } if (fileMap != null) { fileMap = (ConfigurationFileMap)fileMap.Clone(); } WebConfigurationFileMap map = fileMap as WebConfigurationFileMap; if ((map != null) && !string.IsNullOrEmpty(site)) { map.Site = site; } return(ConfigurationFactory.Create(typeof(WebConfigurationHost), new object[] { webLevel, fileMap, VirtualPath.GetVirtualPathString(path), site, locationSubPath })); }
private static string ValidateVirtualDirectoryParameter(string virtualDirectory) { return(VirtualPath.GetVirtualPathString(VirtualPath.CreateAbsoluteAllowNull(virtualDirectory))); }
public string GetFilePaths(int webLevelAsInt, string path, string site, string locationSubPath) { WebLevel webLevel = (WebLevel)webLevelAsInt; IConfigMapPath configMapPath = IISMapPath.GetInstance(); // Get the configuration paths and application information string appSiteName, appSiteID; VirtualPath appPath; string configPath, locationConfigPath; WebConfigurationHost.GetConfigPaths(configMapPath, webLevel, VirtualPath.CreateNonRelativeAllowNull(path), site, locationSubPath, out appPath, out appSiteName, out appSiteID, out configPath, out locationConfigPath); // // Format of filePaths: // appPath < appSiteName < appSiteID < configPath < locationConfigPath [< configPath < fileName]+ // ArrayList filePaths = new ArrayList(); filePaths.Add(VirtualPath.GetVirtualPathString(appPath)); filePaths.Add(appSiteName); filePaths.Add(appSiteID); filePaths.Add(configPath); filePaths.Add(locationConfigPath); string dummySiteID; VirtualPath virtualPath; WebConfigurationHost.GetSiteIDAndVPathFromConfigPath(configPath, out dummySiteID, out virtualPath); // pathmap for machine.config filePaths.Add(WebConfigurationHost.MachineConfigPath); filePaths.Add(HttpConfigurationSystem.MachineConfigurationFilePath); // pathmap for root web.config if (webLevel != WebLevel.Machine) { filePaths.Add(WebConfigurationHost.RootWebConfigPath); filePaths.Add(HttpConfigurationSystem.RootWebConfigurationFilePath); // pathmap for other paths for (VirtualPath currentVirtualPath = virtualPath; currentVirtualPath != null; currentVirtualPath = currentVirtualPath.Parent) { string currentConfigPath = WebConfigurationHost.GetConfigPathFromSiteIDAndVPath(appSiteID, currentVirtualPath); string currentFilePath = configMapPath.MapPath(appSiteID, currentVirtualPath.VirtualPathString); currentFilePath = System.IO.Path.Combine(currentFilePath, HttpConfigurationSystem.WebConfigFileName); filePaths.Add(currentConfigPath); filePaths.Add(currentFilePath); } } // join into a single string StringBuilder sb = new StringBuilder(); for (int i = 0; i < filePaths.Count; i++) { if (i > 0) { sb.Append(FilePathsSeparatorChar); } string part = (string)filePaths[i]; sb.Append(part); } return(sb.ToString()); }
// Create an instance of a Configuration object. // Used by design-time API to open a Configuration object. static internal Configuration OpenConfiguration( WebLevel webLevel, ConfigurationFileMap fileMap, VirtualPath path, string site, string locationSubPath, string server, string userName, string password, IntPtr tokenHandle) { Configuration configuration; if (!IsValidSiteArgument(site)) { throw ExceptionUtil.ParameterInvalid("site"); } locationSubPath = ConfigurationFactory.NormalizeLocationSubPath(locationSubPath, null); bool isRemote = !String.IsNullOrEmpty(server) && server != "." && !StringUtil.EqualsIgnoreCase(server, "127.0.0.1") && !StringUtil.EqualsIgnoreCase(server, "::1") && !StringUtil.EqualsIgnoreCase(server, "localhost") && !StringUtil.EqualsIgnoreCase(server, Environment.MachineName); if (isRemote) { configuration = ConfigurationFactory.Create(typeof(RemoteWebConfigurationHost), webLevel, null, VirtualPath.GetVirtualPathString(path), site, locationSubPath, server, userName, password, tokenHandle); } else { if (String.IsNullOrEmpty(server)) { if (!String.IsNullOrEmpty(userName)) { throw ExceptionUtil.ParameterInvalid("userName"); } if (!String.IsNullOrEmpty(password)) { throw ExceptionUtil.ParameterInvalid("password"); } if (tokenHandle != (IntPtr)0) { throw ExceptionUtil.ParameterInvalid("tokenHandle"); } } // Create a copy of the fileMap, so that it cannot be altered by // its creator once we start using it. if (fileMap != null) { fileMap = (ConfigurationFileMap)fileMap.Clone(); } WebConfigurationFileMap webFileMap = fileMap as WebConfigurationFileMap; if (webFileMap != null && !String.IsNullOrEmpty(site)) { webFileMap.Site = site; } configuration = ConfigurationFactory.Create(typeof(WebConfigurationHost), webLevel, fileMap, VirtualPath.GetVirtualPathString(path), site, locationSubPath); } return(configuration); }
public override object CreateConfigurationContext(string configPath, string locationSubPath) { return(new WebContext(this.GetPathLevel(configPath), this._appSiteName, VirtualPath.GetVirtualPathString(this._appPath), VPathFromConfigPath(configPath), locationSubPath, this._appConfigPath)); }
public override void InitForConfiguration(ref string locationSubPath, out string configPath, out string locationConfigPath, IInternalConfigRoot root, params object[] hostInitConfigurationParams) { WebLevel webLevel = (WebLevel)hostInitConfigurationParams[0]; // ConfigurationFileMap fileMap = (ConfigurationFileMap) hostInitConfigurationParams[1]; string path = (string)hostInitConfigurationParams[2]; string site = (string)hostInitConfigurationParams[3]; if (locationSubPath == null) { locationSubPath = (string)hostInitConfigurationParams[4]; } string server = (string)hostInitConfigurationParams[5]; string userName = (string)hostInitConfigurationParams[6]; string password = (string)hostInitConfigurationParams[7]; IntPtr tokenHandle = (IntPtr)hostInitConfigurationParams[8]; configPath = null; locationConfigPath = null; _Server = server; _Username = GetUserNameFromFullName(userName); _Domain = GetDomainFromFullName(userName); _Password = password; _Identity = (tokenHandle == IntPtr.Zero) ? null : new WindowsIdentity(tokenHandle); //CreateWindowsIdentity(username, domain, password, tokenHandle); _PathMap = new Hashtable(StringComparer.OrdinalIgnoreCase); #if !FEATURE_PAL // FEATURE_PAL does not have WindowsImpersonationContext, COM objects // // Send the path arguments to the server for parsing, // and retreive the normalized paths and path mapping // from config paths to file paths. // string filePaths; try { WindowsImpersonationContext wiContext = (_Identity != null) ? _Identity.Impersonate() : null; try { IRemoteWebConfigurationHostServer remoteSrv = RemoteWebConfigurationHost.CreateRemoteObject(server, _Username, _Domain, password); //(IRemoteWebConfigurationHostServer) Activator.CreateInstance(type); try { filePaths = remoteSrv.GetFilePaths((int)webLevel, path, site, locationSubPath); } finally { // Release COM objects while (Marshal.ReleaseComObject(remoteSrv) > 0) { } } } finally { if (wiContext != null) { wiContext.Undo(); } } } catch { // Wrap finally clause with a try to avoid exception clauses being run // while the thread is impersonated. throw; } if (filePaths == null) { throw ExceptionUtil.UnexpectedError("RemoteWebConfigurationHost::InitForConfiguration"); } // // Format of filePaths: // appPath < appSiteName < appSiteID < configPath < locationConfigPath [< configPath < fileName]+ // string[] parts = filePaths.Split(RemoteWebConfigurationHostServer.FilePathsSeparatorParams); if (parts.Length < 7 || (parts.Length - 5) % 2 != 0) { throw ExceptionUtil.UnexpectedError("RemoteWebConfigurationHost::InitForConfiguration"); } // convert empty strings to nulls for (int i = 0; i < parts.Length; i++) { if (parts[i].Length == 0) { parts[i] = null; } } // get config paths string appPath = parts[0]; string appSiteName = parts[1]; string appSiteID = parts[2]; configPath = parts[3]; locationConfigPath = parts[4]; _ConfigPath = configPath; // Create a WebConfigurationFileMap to be used when we later initialize our delegating WebConfigurationHost WebConfigurationFileMap configFileMap = new WebConfigurationFileMap(); VirtualPath appPathVirtualPath = VirtualPath.CreateAbsoluteAllowNull(appPath); configFileMap.Site = appSiteID; // populate the configpath->physical path mapping for (int i = 5; i < parts.Length; i += 2) { string configPathTemp = parts[i]; string physicalFilePath = parts[i + 1]; _PathMap.Add(configPathTemp, physicalFilePath); // Update the WebConfigurationFileMap if (WebConfigurationHost.IsMachineConfigPath(configPathTemp)) { configFileMap.MachineConfigFilename = physicalFilePath; } else { string vPathString; bool isRootApp; if (WebConfigurationHost.IsRootWebConfigPath(configPathTemp)) { vPathString = null; isRootApp = false; } else { VirtualPath vPath; string dummy; WebConfigurationHost.GetSiteIDAndVPathFromConfigPath(configPathTemp, out dummy, out vPath); vPathString = VirtualPath.GetVirtualPathString(vPath); isRootApp = (vPath == appPathVirtualPath); } configFileMap.VirtualDirectories.Add(vPathString, new VirtualDirectoryMapping(Path.GetDirectoryName(physicalFilePath), isRootApp)); } } #else // !FEATURE_PAL: set dummy config path string appPath = null; _ConfigPath = configPath; #endif // !FEATURE_PAL // Delegate to a WebConfigurationHost for unhandled methods. WebConfigurationHost webConfigurationHost = new WebConfigurationHost(); webConfigurationHost.Init(root, true, new UserMapPath(configFileMap, /*pathsAreLocal*/ false), null, appPath, appSiteName, appSiteID); Host = webConfigurationHost; }
public override void InitForConfiguration(ref string locationSubPath, out string configPath, out string locationConfigPath, IInternalConfigRoot root, params object[] hostInitConfigurationParams) { string str6; WebLevel level = (WebLevel)hostInitConfigurationParams[0]; string str = (string)hostInitConfigurationParams[2]; string site = (string)hostInitConfigurationParams[3]; if (locationSubPath == null) { locationSubPath = (string)hostInitConfigurationParams[4]; } string str3 = (string)hostInitConfigurationParams[5]; string fullUserName = (string)hostInitConfigurationParams[6]; string password = (string)hostInitConfigurationParams[7]; IntPtr userToken = (IntPtr)hostInitConfigurationParams[8]; configPath = null; locationConfigPath = null; this._Server = str3; this._Username = GetUserNameFromFullName(fullUserName); this._Domain = GetDomainFromFullName(fullUserName); this._Password = password; this._Identity = (userToken == IntPtr.Zero) ? null : new WindowsIdentity(userToken); this._PathMap = new Hashtable(StringComparer.OrdinalIgnoreCase); try { WindowsImpersonationContext context = (this._Identity != null) ? this._Identity.Impersonate() : null; try { IRemoteWebConfigurationHostServer o = CreateRemoteObject(str3, this._Username, this._Domain, password); try { str6 = o.GetFilePaths((int)level, str, site, locationSubPath); } finally { while (Marshal.ReleaseComObject(o) > 0) { } } } finally { if (context != null) { context.Undo(); } } } catch { throw; } if (str6 == null) { throw System.Web.Util.ExceptionUtil.UnexpectedError("RemoteWebConfigurationHost::InitForConfiguration"); } string[] strArray = str6.Split(RemoteWebConfigurationHostServer.FilePathsSeparatorParams); if ((strArray.Length < 7) || (((strArray.Length - 5) % 2) != 0)) { throw System.Web.Util.ExceptionUtil.UnexpectedError("RemoteWebConfigurationHost::InitForConfiguration"); } for (int i = 0; i < strArray.Length; i++) { if (strArray[i].Length == 0) { strArray[i] = null; } } string virtualPath = strArray[0]; string str8 = strArray[1]; string str9 = strArray[2]; configPath = strArray[3]; locationConfigPath = strArray[4]; this._ConfigPath = configPath; WebConfigurationFileMap fileMap = new WebConfigurationFileMap(); VirtualPath path = VirtualPath.CreateAbsoluteAllowNull(virtualPath); fileMap.Site = str9; for (int j = 5; j < strArray.Length; j += 2) { string key = strArray[j]; string str11 = strArray[j + 1]; this._PathMap.Add(key, str11); if (WebConfigurationHost.IsMachineConfigPath(key)) { fileMap.MachineConfigFilename = str11; } else { string virtualPathString; bool flag; if (WebConfigurationHost.IsRootWebConfigPath(key)) { virtualPathString = null; flag = false; } else { VirtualPath path2; string str13; WebConfigurationHost.GetSiteIDAndVPathFromConfigPath(key, out str13, out path2); virtualPathString = VirtualPath.GetVirtualPathString(path2); flag = path2 == path; } fileMap.VirtualDirectories.Add(virtualPathString, new VirtualDirectoryMapping(Path.GetDirectoryName(str11), flag)); } } WebConfigurationHost host = new WebConfigurationHost(); object[] hostInitParams = new object[6]; hostInitParams[0] = true; hostInitParams[1] = new UserMapPath(fileMap, false); hostInitParams[3] = virtualPath; hostInitParams[4] = str8; hostInitParams[5] = str9; host.Init(root, hostInitParams); base.Host = host; }