diff options
-rw-r--r-- | web_wizard/Makefile | 1 | ||||
-rw-r--r-- | web_wizard/apache2.wiz | 2 | ||||
-rw-r--r-- | web_wizard/scripts/Apache2conf.pm | 119 | ||||
-rw-r--r-- | web_wizard/scripts/Webconf.pm | 14 |
4 files changed, 133 insertions, 3 deletions
diff --git a/web_wizard/Makefile b/web_wizard/Makefile index b105f592..e9bb39b2 100644 --- a/web_wizard/Makefile +++ b/web_wizard/Makefile @@ -17,4 +17,5 @@ install: install --mode=a=r -p ./images/apache.png ${prefix}/share/wizards/web_wizard/images install --mode=u=rwx,g=rx,o=rx -p scripts/*.sh ${prefix}/share/wizards/web_wizard/scripts install --mode=u=rw,g=r,o=r -p scripts/Webconf.pm ${prefix}/share/wizards/web_wizard/scripts + install --mode=u=rw,g=r,o=r -p scripts/Apache2conf.pm ${prefix}/share/wizards/web_wizard/scripts diff --git a/web_wizard/apache2.wiz b/web_wizard/apache2.wiz index bb7ec2c3..51de8c9a 100644 --- a/web_wizard/apache2.wiz +++ b/web_wizard/apache2.wiz @@ -7,7 +7,7 @@ wizardTitle="Web wizard" imagePosition="top" defaultImage="__WIZ_HOME__/web_wizard/images/apache.png" - perlModule="__WIZ_HOME__/web_wizard/scripts/Webconf.pm" + perlModule="__WIZ_HOME__/web_wizard/scripts/Apache2conf.pm" rpm="apache2" summaryFunc="do_it" > diff --git a/web_wizard/scripts/Apache2conf.pm b/web_wizard/scripts/Apache2conf.pm new file mode 100644 index 00000000..b538fe74 --- /dev/null +++ b/web_wizard/scripts/Apache2conf.pm @@ -0,0 +1,119 @@ +#!/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 (<FH>) { + 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*<Directory\s*$old/?>|<Directory $ENV{wiz_dir}>|; + } "/etc/httpd/conf/commonhttpd.conf" if $old; + + substInFile { + s|^\s*<Directory\s*/var/www/html/?>|<Directory $ENV{wiz_dir}>|; + } "/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*<Directory.*>/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; diff --git a/web_wizard/scripts/Webconf.pm b/web_wizard/scripts/Webconf.pm index 4da50a82..a787ac37 100644 --- a/web_wizard/scripts/Webconf.pm +++ b/web_wizard/scripts/Webconf.pm @@ -15,7 +15,7 @@ sub check { 0; } -my $file = "/etc/httpd/conf/commonhttpd.conf"; +my $file = "/etc/httpd/conf/httpd.conf"; my $root; if (-f $file) { @@ -40,8 +40,18 @@ sub check_dir { } sub chg_docroot { + my $old; substInFile { - s|(^\s*\#?\s*DocumentRoot\s*).*|$1$ENV{wiz_dir}|; + s|(^\s*\#?\s*DocumentRoot\s*)(\S*).*|$1$ENV{wiz_dir}| and $old ||=$2; + } "/etc/httpd/conf/httpd.conf"; + + print "DEBUG $old"; + substInFile { + s|^\s*<Directory\s*$old/?>|<Directory $ENV{wiz_dir}>|; + } "/etc/httpd/conf/commonhttpd.conf" if $old; + + substInFile { + s|^\s*<Directory\s*/var/www/html/?>|<Directory $ENV{wiz_dir}>|; } "/etc/httpd/conf/commonhttpd.conf"; } |