Добавить 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