public FileHashChecker(ServerSettings serverSettings) { if (!serverSettings.IsModsWhitelisted) { return; } setupApproveWorldType(serverSettings); var result = new Dictionary <FolderType, CheckedDirAndFile>(); var folderTree = FoldersTree.GenerateTree(serverSettings.ModsDirectory); result.Add(FolderType.ModsFolder, new CheckedDirAndFile() { ServerDirectory = serverSettings.ModsDirectory, FolderTree = folderTree, HashFiles = getFiles(serverSettings.ModsDirectory, serverSettings.IgnoredLocalModFiles), IgrnoredFiles = serverSettings.IgnoredLocalModFiles, }); folderTree = new FoldersTree(); result.Add(FolderType.ModsConfigPath, new CheckedDirAndFile() { ServerDirectory = serverSettings.ModsConfigsDirectoryPath, FolderTree = folderTree, HashFiles = getFiles(serverSettings.ModsConfigsDirectoryPath, serverSettings.IgnoredLocalConfigFiles), IgrnoredFiles = serverSettings.IgnoredLocalConfigFiles, }); CheckedDirAndFiles = result; }
private void createFilesDictionary() { if (!ServerSettings.IsModsWhitelisted) { return; } // 1. Создаем словарь со всеми файлами Loger.Log($"Calc hash {ServerSettings.ModsDirectory}"); var modFiles = FileChecker.GenerateHashFiles(ServerSettings.ModsDirectory, Directory.GetDirectories(ServerSettings.ModsDirectory)); Loger.Log($"Calc hash {ServerSettings.SteamWorkShopModsDir}"); ///!!!!!!!!!!!!!!!! STEAM FOLDER CHECK SWITCH HERE !!!!!!!!!!!!!!! // 1. Если будем использовать steamworkshop диреторию, эти две строчки ниже закомментировать // 2. remove JsobIgnrore atribbute in ServerSettings ServerSettings.SteamWorkShopModsDir = Environment.CurrentDirectory; ///!!!!!!!!!!!!!!!! STEAM FOLDER CHECK SWITCH HERE !!!!!!!!!!!!!!! var steamFiles = FileChecker.GenerateHashFiles(ServerSettings.SteamWorkShopModsDir, new string[0]); ModFilesDict = modFiles.ToDictionary(f => f.FileName); SteamFilesDict = steamFiles.ToDictionary(f => f.FileName); // 2. Создаем файлы со списком разрешенных папок, которые отправим клиенту var modsFolders = new ModelFileInfo() // 0 { FileName = "ApprovedMods.txt", Hash = FileChecker.CreateListFolder(ServerSettings.ModsDirectory) }; var steamFolders = new ModelFileInfo() // 1 { FileName = "ApprovedSteamWorkShop.txt", Hash = FileChecker.CreateListFolder(ServerSettings.SteamWorkShopModsDir) }; var modsConfigFileName = Path.Combine(ServerSettings.WorkingDirectory, "ModsConfig.xml"); var modsConfig = new ModelFileInfo() // 2 { FileName = "ModsConfig.xml", Hash = Encoding.UTF8.GetBytes(File.ReadAllText(modsConfigFileName)) }; // index: 0 - list Folders in Mods dir, 1 -list Folders in Steam dir , 2 - ModsConfig.xml ServerSettings.AppovedFolderAndConfig = new ModelModsFiles() { Files = new List <ModelFileInfo>() { modsFolders, steamFolders, modsConfig, } }; ServerSettings.ModsDirConfig = new ModelModsFiles() { IsSteam = false, Files = new List <ModelFileInfo>() { modsFolders }, FoldersTree = FoldersTree.GenerateTree(ServerSettings.ModsDirectory), }; ServerSettings.SteamDirConfig = new ModelModsFiles() { IsSteam = true, Files = new List <ModelFileInfo>() { steamFolders }, FoldersTree = FoldersTree.GenerateTree(ServerSettings.SteamWorkShopModsDir), }; }