Добавил: Amro Дата: 08.12.2012 17:51
Прикупили сервак у Hetzner.de. Думаю возьму доп. IP заюзаю DNS как primary так и salve на одном серваке (знаю что это не правильно, но как выход можно было бы).
Но не тут-то было чтобы выбить у немцев доп.IP нужно потратить уйму нервов. Придумывать причину неодходимости доп. IP я всё-же не стал и решил идти другим путём.
Многие наверное вкурсе, что есть бесплатные Secondary DNS сервисы такие как xname.org, ns2.trifle.net, secondary.net.ua а есть даже примари primaryns.kiev.ua.
Наиболее удобным по добавлению зон мне показался всё-таки ns2.trifle.net
Идея плагина:
Теперь встала потребность в автоматическом создании slave зон на ns2.trifle.net. Всё-таки каждый раз прописывать ручками это тот ещё геморой, в особенности если много клиентов и частенько приходится добавлять домены.
Реализация:
У ISP есть замечательный механизм событий, можно свои события добавлять практически везде. Но нам нужны только события связанные с добавлением/изменением и удалением доменов (domain.edit и domain.delete.confirm).
Итак шаблон ( кладём его в usr/local/ispmgr/etc ):
ispmgr_mod_secondarydns.xml
Код:
<code><?xml version="1.0" encoding="UTF-8"?> <mgrdata> <handler name="secondarydns.pl" type="cgi"> <event final="yes">domain.edit</event> <event final="yes">domain.delete.confirm</event> </handler> </mgrdata>
Перловый плагин ( кладём его в usr/local/ispmgr/addon ):
Здесь нужно только указать ваш логин/пароль от trifle.net и IP-по умолчанию.
secondarydns.pl
#!/usr/bin/perl use strict; use warnings; use CGI qw/:standard/; use LWP::UserAgent; use HTTP::Response; use Getopt::Long; use Pod::Usage; use Text::Iconv; use Env; my $ua = new LWP::UserAgent; $ua->agent("Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)"); $ua->cookie_jar({}); $ua->timeout(60); my $login = "Ваш логин на trifle.net"; my $pass = "Ваш pass на trifle.net"; my $site = 'http://'.$login.':'.$pass.'@ns2.trifle.net/'; my $Q = CGI->new; my $res = ''; my $name = $Q->param('name'); my $ip = $Q->param('ip'); my $func = $Q->param('func'); my $elid = $Q->param('elid'); if($ip eq "") { #IP адрес по-умолчанию $ip = "xx.xx.xx.xx"; } # Добавление зоны if ($func eq "domain.edit") { if ($Q->param("sok") && $elid eq "") { $res = $ua->get($site.'main.php?action=add&zona='.$name.'&ipaddr='.$ip); } } # Удаление зоны if ($func eq "domain.delete.confirm") { if ($elid ne "") { $res = $ua->get($site.'main.php?zona='.$elid.'&action=delete'); } } # Редактирование зоны if ($func eq "domain.edit") { if($Q->param("sok") && $elid ne "") { $res = $ua->get($site.'main.php?zona='.$elid.'&action=delete'); $res = $ua->get($site.'main.php?action=add&zona='.$name.'&ipaddr='.$ip); } }
Пользуемся, юзаем, забываем о ручном добавлении зон на ns2.trifle.net.
comments powered by HyperComments