RESEARCHUT
Minds With Innovations

RESEARCHUT - minds with innovations

07 Jul '05 - 378 W - + 7 - 3 Who says GUI Programming in shell is difficult ?

Today, I wanted a quick utility to help me enter passwords for encfs during mount.
I was looking for something plain, simple and userfriendly.
At the end I ended up to use the shell for it.

Yes, using dialog/Xdialog you can be a GUI programmer in minutes.

If the text is scrambled, you can download the script here.

Cheers!

:-)

#!/bin/bash

  1. encfsmount – A simple frontend for encfs
  2. (C) Ritesh Raj Sarraf July 2005
  1. Available only under the GPL

PATH=”/bin:/sbin:/usr/bin:/usr/sbin:/home/rrs/bin”
export PATH

XDIALOG_HIGH_DIALOG_COMPAT=1
export XDIALOG_HIGH_DIALOG_COMPAT

  1. && exec sudo “$0” “$@”

ASKPASS=`which ssh-askpass`;
CRYPT=”/mnt/windoze/.linuxrc”;
TARGET=”/var/tmp/.linuxrc”;
FUSERMOUNT=`which fusermount`;
ENCFS=`which encfs`;
ARGS=”-u”;

#set -vx

DIALOG=`which dialog`;
[ -n “$DISPLAY” ] && [ -x /usr/bin/Xdialog ] && DIALOG=“Xdialog”

mount()
{ # This is one good way to use dialog to accept passwords # But for some reason encfs isn’t able to read the password # supplied by dialog # Hence, I’m using ssh-askpass to get the password #$ENCFS $CRYPT $TMP —extpass=`$DIALOG —title “Password” —password —inputbox “Enter Password” 18 45 2`;

# This uses ssh-askpass $ENCFS $CRYPT $TARGET —extpass=$ASKPASS;

}

check_mount()
{ # Since encfs isn’t returning good exit status # I’m using this hack to figure out if the mount # passed or failed. grep -i encfs /etc/mtab; retval=$?;

case $retval in 0) $DIALOG —wrap —title “Information”\ —msgbox “Successfully Mounted!” 10 41;; 1) $DIALOG —wrap —title “Information”\ —msgbox “Mount Failed!” 10 41;;
esac
}

prelim_mount_check()
{ grep -i encfs /etc/mtab; retval=$?;

case $retval in 0) $DIALOG —wrap —title “Caution”\ —yesno “ALREADY MOUNTED!\nDo you want to umount ?” 0 0

case $? in 0) umount; esac;; 1) #$DIALOG —wrap —title “Information”\ #—yesno “Do you want to mount crypt ?”\ #case $? in # 0) mount; check_mount;; #esac;; esac }

umount()
{ $FUSERMOUNT -u $TARGET;
}

ask_passwd()
{ $DIALOG —wrap —title “Password”\ —help “Contact Author Ritesh Raj Sarraf\nEmail: rrs@researchut.com”\ —inputbox “Please enter your password” 18 45 2 > /tmp/passwd.$$;

retval=$?;
$INPUT=`cat /tmp/passwd.$$`; #rm -f /tmp/passwd.$$;

case $retval in 0) mount;; #echo “Password is ‘$input’”;; 1) echo “Cancelled”;; 255) echo “Box Closed”;;
esac
}

main()
{ $DIALOG —wrap —title “Question”\ —help “Contact Author Ritesh Raj Sarraf\nEmail: rrs@researchut.com”\ —yesno “Do you want to mount your encrypted filesystem ?” 0 0

case $? in 0) prelim_mount_check;; 255) $DIALOG —wrap —title “Aborted”\ —infobox “Cancelled”
esac
}

main

  
Remember personal info?

Emoticons / Textile

Sorry for the trouble but to prevent spam I require you to answer this silly question.
 

  (Register your username / Log in)

Notify:
Hide email:

Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.

Trackback link:

Please enable javascript to generate a trackback url