Плагин для ISPManager, позволяет автоматом создавать slave зоны на сервисе ns2.trifle.net
Добавил: 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