Beispiel #1
0
        void ValidateSxGeo()
        {
            //проверяем наличие БД SxGeo
            SxPath = CommonFunctions.SettingsPath +
                     CommonFunctions.SxGeoDir + CommonFunctions.SxGeoCity;
            IPGeoinfo tmpGeoInfo = new IPGeoinfo(SxPath);

            if (tmpGeoInfo.IsValidSxGeoFile()) //SxGeoSity найдена и валидная
            {
                lblSxGeoStatus.ForeColor = Color.Green;
                lblSxGeoStatus.Text      = "БД SxGeoCity готова";
                btnSxGeoInfo.Enabled     = true;
            }
            else
            {
                SxPath = CommonFunctions.SettingsPath +
                         CommonFunctions.SxGeoDir + CommonFunctions.SxGeoCountry;
                tmpGeoInfo = new IPGeoinfo(SxPath);
                if (tmpGeoInfo.IsValidSxGeoFile()) //SxGeoCountry найдена и валидная
                {
                    lblSxGeoStatus.ForeColor = Color.Green;
                    lblSxGeoStatus.Text      = "БД SxGeoCountry готова";
                    btnSxGeoInfo.Enabled     = true;
                }
                else
                {
                    lblSxGeoStatus.ForeColor = Color.Brown;
                    lblSxGeoStatus.Text      = tmpGeoInfo.ErrorMessage;
                    SxPath = string.Empty;
                    btnSxGeoInfo.Enabled = false;
                }
            }
        }
Beispiel #2
0
        private void btnUptateSxGeo_Click(object sender, EventArgs e)
        {
            DialogResult Ans = dlgOpenSxG.ShowDialog();

            if (Ans == DialogResult.Cancel)
            {
                return;
            }
            string ResultMess = "";
            string srcpath    = CommonFunctions.AddSlash(dlgOpenSxG.SelectedPath)
                                + CommonFunctions.SxGeoCountry;
            string dstpath = CommonFunctions.SettingsPath +
                             CommonFunctions.SxGeoDir + CommonFunctions.SxGeoCountry;

            //ищем файл SxGeoCountry
            IPGeoinfo tmpGeoInfo = new IPGeoinfo(srcpath);

            if (tmpGeoInfo.IsValidSxGeoFile())
            {
                ResultMess = "Файл " + CommonFunctions.SxGeoCountry + " найден. \n"
                             + CommonFunctions.CopyFile(srcpath, dstpath) + "\n";
            }
            else
            {
                ResultMess = "Файл " + CommonFunctions.SxGeoCountry + ": "
                             + tmpGeoInfo.ErrorMessage + "\n";
            }

            //ищем файл SxGeoCity
            srcpath = CommonFunctions.AddSlash(dlgOpenSxG.SelectedPath)
                      + CommonFunctions.SxGeoCity;
            dstpath = CommonFunctions.SettingsPath +
                      CommonFunctions.SxGeoDir + CommonFunctions.SxGeoCity;

            tmpGeoInfo = new IPGeoinfo(srcpath);
            if (tmpGeoInfo.IsValidSxGeoFile())
            {
                ResultMess = ResultMess + "Файл " + CommonFunctions.SxGeoCity + " найден. \n"
                             + CommonFunctions.CopyFile(srcpath, dstpath);
            }
            else
            {
                ResultMess = ResultMess + "Файл " + CommonFunctions.SxGeoCity + ": "
                             + tmpGeoInfo.ErrorMessage;
            }

            MessageBox.Show(ResultMess, "Результат обновления",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);

            ValidateSxGeo();
        }
Beispiel #3
0
        private void btnFind_Click(object sender, EventArgs e)
        {
            if (!IPConverter.IsIP(ipAddr.Text))
            {
                lblMessage.ForeColor = Color.Red;
                lblMessage.Text      = "Введите правильный IP-адрес!";
                return; //что-то не ввели до конца
            }

            ColumnsData cd = new ColumnsData(CommonFunctions.SettingsPath +
                                             CommonFunctions.ColumnsDesrFile);

            cd.LoadData();

            CSVLoader.OutputGrid = grdAnswer;
            CSVLoader.ClearFind();
            int count = CSVLoader.Find(ipAddr.Text, cd);

            if (count == 0)
            {
                if (!string.IsNullOrEmpty(CSVLoader.ErrorMessage))
                {
                    lblMessage.ForeColor = Color.Red;
                    lblMessage.Text      = CSVLoader.ErrorMessage;
                }
                else
                {
                    lblMessage.ForeColor = Color.Red;
                    lblMessage.Text      = "IP " + ipAddr.Text + " не найден в базе данных TOR.";
                }
            }
            else
            {
                lblMessage.ForeColor = Color.Green;
                lblMessage.Text      = "IP " + ipAddr.Text + " найден в базе данных TOR. " +
                                       count.ToString() + " вхождений";
            }

            if (!string.IsNullOrEmpty(SxPath))
            {
                IPGeoinfo GeoInfo = new IPGeoinfo(SxPath);

                if (!GeoInfo.Open())
                {
                    lblMessage.ForeColor = Color.Red;
                    lblMessage.Text      = lblMessage.Text + "Ошибка SxGeo: " +
                                           GeoInfo.ErrorMessage;
                    return;
                }

                if (grdAnswer.Columns.Count < 2)
                {
                    grdAnswer.Columns.Add("Desr", "Параметр");
                    grdAnswer.Columns.Add("Value", "Значение");
                }

                GeoInfo.AddToDataGridView(ipAddr.Text, grdAnswer, cd);

                lblMessage.Text = lblMessage.Text + " Поиск по базе SxGeo выполнен.";
            }
        }
        private void GetData()
        {
            IPGeoinfo GeoInfo = null;

            SendStatus(BatchFinderStatus.Working, "Получаю список IP...");
            string[] IPs = GetAllIPs();
            if (IPs == null)
            {
                SendStatus(BatchFinderStatus.Error, ErrorMessage);
                return;
            }

            SendStatus(BatchFinderStatus.Working, "Подготавливаю данные...");
            if (!string.IsNullOrEmpty(SxPath)) //открываем базу SxGeo
            {
                GeoInfo = new IPGeoinfo(SxPath);
                if (!GeoInfo.Open())
                {
                    ErrorMessage = GeoInfo.ErrorMessage;
                    SendStatus(BatchFinderStatus.Error, ErrorMessage);
                    return;
                }
            }

            //объект для отчета
            PrintReport Log = new PrintReport(OutputFile);

            //добавляем строку с полями
            string stFields = "";

            if (GeoInfo != null)
            {
                stFields = GeoInfo.GetDescriptions(ColData);
            }

            if (AllTorData)
            {
                stFields = stFields + ";" + ColData.GetDesription("In_Tor") +
                           ";" + CSVLoader.GetDescriptions(ColData);
            }
            else
            {
                stFields = stFields + ";" + ColData.GetDesription("In_Tor");
            }
            Log.ReportAdd(stFields);

            //начинаем обработку IP
            int Count    = IPs.Length;
            int Current  = 0;
            int ErrCount = 0;

            if (GeoInfo != null)
            {
                GeoInfo.PrepareBatch();
            }

            //обрабатываем IP
            foreach (string IP in IPs)
            {
                //прибавили счетчик, послали статус, подготовили буфер
                Current++;
                SendStatus(BatchFinderStatus.Working, "IP " + Current.ToString() + "/" +
                           Count.ToString());
                string buf    = string.Empty;
                string sxinfo = string.Empty;

                //информация SxGeo
                if (GeoInfo != null)
                {
                    sxinfo = GeoInfo.GetDataString(IP);
                }

                //информация Tor
                List <string> listTor = CSVLoader.FindList(IP);

                if (listTor == null) //ошибка
                {
                    SendStatus(BatchFinderStatus.Error, CSVLoader.ErrorMessage);
                    ErrCount++;
                    buf = sxinfo + ";" + CSVLoader.ErrorMessage;
                    Log.ReportAdd(buf);
                }
                else
                {
                    if (listTor.Count == 0) //не нашли
                    {
                        buf = sxinfo + ";Not found in TOR";
                        Log.ReportAdd(buf);
                    }
                    else
                    {
                        string found = ";Found (" + listTor.Count.ToString() + ")";

                        if (!AllTorData) //полная информация не нужна
                        {
                            buf = sxinfo + found;
                            Log.ReportAdd(buf);
                        }
                        else //нужна полная информация по tor-ноде(ам)
                        {
                            int torI = 0;
                            foreach (string node in listTor)
                            {
                                torI++;
                                buf = sxinfo + found + " #" + torI + ";"
                                      + node;
                                Log.ReportAdd(buf);
                            }
                        }
                    }
                }
                //конец обработки IP
            }
            //конец цикла обработки всех IP
            //сохраняем отчет
            if (!Log.ReportSave(OutputFile))
            {
                ErrorMessage = Log.ErrorMessage;
                SendStatus(BatchFinderStatus.Error, "Ошибка сохранения отчета: " +
                           ErrorMessage);
                return;
            }

            if (ErrCount != 0)
            {
                ErrorMessage = "При обработке адресов произошли ошибки.";
                SendStatus(BatchFinderStatus.Error, ErrorMessage);
            }
            else
            {
                SendStatus(BatchFinderStatus.Complete, "Отчет успешно сохранен.");
            }
        }