We are happy to announce that Vesta is back under active development as of 25 February 2024. We are working on v1 candidate and expect to engage more with the community over the coming months. We are committed to open source, and we encourage contributors to help us build the future of Vesta.
Блокировка WEB Домена из стороннего скрипта
Блокировка WEB Домена из стороннего скрипта
Добрый день,
где хранятся данные о заблокированных web доменах?
Идея в следующем, необходима возможность заблокировать домен не вручную, а из моего скрипта php. Так сказать возможность для биллинговой системы.
где хранятся данные о заблокированных web доменах?
Идея в следующем, необходима возможность заблокировать домен не вручную, а из моего скрипта php. Так сказать возможность для биллинговой системы.
Re: Блокировка WEB Домена из стороннего скрипта
Пользовательские данные хранятся в текстовых файлах, в папке /usr/local/vesta/data/users/%username%
Файл называется web.conf
Однако, изменение ключа SUSPENDED само по себе ничего не дает. Чтобы увидеть результат, нужно будет пересоздать конфигурационные файлы командой v-rebuild-web %username%, но я советую использовать другой подход.
Для решения этой задачи лучше использовать Web API. Оно работает без сохранения состояний и дает практически полный доступ к возможностям консольного ядра. Для дого чтобы из консоли заблокировать сайт test.com, который принадлежит пользователю demo, надо выполнить
Для того чтобы выполнить эту команду через Web API, нужно сформировать POST запрос к https://servername:8083/api/, передав следующие параметры
Вместо ADMIN_PASSWORD нужно подставить админский пароль. Если полученный ответ сервера равен 0, значит все хорошо, домен заблокирован. Если больше нуля, значит что-то не так.
Посмотрите на то как реализована функция vesta_SuspendAccoun в модуле WHMCS
Файл называется web.conf
Однако, изменение ключа SUSPENDED само по себе ничего не дает. Чтобы увидеть результат, нужно будет пересоздать конфигурационные файлы командой v-rebuild-web %username%, но я советую использовать другой подход.
Для решения этой задачи лучше использовать Web API. Оно работает без сохранения состояний и дает практически полный доступ к возможностям консольного ядра. Для дого чтобы из консоли заблокировать сайт test.com, который принадлежит пользователю demo, надо выполнить
Code: Select all
v-suspend-web-domain demo test.com
Code: Select all
user=admin
password=%ADMIN_PASSWORD%
cmd=v-suspend-web-domain
arg1=demo
arg2=test.com
returncode=yes
Посмотрите на то как реализована функция vesta_SuspendAccoun в модуле WHMCS
Re: Блокировка WEB Домена из стороннего скрипта
Спасибо огромное.
Если вам не сложно, могли бы вы набросать примерный набор параметров $params для функции:
Заранее очень благодарен.
Если вам не сложно, могли бы вы набросать примерный набор параметров $params для функции:
Code: Select all
function vesta_SuspendAccount($params) {
// Execute only if there is assigned server
if ($params["server"] == 1) {
// Prepare variables
$postvars = array(
'user' => $params["serverusername"],
'password' => $params["serverpassword"],
'hash' => $params["serveraccesshash"],
'cmd' => 'v-suspend-user',
'arg1' => $params["username"]
);
$postdata = http_build_query($postvars);
// Susupend user account
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://' . $params["serverhostname"] . ':8083/api/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
$answer = curl_exec($curl);
}
if($answer == 'OK') {
$result = "success";
} else {
$result = $answer;
}
}
Re: Блокировка WEB Домена из стороннего скрипта
Ок, ловите пример ;)
Code: Select all
<?php
// Define params for
$params['hostname'] = 'vesta-server-host.com';
$params['port'] = '8083';
$params['user'] = 'admin';
$params['password'] = 'p4sw0rd';
$params['cmd'] = 'v-suspend-web-domain';
$params['returncode'] = 'yes';
$params['arg1'] = 'demo';
$params['arg2'] = 'test.com';
function vesta_api_query($params) {
// Prepare post request
$postvars = array(
'user' => $params['user'],
'password' => $params['password'],
'returncode' => $params['returncode'],
'cmd' => $params['cmd'],
'arg1' => $params['arg1'],
'arg2' => $params['arg2'],
);
$postdata = http_build_query($postvars);
// Run api query
$curl = curl_init();
$curl_url = 'https://' . $params["hostname"];
$curl_url .= ':' . $params["port"] .'/api/';
curl_setopt($curl, CURLOPT_URL, $curl_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
$answer = curl_exec($curl);
// Check result
if ($answer == 0) {
return true;
}
return false;
}
if (vesta_api_query($params)) {
echo "Query successfuly completed\n";
} else {
echo "Query returned error\n";
}
Re: Блокировка WEB Домена из стороннего скрипта
Для разблокировки домена, замените v-suspend-web-domain на v-unsuspend-web-domain
Re: Блокировка WEB Домена из стороннего скрипта
Иногда удобно блокировать всего пользователя целиком.
В arg2, в таком случае не нужно ничего передавать
Code: Select all
$params['cmd'] = 'v-suspend-user';
$params['arg1'] = 'demo';