page d'admin, suppression utilisateur, quelques tests en plus
parent
33305b7901
commit
9c3765fdb2
36
app/app.pm
36
app/app.pm
|
@ -47,29 +47,34 @@ sub init {
|
||||||
|
|
||||||
sub auth {
|
sub auth {
|
||||||
my ($self, $login, $passwd) = @_;
|
my ($self, $login, $passwd) = @_;
|
||||||
return ${$self->um}->auth($login, $passwd);
|
${$self->um}->auth($login, $passwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub register_user {
|
sub register_user {
|
||||||
my ($self, $login, $passwd) = @_;
|
my ($self, $login, $passwd) = @_;
|
||||||
return ${$self->um}->register_user($login, $passwd);
|
${$self->um}->register_user($login, $passwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
sub set_admin {
|
sub set_admin {
|
||||||
my ($self, $login) = @_;
|
my ($self, $login) = @_;
|
||||||
return ${$self->um}->set_admin($login);
|
${$self->um}->set_admin($login);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub update_passwd {
|
sub update_passwd {
|
||||||
my ($self, $login, $new) = @_;
|
my ($self, $login, $new) = @_;
|
||||||
my $user = ${$self->um}->get_user($login);
|
my ($success, $user, $isadmin) = ${$self->um}->get_user($login);
|
||||||
return $user->passwd($new);
|
$user->passwd($new);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub delete_user {
|
sub delete_user {
|
||||||
my ($self, $login) = @_;
|
my ($self, $login) = @_;
|
||||||
return ${$self->um}->delete_user($login);
|
my ($success, @domains) = $self->get_domains($login);
|
||||||
|
|
||||||
|
if($success) {
|
||||||
|
$self->delete_domain($login, $_) foreach(@domains);
|
||||||
|
${$self->um}->delete_user($login);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
### domains
|
### domains
|
||||||
|
@ -77,7 +82,12 @@ sub delete_user {
|
||||||
# return yes or no
|
# return yes or no
|
||||||
sub add_domain {
|
sub add_domain {
|
||||||
my ($self, $login, $domain) = @_;
|
my ($self, $login, $domain) = @_;
|
||||||
my $user = ${$self->um}->get_user($login);
|
my ($success, $user, $isadmin) = ${$self->um}->get_user($login);
|
||||||
|
|
||||||
|
unless($success) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
$user->add_domain($domain);
|
$user->add_domain($domain);
|
||||||
|
|
||||||
my $ze = app::zone::edit->new(zname => $domain, zdir => $self->zdir);
|
my $ze = app::zone::edit->new(zname => $domain, zdir => $self->zdir);
|
||||||
|
@ -86,7 +96,7 @@ sub add_domain {
|
||||||
|
|
||||||
sub delete_domain {
|
sub delete_domain {
|
||||||
my ($self, $login, $domain) = @_;
|
my ($self, $login, $domain) = @_;
|
||||||
my $user = ${$self->um}->get_user($login);
|
my ($success, $user, $isadmin) = ${$self->um}->get_user($login);
|
||||||
$user->delete_domain($domain);
|
$user->delete_domain($domain);
|
||||||
my $ze = app::zone::edit->new(zname => $domain, zdir => $self->zdir);
|
my $ze = app::zone::edit->new(zname => $domain, zdir => $self->zdir);
|
||||||
$ze->del();
|
$ze->del();
|
||||||
|
@ -112,13 +122,13 @@ sub get_domain {
|
||||||
|
|
||||||
sub get_domains {
|
sub get_domains {
|
||||||
my ($self, $login) = @_;
|
my ($self, $login) = @_;
|
||||||
|
${$self->um}->get_domains($login);
|
||||||
my $user = ${$self->um}->get_user($login);
|
|
||||||
return $user->domains;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub activate_domain {
|
sub get_all_domains {
|
||||||
my ($self, $domain) = @_;
|
my ($self) = @_;
|
||||||
|
# % domain login
|
||||||
|
${$self->um}->get_all_domains;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub new_tmp {
|
sub new_tmp {
|
||||||
|
|
|
@ -16,53 +16,24 @@ has [qw/dbh/] => qw/is rw required 1/;
|
||||||
# ($success, $user, $admin) auth_user($login, $passwd)
|
# ($success, $user, $admin) auth_user($login, $passwd)
|
||||||
sub auth {
|
sub auth {
|
||||||
my ($self, $login, $passwd) = @_;
|
my ($self, $login, $passwd) = @_;
|
||||||
my ($sth, $user, @domains);
|
my ($sth, $success, $user, $isadmin);
|
||||||
|
|
||||||
$sth = $self->dbh->prepare('SELECT * FROM user WHERE login=? and passwd=?');
|
$sth = $self->dbh->prepare('SELECT * FROM user WHERE login=? and passwd=?');
|
||||||
unless ( $sth->execute($login, $passwd)) {
|
unless ($sth->execute($login, $passwd)) {
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (my $ref = $sth->fetchrow_arrayref) {
|
if (my $ref = $sth->fetchrow_arrayref) {
|
||||||
$sth = $self->dbh->prepare('SELECT domain FROM domain WHERE login=?');
|
# if this user exists and is auth
|
||||||
unless ( $sth->execute($login)) {
|
($success, $user, $isadmin) = $self->get_user($login);
|
||||||
$sth->finish();
|
}
|
||||||
return 0;
|
else {
|
||||||
}
|
$success = 0;
|
||||||
|
|
||||||
# get domains
|
|
||||||
#push @domains, @$_[0] while($sth->fetchrow_arrayref);
|
|
||||||
|
|
||||||
while(my $ref2 = $sth->fetchrow_arrayref) {
|
|
||||||
push @domains, @$ref2[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# si admin
|
|
||||||
if(@$ref[2]) {
|
|
||||||
|
|
||||||
# TODO : the admin module
|
|
||||||
$user = app::bdd::admin->new(login => @$ref[0]
|
|
||||||
, passwd => @$ref[1]
|
|
||||||
, dbh => $self->dbh
|
|
||||||
, domains => [@domains]);
|
|
||||||
$sth->finish();
|
|
||||||
return 1, $user, 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$user = app::bdd::lambda->new(login => @$ref[0]
|
|
||||||
, passwd => @$ref[1]
|
|
||||||
, dbh => $self->dbh
|
|
||||||
, domains => [@domains]);
|
|
||||||
$sth->finish();
|
|
||||||
return 1, $user, 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
return 0;
|
return ($success, $user, $isadmin);
|
||||||
}
|
}
|
||||||
|
|
||||||
# ($success) register_user
|
# ($success) register_user
|
||||||
|
@ -75,12 +46,14 @@ sub register_user {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# if an user already exists
|
||||||
if (my $ref = $sth->fetchrow_arrayref) {
|
if (my $ref = $sth->fetchrow_arrayref) {
|
||||||
#say join (', ', @$ref);
|
#say join (', ', @$ref);
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# if not
|
||||||
$sth = $self->dbh->prepare('insert into user VALUES(?,?,?)');
|
$sth = $self->dbh->prepare('insert into user VALUES(?,?,?)');
|
||||||
unless ($sth->execute($login, $pass, 0)) {
|
unless ($sth->execute($login, $pass, 0)) {
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
|
@ -96,6 +69,14 @@ sub delete_user {
|
||||||
my ($self, $login) = @_;
|
my ($self, $login) = @_;
|
||||||
my $sth;
|
my $sth;
|
||||||
|
|
||||||
|
# TODO non utile
|
||||||
|
$sth = $self->dbh->prepare('delete from domain where login=?');
|
||||||
|
unless ( $sth->execute($login) ) {
|
||||||
|
$sth->finish();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
$sth->finish();
|
||||||
|
|
||||||
$sth = $self->dbh->prepare('delete from user where login=?');
|
$sth = $self->dbh->prepare('delete from user where login=?');
|
||||||
unless ( $sth->execute($login) ) {
|
unless ( $sth->execute($login) ) {
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
|
@ -103,12 +84,6 @@ sub delete_user {
|
||||||
}
|
}
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
|
|
||||||
$sth = $self->dbh->prepare('delete from domain where login=?');
|
|
||||||
unless ( $sth->execute($login) ) {
|
|
||||||
$sth->finish();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
$sth->finish();
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -130,9 +105,6 @@ sub get_user {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
# get domains
|
|
||||||
#push @domains, @$_[0] while($sth->fetchrow_arrayref);
|
|
||||||
|
|
||||||
while(my $ref2 = $sth->fetchrow_arrayref) {
|
while(my $ref2 = $sth->fetchrow_arrayref) {
|
||||||
push @domains, @$ref2[0];
|
push @domains, @$ref2[0];
|
||||||
}
|
}
|
||||||
|
@ -151,11 +123,50 @@ sub get_user {
|
||||||
, dbh => $self->dbh
|
, dbh => $self->dbh
|
||||||
, domains => [@domains]);
|
, domains => [@domains]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
return 1, $user;
|
return (1, $user, @$ref[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sth->finish();
|
$sth->finish();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_domains {
|
||||||
|
my ($self, $login) = @_;
|
||||||
|
my ($sth, @domains);
|
||||||
|
|
||||||
|
$sth = $self->dbh->prepare('SELECT domain FROM domain where login=?');
|
||||||
|
unless ($sth->execute($login)) {
|
||||||
|
$sth->finish();
|
||||||
|
return (0, @domains);
|
||||||
|
}
|
||||||
|
|
||||||
|
while(my $ref = $sth->fetchrow_arrayref) {
|
||||||
|
push @domains, @$ref[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
$sth->finish();
|
||||||
|
|
||||||
|
return (1, @domains);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_all_domains {
|
||||||
|
my ($self) = @_;
|
||||||
|
my ($sth, $user, %domains);
|
||||||
|
|
||||||
|
$sth = $self->dbh->prepare('SELECT domain, login FROM domain');
|
||||||
|
unless ( $sth->execute()) {
|
||||||
|
$sth->finish();
|
||||||
|
undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
while( my $ref = $sth->fetchrow_arrayref) {
|
||||||
|
$domains{@$ref[0]} = @$ref[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
$sth->finish();
|
||||||
|
%domains;
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
#!/usr/bin/perl -w
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use v5.14;
|
||||||
|
use autodie;
|
||||||
|
use Modern::Perl;
|
||||||
|
use DNS::ZoneParse;
|
||||||
|
use Config::Simple;
|
||||||
|
use Data::Dump qw( dump );
|
||||||
|
|
||||||
|
use lib '../';
|
||||||
|
use app::app;
|
||||||
|
|
||||||
|
sub initco {
|
||||||
|
|
||||||
|
my $cfg = new Config::Simple('./config.ini');
|
||||||
|
my $app = app->new( zdir => $cfg->param('zones_path'),
|
||||||
|
dbname => $cfg->param('dbname'),
|
||||||
|
dbhost => $cfg->param('host'),
|
||||||
|
dbport => $cfg->param('port'),
|
||||||
|
dbuser => $cfg->param('user'),
|
||||||
|
dbpass => $cfg->param('passwd'),
|
||||||
|
sgbd => $cfg->param('sgbd'),
|
||||||
|
dnsapp => $cfg->param('dnsapp') );
|
||||||
|
|
||||||
|
$app->init();
|
||||||
|
|
||||||
|
return $app;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( @ARGV < 2) {
|
||||||
|
say "usage : ./auth.pl login mdp";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $app = initco();
|
||||||
|
my ($auth_ok, $user, $isadmin) = $app->auth($ARGV[0], $ARGV[1]);
|
||||||
|
|
||||||
|
say "auth $auth_ok";
|
||||||
|
say "isadmin $isadmin";
|
|
@ -0,0 +1,11 @@
|
||||||
|
dbname = dnsmanager
|
||||||
|
host = localhost
|
||||||
|
# other options : see DBI module
|
||||||
|
sgbd = mysql
|
||||||
|
# default port for mysql
|
||||||
|
port = 3306
|
||||||
|
user = bla
|
||||||
|
passwd = HardPass4bla
|
||||||
|
# possible options for dnsserver : bind rndc
|
||||||
|
dnsapp = rndc
|
||||||
|
zones_path = "/srv/named/"
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/perl -w
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use v5.14;
|
||||||
|
use autodie;
|
||||||
|
use Modern::Perl;
|
||||||
|
use DNS::ZoneParse;
|
||||||
|
use Config::Simple;
|
||||||
|
use Data::Dump qw( dump );
|
||||||
|
|
||||||
|
use lib '../';
|
||||||
|
use app::app;
|
||||||
|
|
||||||
|
sub initco {
|
||||||
|
|
||||||
|
my $cfg = new Config::Simple('./config.ini');
|
||||||
|
my $app = app->new( zdir => $cfg->param('zones_path'),
|
||||||
|
dbname => $cfg->param('dbname'),
|
||||||
|
dbhost => $cfg->param('host'),
|
||||||
|
dbport => $cfg->param('port'),
|
||||||
|
dbuser => $cfg->param('user'),
|
||||||
|
dbpass => $cfg->param('passwd'),
|
||||||
|
sgbd => $cfg->param('sgbd'),
|
||||||
|
dnsapp => $cfg->param('dnsapp') );
|
||||||
|
|
||||||
|
$app->init();
|
||||||
|
|
||||||
|
return $app;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( @ARGV != 0 ) {
|
||||||
|
say "usage : ./get_all_domains.pl";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $app = initco();
|
||||||
|
|
||||||
|
my %domains = $app->get_all_domains();
|
||||||
|
|
||||||
|
dump(%domains);
|
||||||
|
|
||||||
|
#if( $domains ) {
|
||||||
|
# if( scalar(@$domains) != 0) {
|
||||||
|
# say join ", ", @{$domains};
|
||||||
|
# }
|
||||||
|
# else {
|
||||||
|
# say "tableau vide";
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
#else {
|
||||||
|
# say "domains undef";
|
||||||
|
#}
|
|
@ -0,0 +1,59 @@
|
||||||
|
#!/usr/bin/perl -w
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use v5.14;
|
||||||
|
use autodie;
|
||||||
|
use Modern::Perl;
|
||||||
|
use DNS::ZoneParse;
|
||||||
|
use Config::Simple;
|
||||||
|
use Data::Dump qw( dump );
|
||||||
|
|
||||||
|
use lib '../';
|
||||||
|
use app::app;
|
||||||
|
|
||||||
|
sub initco {
|
||||||
|
|
||||||
|
my $cfg = new Config::Simple('./config.ini');
|
||||||
|
my $app = app->new( zdir => $cfg->param('zones_path'),
|
||||||
|
dbname => $cfg->param('dbname'),
|
||||||
|
dbhost => $cfg->param('host'),
|
||||||
|
dbport => $cfg->param('port'),
|
||||||
|
dbuser => $cfg->param('user'),
|
||||||
|
dbpass => $cfg->param('passwd'),
|
||||||
|
sgbd => $cfg->param('sgbd'),
|
||||||
|
dnsapp => $cfg->param('dnsapp') );
|
||||||
|
|
||||||
|
$app->init();
|
||||||
|
|
||||||
|
return $app;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( @ARGV < 2) {
|
||||||
|
say "usage : ./auth.pl login mdp";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $app = initco();
|
||||||
|
my ($auth_ok, $user, $isadmin) = $app->auth($ARGV[0], $ARGV[1]);
|
||||||
|
|
||||||
|
if($auth_ok) {
|
||||||
|
say "auth $auth_ok";
|
||||||
|
say "isadmin $isadmin";
|
||||||
|
}
|
||||||
|
|
||||||
|
my ($success, $domains) = $app->get_domains( $ARGV[0] );
|
||||||
|
|
||||||
|
say "success $success";
|
||||||
|
dump($domains);
|
||||||
|
|
||||||
|
#if( $domains ) {
|
||||||
|
# if( scalar(@$domains) != 0) {
|
||||||
|
# say join ", ", @{$domains};
|
||||||
|
# }
|
||||||
|
# else {
|
||||||
|
# say "tableau vide";
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
#else {
|
||||||
|
# say "domains undef";
|
||||||
|
#}
|
|
@ -0,0 +1,55 @@
|
||||||
|
#!/usr/bin/perl -w
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use v5.14;
|
||||||
|
use autodie;
|
||||||
|
use Modern::Perl;
|
||||||
|
use DNS::ZoneParse;
|
||||||
|
use Config::Simple;
|
||||||
|
use Data::Dump qw( dump );
|
||||||
|
|
||||||
|
use lib '../';
|
||||||
|
use app::app;
|
||||||
|
|
||||||
|
sub initco {
|
||||||
|
|
||||||
|
my $cfg = new Config::Simple('./config.ini');
|
||||||
|
my $app = app->new( zdir => $cfg->param('zones_path'),
|
||||||
|
dbname => $cfg->param('dbname'),
|
||||||
|
dbhost => $cfg->param('host'),
|
||||||
|
dbport => $cfg->param('port'),
|
||||||
|
dbuser => $cfg->param('user'),
|
||||||
|
dbpass => $cfg->param('passwd'),
|
||||||
|
sgbd => $cfg->param('sgbd'),
|
||||||
|
dnsapp => $cfg->param('dnsapp') );
|
||||||
|
|
||||||
|
$app->init();
|
||||||
|
|
||||||
|
return $app;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( @ARGV < 2) {
|
||||||
|
say "usage : ./auth.pl login domain";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $app = initco();
|
||||||
|
my ($auth_ok, $user, $isadmin) = $app->auth($ARGV[0], $ARGV[1]);
|
||||||
|
|
||||||
|
if($auth_ok) {
|
||||||
|
say "auth $auth_ok";
|
||||||
|
say "isadmin $isadmin";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
say "erreur connexion";
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
my $zone = $app->get_domain($ARGV[0], $ARGV[1]);
|
||||||
|
|
||||||
|
say "origin : " . $zone->origin;
|
||||||
|
|
||||||
|
my $zcontent = $zone->output() . "\nwww IN A 10.0.0.2";
|
||||||
|
|
||||||
|
$app->update_domain_raw( $ARGV[0], $zcontent , $ARGV[1] );
|
|
@ -15,4 +15,4 @@ passwd = HardPass4bla
|
||||||
|
|
||||||
# possible options for dnsserver : bind rndc
|
# possible options for dnsserver : bind rndc
|
||||||
dnsapp = rndc
|
dnsapp = rndc
|
||||||
zones_path = "/srv/named/"
|
zones_path = "/etc/bind/named/"
|
||||||
|
|
|
@ -41,12 +41,20 @@ get '/' => sub {
|
||||||
if( session('login') )
|
if( session('login') )
|
||||||
{
|
{
|
||||||
my $app = initco();
|
my $app = initco();
|
||||||
$app->get_domains( session('login') );
|
my ($success, @domains) = $app->get_domains( session('login') );
|
||||||
template index => {
|
|
||||||
logged => true
|
if( $success ) {
|
||||||
, login => session('login')
|
|
||||||
, admin => session('admin')
|
template index => {
|
||||||
, domains => $app->get_domains(session('login')) };
|
logged => true
|
||||||
|
, login => session('login')
|
||||||
|
, admin => session('admin')
|
||||||
|
, domains => [ @domains ] };
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
session->destroy;
|
||||||
|
template 'index';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -64,38 +72,36 @@ get '/home' => sub {
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my $app = initco();
|
my $app = initco();
|
||||||
my %domains = ();
|
|
||||||
my %zone_properties = ();
|
|
||||||
|
|
||||||
# my @d = @{$app->get_domains( session('login') )};
|
my ($success, @domains) = $app->get_domains( session('login') );
|
||||||
|
|
||||||
if( session('creationSuccess') || session('creationFailure') )
|
if( $success ) {
|
||||||
{
|
|
||||||
|
my (%zone_properties, %domains);
|
||||||
my $cs = session('creationSuccess');
|
my $cs = session('creationSuccess');
|
||||||
session 'creationSuccess' => '';
|
|
||||||
my $cf = session('creationFailure');
|
my $cf = session('creationFailure');
|
||||||
session 'creationFailure' => '';
|
|
||||||
my $dn = session('domainName');
|
my $dn = session('domainName');
|
||||||
|
|
||||||
|
session 'creationSuccess' => '';
|
||||||
|
session 'creationFailure' => '';
|
||||||
session 'domainName' => '';
|
session 'domainName' => '';
|
||||||
template home =>
|
|
||||||
{ 'login' => session('login'),
|
template home => {
|
||||||
'domains' => $app->get_domains(session('login')),
|
login => session('login')
|
||||||
'zones_domains' => \%domains,
|
, admin => session('admin')
|
||||||
'zone_properties' => \%zone_properties,
|
, domains => [@domains]
|
||||||
'admin' => session('admin'),
|
, zones_domains => \%domains
|
||||||
'creationSuccess' => $cs,
|
, zone_properties => \%zone_properties
|
||||||
'creationFailure' => $cf,
|
, creationSuccess => $cs
|
||||||
'domainName' => $dn };
|
, creationFailure => $cf
|
||||||
|
, domainName => $dn };
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
session->destroy;
|
||||||
template home =>
|
redirect '/ ';
|
||||||
{ 'login' => session('login'),
|
|
||||||
'domains' => $app->get_domains(session('login')),
|
|
||||||
'zones_domains' => \%domains,
|
|
||||||
'zone_properties' => \%zone_properties,
|
|
||||||
'admin' => session('admin') };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -162,14 +168,14 @@ prefix '/domain' => sub {
|
||||||
if( param('domain') =~ /^[a-zA-Z0-9]+[a-zA-Z0-9-]+[a-zA-Z0-9]+$|^[a-zA-Z0-9]+$/ )
|
if( param('domain') =~ /^[a-zA-Z0-9]+[a-zA-Z0-9-]+[a-zA-Z0-9]+$|^[a-zA-Z0-9]+$/ )
|
||||||
{
|
{
|
||||||
|
|
||||||
my $cfg = new Config::Simple(dirname(__FILE__).'/../conf/config.ini');
|
my $cfg = new Config::Simple(dirname(__FILE__).'/../conf/config.ini');
|
||||||
my $domain = param('domain').$cfg->param('tld');
|
my $domain = param('domain').$cfg->param('tld');
|
||||||
# $domain =~ s/\.{2,}/\./g;
|
# $domain =~ s/\.{2,}/\./g;
|
||||||
# say "domain after sed : $domain";
|
# say "domain after sed : $domain";
|
||||||
# create domain
|
# create domain
|
||||||
my $app = initco();
|
my $app = initco();
|
||||||
# Add tld
|
# Add tld
|
||||||
# create domain
|
# create domain
|
||||||
$app->add_domain( session('login'), $domain );
|
$app->add_domain( session('login'), $domain );
|
||||||
$creationSuccess = true;
|
$creationSuccess = true;
|
||||||
|
|
||||||
|
@ -194,7 +200,8 @@ prefix '/domain' => sub {
|
||||||
# TODO tests des droits
|
# TODO tests des droits
|
||||||
my $app = initco();
|
my $app = initco();
|
||||||
$app->delete_domain(session('login'), param('domain'));
|
$app->delete_domain(session('login'), param('domain'));
|
||||||
redirect '/home';
|
|
||||||
|
redirect request->referer;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -202,15 +209,32 @@ prefix '/domain' => sub {
|
||||||
};
|
};
|
||||||
|
|
||||||
any ['get', 'post'] => '/admin' => sub {
|
any ['get', 'post'] => '/admin' => sub {
|
||||||
|
|
||||||
unless( session('login') )
|
unless( session('login') )
|
||||||
{
|
{
|
||||||
redirect '/';
|
redirect '/';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
template administration => {
|
my $app = initco();
|
||||||
login => session('login')
|
my ($auth_ok, $user, $isadmin) = $app->auth(session('login'),
|
||||||
, admin => session('admin') };
|
session('password') );
|
||||||
|
|
||||||
|
unless ( $auth_ok && $isadmin ) {
|
||||||
|
redirect '/ ';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
my %alldomains = $app->get_all_domains;
|
||||||
|
my ($success, @domains) = $app->get_domains( session('login') );
|
||||||
|
|
||||||
|
template administration => {
|
||||||
|
login => session('login')
|
||||||
|
, admin => session('admin')
|
||||||
|
, domains => [ @domains ]
|
||||||
|
, alldomains => { %alldomains } };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -221,6 +245,21 @@ prefix '/user' => sub {
|
||||||
redirect '/';
|
redirect '/';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
get '/del/:user' => sub {
|
||||||
|
|
||||||
|
my $app = initco();
|
||||||
|
|
||||||
|
my ($auth_ok, $user, $isadmin) = $app->auth(session('login'),
|
||||||
|
session('password') );
|
||||||
|
|
||||||
|
if ( $auth_ok && $isadmin || session('login') eq param('user')) {
|
||||||
|
$app->delete_user(param('user'));
|
||||||
|
}
|
||||||
|
|
||||||
|
redirect request->referer;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
post '/login' => sub {
|
post '/login' => sub {
|
||||||
|
|
||||||
# Check if user is already logged
|
# Check if user is already logged
|
||||||
|
@ -233,6 +272,7 @@ prefix '/user' => sub {
|
||||||
my $app = initco();
|
my $app = initco();
|
||||||
my ($auth_ok, $user, $isadmin) = $app->auth(param('login'),
|
my ($auth_ok, $user, $isadmin) = $app->auth(param('login'),
|
||||||
param('password') );
|
param('password') );
|
||||||
|
|
||||||
if( $auth_ok )
|
if( $auth_ok )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -242,10 +282,16 @@ prefix '/user' => sub {
|
||||||
session user => freeze( $user );
|
session user => freeze( $user );
|
||||||
session admin => $isadmin;
|
session admin => $isadmin;
|
||||||
|
|
||||||
|
if( $isadmin ) {
|
||||||
|
redirect '/admin';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
# User login and/or password are incorrect
|
# User login and/or password are incorrect
|
||||||
|
redirect '/';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,16 +2,57 @@
|
||||||
Welcome <% login %> !
|
Welcome <% login %> !
|
||||||
|
|
||||||
<a href="/user/logout">Déconnexion</a>
|
<a href="/user/logout">Déconnexion</a>
|
||||||
|
<br />
|
||||||
|
<a href="/home">Ma page</a>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<a href='/admin'>Page d'administration</a>
|
<a href='/admin'>Page d'administration</a>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<a href='/'>Accueil</a>
|
<a href='/'>Accueil</a>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<% IF domains %>
|
||||||
|
Liens rapides :<br />
|
||||||
|
<% FOREACH domain IN domains %>
|
||||||
|
<a href="/domain/details/<% domain %>"><% domain %></a><br />
|
||||||
|
<% END %>
|
||||||
|
<% END %>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="page">
|
<div id="page">
|
||||||
<h1>Bienvenue sur la page d'administration</h1>
|
<h1>Bienvenue sur la page d'administration</h1>
|
||||||
|
|
||||||
|
<div id="waiting_dn">
|
||||||
|
<h3>Les sites en attente</h3>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>domaine</th>
|
||||||
|
<th>utilisateur</th>
|
||||||
|
<th>supprimer domaine</th>
|
||||||
|
<th>supprimer utilisateur</th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<% FOREACH pair IN alldomains.pairs %>
|
||||||
|
<tr>
|
||||||
|
<td><% pair.key %></td>
|
||||||
|
<td><% pair.value %></td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<a href="/domain/del/<% pair.key %>">sup. domaine</a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<a href="/user/del/<% pair.value %>">sup. utilisateur</a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<%END%>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
<a href="/user/logout">Déconnexion</a>
|
<a href="/user/logout">Déconnexion</a>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<a href='/home'>Votre page de configuration</a><br />
|
<a href='/home'>Ma page</a><br />
|
||||||
|
|
||||||
<% IF admin == 1 %>
|
<% IF admin == 1 %>
|
||||||
<a href='/admin'>Page d'administration</a>
|
<a href='/admin'>Page d'administration</a>
|
||||||
<br />
|
<br />
|
||||||
|
@ -16,7 +17,7 @@
|
||||||
<% IF domains %>
|
<% IF domains %>
|
||||||
Liens rapides :<br />
|
Liens rapides :<br />
|
||||||
<% FOREACH domain IN domains %>
|
<% FOREACH domain IN domains %>
|
||||||
<a href="details/<% domain %>"><% domain %></a><br />
|
<a href="/domain/details/<% domain %>"><% domain %></a><br />
|
||||||
<% END %>
|
<% END %>
|
||||||
<% END %>
|
<% END %>
|
||||||
|
|
||||||
|
|
Reference in New Issue