From 280fdac2bc2146a73282b47b2c7ce66c19a0d3f2 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Tue, 29 Nov 2005 10:08:41 +0000 Subject: r3555@krups: intrigeri | 2005-11-15 13:59:57 +0100 Moved easydialog.sh to lib/ directory: more code is going to be shared, let's start here. --- handlers/Makefile.am | 3 +- handlers/Makefile.in | 7 +- handlers/dup.helper | 426 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 432 insertions(+), 4 deletions(-) create mode 100644 handlers/dup.helper (limited to 'handlers') diff --git a/handlers/Makefile.am b/handlers/Makefile.am index ae3ac04..dbe453d 100644 --- a/handlers/Makefile.am +++ b/handlers/Makefile.am @@ -1,5 +1,6 @@ -HANDLERS = dup maildir mysql.helper rdiff sys easydialog.sh makecd makecd.helper \ +HANDLERS = dup dup.helper maildir mysql.helper rdiff sys \ + makecd makecd.helper \ parseini rdiff.helper sys.helper ldap pgsql sh trac \ ldap.helper mysql pgsql.helper svn diff --git a/handlers/Makefile.in b/handlers/Makefile.in index a13a25a..df6dd3e 100644 --- a/handlers/Makefile.in +++ b/handlers/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. +# Makefile.in generated by automake 1.9.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. +# 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -111,7 +111,8 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ -HANDLERS = dup maildir mysql.helper rdiff sys easydialog.sh makecd makecd.helper \ +HANDLERS = dup dup.helper maildir mysql.helper rdiff sys \ + makecd makecd.helper \ parseini rdiff.helper sys.helper ldap pgsql sh trac \ ldap.helper mysql pgsql.helper svn diff --git a/handlers/dup.helper b/handlers/dup.helper new file mode 100644 index 0000000..7c172f0 --- /dev/null +++ b/handlers/dup.helper @@ -0,0 +1,426 @@ +HELPERS="$HELPERS dup:incremental_encrypted_remote_filesystem_backup" + +### Functions + +do_dup_host_includes() { + set -o noglob + # choose the files to backup + REPLY= + while [ -z "$REPLY" ]; do + formBegin "$dup_title - host system: includes" + for ((i=0; i < ${#dup_default_includes[@]} ; i++)); do + formItem include ${dup_default_includes[$i]} + done + formItem include "" + formItem include "" + formItem include "" + formDisplay + [ $? = 0 ] || return 1 + dup_includes=($REPLY) + done + set +o noglob +} + +do_dup_vserver() { + # choose the vservers to backup + vservers_chooser "$dup_title" + [ $? = 0 ] || return 1 + dup_vsnames="$vservers_chooser_vsnames" + + set -o noglob + # choose the files to backup + REPLY= + while [ -z "$REPLY" ]; do + formBegin "$dup_title - vservers: includes" + for ((i=0; i < ${#dup_default_includes[@]} ; i++)); do + formItem include ${dup_default_includes[$i]} + done + formItem include "" + formItem include "" + formItem include "" + formDisplay + [ $? = 0 ] || return 1 + dup_vsincludes=($REPLY) + done + set +o noglob +} + +do_dup_excludes() { + set -o noglob + formBegin "$dup_title: excludes" + for ((i=0; i < ${#dup_default_excludes[@]} ; i++)); do + formItem exclude ${dup_default_excludes[$i]} + done + formItem exclude "" + formItem exclude "" + formItem exclude "" + formDisplay + [ $? = 0 ] || return 1 + dup_excludes=($REPLY) + set +o noglob +} + +do_dup_src() { + host_or_vservers_chooser + [ $? = 0 ] || return 1 + case $host_or_vservers in + 'host') + do_dup_host_includes + [ $? = 0 ] || return 1 + ;; + 'vservers') + do_dup_vserver + [ $? = 0 ] || return 1 + ;; + 'both') + do_dup_host_includes + [ $? = 0 ] || return 1 + do_dup_vserver + [ $? = 0 ] || return 1 + ;; + *) + return 1 + ;; + esac + do_dup_excludes + [ $? = 0 ] || return 1 + + _src_done="(DONE)" + setDefault dest +} + +do_dup_dest() { + + local replyconverted + local thereply + + set -o noglob + REPLY= + while [ -z "$REPLY" -o -z "$dup_destdir" -o -z "$dup_desthost" -o -z "$dup_destuser" ]; do + formBegin "$dup_title - destination: last three items are compulsory" + formItem "desthost" "$dup_desthost" + formItem "destuser" "$dup_destuser" + formItem "destdir" "$dup_destdir" + formItem "keep" "$dup_keep" + formItem "incremental" "$dup_incremental" + formItem "bandwidthlimit" "$dup_bandwidth" + formItem "sshoptions" "$dup_sshoptions" + formDisplay + [ $? = 0 ] || return 1 + + IFS=$'' + replyconverted=`echo $REPLY | tr '\n' :` + IFS=$':' + thereply=($replyconverted) + IFS=$' \t\n' + + dup_desthost=${thereply[0]} + dup_destuser=${thereply[1]} + dup_destdir=${thereply[2]} + dup_keep=${thereply[3]} + dup_incremental=${thereply[4]} + dup_bandwidth=${thereply[5]} + dup_sshoptions=${thereply[6]} + + done + set +o noglob + + _dest_done="(DONE)" + setDefault gpg +} + +do_dup_gpg() { + + set -o noglob + + # encryptkey ? + REPLY= + while [ -z "$REPLY" -o -z "$dup_gpg_encryptkey" ]; do + inputBox "$dup_title - GnuPG" "Enter the GnuPG key ID to be used to encrypt the backups:" "$dup_gpg_encryptkey" + [ $? = 0 ] || return 1 + dup_gpg_encryptkey="$REPLY" + done + + # passphrase ? + REPLY= + while [ -z "$REPLY" -o -z "$dup_gpg_password" ]; do + passwordBox "$dup_title - GnuPG" "Enter the passphrase needed to unlock the key 0x$dup_gpg_encryptkey" + [ $? = 0 ] || return 1 + dup_gpg_password="$REPLY" + done + + # sign ? + booleanBox "$dup_title - GnuPG" "Sign the backups?" "$dup_gpg_sign" + if [ $? = 0 ]; then + dup_gpg_sign=yes + else + dup_gpg_sign=no + fi + + set +o noglob + _gpg_done="(DONE)" + setDefault conn +} + +do_dup_conn() { + _con_done="(DONE)" + setDefault adv +} + +do_dup_misc_options() { + + set -o noglob + local replyconverted + local thereply + + formBegin "$dup_title - misc. options" + formItem "nicelevel" "$dup_nicelevel" + formItem "testconnect" "$dup_testconnect" + formItem "options" "$dup_options" + formDisplay + [ $? = 0 ] || return 1 + + IFS=$'' + replyconverted=`echo $REPLY | tr '\n' :` + IFS=$':' + thereply=($replyconverted) + IFS=$' \t\n' + + dup_nicelevel=${thereply[0]} + dup_testconnect=${thereply[1]} + dup_options=${thereply[2]} + + set +o noglob +} + +# (rdiff.helper compatible interface... there could be some sode to share, hmmm.) +do_dup_adv() { + do_dup_misc_options + [ $? = 0 ] || return 1 + _adv_done="(DONE)" + setDefault finish +} + +do_dup_finish() { + get_next_filename $configdirectory/90.dup + cat > $next_filename <> $next_filename + done + set +o noglob + fi + + cat >> $next_filename < ... (default = all) +# vsinclude = +# Any path specified in vsinclude is added to the include list for each vserver +# listed in vsnames (or all if vsnames = all). +# E.g. vsinclude = /home will backup the /home partition in every vserver +# listed in vsnames. If you have vsnames = "foo bar baz", this vsinclude will +# add to the include list /vservers/foo/home, /vservers/bar/home and +# /vservers/baz/home. +# Vservers paths are derived from $VROOTDIR. + +EOF + + if [ "$host_or_vservers" == 'vservers' -o "$host_or_vservers" == 'both' ]; then + set -o noglob + echo "vsnames = \"$dup_vsnames\"\n" >> $next_filename + for ((i=0; i < ${#dup_vsincludes[@]} ; i++)); do + echo "vsinclude = ${dup_vsincludes[$i]}" >> $next_filename + done + set +o noglob + fi + + # excludes + cat >> $next_filename <> $next_filename + done + set +o noglob + + cat >> $next_filename <