Перейти к содержанию

Глава 40. CLI команды политик

Управление политиками через командную строку Redcoat CLI. Всего доступна 21 команда управления политиками плюс 2 команды show и 1 команда inline-ввода.

Реализована 21 полнофункциональная команда и 3 зарезервированные команды (скрыты из автодополнения и справки).

39.1. Команды управления политикой

39.1.1. policy status — статус загруженной политики

Описание: Отображает информацию о текущей загруженной политике: версию, количество правил, define-блоков, путь к файлу, возраст и наличие предыдущей версии для отката.

Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)

Синтаксис:

policy status

Пример вывода:

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)

Синтаксис:

policy reload

Пример вывода (успех):

rproxy# policy reload
Reloading policy...
ok
  Version: 6
  Rules: 42
  Load time: 234 ms

Пример вывода (ошибка):

rproxy# policy reload
Reloading policy...
% Policy reload failed.

39.1.3. policy rollback — откат к предыдущей версии

Описание: Восстанавливает предыдущую версию политики. Файловая ротация: текущий .cpl перемещается в .staging, .prev становится текущим .cpl.

Режим: Privileged (MODES_PRIVILEGED)

Синтаксис:

policy rollback

Пример вывода:

rproxy# policy rollback
Rolling back to previous policy version...
ok
  Rolled back from version 7 to version 6

Пример вывода (ошибка):

rproxy# policy rollback
Rolling back to previous policy version...
% Policy rollback failed.

39.1.4. policy rules — вывод CPL-текста с заголовком

Описание: Отображает полный CPL-текст загруженной политики с заголовком Policy Rules:.

Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)

Синтаксис:

policy rules

Пример вывода:

rproxy# policy rules
Policy Rules:

<Proxy>
    url.domain=malware.example deny
    allow

39.1.5. policy source — вывод сырого CPL-текста

Описание: Отображает полный CPL-текст загруженной политики без заголовков (без дополнительного оформления).

Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)

Синтаксис:

policy source

39.2. Команды установки и валидации

39.2.1. policy validate <file> — валидация файла политики

Описание: Проверяет синтаксис CPL-файла без применения. Читает файл и отправляет содержимое на валидацию.

Режим: Privileged (MODES_PRIVILEGED)

Синтаксис:

policy validate <file>

Параметры:

Параметр Описание
<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)

Синтаксис:

policy install <file>

Параметры:

Параметр Описание
<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

Пример ошибки (файл не найден):

rproxy# policy install /tmp/missing.cpl
% File not found: /tmp/missing.cpl

39.2.3. install policy <file> — алиас для policy install

Описание: Альтернативная форма записи команды policy install. Выполняет то же действие, что и policy install.

Режим: Privileged (MODES_PRIVILEGED)

Синтаксис:

install policy <file>

39.3. Show-команды политики

39.3.1. show policy [config|source|executable|order] — информация о политике

Описание: Отображает различные аспекты загруженной политики в зависимости от подкоманды.

Режим: Standard, Privileged, Config (MODES_ALL)

Алиасы: sh policy

Синтаксис:

show policy [config|source|executable|order]

Подкоманды:

Подкоманда Описание
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:

rproxy> show policy order
Policy evaluation order: VPM, Local, Central, Forward

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)

Синтаксис:

cpl view <file>

39.4.2. cpl edit <file> — редактирование CPL в TUI

Описание: Открывает CPL-файл в полноценном TUI-редакторе с синтаксической подсветкой. Если файл не существует — создаёт новый.

Режим: Privileged, Config (MODES_PRIVILEGED_CONFIG)

Синтаксис:

cpl edit <file>

Клавиши: - Ctrl+S — сохранить файл - Ctrl+Q — выход

Пример:

rproxy# cpl edit /etc/rproxy/policy.cpl
; ... TUI-редактор с подсветкой ...
File saved successfully

39.4.3. cpl parse <file> [-v] — парсинг и метаинформация

Описание: Парсит CPL-файл и отображает структурную информацию: имя политики, версию, слои с количеством правил, define-блоки, статус валидности.

Режим: Standard, Privileged, Config (MODES_ALL)

Синтаксис:

cpl parse <file> [-v]

Параметры:

Параметр Описание
<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)

Синтаксис:

cpl validate <file> [--strict]

Параметры:

Параметр Описание
<file> Путь к CPL-файлу
--strict Строгая валидация

Пример вывода (успех):

rproxy> cpl validate /etc/rproxy/policy.cpl
ok - 25 rules, 4 layers validated

Пример вывода (с предупреждениями):

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)

Синтаксис:

cpl format <file> [-o <output>]

Параметры:

Параметр Описание
<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)

Синтаксис:

cpl convert <file> -f <format> [-o <output>]

Параметры:

Параметр Описание
<file> Входной CPL-файл
-f <format> Целевой формат: bluecoat, squid, pac, fortinet, cisco, juniper
-o <output> Путь для сохранения (опционально; без -o выводит в консоль)

Пример:

rproxy# cpl convert /etc/rproxy/policy.cpl -f squid -o /tmp/squid.conf
Converted to squid format

39.4.7. cpl check <file> — быстрая проверка синтаксиса

Описание: Быстрая проверка синтаксической корректности CPL-файла. Минимальный вывод.

Режим: Standard, Privileged, Config (MODES_ALL)

Синтаксис:

cpl check <file>

Пример вывода:

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)

Синтаксис:

inline policy <type> <marker>

Параметры:

Параметр По умолчанию Описание
<type> local Тип политики
<marker> EOF Строка-маркер завершения ввода

Пример:

rproxy# inline policy local EOF
<Proxy>
    url.domain=malware.example deny
    allow
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 --