X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=handlers%2Frdiff.helper;h=2ad2a49201d88fe13a95daf8f8538c94f8406cd1;hb=67b5cf70d7a48bf9333e448b0d1ca53aacc252ea;hp=83549ecaa3af9fdc6e8a088982defb84da2c154a;hpb=e8cf41e99e1650ba8c8f187ae5e3ca3c0fa56ee1;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/handlers/rdiff.helper b/handlers/rdiff.helper index 83549ec..2ad2a49 100644 --- a/handlers/rdiff.helper +++ b/handlers/rdiff.helper @@ -1,22 +1,27 @@ -rdiff_wizard() { - require_packages rdiff-backup - startForm "rdiff action wizard" - formItem "keep" "60D" - formItem "dest_directory" "/backups/mybackup" - formItem "dest_host" "backuphost" - formItem "dest_user" "backupuser" - displayForm +HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup" +do_rdiff_dest() { + formBegin "rdiff action wizard" + formItem "keep" "$rdiff_keep" + formItem "dest_directory" "$rdiff_directory" + formItem "dest_host" "$rdiff_host" + formItem "dest_user" "$rdiff_user" + formDisplay [ $? = 1 ] && return; set -- $REPLY - keep=$1 - directory=$2 - host=$3 - user=$4 - - startForm "rdiff action wizard: includes" + rdiff_keep=$1 + rdiff_directory=$2 + rdiff_host=$3 + rdiff_user=$4 + + _dest_done="(DONE)" + setDefault conn +} + +do_rdiff_src() { + formBegin "rdiff action wizard: includes" formItem include /var/spool/cron/crontabs formItem include /var/backups formItem include /etc @@ -27,46 +32,133 @@ rdiff_wizard() { formItem include formItem include formItem include - displayForm - + formDisplay [ $? = 1 ] && return; - includes= + + rdiff_includes= set -o noglob for i in $REPLY; do - [ "$i" != "_empty_" ] && includes="$includes\ninclude = $i" + [ "$i" != "" ] && rdiff_includes="$rdiff_includes\ninclude = $i" done set +o noglob - - startForm "rdiff action wizard: excludes" + + formBegin "rdiff action wizard: excludes" formItem exclude '/home/*/.gnupg' formItem exclude formItem exclude - displayForm - + formDisplay [ $? = 1 ] && return; - excludes= + rdiff_excludes= set -o noglob for i in $REPLY; do - [ "$i" != "_empty_" ] && excludes="$excludes\nexclude = $i" + [ "$i" != "" ] && rdiff_excludes="$rdiff_excludes\nexclude = $i" done set +o noglob - + + _src_done="(DONE)" + setDefault dest +} + +do_rdiff_con() { + if [ "$_dest_done" = "" ]; then + msgBox "rdiff action wizard: error" "You must first configure the destination" + return + else + booleanBox "rdiff action wizard" "This step will create a ssh key for the local root user with no passphrase (if one does not already exist), and attempt to copy root's public ssh key to authorized_keys file of $rdiff_user@$rdiff_host. This will allow the local root to make unattended backups to $rdiff_user@$rdiff_host. Are you sure you want to continue?" + [ $? = 1 ] && return + fi + + if [ ! -f /root/.ssh/id_dsa.pub -a ! -f /root/.ssh/id_rsa.pub ]; then + echo "Creating local root's ssh key" + ssh-keygen -t dsa -f /root/.ssh/id_dsa -N "" + echo "Done. hit return to continue" + read + fi + + ssh -o PreferredAuthentications=publickey $rdiff_host -l $rdiff_user "exit" 2> /dev/null + if [ $? -ne 0 ]; then + echo "Copying root's public ssh key to authorized_keys of $rdiff_user@$rdiff_host. Specify the password for user $rdiff_user@$rdiff_host." + ssh-copy-id -i /root/.ssh/id_[rd]sa.pub $rdiff_user@$rdiff_host + if [ $? -ne 0 ]; then + msgBox "rdiff action wizard: error" "Failed to connect to $rdiff_user@$rdiff_host. Make sure you have the username and password correct." + return + else + echo "Done. hit return to continue" + read + fi + else + echo "root@localhost is already in authorized_keys of $rdiff_user@$rdiff_host. hit return to continue" + read + fi + _con_done="(DONE)" + setDefault finish +} + +do_rdiff_finish() { get_next_filename $configdirectory/90.rdiff cat > $next_filename <> $next_filename - echo -e "$excludes" >> $next_filename + echo -n -e "$rdiff_includes" >> $next_filename + echo -e "$rdiff_excludes" >> $next_filename cat >> $next_filename <