# План добавления управления policies в роль firewall

## Текущее состояние

Роль `roles/firewall` уже частично поддерживает политики firewalld:

- ✅ Чтение конфигурации политик через `policy_reader` в `get_config.py`
- ✅ Сбор фактов политик в `firewall_lib_facts.py`
- ❌ Отсутствует реализация управления политиками в бэкендах:
  - `OnlineAPIBackend` (D-Bus API для работающего firewalld)
  - `InMemoryBackend` (для check_mode и diff)
  - `OfflineCLIBackend` (firewall-offline-cmd)

## Цель

Добавить поддержку управления политиками (policies) аналогично зонам и сервисам.

## Реализация

### 1. Добавить параметры политики в `firewall_lib.py`

**Список параметров для политики:**
- `policy` — имя политики
- `state` — `enabled`/`disabled`/`present`/`absent`
- `permanent` — boolean
- `runtime` — boolean

**Компоненты политики:**
- `services` — список сервисов
- `ports` — список портов
- `icmp_blocks` — блокировка ICMP
- `forward_ports` — проброс портов
- `rich_rules` — rich-правила
- `ingress_zones` — зоны входа
- `egress_zones` — зоны выхода
- `target` — целевой таргет

### 2. Реализация в `OnlineAPIBackend`

Добавить методы:
- `set_policy()` — создание/удаление/настройка политики
- `set_policy_services()`
- `set_policy_ports()`
- `set_policy_icmp_blocks()`
- `set_policy_forward_port()`
- `set_policy_rich_rule()`
- `set_policy_source()` (для ingress/egress zones)

### 3. Реализация в `InMemoryBackend`

Добавить аналогичные методы для работы с in-memory конфигурацией.

### 4. Реализация в `OfflineCLIBackend`

Добавить методы через `firewall-offline-cmd`:
- `--new-policy`, `--delete-policy`
- `--policy=<name> --add-service`, `--remove-service`
- `--policy=<name> --add-port`, `--remove-port`
- и т.д.

### 5. Обновить README.md

Добавить секцию про управление политиками с примерами.

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

```yaml
firewall:
  - policy: internal-trust
    state: enabled
    permanent: true
    services:
      - ssh
      - http
      - https
    ingress_zones:
      - internal
    egress_zones:
      - dmz
```

## Порядок выполнения

1. Обновить `library/firewall_lib.py` — добавить поддержку политик во все 3 бэкенда
2. Обновить `README.md` — добавить документацию по управлению политиками
3. Протестировать на виртуальной машине
