RESEARCHUT -- Minds With Innovations
RESEARCHUT
Minds With Innovations

RESEARCHUT - minds with innovations

This site has been archived. The new interface is: HERE

Who says GUI Programming in shell is difficult ?

Thursday 07 July 2005 at 01:31 am.

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. © 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

No comments



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

Comment moderation is enabled on this site. This means that your comment will not be visible until it has been approved by an editor.

Remember personal info?
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.