/// <summary> /// Переместить вирус в карантин по его id /// </summary> static public void MoveVirusToQuarantine(int id) { var virusInfo = FoundVirusesManager.getInfo(id); if (virusInfo != null && virusInfo.inQuarantine == false) { var result = AddFileToStorage(virusInfo.file); if (result.is_success) { virusInfo.inQuarantine = true; virusInfo.fileInQuarantine = result.fileName; KernelConnectors.Logger.WriteLine("=== [Quarantine] ==="); KernelConnectors.Logger.WriteLine("ПЕРЕМЕЩЕНИЕ В КАРАНТИН УСПЕШНО", LoggerLib.LogLevel.OK); KernelConnectors.Logger.WriteLine(" Идентификатор задачи" + virusInfo.id); KernelConnectors.Logger.WriteLine(" Идентификатор вируса" + virusInfo.VirusId); KernelConnectors.Logger.WriteLine(" Файл " + virusInfo.file); KernelConnectors.Logger.WriteLine(" Путь к файлу в карантине " + virusInfo.fileInQuarantine); KernelConnectors.Logger.WriteLine("=== [Quarantine] ==="); } else { KernelConnectors.Logger.WriteLine("[Quarantine] Ошибка добавления файла в карантин"); } } }
static public bool DeleteFromStorage(int id) { var info = FoundVirusesManager.getInfo(id); if (VirusStorage.FileExists(info.fileInQuarantine)) { VirusStorage.DeleteFile(info.fileInQuarantine); return(true); } return(false); }
/// <summary> /// Восстановить файл /// </summary> /// <param name="id"></param> private static void Restore(int id) { var virusInfo = FoundVirusesManager.getInfo(id); ScanTasks.RestoredFile = virusInfo.file; KernelConnectors.Logger.WriteLine("[API.Restore] Восстановление файла " + virusInfo.file, LoggerLib.LogLevel.OK); KernelConnectors.Logger.WriteLine("[API.Restore] Удаление информации о вирусе из менеджера", LoggerLib.LogLevel.OK); FoundVirusesManager.Delete(id); KernelConnectors.Logger.WriteLine("[API.Restore] Вызов восстановления файла у менеджера карантина", LoggerLib.LogLevel.OK); Quarantine.Quarantine.Restore(virusInfo.fileInQuarantine, virusInfo.file); }
/// <summary> /// Удалить файл, где бы он не находился(в карантине/на диске) /// </summary> /// <param name="id"></param> private static void Delete(int id) { var virusInfo = FoundVirusesManager.getInfo(id); if (virusInfo.inQuarantine) { KernelConnectors.Logger.WriteLine($"[API] Удаление файла из карантина {virusInfo.fileInQuarantine}", LoggerLib.LogLevel.OK); Quarantine.Quarantine.DeleteFromStorage(id); } else { KernelConnectors.Logger.WriteLine($"[API] Удаление файла на жестком диске {virusInfo.file}", LoggerLib.LogLevel.OK); File.Delete(virusInfo.file); } KernelConnectors.Logger.WriteLine($"[API] Удаление из менеджера вирусов", LoggerLib.LogLevel.OK); FoundVirusesManager.Delete(id); }
/// <summary> /// Восстановить файл из карантина /// </summary> /// <param name="id"></param> static public void Restore(int id) { var virusInfo = FoundVirusesManager.getInfo(id); KernelConnectors.Logger.WriteLine("[Quarantine] Восстановление файла из " + virusInfo.fileInQuarantine + " в " + virusInfo.file); var CreatedFileStream = File.Create(virusInfo.file); var targetFileStream = VirusStorage.OpenFile(virusInfo.fileInQuarantine, FileMode.Open); byte[] buffer = new byte[2048]; while (targetFileStream.Read(buffer, 0, buffer.Length) > 0) { CreatedFileStream.Write(buffer, 0, buffer.Length); } CreatedFileStream.Close(); targetFileStream.Close(); }
private static void getVirusInfo(int id) { var virusInfo = FoundVirusesManager.getInfo(id); if (virusInfo == null) { return; } KernelConnectors.Api_Out_Sync.WaitOne(); { Out_writer.Write((byte)2); Out_writer.Write(virusInfo.id); Out_writer.Write(virusInfo.file); Out_writer.Write(virusInfo.VirusId); Out_writer.Write(virusInfo.inQuarantine); Out_writer.Write(virusInfo.fileInQuarantine is null ? " " : virusInfo.fileInQuarantine); Out_writer.Flush(); } KernelConnectors.Api_Out_Sync.ReleaseMutex(); }
/// <summary> /// Переместить файл в карантин /// </summary> /// <param name="id"></param> private static void ToQuarantine(int id) { var virusInfo = FoundVirusesManager.getInfo(id); Quarantine.Quarantine.MoveVirusToQuarantine(id); }