Еще один проект 2016-го года. Довольно интересный. Один из моих клиентов - веб-хостинговая компания из UK (из Шотландии!) - хотел создать серверный модуль WHMCS для взаимодействия с Plesk.
Стандартный модуль Plesk для WHMCS использовал API вызовы напрямую к Plesk серверу. Но, несмотря на наличии опции для использования защищенного соединения с сервером, клиент хотел обезопасить себя еще сильнее, используя SSH туннель и Plesk CLI API (и отключить возможность обращаться к Plesk API напрямую).
Модуль должен был обладать следующими возможностями:
Модуль создавал новые аккаунты в Plesk когда "создавался" новый продукт. Это могло быть сразу после оформления заказа или поступления оплаты за него. Или после принятия заказа вручную менеджером в панели администратора WHMCS (в зависимости от настроек конкретного продукта).
Каждый раз, когда модуль должен быть что-то сделать с Plesk сервером, он сначался подключался к нему через SSH, и затем вызывал необходимые Plesk CLI API команды в shell.
Насколько я помню, клиент также назначил свой, специальный shell на сервере Plesk пользователю SSH, который разрешал исполнение только определенных команд Plesk API - таким образом, добавляя еще один слой безопасности в систему.
Я использовал SSH2 PECL для SSH соединений, и cURL для инициации сброса пароля.
Чтобы предотвратить shell иньекции в наименования продуктов и т.п., я использовал escapeshellarg функцию PHP для любого ввода, используемого в shell командах.
Этот проект был очень интересным, и я получил опыт и с WHMCS (с которым я уже работал и до этого, делая различные модули и аддоны, и дорабатывая чужие) и с Plesk API.