コード例 #1
0
        public void btn_History_Click(object sender, EventArgs e)
        {
            if (history_Form == null)
            {
                history_Form = new History(this);
            }

            bool isFilenum = sender != null && sender.GetType() == typeof(FilesNum);

            if (openedForm != history_Form || (!isFilenum && last_history == 1))
            {
                if (about_form != null)
                {
                    about_form.ToggleTimer(false);
                }

                if (home_form != null)
                {
                    home_form.ToggleTimer(false);
                }
                openForm(history_Form);

                if (isFilenum)
                {
                    FilesNum number = (FilesNum)sender;
                    history_Form.Reload(number);
                }
                else
                {
                    history_Form.Reload(new FilesNum(0));
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public void Reload(FilesNum files_info)
        {
            int files_num = files_info.num;

            if (parentform.last_history == 0 && files_num == 0)
            {
                return;
            }

            if (files_num != 0)
            {
                label1.Text = "Scan Results";
                TogglePanel(panel2, true);
                TogglePanel(panel3, false);

                TogglePanel(panel5, false);

                label3.Text = files_num.ToString();
                int threatsfound = files_info.threats;

                if (threatsfound > 0)
                {
                    TogglePanel(panel4, true);
                }
                else
                {
                    TogglePanel(panel4, false);
                }

                label4.Text = threatsfound.ToString();
                if (threatsfound == 0)
                {
                    label4.ForeColor = clean_color;
                }
                else
                {
                    label4.ForeColor = detected_color;
                }
                label6.Text = files_info.duration;
            }
            else
            {
                label1.Text = "Scan History";
                TogglePanel(panel2, false);
                TogglePanel(panel3, true);
                TogglePanel(panel4, false);
                TogglePanel(panel5, true);
            }


            label2.Visible = false;
            try
            {
                AV_Reports reports = (AV_Reports)Settings.Get_Settings(typeof(AV_Reports));
                if (reports.av_reports.Count == 0)
                {
                    label2.Visible = true;
                    TogglePanel(panel5, false);
                }

                LoadGridValues(reports, files_num);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                label2.Visible = true;
            }



            if (files_num == 0)
            {
                parentform.last_history = 0;
            }
            else
            {
                parentform.last_history = 1;
            }
        }