+
+ _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
+ echo "Couldn't copy root's public ssh key to authorized_keys of $rdiff_user@$rdiff_host. This time, testing whether directory is writable."
+ ssh $rdiff_user@$rdiff_host 'test -w .ssh || test -w .'
+ case $? in
+ 0 ) msgBox "rdiff action wizard: error" "Directories are writable: Probably just a typo the first time." ;;
+ 1 ) msgBox "rdiff action wizard: error" "Connected successfully to $rdiff_user@$rdiff_host, but unable to write. Check ownership and modes of ~$rdiff_user on $rdiff_host." ;;
+ 255 ) msgBox "rdiff action wizard: error" "Failed to connect to $rdiff_user@$rdiff_host. Check hostname, username, and password." ;;
+ * ) msgBox "rdiff action wizard: error" "Unexpected error." ;;
+ esac
+ 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() {