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; } } }
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(); }
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, "Отчет успешно сохранен."); } }