--- doc/loncapafiles/webserver.piml 2002/02/02 14:45:40 1.4 +++ doc/loncapafiles/webserver.piml 2018/06/19 12:26:32 1.43 @@ -1,7 +1,8 @@ + - - + -/abc/ +/ @@ -44,112 +45,156 @@ http://www.lon-capa.org/ /etc/httpd/conf/httpd.conf -This is always expected for any version of Apache +/etc/httpd/httpd.conf +/etc/apache2/default-server.conf +/etc/apache2/sites-available/loncapa +/etc/apache2/conf-available/loncapa +This is for Apache 1.X for Red Hat 4ES, Fedora 2, 3 and 4, SusSE 9.2 and 9.3, and SLES 9 distributions. This is for Apache 2.X for Fedora 5, Red Hat 5, CentOS 5, Scientific Linux 5, SuSE 10.1, SLES 10, Debian 5, Ubuntu LTS 8 and later distributions /etc/httpd/conf/httpd.conf - + +/etc/httpd/httpd.conf + + +/etc/apache2/sites-available/loncapa + + +/etc/apache2/conf-available/loncapa + + +/etc/apache2/default-server.conf + + +# Generated from doc/loncapafiles/webserver.piml unless (-e "") { - print 'ERROR! httpd.conf should exist! Are you missing the Apache '. - 'software package'; + print '**** ERROR! should exist! Are you missing the Apache '. + 'software package?'; + exit(1); } else { + # Append loncapa_apache.conf inclusion to httpd.conf + # (or sites-available/loncapa or conf-available/loncapa) if not present. $flag=0; - open IN, "<"; - while (<IN>) { if (/^\s*Include\s+conf\/srm.conf/) { $flag=1; } } - close IN; - unless ($flag==0) { - open OUT,">>"; - print OUT 'Include conf/srm.conf'."\n"; - close OUT; + open(IN,'<'); + while (<IN>) { + if (/^\s*Include\s+conf\/loncapa_apache.conf/) { + $flag=1; + } } - $flag=0; - open IN, "<"; - while (<IN>) { if (/^\s*Include\s+conf\/access.conf/) { $flag=1; } } - close IN; - unless ($flag==0) { - open OUT,">>"; - print OUT 'Include conf/access.conf'."\n"; - close OUT; + close(IN); + unless ($flag==1) { + open(OUT,'>>'); + print(OUT 'Include conf/loncapa_apache.conf'."\n"); + close(OUT); } + # Remove loncapa.conf inclusion from httpd.conf + # (or sites-available/loncapa or conf-available/loncapa) if present. $flag=0; - my $eflag=0; - open IN, "<"; - while (<IN>) { + open(IN,'<'); + while (<IN>) { if (/^\s*Include\s+conf\/loncapa.conf/) { - $flag=1; + $flag=1; } } - close IN; - unless ($flag==0) { - open OUT,">>"; - print OUT 'Include conf/loncapa.conf'."\n"; - close OUT; + close(IN); + $in=''; + if ($flag==1) { + open(IN,'<'); + while(<IN>) { + $in.=$_ unless /^\s*Include\s+conf\/loncapa.conf/; + } + close(IN); + open(OUT,'>'); + print(OUT $in."\n"); + close(OUT); } -} - - - -/etc/httpd/conf/access.conf -This may or may not exist on a system depending on the version of -Apache - -/etc/httpd/conf/access.conf - - -unless (-e "") { - print <<; -WARNING! access.conf is not currently present on your system. -This is either due to -* you are missing the Apache software package, -* you have a newer version of Apache that does not - ordinarily install an access.conf -* configuration files are installed in a directory location - different than for -For backwards compatibility, - is being generated. -END -} -my $flag=0; -open IN, "<"; -while (<IN>) { if (/^\s*Include\s+conf\/loncapa.conf/) { $flag=1; } } -close IN; -unless ($flag==0) { -open OUT,">>"; -print OUT 'Include conf/loncapa.conf'."\n"; -close OUT; -} - - - -/etc/httpd/conf/srm.conf -This may or may not exist on a system depending on the version of -Apache - -/etc/httpd/conf/srm.conf - - -unless (-e "") { - print <<; -WARNING! srm.conf is not currently present on your system. -This is either due to -* you are missing the Apache software package, -* you have a newer version of Apache that does not - ordinarily install an srm.conf -* configuration files are installed in a directory location - different than for -For backwards compatibility, - is being generated. -END -} -my $flag=0; -open IN, "<"; -while (<IN>) { if (/^\s*Include\s+conf\/loncapa.conf/) { $flag=1; } } -close IN; -unless ($flag==0) { -open OUT,">>"; -print OUT 'Include conf/loncapa.conf'."\n"; -close OUT; + +# Checking for overlapping ScriptAlias and DocumentRoot definitions. + $scriptalias_flag=0; + $documentroot_flag=0; + my $scriptalias; + my $documentroot; + open(IN,'<'); + while (<IN>) { + if (m!^\s*ScriptAlias\s+/cgi-bin/\s+(.*)$!) { + $scriptalias = $1; + if ($scriptalias !~ m!home/httpd/cgi-bin!) { + $scriptalias_flag = 1; + } + } + if (m!^\s*DocumentRoot\s+(.*)$!) { + $documentroot = $1; + if ($documentroot !~ m!home/httpd/html!) { + $documentroot_flag = 1; + } + } + } + close(IN); + if ($scriptalias_flag==1) { + my $conffile = '/etc/httpd/conf/httpd.conf'; + if ('' eq 'suse9.2' || '' eq 'suse9.3' + || '' eq 'sles9') { + $conffile = '/etc/httpd/httpd.conf'; + } elsif ('' =~ /^(suse|sles)/) { + $conffile = '/etc/apache2/default-server.conf'; + } elsif ('' =~ /^(debian|ubuntu)/) { + $conffile = '/etc/apache2/sites-available/loncapa'; + } + print('**** ERROR **** '.$conffile.' has an overlapping definition of '. + 'ScriptAlias (it is incorrectly set to '.$scriptalias.').'."\n". + 'This conflicts with loncapa_apache.conf.'."\n"); + } + if ($documentroot_flag==1) { + print('**** ERROR **** '.$conffile.' has an overlapping definition of '. + 'DocumentRoot (it is incorrectly set to '.$documentroot.').'."\n". + 'This conflicts with loncapa_apache.conf.'."\n"); + } + +# Checking for rewrites of http:// to https:// + my $rewrite_dir = '/etc/httpd/conf/rewrites'; + my $curr_rewrite = '/etc/httpd/conf/loncapa_rewrite.conf'; + if ('' eq 'suse9.2' || '' eq 'suse9.3' + || '' eq 'sles9') { + $rewrite_dir = '/etc/httpd/rewrites/'; + $curr_rewrite = '/etc/httpd/loncapa_rewrite.conf'; + } elsif ('' =~ /^(suse|sles|debian|ubuntu)/) { + $rewrite_dir = '/etc/apache2/rewrites'; + $curr_rewrite = '/etc/apache2/loncapa_rewrite.conf'; + } + my $rewrite_off = $rewrite_dir.'/loncapa_rewrite_off.conf'; + my $rewrite_on = $rewrite_dir.'/loncapa_rewrite_on.conf'; + if (!-e $curr_rewrite) { + system("cp $rewrite_off $curr_rewrite"); + chmod(0644, $curr_rewrite); + } else { + my ($not_rewrite_on,$not_rewrite_off); + if (open(PIPE, "diff --brief $rewrite_off $curr_rewrite |")) { + my $diffres = <PIPE> ; + close(PIPE); + chomp($diffres); + if ($diffres) { + $not_rewrite_off = 1; + } + } + if (open(PIPE, "diff --brief $rewrite_on $curr_rewrite |")) { + my $diffres = <PIPE> ; + close(PIPE); + chomp($diffres); + if ($diffres) { + $not_rewrite_on = 1; + } + } + unless ($not_rewrite_off || $not_rewrite_on) { + print('**** WARNING **** '.$curr_rewrite.' does not match '. + 'either: '.$rewrite_on.' - the file used to enable rewriting '. + 'of requests for http:// to https:// or: '.$rewrite_off. + ' - the file used to disable such rewriting'."\n\n". + 'This may be because '. $curr_rewrite.' has been '. + 'previously customized, or it may be because of a change '. + 'to the files in '.$rewrite_dir."\n"); + } + } }