use DBI; use Data::Dumper; my $dbtype = "mysql"; my $dbhost = "XXXXXXXX.XXX.XX"; my $dbname = "XXXXXXXX"; my $dbuser = "XXXXXXXX"; my $dbpass = "XXXXXXXX"; my %users = (); my %groups = (); while ( my $user = getpwent() ) { $users{$user} = 1; } while ( my $group = getgrent() ) { $groups{$group} = 1; } my $self = Apache2::ServerUtil->server; my $flags = { PrintError => 1 }; my $dbh = DBI->connect("dbi:$dbtype:$dbname:$dbhost", $dbuser, $dbpass, $flags); if (defined $dbh) { # Load configuration from MySQL table my $sth = $dbh->prepare(" SELECT * FROM virtualhosts ORDER BY ServerName "); $sth->execute; while (my $record = $sth->fetchrow_hashref) { my $url = $record->{'ServerName'}; my $docroot = $record->{'DocumentRoot'}; my $cacheroot = "/var/www/mason/$url"; my $uid = $record->{'Username'}; my $gid = $record->{'Groupname'}; # Verify DocumentRoot exists unless ( -d $docroot ) { warn "Skipped $record->{'ServerName'}: DocumentRoot '$docroot' invalid\n"; next; } # Verify Username exists unless ( $users{$uid} ) { warn "Skipped $record->{'ServerName'}: Username '$uid' invalid\n"; next; } # Verify Groupname exists unless ( $groups{$gid} ) { warn "Skipped $record->{'ServerName'}: Groupname '$gid' invalid\n"; next; } push @{$VirtualHost{'*:80'}}, { ServerName => $url, ServerAdmin => $record->{'ServerAdmin'}, DocumentRoot => $docroot, SuexecUserGroup => "$uid $gid", }; } open(my $fh, '>', '/var/log/httpd/debug.log'); print $fh Dumper(\%VirtualHost); close $fh; } else { die "MySQL error: ".$DBI::errstr; }