#!/usr/bin/perl
# loncaparestoreconfigurations
# Scott Harrison, 10/25/2000
# Scott Harrison, 12/14/2000
# This tool helps in updating a system. It restores backed-up
# configuration files (.rpmsave or other backup notations).
# By default, the .rpmsave suffix is used.
# Alternatively, there can be two other invocations
# Invocation #1:
# ARGV[0]=suffix
# ARGV[1]=.bak
# Invocation #2:
# ARGV[0]=lasttimestamp
# The criteria for the lasttimestamp is that the
# file suffix is a '.' followed by a 14-digit
# time-stamp (YYYYMMDDhhmmss).
# The time-stamp with the greatest value is
# taken as the backup file.
my $suffix=".rpmsave";
my $suffixpragma="";
if ($ARGV[0] eq 'suffix') {
$suffix=$ARGV[1] if $suffix=~/^[\.\w]+$/;
}
elsif ($ARGV[0] eq 'lasttimestamp') {
$suffixpragma="lasttimestamp";
}
use strict;
my @special_conf_files=(
"/etc/httpd/conf/access.conf",
"/etc/smb.conf"
);
my @generic_conf_files=(
"/home/httpd/lonTabs/hosts.tab",
"/home/httpd/lonTabs/spare.tab",
"/etc/krb.conf",
"/etc/ntp.conf",
);
my @perlsetvars=("lonHostID","lonRole","lonAdmEMail","lonDefDomain","lonLoadLim","lonExpire");
my %pvar;
foreach (@special_conf_files) {
if (/^\/etc\/httpd\/conf\/access.conf$/) {
if ($suffixpragma eq 'lasttimestamp') {
$suffix=getsuffix('/etc/httpd/conf/access.conf');
}
my $template=`/bin/cat /etc/httpd/conf/access.conf`;
my $rpmsave=`/bin/cat /etc/httpd/conf/access.conf$suffix`;
`/bin/mv /etc/httpd/conf/access.conf /etc/httpd/conf/access.conf.template`;
foreach my $psv (@perlsetvars) {
$rpmsave=~/\nPerlSetVar\s+$psv\s+(\S+)/;
my $pval=$1;
$template=~s/(\nPerlSetVar\s+$psv\s+)\S+/$1$pval/;
$pvar{$psv}=$pval;
}
open OUT,">/etc/httpd/conf/access.conf";
print OUT $template;
close OUT;
}
if (/^\/etc\/smb.conf$/) {
if ($suffixpragma eq 'lasttimestamp') {
$suffix=getsuffix('/etc/smb.conf');
}
my $template=`/bin/cat /etc/smb.conf`;
foreach my $psv (@perlsetvars) {
$template=~s/\{\{\{\{\[(.*?)\]\}\}\}\}/$pvar{$1}/ge;
}
open OUT,">/etc/smb.conf";
print OUT $template;
close OUT;
}
}
foreach (@generic_conf_files) {
my $file=$_;
if ($suffixpragma eq 'lasttimestamp') {
$suffix=getsuffix($file);
}
if (-e "$file$suffix") {
`/bin/mv $file $_.template`;
`/bin/cp $file$suffix $file`;
}
}
sub getsuffix {
my ($file)=@_;
print "$file\n";
my $dir=$file; $dir=~s/([^\/]+)$//;
my $filename=$1;
opendir(DIR,$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];
return $suffix;
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>