- Регистрация
- 10.12.2016
- Сообщения
- 129
- Благодарностей
- 27
- Баллы
- 28
Все добрый день!
Есть код, честно взятый из открытого шаблона конкурса статей. Он подключается к whois.ripn.net по 43 порту, парсит NS запись и выбирает из них, у которых их нету.
Я в C# вообще не силён, но на сколько я понимаю, проверка на пустоту NS записи происходит вот в этой части кода:
Тут переменная сравнивается с оператором null. Есть ли в C# оператор обратный null? Т.е. мне нужно наоборот, чтобы код возвращал не пустые результаты, а в которых есть NS записи.
Есть код, честно взятый из открытого шаблона конкурса статей. Он подключается к whois.ripn.net по 43 порту, парсит NS запись и выбирает из них, у которых их нету.
Код:
var pinger = project.Lists["pinger"];
var good = project.Lists["good"];
string ns = project.Variables["ns"].Value;
project.SendInfoToLog("Чекаем днс. Кол-во: " + pinger.Count + " шт.", true);
System.Threading.Tasks.Parallel.For(0, pinger.Count, i => {
string domain = pinger[0];
pinger.RemoveAt(0);
try
{
IPHostEntry host = Dns.GetHostEntry(domain);
foreach (IPAddress ip in host.AddressList)
{
//project.SendInfoToLog(ip.ToString(), false);
}
}
catch
{
string whoisServer = "whois.ripn.net";
try{
StringBuilder result = new StringBuilder();
result.AppendLine("По данным " + whoisServer + ": ------------------------------------------");
using (TcpClient tcpClient = new TcpClient()){
//открываем соединение с сервером WHOIS
tcpClient.Connect(whoisServer.Trim(), 43);
byte[] domainQueryBytes = Encoding.ASCII.GetBytes(domain + "\r\n");
using (Stream stream = tcpClient.GetStream()){
//отправляем запрос на сервер WHOIS
stream.Write(domainQueryBytes, 0, domainQueryBytes.Length);
//читаем ответ в формате UTF8, так как некоторые национальные домены содержат информацию на местном языке
using (StreamReader sr = new StreamReader(tcpClient.GetStream(), Encoding.UTF8)){
string row;
while ((row = sr.ReadLine()) != null)
result.AppendLine(row);
}
}
}
result.AppendLine("---------------------------------------------------------------------\r\n");
foreach (Match m in Regex.Matches(result.ToString(), @"(?<=nserver:\ \ \ \ \ \ \ ).*(?=\.)"))
{
if(m.Value == ns)
{
good.Add(ns + " | " + domain.ToLower());
project.SendInfoToLog("Нашли домен без днс " + domain.ToLower(), true);
}
}
}catch{}
}
});
Код:
{
string row;
while ((row = sr.ReadLine()) != null)
result.AppendLine(row);
}