--- loncom/configuration/Checksumming.pm 2013/02/02 00:22:43 1.1
+++ loncom/configuration/Checksumming.pm 2017/06/30 14:53:39 1.8
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Checksum installed LON-CAPA modules and some configuration files
#
-# $Id: Checksumming.pm,v 1.1 2013/02/02 00:22:43 raeburn Exp $
+# $Id: Checksumming.pm,v 1.8 2017/06/30 14:53:39 raeburn Exp $
#
# The LearningOnline Network with CAPA
#
@@ -34,6 +34,7 @@ use strict;
use lib '/home/httpd/lib/perl/';
use Apache::lonlocal();
use Apache::loncommon();
+use Digest::SHA;
sub get_checksums {
my ($distro,$londaemons,$lonlib,$lonincludes,$lontabdir) = @_;
@@ -62,12 +63,8 @@ sub get_checksums {
}
push(@paths,('/home/httpd/cgi-bin/*.pl','/home/httpd/cgi-bin/*.png'));
my $confdir = '/etc/httpd/conf';
- my $sha = 'SHA1';
if ($distro =~ /^(ubuntu|debian)(\d+)$/) {
$confdir = '/etc/apache2';
- if (($1 eq 'ubuntu') && ($2 >= 12)) {
- $sha = 'SHA';
- }
} elsif ($distro =~ /^sles(\d+)$/) {
if ($1 >= 10) {
$confdir = '/etc/apache2';
@@ -78,14 +75,12 @@ sub get_checksums {
}
}
push(@paths,("$confdir/loncapa_apache.conf","$confdir/startup.pl"));
- if ($sha eq 'SHA1') {
- require Digest::SHA1;
- } else {
- require Digest::SHA;
+ if ($lontabdir) {
+ push(@paths,$lontabdir.'/mydesk.tab');
}
if (@paths) {
my $pathstr = join (' ',@paths);
- if (open($dirh,"grep '$revtag' $pathstr |")) {
+ if (open($dirh,"grep '$revtag' $pathstr 2>&1 |")) {
while (my $line=<$dirh>) {
if ($line =~ m{^([^#]+):#\s\\s[\w.]+,v\s([\d.]+)\s}) {
$versions{$1} = $2;
@@ -98,12 +93,7 @@ sub get_checksums {
my $sum;
if (open(my $fh,"<$key")) {
binmode $fh;
- my $sha_obj;
- if ($sha eq 'SHA') {
- $sha_obj = Digest::SHA->new();
- } else {
- $sha_obj = Digest::SHA1->new();
- }
+ my $sha_obj = Digest::SHA->new();
$sha_obj->addfile($fh);
$sum = $sha_obj->hexdigest;
close($fh);
@@ -124,7 +114,15 @@ sub get_checksums {
sub compare_checksums {
my ($target,$lonhost,$version,$serversums,$serverversions) = @_;
- my ($message,$numchg);
+ my ($message,$numchg,$linefeed);
+ if ($target eq 'web') {
+ $linefeed = '
';
+ } else {
+ $linefeed = "\n";
+ }
+ if (!$Apache::lonlocal::lh) {
+ &Apache::lonlocal::get_language_handle();
+ }
if ((ref($serversums) eq 'HASH') && (keys(%{$serversums}))) {
my $checksums = &Apache::lonnet::fetch_dns_checksums();
my (%extra,%missing,%diffs,%stdsums,%stdversions);
@@ -143,8 +141,10 @@ sub compare_checksums {
$numchg ++;
}
} else {
- $missing{$key} = 1;
- $numchg ++;
+ unless ((-e $key) && (-B $key)) {
+ $missing{$key} = 1;
+ $numchg ++;
+ }
}
}
foreach my $key (keys(%{$serversums})) {
@@ -155,11 +155,11 @@ sub compare_checksums {
}
}
if ($numchg) {
- $message =
+ $message =
&Apache::lonlocal::mt('[quant,_1,difference was,differences were] found'.
- ' between LON-CAPA modules installed on your server ([_2])'.
- ' and those expected for the LON-CAPA version ([_3])'.
- ' which you are running.',$numchg,$lonhost,$version);
+ ' between LON-CAPA modules installed on your server [_2]'.
+ ' and those expected for the LON-CAPA version you are'.
+ ' currently running.',$numchg,"($lonhost)$linefeed");
if ($target eq 'web') {
$message = '
'.$message.'
'; } else { @@ -175,8 +175,8 @@ sub compare_checksums { } } if (@diffversion > 0) { - my $text = - &Apache::lonlocal::mt('The following [quant,_1,local file is a,local files are]'. + my $text = + &Apache::lonlocal::mt('The following [quant,_1,file is a,files are]'. ' different version(s) from that expected for LON-CAPA [_2]:', scalar(@diffversion),$version); if ($target eq 'web') { @@ -194,7 +194,7 @@ sub compare_checksums { my $revnum = $stdversions{$file}; if ($target eq 'web') { $message .= &Apache::loncommon::start_data_table_row(). - '