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(); $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,105 +1,25 @@
<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 %>
<a href='administration'>Page d'administration</a> <a href='administration'>Page d'administration</a>
<% END %> <% END %>
<a href='/'>Accueil</a> <a href='/'>Accueil</a>
</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> <br />
<th>Type</th> <textarea id='zone' name="zoneupdated" rows="20" cols="100"><% domain_zone %></textarea>
<th>Domain</th> <br />
</tr> <input type="submit" value="Mettre à jour la zone">
<% FOREACH zone in zones %> </form>
<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 %>
</div> </div>

View File

@ -1,20 +1,24 @@
<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 />
<% IF admin == 1 %> <a href='mapage'>Votre page de configuration</a><br />
<a href='administration'>Page d'administration</a><br /> <% IF admin == 1 %>
<% END %> <a href='administration'>Page d'administration</a><br />
<% IF domains %> <% END %>
Liens rapides :<br />
<% FOREACH domain IN domains %> <% IF domains %>
<a href="details?domain=<% domain %>"><% domain %> </a><br /> Liens rapides :<br />
<% END %> <% FOREACH domain IN domains %>
<% END %> <a href="details/<% domain %>"><% domain %></a><br />
<% ELSE %> <% END %>
<% END %>
<% 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>
<input type="text" name="login" value="" /> <input type="text" name="login" value="" />
@ -22,23 +26,31 @@
<input type="password" name="password" value="" /> <input type="password" name="password" value="" />
<p><input type="submit" value="Connexion &rarr;" /></p> <p><input type="submit" value="Connexion &rarr;" /></p>
</form> </form>
<% END %> <% END %>
</div>
<div id="page"> </div>
<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> <div id="page">
<br />
<h2>Pourquoi ?</h2> <h1 style="text-align:center">Bienvenue sur netlib.re !</h1>
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 /> <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>
Remarque : ce site ne fera pas d'hébergement, il founira uniquement un serveur de nom de domaine automatisé. <br />
<h2>Qui sommes-nous ?</h2>
<p>Une bande d'informaticiens passionnés, voulant aider la communauté.</p> <h2>Pourquoi ?</h2>
<h2>Ce qui sera proposé</h2> Nous pensons qu'Internet est et doit rester un lieu où l'utilisateur crée le contenu.
À venir sur le site : 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 />
<ul> Remarque : ce site ne fera pas d'hébergement, il founira uniquement un serveur de nom de domaine automatisé.
<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> <h2>Qui sommes-nous ?</h2>
<li>nous aimerions également proposer une mise à jour dynamique de votre adresse (dyndns).</li> <p>Une bande d'informaticiens passionnés, voulant aider la communauté.</p>
</ul> <h2>Ce qui sera proposé</h2>
<p>En résumé : cherchez votre nom de domaine, réservez-le, on s'occupe du reste ! </p>
</div> À 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 %> <% 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>