/// <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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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();
        }
Example #6
0
        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();
        }
Example #7
0
        /// <summary>
        /// Переместить файл в карантин
        /// </summary>
        /// <param name="id"></param>
        private static void ToQuarantine(int id)
        {
            var virusInfo = FoundVirusesManager.getInfo(id);

            Quarantine.Quarantine.MoveVirusToQuarantine(id);
        }