public async Task <bool> CheckForInternetConnection() { bool res = await Settings.IsInternetAvailable(); if (!res) { if (net_msg != null) { net_msg.Close(); } net_msg = new TotalMessage("Scan Error", "No internet connection :( ", MessageBoxButtons.OK); net_msg.ShowDialog(); net_msg = null; return(false); } return(true); }
private async Task <bool> ScanFiles(string taskid, bool runsafe) { Keys keys = Settings.GetKeys(); bool PremiumAvailable = keys.key[1].value != null && !String.IsNullOrEmpty(keys.key[1].value); bool PublicAvailable = keys.key[0].value != null && !String.IsNullOrEmpty(keys.key[0].value); bool PremiumActive = keys.key[1].active; bool PublicActive = keys.key[0].active; string key; int scannedfiles = 0; int totalfiles = upload_files.Count; int threatsfound = 0; bool ispremium = PremiumAvailable && PremiumActive; if (ispremium) { key = keys.key[1].value; } else { if (PublicAvailable && PublicActive) { key = keys.key[0].value; } else { return(false); } } List <string> active_avs = Settings.GetActiveAVs(); AV_Reports av_reports; try { av_reports = (AV_Reports)Settings.Get_Settings(typeof(AV_Reports)); } catch { av_reports = new AV_Reports(); av_reports.av_reports = new List <AV_Report>(); } List <string> queued_files = new List <string>(); if (totalfiles == 1) { UpdateCurrentFile(upload_files[0]); } pictureBox4.Image = Properties.Resources.loading; pictureBox4.Enabled = true; timer1.Enabled = true; timer1.Stop(); timer1.Interval = 1000; start_time = DateTime.Now; timer1.Start(); timer1_Tick(null, null); foreach (var file in upload_files) { await Task.Delay(1000); AV_Report report = await VT_API.ScanFile(file, key, active_avs, false, ispremium, this); if (TaskCanceled(taskid)) { return(false); } if (report == null) { queued_files.Add(file); } else { UpdateCurrentFile(file); av_reports.av_reports.Insert(0, report); scannedfiles++; if (VT_API.IsThreat(report)) { threatsfound++; } UpdateLabels(scannedfiles, totalfiles, threatsfound); } } foreach (var file in queued_files) { UpdateCurrentFile(file); AV_Report report = await VT_API.ScanFile(file, key, active_avs, true, ispremium, this); if (TaskCanceled(taskid)) { return(false); } av_reports.av_reports.Insert(0, report); scannedfiles++; if (VT_API.IsThreat(report)) { threatsfound++; } UpdateLabels(scannedfiles, totalfiles, threatsfound); } Settings.Save_Settings(av_reports); tasks.Remove(taskid); timer1.Stop(); timer1.Enabled = false; TogglePanel(panel1, false); TogglePanel(panel2, false); progressBar1.Tag = -1; FilesNum fileinfo = new FilesNum(totalfiles); fileinfo.threats = threatsfound; fileinfo.duration = "0"; fileinfo.duration = label15.Text; parent.last_history = 1; parent.btn_History_Click(fileinfo, null); if (openedmsg != null) { openedmsg.Close(); openedmsg = null; } if (runsafe) { if (threatsfound > 0) { notify_form.SetLabelMsg("Threats Found, no file(s) opened.", Color.FromArgb(192, 0, 0)); notify_form.ToggleButton(true); } else { await Task.Run(() => StartFiles()); notify_form.SetLabelMsg("No Threats Found. Opening File(s)", Color.Green); notify_form.DelayedClose(3000); } } return(true); }