Глава 40. CLI команды политик¶
Управление политиками через командную строку Redcoat CLI. Всего доступна 21 команда управления политиками плюс 2 команды show и 1 команда inline-ввода.
Реализована 21 полнофункциональная команда и 3 зарезервированные команды (скрыты из автодополнения и справки).
39.1. Команды управления политикой¶
39.1.1. policy status — статус загруженной политики¶
Описание: Отображает информацию о текущей загруженной политике: версию, количество правил, define-блоков, путь к файлу, возраст и наличие предыдущей версии для отката.
Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)
Синтаксис:
Пример вывода:
rproxy# policy status
Policy Status:
Version: 5
Rules: 42
Definitions: 10
Source: /etc/rproxy/policy.cpl
Age: 2h 15m
Has Previous: Yes
Поля вывода:
| Поле | Описание |
|---|---|
| Version | Номер версии политики (инкрементируется при каждой установке) |
| Rules | Общее количество правил во всех слоях |
| Definitions | Количество define-блоков |
| Source | Путь к файлу политики |
| Age | Время с момента последней загрузки (формат: Nh Mm) |
| Has Previous | Наличие предыдущей версии для отката (Yes/No) |
39.1.2. policy reload — перезагрузка политики¶
Описание: Перезагружает политику из файла на диске (/etc/rproxy/policy.cpl). Ожидание ответа — до 5 секунд.
Режим: Privileged (MODES_PRIVILEGED)
Синтаксис:
Пример вывода (успех):
Пример вывода (ошибка):
39.1.3. policy rollback — откат к предыдущей версии¶
Описание: Восстанавливает предыдущую версию политики. Файловая ротация: текущий .cpl перемещается в .staging, .prev становится текущим .cpl.
Режим: Privileged (MODES_PRIVILEGED)
Синтаксис:
Пример вывода:
rproxy# policy rollback
Rolling back to previous policy version...
ok
Rolled back from version 7 to version 6
Пример вывода (ошибка):
39.1.4. policy rules — вывод CPL-текста с заголовком¶
Описание: Отображает полный CPL-текст загруженной политики с заголовком Policy Rules:.
Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)
Синтаксис:
Пример вывода:
39.1.5. policy source — вывод сырого CPL-текста¶
Описание: Отображает полный CPL-текст загруженной политики без заголовков (без дополнительного оформления).
Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)
Синтаксис:
39.2. Команды установки и валидации¶
39.2.1. policy validate <file> — валидация файла политики¶
Описание: Проверяет синтаксис CPL-файла без применения. Читает файл и отправляет содержимое на валидацию.
Режим: Privileged (MODES_PRIVILEGED)
Синтаксис:
Параметры:
| Параметр | Описание |
|---|---|
<file> |
Путь к CPL-файлу для валидации |
Пример вывода (валидный файл):
rproxy# policy validate /tmp/policy.cpl
Validating policy file: /tmp/policy.cpl
ok - policy is valid
Rules: 42
Layers: 8
Пример вывода (с предупреждениями):
rproxy# policy validate /tmp/policy.cpl
Validating policy file: /tmp/policy.cpl
ok - policy is valid
Rules: 42
Layers: 8
Warnings:
- Line 15: Unused define block 'old_list'
Пример вывода (ошибки):
rproxy# policy validate /tmp/broken.cpl
Validating policy file: /tmp/broken.cpl
% Validation failed:
- Line 15: Syntax error in rule definition
- Line 28: Unknown action 'invalid_action'
39.2.2. policy install <file> — установка политики из файла¶
Описание: Читает CPL-файл, валидирует и устанавливает как текущую политику. Предыдущая версия сохраняется для отката (файловая ротация: .cpl -> .prev, содержимое -> .cpl).
Режим: Privileged (MODES_PRIVILEGED)
Синтаксис:
Параметры:
| Параметр | Описание |
|---|---|
<file> |
Путь к CPL-файлу для установки |
Пример вывода:
rproxy# policy install /tmp/new_policy.cpl
Installing policy from /tmp/new_policy.cpl...
ok
Version: 7
Rules: 45
Load time: 456 ms
Пример ошибки (файл не найден):
39.2.3. install policy <file> — алиас для policy install¶
Описание: Альтернативная форма записи команды policy install. Выполняет то же действие, что и policy install.
Режим: Privileged (MODES_PRIVILEGED)
Синтаксис:
39.3. Show-команды политики¶
39.3.1. show policy [config|source|executable|order] — информация о политике¶
Описание: Отображает различные аспекты загруженной политики в зависимости от подкоманды.
Режим: Standard, Privileged, Config (MODES_ALL)
Алиасы: sh policy
Синтаксис:
Подкоманды:
| Подкоманда | Описание |
|---|---|
config (или без аргумента) |
Статус политики (аналог policy status) |
source |
Полный CPL-текст (аналог policy source) |
executable |
Полный CPL-текст (синоним source) |
order |
Порядок оценки политик |
Пример — show policy config:
rproxy> show policy config
Policy Configuration:
Version: 5
Rules: 42
Definitions: 10
Source: /etc/rproxy/policy.cpl
Age: 2h 15m
Has Previous: Yes
Пример — show policy order:
39.3.2. show sources — источники политик (STUB)¶
Описание: Зарезервирована для отображения источников политик. Не реализована.
Режим: Standard, Privileged, Config (MODES_ALL)
Вывод: % Show sources not yet implemented
39.4. CPL-утилиты¶
39.4.1. cpl view <file> — просмотр CPL с подсветкой¶
Описание: Открывает CPL-файл в TUI-просмотрщике с синтаксической подсветкой. Режим только для чтения (нельзя редактировать).
Режим: Standard, Privileged, Config (MODES_ALL)
Синтаксис:
39.4.2. cpl edit <file> — редактирование CPL в TUI¶
Описание: Открывает CPL-файл в полноценном TUI-редакторе с синтаксической подсветкой. Если файл не существует — создаёт новый.
Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)
Синтаксис:
Клавиши: - Ctrl+S — сохранить файл - Ctrl+Q — выход
Пример:
39.4.3. cpl parse <file> [-v] — парсинг и метаинформация¶
Описание: Парсит CPL-файл и отображает структурную информацию: имя политики, версию, слои с количеством правил, define-блоки, статус валидности.
Режим: Standard, Privileged, Config (MODES_ALL)
Синтаксис:
Параметры:
| Параметр | Описание |
|---|---|
<file> |
Путь к CPL-файлу |
-v |
Verbose — расширенный вывод |
Пример вывода:
rproxy> cpl parse /etc/rproxy/policy.cpl
Policy: default
Version: 1.0
Layers:
Proxy: 15 rules
SSL-Intercept: 3 rules
Forward: 5 rules
Cache: 2 rules
Total Rules: 25
Defines: 8
Status: Valid
Пример вывода (невалидный файл):
rproxy> cpl parse /tmp/broken.cpl
Policy: default
Version: 1.0
Layers:
Proxy: 10 rules
Total Rules: 10
Defines: 2
Status: Invalid (3 errors)
Warnings: 1
39.4.4. cpl validate <file> [--strict] — валидация CPL¶
Описание: Валидирует CPL-файл. С флагом --strict выполняет расширенные проверки.
Режим: Standard, Privileged, Config (MODES_ALL)
Синтаксис:
Параметры:
| Параметр | Описание |
|---|---|
<file> |
Путь к CPL-файлу |
--strict |
Строгая валидация |
Пример вывода (успех):
Пример вывода (с предупреждениями):
rproxy> cpl validate /etc/rproxy/policy.cpl --strict
ok - 25 rules, 4 layers validated
Warnings:
- Line 12: Define 'old_subnet' is never referenced
Пример вывода (ошибки):
rproxy> cpl validate /tmp/broken.cpl
% Validation failed:
- Line 5: Unknown field 'bad.field'
- Line 12: Unterminated define block
39.4.5. cpl format <file> [-o <output>] — форматирование CPL¶
Описание: Форматированный вывод CPL-файла. Результат выводится в консоль или сохраняется в указанный файл.
Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)
Синтаксис:
Параметры:
| Параметр | Описание |
|---|---|
<file> |
Входной CPL-файл |
-o <output> |
Путь для сохранения результата (опционально) |
Пример:
rproxy# cpl format /etc/rproxy/policy.cpl -o /tmp/formatted.cpl
Formatted output saved to: /tmp/formatted.cpl
39.4.6. cpl convert <file> -f <format> [-o <output>] — конвертация CPL¶
Описание: Конвертирует CPL-файл в другой формат.
Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)
Синтаксис:
Параметры:
| Параметр | Описание |
|---|---|
<file> |
Входной CPL-файл |
-f <format> |
Целевой формат: bluecoat, squid, pac, fortinet, cisco, juniper |
-o <output> |
Путь для сохранения (опционально; без -o выводит в консоль) |
Пример:
39.4.7. cpl check <file> — быстрая проверка синтаксиса¶
Описание: Быстрая проверка синтаксической корректности CPL-файла. Минимальный вывод.
Режим: Standard, Privileged, Config (MODES_ALL)
Синтаксис:
Пример вывода:
rproxy> cpl check /etc/rproxy/policy.cpl
ok - syntax is valid
rproxy> cpl check /tmp/broken.cpl
% Syntax error in CPL file
39.5. Inline-ввод политики¶
39.5.1. inline policy <type> <marker> — inline ввод CPL¶
Описание: Переводит CLI в режим inline-ввода для ввода CPL-текста прямо в консоли. Ввод завершается строкой-маркером.
Режим: Privileged (MODES_PRIVILEGED)
Синтаксис:
Параметры:
| Параметр | По умолчанию | Описание |
|---|---|---|
<type> |
local |
Тип политики |
<marker> |
EOF |
Строка-маркер завершения ввода |
Пример:
39.6. Stub-команды (не реализованы)¶
Следующие команды зарезервированы — они скрыты из автодополнения и справки, но остаются доступными для вызова. При выполнении выводят предупреждение о том, что функция ещё не реализована.
39.6.1. policy metrics (STUB)¶
Описание: Зарезервирована для отображения метрик политик.
Режим: Privileged (MODES_PRIVILEGED)
Синтаксис: policy metrics
39.6.2. policy trace <level> (STUB)¶
Описание: Зарезервирована для установки уровня трассировки политик. Пока не реализована.
Режим: Privileged (MODES_PRIVILEGED)
Синтаксис: policy trace <level>
Вывод:
rproxy# policy trace debug
% Warning: policy trace is not implemented in proxy.
% API endpoint /api/v1/policy/trace does not exist yet.
Requested trace level: debug
% No changes made - endpoint not available.
39.6.3. policy evaluate <url> (STUB)¶
Описание: Зарезервирована для оценки URL по текущей политике. В текущей реализации только парсит URL (без оценки) и выводит его составляющие.
Режим: Privileged (MODES_PRIVILEGED)
Синтаксис: policy evaluate <url>
Вывод:
rproxy# policy evaluate https://example.com/path
% Warning: policy evaluate is not fully implemented.
% API endpoint /api/v1/policy/evaluate does not exist yet.
URL parsed (local only, not evaluated against policy):
Scheme: https
Host: example.com
Port: 443
Path: /path
% To test URL against policy, use: curl -x proxy:port https://example.com/path
39.7. Сводная таблица команд¶
| Команда | Режим | Состояние |
|---|---|---|
policy status |
Privileged, Config | -- |
policy reload |
Privileged | -- |
policy rollback |
Privileged | -- |
policy rules |
Privileged, Config | -- |
policy source |
Privileged, Config | -- |
policy validate <file> |
Privileged | -- |
policy install <file> |
Privileged | -- |
install policy <file> |
Privileged | -- |
policy metrics |
Privileged | Зарезервирована |
policy trace <level> |
Privileged | Зарезервирована |
policy evaluate <url> |
Privileged | Зарезервирована |
show policy [sub] |
ALL | -- |
show sources |
ALL | Зарезервирована |
cpl view <file> |
ALL | -- |
cpl edit <file> |
Privileged, Config | -- |
cpl parse <file> [-v] |
ALL | -- |
cpl validate <file> [--strict] |
ALL | -- |
cpl format <file> [-o <out>] |
Privileged, Config | -- |
cpl convert <file> -f <fmt> [-o <out>] |
Privileged, Config | -- |
cpl check <file> |
ALL | -- |
inline policy <type> <marker> |
Privileged | -- |