Exemple #1
0
        /// <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));
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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());
        }
Exemple #7
0
        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());
        }
Exemple #8
0
 //更新一个虚拟目录
 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.");
     }
 }
Exemple #9
0
        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)));
            }
        }
Exemple #11
0
        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);
                }
            }
        }
Exemple #13
0
                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);
        }
Exemple #15
0
        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);
         }
     }
 }
Exemple #18
0
        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)
            });
        }
Exemple #19
0
        // 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);
        }
Exemple #20
0
        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);
        }
Exemple #21
0
        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);
        }
Exemple #24
0
        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();
        }
Exemple #26
0
        /// <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.");
            }
        }
Exemple #27
0
        /// <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();
        }
Exemple #28
0
        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);
                        }
                    });
                }
            };
        }
Exemple #29
0
        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();
        }
Exemple #30
0
        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);
        }
Exemple #31
0
 public SearchWindow(VirtualDirectory parentNode)
 {
     DataContext = this;
     _parentNode = parentNode;
     InitializeComponent();
 }
Exemple #32
0
  /// <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);
      }
    }
  }
Exemple #33
0
 //添加一个虚拟目录
 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.");
     }
 }
Exemple #34
0
 //获取虚拟目录集合
 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;
 }
Exemple #35
0
 //更新一个虚拟目录
 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.");
     }
 }
Exemple #36
0
      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;
          }
      }
Exemple #37
0
 //更新东东
 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();
 }
Exemple #38
0
  /// <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);
      }
    }
  }
Exemple #39
0
      /// <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();
          }
      }
Exemple #40
0
      /// <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();
              }
            
          }
      }
Exemple #41
0
        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);
        }
Exemple #42
0
 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());
     }
 }