Diff for /doc/loncapafiles/webserver.piml between versions 1.41 and 1.43.2.8

version 1.41, 2015/01/03 03:00:18 version 1.43.2.8, 2020/09/06 21:51:19
Line 46  http://www.lon-capa.org/ Line 46  http://www.lon-capa.org/
 <file>  <file>
 <target dist='default'>/etc/httpd/conf/httpd.conf</target>  <target dist='default'>/etc/httpd/conf/httpd.conf</target>
 <target dist='suse9.2 suse9.3 sles9'>/etc/httpd/httpd.conf</target>  <target dist='suse9.2 suse9.3 sles9'>/etc/httpd/httpd.conf</target>
 <target dist='sles10 sles11 sles12 suse10.1 suse10.2 suse10.3 suse11.1 suse11.2 suse11.3 suse11.4 suse12.1 suse12.2 suse12.3 suse13.1 suse13.2'>/etc/apache2/default-server.conf</target>  <target dist='sles10 sles11 sles12 sles15 suse10.1 suse10.2 suse10.3 suse11.1 suse11.2 suse11.3 suse11.4 suse12.1 suse12.2 suse12.3 suse13.1 suse13.2'>/etc/apache2/default-server.conf</target>
 <target dist='debian5 debian6 ubuntu6 ubuntu8 ubuntu10 ubuntu12'>/etc/apache2/sites-available/loncapa</target>  <target dist='debian5 debian6 ubuntu6 ubuntu8 ubuntu10 ubuntu12'>/etc/apache2/sites-available/loncapa</target>
 <target dist='ubuntu14'>/etc/apache2/conf-available/loncapa</target>  <target dist='ubuntu14 ubuntu16 ubuntu18 ubuntu20'>/etc/apache2/conf-available/loncapa</target>
 <note>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</note>  <note>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, Oracle Linux 5, SuSE 10.1, SLES 10, Debian 5, Ubuntu LTS 8 and later distributions</note>
 <dependencies dist='default'>  <dependencies dist='default'>
 /etc/httpd/conf/httpd.conf  /etc/httpd/conf/httpd.conf
 </dependencies>  </dependencies>
Line 59  http://www.lon-capa.org/ Line 59  http://www.lon-capa.org/
 <dependencies dist='debian5 debian6 ubuntu6 ubuntu8 ubuntu10 ubuntu12'>  <dependencies dist='debian5 debian6 ubuntu6 ubuntu8 ubuntu10 ubuntu12'>
 /etc/apache2/sites-available/loncapa  /etc/apache2/sites-available/loncapa
 </dependencies>  </dependencies>
 <dependencies dist='ubuntu14'>  <dependencies dist='ubuntu14 ubuntu16 ubuntu18 ubuntu20'>
 /etc/apache2/conf-available/loncapa  /etc/apache2/conf-available/loncapa
 </dependencies>  </dependencies>
 <dependencies dist='sles10 sles11 sles12 suse10.1 suse10.2 suse10.3 suse11.1 suse11.2 suse11.3 suse11.4 suse12.1 suse12.2 suse12.3 suse13.1 suse13.2'>  <dependencies dist='sles10 sles11 sles12 sles15 suse10.1 suse10.2 suse10.3 suse11.1 suse11.2 suse11.3 suse11.4 suse12.1 suse12.2 suse12.3 suse13.1 suse13.2'>
 /etc/apache2/default-server.conf  /etc/apache2/default-server.conf
 </dependencies>  </dependencies>
 <perlscript mode='fg' dist="default">  <perlscript mode='fg' dist="default">
 # Generated from doc/loncapafiles/webserver.piml  # Generated from doc/loncapafiles/webserver.piml
   use Socket;
   use Sys::Hostname::FQDN();
 unless (-e "<TARGET />") {  unless (-e "<TARGET />") {
   print '**** ERROR! <TARGET /> should exist! Are you missing the Apache '.    print '**** ERROR! <TARGET /> should exist! Are you missing the Apache '.
     'software package?';      'software package?';
Line 168  else { Line 170  else {
         system("cp $rewrite_off $curr_rewrite");          system("cp $rewrite_off $curr_rewrite");
         chmod(0644, $curr_rewrite);          chmod(0644, $curr_rewrite);
     } else {      } else {
         my ($not_rewrite_on,$not_rewrite_off);          my ($not_rewrite_on,$not_rewrite_off,$rewrite_state);
         if (open(PIPE, "diff --brief $rewrite_off $curr_rewrite |")) {          if (open(PIPE, "diff --brief $rewrite_off $curr_rewrite |")) {
             my $diffres = &lt;PIPE&gt; ;              my $diffres = &lt;PIPE&gt; ;
             close(PIPE);              close(PIPE);
             chomp($diffres);              chomp($diffres);
             if ($diffres) {              if ($diffres) {
                 $not_rewrite_off = 1;                  $not_rewrite_off = 1;
               } else {
                   $rewrite_state = 'off';
             }              }
         }          }
         if (open(PIPE, "diff --brief $rewrite_on $curr_rewrite |")) {          if (open(PIPE, "diff --brief $rewrite_on $curr_rewrite |")) {
Line 183  else { Line 187  else {
             chomp($diffres);              chomp($diffres);
             if ($diffres) {              if ($diffres) {
                 $not_rewrite_on = 1;                  $not_rewrite_on = 1;
               } else {
                   $rewrite_state = 'on';
             }              }
         }          }
         unless ($not_rewrite_off || $not_rewrite_on) {          if ($not_rewrite_off && $not_rewrite_on) {
             print('**** WARNING **** '.$curr_rewrite.' does not match '.              print('**** WARNING **** '."\n".$curr_rewrite.' does not match '.
             'either: '.$rewrite_on.' - the file used to enable rewriting '.              'either:'."\n".$rewrite_on.' - the file used to enable rewriting '.
             'of requests for http:// to https:// or: '.$rewrite_off.              'of requests for http:// to https:// '."\n".'or:'."\n".$rewrite_off.
             ' - the file used to disable such rewriting'."\n\n".              ' - the file used to disable such rewriting'."\n\n".
             'This may be because '. $curr_rewrite.' has been '.               'This may be because '. $curr_rewrite.' has been '. 
             'previously customized, or it may be because of a change '.                'previously customized,'."\n".'or it may be because of a change '.  
             'to the files in '.$rewrite_dir."\n");              'to the files in '.$rewrite_dir."\n");
               if (open(my $fh,'&lt;',$curr_rewrite)) {
                   while(&lt;$fh&gt;) {
                       if (/^\s*RewriteEngine\s+(on|off)\s*$/i) {
                           if ($1 eq 'on') {
                               $rewrite_state = 'on';
                           } else {
                               $rewrite_state = 'off';
                           }
                           last;
                       }
                   }
               }
           }
           if ($rewrite_state eq 'on') {
           # Checking for rewrites of https:// to http://
               my ($gotrules,$rulestr,$ssldir);
               if ('<DIST />' eq 'suse9.2' || '<DIST />' eq 'suse9.3'
                   || '<DIST />' eq 'sles9') {
                   $ssldir = '/etc/apache/vhosts.d';
               } elsif ('<DIST />' =~ /^(suse|sles)/) {
                   $ssldir = '/etc/apache2/vhosts.d';
               } elsif ('<DIST />' =~ /^(debian|ubuntu)/) {
                   $ssldir = '/etc/apache2/sites-available';
               } else {
                   $ssldir = '/etc/httpd/conf.d';
               }
               my $hostname = Sys::Hostname::FQDN::fqdn();
               my $hostip = Socket::inet_ntoa(scalar(gethostbyname($hostname)) || 'localhost');
               my @expected = ('RewriteEngine on',
                               'RewriteCond %{HTTPS} =on',
                               'RewriteCond %{REQUEST_URI} ^/adm/wrapper/ext/(?!https:)',
                               'RewriteCond %{QUERY_STRING} (^|&(|amp;))usehttp=1($|&)',
                               'RewriteRule ^/adm/wrapper/ext/(?!https:) http://%{HTTP_HOST}%{REQUEST_URI} [R,L,NE]',
                               'RewriteCond %{REMOTE_ADDR} 127.0.0.1',
                               'RewriteRule (.*) - [L]');
               if (($hostip ne '') && ($hostip ne '127.0.0.1')) {
                   push(@expected,('RewriteCond %{REMOTE_ADDR} '.$hostip,
                                   'RewriteRule (.*) - [L]'));
               }
               push(@expected,('RewriteCond %{REQUEST_URI} ^/public/.*/syllabus$',
                               'RewriteCond %{QUERY_STRING} (^|&(|amp;))usehttp=1($|&)',
                               'RewriteRule ^/public/.*/syllabus$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L,NE]'));
               if (-d $ssldir) {
                   my @rewrites;
                   if (opendir(my $dir,$ssldir)) {
                       my @sslconf_files;
                       foreach my $file (grep(!/^\./,readdir($dir))) {
                           next if ($file =~ /\.rpmnew$/);
                           if (open(my $fh,'&lt;',"$ssldir/$file")) {
                               while (&lt;$fh&gt;) {
                                   if (/^\s*&lt;VirtualHost\s+[^:]*\:443&gt;\s*$/) {
                                       push(@sslconf_files,$file);
                                       last;
                                   }
                               }
                               close($fh);
                           }
                       }
                       if (@sslconf_files) {
                           foreach my $file (@sslconf_files) {
                               if (open(my $fh,'&lt;',"$ssldir/$file")) {
                                   my ($rewrite,$num) = (0,0);
                                   while (&lt;$fh&gt;) {
                                       if ($rewrite) {
                                           if (/^\s*&lt;\/IfModule&gt;/) {
                                               $rewrite = 0;
                                               $num ++;
                                           } else {
                                               chomp();
                                               s/^\s+|\s+$//g;
                                               push(@{$rewrites[$num]},$_);
                                           }
                                       } elsif (/^\s*&lt;IfModule\s+mod_rewrite.c&gt;/) {
                                           $rewrite = 1;
                                       }
                                   }
                                   close($fh);
                               }
                           }
                       }
                       closedir($dir);
                   }
                   if (@rewrites) {
                       foreach my $item (@rewrites) {
                           if (ref($item) eq 'ARRAY') {
                               my $found = 0;
                               foreach my $line (@{$item}) {
                                   foreach my $match (@expected) {
                                       if ($match eq $line) {
                                           $found ++;
                                           last;
                                       }
                                   }
                               }
                               if ($found &gt;= scalar(@expected)) {
                                   $gotrules = 1;
                                   last;
                               }
                           }
                       }
                   }
               }
               unless ($gotrules) {
                   print('**** WARNING **** '."\n".$curr_rewrite.' is currently set so rewrites '.
                         'of http to https are enabled for most URLs.'."\n".
                         'Unless your Apache configuration includes Strict-Transport-Security '.
                         '(with max-age > 0), it is recommended to also set rewrites from https to http '.
                         'for specific URLs in a file in '.$ssldir.' by including the following:'."\n".
                         "&lt;IfModule mod_rewrite.c&gt;\n".'  '.
                         join("\n  ",@expected)."\n".
                         "&lt;/IfModule&gt;\n");
               }
         }          }
     }      }
 }  }

Removed from v.1.41  
changed lines
  Added in v.1.43.2.8


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.