public JsonResult Start(AntiVirus av) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion #region Проверяем поля if (AntiVirus.IsRun(0)) { return(Json(new Text("Антивирус уже запущен"))); } if (string.IsNullOrWhiteSpace(av.path)) { return(Json(new Text("Укажите каталог для сканирования"))); } if (!System.IO.File.Exists(av.php)) { return(Json(new Text($"Отсутствует исполняемый файл '{av.php}'"))); } #endregion #region Создаем команду StringBuilder comand = new StringBuilder(); comand.Append($"--path={av.path} "); if (!string.IsNullOrWhiteSpace(av.skip)) { comand.Append($"--skip={av.skip} "); } if (!string.IsNullOrWhiteSpace(av.scan)) { comand.Append($"--scan={av.scan} "); } comand.Append($"--mode={(av.mode == 1 ? 1 : 2)} "); comand.Append($"--memory={av.memory}M "); comand.Append($"--size={av.size}K "); comand.Append($"--delay={av.delay} "); #endregion // Имя отчета string report = $"{AntiVirus.name}_{AntiVirus.vers}_{DateTime.Now.ToString("HH-mm_dd-MM-yyy")}{av.path.Replace("/", "_-_")}"; // Trigger.OnStart(("0", report)); // Запускаем процесс bash Bash bash = new Bash(); bash.Run($"{av.php} {Folders.AV}/ai-bolit.php {comand.ToString()} --progress={Folders.AV}/progress_id-0.json --report={Folders.ReportsAV}/{report}.html >/dev/null 2>/dev/null &"); bash.Run("sleep 3"); // Отдаем результат return(Json(new TrueOrFalse(true))); }
public JsonResult Stop(int Id = 0) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion if (AntiVirus.IsRun(Id)) { Bash bash = new Bash(); string pid = bash.Run($"ps ux | grep \"/av/ai-bolit.php\" | grep \"/progress_id-{Id}.json\" " + " | grep -v \"grep\" | awk {'print $2'} | head -n 1"); if (!string.IsNullOrWhiteSpace(pid)) { bash.Run($"kill -9 {pid}"); } System.IO.File.Delete($"{Folders.AV}/progress_id-{Id}.json"); } return(Json(new TrueOrFalse(true))); }