package ISPMan::ApacheMan;

use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $Config);


require Exporter;
@ISA = qw(Exporter AutoLoader);
@EXPORT = qw(
getApacheVhosts
editVhost
updateVhost
addVhost
newVhost
deleteVhost
);
$VERSION = '0.01';

use ISPMan::Config;
$Config=ISPMan::Config->new();
use ISPMan::Log;



sub editVhost {
   my $self=shift;
   my $r=shift;
   my $dn=$r->param("dn");
   log_event("getting $dn");


   $self->{'vhost'}=$self->{'ldap'}->getEntryAsHashRef($dn);
   
   my $template=$self->getTemplate("editVhost.tmpl");
   print $template->fill_in(PACKAGE => "ISPMan");
}





sub getApacheVhosts {
   my $self=shift;
   my $dn=shift;
   
   log_event("getting $dn");
   my $vhostsHash=$self->{'ldap'}->getEntriesAsHashRef($dn, "objectclass=virtualHost", ["cn"]);
   
   my $vhosts;
   for (keys %$vhostsHash) {
      $vhosts->{$vhostsHash->{$_}{'cn'}}=$_;
   }
   return $vhosts;

}



sub updateVhost {
   my $self=shift;
   my $r=shift;
   my $dn=$r->param("dn");

   
   
   if ($r->param("serveralias")){

      my $serveralias=[split(/\s\s*/, $r->param("serveralias"))];
      $r->param("serveralias", $serveralias) if $serveralias;
   } else {
      print "NO";
      $r->param("serveralias", " ");
   }
   
   $self->{'ldap'}->updateEntry($r);
   
}




sub createVhost {
   my $self=shift;
   my $r=shift;
   my $dn=$r->param("dn");
   my $template=$self->getTemplate("addVhost.tmpl");
   print $template->fill_in(PACKAGE => "ISPMan");
}



sub newVhost{
   my $self=shift;
   if ($self->addVhost(@_)){
      print $self->refreshSignal();
      $self->editVhost(@_);
   };
}





sub addVhost{
   my $self=shift;
   my $r=shift;
   my $cn=$r->param("cn");
   $cn=lc($cn);
   $cn=~s/[^a-z]//g;
   $r->param("cn", $cn);
   my $domain=$r->param("domain");
   my $dn="cn=$cn, ou=httpdata, domain=$domain, " . $self->{'Config'}{'ldapBaseDN'};
   $r->param("dn", $dn);
   if ($self->{'ldap'}->AddVhost($r)){
      return 1;
   }
}



sub deleteVhost{
   my $self=shift;
   my $r=shift;
   
   if ($self->{'ldap'}->deleteVhost($r)) {
      print $self->refreshSignal();
      return 1;
   }
}


1;

__END__

