Skip to content

pkashin/firewall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔐 Firewall Prototype

Описание

Этот проект реализует прототип файрвола на языке C. Программа читает информацию о пакетах из стандартного ввода и на основании заданных правил выносит вердикт.

Ключевые параметры среды разработки проекта:
macOS gcc Make LCOV Cppcheck check

Покрытие кода
Покрытие кода

Структура проекта

firewall/
├── config/          # Конфигурационные файлы
│   ├── CPPLINT.cfg
│   └── rules.txt    # Файл с правилами файерволла
├── coverage/        # Отчеты о покрытии кода
│   └── report/
├── deploy/          # Исполняемые файлы для развертывания
├── input_files/     # Входные файлы для тестирования
│   └── input.txt    
├── src/             # Исходные файлы
│   ├── main.c
│   └── firewall.c
├── tests/           # Тестовые файлы
│   └── test_firewall.c
├── build/           # Собранные объектные файлы и исполняемые файлы
├── .gitignore       # Файл для исключения из системы контроля версий
├── Makefile         # Makefile для сборки проекта
└── README.md        # Описание проекта

Флаги командной строки

Программа поддерживает следующие флаги командной строки:

-r или --rules: Этот флаг указывает программе вывести информацию о используемых правилах файервола. Пример использования:

./deploy/firewall -r
Total rules: 8
Rule   Source/Prefix          Destination/Prefix     Protocol   Verdict 
1      10.0.1.11      /32  =>  1.1.1.1        /32      TCP      ACCEPT  
2      10.0.2.12      /32  =>  1.1.1.1        /32      TCP      DROP    
3      10.0.2.12      /32  =>  8.8.8.8        /32      TCP      ACCEPT  
4      10.0.3.13      /32  =>  0.0.0.0        /0       ANY      ACCEPT  
5      0.0.0.0        /0   =>  1.2.3.4        /32      UDP      DROP    
6      0.0.0.0        /0   =>  1.2.3.4        /32      ANY      ACCEPT  
7      0.0.0.0        /0   =>  10.0.9.1       /32      TCP      DROP    
8      10.0.5.0       /24  =>  0.0.0.0        /0       ANY      ACCEPT

Makefile

Основные цели

  • all: Очистка, сборка, тестирование и развертывание.
  • run: Запуск программы после сборки.
  • build: Сборка всех объектных файлов и основного исполняемого файла.
  • test: Сборка и запуск тестов.
  • deploy: Размещение собранных файлов в директории deploy.
  • coverage: Генерация отчета о покрытии кода.
  • check: Проверка кода на утечки памяти и соответствие стилю.
  • clean: Очистка директории сборки и отчетов о покрытии кода.

Примеры использования

  1. Сборка проекта:
make
  1. Запуск программы:
make run
  1. Запуск тестов:
make test
  1. Генерация отчета о покрытии кода:
make coverage
  1. Проверка кода:
make check
  1. Очистка временных файлов и директорий
make clean