3
0

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

This commit is contained in:
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(); $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 { sub update_domain {
my ($self, $login, $zone, $domain) = @_; my ($self, $login, $zone, $domain) = @_;
my $ze = app::zone::edit->new(zname => $domain, zdir => $self->zdir); my $ze = app::zone::edit->new(zname => $domain, zdir => $self->zdir);

View File

@ -70,6 +70,27 @@ sub update {
$rndc->reload($self->zname); $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 # sera utile plus tard, pour l'interface
sub new_tmp { sub new_tmp {
my ($self) = @_; 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 # check if user is logged & if domain parameter is set
unless( session('login') && param('domain')) unless( session('login') && param('domain'))
{ {
@ -117,30 +118,41 @@ get '/details' => sub {
else else
{ {
my $app = initco(); my $app = initco();
my ($auth_ok, $user, $isadmin) = $app->auth( param('login') ); my ($auth_ok, $user, $isadmin) = $app->auth(param('login'),
my @zones = (); param('password') );
my $zone_properties;
#say 'dump : ' . dump $user->get_zone( param('domain') );
for( $user->get_zone( param('domain') ) ) $app->update_domain_raw(session('login')
{ , param('zoneupdated')
, param('domain'));
if( ref($_) eq 'HASH' and exists $_->{addr} ) { redirect '/mapage';
push( @zones, $_ ) when $_->{addr} ne '@';
$zone_properties = $_ when $_->{addr} eq '@';
}
}
template details => {
login => session('login')
, domain => param('domain')
, zones => \@zones
, zone_properties => $zone_properties };
} }
}; };
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 { any ['get', 'post'] => '/administration' => sub {
unless( session('login') ) unless( session('login') )

View File

@ -1,6 +1,6 @@
<div id="sidebar"> <div id="sidebar">
Welcome <% login %> ! Welcome <% login %> !
<form action='logout' method="get" accept-charset="utf-8"> <form action='logout' method="post" accept-charset="utf-8">
<input type="submit" name="logout" value="Déconnexion"> <input type="submit" name="logout" value="Déconnexion">
</form> </form>
<% IF admin == 1 %> <% IF admin == 1 %>
@ -10,96 +10,16 @@
</div> </div>
<div id="page"> <div id="page">
<% IF domain && domain.size %>
<table border='1px'> <h3>Fichier de zone de <% domain %></h3>
<caption>Les zones de <%domain%></caption>
<tr> <form action='/domainupdate/<% domain %>' method="post" >
<th>Host</th> <label for='zone'>Votre zone :</label>
<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 /> <br />
<table border='1px'> <textarea id='zone' name="zoneupdated" rows="20" cols="100"><% domain_zone %></textarea>
<caption>Domain Properties</caption> <br />
<tr> <input type="submit" value="Mettre à jour la zone">
<th>Admin de la zone</th> </form>
<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 %>
</div> </div>

View File

@ -1,19 +1,23 @@
<div id="sidebar"> <div id="sidebar">
<% IF logged == 1 %> <% IF logged == 1 %>
Welcome <% login %> ! Welcome <% login %> !
<form action='logout' method="get" accept-charset="utf-8"> <form action='logout' method="get" accept-charset="utf-8">
<input type="submit" name="logout" value="Déconnexion"> <input type="submit" name="logout" value="Déconnexion">
</form> </form>
<a href='mapage'>Votre page de configuration</a><br /> <a href='mapage'>Votre page de configuration</a><br />
<% IF admin == 1 %> <% IF admin == 1 %>
<a href='administration'>Page d'administration</a><br /> <a href='administration'>Page d'administration</a><br />
<% END %> <% END %>
<% IF domains %> <% IF domains %>
Liens rapides :<br /> Liens rapides :<br />
<% FOREACH domain IN domains %> <% FOREACH domain IN domains %>
<a href="details?domain=<% domain %>"><% domain %> </a><br /> <a href="details/<% domain %>"><% domain %></a><br />
<% END %> <% END %>
<% END %> <% END %>
<% ELSE %> <% ELSE %>
<form action="login" method="post" accept-charset="utf-8"> <form action="login" method="post" accept-charset="utf-8">
<label for="login">Votre login : </label> <label for="login">Votre login : </label>
@ -23,17 +27,24 @@
<p><input type="submit" value="Connexion &rarr;" /></p> <p><input type="submit" value="Connexion &rarr;" /></p>
</form> </form>
<% END %> <% END %>
</div> </div>
<div id="page"> <div id="page">
<h1 style="text-align:center">Bienvenue sur netlib.re !</h1> <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> <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 /> <br />
<h2>Pourquoi ?</h2> <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 /> 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é. Remarque : ce site ne fera pas d'hébergement, il founira uniquement un serveur de nom de domaine automatisé.
<h2>Qui sommes-nous ?</h2> <h2>Qui sommes-nous ?</h2>
<p>Une bande d'informaticiens passionnés, voulant aider la communauté.</p> <p>Une bande d'informaticiens passionnés, voulant aider la communauté.</p>
<h2>Ce qui sera proposé</h2> <h2>Ce qui sera proposé</h2>
À venir sur le site : À venir sur le site :
<ul> <ul>
<li>visualisation de la liste des domaines déjà réservés et utilisés ; </li> <li>visualisation de la liste des domaines déjà réservés et utilisés ; </li>
@ -41,4 +52,5 @@
<li>nous aimerions également proposer une mise à jour dynamique de votre adresse (dyndns).</li> <li>nous aimerions également proposer une mise à jour dynamique de votre adresse (dyndns).</li>
</ul> </ul>
<p>En résumé : cherchez votre nom de domaine, réservez-le, on s'occupe du reste ! </p> <p>En résumé : cherchez votre nom de domaine, réservez-le, on s'occupe du reste ! </p>
</div> </div>

View File

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