Obsolete
/
dnsmanagerv1
Archived
3
0
Fork 0
This repository has been archived on 2024-06-18. You can view files and clone it, but cannot push or open issues/pull-requests.
dnsmanagerv1/lib/app.pm

149 lines
3.1 KiB
Perl

package app;
use v5.14;
use Moo;
use db;
use zone;
use configuration ':all';
has db => ( is => 'rw', builder => '_void');
has [qw/tld tmpdir database primarydnsserver secondarydnsserver/]
=> qw/is ro required 1/;
sub _void { my $x = ''; \$x; }
sub BUILD {
my ($self) = @_;
$$self{db} = db->new(data => $self);
my $tmpdir = get_tmpdir_from_uri($$self{tmpdir});
-f $tmpdir || qx/mkdir -p $tmpdir/;
my $db = $$self{database};
unless(exists $$db{sgbd} && exists $$db{name}
&& exists $$db{host} && exists $$db{port}
&& exists $$db{user} && exists $$db{passwd})
{
die "Unable to connect to the database.\n"
. "Check the existance of theses parameters in the config file :\n"
. "\tsgbd name host port user passwd";
}
}
# USER
sub auth {
my ($self, $login, $passwd) = @_;
$self->db->auth($login, $passwd)
}
sub update_passwd {
my ($self, $login, $newpass) = @_;
$self->db->update_passwd($login, $newpass)
}
sub register_user {
my ($self, $login, $passwd) = @_;
$self->db->register_user($login, $passwd)
}
sub toggle_admin {
my ($self, $login) = @_;
$self->db->toggle_admin($login)
}
sub delete_user {
my ($self, $login) = @_;
$self->db->delete_user($login)
}
sub get_all_users {
my ($self) = @_;
$self->db->get_all_users
}
sub is_owning_domain {
my ($self, $login, $domain) = @_;
$self->db->is_owning_domain($login, $domain)
}
# DOMAIN
sub _get_zone {
my ($self, $domain) = @_;
# say "";
# say "GET ZONE";
# say "";
# say "";
# say "domain $domain";
# say "tmpdir $$self{tmpdir}";
# say "tld $$self{tld}";
zone->new( domain => $domain
, tmpdir => $$self{tmpdir}
, tld => $$self{tld}
, primarydnsserver => $$self{primarydnsserver}
, secondarydnsserver => $$self{secondarydnsserver}
, slavedzones => $self->get_all_domains()
)
}
sub add_domain {
my ($self, $login, $domain) = @_;
$self->db->add_domain($login, $domain);
$self->_get_zone($domain)->addzone()
}
sub delete_domain {
my ($self, $domain) = @_;
$self->db->delete_domain($domain);
$self->_get_zone($domain)->del()
}
sub modify_entry {
my ($self, $domain, $entryToModify, $newEntry) = @_;
my $zone = $self->_get_zone($domain)->modify_entry(
$entryToModify, $newEntry );
$self->update_domain($zone, $domain)
}
sub delete_entry {
my ($self, $domain, $entryToDelete) = @_;
my $zone = $self->_get_zone($domain)->delete_entry( $entryToDelete );
$self->update_domain($zone, $domain)
}
sub update_domain_raw {
my ($self, $zone, $domain) = @_;
$self->_get_zone($domain)->update_raw($zone)
}
sub update_domain {
my ($self, $zone, $domain) = @_;
$self->_get_zone($domain)->update($zone)
}
sub get_domain {
my ($self, $domain) = @_;
$self->_get_zone($domain)->get()
}
sub get_domains {
my ($self, $login) = @_;
$self->db->get_domains($login)
}
sub get_all_domains {
my ($self) = @_;
$self->db->get_all_domains
}
sub disconnect {
my ($self) = @_;
$self->db->disconnect
}
1;