-#!/bin/perl
+#!/usr/bin/env perl
#============================================================= -*-perl-*-
#
# configure.pl: Configuration and installation program for BackupPC
# Craig Barratt <cbarratt@users.sourceforge.net>
#
# COPYRIGHT
-# Copyright (C) 2001-2007 Craig Barratt
+# Copyright (C) 2001-2010 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
"cgi-dir=s",
"compress-level=i",
"config-path=s",
+ "config-override=s%",
"config-dir=s",
"data-dir=s",
"dest-dir=s",
# Create defaults for FHS setup
#
if ( $opts{fhs} ) {
- $Conf{TopDir} ||= "/data/BackupPC";
- $Conf{ConfDir} ||= $opts{"config-dir"} || "/etc/BackupPC";
- $Conf{InstallDir} ||= "/usr/local/BackupPC";
- $Conf{LogDir} ||= $opts{"log-dir"} || "/var/log/BackupPC";
+ $Conf{TopDir} ||= $opts{"data-dir"} || "/data/BackupPC";
+ $Conf{ConfDir} ||= $opts{"config-dir"} || "/etc/BackupPC";
+ $Conf{InstallDir} ||= $opts{"install-dir"} || "/usr/local/BackupPC";
+ $Conf{LogDir} ||= $opts{"log-dir"} || "/var/log/BackupPC";
+} else {
+ $Conf{TopDir} ||= $opts{"data-dir"} || "/data/BackupPC";
+ $Conf{ConfDir} ||= $opts{"config-dir"} || "$Conf{TopDir}/conf";
+ $Conf{InstallDir} ||= $opts{"install-dir"} || "/usr/local/BackupPC";
+ $Conf{LogDir} ||= $opts{"log-dir"} || "$Conf{TopDir}/log";
}
#
foreach my $prog ( sort(keys(%Programs)) ) {
my $path;
foreach my $subProg ( split(/\//, $prog) ) {
- $path = FindProgram("$ENV{PATH}:/bin:/usr/bin:/sbin:/usr/sbin",
+ $path = FindProgram("$ENV{PATH}:/usr/bin:/bin:/sbin:/usr/sbin",
$subProg) if ( !length($path) );
}
$Conf{$Programs{$prog}} = $path if ( !length($Conf{$Programs{$prog}}) );
package installed (see www.cpan.org). Compression will provide around a
40% reduction in pool size, at the expense of cpu time. You can leave
compression off and run BackupPC without compression, in which case you
-should leave the compression level at 0 (which means off). You could
-install Compress::Zlib and turn compression on later, but read the
-documentation first about how to do this. Or the better choice is
-to quit, install Compress::Zlib, and re-run configure.pl.
+should leave the compression level at 0 (which means off). Or the better
+choice is to quit, install Compress::Zlib, and re-run configure.pl.
EOF
} elsif ( $Conf{CompressLevel} ) {
print <<EOF;
BackupPC now supports pool file compression. Since you are upgrading
-BackupPC you probably have existing uncompressed backups. You have
-several choices if you want to turn on compression. You can run
-the script BackupPC_compressPool to convert everything to compressed
-form. Or you can simply turn on compression, so that new backups
-will be compressed. This will increase the pool storage requirement,
-since both uncompressed and compressed copies of files will be stored.
-But eventually the old uncompressed backups will expire, recovering
-the pool storage. Please see the documentation for more details.
+BackupPC you probably have existing uncompressed backups. You could
+turn on compression, so that new backups will be compressed. This
+will increase the pool storage requirement, since both uncompressed
+and compressed copies of files will be stored. But eventually the old
+uncompressed backups will expire, recovering the pool storage. Please
+see the documentation for more details.
If you are not sure what to do, leave the Compression Level at 0,
which disables compression. You can always read the documentation
Compress::Zlib module (see www.cpan.org). For now, leave
the compression level set at 0 to disable compression. If you
want you can install Compress::Zlib and turn compression on.
-Please see the documentation for more details about converting
-old backups to compressed form.
EOF
}
print <<EOF;
-BackupPC's CGI script needs to display various GIF images that
-should be stored where Apache can serve them. They should be
-placed somewhere under Apache's DocumentRoot. BackupPC also
-needs to know the URL to access these images. Example:
+BackupPC's CGI script needs to display various PNG/GIF images that
+should be stored where Apache can serve them. They should be placed
+somewhere under Apache's DocumentRoot. BackupPC also needs to know
+the URL to access these images. Example:
- Apache image directory: /usr/local/apache/htdocs/BackupPC
+ Apache image directory: /var/www/htdocs/BackupPC
URL for image directory: /BackupPC
The URL for the image directory should start with a slash.
lib/BackupPC/Storage
lib/BackupPC/Xfer
lib/BackupPC/Zip
+ lib/Net/FTP
) ) {
next if ( -d "$DestDir$Conf{InstallDir}/$dir" );
mkpath("$DestDir$Conf{InstallDir}/$dir", 0, 0755);
printf("Making init.d scripts\n");
foreach my $init ( qw(gentoo-backuppc gentoo-backuppc.conf linux-backuppc
solaris-backuppc debian-backuppc freebsd-backuppc
- suse-backuppc slackware-backuppc ) ) {
+ freebsd-backuppc2 suse-backuppc slackware-backuppc ) ) {
InstallFile("init.d/src/$init", "init.d/$init", 0444);
}
+printf("Making Apache configuration file for suid-perl\n");
+InstallFile("httpd/src/BackupPC.conf", "httpd/BackupPC.conf", 0644);
+
printf("Installing docs in $DestDir$Conf{InstallDir}/doc\n");
foreach my $doc ( qw(BackupPC.pod BackupPC.html) ) {
InstallFile("doc/$doc", "$DestDir$Conf{InstallDir}/doc/$doc", 0444);
=~ s/(\s*\$Conf\{.*?\}\s*=\s*).*/$1$value/s;
}
+#
+# Apply any command-line configuration parameter settings
+#
+foreach my $param ( keys(%{$opts{"config-override"}}) ) {
+ my $val = eval { $opts{"config-override"}{$param} };
+ if ( @$ ) {
+ printf("Can't eval --config-override setting %s=%s\n",
+ $param, $opts{"config-override"}{$param});
+ exit(1);
+ }
+ if ( !defined($newVars->{$param}) ) {
+ printf("Unkown config parameter %s in --config-override\n", $param);
+ exit(1);
+ }
+ $newConf->[$newVars->{$param}]{text} = $opts{"config-override"}{$param};
+}
+
#
# Now backup and write the config file
#
if ( $prog =~ /Lib.pm/ );
s/__BACKUPPCUSER__/$Conf{BackupPCUser}/g;
s/__CGIDIR__/$Conf{CgiDir}/g;
+ s/__IMAGEDIR__/$Conf{CgiImageDir}/g;
+ s/__IMAGEDIRURL__/$Conf{CgiImageDirURL}/g;
if ( $first && /^#.*bin\/perl/ ) {
#
# Fill in correct path to perl (no taint for >= 2.0.1).
Example:
- --html-dir /usr/local/apache/htdocs/BackupPC
+ --html-dir /var/www/htdocs/BackupPC
=item B<--html-dir-url URL>
=head1 COPYRIGHT
-Copyright (C) 2001-2007 Craig Barratt.
+Copyright (C) 2001-2010 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