В панели есть полноценный API, но к сожалению, документация по работе с ним пока не готова. Попробую вкратце описать ключевые моменты, но если что-то не будет понятно, уточняйте.
В папке /usr/local/vesta/bin расположены скрипты, которые одновременно являются функциями API. Если нужно создать пользователя, нужен скрипт v-add-user, если нужно удалить базу данных, это сделает скрипт v-delete-database и так далее по аналогии. Другими словами, если вы сделаете ls /usr/local/vesta/bin, то сможете получить представление о доступных функциях.
Если запустить скрипт без параметров, он выдает краткую справку об использовании:
Code: Select all
[root@v-test ~]# v-add-user
Error: not enought arguments
Usage: v-add-user USER PASSWORD EMAIL [PACKAGE] [FNAME] [LNAME]
Каждый скрипт возвращает return_code. Если return_code равен 0, значит операция заверишалсь успешно. Любая другая цифра будет обозначать ошибку. Актуальную таблицу кодов возврата всегда можно найти в файле /usr/local/vesta/func/main.sh
Code: Select all
OK=0
E_ARGS=1
E_INVALID=2
E_NOTEXIST=3
E_EXISTS=4
E_SUSPENDED=5
E_UNSUSPENDED=6
E_INUSE=7
E_LIMIT=8
E_PASSWORD=9
E_FORBIDEN=10
E_DISABLED=11
E_PARSING=12
E_DISK=13
E_LA=14
E_FTP=15
E_SSH=16
E_DB=17
E_RRD=18
E_UPDATE=19
E_RESTART=20
API вдохновлено идеями UNIX и поэтому вся информация хранится в простых текстовых файлах. Каждый скрипт решает только одну задачу. В случае успешного завершения скрипта, на экран ничего не выводится. Если произошла ошибка, то скрипт сразу завершает свою работу и выводит сообщение на экран.
Вернемся к созданию пользователя и проверим код возврата.
Code: Select all
[root@v-test ~]# v-add-user
Error: not enought arguments
Usage: v-add-user USER PASSWORD EMAIL [PACKAGE] [FNAME] [LNAME]
[root@v-test ~]# echo $?
1
По таблице выше 1 это E_ARGS, что означает недостаточное количество аргументов. Необязательные параметры заключены в квадтратные скобки. Для успешного создания пользователя нужно азадть всего 3 аргумента - имя пользователя, пароль и почтовый адрес. Если пакет не указан, то будет подставлен пакет по умолчанию, который называется default.
Помимо категории скриптов для создания и изменения, есть категория для отображения, такие срипты попадают под шаблон v-list-*. Скрипты могут отображать информацию в нескольких форматах. На данный момент поддерживается 3 формата: shell, plain и json. Первые два удобны для работы в командной строке.
Code: Select all
[root@v-test ~]# v-list-users shell
USER PACKAGE U_DISK U_BANDWIDTH SUSPENDED DATE
--------- --------- --------- --------- --------- ---------
admin default 3 0 no 2013-02-11
test default 1 0 no 2013-03-10
demo default 0 0 no 2013-03-18
Третий формат используется для работы веб-интерфейса, который для работы использует то же самое API. Для работы веб-интерфейса в систему устанавливается дополнительный веб-сервер nginx и php-fpm, для обработки php. Все запросы интерфейса выполняются под пользователем admin, которому разрешено выполнять функции api через sudo.
Теперь попробую конкретнее ответить на ваш вопрос по поводу создания пользователей. Тут возможны 2 варианта:
1) Можно ипользовать api напрямую, выполняя скрипты в /usr/local/vesta/bin, как это делает веб-интерфейс
2) Можно воспользоваться wrapper-ом веб-интерфейса для доступа к api.
В большинстве случаев, второй вариант будет релевантнее. Дальше про него. Кстати, совсем недавно была реализована интеграция billing системы WHMSC на его wrapper-а. В
модуле для whmcs реализованы ключевые функции, которые вероятно и вам интересны. Модуль умеет:
* создавать пользоватей
* удалять пользователей
* менять пароль пользователя
* добавлять web/mail/dns домены
К wrapper-у нужно обращаться POST запросами, передавая имя и пароль пользователя admin. Приведу несколько наиболее всотребованных примеров:
Code: Select all
# Создать пользователя demo
https://server-ip/api/?&user=admin&password=currentpwd&cmd=v-add-domain&arg1=demo&arg2=d3m0p4ssw0rd&[email protected]
# Добавить пользователю домен demo.vestacp.com
https://server-ip/api/?&user=admin&password=currentpwd&cmd=v-add-domain&arg1=demo&arg2=demo.vestacp.com
# Удалить пользователя включая его домены
https://server-ip/api/?&user=admin&password=currentpwd&cmd=v-delete-user&arg1=demo