/// <summary> /// Read CaseMap from WordInfo files /// </summary> /// <returns></returns> public static CaseMap ReadAndBuildCaseMap() { LoadedLanguage language = LanguageDatabase.activeLanguage; CaseMap caseMap = new CaseMap(); foreach (Tuple <VirtualDirectory, ModContentPack, string> localDirectory in language.AllDirectories) { VirtualDirectory wordInfoDir = localDirectory.Item1.GetDirectory(WordInfoDirName); if (LanguageWorkerUtil.TryLoadLinesFromFile(wordInfoDir.GetFile(CaseFileName), localDirectory, language, out IEnumerable <string> casedLines)) { foreach (string casedline in casedLines) { if (LanguageWorkerUtil.TryGetSemicolonSeparatedValues(casedline, out string[] casedForms))
internal static Vdir ResolveFullVdir(Site site, string path) { VirtualDirectory vdir = null; var app = ResolveApplication(site, path); if (app != null) { vdir = ResolveVdir(site, path); } return(vdir == null ? null : new Vdir(site, app, vdir)); }
private static void TraverseDirectory( VirtualDirectory directory, ICollection <string> filePaths) { foreach (var childDirectory in directory .Directories .Cast <VirtualDirectory>()) { TraverseDirectory(childDirectory, filePaths); } IncludeFiles(directory, filePaths); }
public Uri GetFullUrl(string baseUrl) { baseUrl = Uri.EscapeUriString(baseUrl); if (baseUrl.StartsWith("/")) { baseUrl = baseUrl.Substring(1); } var url = VirtualDirectory.EndsWith("/") ? VirtualDirectory + baseUrl : VirtualDirectory + "/" + baseUrl; return(new Uri(url, UriKind.RelativeOrAbsolute)); }
private string GetSetupFile(VirtualDirectory scriptDirectory) { string environmentSetupScript = environmentService.Platform == OSPlatform.Linux ? $"{Constants.EnvironmentSetupScriptFile}.{Constants.ScriptFileExtensionLinux}" : $"{Constants.EnvironmentSetupScriptFile}.{Constants.ScriptFileExtensionWin}"; if (scriptDirectory.CheckDirectlyFileExists(environmentSetupScript)) { //return environmentSetupScript; return(Path.Combine(scriptDirectory.FullName, environmentSetupScript)); } return(null); }
internal static ReadOnlyCollection <string> GetAvailableThemes(VirtualPathProvider vpp, string themeDirectory) { VirtualDirectory directory = vpp.GetDirectory(themeDirectory); var themes = new List <string>(); // Go through every file in the directory foreach (VirtualDirectory dir in directory.Directories) { themes.Add(dir.Name); } return(themes.AsReadOnly()); }
private ReadOnlyCollection <string> GetAvailableThemes(string themesRoot) { VirtualDirectory directory = _vpp.GetDirectory(themesRoot); var themes = new List <string>(); // Go through every file in the directory foreach (VirtualDirectory dir in directory.Directories) { themes.Add(dir.Name); } return(themes.AsReadOnly()); }
//更新一个虚拟目录 public void Update(VirtualDirectory dir) { //判断需要更改的虚拟目录是否存在 if (_virdirs.Contains(dir.Name)) { DirectoryEntry de = rootfolder.Children.Find(dir.Name, "IIsWebVirtualDir"); UpdateDirInfo(de, dir); } else { throw new Exception("This virtual directory is not exists."); } }
private static string GetApplicationPath(VirtualPathProvider vpp) { if (vpp != null && vpp.DirectoryExists("~")) { VirtualDirectory directory = vpp.GetDirectory("~"); if (directory != null) { return(directory.VirtualPath); } } return(null); }
public override Entity Resolve(Entity owner, string key, bool fallback = false) { switch (key) { case EntityKeys.BuildTypeKey: string buildType = GetBuildType(owner); return(owner.Create(key, buildType)); case EntityKeys.InternalBuildSystemDirectoryKey: VirtualDirectory directory = GetBuildSystemDirectory(owner, false); return(owner.Create(key, directory)); case EntityKeys.InternalBuildSystemKey: VirtualDirectory buildSystemDirectory = GetBuildSystemDirectory(owner); JArray codeModel = GetCodeModel(owner, buildSystemDirectory); return(owner.Create(key, codeModel, buildSystemDirectory)); case EntityKeys.InternalExternalLibrariesKey: IEnumerable <string> externalLibraries = FindExternalLibrariesInCodeModel(owner.Value <JArray>(), owner.Root.Name, owner.Value <VirtualDirectory>()); return(owner.Create(key, externalLibraries.Select(l => owner.Create(key, l)))); case EntityKeys.InternalInstallationPathsKey: IEnumerable <string> installationPaths = FindInstallationPaths(owner.Value <JArray>(), owner.Root.Name); return(owner.Create(key, installationPaths.Select(p => owner.Create(key, p)))); default: VirtualFile cmakeFile = GetCMakeFile(owner); using (Stream fileStream = cmakeFile.OpenRead()) using (StreamReader reader = new StreamReader(fileStream)) { while (!reader.EndOfStream) { string line = reader.ReadLine(); if (string.IsNullOrEmpty(line)) { continue; } Match projectNameMatch = projectNameFinder.Match(line); if (projectNameMatch.Success) { return(owner.Create(key, projectNameMatch.Groups["name"].Value)); } } } return(owner.Create(key, Path.GetFileName(owner.Path))); } }
public IDictionary <string, SkinTemplate> GetSkinTemplates(bool mobileOnly) { IDictionary <string, SkinTemplate> allTemplates = mobileOnly ? _mobileTemplates : _templates; if (allTemplates == null) { IEnumerable <SkinTemplate> allTemplateConfigs; try { // Full trust can use VirtualPathProvider VirtualDirectory skinsDirectory = VirtualPathProvider.GetDirectory(RootSkinsVirtualPath); allTemplateConfigs = from dir in skinsDirectory.Directories.OfType <VirtualDirectory>() where !dir.Name.StartsWith("_") && !dir.Name.StartsWith(".") let templates = GetSkinTemplatesFromDir(dir) from template in templates select template; allTemplates = GetSkinTemplateFromConfigs(allTemplateConfigs, mobileOnly); } catch (SecurityException) { // Partial trust has to use the filesystem directly var skinsDir = new DirectoryInfo (AppDomain.CurrentDomain.BaseDirectory + Path.DirectorySeparatorChar + "skins" ); allTemplateConfigs = from dir in skinsDir.GetDirectories() where !dir.Name.StartsWith("_") && !dir.Name.StartsWith(".") let templates = GetSkinTemplatesFromDir(dir) from template in templates select template; allTemplates = GetSkinTemplateFromConfigs(allTemplateConfigs, mobileOnly); } if (!mobileOnly) { _templates = allTemplates; } else { _mobileTemplates = allTemplates; } } return(allTemplates); }
void AddVirtualDir(VirtualDirectory vdir, BuildProviderCollection bpcoll, Dictionary <string, bool> cache) { if (vdir == null) { return; } BuildProvider bp; IDictionary <string, bool> deps; var dirs = new List <string> (); string fileVirtualPath; foreach (VirtualFile file in vdir.Files) { fileVirtualPath = file.VirtualPath; if (BuildManager.IgnoreVirtualPath(fileVirtualPath)) { continue; } bp = GetBuildProvider(fileVirtualPath, bpcoll); if (bp == null) { continue; } if (!AddBuildProvider(bp)) { continue; } deps = bp.ExtractDependencies(); if (deps == null) { continue; } string depDir, s; dirs.Clear(); foreach (var dep in deps) { s = dep.Key; depDir = VirtualPathUtility.GetDirectory(s); // dependencies are assumed to contain absolute paths if (cache.ContainsKey(depDir)) { continue; } cache.Add(depDir, true); AddVirtualDir(GetVirtualDirectory(s), bpcoll, cache); } } }
LocFile getlocfile(VirtualDirectory locdb, string name) { PackEntry fileEntry = locdb.GetEntry(name); PackedFile encodedFile = null; if (fileEntry == null) { throw new KeyNotFoundException(name + " not found in localisation database"); } encodedFile = (PackedFile)fileEntry; LocFile decodedFile = LocCodec.Instance.Decode(encodedFile.Data); return(decodedFile); }
/// <summary> /// Get virtual directory instance. /// </summary> /// <param name="virtualDir"></param> /// <returns></returns> public override VirtualDirectory GetDirectory(string virtualDir) { VirtualDirectory directory = null; if (this.IsPathVirtual(virtualDir)) { return(new WebSiteDirectory(virtualDir, this)); } else { directory = base.Previous.GetDirectory(virtualDir); } return(directory); }
private void _createButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; #if LEADTOOLS_V20_OR_LATER string dotnetRuntimeVersion = "v4.0"; #else string dotnetRuntimeVersion = "v2.0"; #endif // #if LEADTOOLS_V20_OR_LATER try { // First, delete the app pool and virtual directory DeleteHost(Text); // Now re-create it FolderACL("Everyone", Globals.VirtualDirPath); // Create ApplicationPool ApplicationPool.CreateApplicationPool( Globals.Machine, Globals.UserName, Globals.Password, Globals.AppPoolName, false, dotnetRuntimeVersion); // Create the virtual directory VirtualDirectory.CreateVirtualDirectory( Globals.Machine, Globals.UserName, Globals.Password, Globals.VirtualDirName, Globals.VirtualDirPath, Globals.AppPoolName); System.Threading.Thread.Sleep(1000); Application.DoEvents(); _testButton.PerformClick(); } catch (Exception ex) { ShowErrorMessage(ex); } finally { this.Cursor = Cursors.Default; } }
protected void OnShowSavedPlaylists(string _directory) { VirtualDirectory _virtualDirectory = new VirtualDirectory(); _virtualDirectory.AddExtension(".m3u"); _virtualDirectory.AddExtension(".pls"); _virtualDirectory.AddExtension(".b4s"); _virtualDirectory.AddExtension(".wpl"); List <GUIListItem> itemlist = _virtualDirectory.GetDirectoryExt(_directory); if (_directory == m_strPlayListPath) { itemlist.RemoveAt(0); } GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU); if (dlg == null) { return; } dlg.Reset(); dlg.SetHeading(983); // Saved Playlists foreach (GUIListItem item in itemlist) { Util.Utils.SetDefaultIcons(item); dlg.Add(item); } dlg.DoModal(GetID); if (dlg.SelectedLabel == -1) { return; } GUIListItem selectItem = itemlist[dlg.SelectedLabel]; if (selectItem.IsFolder) { OnShowSavedPlaylists(selectItem.Path); return; } GUIWaitCursor.Show(); LoadPlayList(selectItem.Path); GUIWaitCursor.Hide(); }
private void LogModFilesInDirectory(VirtualDirectory directory) { foreach (var entry in directory) { if (entry.EntryType == VirtualFileSystemEntryType.File) { Log.Builder.Trace($"Adding mod file: {entry.FullName}"); } else { LogModFilesInDirectory((VirtualDirectory)entry); } } }
private static IEnumerable <Topic> GetTopics(VirtualDirectory topicDir) { var directoryMetadata = GetDirectoryMetadata(topicDir.VirtualPath); return(from directory in topicDir.Directories.Cast <VirtualDirectory>() let title = GetTitle(directory) let metadata = GetMetadata(title, directoryMetadata) orderby metadata.Order, title select new Topic { Title = title, SubTopics = GetSubTopics(directory) }); }
// Check if item is pin protected and if it exists within unlocked shares // Returns true if item is valid or if item is not within protected shares private bool CheckItem(GUIListItem item) { string directory = Path.GetDirectoryName(item.Path); // item path VirtualDirectory vDir = new VirtualDirectory(); // Get protected share paths for videos vDir.LoadSettings("movies"); // Check if item belongs to protected shares int pincode = 0; bool folderPinProtected = vDir.IsProtectedShare(directory, out pincode); bool success = false; // User unlocked share/shares with PIN and item is within protected shares if (folderPinProtected && ageConfirmed) { // Iterate unlocked shares against current item path foreach (string share in currentProtectedShare) { if (!directory.ToUpperInvariant().Contains(share.ToUpperInvariant())) { continue; } else // item belongs to unlocked shares and will be displayed { success = true; break; } } // current item is not within unlocked shares, // don't show item and go to the next item if (!success) { return(false); } else // current item is within unlocked shares, show it { return(true); } } // Nothing unlocked and item belongs to protected shares, // don't show item and go to the next item else if (folderPinProtected && !ageConfirmed) { return(false); } // Item is not inside protected shares, show it return(true); }
public VirtualDirectory Merge(IEnumerable <Mod> mods) { Log.Merger.Info("Merging mods from bottom to top"); var fileDirectory = new VirtualDirectory(); foreach (var mod in mods.Reverse()) { var dataDirectory = VirtualDirectory.FromHostDirectory(mod.DataDirectory); fileDirectory.Merge(dataDirectory, Operation.AddOnly); } return(fileDirectory); }
public bool LoadGroupOfTypes(string virtualDirectory, SearchOption searchOption, out List <EntityType> loadedTypes) { LongOperationNotifier.Notify("从资源目录中搜索type文件: {0}", virtualDirectory); loadedTypes = null; string[] typeFiles = new string[0]; try { typeFiles = VirtualDirectory.GetFiles(virtualDirectory, "*.type", searchOption); } catch { Log.Error("EntityTypes: Getting list of type files failed."); return(false); } #if DEBUG_ENTITY string _targetDirectory = VirtualFileSystem.GetRealPathByVirtual(virtualDirectory); Log.Info(">> 搜索资源目录: {0}, 找到{1}个type文件", _targetDirectory, typeFiles.Length); #endif loadedTypes = new List <EntityType>(typeFiles.Length); for (int i = 0; i < typeFiles.Length; i++) { string typeFile = typeFiles[i]; EntityType entityType = loadEntityTypeFromFile(typeFile); if (entityType == null) { Log.Error("EntityTypes: Entity type loading failed \"{0}\".", typeFile); LongOperationNotifier.Notify("加载type文件失败: {0}", typeFile); return(false); } loadedTypes.Add(entityType); LongOperationNotifier.Notify("加载type文件 ({0}/{1}): {2}", i + 1, typeFiles.Length, typeFile); #if DEBUG_ENTITY Log.Info(">> #{0:000} EntityType: {1}, 文件: {2}", i + 1, entityType, typeFile); #endif } foreach (EntityType type in loadedTypes) { bool loadFailure = !loadTypeFromLoadedTextBlock(type); if (loadFailure) { return(false); } } return(true); }
public override VirtualDirectory GetDirectory(string virtualDir) { VirtualDirectory prev = base.GetDirectory(virtualDir); AssemblyResources firstMatch = GetAssemblyMatches(virtualDir) .FirstOrDefault(r => r.DirectoryResourceExists(virtualDir)); if (firstMatch != null) { return(firstMatch.CreateVirtualDirectory(virtualDir, prev)); } return(prev); }
private (VirtualDirectory directory, string fileName) FindDirectory(string path, string basePath = "") { if (path.StartsWith(CurrentDirectory.FullName)) { if (path.Length <= CurrentDirectory.FullName.Length + 1) { return(CurrentDirectory, string.Empty); } path = path.Substring(CurrentDirectory.FullName.Length + 1); } VirtualDirectory rootDirectory = GetDirectory(basePath, ""); if (Path.IsPathRooted(path)) { string root = Path.GetPathRoot(path); rootDirectory = roots.ContainsKey(root) ? roots[root] : null; path = Path.GetRelativePath(root, path); } else { VirtualDirectory foundRoot = roots.FirstOrDefault(r => path.StartsWith(r.Key)).Value; if (foundRoot != null) { rootDirectory = foundRoot; path = Path.GetRelativePath(rootDirectory.FullName, path); } } if (rootDirectory == null) { return(null, string.Empty); } string[] parts = path.Split(new[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries); if (parts.Any() && parts[0] == ".") { parts = parts.Skip(1).ToArray(); } VirtualDirectory directory = parts.Take(parts.Length - 1) .Aggregate(rootDirectory, (current, part) => current != null ? (VirtualDirectory)directoryContents[current] .FirstOrDefault(e => e.Name == part) : null); string fileName = parts.LastOrDefault(); return(directory, fileName); }
private void Initialize(VirtualDirectory virtualDirectory, string siteName, string webApplicationName) { this.Key = GetVirtualDirectoryVariableName(siteName, virtualDirectory.Path); this.IsRootOfAnApplication = (virtualDirectory.Path == "/"); AddAttribute("Name", virtualDirectory.Path); AddAttribute("Ensure", "Present"); AddAttribute("Website", siteName); AddAttribute("PhysicalPath", virtualDirectory.PhysicalPath); AddAttribute("WebApplication", FormatWebApplicationName(webApplicationName)); AddAttribute("DependsOn", "[cWebSite]" + SiteDesiredState.GetSiteKey(siteName)); }
protected void btnSave_Click(object sender, EventArgs e) { pageContents = new ContentPage(SiteID, ContentPageType.PageType.ContentEntry); DateTime dtSite = CMSConfigHelper.CalcNearestFiveMinTime(SiteData.CurrentSite.Now); int iOrder = pageHelper.GetMaxNavOrder(SiteID) + 1; Guid?parentContentID = ParentPagePicker.SelectedPage; pageContents.Parent_ContentID = parentContentID; pageContents.TitleBar = txtTitle.Text; pageContents.NavMenuText = txtNav.Text; pageContents.PageHead = txtHead.Text; pageContents.FileName = txtFileName.Text; pageContents.MetaDescription = txtDescription.Text; pageContents.MetaKeyword = txtKey.Text; pageContents.Heartbeat_UserId = SecurityData.CurrentUserGuid; pageContents.EditHeartbeat = dtSite.AddMinutes(5); pageContents.EditUserId = SecurityData.CurrentUserGuid; pageContents.IsLatestVersion = true; pageContents.EditDate = SiteData.CurrentSite.Now; pageContents.NavOrder = iOrder; pageContents.PageActive = false; pageContents.ShowInSiteMap = true; pageContents.ShowInSiteNav = true; pageContents.ContentType = ContentPageType.PageType.ContentEntry; pageContents.GoLiveDate = dtSite; pageContents.RetireDate = dtSite.AddYears(200); pageContents.SavePageEdit(); pnlAdd.Visible = false; pnlSaved.Visible = true; litPageName.Text = pageContents.FileName; lnkNew.NavigateUrl = pageContents.FileName; if (pageContents.FileName.ToLowerInvariant().EndsWith(SiteData.DefaultDirectoryFilename)) { VirtualDirectory.RegisterRoutes(true); } Master.ShowSave(); }
/// <summary> /// Removes the virtual directory. /// </summary> /// <param name="path">The path.</param> public void RemoveVirtualDirectory(string path) { if (string.IsNullOrEmpty(path)) { WriteLine("No virtual directory path specified. Skipping removal of application.", Severity.Warning); return; } if (_serverManager == null) { WriteLine($"Failed to remove virtual directory '{path}'. No connection to IIS.", Severity.Error); return; } Application defaultApplication = DefaultApplication; if (defaultApplication == null) { WriteLine($"Failed to remove virtual directory '{path}'. No IIS root application found. Please ensure IIS is configured and running on the local machine.", Severity.Error); return; } bool modified = false; ///// // Search for the virtual directory by name. ///// VirtualDirectory baseVirtualDirectory = defaultApplication.VirtualDirectories.FirstOrDefault(vDir => string.Equals(vDir.Path, $"{path}", StringComparison.InvariantCultureIgnoreCase)); if (baseVirtualDirectory == null) { WriteLine($"Virtual directory '{path}' not found."); } else { WriteLine($"Found virtual directory '{path}'. Removing..."); defaultApplication.VirtualDirectories.Remove(baseVirtualDirectory); modified = true; } if (modified) { _serverManager.CommitChanges( ); WriteLine($"Virtual directory '{path}' successfully removed."); } }
/// <summary> /// Creates virtual directory under site with given name and sets authorization rules. /// </summary> /// <param name="siteName">Site name.</param> /// <param name="account">Account information.</param> public void CreateFtpAccount(string siteName, FtpAccount account) { Site site = this.GetIisSite(siteName); if (site != null) { Application application = site.Applications["/"]; if (application != null) { VirtualDirectory accountDirectory = application.VirtualDirectories[account.Name]; if (accountDirectory != null) { application.VirtualDirectories.Remove(accountDirectory); } VirtualDirectory createdVirtualDirectory = application.VirtualDirectories.Add(String.Format("/{0}", account.Name), account.Folder); AuthorizationRuleCollection authRulesCollection = this.GetAuthorizationRuleCollection(String.Format("{0}/{1}", siteName, account.Name)); List <AuthorizationRule> rulesToRemove = new List <AuthorizationRule>(); foreach (AuthorizationRule rule in authRulesCollection) { if (rule.AccessType == AuthorizationRuleAccessType.Allow && (rule.Users == "?" || rule.Users == "*")) { rulesToRemove.Add(rule); } } foreach (AuthorizationRule rule in rulesToRemove) { authRulesCollection.Remove(rule); } PermissionsFlags permissions = 0; if (account.CanRead) { permissions |= PermissionsFlags.Read; } if (account.CanWrite) { permissions |= PermissionsFlags.Write; } if (account.CanRead || account.CanWrite) { authRulesCollection.Add(AuthorizationRuleAccessType.Allow, account.Name, String.Empty, permissions); } } } this.CommitChanges(); }
public PackBrowseDialog() { InitializeComponent(); AcceptButton = okButton; CancelButton = cancelButton; packFileTree.Model = _treeModel; /* * Add/Remove to/from selected file list upon double click. */ packFileTree.NodeMouseClick += delegate(object sender, TreeNodeAdvMouseEventArgs e) { var node = e.Node.Tag as Node; PackedFile selected = node.Tag as PackedFile; if (selected != null) { if (selectedFiles.Contains(selected)) { selectedFiles.Remove(selected); statusLabel.Text = string.Format("{0} removed", selected.FullPath); } else { selectedFiles.Add(selected); statusLabel.Text = string.Format("{0} added", selected.FullPath); } } }; /* * Add all files below a directory upon right click. */ packFileTree.NodeMouseDoubleClick += delegate(object sender, TreeNodeAdvMouseEventArgs e) { var node = e.Node.Tag as Node; VirtualDirectory directory = node.Tag as VirtualDirectory; if (e.Button == MouseButtons.Right && directory != null) { directory.AllFiles.ForEach(f => { if (!selectedFiles.Contains(f)) { selectedFiles.Add(f); statusLabel.Text = string.Format("{0} added", f.FullPath); } }); } }; }
public static void HandleDownloadDirectory(DoDownloadDirectory command, Client client) { var vDir = VirtualDirectory.Create(command.RemotePath, command.Items, command.ItemOptions); new Thread(() => { _limitThreads.WaitOne(); try { FileSplit srcFile = new FileSplit(vDir); if (srcFile.MaxBlocks < 0) { throw new Exception(srcFile.LastError); } for (int currentBlock = command.StartBlock; currentBlock < srcFile.MaxBlocks; currentBlock++) { if (!client.Connected || _canceledDownloads.ContainsKey(command.ID)) { break; } byte[] block; if (!srcFile.ReadBlock(currentBlock, out block)) { throw new Exception(srcFile.LastError); } var startTime = DateTime.MinValue; if (currentBlock == command.StartBlock) { startTime = DateTime.Now; } new Packets.ClientPackets.DoDownloadFileResponse(command.ID, Path.GetFileName(command.RemotePath), block, srcFile.MaxBlocks, currentBlock, srcFile.LastError, ItemType.Directory, startTime, command.RemotePath).Execute(client); } } catch (Exception ex) { new Packets.ClientPackets.DoDownloadFileResponse(command.ID, Path.GetFileName(command.RemotePath), new byte[0], -1, -1, ex.Message, ItemType.Directory, DateTime.MinValue, command.RemotePath) .Execute(client); } _limitThreads.Release(); }).Start(); }
protected override Task ExecuteInternalAsync() { VirtualDirectory node = parameters.Count >= 1 ? FileSystemSubsystems.Directory(FileSystemSubsystems.ResolveRelativePath(env) (parameters [0])) : env.HomeDirectory; Log.Debug("change directory to: ", node); node.Validate(throwExceptions: true); env.WorkingDirectory = node; return(TaskHelper.Completed); }
public SearchWindow(VirtualDirectory parentNode) { DataContext = this; _parentNode = parentNode; InitializeComponent(); }
/// <summary> /// saves last active module. /// </summary> private void SaveLastActiveModule() { // persist the currently selected module to XML for later use. Log.Debug("Main: SaveLastActiveModule - enabled {0}", _showLastActiveModule); bool currentmodulefullscreen = Currentmodulefullscreen(); string currentmodulefullscreenstate = GUIPropertyManager.GetProperty("#currentmodulefullscreenstate"); string currentmoduleid = GUIPropertyManager.GetProperty("#currentmoduleid"); if (_showLastActiveModule && !Utils.IsGUISettingsWindow(GUIWindowManager.GetPreviousActiveWindow())) { using (Settings xmlreader = new MPSettings()) { if (currentmodulefullscreen) { currentmoduleid = Convert.ToString(GUIWindowManager.GetPreviousActiveWindow()); } if (!currentmodulefullscreen && currentmodulefullscreenstate == "True") { currentmodulefullscreen = true; } if (currentmoduleid.Length == 0) { currentmoduleid = "0"; } string section; switch (GUIWindowManager.ActiveWindow) { case (int)GUIWindow.Window.WINDOW_PICTURES: section = "pictures"; break; case (int)GUIWindow.Window.WINDOW_MUSIC: section = "music"; break; case (int)GUIWindow.Window.WINDOW_VIDEOS: section = "movies"; break; default: section = ""; break; } bool rememberLastFolder = xmlreader.GetValueAsBool(section, "rememberlastfolder", false); string lastFolder = xmlreader.GetValueAsString(section, "lastfolder", ""); var virtualDir = new VirtualDirectory(); virtualDir.LoadSettings(section); int pincode; bool lastFolderPinProtected = virtualDir.IsProtectedShare(lastFolder, out pincode); if (rememberLastFolder && lastFolderPinProtected) { lastFolder = "root"; xmlreader.SetValue(section, "lastfolder", lastFolder); Log.Debug("Main: reverting to root folder, pin protected folder was open, SaveLastFolder {0}", lastFolder); } xmlreader.SetValue("general", "lastactivemodule", currentmoduleid); xmlreader.SetValueAsBool("general", "lastactivemodulefullscreen", currentmodulefullscreen); Log.Debug("Main: SaveLastActiveModule - module {0}", currentmoduleid); Log.Debug("Main: SaveLastActiveModule - fullscreen {0}", currentmodulefullscreen); } } }
//添加一个虚拟目录 public bool Create(VirtualDirectory newdir) { string strPath = "IIS://" + _server + "/W3SVC/" + _website + "/ROOT/" + newdir.Name; if (!_virdirs.Contains(newdir.Name) || _batchflag) { try { //加入到ROOT的Children集合中去 DirectoryEntry newVirDir = rootfolder.Children.Add(newdir.Name, "IIsWebVirtualDir"); newVirDir.Invoke("AppCreate", true); newVirDir.CommitChanges(); rootfolder.CommitChanges(); //然后更新数据 UpdateDirInfo(newVirDir, newdir); return true; } catch (Exception ee) { //throw new Exception(ee.ToString()); return false; } } else { return true; //throw new Exception("This virtual directory is already exist."); } }
//获取虚拟目录集合 private VirtualDirectories GetVirDirs(DirectoryEntries des) { VirtualDirectories tmpdirs = new VirtualDirectories(); foreach (DirectoryEntry de in des) { if (de.SchemaClassName == "IIsWebVirtualDir") { VirtualDirectory vd = new VirtualDirectory(); vd.Name = de.Name; vd.AccessRead = (bool)de.Properties["AccessRead"][0]; vd.AccessExecute = (bool)de.Properties["AccessExecute"][0]; vd.AccessWrite = (bool)de.Properties["AccessWrite"][0]; vd.AnonymousUserName = (string)de.Properties["AnonymousUserName"][0]; vd.AnonymousUserPass = (string)de.Properties["AnonymousUserName"][0]; vd.AuthBasic = (bool)de.Properties["AuthBasic"][0]; vd.AuthNTLM = (bool)de.Properties["AuthNTLM"][0]; vd.ContentIndexed = (bool)de.Properties["ContentIndexed"][0]; vd.EnableDefaultDoc = (bool)de.Properties["EnableDefaultDoc"][0]; vd.EnableDirBrowsing = (bool)de.Properties["EnableDirBrowsing"][0]; vd.AccessSSL = (bool)de.Properties["AccessSSL"][0]; vd.AccessScript = (bool)de.Properties["AccessScript"][0]; vd.Path = (string)de.Properties["Path"][0]; vd.flag = 0; vd.DefaultDoc = (string)de.Properties["DefaultDoc"][0]; tmpdirs.Add(vd.Name, vd); } } return tmpdirs; }
//更新一个虚拟目录 public void Update(VirtualDirectory dir) { //判断需要更改的虚拟目录是否存在 if (_virdirs.Contains(dir.Name)) { DirectoryEntry ode = rootfolder.Children.Find(dir.Name, "IIsWebVirtualDir"); UpdateDirInfo(ode, dir); } else { //throw new Exception("This virtual directory is not exists."); } }
private static void GetFirstFolder() { FirstFolderNum = 0; //检测文件存储目录 // 读取IIS 虚拟目录(第一级文件夹) var iisfirstvr = iiscontrol.GetVirDirs(); //取得数值最大的虚拟目录 var iisvrmax = GetMaxNumByIISVir(iisfirstvr); if (iisvrmax == null) { //如果没有则创建虚拟目录 从00 开始 VirtualDirectory newdir = new VirtualDirectory("00"); FirstFolder = "00"; //默认从D盘开始使用 newdir.Path = @"D:\00"; FirstFolderPath = newdir.Path; iiscontrol.Create(newdir); } else { //设置当前可用第一级目录名 FirstFolder = iisvrmax.Name; FirstFolderNum = Convert.ToInt32(FirstFolder, 16); FirstFolderPath = iisvrmax.Path; } }
//更新东东 private void UpdateDirInfo(DirectoryEntry de, VirtualDirectory vd) { de.Properties["AnonymousUserName"][0] = vd.AnonymousUserName; de.Properties["AnonymousUserPass"][0] = vd.AnonymousUserPass; de.Properties["AccessRead"][0] = vd.AccessRead; de.Properties["AccessExecute"][0] = vd.AccessExecute; de.Properties["AccessWrite"][0] = vd.AccessWrite; de.Properties["AuthBasic"][0] = vd.AuthBasic; de.Properties["AuthNTLM"][0] = vd.AuthNTLM; de.Properties["ContentIndexed"][0] = vd.ContentIndexed; de.Properties["EnableDefaultDoc"][0] = vd.EnableDefaultDoc; de.Properties["EnableDirBrowsing"][0] = vd.EnableDirBrowsing; de.Properties["AccessSSL"][0] = vd.AccessSSL; de.Properties["AccessScript"][0] = vd.AccessScript; de.Properties["DefaultDoc"][0] = vd.DefaultDoc; de.Properties["Path"][0] = vd.Path; de.CommitChanges(); }
/// <summary> /// saves last active module. /// </summary> private void SaveLastActiveModule() { // persist the currently selected module to XML for later use. Log.Debug("Main: SaveLastActiveModule - enabled {0}", showLastActiveModule); bool currentmodulefullscreen = Currentmodulefullscreen(); string currentmodulefullscreenstate = GUIPropertyManager.GetProperty("#currentmodulefullscreenstate"); string currentmoduleid = GUIPropertyManager.GetProperty("#currentmoduleid"); if (showLastActiveModule && !Utils.IsGUISettingsWindow(GUIWindowManager.GetPreviousActiveWindow())) { using (Settings xmlreader = new MPSettings()) { // if MP was closed/hibernated by the use of remote control, we have to retrieve the fullscreen state in an alternative manner. //if currentmoduleid is TV fullscreen, then set currentmoduleid to tvhome. /*switch GUIWindowManager.ActiveWindow { case (int) WINDOW_FULLSCREEN_VIDEO: currentmoduleid = Convert.ToString( (int) GUIWindow.Window.WINDOW_TV); break; case (int) WINDOW_FULLSCREEN_VIDEO: currentmoduleid = Convert.ToString( (int) GUIWindow.Window.WINDOW_TV); break; } */ if (currentmodulefullscreen) { currentmoduleid = Convert.ToString(GUIWindowManager.GetPreviousActiveWindow()); } if (!currentmodulefullscreen && currentmodulefullscreenstate == "True") { currentmodulefullscreen = true; } if (currentmoduleid.Length == 0) { currentmoduleid = "0"; } string section; switch (GUIWindowManager.ActiveWindow) { case (int)GUIWindow.Window.WINDOW_PICTURES: { section = "pictures"; break; } case (int)GUIWindow.Window.WINDOW_MUSIC: { section = "music"; break; } case (int)GUIWindow.Window.WINDOW_VIDEOS: { section = "movies"; break; } default: { section = ""; break; } } bool rememberLastFolder = xmlreader.GetValueAsBool(section, "rememberlastfolder", false); string lastFolder = xmlreader.GetValueAsString(section, "lastfolder", ""); VirtualDirectory VDir = new VirtualDirectory(); VDir.LoadSettings(section); int pincode = 0; bool lastFolderPinProtected = VDir.IsProtectedShare(lastFolder, out pincode); if (rememberLastFolder && lastFolderPinProtected) { lastFolder = "root"; xmlreader.SetValue(section, "lastfolder", lastFolder); Log.Debug("Main: reverting to root folder, pin protected folder was open, SaveLastFolder {0}", lastFolder); } xmlreader.SetValue("general", "lastactivemodule", currentmoduleid); xmlreader.SetValueAsBool("general", "lastactivemodulefullscreen", currentmodulefullscreen); Log.Debug("Main: SaveLastActiveModule - module {0}", currentmoduleid); Log.Debug("Main: SaveLastActiveModule - fullscreen {0}", currentmodulefullscreen); } } }
/// <summary> /// 立刻切换一个目录,设置虚拟目录到新的分区上磁盘 /// </summary> /// <returns></returns> public static void ChangeDisk() { //更换1级目录 var str = String.Format("{0:X2}", FirstFolderNum + 1); VirtualDirectory n = new VirtualDirectory(str); //获取当前分区 var fq = FirstFolderPath.Split(':')[0]; var list= DriveInfo.GetDrives(); string next = ""; foreach (var item in list) { if (item.DriveType!= DriveType.CDRom&&item.DriveType!= DriveType.Removable) { if (!System.Environment.SystemDirectory.Contains(item.Name)) { if (item.AvailableFreeSpace>MinFreeDiskSize&&!FirstFolderPath.Contains(item.Name)) { next = item.Name; break; } } } } if (string.IsNullOrEmpty(next)) { ErrMsg = "服务器无可用磁盘,空间不足,请联系管理员"; throw new Exception("服务器无可用磁盘,空间不足,请联系管理员"); } n.Path = next + str; DirectoryInfo f = new DirectoryInfo(n.Path); if (!f.Exists) { f.Create(); } iiscontrol.Create(n); FirstFolderNum++; FirstFolder = str; FirstFolderPath = n.Path; //创建2级 CurrentFileCount = 0; SecondFolder = "00"; SecondFolderNum = 0; CurrentPath = FirstFolderPath + @"\00"; DirectoryInfo f2 = new DirectoryInfo(CurrentPath); if (!f2.Exists) { f2.Create(); } }
/// <summary> /// 更换文件夹 /// </summary> public static void ChangeFolder() { //判断需要更换的是二级文件夹么 if (SecondFolderNum<Convert.ToInt32("FF",16)) { //创建新的目录 var str = String.Format("{0:X2}", SecondFolderNum+1); string np =FirstFolderPath+"\\"+str; DirectoryInfo f = new DirectoryInfo(np); if (!f.Exists) { f.Create(); } //更新字段 SecondFolderNum++; SecondFolder = str; CurrentPath =np; CurrentFileCount = 0; } else { //更换一级文件夹 //创建虚拟目录 var str = String.Format("{0:X2}", FirstFolderNum + 1); VirtualDirectory n=new VirtualDirectory(str); n.Path=FirstFolderPath.Split(':')[0]+":\\"+str; DirectoryInfo f = new DirectoryInfo(n.Path); if (!f.Exists) { f.Create(); } iiscontrol.Create(n); FirstFolderNum++; FirstFolder = str; FirstFolderPath = n.Path; //创建2级 CurrentFileCount = 0; SecondFolder = "00"; SecondFolderNum = 0; CurrentPath = FirstFolderPath + @"\00"; DirectoryInfo f2 = new DirectoryInfo(CurrentPath); if (!f2.Exists) { f2.Create(); } } }
private static void _newDirectory(VirtualDirectory parent) { var names = new HashSet<String>(parent.ContentNames); var counter = 1; const string baseName = "new-directory"; var name = baseName; while (names.Contains(name)) { name = string.Format("{0}-{1}", baseName, counter); counter++; } parent.CreateDirectory(name); }
private void _doPasteToDifferentDisk(VirtualNode source, VirtualDirectory target) { // check if source is a directory var vd = source as VirtualDirectory; if (vd != null) { // yes => create directory & recursively call this function for all child nodes var newVd = ((VirtualDirectory) target).CreateDirectory(source.Name); foreach (VirtualNode child in vd) { _doPasteToDifferentDisk(child, newVd); } } else { // no => copy file target.CreateFile(source.Name, ((VirtualFile) source).Open()); } }