X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=configure.pl;h=433a0168c23e4f28f6ee3b71c2119b29fb9561ec;hp=f20682a93e02777b2e90fee5b37b6073133461da;hb=refs%2Ftags%2Fv3_0_0beta1;hpb=523fdef21f0ca0d691a0b8c95ca76b18a1adb60a diff --git a/configure.pl b/configure.pl index f20682a..433a016 100755 --- a/configure.pl +++ b/configure.pl @@ -37,7 +37,7 @@ # #======================================================================== # -# Version 2.1.0beta1, released 9 Apr 2004. +# Version 3.0.0alpha, released 8 Jul 2006. # # See http://backuppc.sourceforge.net. # @@ -87,6 +87,7 @@ if ( !GetOptions( "cgi-dir=s", "compress-level=i", "config-path=s", + "config-dir=s", "data-dir=s", "dest-dir=s", "fhs!", @@ -95,6 +96,7 @@ if ( !GetOptions( "html-dir=s", "html-dir-url=s", "install-dir=s", + "log-dir=s", "man", "set-perms!", "uid-ignore!", @@ -105,6 +107,7 @@ pod2usage(1) if ( $opts{help} ); pod2usage(-exitstatus => 0, -verbose => 2) if $opts{man}; my $DestDir = $opts{"dest-dir"}; +$DestDir = "" if ( $DestDir eq "/" ); if ( !$opts{"uid-ignore"} && $< != 0 ) { print < Full path to existing main config.pl", $ConfigPath, "config-path"); @@ -173,6 +184,7 @@ while ( 1 ) { print("Need to specify a valid --config-path for upgrade\n"); exit(1); } + $ConfigFileOK = 0; } $opts{fhs} = 1 if ( !defined($opts{fhs}) && $ConfigPath eq "" ); $opts{fhs} = 0 if ( !defined($opts{fhs}) ); @@ -185,9 +197,12 @@ if ( $ConfigPath ne "" && -r $ConfigPath ) { %Conf = $bpc->Conf(); %OrigConf = %Conf; if ( !$opts{fhs} ) { - ($Conf{TopDir} = $ConfigPath) =~ s{/[^/]+/[^/]+$}{}; + ($Conf{TopDir} = $ConfigPath) =~ s{/[^/]+/[^/]+$}{} + if ( $Conf{TopDir} eq '' ); + $bpc->{LogDir} = $Conf{LogDir} = "$Conf{TopDir}/log" + if ( $Conf{LogDir} eq '' ); } - $Conf{ConfDir} = $confDir; + $bpc->{ConfDir} = $Conf{ConfDir} = $confDir; my $err = $bpc->ServerConnect($Conf{ServerHost}, $Conf{ServerPort}, 1); if ( $err eq "" ) { print <[]. # +$Conf{EMailFromUserName} ||= $Conf{BackupPCUser}; +$Conf{EMailAdminUserName} ||= $Conf{BackupPCUser}; # # Guess $Conf{CgiURL} @@ -715,6 +731,47 @@ if ( defined($Conf{SmbClientTimeout}) ) { delete($Conf{SmbClientTimeout}); } +# +# Replace --devices with -D in RsyncArgs and RsyncRestoreArgs +# +foreach my $param ( qw(RsyncArgs RsyncRestoreArgs) ) { + next if ( !defined($newVars->{$param}) ); + $newConf->[$newVars->{$param}]{text} =~ s/--devices/-D/g; +} + +# +# Merge any new user-editable parameters into CgiUserConfigEdit +# by copying the old settings forward. +# +if ( defined($Conf{CgiUserConfigEdit}) ) { + # + # This is a real hack. The config file merging is done in text + # form without actually instantiating the new conf structure. + # So we need to extract the new hash of settings, update it, + # and merge the text. Ugh... + # + my $new; + my $str = $distConf->[$distVars->{CgiUserConfigEdit}]{text}; + + $str =~ s/^\s*\$Conf\{.*?\}\s*=\s*/\$new = /m; + eval($str); + foreach my $p ( keys(%$new) ) { + $new->{$p} = $Conf{CgiUserConfigEdit}{$p} + if ( defined($Conf{CgiUserConfigEdit}{$p}) ); + } + $Conf{CgiUserConfigEdit} = $new; + my $d = Data::Dumper->new([$new], [*value]); + $d->Indent(1); + $d->Terse(1); + my $value = $d->Dump; + $value =~ s/(.*)\n/$1;\n/s; + $newConf->[$newVars->{CgiUserConfigEdit}]{text} + =~ s/(\s*\$Conf\{.*?\}\s*=\s*).*/$1$value/s; +} + +# +# Now backup and write the config file +# my $confCopy = "$dest.pre-__VERSION__"; if ( -f $dest && !-f $confCopy ) { # @@ -768,9 +825,9 @@ Ok, it looks like we are finished. There are several more things you will need to do: - Browse through the config file, $Conf{ConfDir}/config.pl, - and make sure all the settings are correct. In particular, you - will need to set the smb share password and user name, backup - policies and check the email message headers and bodies. + and make sure all the settings are correct. In particular, + you will need to set \$Conf{CgiAdminUsers} so you have + administration privileges in the CGI interface. - Edit the list of hosts to backup in $Conf{ConfDir}/hosts. @@ -805,9 +862,9 @@ EOF } eval "use File::RsyncP;"; -if ( !$@ && $File::RsyncP::VERSION < 0.52 ) { +if ( !$@ && $File::RsyncP::VERSION < 0.64 ) { print("\nWarning: you need to upgrade File::RsyncP;" - . " I found $File::RsyncP::VERSION and BackupPC needs 0.52\n"); + . " I found $File::RsyncP::VERSION and BackupPC needs 0.64\n"); } exit(0); @@ -939,7 +996,7 @@ sub ConfigMerge { my($old, $oldVars, $new, $newVars) = @_; my $posn = 0; - my $res; + my($res, $resVars); # # Find which config parameters are not needed any longer @@ -971,7 +1028,10 @@ sub ConfigMerge push(@$res, $new); } } - return $res; + for ( my $i = 0 ; $i < @$res ; $i++ ) { + $resVars->{$res->[$i]{var}} = $i; + } + return ($res, $resVars); } sub my_chown @@ -1061,6 +1121,12 @@ Examples Set the configuration compression level to N. Default is 3 if Compress::Zlib is installed. +=item B<--config-dir CONFIG_DIR> + +Configuration directory for new installations. Defaults +to /etc/BackupPC with FHS. Automatically extracted +from --config-path for existing installations. + =item B<--config-path CONFIG_PATH> Path to the existing config.pl configuration file for BackupPC. @@ -1143,6 +1209,10 @@ Example: --install-dir /usr/local/BackupPC +=item B<--log-dir LOG_DIR> + +Log directory. Defaults to /var/log/BackupPC with FHS. + =item B<--man> Prints the manual page and exits. @@ -1191,7 +1261,7 @@ Craig Barratt =head1 COPYRIGHT -Copyright (C) 2001-2004 Craig Barratt. +Copyright (C) 2001-2006 Craig Barratt. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by