コード例 #1
0
        public ActionResult RunAnalysisWithAnalyses(string SelectedBaseRunId, string SelectedCompareRunId, IFormFile AnalysisFilterFile)
        {
            var filePath = Path.GetTempFileName();

            CompareCommandOptions opts = new CompareCommandOptions(SelectedBaseRunId, SelectedCompareRunId)
            {
                DisableAnalysis = false,
                SaveToDatabase  = true
            };

            if (AnalysisFilterFile != null)
            {
                using (var stream = System.IO.File.Create(filePath))
                {
                    AnalysisFilterFile.CopyTo(stream);
                }
                opts.AnalysesFile = filePath;
            }

            if (AttackSurfaceAnalyzerClient.GetComparators().Where(c => c.IsRunning() == RUN_STATUS.RUNNING).Any())
            {
                return(Json("Comparators already running!"));
            }

            if (AttackSurfaceAnalyzerClient.DatabaseManager.GetComparisonCompleted(opts.FirstRunId, opts.SecondRunId))
            {
                return(Json("Using cached comparison calculations."));
            }

            Task.Factory.StartNew(() =>
            {
                var results = AttackSurfaceAnalyzerClient.CompareRuns(opts);
                AttackSurfaceAnalyzerClient.InsertCompareResults(results, opts.FirstRunId, opts.SecondRunId);
            });

            return(Json("Started Analysis"));
        }