#!/bin/bash
#rcrsn51 2010-12-20
#v2.4 2012-07-15
#gettexted by esmourguit february 2013

export TEXTDOMAIN=yassm
export OUTPUT_CHARSET=UTF-8

DOSHOW () {
  [ -d $HOME/YASSM ] || mkdir $HOME/YASSM
  rox $HOME/YASSM
}
export -f DOSHOW

DOUMOUNT () {
  for M in $(ls $HOME/YASSM); do
    rox -D $HOME/YASSM/$M
    umount $HOME/YASSM/$M
    rmdir $HOME/YASSM/$M
  done
  Xdialog --title "YASSM" --infobox "$(gettext 'All shares unmounted')" 0 0 2000
}
export -f DOUMOUNT

DOMOUNT () {

LINE=`grep -e "^$CHOICE," $TEMPDATA`

DESC=`echo $LINE | cut -d "," -f 1`
USER=`echo $LINE | cut -d "," -f 2 | tr -d " "`
PASSWORD=`echo $LINE | cut -d "," -f 3 | tr -d " "`
[ "$PASSWORD" = "***" ] && PASSWORD=$(Xdialog --stdout --title "YASSM" --password --inputbox Password 0 0)
SHARE=`echo $LINE | cut -d "," -f 4 | tr -d " "`
SERVER=`echo $LINE | cut -d "," -f 5 | tr -d " "`
OPTIONS=`echo $LINE | cut -d "," -f 6 | tr -d " " | tr ";" ","`

if [ -z "$SHARE" ]; then
  SHARE=$USER
fi
if [ -z "$SHARE" ]; then
  Xdialog --title "YASSM" --msgbox "$(gettext 'No share selected!')" 0 0
  exit
fi

if [ -z "$SERVER" ]; then
  Xdialog --title "YASSM" --msgbox "$(gettext 'No server selected!')" 0 0
  exit
fi

[ -z "$USER" ] && USER="guest"
AUTH="-o username="$USER
if [ -n "$PASSWORD" ]; then
  AUTH=$AUTH",password="$PASSWORD
else
  AUTH=$AUTH",guest"
fi

if [ -n "$OPTIONS" ]; then
  AUTH=$AUTH","$OPTIONS
fi

MYSHARE=$HOME/YASSM/$SHARE@$SERVER
MYSHARE="${MYSHARE// /.}"
mkdir -p $MYSHARE
umount $MYSHARE > /dev/null 2>&1   #in case it's already mounted

echo -n $SERVER | grep -q "^[0-9][0-9]*\."	#is this an IP address?
if [ $? -gt 0 ]; then
  IP=$(nmblookup $SERVER | tail -n 1 | cut -f 1 -d " ")
else
  IP=$SERVER
fi

SHARE="${SHARE//./ }"
mount.cifs //$IP/"$SHARE" $MYSHARE $AUTH > /dev/null 2>&1

if [ $? -eq 0 -o $? -eq 16 ]; then
  rox $MYSHARE
  ls $MYSHARE > /dev/null
else
  Xdialog --title "YASSM" --msgbox "$(gettext 'No connection to') $DESC!" 0 0
fi

}
export -f DOMOUNT

############################   End of functions

YASSMDIR=$HOME/.yassm
[ -d $YASSMDIR ] ||  mkdir -p $YASSMDIR
export YASSMDIR

DATA=$YASSMDIR/yassm-select.dat
[ -f $DATA ] || cp /usr/local/yassm/yassm-select.dat $YASSMDIR
export DATA

TEMPDATA=/tmp/shares.dat # strip off the instructions and convert none to null
tail -n+10 $DATA | sed 's/none//g' > $TEMPDATA
export TEMPDATA     

DIALOG="
<window title=\"YASSM v2.7\" icon-name=\"gtk-connect\">
<vbox>
  <frame $(gettext 'Shares')>
     <combobox>
       <variable>CHOICE</variable>"

while read L; do
  [ "$L" = "EOF" ] && break
  DESC=`echo $L | cut -d "," -f 1`
  DIALOG=$DIALOG"<item>"$DESC"</item>"
done < $TEMPDATA

DIALOG=$DIALOG"
     </combobox>
  </frame>
  <hbox>
     <button><label>$(gettext 'Edit')</label></button>
     <button><label>$(gettext 'Unmount')</label><action>DOUMOUNT</action></button>
     <button><label>$(gettext 'Show')</label><action>DOSHOW</action></button>
     <button><label>$(gettext 'Mount')</label><action>DOMOUNT</action></button>
     <button><label>$(gettext 'Quit')</label></button>
   </hbox>
</vbox>
</window>" 

export DIALOG
I=$IFS; IFS=""
for STATEMENTS in  $(gtkdialog3 -c --program DIALOG); do
  eval $STATEMENTS
done
IFS=$I

if [ "$EXIT" = "$(gettext 'Edit')" ]; then
  defaulttexteditor $DATA
  exec $0
fi
