####################################################
## Functions
+function check_perms() {
+ local file=$1
+ local perms=`ls -ld $file`
+ group_w_perm=${perms:5:1}
+ world_w_perm=${perms:8:1}
+ if [ "$group_w_perm" == "w" -o "$world_w_perm" == "w" ]; then
+ echo $perms
+ echo "helper scripts must not be group or world writable! Dying on file $file"
+ exit
+ fi
+ if [ `ls -ld $file | awk '{print $3}'` != "root" ]; then
+ echo "helper scripts must be owned by root! Dying on file $file"
+ exit
+ fi
+}
+
+
##
## returns the next available file name given a file
## in the form /etc/backup.d/10.sys
done
}
-doradiobox() {
- defaultchoice="red is.pretty on"
- choices="green is_nice_too off blue i_love_blue off yellow is.bright off orange make.me.hungry off"
- radioBox "radio title" "choose one color" $defaultchoice $choices
- case $? in
- 0) ;;
- 1) echo "color choice cancelled..."; sleep 1;;
- 255) echo "something went wrong, exiting..."
- exit 1 ;;
- esac
- result="$REPLY"
- msgBox "message title" "you said $result."
-}
-
+##
+## menu for the wizards
+##
donew() {
- menuBox "new action menu" "select an action to create" \
- return "return to main menu" \
- sys "general hardware and system info" \
- mysql "mysql database backup" \
- ldap "ldap database backup" \
- rdiff "incremental filesystem backup"
-
- [ $? = 1 ] && return;
- result="$REPLY"
- case "$result" in
- "sys") sys_wizard;;
- "mysql") mysql_wizard;;
- "ldap") ldap_wizard;;
- "rdiff") rdiff_wizard;;
- "return") return;;
- esac
+ listBegin "new action menu" "select an action to create"
+ listItem return "return to main menu"
+ for data in $HELPERS; do
+ data=${data//_/ }
+ helper_function=${data%%:*}
+ helper_info=${data##*:}
+ listItem $helper_function "$helper_info"
+ done
+ listDisplay menu
+
+ [ $? = 1 ] && return
+ result="$REPLY"
+ [ "$result" = "return" ] && return
+ result=${result}_wizard
+ $result
}
do_rm_action() {
read
}
+do_xedit() {
+ if [ -z "$EDITOR" -o ! -x "`which $EDITOR`" ]; then
+ if [ -h /etc/alternatives/editor -a -x "`readlink /etc/alternatives/editor`" ]; then
+ EDITOR="`readlink /etc/alternatives/editor`"
+ elif [ -x "`which nano`" ]; then
+ EDITOR="`which nano`"
+ elif [ -x "`which vim`" ]; then
+ EDITOR="`which vim`"
+ elif [ -x "`which vi`" ]; then
+ EDITOR="`which vi`"
+ else
+ echo "No suitable editor found."
+ echo "Please define $EDITOR or configure /etc/alternatives/editor."
+ exit
+ fi
+ fi
+ $EDITOR $1
+}
+
do_run_test() {
backupninja --test --run $1
echo "Hit return to continue..."
result="$REPLY"
case "$result" in
"view") dialog --textbox $action 0 0;;
- "xedit") $EDITOR $action;;
+ "xedit") do_xedit $action;;
"disable") do_disable $action; return;;
"enable") do_enable $action; return;;
"name") do_rename $action; return;;
#####################################################
## begin program
+if [ ! -x "`which dialog`" ]; then
+ echo "ninjahelper is a menu based wizard for backupninja."
+ echo "It requires 'dialog' in order to run. Do you want to install dialog now?"
+ while true; do
+ echo -n "(yes/no): "
+ read install
+ if [ "$install" == "yes" ]; then
+ apt-get install dialog
+ break
+ elif [ "$install" == "no" ]; then
+ exit
+ else
+ echo "You must answer 'yes' or 'no'"
+ fi
+ done
+fi
+
conffile="/etc/backupninja.conf"
if [ ! -r "$conffile" ]; then
echo "Configuration file $conffile not found."
exit 1
fi
+# load all the helpers
+HELPERS=""
for file in `find $scriptdir -follow -name '*.helper'`; do
+ check_perms $file
. $file
done