Example #1
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                cloudflareLogHandleSercie.InitQueue(startTime, endTime);
                cloudflareLogHandleSercie.TaskStart();
                CloudflareLogReport cloudflareLogReport = cloudflareLogHandleSercie.GetCloudflareLogReport();

                if (this.InvokeRequired)
                {
                    this.Invoke(new Action(() =>
                    {
                        button1.Enabled = true;
                        var order       = cloudflareLogReport.CloudflareLogReportItems.Where(a => a.Ban).OrderByDescending(a => a.Count).ToArray();
                        dataGridViewReport.DataSource = order;
                    }));
                }
                else
                {
                    button1.Enabled = true;
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
            }
        }
Example #2
0
        private void doWork()
        {
            do
            {
                try
                {
                    cloudflareLogHandleSercie.InitQueue(startTime, endTime);
                    cloudflareLogHandleSercie.TaskStart();
                    CloudflareLogReport cloudflareLogReport = cloudflareLogHandleSercie.GetCloudflareLogReport();

                    CloudflareLogs = cloudflareLogHandleSercie.GetCloudflareLogs();

                    if (this.InvokeRequired)
                    {
                        this.Invoke(new Action(() =>
                        {
                            button1.Enabled          = true;
                            var order                = cloudflareLogReport?.CloudflareLogReportItems?.Where(a => a.Ban).OrderByDescending(a => a.Count).ToArray();
                            cloudflareLogReportItems = order;

                            List <string> filterStringList = new List <string>()
                            {
                                "all"
                            };
                            filterStringList.AddRange(cloudflareLogReportItems.Select(a => a.ClientRequestHost).Distinct());

                            comboBoxFilter.DataSource = filterStringList;

                            dataGridView1.DataSource       = order;
                            dataGridView1.Columns[1].Width = 175;
                            dataGridView1.Columns[2].Width = 500;
                            dataGridView1.Refresh();
                            labelTotal.Text = string.Format("total:{0}", order.Count());
                        }));
                    }
                    else
                    {
                        button1.Enabled = true;
                    }

                    if (autoBan == true)
                    {
                        List <string> ips   = new List <string>();
                        var           items = cloudflareLogReport?.CloudflareLogReportItems?.Where(a => a.Ban).OrderByDescending(a => a.Count).ToArray();
                        if (items != null)
                        {
                            foreach (CloudflareLogReportItem item in items)
                            {
                                if (item.Ban)
                                {
                                    ips.Add(item.ClientIP);
                                }
                            }
                        }

                        comment = textBoxComment.Text;
                        if (string.IsNullOrWhiteSpace(comment))
                        {
                            MessageBox.Show("comment is required.", "warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }

                        cloudflareLogHandleSercie.BanIps(ips, comment);
                    }

                    if (autoRun == true)
                    {
                        //去最近5分钟进行重新的分析
                        if (this.InvokeRequired)
                        {
                            this.Invoke(new Action(() =>
                            {
                                DateTime now = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:00"));
                                dateTimePickerStart.Value = now.AddMinutes(-10);
                                dateTimePickerEnd.Value   = now.AddMinutes(-5);

                                startTime = dateTimePickerStart.Value;
                                endTime   = dateTimePickerEnd.Value;
                            }));
                        }
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex.Message);
                }
            }while (autoRun);
        }