#!/usr/bin/perl # virtusertable rebuilder v .03 # by Jonathan Eaton # jon@namesarecheap.com # WORKS ONLY WITH THE COBALT RAQ 550 use strict; use lib "/usr/sausalito/perl"; use CCE; use Data::Dumper; my $cce = new CCE; $cce->connectuds(); my %vsites = (); print "GETTING EMAIL ALIASES\n"; my @oids = $cce->find('EmailAlias'); foreach my $oid (@oids) { my ($ok, $cceObj) = $cce->get($oid); $vsites{$cceObj->{site}}{users}{$cceObj->{action}}{$cceObj->{alias}} = 1; } print "CROSS-REFERENCING EMAIL ALIASES FROM USER CLASS\n"; my @oids = $cce->find('User'); foreach my $oid (@oids) { my ($ok, $cceObj) = $cce->get($oid); my $user = $cceObj->{name}; my $site = $cceObj->{site}; my ($ok, $cceObj) = $cce->get($oid, 'Email'); my @aliases = split( '&', $cceObj->{aliases}); shift @aliases; foreach my $alias (@aliases){ $vsites{$site}{users}{$user}{$alias} = 1; } } print "GETTING PROTECTED EMAIL ALIASES\n"; my @oids = $cce->find('ProtectedEmailAlias'); foreach my $oid (@oids) { my ($ok, $cceObj) = $cce->get($oid); $vsites{$cceObj->{site}}{users}{$cceObj->{action}}{$cceObj->{alias}} = 1; } print "GETTING VSITE INFO, CATCHALL, AND DOMAIN EMAIL ALIASES\n"; my @oids = $cce->find('Vsite'); foreach my $oid (@oids) { my ($ok, $cceObj) = $cce->get($oid); $vsites{$cceObj->{name}}{fqdn} = $cceObj->{fqdn}; my @domain_aliases = split( '&', $cceObj->{mailAliases}); shift @domain_aliases; @{$vsites{$cceObj->{name}}{domain_aliases}} = @domain_aliases; if ($cceObj->{mailCatchAll}){ $vsites{$cceObj->{name}}{catchall} = $cceObj->{mailCatchAll}; } } # DEBUG #print Data::Dumper->Dump([%vsites], [qw(vsites)]); print "REBUILDING NEW VIRTUSERTABLE IN ./\n"; my ($Second, $Minute, $Hour, $Day, $Month, $Year, $WeekDay, $DayOfYear, $IsDST) = localtime(time); my $vut = <>" . "./virtusertable"); flock(FILE, 2); print FILE "$vut"; close FILE;