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__