#!/usr/bin/perl package Apache2conf; require "__WIZ_HOME__/common/scripts/Varspaceval.pm"; require "__WIZ_HOME__/common/scripts/IFCFG.pm"; use MDK::Common; use strict; my $o = IFCFG->new(); sub check { $> and return 1; $o->is_dhcp() and return 2; 0; } my $file = "/etc/httpd/conf/httpd2.conf"; my $root; if (-f $file) { open(FH, "< $file") or die "$! ($file)"; while () { if (/^\s*\#?\s*DocumentRoot\s+(.*)/) { close(FH); $root = "$1"; last; } } close(FH); } sub get_docroot { $root; } sub check_dir { -d ($ENV{wiz_dir}) and return 10; 1; } sub chg_docroot { my $old; substInFile { s|(^\s*\#?\s*DocumentRoot\s*)(\S*).*|$1$ENV{wiz_dir}| and $old ||=$2; } "/etc/httpd/conf/httpd2.conf"; print "DEBUG $old"; substInFile { s|^\s*||; } "/etc/httpd/conf/commonhttpd.conf" if $old; substInFile { s|^\s*||; } "/etc/httpd/conf/commonhttpd.conf"; } sub is_user_mod { if ($ENV{wiz_user_mod}) { return 1; } $ENV{wiz_user_dir} = "disabled"; 0; } sub is_last_user_mod { my $root = get_user_dir(); chomp($root); !($root eq 'disabled'); } sub get_user_dir { my %conf = Varspaceval->get("/etc/httpd/conf/commonhttpd.conf"); $conf{UserDir}; } sub chg_user_dir { my $root = get_user_dir(); if ($ENV{wiz_user_mod}) { substInFile { s|(/home/\*/)$root(/?)|$1$ENV{wiz_user_dir}$2|g; } "/etc/httpd/conf/commonhttpd.conf"; substInFile { s|(\s*)UserDir\s*$root(/?)|$1UserDir $ENV{wiz_user_dir}$2|g; s|(/home/\*/)$root(/?)|$1$ENV{wiz_user_dir}$2|g; } "/etc/httpd/conf/commonhttpd.conf"; } else { substInFile { s|(\s*)UserDir\s*$root(/?)|$1UserDir disabled$2|g; } "/etc/httpd/conf/commonhttpd.conf"; } 10; } sub do_it { my $file = "/etc/httpd/conf/commonhttpd.conf"; my $that = "localhost"; if ($ENV{wiz_web_external} eq "1") { $that = "all"; } elsif ($ENV{wiz_web_internal} eq "1") { ($that) = $o->itf_get("IPADDR") =~ qr/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.)\d{1,3}$/; $that .= " 127.0.0.1"; } cp_af($file, $file.".orig"); substInFile { if( m /^\s*/s...m/^\s*<\/Directory>/s ) { { s /^\s*Allow .*$/ Allow from $that\n/s;} ;} } $file; chg_docroot(); chg_user_dir(); system("/etc/rc.d/init.d/httpd restart"); 10; } 1;