Опубликовано

DSmanager — это уникальное, не имеющее аналогов решение, которое позволяет достигнуть нового уровня предоставления сервиса. С помощью данного программного продукта вы сможете значительно упростить работы по обслуживанию выделенных серверов, централизовать управление всеми серверами, подключенными к DSmanager, минимизировать затраты на установку и обслуживание, значительно сократить время простоев и обеспечить дополнительные услуги для своих клиентов.
DSmanager работает с разным сетевым оборудованием, но у нас в компании уже используется Mikrotik. Поэтому стояла задача провести интеграцию на уровне блокировке доступа к серверу клиента при отключении услуги, или же восстановление доступа к серверу при оплате.

Для этого я использовал систему addon в DsManager. Первое, что я сделал, это создал файл dsmgr_mod_disable.xml в /usr/local/ispmgr/etc. Файл содержит следующие строки, которые очень важны

ds.disable
ds.enable

name=»disable» — название скрипта, который будет исполняться.. скрипт нужно разместить в /usr/local/ispmgr/addon

Далее вы описываете евенты
ds.disable
ds.enable
Обязательно использовать final=»yes».

Вот листинг файла disable:

#!/usr/bin/perl
use CGI;
BEGIN { push @INC, '/usr/local/ispmgr/lib/perl' }
use Mgr;

my $Q = new CGI;
$func = $Q->param("func");
$elid = $Q->param("elid");

#получаем IP
($xmldoc, $xmlroot) = Mgr::query ('ds.edit', [ ['authinfo', 'admin:пароль_от_админ'],['elid',$elid] ]);
my $ip = $xmlroot->getElementsByTagName("ip");

if ($func eq "ds.enable")
{
system ('ssh -l admin -i /root/.ssh/id_dsa ip_of_mikrotik "/ip firewall filter remove [find dst-address=\"'.$ip.'\"]"');
}
elsif ($func eq "ds.disable")
{
system ('ssh -l admin -i /root/.ssh/id_dsa ip_of_mikrotik "/ip firewall filter add dst-address=\"'.$ip.'\" chain=forward action=reject place-before=1;"');
}

print "< ?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n";

В данном случае идет соединение сервера с DSManager с Микротиком через авторизацию через dsa-ключ. Первое создаем ключ
#ssh-keygen -t dsa

далее заливаем его на Mikrotik
ftp IP_Mikrotik
Connected to IP_Mikrotik.
220 mikrotik FTP server (MikroTik 2.9.16) ready
Name (IP_Mikrotik:user): admin
331 Password required for admin
Password:

ftp> put id_dsa.pub
226 ASCII transfer complete

Далее заходим на Mikrotik и делаем
#user ssh-keys import file=id_dsa.pub

И все должно заработать!

Share and Enjoy:
  • Мой Мир
  • Facebook
  • Twitter

Добавить комментарий