Фаервол с проверкой IP
Условие задачи
Нужно реализовать программу, моделирующую работу фаервола. Она должна принимать список правил, каждое из которых содержит CIDR-блок и действие ("ALLOW" или "DENY"). Основная функция должна определять, разрешён ли конкретный IP-адрес на основе этих правил, возвращая true для разрешённых адресов и false для запрещённых. Также важно корректно обрабатывать недопустимые CIDR-блоки и действия
gopackage main
import (
"fmt"
)
// Функция проверки разрешения IP-адреса
func IsAllowed(rules [][2]string, ip string) bool {
// **Вставьте код проверки IP-адреса по правилам**
return false
}
func main() {
// **Пример входных данных:**
// **Пример 1:**
rules1 := [][2]string{
{"192.168.1.0/24", "ALLOW"},
{"10.0.0.0/16", "DENY"},
{"8.8.8.8", "ALLOW"},
}
ip1 := "192.168.1.10" // ответ true
// **Пример 2:**
rules2 := [][2]string{
{"192.168.1.0/24", "ALLOW"},
{"10.0.0.0/16", "DENY"},
{"8.8.8.8", "ALLOW"},
}
ip2 := "10.0.0.10" // ответ false
// **Пример 3:**
rules3 := [][2]string{
{"192.168.1.0/24", "ALLOW"},
{"10.0.0.0/16", "DENY"},
{"8.8.8.8", "ALLOW"},
}
ip3 := "192.168.2.10" // ответ false
processExample(rules1, ip1)
processExample(rules2, ip2)
processExample(rules3, ip3)
}
func processExample(rules [][2]string, ip string) {
if IsAllowed(rules, ip) {
fmt.Println("true")
} else {
fmt.Println("false")
}
}