ispman/lib/ISPMan AdminMan.pm,1.13,1.14 ApacheMan.pm,1.64,1.65 ClientMan.pm,1.5,1.6 ConfMan.pm,1.12,1.13 Config.pm,1.8,1.9 DBMan.pm,1.3,1.4 DNSMan.pm,1.29,1.30 DomainMan.pm,1.66,1.67 DomainServices.pm,1.7,1.8 GetText.pm,1.3,1.4 GroupMan.pm,1.8,1.9 Handlers.pm,1.3,1.4 HostGroupMan.pm,1.14,1.15 HostMan.pm,1.15,1.16 IMAP.pm,1.5,1.6 L10N.pm,1.4,1.5 LDAP.pm,1.78,1.79 Log.pm,1.4,1.5 MailGroupMan.pm,1.6,1.7 MailMan.pm,1.2,1.3 MessagingMan.pm,1.3,1.4 Portal.pm,1.5,1.6 ProcessMan.pm,1.22,1.23 RadiusMan.pm,1.2,1.3 ResellerMan.pm,1.5,1.6 UserMan.pm,1.46,1.47 Utils.pm,1.20,1.21
Joerg Delker <[email protected]>
| Newsgroups | gmane.comp.isp.ispman.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/ispman/ispman/lib/ISPMan In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30799/lib/ISPMan Modified Files: AdminMan.pm ApacheMan.pm ClientMan.pm ConfMan.pm Config.pm DBMan.pm DNSMan.pm DomainMan.pm DomainServices.pm GetText.pm GroupMan.pm Handlers.pm HostGroupMan.pm HostMan.pm IMAP.pm L10N.pm LDAP.pm Log.pm MailGroupMan.pm MailMan.pm MessagingMan.pm Portal.pm ProcessMan.pm RadiusMan.pm ResellerMan.pm UserMan.pm Utils.pm Log Message: code reformatting by perltidy conforming perl style guide Index: HostGroupMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/HostGroupMan.pm,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- HostGroupMan.pm 17 Aug 2003 20:26:21 -0000 1.14 +++ HostGroupMan.pm 30 May 2004 23:35:37 -0000 1.15 @@ -5,168 +5,166 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - manageHostGroups - makeHostGroupsBranch - makeHostGroupDN - getHostGroups - editHostGroup - deleteHostGroup - getHostGroupInfo - getHostGroupMembers - getHostGroupFirstMember - getGroupMembers - add_host_group - modify_host_group - addHost2HostGroup + manageHostGroups + makeHostGroupsBranch + makeHostGroupDN + getHostGroups + editHostGroup + deleteHostGroup + getHostGroupInfo + getHostGroupMembers + getHostGroupFirstMember + getGroupMembers + add_host_group + modify_host_group + addHost2HostGroup ); $VERSION = '0.01'; - - - - - sub manageHostGroups { - my $self=shift; - return unless $ENV{'HTTP_USER_AGENT'}; - my $template=$self->getTemplate("hostgroups/manageHostGroups.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + return unless $ENV{'HTTP_USER_AGENT'}; + my $template = $self->getTemplate("hostgroups/manageHostGroups.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - - sub makeHostGroupsBranch { - # return the branch for hostgroup. - # no need to retype the thing everytime and have more chances of typo errors - my $self=shift; - return join ",", ("ou=hostgroups", $self->{'Config'}{'ldapBaseDN'}); + + # return the branch for hostgroup. + # no need to retype the thing everytime and have more chances of typo errors + my $self = shift; + return join ",", ( "ou=hostgroups", $self->{'Config'}{'ldapBaseDN'} ); } sub makeHostGroupDN { - my $self=shift; - my ($ispmanHostGroupName)=@_; - return join ",", ("ispmanHostGroupName=$ispmanHostGroupName", $self->makeHostGroupsBranch()); + my $self = shift; + my ($ispmanHostGroupName) = @_; + return join ",", + ( + "ispmanHostGroupName=$ispmanHostGroupName", + $self->makeHostGroupsBranch() + ); } - sub add_host_group { - my $self=shift; - if ($self->{'session'}) { - return unless ($self->{'session'}->param("logintype") eq "admin"); - return unless $self->requiredAdminLevel(100); - } - my ($ispmanHostGroupName, $ispmanHostGroupInfo)=@_; - my $data; - $data->{'ispmanHostGroupName'}=$ispmanHostGroupName; - $data->{'ispmanHostGroupInfo'}=$ispmanHostGroupInfo || "undefined"; - $data->{'objectclass'}="ispmanHostGroup"; - my $dn=$self->makeHostGroupDN($ispmanHostGroupName); - $self->addNewEntryWithData($dn, $data); + my $self = shift; + if ( $self->{'session'} ) { + return unless ( $self->{'session'}->param("logintype") eq "admin" ); + return unless $self->requiredAdminLevel(100); + } + my ( $ispmanHostGroupName, $ispmanHostGroupInfo ) = @_; + my $data; + $data->{'ispmanHostGroupName'} = $ispmanHostGroupName; + $data->{'ispmanHostGroupInfo'} = $ispmanHostGroupInfo || "undefined"; + $data->{'objectclass'} = "ispmanHostGroup"; + my $dn = $self->makeHostGroupDN($ispmanHostGroupName); + $self->addNewEntryWithData( $dn, $data ); } +sub modify_host_group { + my $self = shift; + if ( $self->{'session'} ) { + return unless ( $self->{'session'}->param("logintype") eq "admin" ); + return unless $self->requiredAdminLevel(100); + } + my ( $ispmanHostGroupName, $ispmanHostGroupInfo, $ispmanHostGroupMember ) = + @_; + my $data; + my $dn = $self->makeHostGroupDN($ispmanHostGroupName); + $data->{'ispmanHostGroupInfo'} = $ispmanHostGroupInfo || "undefined"; + $data->{'ispmanHostGroupMember'} = $ispmanHostGroupMember || ""; + $self->updateEntryWithData( $dn, $data ); -sub modify_host_group { - my $self=shift; - if ($self->{'session'}) { - return unless ($self->{'session'}->param("logintype") eq "admin"); - return unless $self->requiredAdminLevel(100); - } - my ($ispmanHostGroupName, $ispmanHostGroupInfo, $ispmanHostGroupMember)=@_; - my $data; - my $dn=$self->makeHostGroupDN($ispmanHostGroupName); - - $data->{'ispmanHostGroupInfo'}=$ispmanHostGroupInfo || "undefined"; - $data->{'ispmanHostGroupMember'}=$ispmanHostGroupMember || ""; - $self->updateEntryWithData($dn, $data); - } sub addHost2HostGroup { - my $self=shift; - my ($ispmanHostGroupName,$ispmanHostName)=@_; - my $data; - my $dn=$self->makeHostGroupDN($ispmanHostGroupName); - #should check here if the $ispmanHostName is defined as a host + my $self = shift; + my ( $ispmanHostGroupName, $ispmanHostName ) = @_; + my $data; + my $dn = $self->makeHostGroupDN($ispmanHostGroupName); - $data->{'ispmanHostGroupMember'}=$ispmanHostName; - $self->addData2Entry($dn, $data); -} + #should check here if the $ispmanHostName is defined as a host + $data->{'ispmanHostGroupMember'} = $ispmanHostName; + $self->addData2Entry( $dn, $data ); +} sub deleteHostGroup { - my $self=shift; - if ($self->{'session'}) { - return unless ($self->{'session'}->param("logintype") eq "admin"); - return unless $self->requiredAdminLevel(100); - } - - my ($ispmanHostGroupName)=@_; - my $hostGroupInfo=$self->getHostGroupInfo($ispmanHostGroupName); - my @members=$self->as_array($hostGroupInfo->{'ispmanHostGroupMember'}); - - if ($hostGroupInfo->{'ispmanHostGroupMember'}){ - print "Sorry cannot delete this group. This group has the following members\n"; - print join ", \n", @members; - } else { - my $dn=$self->makeHostGroupDN($ispmanHostGroupName); - $self->deleteEntry($dn); - } + my $self = shift; + if ( $self->{'session'} ) { + return unless ( $self->{'session'}->param("logintype") eq "admin" ); + return unless $self->requiredAdminLevel(100); + } -} + my ($ispmanHostGroupName) = @_; + my $hostGroupInfo = $self->getHostGroupInfo($ispmanHostGroupName); + my @members = $self->as_array( $hostGroupInfo->{'ispmanHostGroupMember'} ); + if ( $hostGroupInfo->{'ispmanHostGroupMember'} ) { + print +"Sorry cannot delete this group. This group has the following members\n"; + print join ", \n", @members; + } + else { + my $dn = $self->makeHostGroupDN($ispmanHostGroupName); + $self->deleteEntry($dn); + } -sub getHostGroupInfo{ - my $self=shift; - my ($ispmanHostGroupName)=@_; - return $self->getEntryAsHashRef($self->makeHostGroupDN($ispmanHostGroupName)); } +sub getHostGroupInfo { + my $self = shift; + my ($ispmanHostGroupName) = @_; + return $self->getEntryAsHashRef( + $self->makeHostGroupDN($ispmanHostGroupName) ); +} sub getHostGroups { - my $self=shift; - return $self->getEntriesAsHashRef($self->makeHostGroupsBranch(), "objectclass=ispmanHostGroup"); + my $self = shift; + return $self->getEntriesAsHashRef( $self->makeHostGroupsBranch(), + "objectclass=ispmanHostGroup" ); } - sub editHostGroup { - my $self=shift; - my $template=$self->getTemplate("hostgroups/editHostGroup.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("hostgroups/editHostGroup.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - - sub getHostGroupMembers { - my $self=shift; - my ($ispmanHostGroupName)=@_; - my $hostGroupInfo=$self->getHostGroupInfo($ispmanHostGroupName); - return wantarray ? $self->as_array($hostGroupInfo->{'ispmanHostGroupMember'}) : $self->as_arrayref($hostGroupInfo->{'ispmanHostGroupMember'}); + my $self = shift; + my ($ispmanHostGroupName) = @_; + my $hostGroupInfo = $self->getHostGroupInfo($ispmanHostGroupName); + return + wantarray + ? $self->as_array( $hostGroupInfo->{'ispmanHostGroupMember'} ) + : $self->as_arrayref( $hostGroupInfo->{'ispmanHostGroupMember'} ); } - - sub getHostGroupFirstMember { - # Return the first member from the list - # This can be used as default where no other - # Value is specified - my $self=shift; - my $hostGroupMembers=$self->getHostGroupMembers(@_); - return $hostGroupMembers->[0]; + + # Return the first member from the list + # This can be used as default where no other + # Value is specified + my $self = shift; + my $hostGroupMembers = $self->getHostGroupMembers(@_); + return $hostGroupMembers->[0]; } + sub getGroupMembers { - #this function renamed to getHostGroupMember. - #it should be removed when all references to this function are removed. - my $self=shift; - return $self->getHostGroupMembers(@_); - -} + #this function renamed to getHostGroupMember. + #it should be removed when all references to this function are removed. + my $self = shift; + return $self->getHostGroupMembers(@_); + +} 1; __END__ Index: RadiusMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/RadiusMan.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- RadiusMan.pm 24 Jul 2003 16:12:57 -0000 1.2 +++ RadiusMan.pm 30 May 2004 23:35:37 -0000 1.3 @@ -25,20 +25,16 @@ use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); - require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - getRadiusProfilesBranchDN - getRadiusProfiles - getRadiusProfileCN - ); + getRadiusProfilesBranchDN + getRadiusProfiles + getRadiusProfileCN +); $VERSION = '0.9.7'; - - - sub getRadiusProfilesBranchDN { =head1 METHODS @@ -55,11 +51,10 @@ $branch=$ispman->getRadiusProfilesBranchDN(); =cut - my $self=shift; - return join (",", "ou=radiusprofiles", $self->getConf('ldapBaseDN')); -} - + my $self = shift; + return join( ",", "ou=radiusprofiles", $self->getConf('ldapBaseDN') ); +} sub getRadiusProfiles { @@ -78,16 +73,17 @@ =cut - my $self=shift; - - $self->{'searchFilter'}="&(objectclass=radiusprofile)"; - $self->{'searchFilter'}.="($self->{'filter'})" if ($self->{'filter'}); + my $self = shift; - $self->{'radiusprofiles'}=$self->getEntriesAsHashRef($self->getRadiusProfilesBranchDN(), $self->{'searchFilter'}); - return $self->{'radiusprofiles'}; + $self->{'searchFilter'} = "&(objectclass=radiusprofile)"; + $self->{'searchFilter'} .= "($self->{'filter'})" if ( $self->{'filter'} ); -} + $self->{'radiusprofiles'} = + $self->getEntriesAsHashRef( $self->getRadiusProfilesBranchDN(), + $self->{'searchFilter'} ); + return $self->{'radiusprofiles'}; +} sub getRadiusProfileCN { @@ -101,18 +97,17 @@ =cut - my $self=shift; - my $dn=shift; + my $self = shift; + my $dn = shift; - my $profile=$self->getEntryAsHashRef($dn); + my $profile = $self->getEntryAsHashRef($dn); - if ($profile->{'cn'}) { - return $profile->{'cn'}; - } + if ( $profile->{'cn'} ) { + return $profile->{'cn'}; + } - return "nonexisting"; + return "nonexisting"; } - 1; Index: MailMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/MailMan.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- MailMan.pm 1 Feb 2001 12:07:10 -0000 1.2 +++ MailMan.pm 30 May 2004 23:35:37 -0000 1.3 @@ -4,38 +4,33 @@ use Net::SMTP; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); - require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( -sendmail + sendmail ); $VERSION = '0.01'; +sub sendmail { + my $self = shift; + my $hash = shift; + my $mailhost = $self->getConfig("mailhost") || "localhost"; + my $smtp = Net::SMTP->new($mailhost); + $smtp->mail( $hash->{'from'} ); + $smtp->to( $hash->{'to'} ); + $smtp->data(); + $smtp->datasend("To: $hash->{'to'} \n"); -sub sendmail { - my $self=shift; - my $hash=shift; - my $mailhost=$self->getConfig("mailhost")|| "localhost"; - my $smtp = Net::SMTP->new($mailhost); - - $smtp->mail($hash->{'from'}); - $smtp->to($hash->{'to'}); - $smtp->data(); - - $smtp->datasend("To: $hash->{'to'} \n"); - - $smtp->datasend("Subject: $hash->{'subject'} \n"); - $smtp->datasend("\n"); - $smtp->datasend($hash->{'data'}); - $smtp->dataend(); - $smtp->quit; + $smtp->datasend("Subject: $hash->{'subject'} \n"); + $smtp->datasend("\n"); + $smtp->datasend( $hash->{'data'} ); + $smtp->dataend(); + $smtp->quit; } 1; - __END__ Index: GetText.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/GetText.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- GetText.pm 22 Dec 2001 05:14:52 -0000 1.3 +++ GetText.pm 30 May 2004 23:35:37 -0000 1.4 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::GetText - routines to translate text. @@ -20,72 +21,71 @@ use strict; use Data::Dumper; -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $Config $messages $locale_dir $VAR1 $lang); +use vars + qw($VERSION @ISA @EXPORT @EXPORT_OK $Config $messages $locale_dir $VAR1 $lang); require Exporter; --dfGzR35o/[email protected] = qw(Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(Exporter AutoLoader); @EXPORT = qw( -setLanguage -gettext -settext -setLocaleDir + setLanguage + gettext + settext + setLocaleDir ); $VERSION = '0.01'; - - sub new { - my $class=shift; - return bless {}, $class; + my $class = shift; + return bless {}, $class; } - sub setLocaleDir { - my $self=shift; - $locale_dir=shift; + my $self = shift; + $locale_dir = shift; } - -sub setLanguage{ - my $self=shift; - $lang=shift; - my $file="$locale_dir/$lang.hash"; - if (-e $file) { - do $file; - $messages->{$lang}=$VAR1; - } +sub setLanguage { + my $self = shift; + $lang = shift; + my $file = "$locale_dir/$lang.hash"; + if ( -e $file ) { + do $file; + $messages->{$lang} = $VAR1; + } } - sub gettext { - my $self=shift; - my $string=shift; - + my $self = shift; + my $string = shift; - my $returnString=""; - if ($messages->{$lang}{$string} && $messages->{$lang}{$string} ne "TranslateMe") { - $returnString=$messages->{$lang}{$string}; - } else { - $messages->{$lang}{$string}="TranslateMe"; - $self->settext; - if ($lang eq 'en') { - $returnString= $string; - } else { - $returnString= join '::' ,($lang, $string); - } - } - $returnString=~s/\n/\\n/g; - return $returnString; + my $returnString = ""; + if ( $messages->{$lang}{$string} + && $messages->{$lang}{$string} ne "TranslateMe" ) + { + $returnString = $messages->{$lang}{$string}; + } + else { + $messages->{$lang}{$string} = "TranslateMe"; + $self->settext; + if ( $lang eq 'en' ) { + $returnString = $string; + } + else { + $returnString = join '::', ( $lang, $string ); + } + } + $returnString =~ s/\n/\\n/g; + return $returnString; } sub settext { - my $self=shift; - my $file="$locale_dir/$lang.hash"; - open "F", ">$file" || die "Cant open file"; - print F Dumper($messages->{$lang}); - print F "\n1;\n"; - close("F"); + my $self = shift; + my $file = "$locale_dir/$lang.hash"; + open "F", ">$file" || die "Cant open file"; + print F Dumper( $messages->{$lang} ); + print F "\n1;\n"; + close("F"); } 1; Index: ResellerMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/ResellerMan.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- ResellerMan.pm 14 May 2003 10:31:34 -0000 1.5 +++ ResellerMan.pm 30 May 2004 23:35:37 -0000 1.6 @@ -3,240 +3,258 @@ use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $ispman); require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - formAddReseller - AddReseller - addReseller - showResellers - editReseller - getResellers - getResellerById - getNewResellerId - getResellerNameById - getResellerDnById - ModifyReseller - SuspendReseller - ReactivateReseller - DeleteReseller - getResellerAttributes + formAddReseller + AddReseller + addReseller + showResellers + editReseller + getResellers + getResellerById + getNewResellerId + getResellerNameById + getResellerDnById + ModifyReseller + SuspendReseller + ReactivateReseller + DeleteReseller + getResellerAttributes - changeResellerPassword - ispmanSuspendResellers - ispmanReactivateResellers - ispmanDeleteResellers + changeResellerPassword + ispmanSuspendResellers + ispmanReactivateResellers + ispmanDeleteResellers ); sub getResellerAttributes { - #return list of modifyable attributes for a reseller - my $self=shift; - return qw ( - uid - userPassword - ispmanStatus - ispmanResellerName - sn - givenName - street - postalCode - l - c - ispmanResellerMaxClients - telephoneNumber - facsimileTelephoneNumber - ); + #return list of modifyable attributes for a reseller + my $self = shift; + + return qw ( + uid + userPassword + ispmanStatus + ispmanResellerName + sn + givenName + street + postalCode + l + c + ispmanResellerMaxClients + telephoneNumber + facsimileTelephoneNumber + ); } sub getNewResellerId { - my $self=shift; - my $entry=$self->getEntry("cn=resellercounter, ou=counters, $self->{'Config'}{'ldapBaseDN'}"); - my $currid=$entry->get_value("currid"); - $self->updateEntryWithData("cn=resellercounter, ou=counters, $self->{'Config'}{'ldapBaseDN'}", {"currid" => ++$currid}); - return $currid; + my $self = shift; + my $entry = + $self->getEntry( + "cn=resellercounter, ou=counters, $self->{'Config'}{'ldapBaseDN'}"); + my $currid = $entry->get_value("currid"); + $self->updateEntryWithData( + "cn=resellercounter, ou=counters, $self->{'Config'}{'ldapBaseDN'}", + { "currid" => ++$currid } ); + return $currid; } - sub getResellerNameById { - my $self=shift; - my $id=shift; - $self->getResellerById($id); - return $self->{'reseller'}{'ispmanResellerName'}; + my $self = shift; + my $id = shift; + $self->getResellerById($id); + return $self->{'reseller'}{'ispmanResellerName'}; } sub getResellerDnById { - my $self=shift; - my $id=shift; - return "ispmanResellerId=$id, ou=ispman, $self->{'Config'}{'ldapBaseDN'}"; + my $self = shift; + my $id = shift; + return "ispmanResellerId=$id, ou=ispman, $self->{'Config'}{'ldapBaseDN'}"; } - sub formAddReseller { - my $self=shift; - my $r=shift; + my $self = shift; + my $r = shift; - $self->getResellerNameById($r->param("ispmanResellerId")); - my $template=$self->getTemplate("resellers/add_edit.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + $self->getResellerNameById( $r->param("ispmanResellerId") ); + my $template = $self->getTemplate("resellers/add_edit.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - sub addReseller { - my $self=shift; - - my $r=shift; - my $id=$self->getNewResellerId(); - $r->param("ispmanResellerId", $id); - $r->param("userPassword", $self->encryptPassWithMethod($r->param("userPassword"),$self->getConf('userPassHashMethod'))); - - $self->addDataFromLdif('templates/reseller.ldif.template', $r); - $self->{'message'}="Reseller Added. Id: $id"; - #$self->editReseller($r); + my $self = shift; + + my $r = shift; + my $id = $self->getNewResellerId(); + $r->param( "ispmanResellerId", $id ); + $r->param( + "userPassword", + $self->encryptPassWithMethod( + $r->param("userPassword"), + $self->getConf('userPassHashMethod') + ) + ); + + $self->addDataFromLdif( 'templates/reseller.ldif.template', $r ); + $self->{'message'} = "Reseller Added. Id: $id"; + + #$self->editReseller($r); } sub AddReseller { - my $self=shift; - my $r=shift; - $self->addReseller($r); - $self->showResellers($r); + my $self = shift; + my $r = shift; + $self->addReseller($r); + $self->showResellers($r); } sub getResellers { - my $self=shift; - my $filter="objectclass=ispmanReseller"; - $self->{'resellers'}=$self->getEntriesAsHashRef($self->{'Config'}{'ldapBaseDN'}, $filter); - return $self->{'resellers'}; + my $self = shift; + my $filter = "objectclass=ispmanReseller"; + $self->{'resellers'} = + $self->getEntriesAsHashRef( $self->{'Config'}{'ldapBaseDN'}, $filter ); + return $self->{'resellers'}; } sub getResellerById { - my $self=shift; - my $id=shift; - $self->{'reseller'}=$self->getEntryAsHashRef($self->getResellerDnById($id), "ispmanResellerId=$id"); - return $self->{'reseller'}; + my $self = shift; + my $id = shift; + $self->{'reseller'} = + $self->getEntryAsHashRef( $self->getResellerDnById($id), + "ispmanResellerId=$id" ); + return $self->{'reseller'}; } sub showResellers { - my $self=shift; - return unless ($self->{'session'}->param("logintype") eq "reseller" || $self->{'session'}->param("logintype") eq "admin"); - my $template=$self->getTemplate("resellers/list.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + return + unless ( $self->{'session'}->param("logintype") eq "reseller" + || $self->{'session'}->param("logintype") eq "admin" ); + my $template = $self->getTemplate("resellers/list.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - sub editReseller { - my $self=shift; - my $r=shift; - $self->getResellerById($r->param('ispmanResellerId')); - my $template=$self->getTemplate("resellers/add_edit.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $r = shift; + $self->getResellerById( $r->param('ispmanResellerId') ); + my $template = $self->getTemplate("resellers/add_edit.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - - - sub SuspendReseller { - my $self=shift; - if ($self->{'session'}->param("logintype") ne "admin") { - #Only Admin can add resellers - print "Whatchou talking about, willis?"; - exit; - } - my $id=shift; - $self->updateEntryWithData($self->getResellerDnById($id), {"ispmanStatus" => "suspend"}); + my $self = shift; + if ( $self->{'session'}->param("logintype") ne "admin" ) { + + #Only Admin can add resellers + print "Whatchou talking about, willis?"; + exit; + } + my $id = shift; + $self->updateEntryWithData( $self->getResellerDnById($id), + { "ispmanStatus" => "suspend" } ); } sub ReactivateReseller { - my $self=shift; - if ($self->{'session'}->param("logintype") ne "admin") { - #Only Admin can add resellers - print "Heyhey you must be really sore!!"; - exit; - } - my $id=shift; - $self->updateEntryWithData($self->getResellerDnById($id), {"ispmanStatus" => "active"}); + my $self = shift; + if ( $self->{'session'}->param("logintype") ne "admin" ) { + + #Only Admin can add resellers + print "Heyhey you must be really sore!!"; + exit; + } + my $id = shift; + $self->updateEntryWithData( $self->getResellerDnById($id), + { "ispmanStatus" => "active" } ); } sub DeleteReseller { - my $self=shift; - if ($self->{'session'}->param("logintype") ne "admin") { - #Only Admin can add resellers - print "Ouch!! Go away, I dont want to play with you no more."; - exit; - } - my $id=shift; - $self->{'ispman'}->delTree($self->getResellerDnById($id)); + my $self = shift; + if ( $self->{'session'}->param("logintype") ne "admin" ) { + + #Only Admin can add resellers + print "Ouch!! Go away, I dont want to play with you no more."; + exit; + } + my $id = shift; + $self->{'ispman'}->delTree( $self->getResellerDnById($id) ); } sub ModifyReseller { - my $self=shift; - my $r=shift; - my @ResellerAttributes=$self->getResellerAttributes(); - my $data; - for (@ResellerAttributes) { - if ($r->param($_)) { - $data->{$_}=$r->param($_); - } - } - $data->{'userPassword'}=$self->encryptPassWithMethod($r->param("userPassword"),$self->getConf('userPassHashMethod')); - $self->updateEntryWithData($self->getResellerDnById($r->param("ispmanResellerId")), $data); - $r->param("mode", "showResellers"); - $self->showResellers($r); + my $self = shift; + my $r = shift; + my @ResellerAttributes = $self->getResellerAttributes(); + my $data; + for (@ResellerAttributes) { + if ( $r->param($_) ) { + $data->{$_} = $r->param($_); + } + } + $data->{'userPassword'} = + $self->encryptPassWithMethod( $r->param("userPassword"), + $self->getConf('userPassHashMethod') ); + $self->updateEntryWithData( + $self->getResellerDnById( $r->param("ispmanResellerId") ), $data ); + $r->param( "mode", "showResellers" ); + $self->showResellers($r); } - - sub ispmanSuspendResellers { - my $self=shift; - my $r=shift; + my $self = shift; + my $r = shift; - my @ids=$self->as_array($r->param("ispmanResellerId")); - for (@ids){ - $self->SuspendReseller($_); - }; - $r->delete("mode"); - $r->param("mode", "showResellers"); - $self->showResellers($r); + my @ids = $self->as_array( $r->param("ispmanResellerId") ); + for (@ids) { + $self->SuspendReseller($_); + } + $r->delete("mode"); + $r->param( "mode", "showResellers" ); + $self->showResellers($r); } sub ispmanReactivateResellers { - my $self=shift; - my $r=shift; + my $self = shift; + my $r = shift; - my @ids=$self->as_array($r->param("ispmanResellerId")); - for (@ids){ - $self->ReactivateReseller($_); - }; - $r->delete("mode"); - $r->param("mode", "showResellers"); - $self->showResellers($r); + my @ids = $self->as_array( $r->param("ispmanResellerId") ); + for (@ids) { + $self->ReactivateReseller($_); + } + $r->delete("mode"); + $r->param( "mode", "showResellers" ); + $self->showResellers($r); } sub ispmanDeleteResellers { - my $self=shift; - my $r=shift; + my $self = shift; + my $r = shift; - my @ids=$self->as_array($r->param("ispmanResellerId")); - for (@ids){ - $self->DeleteReseller($_); - }; - $r->delete("mode"); - $r->param("mode", "showResellers"); - $self->showResellers($r); + my @ids = $self->as_array( $r->param("ispmanResellerId") ); + for (@ids) { + $self->DeleteReseller($_); + } + $r->delete("mode"); + $r->param( "mode", "showResellers" ); + $self->showResellers($r); } sub changeResellerPassword { - my $self=shift; - my ($rid, $pass)=@_; - my $dn=$self->getResellerDnById($rid); - my $data={}; - $data->{'userPassword'}=$self->encryptPassWithMethod($pass,$self->getConf('userPassHashMethod')); - return $self->updateEntryWithData($dn, $data); + my $self = shift; + my ( $rid, $pass ) = @_; + my $dn = $self->getResellerDnById($rid); + my $data = {}; + $data->{'userPassword'} = + $self->encryptPassWithMethod( $pass, + $self->getConf('userPassHashMethod') ); + return $self->updateEntryWithData( $dn, $data ); } Index: DBMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/DBMan.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- DBMan.pm 1 Jul 2002 11:01:28 -0000 1.3 +++ DBMan.pm 30 May 2004 23:35:37 -0000 1.4 @@ -5,151 +5,143 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - add_database_form - add_vhost_database - create_vhost_database - drop_vhost_database - create_database - drop_database - editDatabase - getDatabases - getDatabaseInfo - modify_vhost_database + add_database_form + add_vhost_database + create_vhost_database + drop_vhost_database + create_database + drop_database + editDatabase + getDatabases + getDatabaseInfo + modify_vhost_database ); $VERSION = '0.01'; - - - - sub getDatabases { - my $self=shift; - my $dn=shift; - - my $dbHash=$self->{'ldap'}->getEntriesAsHashRef($dn, "&(objectclass=ispmanDatabaseData)(dbname=*)", ["dbname"]); - - my $dbs; - for (keys %$dbHash) { - $dbs->{$dbHash->{$_}{'dbname'}}=$_; - } - return $dbs; + my $self = shift; + my $dn = shift; -} + my $dbHash = + $self->{'ldap'} + ->getEntriesAsHashRef( $dn, "&(objectclass=ispmanDatabaseData)(dbname=*)", + ["dbname"] ); + my $dbs; + for ( keys %$dbHash ) { + $dbs->{ $dbHash->{$_}{'dbname'} } = $_; + } + return $dbs; +} sub getDatabaseInfo { - my $self=shift; - my $dbname=shift; - my $domain=shift; - my $dn; + my $self = shift; + my $dbname = shift; + my $domain = shift; + my $dn; - if ($dbname !~ /^dbname=/){ - $dn="dbname=$dbname, ou=databases, ispmanDomain=$domain, "; - $dn.=$self->getConf("ldapBaseDN"); - } else { - # we have been passed a dn - $dn=$dbname; - } + if ( $dbname !~ /^dbname=/ ) { + $dn = "dbname=$dbname, ou=databases, ispmanDomain=$domain, "; + $dn .= $self->getConf("ldapBaseDN"); + } + else { - $self->{'dbInfo'}{$domain}{$dbname}=$self->getEntryAsHashRef($dn); - return $self->{'dbInfo'}{$domain}{$dbname}; + # we have been passed a dn + $dn = $dbname; + } -} + $self->{'dbInfo'}{$domain}{$dbname} = $self->getEntryAsHashRef($dn); + return $self->{'dbInfo'}{$domain}{$dbname}; +} sub editDatabase { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); - $self->{'database'}=$self->getDatabaseInfo($dn); - - my $template; - - if ($self->isDomainEditable($r->param("ispmanDomain"))) { - $template=$self->getTemplate("databases/edit.tmpl"); - } else { - $template=$self->getTemplate("databases/view.tmpl"); - } - print $template->fill_in(PACKAGE => "ISPMan"); -} + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); + $self->{'database'} = $self->getDatabaseInfo($dn); + my $template; + if ( $self->isDomainEditable( $r->param("ispmanDomain") ) ) { + $template = $self->getTemplate("databases/edit.tmpl"); + } + else { + $template = $self->getTemplate("databases/view.tmpl"); + } + print $template->fill_in( PACKAGE => "ISPMan" ); +} sub modify_vhost_database { - my $self=shift; - my $r=shift; - $self->modifyAttribute($r->param("dn"), "password", $r->param("password")); - $self->editDatabase($r); + my $self = shift; + my $r = shift; + $self->modifyAttribute( $r->param("dn"), "password", + $r->param("password") ); + $self->editDatabase($r); } - sub add_database_form { - my $self=shift; - my $template=$self->getTemplate("databases/add.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("databases/add.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - - sub add_vhost_database { - my ($self, $r)=@_; - $self->create_vhost_database($r->param("ispmanDomain"), $r->param("vhost"), $r->param("pass")); - print "Database Scheduled for addition"; + my ( $self, $r ) = @_; + $self->create_vhost_database( $r->param("ispmanDomain"), + $r->param("vhost"), $r->param("pass") ); + print "Database Scheduled for addition"; } - - sub create_vhost_database { - my $self=shift; - my ($domain, $vhost, $pass)=@_; - - # this sub will only add data to the LDAP server - # it will not really create or drop tables. - - my $data; - $data->{'dbname'}=join '_', ($vhost, $domain); - $data->{'dbname'}=~s/\./_/g; - $data->{'dbname'}=~s/[^a-z0-9]/_/g; + my $self = shift; + my ( $domain, $vhost, $pass ) = @_; - $data->{'user'}=join '.', ($vhost, $domain); - $data->{'domain'}=$domain; - $data->{'vhost'}=$vhost; - $data->{'password'}=$pass; - $data->{'objectclass'}="ispmanDatabaseData"; - - my $branch="ou=databases, ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"; - unless ($self->entryExists($branch)){ - $self->addDataFromLdif("templates/domain.databases.ldif.template", {'domain' => $domain}); - } + # this sub will only add data to the LDAP server + # it will not really create or drop tables. - my $dn="dbname=$data->{'dbname'}, ou=databases, ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"; - unless ($self->entryExists($dn)){ - print "Adding $dn\n"; - $self->addNewEntryWithData($dn, $data); - } -} + my $data; + $data->{'dbname'} = join '_', ( $vhost, $domain ); + $data->{'dbname'} =~ s/\./_/g; + $data->{'dbname'} =~ s/[^a-z0-9]/_/g; + $data->{'user'} = join '.', ( $vhost, $domain ); + $data->{'domain'} = $domain; + $data->{'vhost'} = $vhost; + $data->{'password'} = $pass; + $data->{'objectclass'} = "ispmanDatabaseData"; + my $branch = + "ou=databases, ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"; + unless ( $self->entryExists($branch) ) { + $self->addDataFromLdif( "templates/domain.databases.ldif.template", + { 'domain' => $domain } ); + } + my $dn = +"dbname=$data->{'dbname'}, ou=databases, ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"; + unless ( $self->entryExists($dn) ) { + print "Adding $dn\n"; + $self->addNewEntryWithData( $dn, $data ); + } +} sub drop_vhost_database { - my $self=shift; - my ($domain, $vhost)=@_; - my $dbname=join '_', ($vhost, $domain); - $dbname=~s/\./_/g; - my $dn="dbname=$dbname, ou=databases, ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"; - if ($self->entryExists($dn)){ - print "Dropping $dn\n"; - $self->deleteEntry($dn); - } + my $self = shift; + my ( $domain, $vhost ) = @_; + my $dbname = join '_', ( $vhost, $domain ); + $dbname =~ s/\./_/g; + my $dn = +"dbname=$dbname, ou=databases, ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"; + if ( $self->entryExists($dn) ) { + print "Dropping $dn\n"; + $self->deleteEntry($dn); + } } - - - 1; __END__ Index: Handlers.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/Handlers.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Handlers.pm 4 Jan 2004 18:56:15 -0000 1.3 +++ Handlers.pm 30 May 2004 23:35:37 -0000 1.4 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::Handlers - Functions to manage Handlers @@ -11,26 +12,19 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( ); $VERSION = '0.01'; - - - - sub new { - my $proto = shift; - my $class = ref($proto) || $proto; - my $self = {}; - bless ($self, $class); - $self->SUPER::register_handler("testevent", "testhandler"); + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless( $self, $class ); + $self->SUPER::register_handler( "testevent", "testhandler" ); } - - - 1; __END__ Index: ConfMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/ConfMan.pm,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- ConfMan.pm 21 Feb 2004 21:31:31 -0000 1.12 +++ ConfMan.pm 30 May 2004 23:35:37 -0000 1.13 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::ConfMan - This package manages configurable items kept in the LDAP directory @@ -22,113 +23,117 @@ =cut - - package ISPMan::ConfMan; use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); - require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( -configure -selectModule -getConfModules -editModule -modifyModule -getConfVars -setConfVar -getConfVarDN -getConfModuleDN + configure + selectModule + getConfModules + editModule + modifyModule + getConfVars + setConfVar + getConfVarDN + getConfModuleDN ); $VERSION = '0.01'; - - sub configure { - my $self=shift; - my $r=shift; - return unless $self->{'session'}->param("logintype") eq "admin"; - my $template=$self->getTemplate("modules/selectConfModule.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $r = shift; + return unless $self->{'session'}->param("logintype") eq "admin"; + my $template = $self->getTemplate("modules/selectConfModule.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } -sub getConfModuleDN{ - my $self=shift; - my ($module)=shift; - return "ispmanModule=$module,ou=conf, @{[$self->getConf('ldapBaseDN')]}"; +sub getConfModuleDN { + my $self = shift; + my ($module) = shift; + return "ispmanModule=$module,ou=conf, @{[$self->getConf('ldapBaseDN')]}"; } sub getConfVarDN { - my $self=shift; - my ($module,$var)=@_; - return join ',', "ispmanVar=$var" , $self->getConfModuleDN($module); + my $self = shift; + my ( $module, $var ) = @_; + return join ',', "ispmanVar=$var", $self->getConfModuleDN($module); } sub getConfModules { - my $self=shift; - $self->log_event("running getConfModules"); - return $self->{'ldap'}->getEntriesAsHashRef("ou=conf, @{[$self->getConf('ldapBaseDN')]}", "objectclass=ispmanconfmodule", ["ispmanModule", "description", "ispmanModuleAlias"], 'one'); + my $self = shift; + $self->log_event("running getConfModules"); + return $self->{'ldap'}->getEntriesAsHashRef( + "ou=conf, @{[$self->getConf('ldapBaseDN')]}", + "objectclass=ispmanconfmodule", + [ "ispmanModule", "description", "ispmanModuleAlias" ], + 'one' + ); } sub getConfVars { - my $self=shift; - my $module=shift; - $module||="*"; - return $self->{'ldap'}->getEntriesAsHashRef("ou=conf, @{[$self->getConf('ldapBaseDN')]}", "&(objectclass=ispmanConfVar)(ispmanModule=$module)", ["ispmanModule", "ispmanVar", "ispmanVal", "ispmanQuestion"]); + my $self = shift; + my $module = shift; + $module ||= "*"; + return $self->{'ldap'}->getEntriesAsHashRef( + "ou=conf, @{[$self->getConf('ldapBaseDN')]}", + "&(objectclass=ispmanConfVar)(ispmanModule=$module)", + [ "ispmanModule", "ispmanVar", "ispmanVal", "ispmanQuestion" ] + ); } - sub editModule { - my $self=shift; - return unless $self->{'session'}->param("logintype") eq "admin"; - my $r=shift; - my $module=$r->param("module"); - $self->{'moduleinfo'}=$self->{'ldap'}->getEntriesAsHashRef($self->getConfModuleDN($module), "objectclass=ispmanConfVar"); - my $template=$self->getTemplate("modules/editModule.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + return unless $self->{'session'}->param("logintype") eq "admin"; + my $r = shift; + my $module = $r->param("module"); + $self->{'moduleinfo'} = + $self->{'ldap'}->getEntriesAsHashRef( $self->getConfModuleDN($module), + "objectclass=ispmanConfVar" ); + my $template = $self->getTemplate("modules/editModule.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - - - sub setConfVar { - my $self=shift; - my ($module, $var,$val)=@_; - my $dn="ispmanVar=$var, ispmanModule=$module, ou=conf, @{[$self->getConf('ldapBaseDN')]}"; - $self->updateEntryWithData($dn, {'ispmanVal' => $val}); + my $self = shift; + my ( $module, $var, $val ) = @_; + my $dn = +"ispmanVar=$var, ispmanModule=$module, ou=conf, @{[$self->getConf('ldapBaseDN')]}"; + $self->updateEntryWithData( $dn, { 'ispmanVal' => $val } ); } sub modifyModule { - my $self=shift; - my $r=shift; - return unless $self->{'session'}->param("logintype") eq "admin"; - return unless $self->requiredAdminLevel(100); + my $self = shift; + my $r = shift; + return unless $self->{'session'}->param("logintype") eq "admin"; + return unless $self->requiredAdminLevel(100); + $r->delete("mode"); + my $module = $r->param("module"); + $r->delete("module"); + my ( $dn, $data ); - $r->delete("mode"); - my $module=$r->param("module"); - $r->delete("module"); - my ($dn, $data); - - for ($r->param) { - my $dn="ispmanVar=$_, ispmanModule=$module, ou=conf, @{[$self->getConf('ldapBaseDN')]}"; - $data->{'ispmanVal'}=$r->param($_); - $self->updateEntryWithData($dn, $data); - } - if ($self->getConf("debug")>2) { - print "Saved $module with <br>"; - print $r->as_string ; - } - print '<p><a href="' . $ENV{"SCRIPT_NAME"} . '?mode=configure">Return to Configuration Menu</a></p>'; + for ( $r->param ) { + my $dn = +"ispmanVar=$_, ispmanModule=$module, ou=conf, @{[$self->getConf('ldapBaseDN')]}"; + $data->{'ispmanVal'} = $r->param($_); + $self->updateEntryWithData( $dn, $data ); + } + if ( $self->getConf("debug") > 2 ) { + print "Saved $module with <br>"; + print $r->as_string ; + } + print '<p><a href="' + . $ENV{"SCRIPT_NAME"} + . '?mode=configure">Return to Configuration Menu</a></p>'; } 1; - __END__ Index: Config.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/Config.pm,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- Config.pm 5 Aug 2003 22:14:23 -0000 1.8 +++ Config.pm 30 May 2004 23:35:37 -0000 1.9 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::Config - Utility functions for accessing values from ispman.conf @@ -35,10 +36,6 @@ =cut - - - - package ISPMan::Config; use strict; @@ -47,50 +44,50 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); [email protected] = qw(); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); [email protected] = qw(); $VERSION = '0.01'; - - - sub new { - my $proto = shift; - my $class = ref($proto) || $proto; - #my $confDir="/opt/ispman/conf"; - #my $confDir="/opt/ispman/conf"; - my $confDir=$INC{'ISPMan/Config.pm'}; - $confDir=~ s!lib/ISPMan/Config.pm!conf!; - unless (-d $confDir) { - # look in installdir/tmp/conf #helpful for developers - $confDir=~s !conf$!tmp/conf!; - } + my $proto = shift; + my $class = ref($proto) || $proto; - - unless ($Config){ - unless (-d $confDir) { - # look in /etc - $confDir="/etc/ispman/conf"; - } - die "\n\nERROR: $confDir does not exists. \nDid you create the configuration directory?\n\n" unless (-e $confDir); - die "\n\nERROR: $confDir is not a directory\n\n" unless (-d $confDir); - die "\n\nERROR: Configuration file $confDir/ispman.conf not found\n\n" unless -e "$confDir/ispman.conf"; - defined( do "$confDir/ispman.conf" ) || - die("\n\nERROR reading $confDir/ispman.conf: $@"); - if( -r "$confDir/nls.conf" ) { - defined( do "$confDir/nls.conf" ) || - die("\n\nERROR reading $confDir/nls.conf: $@"); - } - if( -r "$confDir/custom.conf" ) { - defined( do "$confDir/custom.conf" ) || - die("\n\nERROR reading $confDir/custom.conf: $@"); - } - } - $Config=$ISPMan::Config; - my $self=$Config; - return bless $self, $class; + #my $confDir="/opt/ispman/conf"; + #my $confDir="/opt/ispman/conf"; + my $confDir = $INC{'ISPMan/Config.pm'}; + $confDir =~ s!lib/ISPMan/Config.pm!conf!; + unless ( -d $confDir ) { + # look in installdir/tmp/conf #helpful for developers + $confDir =~ s !conf$!tmp/conf!; + } + unless ($Config) { + unless ( -d $confDir ) { + + # look in /etc + $confDir = "/etc/ispman/conf"; + } + die +"\n\nERROR: $confDir does not exists. \nDid you create the configuration directory?\n\n" + unless ( -e $confDir ); + die "\n\nERROR: $confDir is not a directory\n\n" unless ( -d $confDir ); + die "\n\nERROR: Configuration file $confDir/ispman.conf not found\n\n" + unless -e "$confDir/ispman.conf"; + defined( do "$confDir/ispman.conf" ) + || die("\n\nERROR reading $confDir/ispman.conf: $@"); + if ( -r "$confDir/nls.conf" ) { + defined( do "$confDir/nls.conf" ) + || die("\n\nERROR reading $confDir/nls.conf: $@"); + } + if ( -r "$confDir/custom.conf" ) { + defined( do "$confDir/custom.conf" ) + || die("\n\nERROR reading $confDir/custom.conf: $@"); + } + } + $Config = $ISPMan::Config; + my $self = $Config; + return bless $self, $class; =item B<new> @@ -117,15 +114,12 @@ =cut - } - sub getConf { - my $self=shift; - my $var=shift; - return $self->SUPER::getConf($var); - + my $self = shift; + my $var = shift; + return $self->SUPER::getConf($var); =item B<getConf> Index: LDAP.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/LDAP.pm,v retrieving revision 1.78 retrieving revision 1.79 diff -u -d -r1.78 -r1.79 --- LDAP.pm 1 Feb 2004 23:26:17 -0000 1.78 +++ LDAP.pm 30 May 2004 23:35:37 -0000 1.79 @@ -6,72 +6,71 @@ use Net::LDAP::LDIF; use IO::Scalar; -use Net::LDAP::Util qw(ldap_error_desc ldap_error_name ldap_error_text canonical_dn) ; +use Net::LDAP::Util + qw(ldap_error_desc ldap_error_name ldap_error_text canonical_dn); use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $LDAP); use ISPMan::Utils; require Exporter; [...1588 lines suppressed...] + print "$_ exists\nLeaving\n" if $self->{'Config'}->{'debug'} == 3; + last FindMissingBranches; + } + } + + for (@missingBranches) { + $currBranch = $_; + + # create the missing branches. + print "Creating missing branch: $_ <br>\n" + if $self->{'Config'}->{'debug'} == 3; + $self->addNewEntryWithData( $_, { 'objectclass' => 'ispmanBranch' } ); + } + + $self->{'branches'}{$currBranch}++; + return $currBranch; +} 1; __END__ Index: AdminMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/AdminMan.pm,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- AdminMan.pm 25 Apr 2003 16:21:54 -0000 1.13 +++ AdminMan.pm 30 May 2004 23:35:37 -0000 1.14 @@ -5,200 +5,197 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - admins - newAdmin - _addAdmin - addAdmin - editAdmin - updateAdmin - deleteAdmin - _deleteAdmin - getAdmins - createAdmin - getAdminInfo - getAdminsCount - getAdminLevel - requiredAdminLevel + admins + newAdmin + _addAdmin + addAdmin + editAdmin + updateAdmin + deleteAdmin + _deleteAdmin + getAdmins + createAdmin + getAdminInfo + getAdminsCount + getAdminLevel + requiredAdminLevel ); $VERSION = '0.01'; - - - sub admins { - my $self=shift; - return unless $self->{'session'}->param("logintype") eq "admin"; - my $template=$self->getTemplate("admins/list.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + return unless $self->{'session'}->param("logintype") eq "admin"; + my $template = $self->getTemplate("admins/list.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } sub editAdmin { - my $self=shift; - return unless $self->{'session'}->param("logintype") eq "admin"; - my $r=shift; - $self->{'admin'}=$self->getAdminInfo($r->param("uid")); - my $template=$self->getTemplate("admins/edit.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + return unless $self->{'session'}->param("logintype") eq "admin"; + my $r = shift; + $self->{'admin'} = $self->getAdminInfo( $r->param("uid") ); + my $template = $self->getTemplate("admins/edit.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } sub addAdmin { - my $self=shift; - return unless $self->{'session'}->param("logintype") eq "admin"; - my $template=$self->getTemplate("admins/add.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + return unless $self->{'session'}->param("logintype") eq "admin"; + my $template = $self->getTemplate("admins/add.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - - sub getAdminInfo { - my $self=shift; - my $uid=shift; + my $self = shift; + my $uid = shift; - my $dn="uid=$uid, ou=admins, "; - $dn.=$self->getConf("ldapBaseDN"); - - my $adminHash=$self->getEntryAsHashRef($dn, "objectclass=ispmanSysadmin"); - return $adminHash; + my $dn = "uid=$uid, ou=admins, "; + $dn .= $self->getConf("ldapBaseDN"); + + my $adminHash = + $self->getEntryAsHashRef( $dn, "objectclass=ispmanSysadmin" ); + return $adminHash; } sub getAdminLevel { - my $self=shift; - my $uid=shift; - my $adminInfo=$self->getAdminInfo($uid); - return $adminInfo->{'ispmanSysadminLevel'}; + my $self = shift; + my $uid = shift; + my $adminInfo = $self->getAdminInfo($uid); + return $adminInfo->{'ispmanSysadminLevel'}; } sub getAdmins { - my $self=shift; - my $dn="ou=admins, "; - $dn.=$self->getConf("ldapBaseDN"); - my $adminHash=$self->{'ldap'}->getEntriesAsHashRef($dn, "objectclass=ispmanSysadmin"); - return $adminHash; + my $self = shift; + my $dn = "ou=admins, "; + $dn .= $self->getConf("ldapBaseDN"); + my $adminHash = + $self->{'ldap'}->getEntriesAsHashRef( $dn, "objectclass=ispmanSysadmin" ); + return $adminHash; } sub updateAdmin { - my $self=shift; - return unless $self->requiredAdminLevel(100); - my $r=shift; - my $uid=$r->param("uid"); - $uid=~s/ //g; - $r->param("uid", $uid); - + my $self = shift; + return unless $self->requiredAdminLevel(100); + my $r = shift; + my $uid = $r->param("uid"); + $uid =~ s/ //g; + $r->param( "uid", $uid ); - my $dn="uid=$uid, ou=admins, "; - $dn.=$self->getConf("ldapBaseDN"); - $r->param("dn", $dn); + my $dn = "uid=$uid, ou=admins, "; + $dn .= $self->getConf("ldapBaseDN"); + $r->param( "dn", $dn ); + $r->param( + "userPassword", + $self->encryptPassWithMethod( + $r->param("userPassword"), + $self->getConf('userPassHashMethod') + ) + ); + my $data; - $r->param("userPassword", $self->encryptPassWithMethod($r->param("userPassword"),$self->getConf('userPassHashMethod'))); - my $data; + for (qw(uid cn ispmanSysadminMail userPassword ispmanSysadminLevel)) { + $data->{$_} = $r->param($_) || ""; + } - for (qw(uid cn ispmanSysadminMail userPassword ispmanSysadminLevel)) { - $data->{$_}=$r->param($_)||""; - } - - $self->updateEntryWithData($dn, $data); - $self->admins(); + $self->updateEntryWithData( $dn, $data ); + $self->admins(); } - sub newAdmin { - my $self=shift; - return unless $self->requiredAdminLevel(100); - - my $r=shift; - - $self->_addAdmin( - $r->param("uid"), - $r->param("userPassword"), - $r->param("ispmanSysadminLevel"), - $r->param("cn"), - $r->param("ispmanSysadminMail")); - - $self->admins(); -} + my $self = shift; + return unless $self->requiredAdminLevel(100); + my $r = shift; + $self->_addAdmin( + $r->param("uid"), + $r->param("userPassword"), + $r->param("ispmanSysadminLevel"), + $r->param("cn"), $r->param("ispmanSysadminMail") + ); -sub _addAdmin { - my $self=shift; - my ($uid, $pass, $level, $name, $mail)=@_; - my $data={}; - - - $uid=~s/ //g; - - $data->{'uid'}=$uid; - $data->{'userPassword'}=$self->encryptPassWithMethod($pass ,$self->getConf('userPassHashMethod')); - $data->{'ispmanSysadminLevel'}=$level; - $data->{'ispmanSysadminMail'}=$mail; - $data->{'cn'}=$name; - $data->{'objectClass'}="ispmanSysadmin"; - $data->{'ou'}="admins"; - - my $dn= join ',', ("uid=$uid", "ou=admins", $self->{'Config'}{'ldapBaseDN'}); - $self->addNewEntryWithData($dn, $data); + $self->admins(); } +sub _addAdmin { + my $self = shift; + my ( $uid, $pass, $level, $name, $mail ) = @_; + my $data = {}; + $uid =~ s/ //g; -sub deleteAdmin { - my $self=shift; - return unless $self->requiredAdminLevel(100); - my $r=shift; - $self->_deleteAdmin($r->param("uid")); - $self->admins(); + $data->{'uid'} = $uid; + $data->{'userPassword'} = + $self->encryptPassWithMethod( $pass, + $self->getConf('userPassHashMethod') ); + $data->{'ispmanSysadminLevel'} = $level; + $data->{'ispmanSysadminMail'} = $mail; + $data->{'cn'} = $name; + $data->{'objectClass'} = "ispmanSysadmin"; + $data->{'ou'} = "admins"; + my $dn = join ',', + ( "uid=$uid", "ou=admins", $self->{'Config'}{'ldapBaseDN'} ); + $self->addNewEntryWithData( $dn, $data ); } -sub _deleteAdmin { - my $self=shift; - my ($uid)=@_; - - my $dn= join ',', ("uid=$uid", "ou=admins", $self->{'Config'}{'ldapBaseDN'}); - $self->deleteEntry($dn); -} +sub deleteAdmin { + my $self = shift; + return unless $self->requiredAdminLevel(100); + my $r = shift; + $self->_deleteAdmin( $r->param("uid") ); + $self->admins(); +} +sub _deleteAdmin { + my $self = shift; + my ($uid) = @_; + my $dn = join ',', + ( "uid=$uid", "ou=admins", $self->{'Config'}{'ldapBaseDN'} ); + $self->deleteEntry($dn); +} sub requiredAdminLevel { - my $self=shift; - my $minlevel=shift; + my $self = shift; + my $minlevel = shift; + if ( $self->{'session'} ) { - if ($self->{'session'}) { - # First Check. - # Is this user Admin - unless ($self->{'session'}->param("logintype") eq "admin") { - # return error - print "Sorry. You are not logged in as admin"; - return 0; - } - } + # First Check. + # Is this user Admin + unless ( $self->{'session'}->param("logintype") eq "admin" ) { - my $uid=$self->{'session'}->param("uid"); + # return error + print "Sorry. You are not logged in as admin"; + return 0; + } + } - if ($self->{'Config'}->{'debug'} == 3){ - print "UID: $uid<br>"; - } - my $level=$self->getAdminLevel($uid); - if ($self->{'Config'}->{'debug'} == 3){ - print "AdminLevel: $level"; - } - + my $uid = $self->{'session'}->param("uid"); - if ($level<$minlevel) { - print "Sorry this action is only allowed by admins with a minimum level of $minlevel<br>You have only $level"; - return 0; - } else { - return 1; - } -} + if ( $self->{'Config'}->{'debug'} == 3 ) { + print "UID: $uid<br>"; + } + my $level = $self->getAdminLevel($uid); + if ( $self->{'Config'}->{'debug'} == 3 ) { + print "AdminLevel: $level"; + } + if ( $level < $minlevel ) { + print +"Sorry this action is only allowed by admins with a minimum level of $minlevel<br>You have only $level"; + return 0; + } + else { + return 1; + } +} 1; Index: GroupMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/GroupMan.pm,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- GroupMan.pm 1 Jul 2002 11:01:28 -0000 1.8 +++ GroupMan.pm 30 May 2004 23:35:37 -0000 1.9 @@ -5,172 +5,173 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - createGroup - cantAddGroupsToReplicaDomain - newGroup - addGroup - getGroups - groupExists - killGroup - deleteGroup - editGroup - updateGroup - getGroupInfo + createGroup + cantAddGroupsToReplicaDomain + newGroup + addGroup + getGroups + groupExists + killGroup + deleteGroup + editGroup + updateGroup + getGroupInfo ); $VERSION = '0.01'; use ISPMan::Config; -$Config=ISPMan::Config->new(); - +$Config = ISPMan::Config->new(); sub cantAddGroupsToReplicaDomain { - my $self=shift; - my $r=shift; - my $domain=$r->param("ispmanDomain"); - print "Sorry cannot add groups to a replica domain<br>Instead add groups to its master domain which is "; - my $replicaMaster=$self->{'ldap'}->getEntry("ispmanDomain=$domain, $Config->{'ldapBaseDN'}", , ["ispmanReplicaMaster"])->get_value("ispmanReplicaMaster"); - print "<h1>$replicaMaster</h1>"; + my $self = shift; + my $r = shift; + my $domain = $r->param("ispmanDomain"); + print +"Sorry cannot add groups to a replica domain<br>Instead add groups to its master domain which is "; + my $replicaMaster = + $self->{'ldap'} + ->getEntry( "ispmanDomain=$domain, $Config->{'ldapBaseDN'}", + , ["ispmanReplicaMaster"] )->get_value("ispmanReplicaMaster"); + print "<h1>$replicaMaster</h1>"; } - - sub createGroup { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); - my $domaintype=$self->getDomainType($r->param("ispmanDomain")); - return $self->cantAddGroupsToReplicaDomain($r) if lc($domaintype) eq "replica"; + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); + my $domaintype = $self->getDomainType( $r->param("ispmanDomain") ); + return $self->cantAddGroupsToReplicaDomain($r) + if lc($domaintype) eq "replica"; - my $template=$self->getTemplate("addgroup.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $template = $self->getTemplate("addgroup.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } sub newGroup { - my $self=shift; - my $r=shift; - if ($self->addGroup($r)){ - print $self->refreshSignal($r->param("ispmanDomain")); - $self->editGroup($r); - }; + my $self = shift; + my $r = shift; + if ( $self->addGroup($r) ) { + print $self->refreshSignal( $r->param("ispmanDomain") ); + $self->editGroup($r); + } } +sub addGroup { + my $self = shift; + my $r = shift; -sub addGroup{ - my $self=shift; - my $r=shift; - - - my $groupname=$r->param("groupname"); - $groupname=lc($groupname); - $groupname=~s/[^a-z]//g; - $r->param("name", $groupname); + my $groupname = $r->param("groupname"); + $groupname = lc($groupname); + $groupname =~ s/[^a-z]//g; + $r->param( "name", $groupname ); - my $description=$r->param("description"); - my $domain=$r->param("ispmanDomain"); + my $description = $r->param("description"); + my $domain = $r->param("ispmanDomain"); - my $_name=join '_', ($r->param("groupname"), $r->param("ispmanDomain")); - $_name=~s/\./_/g; - + my $_name = join '_', ( $r->param("groupname"), $r->param("ispmanDomain") ); + $_name =~ s/\./_/g; - $r->param("cn", $_name); - - my $dn="gid=$_name, ou=groups, ispmanDomain=$domain, " . $self->{'Config'}{'ldapBaseDN'}; - - $r->param("dn", $dn); + $r->param( "cn", $_name ); - if ($self->{'ldap'}->AddGroup($r)) { - return 1; - } -} + my $dn = + "gid=$_name, ou=groups, ispmanDomain=$domain, " + . $self->{'Config'}{'ldapBaseDN'}; + $r->param( "dn", $dn ); + + if ( $self->{'ldap'}->AddGroup($r) ) { + return 1; + } +} sub killGroup { - my $self=shift; - my $dn=shift; - - #bare function to remove user, - #can be called from CLI or other subroutines - # get all values from the dn to the hash - - $self->{'group'}=$self->{'ldap'}->getEntryAsHashRef($dn); + my $self = shift; + my $dn = shift; - if ( $self->{'ldap'}->DeleteUser($dn)){ - } -} + #bare function to remove user, + #can be called from CLI or other subroutines + # get all values from the dn to the hash + + $self->{'group'} = $self->{'ldap'}->getEntryAsHashRef($dn); + if ( $self->{'ldap'}->DeleteUser($dn) ) { + } +} sub getGroups { - my $self=shift; - my $dn=shift; - my $grouphash=$self->{'ldap'}->getEntriesAsHashRef($dn, "objectclass=group", ["name", "cn"]); - my $group; + my $self = shift; + my $dn = shift; + my $grouphash = + $self->{'ldap'} + ->getEntriesAsHashRef( $dn, "objectclass=group", [ "name", "cn" ] ); + my $group; - for (keys %$grouphash) { - $group->{$grouphash->{$_}{'name'}}=$_; - } - return $group; + for ( keys %$grouphash ) { + $group->{ $grouphash->{$_}{'name'} } = $_; + } + return $group; } sub editGroup { - my $self=shift; - my $r=shift; - my $userhash; - my $dn=$r->param("dn"); + my $self = shift; + my $r = shift; + my $userhash; + my $dn = $r->param("dn"); + $self->{'group'} = $self->{'ldap'}->getEntryAsHashRef( $r->param("dn") ); - $self->{'group'}=$self->{'ldap'}->getEntryAsHashRef($r->param("dn")); + $userhash = $self->{'ldap'}->getEntriesAsHashRef( $Config->{'ldapBaseDN'}, + "objectclass=person", + [ "cn", "uid", "mailacceptinggeneralid", "domain" ] ); - $userhash=$self->{'ldap'}->getEntriesAsHashRef($Config->{'ldapBaseDN'}, "objectclass=person", ["cn", "uid", "mailacceptinggeneralid", "domain"]); + for ( keys %$userhash ) { + $self->{'users'}->{ $userhash->{$_}->{'uid'} } = $userhash->{$_}; + } - for (keys %$userhash) { - $self->{'users'}->{$userhash->{$_}->{'uid'}}=$userhash->{$_}; - } - - my $template=$self->getTemplate("editgroup.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $template = $self->getTemplate("editgroup.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } sub getGroupInfo { - my $self=shift; - my $gid=shift; - my $_hr=$self->{'ldap'}->getEntriesAsHashRef($Config->{'ldapBaseDN'}, "uid=$gid"); - my ($key)=keys %{$_hr}; - $self->{'groupinfo'}{$gid}=$_hr->{$key}; - return $self->{'group'}{$gid}; + my $self = shift; + my $gid = shift; + my $_hr = + $self->{'ldap'} + ->getEntriesAsHashRef( $Config->{'ldapBaseDN'}, "uid=$gid" ); + my ($key) = keys %{$_hr}; + $self->{'groupinfo'}{$gid} = $_hr->{$key}; + return $self->{'group'}{$gid}; } sub deleteGroup { - my $self=shift; - my $r=shift; - - my $gid=$r->param("gid"); - my $domain=$r->param("ispmanDomain"); - $self->killGroup($r->param("dn")); - print $self->refreshSignal($r->param("ispmanDomain")); -} + my $self = shift; + my $r = shift; + my $gid = $r->param("gid"); + my $domain = $r->param("ispmanDomain"); + $self->killGroup( $r->param("dn") ); + print $self->refreshSignal( $r->param("ispmanDomain") ); +} sub updateGroup { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); - $r->param("description"); + $r->param("description"); - $self->{'ldap'}->updateEntry($r); - print $self->refreshSignal($r->param("ispmanDomain")); + $self->{'ldap'}->updateEntry($r); + print $self->refreshSignal( $r->param("ispmanDomain") ); } - - sub groupExists { - my $self=shift; - my $gid=shift; - return $self->getCount($gid); + my $self = shift; + my $gid = shift; + return $self->getCount($gid); } __END__ Index: ApacheMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/ApacheMan.pm,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -r1.64 -r1.65 --- ApacheMan.pm 24 May 2004 20:56:31 -0000 1.64 +++ ApacheMan.pm 30 May 2004 23:35:37 -0000 1.65 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::ApacheMan- Takes care of apache vhosts creation/modification @@ -49,443 +50,490 @@ push @EXPORT, @ISPMan::ApacheMan::Acls::EXPORT; push @EXPORT, @ISPMan::ApacheMan::Aliases::EXPORT; - -push @EXPORT , qw( -getVhostsBranchDN [...1042 lines suppressed...] } sub setVhostAttribute { - my $self=shift; - my ($domain, $vhost, $attribute, @values)=@_; - my $value=$self->as_arrayref(@values); - my $dn=$self->getVhostDN($domain, $vhost); - $self->modifyAttribute($dn, $attribute, $value); + my $self = shift; + my ( $domain, $vhost, $attribute, @values ) = @_; + my $value = $self->as_arrayref(@values); + my $dn = $self->getVhostDN( $domain, $vhost ); + $self->modifyAttribute( $dn, $attribute, $value ); } 1; - __END__ Index: UserMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/UserMan.pm,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- UserMan.pm 18 Apr 2004 19:19:32 -0000 1.46 +++ UserMan.pm 30 May 2004 23:35:37 -0000 1.47 @@ -10,558 +10,576 @@ push @EXPORT, @ISPMan::UserMan::WebUsers::EXPORT; +push @EXPORT, qw( + create_uid + newUser + addUser + AddUser + editUser + suspend_user + unsuspend_user -push @EXPORT , qw( - create_uid - newUser - addUser - AddUser - editUser - suspend_user - unsuspend_user - - updateUser - update_user - deleteUser - getUsers - createUser - cantAddUsersToReplicaDomain - getUserInfo - killUser - getUserCount - getUsersCount - userExists - getUsersBranchDN - getUserDN - fixDuplicateUsers - getDomainUsersForDomain - getMailAliasesForUser - addMailAliasForUser - replaceMailAliasForUser - getMailForwardsForUser - addMailForwardForUser - replaceMailForwardForUser - - set_user_attributes - getUserAttributeValues - addUserAttributeValues - replaceUserAttributeValues + updateUser + update_user + deleteUser + getUsers + createUser + cantAddUsersToReplicaDomain + getUserInfo + killUser + getUserCount + getUsersCount + userExists + getUsersBranchDN + getUserDN + fixDuplicateUsers + getDomainUsersForDomain + getMailAliasesForUser + addMailAliasForUser + replaceMailAliasForUser + getMailForwardsForUser + addMailForwardForUser + replaceMailForwardForUser - changePassword - searchUsers + set_user_attributes + getUserAttributeValues + addUserAttributeValues + replaceUserAttributeValues - addUserFileServerProcess + changePassword + searchUsers + + addUserFileServerProcess ); $VERSION = '0.01'; - - sub cantAddUsersToReplicaDomain { - my $self=shift; - my $r=shift; - my $domain=$r->param("ispmanDomain"); - print "Sorry cannot add users to a replica domain<br>Instead add users to its master domain which is "; - my $replicaMaster=$self->getEntry("ispmanDomain=$domain, $self->{'Config'}->{'ldapBaseDN'}", , ["ispmanReplicaMaster"])->get_value("ispmanReplicaMaster"); - print "<h1>$replicaMaster</h1>"; - + my $self = shift; + my $r = shift; + my $domain = $r->param("ispmanDomain"); + print +"Sorry cannot add users to a replica domain<br>Instead add users to its master domain which is "; + my $replicaMaster = + $self->getEntry( + "ispmanDomain=$domain, $self->{'Config'}->{'ldapBaseDN'}", + , ["ispmanReplicaMaster"] )->get_value("ispmanReplicaMaster"); + print "<h1>$replicaMaster</h1>"; } - - sub createUser { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); - - my $domaintype=$self->getDomainType($r->param("ispmanDomain")); + my $domaintype = $self->getDomainType( $r->param("ispmanDomain") ); - return $self->cantAddUsersToReplicaDomain($r) if lc($domaintype) eq "replica"; - my $template; - if ($self->isDomainEditable($r->param("ispmanDomain"))) { - $template=$self->getTemplate("users/add.tmpl"); - } else { - $template=$self->getTemplate("ro.tmpl"); - } - print $template->fill_in(PACKAGE => "ISPMan"); + return $self->cantAddUsersToReplicaDomain($r) + if lc($domaintype) eq "replica"; + my $template; + if ( $self->isDomainEditable( $r->param("ispmanDomain") ) ) { + $template = $self->getTemplate("users/add.tmpl"); + } + else { + $template = $self->getTemplate("ro.tmpl"); + } + print $template->fill_in( PACKAGE => "ISPMan" ); } - - -sub newUser{ - my $self=shift; - my $r=shift; - if ($self->addUser($r)){ - print $self->refreshSignal($r->param("ispmanDomain")); - $self->editUser($r); - }; +sub newUser { + my $self = shift; + my $r = shift; + if ( $self->addUser($r) ) { + print $self->refreshSignal( $r->param("ispmanDomain") ); + $self->editUser($r); + } } - - - - sub AddUser { - &goto("addUser"); + &goto("addUser"); } +sub addUser { + my $self = shift; + my $r = shift; + # filter supplied uid + my $userid = $r->param("uid"); + $userid = lc($userid); + $userid =~ s/[^a-z0-9\-_\.]//g; + $r->param( "userid", $userid ); -sub addUser{ - my $self=shift; - my $r=shift; - - # filter supplied uid - my $userid=$r->param("uid"); - $userid=lc($userid); - $userid=~s/[^a-z0-9\-_\.]//g; - $r->param("userid", $userid); + # lets crypt the pass + my $userpassword = $self->encryptPassWithMethod( $r->param("userPassword"), + $self->getConf('userPassHashMethod') ); + $r->param( "userPassword", $userpassword ); - # lets crypt the pass - my $userpassword=$self->encryptPassWithMethod($r->param("userPassword"),$self->getConf('userPassHashMethod')); - $r->param("userPassword", $userpassword); + my $domain = $r->param("ispmanDomain"); - - my $domain=$r->param("ispmanDomain"); + # check user limit for this domain + my $domainMaxUsers = + $self->getDomainAttribute( $domain, "ispmanMaxAccounts" ); + my $domainUserCount = $self->getUserCount($domain); + if ( $domainMaxUsers > 0 && $domainUserCount >= $domainMaxUsers ) { + $self->{'message'} = +"Max accounts limit exceeded. <br>Your limit is $domainMaxUsers <br>You cannot create any more users."; + print $self->{'message'}; + return; + } - - # check user limit for this domain - my $domainMaxUsers = $self->getDomainAttribute($domain,"ispmanMaxAccounts"); - my $domainUserCount = $self->getUserCount($domain); - if ($domainMaxUsers>0 && $domainUserCount >= $domainMaxUsers) { - $self->{'message'}="Max accounts limit exceeded. <br>Your limit is $domainMaxUsers <br>You cannot create any more users."; - print $self->{'message'}; - return; - } - - # build unique uid from userid and domain - my $_uid=$self->create_uid($r->param("userid"), $r->param("ispmanDomain")); - $r->param("uid", $_uid); - - # build new DN for user - my $dn="uid=$_uid, ou=users, ispmanDomain=$domain, " . $self->{'Config'}{'ldapBaseDN'}; - $r->param("dn", $dn); + # build unique uid from userid and domain + my $_uid = + $self->create_uid( $r->param("userid"), $r->param("ispmanDomain") ); + $r->param( "uid", $_uid ); - $self->prepareBranchForDN("ou=users, ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"); - - # get domain info and supply it to session data so we can use it in user ldif template - my $domain_info=$self->getDomainInfo($r->param("ispmanDomain")); - $r->param("domaininfo", $domain_info); - - # moved to user template - #my $homeDirectory=join '/', ($domain_info->{'homeDirectory'}, "users", $r->param("uid"), ""); - #my $cn=($r->param("givenName") && $r->param("sn"))? join " ", ($r->param("givenName"), $r->param("sn")) :$r->param("userid"); - #$r->param("cn", $cn); - #$r->param("sn", ($r->param("sn")? $r->param("sn"):$r->param("userid"))); - #$r->param("homeDirectory", $homeDirectory); + # build new DN for user + my $dn = + "uid=$_uid, ou=users, ispmanDomain=$domain, " + . $self->{'Config'}{'ldapBaseDN'}; + $r->param( "dn", $dn ); - # validate ftp quota - if ($r->param("FTPQuotaMBytes") !~ /\d\d*/ || $r->param("FTPQuotaMBytes") < 0) { - $r->param("FTPQuotaMBytes", $self->getConf('defaultUserFtpQuota')); - } + $self->prepareBranchForDN( + "ou=users, ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"); - # validate mail quota - if ($r->param("mailQuota") !~ /\d\d*/ || $r->param("mailQuota") < 0) { - $r->param("mailQuota", $self->getConf('defaultUserMailQuota')); - } +# get domain info and supply it to session data so we can use it in user ldif template + my $domain_info = $self->getDomainInfo( $r->param("ispmanDomain") ); + $r->param( "domaininfo", $domain_info ); - unless (defined $r->param("fileHost") && $r->param("fileHost") ne "none" ){ - $r->param('fileHost', $self->getDefaultFileHost($domain)); - } +# moved to user template +#my $homeDirectory=join '/', ($domain_info->{'homeDirectory'}, "users", $r->param("uid"), ""); +#my $cn=($r->param("givenName") && $r->param("sn"))? join " ", ($r->param("givenName"), $r->param("sn")) :$r->param("userid"); +#$r->param("cn", $cn); +#$r->param("sn", ($r->param("sn")? $r->param("sn"):$r->param("userid"))); +#$r->param("homeDirectory", $homeDirectory); - # add user to LDAP from user ldif template - if ($self->addDataFromLdif("templates/users.ldif.template", $r)){ - if ($r->param("mailHost")) { - $self->addProcessToHost($domain, $r->param("mailHost"), "createMailbox", join "", ($self->getConf("imapMailboxPrefix"), $_uid)); - $self->addProcessToHost($domain, $r->param("mailHost"), "setMailboxQuota", join ',', ((join "", ($self->getConf("imapMailboxPrefix"), $_uid)), $r->param("mailQuota")*1024)); - } - - # send the process to method addUserFileServerProcess - # the process will only be sent to fileHost if one is defined - # if not defined then we fall back to the old method and send to the filserver group + # validate ftp quota + if ( $r->param("FTPQuotaMBytes") !~ /\d\d*/ + || $r->param("FTPQuotaMBytes") < 0 ) + { + $r->param( "FTPQuotaMBytes", $self->getConf('defaultUserFtpQuota') ); + } - # passing domain, username, process and username as params - $self->addUserFileServerProcess($domain, $_uid, 'createHomeDirectory', $_uid); + # validate mail quota + if ( $r->param("mailQuota") !~ /\d\d*/ || $r->param("mailQuota") < 0 ) { + $r->param( "mailQuota", $self->getConf('defaultUserMailQuota') ); + } + unless ( defined $r->param("fileHost") && $r->param("fileHost") ne "none" ) + { + $r->param( 'fileHost', $self->getDefaultFileHost($domain) ); + } - return 1; - } + # add user to LDAP from user ldif template + if ( $self->addDataFromLdif( "templates/users.ldif.template", $r ) ) { + if ( $r->param("mailHost") ) { + $self->addProcessToHost( $domain, $r->param("mailHost"), + "createMailbox", join "", + ( $self->getConf("imapMailboxPrefix"), $_uid ) ); + $self->addProcessToHost( + $domain, + $r->param("mailHost"), + "setMailboxQuota", + join ',', + ( + ( join "", ( $self->getConf("imapMailboxPrefix"), $_uid ) ), + $r->param("mailQuota") * 1024 + ) + ); + } -} +# send the process to method addUserFileServerProcess +# the process will only be sent to fileHost if one is defined +# if not defined then we fall back to the old method and send to the filserver group + # passing domain, username, process and username as params + $self->addUserFileServerProcess( $domain, $_uid, 'createHomeDirectory', + $_uid ); + return 1; + } +} sub getUserInfo { - my $self=shift; - my $uid=shift; - my $_hr=$self->getEntriesAsHashRef($self->{'Config'}->{'ldapBaseDN'}, "uid=$uid"); - my ($key)=keys %{$_hr}; - $self->{'userinfo'}{$uid}=$_hr->{$key}; - return $self->{'userinfo'}{$uid}; + my $self = shift; + my $uid = shift; + my $_hr = + $self->getEntriesAsHashRef( $self->{'Config'}->{'ldapBaseDN'}, + "uid=$uid" ); + my ($key) = keys %{$_hr}; + $self->{'userinfo'}{$uid} = $_hr->{$key}; + return $self->{'userinfo'}{$uid}; } - sub editUser { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); - $self->{'user'}=$self->getEntryAsHashRef($r->param("dn")); - my $template; - if ($self->isDomainEditable($r->param("ispmanDomain"))) { - $template=$self->getTemplate("users/edit.tmpl"); - } else { - $template=$self->getTemplate("users/view.tmpl"); - } - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); + $self->{'user'} = $self->getEntryAsHashRef( $r->param("dn") ); + my $template; + if ( $self->isDomainEditable( $r->param("ispmanDomain") ) ) { + $template = $self->getTemplate("users/edit.tmpl"); + } + else { + $template = $self->getTemplate("users/view.tmpl"); + } + print $template->fill_in( PACKAGE => "ISPMan" ); } - - sub killUser { - my $self=shift; - my $dn=shift; + my $self = shift; + my $dn = shift; - #bare function to remove user, - #can be called from CLI or other subroutines - # get all values from the dn to the hash + #bare function to remove user, + #can be called from CLI or other subroutines + # get all values from the dn to the hash - $self->{'user'}=$self->{'ldap'}->getEntryAsHashRef($dn); + $self->{'user'} = $self->{'ldap'}->getEntryAsHashRef($dn); - #it is possible that as user has multiple uids. - #hint - #aghaffar_ispman_org - #[email protected] - if (ref $self->{'user'}{'uid'} eq "ARRAY"){ - $self->{'user'}{'uid'}=$self->{'user'}{'uid'}[0]; - } + #it is possible that as user has multiple uids. + #hint + #aghaffar_ispman_org + #[email protected] + if ( ref $self->{'user'}{'uid'} eq "ARRAY" ) { + $self->{'user'}{'uid'} = $self->{'user'}{'uid'}[0]; + } - # first send processes. + # first send processes. - # %%% new method %% - # send the process to method addUserFileServerProcess - # the process will only be sent to fileHost if one is defined - # if not defined then we fall back to the old method and send to the filserver group +# %%% new method %% +# send the process to method addUserFileServerProcess +# the process will only be sent to fileHost if one is defined +# if not defined then we fall back to the old method and send to the filserver group - # passing domain, username, process and username,homedirecory,uid,gid as params +# passing domain, username, process and username,homedirecory,uid,gid as params - $self->addUserFileServerProcess($self->{'user'}{'ispmanDomain'}, - $self->{'user'}{'uid'}, - 'deleteHomeDirectory', - join ',', - ($self->{'user'}{'uid'}, - $self->{'user'}{'homeDirectory'}, - $self->{'user'}{'uidNumber'}, - $self->{'user'}{'gidNumber'})); + $self->addUserFileServerProcess( + $self->{'user'}{'ispmanDomain'}, + $self->{'user'}{'uid'}, + 'deleteHomeDirectory', + join ',', + ( + $self->{'user'}{'uid'}, $self->{'user'}{'homeDirectory'}, + $self->{'user'}{'uidNumber'}, $self->{'user'}{'gidNumber'} + ) + ); - if ($self->{'user'}{"mailHost"}) { - $self->addProcessToHost($self->{'user'}{'ispmanDomain'}, - $self->{'user'}{"mailHost"}, - "deleteMailbox", - join "", - ($self->getConf("imapMailboxPrefix"), - $self->{'user'}{'uid'})); - } - $self->deleteEntry($dn) + if ( $self->{'user'}{"mailHost"} ) { + $self->addProcessToHost( + $self->{'user'}{'ispmanDomain'}, + $self->{'user'}{"mailHost"}, + "deleteMailbox", + join "", + ( $self->getConf("imapMailboxPrefix"), $self->{'user'}{'uid'} ) + ); + } + $self->deleteEntry($dn); } +sub deleteUser { + my $self = shift; + my $r = shift; + my $uid = $r->param("uid"); + my $domain = $r->param("ispmanDomain"); + $self->killUser( $r->param("dn") ); + if ( $r->param("nsroaming") eq "Y" ) { + $self->deleteRoaming($r); + } + print $self->refreshSignal( $r->param("ispmanDomain") ); - - -sub deleteUser{ - my $self=shift; - my $r=shift; - - my $uid=$r->param("uid"); - my $domain=$r->param("ispmanDomain"); - $self->killUser($r->param("dn")); - if ($r->param("nsroaming") eq "Y") { - $self->deleteRoaming($r); - } - print $self->refreshSignal($r->param("ispmanDomain")); - # This message should be sent via some message template - print "User deleted"; + # This message should be sent via some message template + print "User deleted"; } - - - - - sub updateUser { - my $self=shift; - my $r=shift; - if ($self->update_user($r)) { - print $self->refreshSignal($r->param("ispmanDomain")); - $self->editUser($r); - } + my $self = shift; + my $r = shift; + if ( $self->update_user($r) ) { + print $self->refreshSignal( $r->param("ispmanDomain") ); + $self->editUser($r); + } } sub update_user { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); - - my $data={}; - for (qw(sn givenName mailLocalAddress mailRoutingAddress FTPStatus FTPQuotaMBytes)) { - $data->{$_}=$r->param($_) if defined $r->param($_); - } - - $data->{'userPassword'}=$self->encryptPassWithMethod($r->param("userPassword"),$self->getConf('userPassHashMethod')); - $data->{'cn'}=join ' ', ($r->param("givenName"), $r->param("sn")); + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); - $data->{'mailAlias'}= $self->as_arrayref(split(/\s+/, $r->param("mailAlias"))); - $data->{'mailForwardingAddress'}= $self->as_arrayref(split(/\s+/, $r->param("mailForwardingAddress"))); + my $data = {}; + for ( + qw(sn givenName mailLocalAddress mailRoutingAddress FTPStatus FTPQuotaMBytes) + ) + { + $data->{$_} = $r->param($_) if defined $r->param($_); + } - $data->{'objectClass'}=$self->{'Config'}{'ispmanUserObjectclasses'}; + $data->{'userPassword'} = + $self->encryptPassWithMethod( $r->param("userPassword"), + $self->getConf('userPassHashMethod') ); + $data->{'cn'} = join ' ', ( $r->param("givenName"), $r->param("sn") ); - my $userInfo=$self->getUserInfo($r->param("uid")); - if ($userInfo->{'mailHost'} && $r->param("mailQuota")) { - my $quota=$r->param("mailQuota")*1024; - unless ($quota == $userInfo->{'mailQuota'}) { - $data->{'mailQuota'}=$quota; - $self->addProcessToHost($userInfo->{'ispmanDomain'}, $userInfo->{'mailHost'}, "setMailboxQuota", join ',', ((join "", ($self->getConf("imapMailboxPrefix"), $r->param("uid"))), $quota)); - } - } + $data->{'mailAlias'} = + $self->as_arrayref( split( /\s+/, $r->param("mailAlias") ) ); + $data->{'mailForwardingAddress'} = + $self->as_arrayref( split( /\s+/, $r->param("mailForwardingAddress") ) ); + $data->{'objectClass'} = $self->{'Config'}{'ispmanUserObjectclasses'}; + my $userInfo = $self->getUserInfo( $r->param("uid") ); + if ( $userInfo->{'mailHost'} && $r->param("mailQuota") ) { + my $quota = $r->param("mailQuota") * 1024; + unless ( $quota == $userInfo->{'mailQuota'} ) { + $data->{'mailQuota'} = $quota; + $self->addProcessToHost( + $userInfo->{'ispmanDomain'}, + $userInfo->{'mailHost'}, + "setMailboxQuota", + join ',', + ( + ( + join "", + ( + $self->getConf("imapMailboxPrefix"), + $r->param("uid") + ) + ), + $quota + ) + ); + } + } + $self->updateEntryWithData( $dn, $data ); + return 1; - $self->updateEntryWithData($dn, $data); - return 1; - } sub set_user_attributes { - # get domain, uid and a hash and set the key=value - # of $data to user record - my $self=shift; - my ($domain, $uid, $data)=@_; - - my $dn=$self->getUserDN($domain, $uid ); - $self->updateEntryWithData($dn, $data); -} + # get domain, uid and a hash and set the key=value + # of $data to user record + my $self = shift; + my ( $domain, $uid, $data ) = @_; + my $dn = $self->getUserDN( $domain, $uid ); + $self->updateEntryWithData( $dn, $data ); +} sub changePassword { - my $self=shift; - my ($uid, $domain, $pass, $method)=@_; - my $dn=$self->getUserDN($domain, $uid ); - my $data={}; - $data->{'userPassword'}=$self->encryptPassWithMethod($pass,$method); - $self->updateEntryWithData($dn, $data); + my $self = shift; + my ( $uid, $domain, $pass, $method ) = @_; + my $dn = $self->getUserDN( $domain, $uid ); + my $data = {}; + $data->{'userPassword'} = $self->encryptPassWithMethod( $pass, $method ); + $self->updateEntryWithData( $dn, $data ); } - sub addMailAliasForUser { - my $self=shift; - my ($uid, $domain, $values)=@_; - return $self->addUserAttributeValues($uid, $domain, 'mailAlias', $values); + my $self = shift; + my ( $uid, $domain, $values ) = @_; + return $self->addUserAttributeValues( $uid, $domain, 'mailAlias', $values ); } - - sub replaceMailAliasForUser { - my $self=shift; - my ($uid, $domain, $values)=@_; - return $self->replaceUserAttributeValues($uid, $domain, 'mailAlias', $values); + my $self = shift; + my ( $uid, $domain, $values ) = @_; + return $self->replaceUserAttributeValues( $uid, $domain, 'mailAlias', + $values ); } - - sub getMailAliasesForUser { - my $self=shift; - my ($uid, $domain)=@_; - return $self->getUserAttributeValues($uid, $domain, 'mailAlias'); + my $self = shift; + my ( $uid, $domain ) = @_; + return $self->getUserAttributeValues( $uid, $domain, 'mailAlias' ); } sub addMailForwardForUser { - my $self=shift; - my ($uid, $domain, $values)=@_; - return $self->addUserAttributeValues($uid, $domain, 'mailForwardingAddress', $values); + my $self = shift; + my ( $uid, $domain, $values ) = @_; + return $self->addUserAttributeValues( $uid, $domain, + 'mailForwardingAddress', $values ); } sub replaceMailForwardForUser { - my $self=shift; - my ($uid, $domain, $values)=@_; - return $self->replaceUserAttributeValues($uid, $domain, 'mailForwardingAddress', $values); + my $self = shift; + my ( $uid, $domain, $values ) = @_; + return $self->replaceUserAttributeValues( $uid, $domain, + 'mailForwardingAddress', $values ); } - sub getMailForwardsForUser { - my $self=shift; - my ($uid, $domain)=@_; - return $self->getUserAttributeValues($uid, $domain, 'mailForwardingAddress'); + my $self = shift; + my ( $uid, $domain ) = @_; + return $self->getUserAttributeValues( $uid, $domain, + 'mailForwardingAddress' ); } - - - - sub getUsersCount { - my ($self)=@_; - return $self->getCount($self->getConf('ldapBaseDN'), "&(objectclass=ispmanDomainUser)", ["uid"]); + my ($self) = @_; + return $self->getCount( $self->getConf('ldapBaseDN'), + "&(objectclass=ispmanDomainUser)", ["uid"] ); } - - sub getUserCount { - my $self=shift; - my $domain=shift; - my $base="ou=users, ispmanDomain=$domain, "; - $base.=$self->getConf("ldapBaseDN"); + my $self = shift; + my $domain = shift; + my $base = "ou=users, ispmanDomain=$domain, "; + $base .= $self->getConf("ldapBaseDN"); - return $self->getCount($base, "&(objectClass=ispmanDomainUser)", ["uid"]); + return $self->getCount( $base, "&(objectClass=ispmanDomainUser)", ["uid"] ); } - sub getUsersBranchDN { - my $self=shift; - my $domain=shift; - return join (",", "ou=users, ispmanDomain=$domain", $self->getConf('ldapBaseDN')); + my $self = shift; + my $domain = shift; + return join( ",", + "ou=users, ispmanDomain=$domain", + $self->getConf('ldapBaseDN') ); } sub getUserDN { - my $self=shift; - my ($domain, $uid)=@_; - return join (",", "uid=$uid", $self->getUsersBranchDN($domain)); + my $self = shift; + my ( $domain, $uid ) = @_; + return join( ",", "uid=$uid", $self->getUsersBranchDN($domain) ); } - - sub getDomainUsersForDomain { - my $self=shift; - my $domain=shift; - my $branch=$self->getUsersBranchDN($domain); - my $users=$self->getEntriesAsHashRef($branch, "objectclass=ispmanDomainUser", ["cn", "uid"]); - return $self->fixDuplicateUsers($users); + my $self = shift; + my $domain = shift; + my $branch = $self->getUsersBranchDN($domain); + my $users = $self->getEntriesAsHashRef( + $branch, + "objectclass=ispmanDomainUser", + [ "cn", "uid" ] + ); + return $self->fixDuplicateUsers($users); } - - sub fixDuplicateUsers { - my $self=shift; - my $userhash=shift; - my $user; - my $cn; - my $cnHash ; - for (keys %$userhash) { - if ($userhash->{$_}{'cn'}) { - $cn=$userhash->{$_}{'cn'}; - $cnHash->{$cn}++; - $cn.="(@{[$cnHash->{$cn}]})" if $cnHash->{$cn}>1; - $user->{$cn}=$_; - } else { - $user->{$userhash->{$_}{'uid'}}=$_; - } - } - return $user; + my $self = shift; + my $userhash = shift; + my $user; + my $cn; + my $cnHash; + for ( keys %$userhash ) { + if ( $userhash->{$_}{'cn'} ) { + $cn = $userhash->{$_}{'cn'}; + $cnHash->{$cn}++; + $cn .= "(@{[$cnHash->{$cn}]})" if $cnHash->{$cn} > 1; + $user->{$cn} = $_; + } + else { + $user->{ $userhash->{$_}{'uid'} } = $_; + } + } + return $user; } - - - -sub getUsers{ - my $self=shift; - my $dn=shift; - my $userhash=$self->getEntriesAsHashRef($dn, "objectclass=ispmanDomainUser", ["cn", "uid"]); - return $self->fixDuplicateUsers($userhash); +sub getUsers { + my $self = shift; + my $dn = shift; + my $userhash = $self->getEntriesAsHashRef( + $dn, + "objectclass=ispmanDomainUser", + [ "cn", "uid" ] + ); + return $self->fixDuplicateUsers($userhash); } - - - sub searchUsers { - my $self=shift; - my $template=$self->getTemplate("users/search.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("users/search.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } sub userExists { - my $self=shift; - my $uid=shift; - return $self->getCount($self->getConf('ldapBaseDN'), "uid=$uid"); + my $self = shift; + my $uid = shift; + return $self->getCount( $self->getConf('ldapBaseDN'), "uid=$uid" ); } sub suspend_user { - my $self=shift; - + my $self = shift; - my ($domain, $uid)=@_; - my $dn=$self->getUserDN($domain, $uid); - $self->updateEntryWithData($dn, {'FTPStatus' => 'disabled', 'ispmanStatus' => "suspended"}); - return; + my ( $domain, $uid ) = @_; + my $dn = $self->getUserDN( $domain, $uid ); + $self->updateEntryWithData( $dn, + { 'FTPStatus' => 'disabled', 'ispmanStatus' => "suspended" } ); + return; } sub unsuspend_user { - my $self=shift; - my ($domain, $uid)=@_; - my $dn=$self->getUserDN($domain, $uid); - $self->updateEntryWithData($dn, {'FTPStatus' => 'enabled', 'ispmanStatus' => "active"}); - return; + my $self = shift; + my ( $domain, $uid ) = @_; + my $dn = $self->getUserDN( $domain, $uid ); + $self->updateEntryWithData( $dn, + { 'FTPStatus' => 'enabled', 'ispmanStatus' => "active" } ); + return; } sub replaceUserAttributeValues { - my $self=shift; - my ($uid, $domain, $attribute, $values)=@_; - $self->updateEntryWithData($self->getUserDN($domain, $uid), {$attribute => $values}); + my $self = shift; + my ( $uid, $domain, $attribute, $values ) = @_; + $self->updateEntryWithData( $self->getUserDN( $domain, $uid ), + { $attribute => $values } ); } - sub getUserAttributeValues { - my $self=shift; - my ($uid, $domain, $attribute)=@_; - print "Returning $attribute for $uid\@$domain\n"; + my $self = shift; + my ( $uid, $domain, $attribute ) = @_; + print "Returning $attribute for $uid\@$domain\n"; - $self->getUserInfo($uid); - return $self->{'userinfo'}{$uid}{$attribute}; + $self->getUserInfo($uid); + return $self->{'userinfo'}{$uid}{$attribute}; } - sub addUserAttributeValues { - my $self=shift; - my ($uid, $domain, $attribute, $values)=@_; - my $_values=$self->as_arrayref($self->getUserAttributeValues($uid, $domain, $attribute), $values); - $self->updateEntryWithData($self->getUserDN($domain, $uid), {$attribute => $_values}); + my $self = shift; + my ( $uid, $domain, $attribute, $values ) = @_; + my $_values = + $self->as_arrayref( + $self->getUserAttributeValues( $uid, $domain, $attribute ), $values ); + $self->updateEntryWithData( $self->getUserDN( $domain, $uid ), + { $attribute => $_values } ); } - sub create_uid { - my $self=shift; - my ($userId, $domain)=@_; - + my $self = shift; + my ( $userId, $domain ) = @_; + # here is the logic to convert userName to user_domain_tld # If you dont want this behaviour and just wasnt uid uncomment the next line; # return $userId; - - $domain=~ s/\./_/g; - $userId=~ s/\./_/g; - - unless ($userId=~ /$domain$/){ - $userId=join "_", ($userId, $domain); - } - return $userId; + $domain =~ s/\./_/g; + $userId =~ s/\./_/g; + + unless ( $userId =~ /$domain$/ ) { + $userId = join "_", ( $userId, $domain ); + } + return $userId; } sub addUserFileServerProcess { - # What happens on file server? - # create home directory - # delete home direcory - my $self=shift; - my ($domain, $uid, $process, $param)=@_; - my $userInfo=$self->getUserInfo($uid); - if ($userInfo->{'fileHost'}){ - return if $userInfo->{'fileHost'} eq "undefined"; - $self->addProcessToHost($domain, $userInfo->{'fileHost'} , $process, $param); - } else { - $self->addProcessToGroup($domain, 'fileservergroup' , $process, $param); - } + + # What happens on file server? + # create home directory + # delete home direcory + my $self = shift; + my ( $domain, $uid, $process, $param ) = @_; + my $userInfo = $self->getUserInfo($uid); + if ( $userInfo->{'fileHost'} ) { + return if $userInfo->{'fileHost'} eq "undefined"; + $self->addProcessToHost( $domain, $userInfo->{'fileHost'}, + $process, $param ); + } + else { + $self->addProcessToGroup( $domain, 'fileservergroup', $process, + $param ); + } } 1; Index: L10N.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/L10N.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- L10N.pm 21 Feb 2004 21:31:31 -0000 1.4 +++ L10N.pm 30 May 2004 23:35:37 -0000 1.5 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::L10N - routines to translate text. @@ -7,39 +8,33 @@ use strict; - use ISPMan::Config; -use Locale::Maketext; # inherits get_handle() - +use Locale::Maketext; # inherits get_handle() -my $languages={}; -my $Config = ISPMan::Config->new(); +my $languages = {}; +my $Config = ISPMan::Config->new(); my $po; - # set the default; $languages->{'en_us'} = ['Auto']; -my $localeDir=$Config->{'localeDir'} || $Config->{'installDir'} . "/locale"; - - +my $localeDir = $Config->{'localeDir'} || $Config->{'installDir'} . "/locale"; -for (keys %{$Config->{'nls'}{'languages'}}){ - $po= "$localeDir/" . $_ . ".po"; - if (-e $po) { - $languages->{$_}=["Gettext" => $po]; - } else { - unless ($_ eq $Config->{'nls'}{'defaults'}{'language'}){ - delete $ISPMan::Config->{'nls'}{'languages'}{$_}; - } - } +for ( keys %{ $Config->{'nls'}{'languages'} } ) { + $po = "$localeDir/" . $_ . ".po"; + if ( -e $po ) { + $languages->{$_} = [ "Gettext" => $po ]; + } + else { + unless ( $_ eq $Config->{'nls'}{'defaults'}{'language'} ) { + delete $ISPMan::Config->{'nls'}{'languages'}{$_}; + } + } } - use Locale::Maketext::Lexicon; Locale::Maketext::Lexicon->import($languages); - use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); require Exporter; @@ -47,13 +42,13 @@ $VERSION = '0.01'; - - sub _ { - my $lh = __PACKAGE__->get_handle($ENV{'LANGUAGE'}); # magically gets the current locale - my $text= join "", @_; - eval {$text=$lh->maketext(@_)}; - return $text; + my $lh = + __PACKAGE__->get_handle( $ENV{'LANGUAGE'} ) + ; # magically gets the current locale + my $text = join "", @_; + eval { $text = $lh->maketext(@_) }; + return $text; } Index: ProcessMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/ProcessMan.pm,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- ProcessMan.pm 24 May 2004 21:09:39 -0000 1.22 +++ ProcessMan.pm 30 May 2004 23:35:37 -0000 1.23 @@ -3,289 +3,277 @@ use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); - require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - editProcess - modifyProcess - modifyDnsProcess - getGroupMembers - getPid - deleteProcesses - deleteProcessByPID - addProcessToHost - addProcessToGroup - manageProcesses - getProcesses - updateProcess - getProcessesForHost - releaseSession - countProcessesInSession - getProcessesBranchDN - getSessionBranchDN - getPidDN - ); + editProcess + modifyProcess + modifyDnsProcess + getGroupMembers + getPid + deleteProcesses + deleteProcessByPID + addProcessToHost + addProcessToGroup + manageProcesses + getProcesses + updateProcess + getProcessesForHost + releaseSession + countProcessesInSession + getProcessesBranchDN + getSessionBranchDN + getPidDN +); $VERSION = '0.01'; - - sub getProcessesBranchDN { - my $self=shift; - return join ",", ("ou=processes" , $self->{'Config'}{'ldapBaseDN'}); + my $self = shift; + return join ",", ( "ou=processes", $self->{'Config'}{'ldapBaseDN'} ); } sub getSessionBranchDN { - my $self=shift; - my $_session=shift; + my $self = shift; + my $_session = shift; - return join ",", ("ispmanSession=$_session" , $self->getProcessesBranchDN()); + return join ",", + ( "ispmanSession=$_session", $self->getProcessesBranchDN() ); } - sub getPidDN { - my $self=shift; - my $_session=shift; + my $self = shift; + my $_session = shift; } - - sub getPid { - my $self=shift; - my $entry=$self->getEntry("cn=pidcounter, ou=counters, @{[$self->getConf('ldapBaseDN')]}", "objectclass=ispmanCounters" , ["ispmanCurrPid"]); - my $pid=$entry->get_value("ispmanCurrPid"); - $self->updateEntryWithData("cn=pidcounter, ou=counters, @{[$self->getConf('ldapBaseDN')]}",{"ispmanCurrPid" => ++$pid}); + my $self = shift; + my $entry = + $self->getEntry( + "cn=pidcounter, ou=counters, @{[$self->getConf('ldapBaseDN')]}", + "objectclass=ispmanCounters", ["ispmanCurrPid"] ); + my $pid = $entry->get_value("ispmanCurrPid"); + $self->updateEntryWithData( + "cn=pidcounter, ou=counters, @{[$self->getConf('ldapBaseDN')]}", + { "ispmanCurrPid" => ++$pid } ); return $pid; } - - - -sub modifyDnsProcess{ - my $self=shift; - my $domain=shift; - $self->addProcessToGroup($domain, "dnsgroup", "modifyDomain"); +sub modifyDnsProcess { + my $self = shift; + my $domain = shift; + $self->addProcessToGroup( $domain, "dnsgroup", "modifyDomain" ); } - - - - - - -sub deleteProcesses{ - my $self=shift; - my $processes=shift; +sub deleteProcesses { + my $self = shift; + my $processes = shift; for (@$processes) { - $self->deleteEntry($_); + $self->deleteEntry($_); } } - - sub addProcess { - #Generic process add function - my $self=shift; + + #Generic process add function + my $self = shift; } sub addProcessToGroup { - my $self=shift; - my ($domain, $group, $process, $params)=@_; - my @members=$self->getGroupMembers($group); - foreach (@members){ - $self->addProcessToHost($domain, $_, $process, $params); - } + my $self = shift; + my ( $domain, $group, $process, $params ) = @_; + my @members = $self->getGroupMembers($group); + foreach (@members) { + $self->addProcessToHost( $domain, $_, $process, $params ); + } } - sub addProcessToHost { - #Generic process add process to a Host - #Usage: addProcessToHost(domain_name, host_name, process, parameters); - - my $self=shift; - my ($domain, $hostname, $process, $params)=@_; - - my $dn; - my $data; - my $pid = $self->getPid; - - - - my $branch; - if ($ENV{'HTTP_USER_AGENT'}){ - if ($self->{'sessID'}){ - $branch="ispmanSession=$self->{'sessID'}, ou=processes, @{[$self->getConf('ldapBaseDN')]}"; - } else { - $branch="ispmanSession=CONTROLPANEL-$domain, ou=processes, @{[$self->getConf('ldapBaseDN')]}"; - } - } else { - $branch="ispmanSession=CONSOLE, ou=processes, @{[$self->getConf('ldapBaseDN')]}"; - } - + #Generic process add process to a Host + #Usage: addProcessToHost(domain_name, host_name, process, parameters); - $self->prepareBranchForDN($branch); + my $self = shift; + my ( $domain, $hostname, $process, $params ) = @_; - $dn="ispmanPid=$pid, $branch"; - $data->{'ispmanPid'}=$pid; - $data->{'ispmanProcess'}=$process; - $data->{'ispmanParams'}=$params; - $data->{'ou'}="processes"; - $data->{'objectclass'}=["ispmanProcesses"]; - $data->{'ispmanHostName'}=$hostname; - $data->{'ispmanDomain'}=$domain; - if ($ENV{'HTTP_USER_AGENT'}){ - if ($self->{'sessID'}) { - $data->{'ispmanStatus'}="insession"; - $data->{'ispmanSession'}=$self->{'sessID'}; - $data->{'ispmanUser'}=$self->{'REMOTE_USER'}; - } else { - $data->{'ispmanStatus'}="new"; - $data->{'ispmanSession'}="CONTROLPANEL-$domain"; - $data->{'ispmanUser'}=$domain; - } - } else { - $data->{'ispmanSession'}="CONSOLE"; - $data->{'ispmanUser'}=$ENV{'USER'}|| "ConsoleUser without a USER set"; - $data->{'ispmanStatus'}="new"; - } - - $self->addNewEntryWithData($dn, $data); -} + my $dn; + my $data; + my $pid = $self->getPid; + my $branch; + if ( $ENV{'HTTP_USER_AGENT'} ) { + if ( $self->{'sessID'} ) { + $branch = +"ispmanSession=$self->{'sessID'}, ou=processes, @{[$self->getConf('ldapBaseDN')]}"; + } + else { + $branch = +"ispmanSession=CONTROLPANEL-$domain, ou=processes, @{[$self->getConf('ldapBaseDN')]}"; + } + } + else { + $branch = +"ispmanSession=CONSOLE, ou=processes, @{[$self->getConf('ldapBaseDN')]}"; + } + $self->prepareBranchForDN($branch); -sub updateProcess { - my $self=shift; - my ($dns, $status, $message)=@_; - my @pids=$self->as_array($dns); - - for (@pids) { - $self->updateEntryWithData($_, {"ispmanStatus" => $status, "ispmanMessage" => $message}) - } - - - my $mailhash; - $mailhash->{'from'}="ispman"; - $mailhash->{'to'}=$self->getConf("rootEmail"); - $mailhash->{'subject'}="ISPMan Process updated"; - - $mailhash->{'data'}="ispmanStatus: $status\n"; - $mailhash->{'data'}.="ispmanMessage: $message\n\n"; - for (@pids) { - $mailhash->{'data'}.="pid: $_\n"; - } + $dn = "ispmanPid=$pid, $branch"; + $data->{'ispmanPid'} = $pid; + $data->{'ispmanProcess'} = $process; + $data->{'ispmanParams'} = $params; + $data->{'ou'} = "processes"; + $data->{'objectclass'} = ["ispmanProcesses"]; + $data->{'ispmanHostName'} = $hostname; + $data->{'ispmanDomain'} = $domain; + if ( $ENV{'HTTP_USER_AGENT'} ) { - - $self->sendmail($mailhash); - - print "Receieving ", join "\n", (@$dns, $status, $message); + if ( $self->{'sessID'} ) { + $data->{'ispmanStatus'} = "insession"; + $data->{'ispmanSession'} = $self->{'sessID'}; + $data->{'ispmanUser'} = $self->{'REMOTE_USER'}; + } + else { + $data->{'ispmanStatus'} = "new"; + $data->{'ispmanSession'} = "CONTROLPANEL-$domain"; + $data->{'ispmanUser'} = $domain; + } + } + else { + $data->{'ispmanSession'} = "CONSOLE"; + $data->{'ispmanUser'} = $ENV{'USER'} + || "ConsoleUser without a USER set"; + $data->{'ispmanStatus'} = "new"; + } + $self->addNewEntryWithData( $dn, $data ); } +sub updateProcess { + my $self = shift; + my ( $dns, $status, $message ) = @_; + my @pids = $self->as_array($dns); + for (@pids) { + $self->updateEntryWithData( $_, + { "ispmanStatus" => $status, "ispmanMessage" => $message } ); + } -sub modifyProcess { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); - print "DN is $dn"; + my $mailhash; + $mailhash->{'from'} = "ispman"; + $mailhash->{'to'} = $self->getConf("rootEmail"); + $mailhash->{'subject'} = "ISPMan Process updated"; - #Wally, please complete this. - # thaks - $self->updateEntryWithData($dn, - { - "ispmanStatus" => $r->param("ispmanStatus"), - "ispmanPid" => $r->param("ispmanPid"), - "ispmanHostName" => $r->param("ispmanHostName"), + $mailhash->{'data'} = "ispmanStatus: $status\n"; + $mailhash->{'data'} .= "ispmanMessage: $message\n\n"; + for (@pids) { + $mailhash->{'data'} .= "pid: $_\n"; + } - } - ); + $self->sendmail($mailhash); - $self->manageProcesses($r); + print "Receieving ", join "\n", ( @$dns, $status, $message ); } +sub modifyProcess { + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); + print "DN is $dn"; + #Wally, please complete this. + # thaks + $self->updateEntryWithData( + $dn, + { + "ispmanStatus" => $r->param("ispmanStatus"), + "ispmanPid" => $r->param("ispmanPid"), + "ispmanHostName" => $r->param("ispmanHostName"), + + } + ); + $self->manageProcesses($r); + +} sub getProcesses { - my $self=shift; - undef $self->{'filter'}; - $self->{'filter'}=shift; - - - if ($self->{'session'}->param("logintype") eq "reseller" or $self->{'session'}->param("logintype") eq "client") { - $self->{'searchFilter'}=sprintf("&(objectclass=ispmanProcesses)(ispmanuser=%s)", $self->{'session'}->param("uid")); - } else { - $self->{'searchFilter'}="&(objectclass=ispmanProcesses)"; - } - + my $self = shift; + undef $self->{'filter'}; + $self->{'filter'} = shift; + if ( $self->{'session'}->param("logintype") eq "reseller" + or $self->{'session'}->param("logintype") eq "client" ) + { + $self->{'searchFilter'} = + sprintf( "&(objectclass=ispmanProcesses)(ispmanuser=%s)", + $self->{'session'}->param("uid") ); + } + else { + $self->{'searchFilter'} = "&(objectclass=ispmanProcesses)"; + } - - - $self->{'searchFilter'}.="($self->{'filter'})" if ($self->{'filter'}); + $self->{'searchFilter'} .= "($self->{'filter'})" if ( $self->{'filter'} ); - my $processHash=$self->getEntriesAsHashRef($self->getProcessesBranchDN(), $self->{'searchFilter'}); - return $processHash; + my $processHash = $self->getEntriesAsHashRef( $self->getProcessesBranchDN(), + $self->{'searchFilter'} ); + return $processHash; } - sub getProcessesForHost { - my $self=shift; - my @hosts=$self->as_array(@_); - - my $filter=join "", map {"(ispmanHostName=$_)"} @hosts; - $filter="&(objectclass=ispmanProcesses)(ispmanStatus=new)(|$filter)"; - my $processHash=$self->getEntriesAsHashRef($self->getProcessesBranchDN(), $filter); - return $processHash; + my $self = shift; + my @hosts = $self->as_array(@_); + + my $filter = join "", map { "(ispmanHostName=$_)" } @hosts; + $filter = "&(objectclass=ispmanProcesses)(ispmanStatus=new)(|$filter)"; + my $processHash = + $self->getEntriesAsHashRef( $self->getProcessesBranchDN(), $filter ); + return $processHash; } sub deleteProcessByPID { - my $self=shift; - my $pid=shift; - my $entry=$self->getEntry($self->getProcessesBranchDN(), "ispmanPid=$pid", [], "sub"); - my $dn=$entry->dn(); - $self->deleteProcesses([$dn]); + my $self = shift; + my $pid = shift; + my $entry = $self->getEntry( $self->getProcessesBranchDN(), + "ispmanPid=$pid", [], "sub" ); + my $dn = $entry->dn(); + $self->deleteProcesses( [$dn] ); } sub manageProcesses { - my $self=shift; - my $template=$self->getTemplate("processes/manageProcesses.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("processes/manageProcesses.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } sub editProcess { - my $self=shift; - my $template=$self->getTemplate("processes/editProcess.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("processes/editProcess.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - sub releaseSession { - my $self=shift; - my $session=shift; - my $processes=$self->getEntriesAsHashRef($self->getSessionBranchDN($session), "objectClass=ispmanProcesses"); - - my $processHash; - for (keys %$processes){ - $self->modifyAttribute($_, "ispmanStatus", "new"); - } + my $self = shift; + my $session = shift; + my $processes = + $self->getEntriesAsHashRef( $self->getSessionBranchDN($session), + "objectClass=ispmanProcesses" ); + + my $processHash; + for ( keys %$processes ) { + $self->modifyAttribute( $_, "ispmanStatus", "new" ); + } } sub countProcessesInSession { - my $self=shift; - my $session=shift; - return $self->getChildrenCount($self->getSessionBranchDN($session)); - } - - + my $self = shift; + my $session = shift; + return $self->getChildrenCount( $self->getSessionBranchDN($session) ); +} 1; - __END__ Index: DomainServices.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/DomainServices.pm,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- DomainServices.pm 28 Apr 2003 14:39:44 -0000 1.7 +++ DomainServices.pm 30 May 2004 23:35:37 -0000 1.8 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::DomainServices - Functions to Define and manage Domain Services. @@ -28,175 +29,162 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( -addDomainService -addService2Domain -addDomainService2Domain -deleteDomainService -manageDomainServices -getDomainServices -editDomainService -getDomainServiceInfo + addDomainService + addService2Domain + addDomainService2Domain + deleteDomainService + manageDomainServices + getDomainServices + editDomainService + getDomainServiceInfo -getDomainServicesBranchDN -getDomainServiceDN + getDomainServicesBranchDN + getDomainServiceDN ); $VERSION = '0.01'; - - - - sub getDomainServicesBranchDN { - my $self=shift; - - - # simply return the DN, generated by concatinating - # ou=domainsServices with ldapBaseDN + my $self = shift; - # If one day, we want to change this to ou=serverConfig, ou=domainServices, .... etc - # it will require a change only at one place. + # simply return the DN, generated by concatinating + # ou=domainsServices with ldapBaseDN - # Also note, we are not calling getConf('ldapBaseDN') but getting it from the Config hash - # i-e being nice to the LDAP server +# If one day, we want to change this to ou=serverConfig, ou=domainServices, .... etc +# it will require a change only at one place. +# Also note, we are not calling getConf('ldapBaseDN') but getting it from the Config hash +# i-e being nice to the LDAP server - return join ",", ("ou=domainServices", $self->{'Config'}{'ldapBaseDN'}); + return join ",", ( "ou=domainServices", $self->{'Config'}{'ldapBaseDN'} ); } sub getDomainServiceDN { - my $self=shift; - my ($service)=@_; - - # Again, a util function to return the DN of the domain Service. - # End-programmers dont need to build this DN. - # This gives us the flexibility to change it in future without breaking the existing apps. - - # also reduces typo probability - - # functions like getDomainServiceDN are present in almost all modules - # such as - # getDomainDN, getVhostDN, getUserDN etc + my $self = shift; + my ($service) = @_; +# Again, a util function to return the DN of the domain Service. +# End-programmers dont need to build this DN. +# This gives us the flexibility to change it in future without breaking the existing apps. - return join ",", ("ispmanDomainServiceName=$service", $self->getDomainServicesBranchDN()); + # also reduces typo probability -} + # functions like getDomainServiceDN are present in almost all modules + # such as + # getDomainDN, getVhostDN, getUserDN etc + return join ",", ( "ispmanDomainServiceName=$service", + $self->getDomainServicesBranchDN() ); +} sub addDomainService { - my $self=shift; - # object reference $self, separately shifted than the rest of the ARGS. - # this makes it nice for my IDE to show me all the parameters the function reqiure without the $self. + my $self = shift; +# object reference $self, separately shifted than the rest of the ARGS. +# this makes it nice for my IDE to show me all the parameters the function reqiure without the $self. - my ( $service, $cn, $default, $description)=@_; - - my $data; - #my $dn="ispmanDomainServiceName=$service, ou=domainServices, @{[$self->getConf('ldapBaseDN')]}"; - my $dn=$self->getDomainServiceDN($service); # using the API function instead of generating the DN - - $data->{'objectclass'}="ispmanDomainService"; - $data->{'ispmanDomainServiceName'}=$service; - $data->{'ispmanDomainServiceAlias'}=$cn || "undefined"; - $data->{'ispmanDomainServiceInfo'}=$description || "undefined"; - $data->{'ispmanDomainServiceDefault'}=$default || "no"; - $self->addNewEntryWithData($dn, $data); -} + my ( $service, $cn, $default, $description ) = @_; + my $data; -sub addService2Domain { - # changed to addDomainService2Domain - # for consistency - my $self=shift; - my($service, $domain)=@_; - # please pass domain as the first argument. - return $self->addDomainService2Domain($domain, $service); -}; +#my $dn="ispmanDomainServiceName=$service, ou=domainServices, @{[$self->getConf('ldapBaseDN')]}"; + my $dn = + $self->getDomainServiceDN($service) + ; # using the API function instead of generating the DN + $data->{'objectclass'} = "ispmanDomainService"; + $data->{'ispmanDomainServiceName'} = $service; + $data->{'ispmanDomainServiceAlias'} = $cn || "undefined"; + $data->{'ispmanDomainServiceInfo'} = $description || "undefined"; + $data->{'ispmanDomainServiceDefault'} = $default || "no"; + $self->addNewEntryWithData( $dn, $data ); +} +sub addService2Domain { + # changed to addDomainService2Domain + # for consistency + my $self = shift; + my ( $service, $domain ) = @_; + # please pass domain as the first argument. + return $self->addDomainService2Domain( $domain, $service ); +} sub addDomainService2Domain { - my $self=shift; + my $self = shift; - my( $domain, $service )=@_; - # please pass domain as the first argument. - - my $data; - #my $dn="ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"; - my $dn=$self->getDomainDN($domain); #using API function instead of generating the DN - $data->{'ispmanDomainService'}=$service; - $self->addData2Entry($dn, $data); -} + my ( $domain, $service ) = @_; + # please pass domain as the first argument. + my $data; -sub modifyDomainService { - my $self=shift; - my ( $service, $cn, $default, $description)=@_; - - my $data; - #my $dn="ispmanDomainServiceName=$service, ou=domainServices, @{[$self->getConf('ldapBaseDN')]}"; - my $dn=$self->getDomainServiceDN($service); - - $data->{'cn'}=$cn || "undefined"; - $data->{'description'}=$description || "undefined"; - $data->{'default'}=$default || "no"; - $self->updateEntryWithData($dn, $data); + #my $dn="ispmanDomain=$domain, @{[$self->getConf('ldapBaseDN')]}"; + my $dn = + $self->getDomainDN($domain) + ; #using API function instead of generating the DN + $data->{'ispmanDomainService'} = $service; + $self->addData2Entry( $dn, $data ); } +sub modifyDomainService { + my $self = shift; + my ( $service, $cn, $default, $description ) = @_; -sub deleteDomainService { - my ($self, $service)=@_; - #my $dn="ispmanDomainServiceName=$service, ou=domainServices, @{[$self->getConf('ldapBaseDN')]}"; - my $dn=$self->getDomainServiceDN($service); - - $self->deleteEntry($dn); -} + my $data; +#my $dn="ispmanDomainServiceName=$service, ou=domainServices, @{[$self->getConf('ldapBaseDN')]}"; + my $dn = $self->getDomainServiceDN($service); -sub getDomainServiceInfo{ - my $self=shift; - my ( $service )=@_; - my $serviceInfo=$self->getEntryAsHashRef($self->getDomainServiceDN($service)); - return $serviceInfo; + $data->{'cn'} = $cn || "undefined"; + $data->{'description'} = $description || "undefined"; + $data->{'default'} = $default || "no"; + $self->updateEntryWithData( $dn, $data ); } +sub deleteDomainService { + my ( $self, $service ) = @_; +#my $dn="ispmanDomainServiceName=$service, ou=domainServices, @{[$self->getConf('ldapBaseDN')]}"; + my $dn = $self->getDomainServiceDN($service); - -sub getDomainServices { - my $self=shift; - return $self->getEntriesAsHashRef($self->getDomainServicesBranchDN(), "objectclass=ispmanDomainService"); + $self->deleteEntry($dn); } +sub getDomainServiceInfo { + my $self = shift; + my ($service) = @_; + my $serviceInfo = + $self->getEntryAsHashRef( $self->getDomainServiceDN($service) ); + return $serviceInfo; +} - +sub getDomainServices { + my $self = shift; + return $self->getEntriesAsHashRef( $self->getDomainServicesBranchDN(), + "objectclass=ispmanDomainService" ); +} sub editDomainService { - my $self=shift; - my ($service)=@_; - my $template=$self->getTemplate("editDomainService.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my ($service) = @_; + my $template = $self->getTemplate("editDomainService.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - - sub manageDomainServices { - my $self=shift; - return unless $ENV{'HTTP_USER_AGENT'}; + my $self = shift; + return unless $ENV{'HTTP_USER_AGENT'}; - my $template=$self->getTemplate("manageDomainServices.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $template = $self->getTemplate("manageDomainServices.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - 1; __END__ Index: HostMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/HostMan.pm,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- HostMan.pm 30 May 2004 22:25:59 -0000 1.15 +++ HostMan.pm 30 May 2004 23:35:37 -0000 1.16 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::HostMan - Functions to manage Hosts @@ -24,34 +25,29 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - addHost - manageHosts - getHosts - editHost - getHostInfo - getHostIp - add_host - modify_host - delete_host - modifyHost + addHost + manageHosts + getHosts + editHost + getHostInfo + getHostIp + add_host + modify_host + delete_host + modifyHost ); $VERSION = '0.01'; - - - - sub new { - my $proto = shift; - my $class = ref($proto) || $proto; - my $self = {}; - bless ($self, $class); - $self->SUPER::register_handler("testevent", "testhandler"); + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless( $self, $class ); + $self->SUPER::register_handler( "testevent", "testhandler" ); } - sub addHost { =item B<addHost> @@ -65,141 +61,134 @@ 'addHost', and submit values for hostname, ip, cn and description. =cut - - my $self=shift; - my $r=shift; - - $self->add_host($r->param('ispmanHostName'), - $r->param('ispmanHostIp'), - $r->param('ispmanHostAlias'), - $r->param('ispmanHostInfo')); - $self->manageHosts(); -} + my $self = shift; + my $r = shift; + $self->add_host( + $r->param('ispmanHostName'), $r->param('ispmanHostIp'), + $r->param('ispmanHostAlias'), $r->param('ispmanHostInfo') + ); + $self->manageHosts(); +} sub add_host { - my $self=shift; - if ($self->{'session'}) { - return unless ($self->{'session'}->param("logintype") eq "admin"); - return unless $self->requiredAdminLevel(100); - } - my ($hostname, $ip, $alias, $description)=@_; + my $self = shift; + if ( $self->{'session'} ) { + return unless ( $self->{'session'}->param("logintype") eq "admin" ); + return unless $self->requiredAdminLevel(100); + } + my ( $hostname, $ip, $alias, $description ) = @_; - if (! $ip || ! $hostname){ - print "ERROR: No hostname or ip specified"; - return; - } + if ( !$ip || !$hostname ) { + print "ERROR: No hostname or ip specified"; + return; + } - my $data; - $data->{'ispmanHostName'}=$hostname; - $data->{'ispmanHostIp'}=$ip; - $data->{'ispmanHostAlias'}=[split(/\s+/,$alias)]; - $data->{'ispmanHostInfo'}=$description || "undefined"; - $data->{'objectclass'}="ispmanHost"; + my $data; + $data->{'ispmanHostName'} = $hostname; + $data->{'ispmanHostIp'} = $ip; + $data->{'ispmanHostAlias'} = [ split( /\s+/, $alias ) ]; + $data->{'ispmanHostInfo'} = $description || "undefined"; + $data->{'objectclass'} = "ispmanHost"; - my $dn="ispmanHostName=$hostname, ou=hosts, @{[$self->getConf('ldapBaseDN')]}"; - $self->addNewEntryWithData($dn, $data); + my $dn = + "ispmanHostName=$hostname, ou=hosts, @{[$self->getConf('ldapBaseDN')]}"; + $self->addNewEntryWithData( $dn, $data ); +#removing for the time being. will come back to this by 0.9 +#$self->addProcessToGroup('ISPMAN_INTERNAL', "monitoringgroup", "AddHostToNetsaint", +# join ',', ($hostname, $cn, $ip, $description, $hosttype) +# ) if $self->getConf("useNetSaint"); - #removing for the time being. will come back to this by 0.9 - #$self->addProcessToGroup('ISPMAN_INTERNAL', "monitoringgroup", "AddHostToNetsaint", - # join ',', ($hostname, $cn, $ip, $description, $hosttype) - # ) if $self->getConf("useNetSaint"); - } - sub modifyHost { - my $self=shift; - my $r=shift; - $self->modify_host( $r->param('ispmanHostName'), $r->param('ispmanHostIp'), $r->param('ispmanHostAlias'), $r->param('ispmanHostInfo')); - $self->manageHosts(); + my $self = shift; + my $r = shift; + $self->modify_host( + $r->param('ispmanHostName'), $r->param('ispmanHostIp'), + $r->param('ispmanHostAlias'), $r->param('ispmanHostInfo') + ); + $self->manageHosts(); } - sub modify_host { - my $self=shift; - return unless $self->requiredAdminLevel(100); + my $self = shift; + return unless $self->requiredAdminLevel(100); - my ($hostname, $ip, $alias, $description)=@_; - + my ( $hostname, $ip, $alias, $description ) = @_; - my $data; - $data->{'ispmanHostIp'}=$ip; - $data->{'ispmanHostAlias'}=[split(/\s+/,$alias)]; - $data->{'ispmanHostInfo'}=$description || "undefined"; + my $data; + $data->{'ispmanHostIp'} = $ip; + $data->{'ispmanHostAlias'} = [ split( /\s+/, $alias ) ]; + $data->{'ispmanHostInfo'} = $description || "undefined"; - my $dn="ispmanHostName=$hostname, ou=hosts, @{[$self->getConf('ldapBaseDN')]}"; - $self->updateEntryWithData($dn, $data); + my $dn = + "ispmanHostName=$hostname, ou=hosts, @{[$self->getConf('ldapBaseDN')]}"; + $self->updateEntryWithData( $dn, $data ); - #removing for the time being. will come back to this by 0.9 - #$self->addProcessToGroup('ISPMAN_INTERNAL', "monitoringgroup", "AddHostToNetsaint", - # join ',', ($hostname, $cn, $ip, $description, $hosttype) - # ) if $self->getConf("useNetSaint"); +#removing for the time being. will come back to this by 0.9 +#$self->addProcessToGroup('ISPMAN_INTERNAL', "monitoringgroup", "AddHostToNetsaint", +# join ',', ($hostname, $cn, $ip, $description, $hosttype) +# ) if $self->getConf("useNetSaint"); } - - - - sub delete_host { - my $self=shift; + my $self = shift; - if ($self->{'session'}) { - return unless ($self->{'session'}->param("logintype") eq "admin"); - return unless $self->requiredAdminLevel(100); - } - + if ( $self->{'session'} ) { + return unless ( $self->{'session'}->param("logintype") eq "admin" ); + return unless $self->requiredAdminLevel(100); + } - my ($hostname)=@_; - my $dn="ispmanHostName=$hostname, ou=hosts, @{[$self->getConf('ldapBaseDN')]}"; + my ($hostname) = @_; + my $dn = + "ispmanHostName=$hostname, ou=hosts, @{[$self->getConf('ldapBaseDN')]}"; - $self->deleteEntry($dn); - $self->manageHosts(); + $self->deleteEntry($dn); + $self->manageHosts(); } - -sub getHostInfo{ - my $self=shift; - my ($hostname)=@_; - my $hostinfo=$self->getEntryAsHashRef("ispmanHostName=$hostname, ou=hosts, @{[$self->getConf('ldapBaseDN')]}"); - return $hostinfo; +sub getHostInfo { + my $self = shift; + my ($hostname) = @_; + my $hostinfo = + $self->getEntryAsHashRef( + "ispmanHostName=$hostname, ou=hosts, @{[$self->getConf('ldapBaseDN')]}" + ); + return $hostinfo; } - -sub getHostIp{ - my $self=shift; - my $hostinfo=$self->getHostInfo(@_); - return $hostinfo->{'ispmanHostIp'}; +sub getHostIp { + my $self = shift; + my $hostinfo = $self->getHostInfo(@_); + return $hostinfo->{'ispmanHostIp'}; } - - sub getHosts { - my $self=shift; - return $self->getEntriesAsHashRef("ou=hosts, @{[$self->getConf('ldapBaseDN')]}", "objectclass=ispmanHost"); + my $self = shift; + return $self->getEntriesAsHashRef( + "ou=hosts, @{[$self->getConf('ldapBaseDN')]}", + "objectclass=ispmanHost" ); } - sub editHost { - my $self=shift; - my ($hostname)=@_; - my $template=$self->getTemplate("hosts/editHost.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my ($hostname) = @_; + my $template = $self->getTemplate("hosts/editHost.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - sub manageHosts { - my $self=shift; - return unless $ENV{'HTTP_USER_AGENT'}; + my $self = shift; + return unless $ENV{'HTTP_USER_AGENT'}; - my $template=$self->getTemplate("hosts/manageHosts.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $template = $self->getTemplate("hosts/manageHosts.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - 1; __END__ Index: Log.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/Log.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Log.pm 30 May 2002 16:11:33 -0000 1.4 +++ Log.pm 30 May 2004 23:35:37 -0000 1.5 @@ -1,75 +1,76 @@ package ISPMan::Log; use strict; + #use Carp; use ISPMan::Config; -my $Config=ISPMan::Config->new(); +my $Config = ISPMan::Config->new(); -$Config->{'logmethod'}="old" if (!($Config->{'logmethod'})||($Config->{'logmethod'} eq "")||($Config->{'logmethod'} eq "file")); -$Config->{'logfacility'}="local5" if (!($Config->{'logfacility'})||($Config->{'logfacility'} eq "")); +$Config->{'logmethod'} = "old" + if ( !( $Config->{'logmethod'} ) + || ( $Config->{'logmethod'} eq "" ) + || ( $Config->{'logmethod'} eq "file" ) ); +$Config->{'logfacility'} = "local5" + if ( !( $Config->{'logfacility'} ) || ( $Config->{'logfacility'} eq "" ) ); -if ($Config->{'logmethod'} eq "syslog") { - require Sys::Syslog; - import Sys::Syslog; +if ( $Config->{'logmethod'} eq "syslog" ) { + require Sys::Syslog; + import Sys::Syslog; } use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $Config $isLogFileOpen); require Exporter; --dfGzR35o/[email protected] = qw(Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(Exporter AutoLoader); @EXPORT = qw( - log_event - syslog_event - ); + log_event + syslog_event +); $VERSION = '0.01'; - - $|++; -log_event("called by " . caller() ) if $Config-> {'logmethod'} eq "old"; - +log_event( "called by " . caller() ) if $Config->{'logmethod'} eq "old"; sub log_event { - my $self=shift; + my $self = shift; - return unless $Config->{'debug'}>0; - my $logstring = join(" " , (caller , @_) ); - - $logstring = $logstring; - $logstring =~ s/^ISPMan=.*? //; - - if ($Config->{'logmethod'} eq "syslog") { - syslog_event("notice", $logstring); - } else { - warn($logstring); - } + return unless $Config->{'debug'} > 0; + my $logstring = join( " ", ( caller, @_ ) ); -} + $logstring = $logstring; + $logstring =~ s/^ISPMan=.*? //; + if ( $Config->{'logmethod'} eq "syslog" ) { + syslog_event( "notice", $logstring ); + } + else { + warn($logstring); + } + +} sub syslog_event { - return unless $Config->{'debug'}>0; - my ($loglevel,$logstring)=@_; + return unless $Config->{'debug'} > 0; + my ( $loglevel, $logstring ) = @_; - if ($Config->{'logmethod'} ne "syslog") { + if ( $Config->{'logmethod'} ne "syslog" ) { log_event("syslog_event called, but logmethod is not set to syslog"); log_event("log message was: $logstring"); - return(-1) + return (-1); } - Sys::Syslog::setlogsock($Config->{'logsock'} || 'inet'); - openlog('ispman', 'cons', $Config->{'logfacility'}); - syslog($loglevel,"%s",$logstring); + Sys::Syslog::setlogsock( $Config->{'logsock'} || 'inet' ); + openlog( 'ispman', 'cons', $Config->{'logfacility'} ); + syslog( $loglevel, "%s", $logstring ); closelog(); } 1; - __END__ =head1 NAME Index: Portal.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/Portal.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Portal.pm 4 Jan 2004 18:56:15 -0000 1.5 +++ Portal.pm 30 May 2004 23:35:37 -0000 1.6 @@ -5,60 +5,57 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - addPortalUser + addPortalUser ); $VERSION = '0.01'; use ISPMan::Config; -$Config=ISPMan::Config->new(); +$Config = ISPMan::Config->new(); +sub addPortalUser { + my $self = shift; + my $r = shift; + my $userid = $r->param("uid"); + $userid = lc($userid); + $userid =~ s/[^a-z]//g; + $r->param( "userid", $userid ); -sub addPortalUser{ - my $self=shift; - my $r=shift; - - - my $userid=$r->param("uid"); - $userid=lc($userid); - $userid=~s/[^a-z]//g; - $r->param("userid", $userid); + # lets crypt the pass + my $userpassword = $r->param("userpassword"); + if ( $userpassword !~ /^\{crypt\}/ ) { + $userpassword = '{crypt}' + . crypt( $userpassword, join '', + ( '.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z' )[ rand 64, rand 64 ] ); + } + $r->param( "userpassword", $userpassword ); - # lets crypt the pass - my $userpassword=$r->param("userpassword"); - if ($userpassword!~ /^\{crypt\}/) { - $userpassword='{crypt}' . crypt($userpassword, join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]); - } - $r->param("userpassword", $userpassword); + my $domain = $r->param("domain"); - - my $domain=$r->param("domain"); + #my $_uid=$r->param("uid"); + my $_uid = join '_', ( $r->param("uid"), $r->param("domain") ); + $_uid =~ s/\./_/g; - #my $_uid=$r->param("uid"); - my $_uid=join '_', ($r->param("uid"), $r->param("domain")); - $_uid=~s/\./_/g; - + $r->param( "uid", $_uid ); + my $dn = + "uid=$_uid, ou=users, ispmanDomain=$domain, " + . $self->{'Config'}{'ldapBaseDN'}; + $r->param( "dn", $dn ); + $r->param( "nsroaming", "N" ); - $r->param("uid", $_uid); - my $dn="uid=$_uid, ou=users, ispmanDomain=$domain, " . $self->{'Config'}{'ldapBaseDN'}; - $r->param("dn", $dn); - $r->param("nsroaming", "N"); - - if ($self->addUser($r)){ - if ($r->param("maildrophost")) { - $self->addProcessToHost($domain, $r->param("maildrophost"), "createPortalUserMailbox", $_uid); - } - $self->addProcessToGroup($domain, "fileservergroup", "createPortalUserHomeDirectory", $_uid); - return 1; - } + if ( $self->addUser($r) ) { + if ( $r->param("maildrophost") ) { + $self->addProcessToHost( $domain, $r->param("maildrophost"), + "createPortalUserMailbox", $_uid ); + } + $self->addProcessToGroup( $domain, "fileservergroup", + "createPortalUserHomeDirectory", $_uid ); + return 1; + } } - - - - 1; __END__ Index: Utils.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/Utils.pm,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- Utils.pm 13 Feb 2004 22:02:25 -0000 1.20 +++ Utils.pm 30 May 2004 23:35:37 -0000 1.21 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::Utils - Utility functions for ISPMan @@ -25,7 +26,6 @@ =cut - package ISPMan::Utils; use strict; @@ -33,76 +33,73 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( -cat -getTemplate -refreshSignal -reloadSignal -menu -topmenu -start -printHeaders -ispman -concatHashRefs -encryptPass -encryptPassWithMethod -explodeDN -make_fqdn -overview -genPass -status -commitSession -staticHost -as_arrayref -as_hashref -as_array -getAttrVal -isEmpty -hasValue -unique -substitute + cat + getTemplate + refreshSignal + reloadSignal + menu + topmenu + start + printHeaders + ispman + concatHashRefs + encryptPass + encryptPassWithMethod + explodeDN + make_fqdn + overview + genPass + status + commitSession + staticHost + as_arrayref + as_hashref + as_array + getAttrVal + isEmpty + hasValue + unique + substitute ); - $VERSION = '0.01'; - - - - - - sub getTemplate { - my $self=shift; - my ($file)=@_; + my $self = shift; + my ($file) = @_; - - my $source; - my $tmpl_directory; + my $source; + my $tmpl_directory; - if ($file=~/^\//){ - $source=$file; - } else { - if ( -d join "/", ($self->getConf("installDir") , "cgi-bin")){ - $tmpl_directory=join "/", ($self->getConf("installDir") , "cgi-bin/tmpl"); - } else { - # ispman-web/cgi-bin (for maintainers) - $tmpl_directory=join "/", ($self->getConf("installDir") , "ispman-web/cgi-bin/tmpl"); - } + if ( $file =~ /^\// ) { + $source = $file; + } + else { + if ( -d join "/", ( $self->getConf("installDir"), "cgi-bin" ) ) { + $tmpl_directory = join "/", + ( $self->getConf("installDir"), "cgi-bin/tmpl" ); + } + else { - $source= join "/", ($tmpl_directory, $file); - } + # ispman-web/cgi-bin (for maintainers) + $tmpl_directory = join "/", + ( $self->getConf("installDir"), "ispman-web/cgi-bin/tmpl" ); + } - $self->log_event("opening $source as template") if $self->getConfig("debug")>1; + $source = join "/", ( $tmpl_directory, $file ); + } - my $template= new Text::Template( - DELIMITERS => ['<perl>', '</perl>'], - TYPE => "FILE", - SOURCE => $source, - ); - return $template; + $self->log_event("opening $source as template") + if $self->getConfig("debug") > 1; + my $template = new Text::Template( + DELIMITERS => [ '<perl>', '</perl>' ], + TYPE => "FILE", + SOURCE => $source, + ); + return $template; =item B<getTemplate> @@ -137,19 +134,16 @@ =cut -} - - +} sub cat { - my $file=shift; - return unless $file; - open "F", $file || die "Cant open $file\n"; - my $text=join "", <F>; - close("F"); - return $text; - + my $file = shift; + return unless $file; + open "F", $file || die "Cant open $file\n"; + my $text = join "", <F>; + close("F"); + return $text; =item B<cat> @@ -166,69 +160,72 @@ =cut - - } - - - - sub encryptPass { - my $self=shift; - my $pass=(ref($self))?shift:$self; - unless ($pass=~/^{crypt}/){ - $pass ='{crypt}' . crypt($pass, join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]); - } - return $pass; + my $self = shift; + my $pass = ( ref($self) ) ? shift: $self; + unless ( $pass =~ /^{crypt}/ ) { + $pass = '{crypt}' + . crypt( $pass, join '', + ( '.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z' )[ rand 64, rand 64 ] ); + } + return $pass; } sub genPass { - my $self=shift; - return join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64, rand 64, rand 64, rand 64, rand 64, rand 64, rand 64]; + my $self = shift; + return join '', + ( '.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z' ) + [ rand 64, rand 64, rand 64, rand 64, rand 64, rand 64, rand 64, + rand 64 ]; } - sub encryptPassWithMethod { - my $self=shift; - my ($pass,$method)=@_; - - #If password is empty, create a random one. - $pass||=$self->genPass(); + my $self = shift; + my ( $pass, $method ) = @_; - unless($pass=~/^{.*}/){ - if($method eq 'clear') { - #$pass = '{clear}'.$pass; - } - if($method eq 'crypt') { - unless ($pass=~/^{crypt}/){ - $pass = '{crypt}'. crypt($pass, join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]); - } - } - if($method eq 'md5') { - unless ($pass=~/^{md5}/){ - require Digest::MD5; - import Digest::MD5 qw(md5_base64); - $pass = md5_base64($pass); - while((length($pass) % 4)!=0) { $pass .= '='; } - $pass = '{md5}' . $pass; - } + #If password is empty, create a random one. + $pass ||= $self->genPass(); - } - if($method eq 'sha' or $method eq 'sha1') { - unless ($pass=~/^{sha}/){ - require Digest::SHA1; - import Digest::SHA1 qw(sha1_base64); - $pass = sha1_base64($pass); - while((length($pass) % 4)!=0) { $pass .= '='; } - $pass = '{sha}' . $pass; - } - } - } - return $pass; -} + unless ( $pass =~ /^{.*}/ ) { + if ( $method eq 'clear' ) { + #$pass = '{clear}'.$pass; + } + if ( $method eq 'crypt' ) { + unless ( $pass =~ /^{crypt}/ ) { + $pass = '{crypt}' + . crypt( + $pass, + join '', + ( '.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z' ) + [ rand 64, rand 64 ] + ); + } + } + if ( $method eq 'md5' ) { + unless ( $pass =~ /^{md5}/ ) { + require Digest::MD5; + import Digest::MD5 qw(md5_base64); + $pass = md5_base64($pass); + while ( ( length($pass) % 4 ) != 0 ) { $pass .= '='; } + $pass = '{md5}' . $pass; + } + } + if ( $method eq 'sha' or $method eq 'sha1' ) { + unless ( $pass =~ /^{sha}/ ) { + require Digest::SHA1; + import Digest::SHA1 qw(sha1_base64); + $pass = sha1_base64($pass); + while ( ( length($pass) % 4 ) != 0 ) { $pass .= '='; } + $pass = '{sha}' . $pass; + } + } + } + return $pass; +} =item B<refreshSignal> @@ -237,29 +234,27 @@ =cut +sub explodeDN { + my $self = shift; + my $dn = shift; + my @attr; + unless ( ref $self ) { + $dn = $self; + } + if ( $ENV{'HTTP_USER_AGENT'} ) { + @attr = split( /\s*,\s*/, CGI::unescape($dn) ); + } + else { + @attr = split( /\s*,\s*/, $dn ); + } + my $exploded; -sub explodeDN{ - my $self=shift; - my $dn=shift; - my @attr; - unless (ref $self){ - $dn=$self; - } - - if ($ENV{'HTTP_USER_AGENT'}){ - @attr=split(/\s*,\s*/ , CGI::unescape($dn)); - } else { - @attr=split(/\s*,\s*/ , $dn); - } - my $exploded; - - for (@attr){ - my ($var, $val)=split(/\s*=\s*/, $_); - $exploded->{$var}=$val; - } - return $exploded; - + for (@attr) { + my ( $var, $val ) = split( /\s*=\s*/, $_ ); + $exploded->{$var} = $val; + } + return $exploded; =item B<explodeDN> @@ -289,22 +284,19 @@ =cut - } - sub refreshSignal { - my $self=shift; - my $domain=shift; - return unless $ENV{'HTTP_USER_AGENT'}; + my $self = shift; + my $domain = shift; + return unless $ENV{'HTTP_USER_AGENT'}; - return qq| + return qq| <script> top.main_menu.location="$ENV{'SCRIPT_NAME'}?mode=menu&ispmanDomain=$domain"; </script> |; - =item B<reloadSignal> used by ispman.cgi to reload the menu-frame if domain is added or deleted etc. @@ -312,18 +304,12 @@ =cut - - } - - - - sub printHeaders { - my $self=shift; - my $template=$self->getTemplate("headers.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("headers.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); =item B<printHeaders> @@ -333,14 +319,10 @@ } - - - - sub start { - my $self=shift; - my $template=$self->getTemplate("index.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("index.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); =item B<start> @@ -353,24 +335,24 @@ } sub status { - my $self=shift; - my $template=$self->getTemplate("status.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("status.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } sub commitSession { - my $self=shift; - if ($self->{'sessID'}) { - $self->releaseSession($self->{'sessID'}); - } - print "<script>self.location='" , $ENV{'SCRIPT_NAME'} , "?mode=status&newSession=1';</script>"; + my $self = shift; + if ( $self->{'sessID'} ) { + $self->releaseSession( $self->{'sessID'} ); + } + print "<script>self.location='", $ENV{'SCRIPT_NAME'}, + "?mode=status&newSession=1';</script>"; } - sub overview { - my $self=shift; - my $template=$self->getTemplate("overview.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("overview.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); =item B<overview> @@ -382,15 +364,11 @@ } - - - sub menu { - my $self=shift; - my $template=$self->getTemplate("menu.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); - return; - + my $self = shift; + my $template = $self->getTemplate("menu.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); + return; =item B<menu> @@ -403,13 +381,10 @@ } - - sub ispman { - my $self=shift; - my $template=$self->getTemplate("ispman.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); - + my $self = shift; + my $template = $self->getTemplate("ispman.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); =item B<ispman> @@ -421,27 +396,25 @@ } - sub topmenu { - my $self=shift; - my $template=$self->getTemplate("topmenu.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); - - } + my $self = shift; + my $template = $self->getTemplate("topmenu.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); +} sub concatHashRefs { - my $self=shift; - my $listOfHashrefs=shift; - my $concatenatedHashref; - my $key; + my $self = shift; + my $listOfHashrefs = shift; + my $concatenatedHashref; + my $key; - for (@$listOfHashrefs) { - for $key(keys %$_) { - $concatenatedHashref->{$key}=$_->{$key}; - } - } - return $concatenatedHashref; + for (@$listOfHashrefs) { + for $key ( keys %$_ ) { + $concatenatedHashref->{$key} = $_->{$key}; + } + } + return $concatenatedHashref; =item B<concatHashRefs> @@ -458,122 +431,119 @@ } - sub staticHost { - my $self=shift; - unless (ref $self){ - unshift @_, $self; - } - my ($host)=@_; - $host=~s/\.$//g; - return "$host."; + my $self = shift; + unless ( ref $self ) { + unshift @_, $self; + } + my ($host) = @_; + $host =~ s/\.$//g; + return "$host."; } - sub make_fqdn { - my $self=shift; - unless (ref $self){ - unshift @_, $self; - } - my ($host, $domain)=@_; + my $self = shift; + unless ( ref $self ) { + unshift @_, $self; + } + my ( $host, $domain ) = @_; - return $host if $host=~/\.$/; # do nothing. its already static - return $host if $host=~/\*/; #do nothing if its a * - return "$domain." if $host=~/\@/; #return domain name - return "$domain." if $host !~ /\S/; #return domain name if host is blank. - return "$host.$domain."; #cat host.domain. + return $host if $host =~ /\.$/; # do nothing. its already static + return $host if $host =~ /\*/; #do nothing if its a * + return "$domain." if $host =~ /\@/; #return domain name + return "$domain." if $host !~ /\S/; #return domain name if host is blank. + return "$host.$domain."; #cat host.domain. } - - sub as_arrayref { - my $self=shift; - my @list=$self->as_array(@_); - return undef unless scalar @list; - return \@list; + my $self = shift; + my @list = $self->as_array(@_); + return undef unless scalar @list; + return \@list; } sub as_array { - #take a list of arrays, strings, arrayrefs etc and return as an array - my $self=shift; - return undef unless @_; - my @l=(); - for (@_){ - if (ref $_ eq "ARRAY"){ - push @l, @$_; - } else { - # dont add if $_ is undef - push @l, $_ if $_; - } - } - return @l; + #take a list of arrays, strings, arrayrefs etc and return as an array + + my $self = shift; + return undef unless @_; + my @l = (); + for (@_) { + if ( ref $_ eq "ARRAY" ) { + push @l, @$_; + } + else { + + # dont add if $_ is undef + push @l, $_ if $_; + } + } + return @l; } sub as_hashref { - my $self=shift; - my @list=$self->as_array(@_); - return {} unless scalar @list; - my $href={}; - for (@list) { - $href->{$_}++; - } - return $href; + my $self = shift; + my @list = $self->as_array(@_); + return {} unless scalar @list; + my $href = {}; + for (@list) { + $href->{$_}++; + } + return $href; } sub getAttrVal { - my $self=shift; - my $hash=shift; - my $attr=shift; - return (exists $hash->{$attr})?$hash->{$attr}: $hash->{lc($attr)}; - -} - - + my $self = shift; + my $hash = shift; + my $attr = shift; + return ( exists $hash->{$attr} ) ? $hash->{$attr} : $hash->{ lc($attr) }; +} sub hasValue { - my $self=shift; - my $arrayref=shift; - my $val=shift; + my $self = shift; + my $arrayref = shift; + my $val = shift; - my @array=$self->as_array($arrayref); - for (@array) { - return 1 if $_ eq $val; - } - return 0; + my @array = $self->as_array($arrayref); + for (@array) { + return 1 if $_ eq $val; + } + return 0; } - sub isEmpty { - my $self=shift; - my @vals=$self->as_array(@_); - for (@vals) { - return 0 if /\S/; - } - return 1; + my $self = shift; + my @vals = $self->as_array(@_); + for (@vals) { + return 0 if /\S/; + } + return 1; } sub unique { - # return unique elements from a list - my $self=shift; - my %hr; - map {$hr{$_}++}@_; - return keys %hr; + # return unique elements from a list + + my $self = shift; + my %hr; + map { $hr{$_}++ } @_; + return keys %hr; } sub substitute { + # substitute tokens from substmap in scalar - my $self=shift; - my $data=shift; - my $map=shift; + my $self = shift; + my $data = shift; + my $map = shift; - for (keys %$map) { - my $val=$map->{$_}; - $data =~ s/%$_%/$val/g; + for ( keys %$map ) { + my $val = $map->{$_}; + $data =~ s/%$_%/$val/g; } return $data; Index: MessagingMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/MessagingMan.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- MessagingMan.pm 8 Aug 2003 17:02:31 -0000 1.3 +++ MessagingMan.pm 30 May 2004 23:35:37 -0000 1.4 @@ -14,125 +14,129 @@ @ISA = qw(ISPMan Exporter AutoLoader); -push @EXPORT , qw( - notifyUsers - notifyUsersInDomain +push @EXPORT, qw( + notifyUsers + notifyUsersInDomain ); $VERSION = '0.01'; - # $ispman->notifyUsers() is called from users/notify.tmpl web tyemplate # Process the form arguments and call notifyUsersInDomain() if all # parameters are valid. sub notifyUsers { - my $self=shift; - my $r=shift; - - my $ok = 1; - my $err = ''; + my $self = shift; + my $r = shift; - if( $r->param('fromEmail') ) - { - if( $r->param('fromEmail') !~ /^(\w|\.)+\@\w+\.(\w|\.)+\w$/ ) { - $err .= 'Invalid e-mail address. '; - $ok = 0; - } + my $ok = 1; + my $err = ''; - if( $r->param('cc') && - $r->param('cc') !~ /^(\w|\.)+\@\w+\.(\w|\.)+\w$/ ) { - $err .= 'Invalid CC: e-mail address. '; - $ok = 0; - } + if ( $r->param('fromEmail') ) { + if ( $r->param('fromEmail') !~ /^(\w|\.)+\@\w+\.(\w|\.)+\w$/ ) { + $err .= 'Invalid e-mail address. '; + $ok = 0; + } - if( ! $r->param('subject') ) { - $err .= 'Message subject must not be empty. '; - $ok = 0; - } - - if( ! $r->param('body') ) { - $err .= 'Message body must not be empty. '; - $ok = 0; - } - - if( ! $ok ) { - $r->param('ErrorMessage', $err); - } - else { - # All parameters are correct, let's send the message + if ( $r->param('cc') + && $r->param('cc') !~ /^(\w|\.)+\@\w+\.(\w|\.)+\w$/ ) + { + $err .= 'Invalid CC: e-mail address. '; + $ok = 0; + } - if( $r->param("notifyDomain") eq "all" ) { - my $domains = $self->makeDomainHash($self->getDomains()); - foreach my $domain ( keys %$domains ) { - $self->notifyUsersInDomain($r, $domain); - $r->param('cc' => ''); - } - } else { - $self->notifyUsersInDomain($r, $r->param("notifyDomain")); - } + if ( !$r->param('subject') ) { + $err .= 'Message subject must not be empty. '; + $ok = 0; + } - my $template=$self->getTemplate("users/notificationReadyToSend.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); - return; - } - } + if ( !$r->param('body') ) { + $err .= 'Message body must not be empty. '; + $ok = 0; + } - my $template=$self->getTemplate("users/notify.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); -} + if ( !$ok ) { + $r->param( 'ErrorMessage', $err ); + } + else { + # All parameters are correct, let's send the message -# Generates the message header and body in a file and + if ( $r->param("notifyDomain") eq "all" ) { + my $domains = $self->makeDomainHash( $self->getDomains() ); + foreach my $domain ( keys %$domains ) { + $self->notifyUsersInDomain( $r, $domain ); + $r->param( 'cc' => '' ); + } + } + else { + $self->notifyUsersInDomain( $r, $r->param("notifyDomain") ); + } + + my $template = + $self->getTemplate("users/notificationReadyToSend.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); + return; + } + } + + my $template = $self->getTemplate("users/notify.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); +} + +# Generates the message header and body in a file and # creates the agent job 'NotifyUsers' sub notifyUsersInDomain { - my $self=shift; - my $r=shift; - my $domain=shift; + my $self = shift; + my $r = shift; + my $domain = shift; - my $domainInfo = $self->getDomainInfo($domain); + my $domainInfo = $self->getDomainInfo($domain); - my $fromAddr = '"'; - if( ref($r->{'fromName'}) ) { - $fromAddr .= $r->{'fromName'}->[0]; - } elsif( $r->{'fromName'} ) { - $fromAddr .= $r->{'fromName'}; - } else { - $fromAddr .= $r->{'fromEmail'}; - } - $fromAddr .= '" <'; - if( ref($r->{'fromEmail'}) ) { - $fromAddr .= $r->{'fromEmail'}->[0]; - } else { - $fromAddr .= $r->{'fromEmail'}; - } - $fromAddr .= '>'; - - my $msg_dir = $self->getConf("msgSpoolDir"); - $msg_dir ||= '/tmp'; + my $fromAddr = '"'; + if ( ref( $r->{'fromName'} ) ) { + $fromAddr .= $r->{'fromName'}->[0]; + } + elsif ( $r->{'fromName'} ) { + $fromAddr .= $r->{'fromName'}; + } + else { + $fromAddr .= $r->{'fromEmail'}; + } + $fromAddr .= '" <'; + if ( ref( $r->{'fromEmail'} ) ) { + $fromAddr .= $r->{'fromEmail'}->[0]; + } + else { + $fromAddr .= $r->{'fromEmail'}; + } + $fromAddr .= '>'; - my $msgfile = $msg_dir . '/' . - strftime('%Y%m%d%H%M%S', localtime(time())) . - sprintf("_%s_%.4d.mime", $domain, rand(10000)); + my $msg_dir = $self->getConf("msgSpoolDir"); + $msg_dir ||= '/tmp'; - open(MSGOUT, "> $msgfile") or die("Cannot open $msgfile for writing: $!"); - printf MSGOUT ("From: %s\n", $fromAddr); - printf MSGOUT ("Cc: %s\n", $r->param('cc')); - printf MSGOUT ("Subject: %s\n", $r->param('subject')); - printf MSGOUT ("MIME-Version: 1.0\n"); - print MSGOUT ("Content-Type: text/plain; charset=\"UTF-8\"\n"); - print MSGOUT ("Content-Disposition: inline\n"); - print MSGOUT ("Content-Transfer-Encoding: 8bit\n"); - print MSGOUT ("\n"); - print MSGOUT (@{$r->{'body'}}); - print MSGOUT ("\n"); - close(MSGOUT); + my $msgfile = + $msg_dir . '/' + . strftime( '%Y%m%d%H%M%S', localtime( time() ) ) + . sprintf( "_%s_%.4d.mime", $domain, rand(10000) ); - $self->addProcessToHost($domain, - $domainInfo->{'ispmanDomainDefaultMailDropHost'}, - 'NotifyUsers', $msgfile); -} + open( MSGOUT, "> $msgfile" ) or die("Cannot open $msgfile for writing: $!"); + printf MSGOUT ( "From: %s\n", $fromAddr ); + printf MSGOUT ( "Cc: %s\n", $r->param('cc') ); + printf MSGOUT ( "Subject: %s\n", $r->param('subject') ); + printf MSGOUT ("MIME-Version: 1.0\n"); + print MSGOUT ("Content-Type: text/plain; charset=\"UTF-8\"\n"); + print MSGOUT ("Content-Disposition: inline\n"); + print MSGOUT ("Content-Transfer-Encoding: 8bit\n"); + print MSGOUT ("\n"); + print MSGOUT ( @{ $r->{'body'} } ); + print MSGOUT ("\n"); + close(MSGOUT); + $self->addProcessToHost( $domain, + $domainInfo->{'ispmanDomainDefaultMailDropHost'}, + 'NotifyUsers', $msgfile ); +} 1; Index: DNSMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/DNSMan.pm,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- DNSMan.pm 17 Jan 2004 17:05:27 -0000 1.29 +++ DNSMan.pm 30 May 2004 23:35:37 -0000 1.30 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::DNSMan - Wrapper for ISPMan::DNSMan::* @@ -33,266 +34,284 @@ use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $Config); - require Exporter; -use ISPMan::DNSMan::Arecords; +use ISPMan::DNSMan::Arecords; push @EXPORT, @ISPMan::DNSMan::Arecords::EXPORT; -use ISPMan::DNSMan::MXrecords; +use ISPMan::DNSMan::MXrecords; push @EXPORT, @ISPMan::DNSMan::MXrecords::EXPORT; -use ISPMan::DNSMan::SOArecords; +use ISPMan::DNSMan::SOArecords; push @EXPORT, @ISPMan::DNSMan::SOArecords::EXPORT; -use ISPMan::DNSMan::NSrecords; +use ISPMan::DNSMan::NSrecords; push @EXPORT, @ISPMan::DNSMan::NSrecords::EXPORT; -use ISPMan::DNSMan::CNAMES; +use ISPMan::DNSMan::CNAMES; push @EXPORT, @ISPMan::DNSMan::CNAMES::EXPORT; -use ISPMan::DNSMan::LDIFUtils; +use ISPMan::DNSMan::LDIFUtils; push @EXPORT, @ISPMan::DNSMan::LDIFUtils::EXPORT; - - @ISA = qw(Exporter AutoLoader); -push @EXPORT, qw( -getRevIPs -newDNSRecord +push @EXPORT, qw( + getRevIPs + newDNSRecord -getARecordDn -getARecordBranchDn + getARecordDn + getARecordBranchDn -deleteDNSRecord + deleteDNSRecord -addVhostDNSRecord -deleteVhostDNSRecord + addVhostDNSRecord + deleteVhostDNSRecord -getcNAMERecordDn -getcNAMERecordBranchDn + getcNAMERecordDn + getcNAMERecordBranchDn -getmXRecordDn -getmXRecordBranchDn + getmXRecordDn + getmXRecordBranchDn -getnSRecordDn -getnSRecordBranchDn + getnSRecordDn + getnSRecordBranchDn -getsOARecordDn -getDNSDN + getsOARecordDn + getDNSDN ); $VERSION = '0.01'; - sub getDNSDN { - my $self=shift; - my $domain=shift; - my $dcObject=$self->getDomainAsDCObject($domain); - my $dnsdn=join (",", $dcObject, "ou=DNS", $self->getConf('ldapBaseDN')); - return $dnsdn; + my $self = shift; + my $domain = shift; + my $dcObject = $self->getDomainAsDCObject($domain); + my $dnsdn = join( ",", $dcObject, "ou=DNS", $self->getConf('ldapBaseDN') ); + return $dnsdn; } - -sub getsOARecordDn{ - my $self=shift; - my $domain=shift; - return "ou=sOARecord," . $self->getDNSDN($domain); +sub getsOARecordDn { + my $self = shift; + my $domain = shift; + return "ou=sOARecord," . $self->getDNSDN($domain); } - -sub getmXRecordDn{ - my $self=shift; - my ($domain, $origion, $pref, $host)=@_; - return join ",", ("relativeDomainName=$origion", $self->getmXRecordBranchDn($domain, $pref, $host)); +sub getmXRecordDn { + my $self = shift; + my ( $domain, $origion, $pref, $host ) = @_; + return join ",", + ( + "relativeDomainName=$origion", + $self->getmXRecordBranchDn( $domain, $pref, $host ) + ); } -sub getmXRecordBranchDn{ - my $self=shift; - my ($domain, $pref, $host)=@_; - return join ",", ("mXRecord=$pref $host, ou=mXRecord" , $self->getDNSDN($domain)); +sub getmXRecordBranchDn { + my $self = shift; + my ( $domain, $pref, $host ) = @_; + return join ",", + ( "mXRecord=$pref $host, ou=mXRecord", $self->getDNSDN($domain) ); } -sub getcNAMERecordDn{ - my $self=shift; - my ($domain, $host, $alias)=@_; - return join ",", ("relativeDomainName=$alias", $self->getcNAMERecordBranchDn($domain, $host)); +sub getcNAMERecordDn { + my $self = shift; + my ( $domain, $host, $alias ) = @_; + return join ",", + ( + "relativeDomainName=$alias", + $self->getcNAMERecordBranchDn( $domain, $host ) + ); } -sub getcNAMERecordBranchDn{ - my $self=shift; - my ($domain, $host)=@_; - return join ",", ("cNAMERecord=$host, ou=cNAMERecord" , $self->getDNSDN($domain)); +sub getcNAMERecordBranchDn { + my $self = shift; + my ( $domain, $host ) = @_; + return join ",", + ( "cNAMERecord=$host, ou=cNAMERecord", $self->getDNSDN($domain) ); } - sub getARecordDn { - my $self=shift; - my ($domain, $host, $ip)=@_; - return join ",", ("relativeDomainName=$host", $self->getARecordBranchDn($domain, $ip)); + my $self = shift; + my ( $domain, $host, $ip ) = @_; + return join ",", + ( "relativeDomainName=$host", $self->getARecordBranchDn( $domain, $ip ) ); } sub getARecordBranchDn { - my $self=shift; - my ($domain,$ip)=@_; - return join ",", ("aRecord=$ip, ou=aRecord" , $self->getDNSDN($domain)); + my $self = shift; + my ( $domain, $ip ) = @_; + return join ",", ( "aRecord=$ip, ou=aRecord", $self->getDNSDN($domain) ); } sub getnSRecordDn { - my $self=shift; - my ($domain, $origion, $host)=@_; - return join ",", ("relativeDomainName=$origion", $self->getnSRecordBranchDn($domain, $host)); + my $self = shift; + my ( $domain, $origion, $host ) = @_; + return join ",", + ( + "relativeDomainName=$origion", + $self->getnSRecordBranchDn( $domain, $host ) + ); } - sub getnSRecordBranchDn { - my $self=shift; - my ($domain, $host)=@_; - return join ",", ("nsRecord=$host, ou=nsRecord" , $self->getDNSDN($domain)); + my $self = shift; + my ( $domain, $host ) = @_; + return join ",", + ( "nsRecord=$host, ou=nsRecord", $self->getDNSDN($domain) ); } sub newDNSRecord { - my $self=shift; - my ($domain, $recordType, $relativeDomainName, $record, $extraHash)=@_; - return unless $relativeDomainName=~ /\S/; - return unless $record=~ /\S/; + my $self = shift; + my ( $domain, $recordType, $relativeDomainName, $record, $extraHash ) = @_; + return unless $relativeDomainName =~ /\S/; + return unless $record =~ /\S/; - my $data={}; - $data=$extraHash; + my $data = {}; + $data = $extraHash; - my $branch= join ",", ("$recordType=$record", "ou=$recordType" , $self->getDNSDN($domain)); - my $dn=join ",", ("relativeDomainName=$relativeDomainName", $branch); - $data->{'objectClass'} = "dnsZone"; - $data->{$recordType} = $record, - $data->{'zoneName'} = $domain; - $data->{'relativeDomainName'} = $relativeDomainName; + my $branch = join ",", + ( "$recordType=$record", "ou=$recordType", $self->getDNSDN($domain) ); + my $dn = join ",", ( "relativeDomainName=$relativeDomainName", $branch ); + $data->{'objectClass'} = "dnsZone"; + $data->{$recordType} = $record, $data->{'zoneName'} = $domain; + $data->{'relativeDomainName'} = $relativeDomainName; - $self->prepareBranchForDN($branch); - if ($self->entryExists($dn)) { - return; - # we should not reach here. - # I dont know why I added this code, but it was surely some work around, - # removing temporarily - # $extraHash->{$recordType}=$record; - # $self->addData2Entry($dn, {"$recordType" => $record}); - } else { - $self->addNewEntryWithData($dn, $data); - } - $self->touchSOA($domain) unless $recordType eq "sOARecord"; # dont change SOA record, if we are actually changing SOA - $self->modifyDnsProcess($domain); + $self->prepareBranchForDN($branch); + if ( $self->entryExists($dn) ) { + return; + + # we should not reach here. + # I dont know why I added this code, but it was surely some work around, + # removing temporarily + # $extraHash->{$recordType}=$record; + # $self->addData2Entry($dn, {"$recordType" => $record}); + } + else { + $self->addNewEntryWithData( $dn, $data ); + } + $self->touchSOA($domain) + unless $recordType eq + "sOARecord"; # dont change SOA record, if we are actually changing SOA + $self->modifyDnsProcess($domain); } sub deleteDNSRecord { - my $self=shift; - my ($domain, $recordType, $relativeDomainName, $record, $extraHash)=@_; + my $self = shift; + my ( $domain, $recordType, $relativeDomainName, $record, $extraHash ) = @_; - return unless $relativeDomainName=~ /\S/; - return unless $record=~ /\S/; + return unless $relativeDomainName =~ /\S/; + return unless $record =~ /\S/; - my $data={}; - $data=$extraHash; + my $data = {}; + $data = $extraHash; - my $branch= join ", ", ("$recordType=$record", "ou=$recordType" , $self->getDNSDN($domain)); - my $dn=join ",", ("relativeDomainName=$relativeDomainName", $branch); - if ($self->entryExists($dn)) { - $self->deleteEntry($dn); - # Lets see if the branch exists and has only one entry. Itself - if ($self->entryExists($branch) == 1){ - #only one entry. so just an empty branch - #lets cleanup the junk - $self->deleteEntry($branch); - }; - } else { - return; - } - $self->touchSOA($domain) unless $recordType eq "sOARecord"; # dont change SOA record, if we are actually changing SOA - $self->modifyDnsProcess($domain); -} + my $branch = join ", ", + ( "$recordType=$record", "ou=$recordType", $self->getDNSDN($domain) ); + my $dn = join ",", ( "relativeDomainName=$relativeDomainName", $branch ); + if ( $self->entryExists($dn) ) { + $self->deleteEntry($dn); + # Lets see if the branch exists and has only one entry. Itself + if ( $self->entryExists($branch) == 1 ) { + #only one entry. so just an empty branch + #lets cleanup the junk + $self->deleteEntry($branch); + } + } + else { + return; + } + $self->touchSOA($domain) + unless $recordType eq + "sOARecord"; # dont change SOA record, if we are actually changing SOA + $self->modifyDnsProcess($domain); +} sub addVhostDNSRecord { - my $self=shift; - # Create an A record with just a small differnce - # set TXTRecord to ispmanVirtualHost:vhost.domain - # This tells us that the record was created when creating a vhost - # It should be deleted when deleting the vhost - my ($domain, $vhost, $ip)=@_; - my $branch=join ",", ("ou=aRecord", $self->getDNSDN($domain)); - my $entry=$self->getEntry($branch, "relativeDomainname=$vhost", [], "sub"); - if (! defined $entry or $entry->get_value('tXTRecord')=~m/ispmanVirtualHost/) { - $self->newDNSRecord($domain, "aRecord", $vhost, $ip, {'tXTRecord' => "ispmanVirtualHost:$vhost.$domain"} ); - } + my $self = shift; + + # Create an A record with just a small differnce + # set TXTRecord to ispmanVirtualHost:vhost.domain + # This tells us that the record was created when creating a vhost + # It should be deleted when deleting the vhost + my ( $domain, $vhost, $ip ) = @_; + my $branch = join ",", ( "ou=aRecord", $self->getDNSDN($domain) ); + my $entry = + $self->getEntry( $branch, "relativeDomainname=$vhost", [], "sub" ); + if ( !defined $entry + or $entry->get_value('tXTRecord') =~ m/ispmanVirtualHost/ ) + { + $self->newDNSRecord( $domain, "aRecord", $vhost, $ip, + { 'tXTRecord' => "ispmanVirtualHost:$vhost.$domain" } ); + } } sub deleteVhostDNSRecord { - my $self=shift; - - # given the domain and vhost name - # lookup entry where - # TXTRecord is ispmanVirtualHost:vhost.domain - # Now delete the record if the vhost is being deleted - my ($domain, $vhost)=@_; - my $branch=$self->getDNSDN($domain); - #print "Searching on $branch\n"; - #print "Looking for ispmanVirtualHost:$vhost.$domain\n"; + my $self = shift; - my @entries=$self->getEntries($branch, "txtRecord=ispmanVirtualHost:$vhost.$domain", [], 'sub'); - for (@entries) { - $self->deleteEntry($_->dn); - } + # given the domain and vhost name + # lookup entry where + # TXTRecord is ispmanVirtualHost:vhost.domain + # Now delete the record if the vhost is being deleted + my ( $domain, $vhost ) = @_; + my $branch = $self->getDNSDN($domain); - return $#entries; -} + #print "Searching on $branch\n"; + #print "Looking for ispmanVirtualHost:$vhost.$domain\n"; + my @entries = + $self->getEntries( $branch, "txtRecord=ispmanVirtualHost:$vhost.$domain", + [], 'sub' ); + for (@entries) { + $self->deleteEntry( $_->dn ); + } + return $#entries; +} #forget GlobalDNSVars for now. Will fix it when everything is working with the schema sub manageGlobalDNSVars { - my $self=shift; - my $template=$self->getTemplate("manageGlobalDNSVars.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("manageGlobalDNSVars.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - - #forget GlobalDNSVars for now. Will fix it when everything is working with the schema sub updateGlobalDNSVars { - my $self=shift; - return unless $self->requiredAdminLevel(100); - - my $r=shift; - my $data={}; - for (qw(mxrecord arecord nsrecord cname)) { - push @{$data->{$_}}, $r->param($_); - } - $self->updateEntryWithData("cn=globaldnsvars, ou=conf, @{[$self->getConf('ldapBaseDN')]}", $data); - $self->manageGlobalDNSVars; -} + my $self = shift; + return unless $self->requiredAdminLevel(100); + my $r = shift; + my $data = {}; + for (qw(mxrecord arecord nsrecord cname)) { + push @{ $data->{$_} }, $r->param($_); + } + $self->updateEntryWithData( + "cn=globaldnsvars, ou=conf, @{[$self->getConf('ldapBaseDN')]}", $data ); + $self->manageGlobalDNSVars; +} sub getRevIPs { - my $self=shift; - my $rev; + my $self = shift; + my $rev; - my $ips=$self->getEntriesAsHashRef($self->getConf("ldapBaseDN"), '&(pTRRecord=*)(objectclass=dnsZone)', ["zoneName", "relativeDomainName", "pTRRecord"]); - for (keys %$ips){ - my $ip=$ips->{$_}{"pTRRecord"}; - my $host=$ips->{$_}{"relativeDomainName"}; - my $domain=$ips->{$_}{"zoneName"}; + my $ips = $self->getEntriesAsHashRef( + $self->getConf("ldapBaseDN"), + '&(pTRRecord=*)(objectclass=dnsZone)', + [ "zoneName", "relativeDomainName", "pTRRecord" ] + ); + for ( keys %$ips ) { + my $ip = $ips->{$_}{"pTRRecord"}; + my $host = $ips->{$_}{"relativeDomainName"}; + my $domain = $ips->{$_}{"zoneName"}; - $rev->{$ip}=$self->make_fqdn($host, $domain); - } - return $rev; + $rev->{$ip} = $self->make_fqdn( $host, $domain ); + } + return $rev; } - - - - - - 1; __END__ Index: ClientMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/ClientMan.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- ClientMan.pm 14 May 2003 10:31:34 -0000 1.5 +++ ClientMan.pm 30 May 2004 23:35:37 -0000 1.6 @@ -2,333 +2,343 @@ use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $ispman); require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - formAddClient - addClient - AddClient - showClients - editClient - getNewClientId - getClients - getClientsCount - getClientById - getClientNameById - getClientDnById - ModifyClient - SuspendClient - ReactivateClient - DeleteClient - getClientAttributes - getClientAttributeById - getDomainCountForClient + formAddClient + addClient + AddClient + showClients + editClient + getNewClientId + getClients + getClientsCount + getClientById + getClientNameById + getClientDnById + ModifyClient + SuspendClient + ReactivateClient + DeleteClient + getClientAttributes + getClientAttributeById + getDomainCountForClient - ispmanDeleteClients - ispmanSuspendClients - ispmanReactivateClients + ispmanDeleteClients + ispmanSuspendClients + ispmanReactivateClients -changeClientPassword + changeClientPassword ); sub getClientAttributes { - #return list of modifyable attributes for a reseller - my $self=shift; - return qw ( - uid - cn - userPassword - ispmanStatus - ispmanClientName - sn - givenName - street - postalCode - l - c - telephoneNumber - facsimileTelephoneNumber - ispmanDomainDefaultWebHost - ispmanDomainDefaultFileServer - ispmanDomainDefaultMailDropHost - ispmanClientMaxDomains - dnsHost - smtpHost - ); -} + #return list of modifyable attributes for a reseller + my $self = shift; + return qw ( + uid + cn + userPassword + ispmanStatus + ispmanClientName + sn + givenName + street + postalCode + l + c + telephoneNumber + facsimileTelephoneNumber + ispmanDomainDefaultWebHost + ispmanDomainDefaultFileServer + ispmanDomainDefaultMailDropHost + ispmanClientMaxDomains + dnsHost + smtpHost + ); +} sub getNewClientId { - my $self=shift; - my $entry=$self->getEntry("cn=clientcounter, ou=counters, $self->{'Config'}{'ldapBaseDN'}"); - my $currid=$entry->get_value("currid"); - $self->updateEntryWithData("cn=clientcounter, ou=counters, $self->{'Config'}{'ldapBaseDN'}", {"currid" => ++$currid}); - return $currid; + my $self = shift; + my $entry = + $self->getEntry( + "cn=clientcounter, ou=counters, $self->{'Config'}{'ldapBaseDN'}"); + my $currid = $entry->get_value("currid"); + $self->updateEntryWithData( + "cn=clientcounter, ou=counters, $self->{'Config'}{'ldapBaseDN'}", + { "currid" => ++$currid } ); + return $currid; } - sub getClientNameById { - my $self=shift; - my $id=shift; - $self->getClientById($id); - return $self->{'client'}{'ispmanClientName'}; + my $self = shift; + my $id = shift; + $self->getClientById($id); + return $self->{'client'}{'ispmanClientName'}; } sub getClientAttributeById { - my $self=shift; - my ($id, $attr) = @_; - $self->getClientById($id); - return $self->{'client'}{$attr}; + my $self = shift; + my ( $id, $attr ) = @_; + $self->getClientById($id); + return $self->{'client'}{$attr}; } - sub getClientDnById { - my $self=shift; - my $id=shift; - $self->getClientById($id); - return "ispmanClientId=$id, ispmanResellerId=$self->{'client'}{'ispmanResellerId'}, ou=ispman, $self->{'Config'}{'ldapBaseDN'}"; + my $self = shift; + my $id = shift; + $self->getClientById($id); + return +"ispmanClientId=$id, ispmanResellerId=$self->{'client'}{'ispmanResellerId'}, ou=ispman, $self->{'Config'}{'ldapBaseDN'}"; } sub formAddClient { - my $self=shift; - my $template=$self->getTemplate("clients/add_edit.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $template = $self->getTemplate("clients/add_edit.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - sub addClient { - my $self=shift; - + my $self = shift; - - my $r=shift; - - - if ($self->{'session'}) { - return unless ($self->{'session'}->param("logintype") eq "reseller" or $self->{'session'}->param("logintype") eq "admin"); - if ($self->{'session'}->param("logintype") eq "reseller") { - $r->param("ispmanResellerId", $self->{'session'}->param("ispmanResellerId")); - } - } - - my $ispmanResellerInfo=$self->getResellerById($r->param("ispmanResellerId")); - my $ispmanResellerMaxClientLimit=$ispmanResellerInfo->{'ispmanResellerMaxClients'}; - my $ispmanResellerClients=$self->getClientsCount(sprintf("ispmanResellerId=%s" , $r->param("ispmanResellerId"))); + my $r = shift; - unless ($ispmanResellerClients < $ispmanResellerMaxClientLimit) { - $self->{'message'}="Max client Limit reached or exceeded"; - return; - } - + if ( $self->{'session'} ) { + return + unless ( $self->{'session'}->param("logintype") eq "reseller" + or $self->{'session'}->param("logintype") eq "admin" ); + if ( $self->{'session'}->param("logintype") eq "reseller" ) { + $r->param( "ispmanResellerId", + $self->{'session'}->param("ispmanResellerId") ); + } + } - my $id=$self->getNewClientId(); + my $ispmanResellerInfo = + $self->getResellerById( $r->param("ispmanResellerId") ); + my $ispmanResellerMaxClientLimit = + $ispmanResellerInfo->{'ispmanResellerMaxClients'}; + my $ispmanResellerClients = + $self->getClientsCount( + sprintf( "ispmanResellerId=%s", $r->param("ispmanResellerId") ) ); + unless ( $ispmanResellerClients < $ispmanResellerMaxClientLimit ) { + $self->{'message'} = "Max client Limit reached or exceeded"; + return; + } - $r->param("ispmanClientId", $id); - - - - $r->param("ispmanResellerName", $self->getResellerNameById($r->param("ispmanResellerId"))); - $r->param("userPassword", $self->encryptPassWithMethod($r->param("userPassword"),$self->getConf('userPassHashMethod'))); - - $self->addDataFromLdif('templates/client.ldif.template', $r); - $self->{'message'}="Client Added: ID $id"; + my $id = $self->getNewClientId(); -} + $r->param( "ispmanClientId", $id ); + + $r->param( "ispmanResellerName", + $self->getResellerNameById( $r->param("ispmanResellerId") ) ); + $r->param( + "userPassword", + $self->encryptPassWithMethod( + $r->param("userPassword"), + $self->getConf('userPassHashMethod') + ) + ); + $self->addDataFromLdif( 'templates/client.ldif.template', $r ); + $self->{'message'} = "Client Added: ID $id"; -sub AddClient { - my $self=shift; - my $r=shift; - $self->addClient($r); - $self->showClients($r); } +sub AddClient { + my $self = shift; + my $r = shift; + $self->addClient($r); + $self->showClients($r); +} sub getClients { - my $self=shift; - - undef $self->{'filter'}; - $self->{'filter'}=shift; + my $self = shift; + undef $self->{'filter'}; + $self->{'filter'} = shift; + $self->{'searchFilter'} = "&(objectclass=ispmanClient)"; - $self->{'searchFilter'}="&(objectclass=ispmanClient)"; - - if ($self->{'session'}) { - if ($self->{'session'}->param("logintype") eq "reseller") { - $self->{'searchFilter'}=sprintf("&(objectclass=ispmanClient)(ispmanResellerId=%s)", $self->{'session'}->param("ispmanResellerId")); - } elsif ($self->{'session'}->param("logintype") eq "client") { - $self->{'searchFilter'}=sprintf("&(objectclass=ispmanClient)(ispmanClientId=%s)", $self->{'session'}->param("ispmanClientId")); - } - } - - $self->{'searchFilter'}.="($self->{'filter'})" if ($self->{'filter'}); + if ( $self->{'session'} ) { + if ( $self->{'session'}->param("logintype") eq "reseller" ) { + $self->{'searchFilter'} = + sprintf( "&(objectclass=ispmanClient)(ispmanResellerId=%s)", + $self->{'session'}->param("ispmanResellerId") ); + } + elsif ( $self->{'session'}->param("logintype") eq "client" ) { + $self->{'searchFilter'} = + sprintf( "&(objectclass=ispmanClient)(ispmanClientId=%s)", + $self->{'session'}->param("ispmanClientId") ); + } + } - + $self->{'searchFilter'} .= "($self->{'filter'})" if ( $self->{'filter'} ); - $self->{'clients'}=$self->getEntriesAsHashRef($self->{'Config'}{'ldapBaseDN'}, $self->{'searchFilter'}); - return $self->{'clients'}; + $self->{'clients'} = + $self->getEntriesAsHashRef( $self->{'Config'}{'ldapBaseDN'}, + $self->{'searchFilter'} ); + return $self->{'clients'}; } - - sub getClientById { - my $self=shift; - my $id=shift; + my $self = shift; + my $id = shift; - $self->{'client'}=$self->getEntryAsHashRef($self->{'Config'}{'ldapBaseDN'}, "&(ispmanClientId=$id)(objectclass=ispmanClient)", [], "sub"); - return $self->{'client'}; + $self->{'client'} = $self->getEntryAsHashRef( + $self->{'Config'}{'ldapBaseDN'}, + "&(ispmanClientId=$id)(objectclass=ispmanClient)", + [], "sub" + ); + return $self->{'client'}; } - sub showClients { - my $self=shift; - my $r=shift; - my $id=(defined $r->param("ispmanResellerId"))?$r->param("ispmanResellerId"):""; - $self->getClients($id); - my $template=$self->getTemplate("clients/list.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $r = shift; + my $id = + ( defined $r->param("ispmanResellerId") ) + ? $r->param("ispmanResellerId") + : ""; + $self->getClients($id); + my $template = $self->getTemplate("clients/list.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - - - sub editClient { - my $self=shift; - my $r=shift; - print "Getting info about ", $r->param('ispmanClientId') ; - $self->getClientById($r->param('ispmanClientId')); - my $template=$self->getTemplate("clients/add_edit.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $r = shift; + print "Getting info about ", $r->param('ispmanClientId'); + $self->getClientById( $r->param('ispmanClientId') ); + my $template = $self->getTemplate("clients/add_edit.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - sub formSuspendOrDeleteClients { - my $self=shift; - my $r=shift; - my $template=$self->getTemplate("clients/suspend_or_delete.tmpl"); - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $r = shift; + my $template = $self->getTemplate("clients/suspend_or_delete.tmpl"); + print $template->fill_in( PACKAGE => "ISPMan" ); } - sub SuspendClient { - my $self=shift; - my $id=shift; - $self->updateEntryWithData($self->getClientDnById($id), {"ispmanStatus" => "suspend"}); + my $self = shift; + my $id = shift; + $self->updateEntryWithData( $self->getClientDnById($id), + { "ispmanStatus" => "suspend" } ); } - sub ReactivateClient { - my $self=shift; - my $id=shift; - $self->updateEntryWithData($self->getClientDnById($id), {"ispmanStatus" => "active"}); + my $self = shift; + my $id = shift; + $self->updateEntryWithData( $self->getClientDnById($id), + { "ispmanStatus" => "active" } ); } sub DeleteClient { - my $self=shift; - my $id=shift; - $self->delTree($self->getClientDnById($id)); + my $self = shift; + my $id = shift; + $self->delTree( $self->getClientDnById($id) ); } sub ModifyClient { - my $self=shift; - my $r=shift; + my $self = shift; + my $r = shift; - my @ClientAttributes=$self->getClientAttributes(); - my $data; - for (@ClientAttributes) { - if ($r->param($_)) { - $data->{$_}=$self->as_arrayref($r->param($_)); - } - } - - #just in case Reseller's face name is changed. Change it also for the client - $data->{"ispmanResellerName"} = $self->getResellerNameById($r->param("ispmanResellerId")) if $r->param("ispmanResellerId"); - $data->{'userPassword'}=$self->encryptPassWithMethod($r->param("userPassword"),$self->getConf('userPassHashMethod')); - $self->updateEntryWithData($self->getClientDnById($r->param("ispmanClientId")), $data); - $r->param("mode", "showClients"); - $self->showClients($r); -} + my @ClientAttributes = $self->getClientAttributes(); + my $data; + for (@ClientAttributes) { + if ( $r->param($_) ) { + $data->{$_} = $self->as_arrayref( $r->param($_) ); + } + } + #just in case Reseller's face name is changed. Change it also for the client + $data->{"ispmanResellerName"} = + $self->getResellerNameById( $r->param("ispmanResellerId") ) + if $r->param("ispmanResellerId"); + $data->{'userPassword'} = + $self->encryptPassWithMethod( $r->param("userPassword"), + $self->getConf('userPassHashMethod') ); + $self->updateEntryWithData( + $self->getClientDnById( $r->param("ispmanClientId") ), $data ); + $r->param( "mode", "showClients" ); + $self->showClients($r); +} +sub getClientsCount { + my $self = shift; + undef $self->{'filter'}; + $self->{'filter'} = shift; + $self->{'searchFilter'} = "&(objectclass=ispmanClient)"; + $self->{'searchFilter'} .= "($self->{'filter'})" if ( $self->{'filter'} ); -sub getClientsCount { - my $self=shift; - - undef $self->{'filter'}; - $self->{'filter'}=shift; - - $self->{'searchFilter'}="&(objectclass=ispmanClient)"; - $self->{'searchFilter'}.="($self->{'filter'})" if ($self->{'filter'}); - - return $self->getCount( - $self->{'Config'}->{'ldapBaseDN'}, - "$self->{'searchFilter'}", - ); + return $self->getCount( $self->{'Config'}->{'ldapBaseDN'}, + "$self->{'searchFilter'}", ); } + sub getDomainCountForClient { - my $self=shift; - my $clientId=shift; - return $self->getDomainsCount("ispmanClientId=$clientId"); + my $self = shift; + my $clientId = shift; + return $self->getDomainsCount("ispmanClientId=$clientId"); } - sub ispmanSuspendClients { - my $self=shift; - my $r=shift; + my $self = shift; + my $r = shift; - my @ids=$self->as_array($r->param("ispmanClientId")); - for (@ids){ - $self->SuspendClient($_); - }; - $r->param("mode", "showClients"); - $self->showClients($r); + my @ids = $self->as_array( $r->param("ispmanClientId") ); + for (@ids) { + $self->SuspendClient($_); + } + $r->param( "mode", "showClients" ); + $self->showClients($r); } sub ispmanReactivateClients { - my $self=shift; - my $r=shift; + my $self = shift; + my $r = shift; - my @ids=$self->as_array($r->param("ispmanClientId")); - for (@ids){ - $self->ReactivateClient($_); - }; - $r->param("mode", "showClients"); - $self->showClients($r); + my @ids = $self->as_array( $r->param("ispmanClientId") ); + for (@ids) { + $self->ReactivateClient($_); + } + $r->param( "mode", "showClients" ); + $self->showClients($r); } sub ispmanDeleteClients { - my $self=shift; - my $r=shift; + my $self = shift; + my $r = shift; - my @ids=$self->as_array($r->param("ispmanClientId")); - for (@ids){ - $self->DeleteClient($_); - }; - $r->param("mode", "showClients"); - $self->showClients($r); + my @ids = $self->as_array( $r->param("ispmanClientId") ); + for (@ids) { + $self->DeleteClient($_); + } + $r->param( "mode", "showClients" ); + $self->showClients($r); } sub changeClientPassword { - my $self=shift; - my ($cid, $pass)=@_; - my $dn=$self->getClientDnById($cid); - my $data={}; - $data->{'userPassword'}=$self->encryptPassWithMethod($pass,$self->getConf('userPassHashMethod')); - return $self->updateEntryWithData($dn, $data); + my $self = shift; + my ( $cid, $pass ) = @_; + my $dn = $self->getClientDnById($cid); + my $data = {}; + $data->{'userPassword'} = + $self->encryptPassWithMethod( $pass, + $self->getConf('userPassHashMethod') ); + return $self->updateEntryWithData( $dn, $data ); } - Index: IMAP.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/IMAP.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- IMAP.pm 20 May 2003 19:22:54 -0000 1.5 +++ IMAP.pm 30 May 2004 23:35:37 -0000 1.6 @@ -2,131 +2,131 @@ use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $IMAP $Config); - - require Exporter; --dfGzR35o/[email protected] = qw(Exporter AutoLoader); [email protected] = qw(); +-dfGzR35o/[email protected] = qw(Exporter AutoLoader); [email protected] = qw(); $VERSION = '0.01'; use ISPMan::Config; use ISPMan::Log; - - sub new { - my $proto = shift; - my $class = ref($proto) || $proto; - my $self; - $self->{'Config'}=ISPMan::Config->new(); - return bless $self, $class; + my $proto = shift; + my $class = ref($proto) || $proto; + my $self; + $self->{'Config'} = ISPMan::Config->new(); + return bless $self, $class; } +sub connect { + my $self = shift; + my $server = shift; + unless ($server) { + log_event("No server passed to Connect. Returning nothing"); + return; + } -sub connect{ - my $self=shift; - my $server=shift; - - - unless ($server){ - log_event("No server passed to Connect. Returning nothing"); - return; - } + if ( !$self->{'imap_connections'}{$server} ) { + log_event("connecting to IMAP $server"); + if ( !$self->{'imapModuleLoaded'} ) { + require IMAP::Admin; + $self->{'imapModuleLoaded'}++; + } - if (! $self->{'imap_connections'}{$server}){ - log_event("connecting to IMAP $server"); - if (! $self->{'imapModuleLoaded'}){ - require IMAP::Admin; - $self->{'imapModuleLoaded'}++; - } + $self->{'imap_connections'}{$server} = IMAP::Admin->new( + 'Server' => $server, + 'Port' => $self->{'Config'}{'imapPort'} || 143, + 'Login' => $self->{'Config'}{'imapAdminUsername'}, + 'Password' => $self->{'Config'}{'imapAdminPass'}, + ); + } - $self->{'imap_connections'}{$server}=IMAP::Admin->new( - 'Server' => $server, - 'Port' => $self->{'Config'}{'imapPort'} || 143, - 'Login' => $self->{'Config'}{'imapAdminUsername'}, - 'Password' => $self->{'Config'}{'imapAdminPass'}, - ); - }; - - $self->{'imap_connections'}{"_current_server_"}=$self->{'imap_connections'}{$server}; - return $self->{'imap_connections'}{$server}; + $self->{'imap_connections'}{"_current_server_"} = + $self->{'imap_connections'}{$server}; + return $self->{'imap_connections'}{$server}; } - - sub close { - my $self=shift; - my $server=shift; - $self->{'imap_connections'}{$server}->close(); - delete $self->{'imap_connections'}{$server}; - return 1; + my $self = shift; + my $server = shift; + $self->{'imap_connections'}{$server}->close(); + delete $self->{'imap_connections'}{$server}; + return 1; } +sub try { + my $self = shift; + my $err = shift; + if ( $err != 0 ) { + print $self->{'imap_connections'}{"_current_server_"}->{'Error'}, "\n"; + } + else { + return 1; + } +} -sub try{ - my $self=shift; - my $err=shift; - if ($err != 0) { - print $self->{'imap_connections'}{"_current_server_"}->{'Error'} , "\n"; - } else { - return 1; - } -} +sub delete { + my $self = shift; + my $mailbox = shift; + my $server = shift; + my $imap = $self->connect($server); -sub delete { - my $self=shift; - my $mailbox=shift; - my $server=shift; - - my $imap=$self->connect($server); - # Dont force prefix. - #$mailbox=($mailbox=~/^user\./)?$mailbox:"user.$mailbox"; - log_event("Trying to remove $mailbox from $server as $self->{'Config'}{'imapAdminUsername'}"); - if ($self->try($imap->set_acl($mailbox, $self->{'Config'}{'imapAdminUsername'}, "lrswipcda") )){ - if ($self->try($imap->delete($mailbox))) { - log_event(" $mailbox deleted from $server "); - return 1; - } - } - return 0; + # Dont force prefix. + #$mailbox=($mailbox=~/^user\./)?$mailbox:"user.$mailbox"; + log_event( +"Trying to remove $mailbox from $server as $self->{'Config'}{'imapAdminUsername'}" + ); + if ( + $self->try( + $imap->set_acl( + $mailbox, $self->{'Config'}{'imapAdminUsername'}, + "lrswipcda" + ) + ) + ) + { + if ( $self->try( $imap->delete($mailbox) ) ) { + log_event(" $mailbox deleted from $server "); + return 1; + } + } + return 0; } - sub add { - my $self=shift; - my $mailbox=shift; - my $server=shift; - my $imap=$self->connect($server); - # Dont force prefix. - #$mailbox=($mailbox=~/^user\./)?$mailbox:"user.$mailbox"; - log_event("Trying to add $mailbox to $server "); + my $self = shift; + my $mailbox = shift; + my $server = shift; + my $imap = $self->connect($server); - if ($self->try($imap->create($mailbox))){ - log_event(" $mailbox added to $server "); - return 1; - } - return 0; -} + # Dont force prefix. + #$mailbox=($mailbox=~/^user\./)?$mailbox:"user.$mailbox"; + log_event("Trying to add $mailbox to $server "); -sub set_quota { - my $self=shift; - my ($mailbox, $quota, $server)=@_; - my $imap=$self->connect($server); - # Dont force prefix. - #$mailbox=($mailbox=~/^user\./)?$mailbox:"user.$mailbox"; - log_event("Trying to set quota on $mailbox to $server "); - if ($self->try($imap->set_quota($mailbox, $quota))){ - log_event(" quota set on $mailbox @ $server "); - return 1; - } - return 0; + if ( $self->try( $imap->create($mailbox) ) ) { + log_event(" $mailbox added to $server "); + return 1; + } + return 0; } +sub set_quota { + my $self = shift; + my ( $mailbox, $quota, $server ) = @_; + my $imap = $self->connect($server); - + # Dont force prefix. + #$mailbox=($mailbox=~/^user\./)?$mailbox:"user.$mailbox"; + log_event("Trying to set quota on $mailbox to $server "); + if ( $self->try( $imap->set_quota( $mailbox, $quota ) ) ) { + log_event(" quota set on $mailbox @ $server "); + return 1; + } + return 0; +} # Preloaded methods go here. Index: DomainMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/DomainMan.pm,v retrieving revision 1.66 retrieving revision 1.67 diff -u -d -r1.66 -r1.67 --- DomainMan.pm 24 May 2004 20:14:30 -0000 1.66 +++ DomainMan.pm 30 May 2004 23:35:37 -0000 1.67 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::DomainMan - Takes care of domain creation/modification @@ -32,255 +33,285 @@ =cut - package ISPMan::DomainMan; [...1967 lines suppressed...] - my @hosts=$self->getDomainAttribute($domain, "ispmanDomainDefaultWebHost"); + my @hosts = + $self->getDomainAttribute( $domain, "ispmanDomainDefaultWebHost" ); - unless (@hosts){ - @hosts=$self->getHostGroupFirstMember('httpgroup'); - } + unless (@hosts) { + @hosts = $self->getHostGroupFirstMember('httpgroup'); + } - return wantarray ? @hosts : \@hosts; + return wantarray ? @hosts : \@hosts; } - 1; __END__ Index: MailGroupMan.pm =================================================================== RCS file: /cvsroot/ispman/ispman/lib/ISPMan/MailGroupMan.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- MailGroupMan.pm 4 Jan 2004 18:56:15 -0000 1.6 +++ MailGroupMan.pm 30 May 2004 23:35:37 -0000 1.7 @@ -1,3 +1,4 @@ + =head1 NAME ISPMan::MailGroupMail - Functions to manage rfc822MailGroups @@ -24,173 +25,167 @@ require Exporter; --dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); +-dfGzR35o/[email protected] = qw(ISPMan Exporter AutoLoader); @EXPORT = qw( - getMailGroupsBranchDN - getMailGroupDN - + getMailGroupsBranchDN + getMailGroupDN - get_mail_groups - get_mail_group_info + get_mail_groups + get_mail_group_info - update_mail_group - delete_mail_group + update_mail_group + delete_mail_group - addMailGroup - newMailGroup - createMailGroup - getMailGroups - editMailGroup - updateMailGroup - deleteMailGroup - removeMailGroup + addMailGroup + newMailGroup + createMailGroup + getMailGroups + editMailGroup + updateMailGroup + deleteMailGroup + removeMailGroup ); $VERSION = '0.01'; - sub getMailGroupsBranchDN { - my $self=shift; - my ($domain)=@_; - return join ',' , ("ou=ispmanMailGroup", $self->getDomainDN($domain)); + my $self = shift; + my ($domain) = @_; + return join ',', ( "ou=ispmanMailGroup", $self->getDomainDN($domain) ); } sub getMailGroupDN { - my $self=shift; - my ($domain, $group)=@_; - return join ',', ("cn=$group", $self->getMailGroupsBranchDN($domain)); + my $self = shift; + my ( $domain, $group ) = @_; + return join ',', ( "cn=$group", $self->getMailGroupsBranchDN($domain) ); } - - sub addMailGroup { - my $self=shift; - my $r=shift; - my $domain=$r->param("ispmanDomain"); - $self->prepareBranchForDN($self->getMailGroupsBranchDN($r->param("ispmanDomain"))); - $self->addDataFromLdif("templates/domain.rfc822MailGroup.ldif.template", $r); + my $self = shift; + my $r = shift; + my $domain = $r->param("ispmanDomain"); + $self->prepareBranchForDN( + $self->getMailGroupsBranchDN( $r->param("ispmanDomain") ) ); + $self->addDataFromLdif( "templates/domain.rfc822MailGroup.ldif.template", + $r ); } - - sub createMailGroup { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); - - my $domaintype=$self->getDomainType($r->param("ispmanDomain")); + my $domaintype = $self->getDomainType( $r->param("ispmanDomain") ); - return $self->cantAddUsersToReplicaDomain($r) if lc($domaintype) eq "replica"; - my $template; - if ($self->isDomainEditable($r->param("ispmanDomain"))) { - $template=$self->getTemplate("mailgroups/add.tmpl"); - } else { - $template=$self->getTemplate("ro.tmpl"); - } - print $template->fill_in(PACKAGE => "ISPMan"); + return $self->cantAddUsersToReplicaDomain($r) + if lc($domaintype) eq "replica"; + my $template; + if ( $self->isDomainEditable( $r->param("ispmanDomain") ) ) { + $template = $self->getTemplate("mailgroups/add.tmpl"); + } + else { + $template = $self->getTemplate("ro.tmpl"); + } + print $template->fill_in( PACKAGE => "ISPMan" ); } -sub newMailGroup{ - my $self=shift; - my $r=shift; - if ($self->addMailGroup($r)){ - print "Mailgroup Added"; - print $self->refreshSignal($r->param("ispmanDomain")); - }; +sub newMailGroup { + my $self = shift; + my $r = shift; + if ( $self->addMailGroup($r) ) { + print "Mailgroup Added"; + print $self->refreshSignal( $r->param("ispmanDomain") ); + } } - sub editMailGroup { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); - $self->{'mailgroup'}=$self->getEntryAsHashRef($r->param("dn")); - my $template; - if ($self->isDomainEditable($r->param("ispmanDomain"))) { - $template=$self->getTemplate("mailgroups/edit.tmpl"); - } else { - $template=$self->getTemplate("mailgroups/view.tmpl"); - } - print $template->fill_in(PACKAGE => "ISPMan"); + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); + $self->{'mailgroup'} = $self->getEntryAsHashRef( $r->param("dn") ); + my $template; + if ( $self->isDomainEditable( $r->param("ispmanDomain") ) ) { + $template = $self->getTemplate("mailgroups/edit.tmpl"); + } + else { + $template = $self->getTemplate("mailgroups/view.tmpl"); + } + print $template->fill_in( PACKAGE => "ISPMan" ); } - - sub getMailGroups { - my $self=shift; - my $dn=shift; - my $mailgroupshash=$self->getEntriesAsHashRef($dn, "objectclass=ispmanMailGroup", ["cn", "mailLocalAddress", "mailForwardingAddress"]); - return $mailgroupshash; + my $self = shift; + my $dn = shift; + my $mailgroupshash = + $self->getEntriesAsHashRef( $dn, "objectclass=ispmanMailGroup", + [ "cn", "mailLocalAddress", "mailForwardingAddress" ] ); + return $mailgroupshash; } - - sub get_mail_groups { - my $self=shift; - my ($domain)=@_; - my $dn=$self->getMailGroupsBranchDN($domain); - return $self->getEntriesAsHashRef($dn, "objectclass=ispmanMailGroup", ["cn", "mailLocalAddress", "mailForwardingAddress"]); + my $self = shift; + my ($domain) = @_; + my $dn = $self->getMailGroupsBranchDN($domain); + return $self->getEntriesAsHashRef( $dn, "objectclass=ispmanMailGroup", + [ "cn", "mailLocalAddress", "mailForwardingAddress" ] ); } sub get_mail_group_info { - my $self=shift; - my ($domain, $group)=@_; - my $dn=$self->getMailGroupDN($domain, $group); - return $self->getEntryAsHashRef($dn, "objectclass=ispmanMailGroup", ["cn", "mailLocalAddress", "mailForwardingAddress"]); + my $self = shift; + my ( $domain, $group ) = @_; + my $dn = $self->getMailGroupDN( $domain, $group ); + return $self->getEntryAsHashRef( $dn, "objectclass=ispmanMailGroup", + [ "cn", "mailLocalAddress", "mailForwardingAddress" ] ); } - - sub update_mail_group { - my $self=shift; - my ($domain, $group, $members, $aliases)=@_; - my $dn=$self->getMailGroupDN($domain, $group); - my $data={}; - $data->{'mailForwardingAddress'}=$members; - $data->{'mailAlias'}=$aliases; - $self->updateEntryWithData($dn, $data); + my $self = shift; + my ( $domain, $group, $members, $aliases ) = @_; + my $dn = $self->getMailGroupDN( $domain, $group ); + my $data = {}; + $data->{'mailForwardingAddress'} = $members; + $data->{'mailAlias'} = $aliases; + $self->updateEntryWithData( $dn, $data ); } - sub updateMailGroup { - my $self=shift; - my $r=shift; - my $dn=$r->param("dn"); - - my $data={}; - $data->{'cn'}=$r->param("cn"); - $data->{'mailForwardingAddress'}=[split(/\s+/, $r->param("mailForwardingAddress"))]; - $data->{'mailAlias'}=[split(/\s+/, $r->param("mailAlias"))]; - $self->updateEntryWithData($dn, $data); - print $self->refreshSignal($r->param("ispmanDomain")); - print "Mail group updated<br>"; + my $self = shift; + my $r = shift; + my $dn = $r->param("dn"); - $self->editMailGroup($r); + my $data = {}; + $data->{'cn'} = $r->param("cn"); + $data->{'mailForwardingAddress'} = + [ split( /\s+/, $r->param("mailForwardingAddress") ) ]; + $data->{'mailAlias'} = [ split( /\s+/, $r->param("mailAlias") ) ]; + $self->updateEntryWithData( $dn, $data ); + print $self->refreshSignal( $r->param("ispmanDomain") ); + print "Mail group updated<br>"; + + $self->editMailGroup($r); } -sub deleteMailGroup{ - my $self=shift; - my $r=shift; - $self->removeMailGroup($r->param("ispmanDomain"), $r->param("cn")); - print "Mailgroup deleted"; - print $self->refreshSignal($r->param("ispmanDomain")); +sub deleteMailGroup { + my $self = shift; + my $r = shift; + $self->removeMailGroup( $r->param("ispmanDomain"), $r->param("cn") ); + print "Mailgroup deleted"; + print $self->refreshSignal( $r->param("ispmanDomain") ); } -sub delete_mail_group { - my $self=shift; - return $self->removeMailGroup(@_); +sub delete_mail_group { + my $self = shift; + return $self->removeMailGroup(@_); } sub removeMailGroup { - my $self=shift; - my ($domain, $cn)=@_; - my $dn=$self->getMailGroupDN($domain, $cn); - return $self->deleteEntry($dn); + my $self = shift; + my ( $domain, $cn ) = @_; + my $dn = $self->getMailGroupDN( $domain, $cn ); + return $self->deleteEntry($dn); } - 1; __END__ ------------------------------------------------------- This SF.Net email is sponsored by: Oracle 10g Get certified on the hottest thing ever to hit the market... Oracle 10g. Take an Oracle 10g class now, and we'll give you the exam FREE. http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click