Добавил:
мой вк: vk.com/truecrimebitch больше работ здесь: https://github.com/alisadex Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа.docx
Скачиваний:
2
Добавлен:
11.05.2025
Размер:
1.55 Mб
Скачать

2.3. Программная реализация алгоритмов модулей

2.3.1. Модуль для проверки наличия соединения с Интернетом

Проверка наличия соединения с Интернетом выполняется при нажатии на кнопку «Проверить подключение к Интернету». Проверка реализуется с использованием команды пинг к IP-адресу 8.8.8.8 (Google DNS) с тайм-аутом в 3000 миллисекунд. Если пинг успешен, в текстовом поле txtInternetStatus выводится сообщение «Соединение с Интернетом установлено». В случае неудачной попытки пинга в том же текстовом поле отображается сообщение «Соединение с Интернетом отсутствует». Исключения, возникающие во время проверки, обрабатываются с помощью метода ExecuteWithExceptionHandling, что предотвращает сбои в работе программы. Для этого выполняется программный код, представленный в листинге 1.

Листинг 1 – Программный код модуля для проверки наличия соединения с Интернетом

private void btnCheckInternetConnection_Click(object sender, EventArgs e)

{

string result = ExecuteWithExceptionHandling(CheckInternetConnectionStatus);

AppendResult(result, txtInternetStatus);

}

private string CheckInternetConnectionStatus()

{

using (var ping = new Ping())

{

PingReply reply = ping.Send("8.8.8.8", 3000);

return reply.Status == IPStatus.Success ? "Соединение с Интернетом установлено." : "Соединение с Интернетом отсутствует.";

}

}

2.3.2. Модуль для проверки наличия межсетевого экрана

Проверка наличия межсетевого экрана выполняется при нажатии на кнопку «Проверить наличие межсетевого экрана». Проверка осуществляется с использованием объекта INetFwProfile, который предоставляет доступ к настройкам межсетевого экрана Windows. Метод GetFirewallProfile запрашивает текущий профиль политики локального межсетевого экрана. Если межсетевой экран включен, в текстовом поле txtFirewall отображается сообщение «Межсетевой экран установлен». В случае, если межсетевой экран отключен или отсутствует, выводится сообщение «Межсетевой экран не установлен». Исключения, возникающие во время выполнения проверки, обрабатываются с помощью метода ExecuteWithExceptionHandling, что предотвращает сбои в работе программы. Для этого выполняется программный код, представленный в листинге 2.

Листинг 2 – Программный код модуля для проверки наличия межсетевого экрана.

private void btnCheckFirewall_Click(object sender, EventArgs e)

{

string result = ExecuteWithExceptionHandling(CheckFirewallStatus);

AppendResult(result, txtFirewall);

}

private string CheckFirewallStatus()

{

INetFwProfile fwProfile = GetFirewallProfile();

return fwProfile != null && fwProfile.FirewallEnabled ? "Межсетевой экран включен." : "Межсетевой экран отключен.";

}

private INetFwProfile GetFirewallProfile()

{

INetFwMgr fwMgr = (INet - FwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));

return fwMgr.LocalPolicy.CurrentProfile;

}

2.3.3. Модуль для проверки работоспособности межсетевого экрана

Проверка работоспособности межсетевого экрана осуществляется при нажатии на кнопку «Проверить работоспособность межсетевого экрана». Проверка выполняется с помощью объекта INetFwPolicy2, предоставляющего доступ к настройкам профилей межсетевого экрана Windows. Метод CheckFirewallOperationalStatus проверяет, включены ли доменный, частный и публичный профили межсетевого экрана, а также разрешены ли исключения для входящих соединений.

Если доменный профиль включен, в результатах проверки выводится «Доменный профиль: Включен», в противном случае — «Доменный профиль: Отключен». Аналогично отображается статус частного и публичного профилей. Также проверяется, разрешены ли исключения для входящих соединений. В случае их разрешения выводится «Исключения для входящих соединений: Разрешены», в противном случае — «Запрещены».

Результат проверки отображается в текстовом поле txtFirewallStatus. Исключения, возникающие во время выполнения проверки, обрабатываются методом ExecuteWithExceptionHandling, предотвращая сбои в работе программы. Для этого выполняется программный код, представленный в листинге 3.

Листинг 3 – Программный код модуля для проверки работоспособности межсетевого экрана.

private void btnCheckFirewallStatus_Click(object sender, EventArgs e)

{

string result = ExecuteWithExceptionHan - dling(CheckFirewallOperationalStatus);

AppendResult(result, txtFirewallStatus);

}

private string CheckFirewallOperationalStatus()

{

Type policyType = Type.GetTypeFromProgID("HNetCfg.FwPolicy2");

INetFwPolicy2 fwPolicy = (INetFwPoli - cy2)Activator.CreateInstance(policyType);

bool isDomainEnabled = fwPoli - cy.FirewallEnabled[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN];

bool isPrivateEnabled = fwPoli - cy.FirewallEnabled[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE];

bool isPublicEnabled = fwPoli - cy.FirewallEnabled[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC];

bool areExceptionsAllowed = !fwPoli - cy.BlockAllInboundTraffic[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN] &&

!fwPoli - cy.BlockAllInboundTraffic[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE] &&

!fwPoli - cy.BlockAllInboundTraffic[NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC];

return $"Статус межсетевого экрана:\n" +

$"- Доменный профиль: {(isDomainEnabled ? "Включен" : "Отключен")}\n" +

$"- Частный профиль: {(isPrivateEnabled ? "Включен" : "Отключен")}\n" +

$"- Публичный профиль: {(isPublicEnabled ? "Включен" : "Отключен")}\n" +

$"- Исключения для входящих соединений: {(areExceptionsAllowed ? "Разрешены" : "Запрещены")}\n";

}