An example of good key handling practices?
After looking at a few of the backups, I've decided that bitcoind needs a keypoolrefill prior to making the backup.
The default value is 100, but I feel that the code could auto-scale up for large sites if it recorded the number of records that were dumped each time.
Replace the two occurrences of YOUREMAIL.
#!/usr/bin/env perl
use common::sense;
use Fcntl qw(O_RDONLY O_NONBLOCK);
use POSIX qw(mkfifo);
use File::Temp qw(mktemp);
use File::Copy qw(copy);
my ( undef, $api ) = do '/home/btc/.bitcoin/bitcoin.PL';
my @fh;
my $unopened_file = mktemp("/home/btc/.backup${$}XXXXX");
$SIG{INT} = sub { die };
END { unlink $unopened_file }
mkfifo( $unopened_file, 0600 ) || die "mkfifo $unopened_file failed: $!";
sysopen( $fh[0], $unopened_file, O_RDONLY | O_NONBLOCK )
|| die "open $unopened_file failed: $!";
open( $fh[1],
'|gpg --batch --trust-model always -e -a -r "YOUREMAIL"|mail -s Bitcoin_Backup YOUREMAIL'
) || die "|gpg|mail failed: $!";
$api->call( 'dumpwallet', "$unopened_file" );
copy($fh[0],$fh[1]) || die "copy $unopened_file |gpg|mail failed: $!";
bitcoin.PL contains.
use Finance::Bitcoin;
my $wallet = Finance::Bitcoin::Wallet->new(
'http://bitcoinrpc:blahblahblah@127.0.0.1:8332/'
);
( $wallet, $wallet->api );
Actually, this doesn't work with the new 0.10. I had to switch out using a regular file, less secure, instead of the FIFO this code uses and worked with previous versions.