Глава 38. Текстовый редактор CPL¶
Текстовый редактор CPL доступен в веб-интерфейсе по адресу Configuration > Policy > CPL Editor (маршрут /configuration/policy/cpl-editor). Это полноэкранный визуальный редактор для прямого редактирования CPL-файла политики с синтаксической подсветкой, валидацией и структурированным предпросмотром.
37.1. Режимы отображения¶
Редактор поддерживает четыре режима отображения, переключаемых в панели инструментов:
| Режим | Иконка | Описание |
|---|---|---|
| Visual | LayoutGrid | Визуальное представление правил — список правил с условиями и действиями, возможность добавления/удаления/дублирования/переупорядочивания правил через UI |
| Split | Columns | Слева — текстовый редактор CPL (с изменяемой шириной 200-600px), справа — структурированный предпросмотр. Разделитель перетаскивается мышью |
| Code | Code | Полноэкранный текстовый редактор CPL на полную ширину |
| Text | FileText | Прямое редактирование исходного текста CPL в textarea |
По умолчанию используется режим Visual.
37.2. Навигация по секциям¶
Вверху редактора расположены горизонтальные вкладки для переключения между секциями (слоями) CPL:
| Секция | ID | Описание |
|---|---|---|
| Proxy | proxy |
Основные правила веб-доступа |
| Cache | cache |
Управление кэшированием |
| Forward | forward |
Маршрутизация (forwarding) |
| SSL | ssl |
SSL-доступ |
| SSL-Intercept | ssl_intercept |
TLS-инспекция (MITM) |
| Admin | admin |
Административный доступ |
| DNS-Proxy | dns_proxy |
DNS-прокси фильтрация |
| Exception | exception |
Страницы исключений |
Каждая вкладка отображает счётчик правил в скобках (например, Proxy (12)). Активная вкладка подсвечивается синим. При клике на вкладку переключается активная секция.
37.3. Синтаксическая подсветка¶
Исходный текст CPL разбивается на токены, каждый из которых имеет один из следующих типов:
| Тип токена | Что подсвечивает |
|---|---|
tag |
Теги секций: <Proxy>, <Forward>, </SSL-Intercept> и др. |
keyword |
Ключевые слова: define, end, condition, action |
field |
Условия (80+ полей): url.domain=, client.address=, geo.src.country= и др. |
operator |
Операторы: =, !=, .regex=, .prefix=, .suffix= |
value |
Строковые значения в кавычках, действия: allow, deny, redirect |
comment |
Комментарии, начинающиеся с ; |
text |
Прочий текст |
37.4. Возможности редактирования¶
Основные функции:
| Функция | Описание |
|---|---|
| Нумерация строк | Номера строк отображаются в левом гаттере |
| Undo / Redo | Ctrl+Z / Ctrl+Y (Cmd+Z / Cmd+Y на macOS) — отмена и повтор последних изменений |
| Автодополнение | Ctrl+Space — подсказки из define-объектов и значений полей |
| Встроенная валидация | Ошибки подсвечиваются красным прямо в тексте |
| Загрузка с бэкенда | При открытии редактора политика загружается автоматически; несохранённые изменения при этом не перезаписываются |
| Автообновление | Редактор автоматически обновляется при изменении политики из другого источника (CLI, другая вкладка). Если есть несохранённые изменения, отображается предупреждение с кнопкой Reload |
| Откат | Кнопка Rollback открывает диалог возврата к предыдущей версии |
Toolbar (режим Visual):
- Add Rule — кнопка добавления нового правила в текущую секцию
- Duplicate — дублирование выбранного правила
- Delete — удаление выбранного правила (с диалогом подтверждения)
- Undo / Redo — кнопки истории изменений
- Rollback — откат к предыдущей версии политики
37.5. Сохранение и применение¶
Внизу экрана расположена панель применения политики:
- Индикатор несохранённых изменений
- Кнопка Save Policy — генерирует CPL из текущего состояния и отправляет его на установку (
POST /api/v1/policy/install) - Кнопка Reload — принудительная загрузка политики с бэкенда
37.6. Интеграция с бэкендом¶
Все три страницы политик (CPL Editor, VPM, Object Library) используют единое общее хранилище состояния:
| Операция | API endpoint | Описание |
|---|---|---|
| Загрузка | GET /api/v1/policy/rules |
Получение CPL-текста; парсинг в структуры store |
| Сохранение | POST /api/v1/policy/install |
Запись и горячая перезагрузка политики прокси без перезапуска |
| Валидация | POST /api/v1/policy/validate |
Проверка без установки |
| Загрузка файла | POST /api/v1/policy/validate |
Загрузка .cpl файла: валидация, затем разбор и загрузка в хранилище |