affichage des détails d'une zone et mise à jour

master
Philippe Pittoli 2014-01-21 01:33:17 +01:00
parent 3c78751240
commit f45b7afc4c
6 changed files with 122 additions and 151 deletions

View File

@ -92,6 +92,12 @@ sub delete_domain {
$ze->del();
}
sub update_domain_raw {
my ($self, $login, $zone, $domain) = @_;
my $ze = app::zone::edit->new(zname => $domain, zdir => $self->zdir);
$ze->update_raw($zone);
}
sub update_domain {
my ($self, $login, $zone, $domain) = @_;
my $ze = app::zone::edit->new(zname => $domain, zdir => $self->zdir);

View File

@ -70,6 +70,27 @@ sub update {
$rndc->reload($self->zname);
}
=pod
udpate via the raw content of the zonefile
=cut
sub update_raw {
my ($self, $zonetext) = @_;
my $file = '/tmp/'.$self->zname;
# write the updated zone file to disk
my $newzone;
open($newzone, '>', $file) or die "error";
print $newzone $zonetext;
close $newzone;
my $zonefile = DNS::ZoneParse->new($file, $self->zname);
unlink($file);
$self->update($zonefile);
}
# sera utile plus tard, pour l'interface
sub new_tmp {
my ($self) = @_;

View File

@ -108,7 +108,8 @@ get '/mapage' => sub {
}
};
get '/details' => sub {
any ['post', 'get'] => '/domainupdate/:domain' => sub {
# check if user is logged & if domain parameter is set
unless( session('login') && param('domain'))
{
@ -117,30 +118,41 @@ get '/details' => sub {
else
{
my $app = initco();
my ($auth_ok, $user, $isadmin) = $app->auth( param('login') );
my @zones = ();
my $zone_properties;
#say 'dump : ' . dump $user->get_zone( param('domain') );
my ($auth_ok, $user, $isadmin) = $app->auth(param('login'),
param('password') );
for( $user->get_zone( param('domain') ) )
{
$app->update_domain_raw(session('login')
, param('zoneupdated')
, param('domain'));
if( ref($_) eq 'HASH' and exists $_->{addr} ) {
push( @zones, $_ ) when $_->{addr} ne '@';
$zone_properties = $_ when $_->{addr} eq '@';
}
}
template details => {
login => session('login')
, domain => param('domain')
, zones => \@zones
, zone_properties => $zone_properties };
redirect '/mapage';
}
};
get '/details/:domain' => sub {
# check if user is logged & if domain parameter is set
unless( session('login') && param('domain'))
{
redirect '/';
}
else
{
my $app = initco();
my ($auth_ok, $user, $isadmin) = $app->auth(param('login'),
param('password') );
my $zone = $app->get_domain(session('login') , param('domain'));
template details => {
login => session('login')
, domain => param('domain')
, domain_zone => $zone->output() };
}
};
any ['get', 'post'] => '/administration' => sub {
unless( session('login') )

View File

@ -1,105 +1,25 @@
<div id="sidebar">
Welcome <% login %> !
<form action='logout' method="get" accept-charset="utf-8">
Welcome <% login %> !
<form action='logout' method="post" accept-charset="utf-8">
<input type="submit" name="logout" value="Déconnexion">
</form>
<% IF admin == 1 %>
<a href='administration'>Page d'administration</a>
<% END %>
<a href='/'>Accueil</a>
<% IF admin == 1 %>
<a href='administration'>Page d'administration</a>
<% END %>
<a href='/'>Accueil</a>
</div>
<div id="page">
<% IF domain && domain.size %>
<table border='1px'>
<caption>Les zones de <%domain%></caption>
<tr>
<th>Host</th>
<th>Adress</th>
<th>Type</th>
<th>Domain</th>
</tr>
<% FOREACH zone in zones %>
<tr>
<td>
<% IF zone.host %>
<% zone.host %>
<%END%>
</td>
<td>
<% IF zone.addr %>
<% zone.addr %>
<% END %>
</td>
<td>
<% IF zone.type %>
<% zone.type %>
<%END%>
</td>
<td>
<% IF zone.domain %>
<% zone.domain %>
<%END%>
</td>
</tr>
<% END %>
</table>
<br/>
<table border='1px'>
<caption>Domain Properties</caption>
<tr>
<th>Admin de la zone</th>
<th>Serial</th>
<th>Primary</th>
<th>Retry</th>
<th>Domain</th>
<th>Refresh</th>
<th>Address</th>
<th>Expire</th>
</tr>
<tr>
<td>
<% IF zone_properties.admin %>
<%zone_properties.admin%><br/>
<%END%>
<td>
<% IF zone_properties.serial %>
<%zone_properties.serial%>
<%END%>
</td>
<td>
<% IF zone_properties.primary %>
<%zone_properties.primary%>
<%END%>
</td>
<td>
<% IF zone_properties.retry %>
<%zone_properties.retry%>
<%END%>
</td>
<td>
<% IF zone_properties.domain %>
<%zone_properties.domain%>
<%END%>
</td>
<td>
<% IF zone_properties.refresh %>
<%zone_properties.refresh%>
<%END%>
</td>
<td>
<% IF zone_properties.addr %>
<%zone_properties.addr%>
<%END%>
</td>
<td>
<% IF zone_properties.expire %>
<%zone_properties.expire%>
<%END%>
</td>
</tr>
</table>
<% ELSE %>
Vous n'avez pas encore de noms de domaines… Voulez-vous en réserver un ?
<% END %>
<h3>Fichier de zone de <% domain %></h3>
<form action='/domainupdate/<% domain %>' method="post" >
<label for='zone'>Votre zone :</label>
<br />
<textarea id='zone' name="zoneupdated" rows="20" cols="100"><% domain_zone %></textarea>
<br />
<input type="submit" value="Mettre à jour la zone">
</form>
</div>

View File

@ -1,20 +1,24 @@
<div id="sidebar">
<% IF logged == 1 %>
<div id="sidebar">
<% IF logged == 1 %>
Welcome <% login %> !
<form action='logout' method="get" accept-charset="utf-8">
<input type="submit" name="logout" value="Déconnexion">
</form>
<a href='mapage'>Votre page de configuration</a><br />
<% IF admin == 1 %>
<a href='administration'>Page d'administration</a><br />
<% END %>
<% IF domains %>
Liens rapides :<br />
<% FOREACH domain IN domains %>
<a href="details?domain=<% domain %>"><% domain %> </a><br />
<% END %>
<% END %>
<% ELSE %>
<a href='mapage'>Votre page de configuration</a><br />
<% IF admin == 1 %>
<a href='administration'>Page d'administration</a><br />
<% END %>
<% IF domains %>
Liens rapides :<br />
<% FOREACH domain IN domains %>
<a href="details/<% domain %>"><% domain %></a><br />
<% END %>
<% END %>
<% ELSE %>
<form action="login" method="post" accept-charset="utf-8">
<label for="login">Votre login : </label>
<input type="text" name="login" value="" />
@ -22,23 +26,31 @@
<input type="password" name="password" value="" />
<p><input type="submit" value="Connexion &rarr;" /></p>
</form>
<% END %>
</div>
<div id="page">
<h1 style="text-align:center">Bienvenue sur netlib.re ! </h1>
<p style="text-align:center;">Netlib.re est un projet qui permettra à tout un chacun d'obtenir un sous-domaine de netlib.re, gratuitement et simplement. </p>
<br />
<h2>Pourquoi ?</h2>
Nous pensons qu'Internet est et doit rester un lieu où l'utilisateur crée le contenu. Ce projet permettra donc d'apporter un peu notre pierre à l'édifice en aidant les gens n'ayant pas forcément de compétences en informatique de créer un nom de domaine.<br />
Remarque : ce site ne fera pas d'hébergement, il founira uniquement un serveur de nom de domaine automatisé.
<h2>Qui sommes-nous ?</h2>
<p>Une bande d'informaticiens passionnés, voulant aider la communauté.</p>
<h2>Ce qui sera proposé</h2>
À venir sur le site :
<ul>
<li>visualisation de la liste des domaines déjà réservés et utilisés ; </li>
<li>création d'un compte vous permettant de demander un nom de domaine en *.netlib.re (un administrateur devra le valider) ;</li>
<li>nous aimerions également proposer une mise à jour dynamique de votre adresse (dyndns).</li>
</ul>
<p>En résumé : cherchez votre nom de domaine, réservez-le, on s'occupe du reste ! </p>
</div>
<% END %>
</div>
<div id="page">
<h1 style="text-align:center">Bienvenue sur netlib.re !</h1>
<p style="text-align:center;">Netlib.re est un projet qui permettra à tout un chacun d'obtenir un sous-domaine de netlib.re, gratuitement et simplement. </p>
<br />
<h2>Pourquoi ?</h2>
Nous pensons qu'Internet est et doit rester un lieu où l'utilisateur crée le contenu.
Ce projet permettra donc d'apporter un peu notre pierre à l'édifice en aidant les gens n'ayant pas forcément de compétences en informatique de créer un nom de domaine.<br />
Remarque : ce site ne fera pas d'hébergement, il founira uniquement un serveur de nom de domaine automatisé.
<h2>Qui sommes-nous ?</h2>
<p>Une bande d'informaticiens passionnés, voulant aider la communauté.</p>
<h2>Ce qui sera proposé</h2>
À venir sur le site :
<ul>
<li>visualisation de la liste des domaines déjà réservés et utilisés ; </li>
<li>création d'un compte vous permettant de demander un nom de domaine en *.netlib.re (un administrateur devra le valider) ;</li>
<li>nous aimerions également proposer une mise à jour dynamique de votre adresse (dyndns).</li>
</ul>
<p>En résumé : cherchez votre nom de domaine, réservez-le, on s'occupe du reste ! </p>
</div>

View File

@ -17,7 +17,7 @@
<% FOREACH domain in domains %>
<tr>
<td>
<%domain%>
<a href="details/<%domain%>" ><%domain%></a>
</td>
<td>
<a href="domaindel/<%domain%>">Supprimer</a>