diff options
Diffstat (limited to 'bin/bbstored/bbstored-config')
-rwxr-xr-x | bin/bbstored/bbstored-config | 284 |
1 files changed, 0 insertions, 284 deletions
diff --git a/bin/bbstored/bbstored-config b/bin/bbstored/bbstored-config deleted file mode 100755 index 7f1d7cc8..00000000 --- a/bin/bbstored/bbstored-config +++ /dev/null @@ -1,284 +0,0 @@ -#!/usr/bin/perl -# distribution boxbackup-0.11rc2 (svn version: 2072) -# -# Copyright (c) 2003 - 2008 -# Ben Summers and contributors. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All use of this software and associated advertising materials must -# display the following acknowledgment: -# This product includes software developed by Ben Summers. -# 4. The names of the Authors may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# [Where legally impermissible the Authors do not disclaim liability for -# direct physical injury or death caused solely by defects in the software -# unless it is modified by a third party.] -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -# -# -use strict; - -# should be running as root -if($> != 0) -{ - printf "\nWARNING: this should be run as root\n\n" -} - -# check and get command line parameters -if($#ARGV < 2) -{ - print <<__E; - -Setup bbstored config utility. - -Bad command line parameters. -Usage: - bbstored-config config-dir server-hostname username [raidfile-config] - -Parameters: - config-dir is usually /etc/box - server-hostname is the hostname that clients will use to connect to - this server - username is the user to run the server under - raidfile-config is optional. Use if you have a non-standard - raidfile.conf file. - -__E - exit(1); -} - -# check for OPENSSL_CONF environment var being set -if(exists $ENV{'OPENSSL_CONF'}) -{ - print <<__E; - ---------------------------------------- - -WARNING: - You have the OPENSSL_CONF environment variable set. - Use of non-standard openssl configs may cause problems. - ---------------------------------------- - -__E -} - -# default locations -my $default_config_location = '/etc/box/bbstored.conf'; - -# command line parameters -my ($config_dir,$server,$username,$raidfile_config) = @ARGV; - -$raidfile_config = $config_dir . '/raidfile.conf' unless $raidfile_config ne ''; - -# check server exists, but don't bother checking that it's actually this machine. -{ - my @r = gethostbyname($server); - if($#r < 0) - { - die "Server '$server' not found. (check server name, test DNS lookup failed.)" - } -} - -# check this exists -if(!-f $raidfile_config) -{ - print "The RaidFile configuration file $raidfile_config doesn't exist.\nYou may need to create it with raidfile-config.\nWon't configure bbstored without it.\n"; - exit(1); -} - -# check that the user exists -die "You shouldn't run bbstored as root" if $username eq 'root'; -my $user_uid = 0; -(undef,undef,$user_uid) = getpwnam($username); -if($user_uid == 0) -{ - die "User $username doesn't exist\n"; -} - -# check that directories are writeable -open RAIDCONF,$raidfile_config or die "Can't open $raidfile_config"; -{ - my %done = (); - while(<RAIDCONF>) - { - next unless m/Dir\d\s*=\s*(.+)/; - my $d = $1; - $d = $d.'/backup' if -e $d.'/backup'; - print "Checking permissions on $d\n"; - my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($d); - my $req_perms = ($uid == $user_uid)?0700:0007; - if(($mode & $req_perms) != $req_perms) - { - print "$username doesn't appear to have the necessary permissions on $d\n"; - print "Either adjust permissions, or create a directory 'backup' inside the\n"; - print "directory specified in raidfile.conf which is writable.\n"; - exit(1); - } - } -} -close RAIDCONF; - -# ssl stuff -my $private_key = "$config_dir/bbstored/$server-key.pem"; -my $certificate_request = "$config_dir/bbstored/$server-csr.pem"; -my $certificate = "$config_dir/bbstored/$server-cert.pem"; -my $ca_root_cert = "$config_dir/bbstored/clientCA.pem"; - -# other files -my $config_file = "$config_dir/bbstored.conf"; -my $accounts_file = "$config_dir/bbstored/accounts.txt"; - -# summarise configuration - -print <<__E; - -Setup bbstored config utility. - -Configuration: - Writing configuration file: $config_file - Writing empty accounts file: $accounts_file - Server hostname: $server - RaidFile config: $raidfile_config - -__E - -# create directories -if(!-d $config_dir) -{ - print "Creating $config_dir...\n"; - mkdir $config_dir,0755 or die "Can't create $config_dir"; -} - -if(!-d "$config_dir/bbstored") -{ - print "Creating $config_dir/bbstored\n"; - mkdir "$config_dir/bbstored",0755 or die "Can't create $config_dir/bbstored"; -} - -# create blank accounts file -if(!-f $accounts_file) -{ - print "Creating blank accounts file\n"; - open ACC,">$accounts_file"; - close ACC; -} - -# generate the private key for the server -if(!-f $private_key) -{ - print "Generating private key...\n"; - if(system("openssl genrsa -out $private_key 2048") != 0) - { - die "Couldn't generate private key." - } -} - -# generate a certificate request -if(!-f $certificate_request) -{ - die "Couldn't run openssl for CSR generation" unless - open(CSR,"|openssl req -new -key $private_key -sha1 -out $certificate_request"); - print CSR <<__E; -. -. -. -. -. -$server -. -. -. - -__E - close CSR; - print "\n\n"; - die "Certificate request wasn't created.\n" unless -f $certificate_request -} - -# write the configuration file -print "Writing configuration file $config_file\n"; -open CONFIG,">$config_file" or die "Can't open config file for writing"; -print CONFIG <<__E; - -RaidFileConf = $raidfile_config -AccountDatabase = $accounts_file - -# Uncomment this line to see exactly what commands are being received from clients. -# ExtendedLogging = yes - -# scan all accounts for files which need deleting every 15 minutes. - -TimeBetweenHousekeeping = 900 - -Server -{ - PidFile = /var/run/bbstored.pid - User = $username - ListenAddresses = inet:$server - CertificateFile = $certificate - PrivateKeyFile = $private_key - TrustedCAsFile = $ca_root_cert -} - - -__E - -close CONFIG; - -# explain to the user what they need to do next -my $daemon_args = ($config_file eq $default_config_location)?'':" $config_file"; - -print <<__E; - -=================================================================== - -bbstored basic configuration complete. - -What you need to do now... - -1) Sign $certificate_request - using the bbstored-certs utility. - -2) Install the server certificate and root CA certificate as - $certificate - $ca_root_cert - -3) You may wish to read the configuration file - $config_file - and adjust as appropraite. - -4) Create accounts with bbstoreaccounts - -5) Start the backup store daemon with the command - /usr/local/bin/bbstored$daemon_args - in /etc/rc.local, or your local equivalent. - -=================================================================== - -__E - - - |