--- loncom/build/loncaparestoreconfigurations 2002/07/27 22:39:56 1.14 +++ loncom/build/loncaparestoreconfigurations 2003/01/22 02:00:01 1.15 @@ -2,17 +2,21 @@ # loncaparestoreconfigurations - restore data to new LON-CAPA conf files # -# $Id: loncaparestoreconfigurations,v 1.14 2002/07/27 22:39:56 harris41 Exp $ +# $Id: loncaparestoreconfigurations,v 1.15 2003/01/22 02:00:01 harris41 Exp $ # # YEAR=2000 -# 10/25, 12/14 Scott Harrison +# Scott Harrison 10/25, 11/02, 12/14 +# YEAR=2001 +# Scott Harrison 05/09, 06/01, 11/27 # YEAR=2002 -# Scott Harrison, 05/15 +# Scott Harrison 03/03, 05/15, 7/27 +# YEAR=2003 +# Scott Harrison 01/21 # ### # This tool helps in updating a system. It restores information for -# configuration files (.lpmlsave or other backup notations). +# configuration files (.lpmlnew or other backup notations). # By default, the .lpmlsave suffix is used. # Alternatively, there can be two other invocations @@ -29,7 +33,7 @@ # taken as the backup file. # --------------------------------------------- Define program version variable -$VERSION = sprintf("%d.%02d", q$Revision: 1.14 $ =~ /(\d+)\.(\d+)/); +$VERSION = sprintf("%d.%02d", q$Revision: 1.15 $ =~ /(\d+)\.(\d+)/); # ---------------------------------------------- Process command-line arguments my $suffix='.lpmlsave'; @@ -46,7 +50,6 @@ use strict; # restrict unsafe and poorly # ------------------------------------ Configuration files to be concerned with my @special_conf_files=( '/etc/httpd/conf/loncapa.conf', - '/etc/httpd/conf/access.conf', ); my %pvar; # store the PerlSetVar variable key/value combinations @@ -63,142 +66,131 @@ CONFLOOP: foreach (@special_conf_files) my $lpmlnew_file; # file location of information that needs to be modified -# ------------------------------------------- access.conf (becoming deprecated) - if (/^\/etc\/httpd\/conf\/access.conf$/ and - -e '/etc/httpd/conf/access.conf') { - if ($suffixpragma eq 'lasttimestamp' and - -e '/etc/httpd/conf/access.conf'.$suffix) { - $suffix=&getsuffix('/etc/httpd/conf/access.conf'); - unless (-e '/etc/httpd/conf/access.conf'.$suffix) { - next CONFLOOP; - } - $lpmlold="\n".&readfile('/etc/httpd/conf/access.conf'.$suffix); - $lpmlnew_file='/etc/httpd/conf/access.conf'; - $lpmlnew=&readfile($lpmlnew_file); - } - else { - $lpmlold="\n".&readfile('/etc/httpd/conf/access.conf'); - $lpmlnew_file='/etc/httpd/conf/access.conf'.$suffix; - unless (-e $lpmlnew_file) { - next CONFLOOP; - } - $lpmlnew=&readfile($lpmlnew_file); - } - while($lpmlold=~/\n\s*PerlSetVar\s+(\S+)\s+(\S+)/mcg) { - my $pkey=$1; my $pval=$2; - $lpmlnew=~s/(\n\s*PerlSetVar\s+$pkey\s+)\S+/$1$pval/; - $pvar{$pkey}=$pval; - } - } - # ---------------------------------------------------------------- loncapa.conf - elsif (/^\/etc\/httpd\/conf\/loncapa.conf$/ and - -e '/etc/httpd/conf/loncapa.conf') { + if (/^\/etc\/httpd\/conf\/loncapa.conf$/ and + -e '/etc/httpd/conf/loncapa.conf') + { if ($suffixpragma eq 'lasttimestamp' and - -e '/etc/httpd/conf/loncapa.conf') { + -e '/etc/httpd/conf/loncapa.conf') + { $suffix=&getsuffix('/etc/httpd/conf/loncapa.conf'); - unless (-e '/etc/httpd/conf/loncapa.conf'.$suffix) { + unless (-e '/etc/httpd/conf/loncapa.conf'.$suffix) + { next CONFLOOP; - } + } $lpmlold="\n".&readfile('/etc/httpd/conf/loncapa.conf'.$suffix); $lpmlnew_file='/etc/httpd/conf/loncapa.conf'; $lpmlnew=&readfile($lpmlnew_file); - } - else { + } + else + { $lpmlold="\n".&readfile('/etc/httpd/conf/loncapa.conf'); $lpmlnew_file='/etc/httpd/conf/loncapa.conf'.$suffix; - unless (-e $lpmlnew_file) { + unless (-e $lpmlnew_file) + { next CONFLOOP; - } + } $lpmlnew=&readfile($lpmlnew_file); - } - while($lpmlold=~/\n\s*PerlSetVar\s+(\S+)\s+(\S+)/mcg) { + } + while($lpmlold=~/\n\s*PerlSetVar\s+(\S+)\s+(\S+)/mcg) + { my $pkey=$1; my $pval=$2; $pvar{$pkey}=$pval; - } - foreach my $pkey (keys %pvar) { + } + foreach my $pkey (keys %pvar) + { my $pval=$pvar{$pkey}; $lpmlnew=~s/(\n\s*PerlSetVar\s+$pkey\s+)\S+/$1$pval/; - } + } open(OUT,'>'.$lpmlnew_file) or die('Cannot open '.$lpmlnew_file.' for output'."\n"); print(OUT $lpmlnew); close(OUT); - } + } -# -------------------------------------------------------------------- smb.conf - elsif (/^\/etc\/smb.conf$/ and -e "/etc/smb.conf$suffix") { - if ($suffixpragma eq 'lasttimestamp') { +# ---------------------- smb.conf (probably will be deprecated in 2004 or 2005) + elsif (/^\/etc\/smb.conf$/ and -e "/etc/smb.conf$suffix") + { + if ($suffixpragma eq 'lasttimestamp') + { $suffix=&getsuffix('/etc/smb.conf'); - unless (-e '/etc/httpd/conf/loncapa.conf'.$suffix) { + unless (-e '/etc/httpd/conf/loncapa.conf'.$suffix) + { next CONFLOOP; - } - $lpmlnew=&readfile('/etc/smb.conf'); - $lpmlnew_file='/etc/smb.conf'; - } - else { - $lpmlnew=&readfile('/etc/smb.conf'.$suffix); - $lpmlnew_file='/etc/smb.conf'.$suffix; - } - $lpmlnew=~s/\{\{\{\{\[(.*?)\]\}\}\}\}/$pvar{$1}/ge; + } + $lpmlnew = &readfile('/etc/smb.conf'); + $lpmlnew_file = '/etc/smb.conf'; + } + else + { + $lpmlnew = &readfile('/etc/smb.conf'.$suffix); + $lpmlnew_file = '/etc/smb.conf'.$suffix; + } + $lpmlnew =~ s/\{\{\{\{\[(.*?)\]\}\}\}\}/$pvar{$1}/ge; open(OUT,'>'.$lpmlnew_file) or die('Cannot open '.$lpmlnew_file.' for output'."\n"); print(OUT $lpmlnew); close(OUT); - } - elsif (/^\/etc\/samba\/smb.conf$/ and -e "/etc/samba/smb.conf$suffix") { - if ($suffixpragma eq 'lasttimestamp') { - $suffix=&getsuffix('/etc/samba/smb.conf'); - unless (-e '/etc/samba/smb.conf'.$suffix) { + } + elsif (/^\/etc\/samba\/smb.conf$/ and -e "/etc/samba/smb.conf$suffix") + { + if ($suffixpragma eq 'lasttimestamp') + { + $suffix = &getsuffix('/etc/samba/smb.conf'); + unless (-e '/etc/samba/smb.conf'.$suffix) + { next CONFLOOP; - } - $lpmlnew=&readfile('/etc/samba/smb.conf'); - $lpmlnew_file='/etc/samba/smb.conf'; - } - else { - $lpmlnew=&readfile('/etc/samba/smb.conf'.$suffix); - $lpmlnew_file='/etc/samba/smb.conf'.$suffix; - } - $lpmlnew=~s/\{\{\{\{\[(.*?)\]\}\}\}\}/$pvar{$1}/ge; + } + $lpmlnew = &readfile('/etc/samba/smb.conf'); + $lpmlnew_file = '/etc/samba/smb.conf'; + } + else + { + $lpmlnew = &readfile('/etc/samba/smb.conf'.$suffix); + $lpmlnew_file = '/etc/samba/smb.conf'.$suffix; + } + $lpmlnew =~ s/\{\{\{\{\[(.*?)\]\}\}\}\}/$pvar{$1}/ge; open(OUT,'>'.$lpmlnew_file) or die('Cannot open '.$lpmlnew_file.' for output'."\n"); print(OUT $lpmlnew); close(OUT); - } -} + } + } # --------------------------------- getsuffix: get the latest time stamp suffix # === INPUT: filename without suffix # === OUTPUT: the latest time stamp suffix; 14 digits YYYYMMDDhhmmss # === ERROR: cannot read the directory in which the filenames reside -sub getsuffix { - my ($file)=@_; +sub getsuffix ($) + { + my ($file) = @_; print("$file\n"); - my $dir=$file; $dir=~s/([^\/]+)$//; - my $filename=$1; + my $dir = $file; $dir =~ s/([^\/]+)$//; + my $filename = $1; opendir(DIR,$dir) or die('Cannot open directory '.$dir.' for viewing'."\n"); - my @a=grep {/$filename\.\d{14}/} readdir(DIR); + my @a = grep {/$filename\.\d{14}/} readdir(DIR); closedir(DIR); map {s/$filename\.//;} @a; - my @b=sort {$a<=>$b} @a; - my $suffix='.'.$b[$#b]; + my @b = sort {$a<=>$b} @a; + my $suffix = '.'.$b[$#b]; return($suffix); -} + } # -------------------------- readfile: get the file contents in a scalar string # === INPUT: filename # === OUTPUT: the filename's contents # === ERROR: cannot read the file # === NOTE: big files will hog computer memory -sub readfile { - my ($filename)=@_; - my $contents=''; +sub readfile ($) + { + my ($filename) = @_; + my $contents = ''; open(IN,'<'.$filename) or die ('Cannot read '.$filename."\n"); - while() {$contents.=$_;} + while() {$contents .= $_;} close(IN); return($contents); -} + } =pod @@ -311,7 +303,7 @@ invokes this script in B