summaryrefslogtreecommitdiffstats
path: root/web_wizard/scripts/Apache2conf.pm
diff options
context:
space:
mode:
Diffstat (limited to 'web_wizard/scripts/Apache2conf.pm')
-rw-r--r--web_wizard/scripts/Apache2conf.pm119
1 files changed, 119 insertions, 0 deletions
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;