[details] Add "easy mode" working for adding records

A form to add some data.
master
Julien Simonet 2014-01-24 22:42:34 +01:00
parent 5af67dcd67
commit b482903b0d
2 changed files with 100 additions and 4 deletions

View File

@ -106,7 +106,7 @@ get '/home' => sub {
prefix '/domain' => sub {
any ['post', 'get'] => '/update/:domain' => sub {
any ['post', 'get'] => '/updateraw/:domain' => sub {
# check if user is logged & if domain parameter is set
unless( session('login') && param('domain'))
@ -124,9 +124,86 @@ prefix '/domain' => sub {
, param('domain'));
redirect '/domain/details/' . param('domain');
}
}
};
};
any ['post', 'get'] => '/update/:domain' => sub {
unless( session('login') && param('domain') )
{
redirect '/';
}
else
{
my $type = param('type');
my $name = param('name');
my $value = param('value');
my $ttl = param('ttl');
my $app = initco();
my ($auth_ok, $user, $isadmin) = $app->auth(param('login'),
param('password') );
my $zone = $app->get_domain( session('login') , param('domain') );
given( $type )
{
when ('A') { my $a=$zone->a();
push( @$a, {name => $name,
class => "IN",
host => $value,
ttl => $ttl,
ORIGIN => $zone->origin} );
}
when ('AAAA') { my $aaaa=$zone->aaaa;
push(@$aaaa, {name => $name,
class => "IN",
host => $value,
ttl => $ttl,
ORIGIN => $zone->origin} );
}
when ('CNAME') { my $cname=$zone->cname;
push(@$cname,
{name => $name,
class => "IN",
host => $value,
ttl => $ttl,
ORIGIN => $zone->origin} );
}
when ('MX') { my $ptr=$zone->ptr;
push(@$ptr, {name => $name,
class => "IN",
host => $value,
ttl => $ttl,
ORIGIN => $zone->origin} );
}
when ('PTR') { my $ptr=$zone->ptr;
push(@$ptr, {name => $name,
class => "IN",
host => $value,
ttl => $ttl,
ORIGIN => $zone->origin} );
}
when ('NS') { my $ns=$zone->ns;
push(@$ns, {name => $name,
class => "IN",
host => $value,
ttl => $ttl,
ORIGIN => $zone->origin} );
}
}
$zone->new_serial();
my $cfg = new Config::Simple(dirname(__FILE__).'/../conf/config.ini');
my $ed = app::zone::edit->new(zdir=>$cfg->param('zones_path'), zname => param('domain'));
$ed->update($zone);
redirect '/domain/details/'.param('domain');
}
};
get '/details/:domain' => sub {

View File

@ -6,7 +6,7 @@
<h3>Fichier de zone de <% domain %></h3>
<% IF expert %>
<form class="form" action='/domain/update/<% domain %>' method="post" >
<form class="form" action='/domain/updateraw/<% domain %>' method="post" >
<textarea name="zoneupdated" rows="20" cols="100"><% domain_zone %></textarea>
<br />
<input type="submit" value="Mettre à jour la zone" />
@ -86,6 +86,25 @@
</table>
<a href='/domain/details/<% domain %>?expert=1'>Expert Mode</a>
<br /><br />
Ajouter un enregistrement : <br />
<form action='/domain/update/<% domain %>' method='post' >
<label for="name">Nom : </label><input type="text" name="name" />
<label for="type">Type : </label><select name="type" id="type" >
<option value="A">A</option>
<option value="AAAA">AAAA</option>
<option value="CNAME">CNAME</option>
<option value="MX">MX</option>
<option value="NS">NS</option>
<option value="PTR">PTR</option>
</select>
<label for="value">Valeur : </label><input type="text" id="value" name="value" />
<label for="input_ttl">TTL</label><input type="number" id="input_ttl" name="ttl" min='1' value="3"/>
<input type="submit">Valider</input>
</form>
<% END %>
</div>