> 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;

In the above regex you are looking for \d+ as the username, but your
usernames consist of letters??  [A-Za-z]+ maybe more appropriate, or
maybe even \w+?

>         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>------------------------------------------
> 

Have you considered CPAN, Apache::Admin::Config looks promising:

http://search.cpan.org/~rsoliv/Apache-Admin-Config-0.91/lib/Apache/Admin/Config.pm

http://danconia.org

-- 
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