From: intrigeri Date: Tue, 9 Aug 2005 20:55:58 +0000 (+0000) Subject: ninjahelper: better check_perms(), improved xedit. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=fd756b9a6ca2f46738b0ffdd231167c9c254058a;p=matthijs%2Fupstream%2Fbackupninja.git ninjahelper: better check_perms(), improved xedit. git-svn-id: http://code.autistici.org/svn/backupninja/trunk@163 758a04ac-41e6-0310-8a23-8373a73cc35d --- diff --git a/changelog b/changelog index 51ee159..f2e11b1 100644 --- a/changelog +++ b/changelog @@ -20,6 +20,12 @@ version XX -- ... now checks if the specified vserver is running. now checks if $PGSQLDUMP/$PGSQLDUMPALL are available where needed. now checks if "postgres" user exists on the host/vserver. + changes to ninjahelper + check_perms() does not die anymore on group/world readable + helper scripts (now consistent with the "helper scripts + must not be group or world writable!" error msg). + xedit action now tries $EDITOR, then /etc/alternatives/editor, + then nano, vim and vi, and aborts if none of these exists. version 0.7 -- July 26 2005 added ninjahelper: a dialog based wizard for creating backupninja configs. diff --git a/ninjahelper b/ninjahelper index aedeaf5..817b47b 100755 --- a/ninjahelper +++ b/ninjahelper @@ -6,11 +6,12 @@ function check_perms() { local file=$1 local perms=`ls -ld $file` - perms=${perms:4:6} - if [[ "$perms" != "------" && "$perms" != "r--r--" ]]; then + 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 + 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" @@ -87,6 +88,25 @@ do_run() { 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..." @@ -130,7 +150,7 @@ doaction() { 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;;