Hello everyone,

    I have a little issue that I am sure someone has come across here
once before and was wondering if I can get some pointers.

    I am trying to read and grab values from  a "messy" httpd.conf
file.  What I am trying to do is grab the ServerName value and
DocumentRoot value for a given VirtualHost depending on the username I
have defined.

    The httpd.conf file has many VirtualHost sections (50 +).  And each
section does not have the same order of directives as the next.  For
example:

<VirtualHost domain1.com>
ScriptAlias /cgi-bin/ /usr/www/htdocs/lee/domain1-www/cgi-bin/
DocumentRoot /usr/www/htdocs/lee/domain1-www
ServerAdmin [EMAIL PROTECTED]
ServerName domain1.com
User lee
</VirtualHost>

<VirtualHost domain4.com>
User bob
DocumentRoot /usr/www/htdocs/bob/domain1-www
ServerAdmin [EMAIL PROTECTED]
ScriptAlias /cgi-bin/ /usr/www/htdocs/bob/domain1-www/cgi-bin/
ServerName domain4.com
</VirtualHost>


  So I wanted to write a script that if I have a username I could use
that to get the ServerName and DocumentRoot from the correct VirtualHost
Section.  Here is what I have:

----------------------<code>-----------------------------------------
#!/usr/local/bin/perl
use strict;
use warnings;
use diagnostics;
$|++;

use vars qw(
             $httpd_conf_dir $httpd_conf_file $owner
             $servername $docroot $user
           );

$httpd_conf_dir = '/etc/httpd/conf';
$httpd_conf_file = "$httpd_conf_dir/httpd.conf";
$user = 'lee';
$/ = '<V';

open (HTTPD, "$httpd_conf_file") 
       or die "cannot open $httpd_conf_file:$!";
while (<HTTPD>)
{
    if (/irtualHost/)
    {
        $owner = $1 if /^User\s*(\d+)/m;
        next if ($owner ne $user);
        $servername = $1 if /^ServerName\s*(\w+)/m;
        $docroot = $1 if /^DocumentRoot\s*(.+)/m;
    }
}
close (HTTPD);

print "$owner : $servername : $docroot\n";

------------------</code>------------------------------------------

But this just doesn't work.  I get the last VirtualHost sections
servername (minus the .com) and the Docroot.  But the username isn't
there..



Can anyone steer me in the right direction?

THanks,
Chad



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to