Page 1 of 1
Блокировка WEB Домена из стороннего скрипта
Posted: Fri Jun 14, 2013 7:29 am
by AlexART
Добрый день,
где хранятся данные о заблокированных web доменах?
Идея в следующем, необходима возможность заблокировать домен не вручную, а из моего скрипта php. Так сказать возможность для биллинговой системы.
Re: Блокировка WEB Домена из стороннего скрипта
Posted: Fri Jun 14, 2013 10:10 am
by skid
Пользовательские данные хранятся в текстовых файлах, в папке /usr/local/vesta/data/users/%username%
Файл называется web.conf
Однако, изменение ключа SUSPENDED само по себе ничего не дает. Чтобы увидеть результат, нужно будет пересоздать конфигурационные файлы командой v-rebuild-web %username%, но я советую использовать другой подход.
Для решения этой задачи лучше использовать Web API. Оно работает без сохранения состояний и дает практически полный доступ к возможностям консольного ядра. Для дого чтобы из консоли заблокировать сайт test.com, который принадлежит пользователю demo, надо выполнить
Code: Select all
v-suspend-web-domain demo test.com
Для того чтобы выполнить эту команду через Web API, нужно сформировать POST запрос к
https://servername:8083/api/, передав следующие параметры
Code: Select all
user=admin
password=%ADMIN_PASSWORD%
cmd=v-suspend-web-domain
arg1=demo
arg2=test.com
returncode=yes
Вместо ADMIN_PASSWORD нужно подставить админский пароль. Если полученный ответ сервера равен 0, значит все хорошо, домен заблокирован. Если больше нуля, значит что-то не так.
Посмотрите на то как реализована функция vesta_SuspendAccoun в
модуле WHMCS
Re: Блокировка WEB Домена из стороннего скрипта
Posted: Fri Jun 14, 2013 12:12 pm
by AlexART
Спасибо огромное.
Если вам не сложно, могли бы вы набросать примерный набор параметров $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 Домена из стороннего скрипта
Posted: Sat Jun 15, 2013 9:31 am
by skid
Ок, ловите пример ;)
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 Домена из стороннего скрипта
Posted: Sat Jun 15, 2013 9:32 am
by skid
Для разблокировки домена, замените v-suspend-web-domain на v-unsuspend-web-domain
Re: Блокировка WEB Домена из стороннего скрипта
Posted: Sat Jun 15, 2013 9:33 am
by skid
Иногда удобно блокировать всего пользователя целиком.
Code: Select all
$params['cmd'] = 'v-suspend-user';
$params['arg1'] = 'demo';
В arg2, в таком случае не нужно ничего передавать
Re: Блокировка WEB Домена из стороннего скрипта
Posted: Sun Jun 16, 2013 12:17 pm
by AlexART
Спасибо)