Заменить файл конфигурации по сети

/configFile commit
🔴 Без проверки содержимого

Записывает присланные файлы конфигурации на узел — один или несколько за запрос.

Вызов — POST /configFile формой multipart/form-data: op=commit, а для каждого файла — file.N.name (полный путь), file.N.op=write и file.N.content. Поле format — json или xml — задаёт вид ответа, по умолчанию xml.

🔴 Проверки содержимого нет: точка запишет и сломанную конфигурацию. И сама она ничего не применяет — чтобы запись подействовала, конфигурацию перечитывают отдельно.

Файл из подкаталога записать можно, только если он уже подключён из главной конфигурации.

Запись требует ключа из http-api-key в заголовке X-API-Key — независимо от уровня адреса в http-access.

Главная ловушка — считать успешный ответ проверкой. success значит «файл записан», а не «конфигурация верна». Ошибка всплывёт при следующем перечитывании — а на диске к тому времени уже новый файл. Безопасный порядок: сохранить прежний файл, записать новый, проверить командой test config и только потом перечитывать.
Что делает Хаб. Не пользуется. Файлы он кладёт по SSH, прежние сохраняет рядом, проверяет конфигурацию командой test config и только потом перечитывает; на любой ошибке возвращает прежние файлы.
Рекомендуемые значения

Поля формы:

Поле Обязательно Что задаёт
op да commit — записать файлы
file.N.name да полный путь N-го файла
file.N.op да write — записать его
file.N.content да содержимое; с @ curl подставит локальный файл
format нет json или xml, по умолчанию xml
Поля формы, отсутствие проверки, необходимость перечитать и обязательный ключ — из руководства (§ 8.2, § 8.2.2). Безопасный порядок записи — наш.
Пример в конфигурации
# записать файл и сразу проверить конфигурацию на узле
curl -s -X POST -H 'X-API-Key: KEY' 'http://127.0.0.1:8080/configFile' -F op=commit -F format=json -F file.1.name=/etc/pmta/config -F file.1.op=write -F file.1.content='@/tmp/config.new'pmta test config
Точка только пишет: проверка и перечитывание — отдельные шаги, и делать их нужно до того, как на новый файл понадеется очередь.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
После записи убедиться, что конфигурация верна, и только затем перечитать:
pmta test config
pmta reload
Если test config печатает ошибку, перечитывать нельзя: вернуть прежний файл и повторить проверку.
В Хабе
Цена ошибки
опасно: последствия переживут откат
Сценарии
Жизненный цикл конфигурации