Добавить SubnetScanner/SubnetValid.cs
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
using Spectre.Console;
|
||||
|
||||
namespace IP_port_checker.SubnetScanner
|
||||
{
|
||||
public class SubnetValid
|
||||
{
|
||||
public static string SubValid(string promt, ref string IP, ref int Mask)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Console.Write(promt);
|
||||
|
||||
string? cidr = Console.ReadLine();
|
||||
|
||||
//провека на пустой ввод или на содержание слеша
|
||||
if (string.IsNullOrEmpty(cidr) || !cidr.Contains('/'))
|
||||
{
|
||||
AnsiConsole.MarkupLine("[red]Ошибка: нужен формат IP/маска[/]");
|
||||
continue;
|
||||
}
|
||||
|
||||
string[] parts = cidr.Split('/');
|
||||
|
||||
//кол-во частей подсети после сплита
|
||||
if (parts.Length != 2)
|
||||
{
|
||||
AnsiConsole.MarkupLine("[red]Неверный формат [/]");
|
||||
continue;
|
||||
}
|
||||
|
||||
//проверка на числовое значение и ограничения маски
|
||||
if (!int.TryParse(parts[1], out int mask) || mask != 24)
|
||||
{
|
||||
AnsiConsole.MarkupLine("[red]Маска должна быть числом 24 (в ходе разработки добавятся другие маски)[/]");
|
||||
continue;
|
||||
}
|
||||
|
||||
//проверка айпи
|
||||
string[] parts1 = parts[0].Split('.');
|
||||
bool IPv4Valid = parts1.Length == 4 && parts1.All(p => byte.TryParse(p, out _));
|
||||
if (!IPv4Valid)
|
||||
{
|
||||
AnsiConsole.MarkupLine("[red]Неверный IP [/]");
|
||||
continue;
|
||||
}
|
||||
|
||||
IP = parts[0];
|
||||
Mask = Convert.ToInt32(parts[1]);
|
||||
return cidr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user