#!/bin/bash
#rcrsn51 2010-12-20
#v2.0 for multi-user 2012-06-22
#gettexted by esmourguit february 2013

export TEXTDOMAIN=yassm
export OUTPUT_CHARSET=UTF-8

COMBOWIDGET () {
HEADING=$1; DATA=$2
COMBOLIST=""
for P in $DATA; do
  COMBOLIST="$COMBOLIST<item>$P</item>"
done

export DIALOG="
<window title=\"YASSM\">
<vbox>
   <frame $HEADING>
    <combobox>
      <variable>COMBOPICK</variable>
     $COMBOLIST 
    </combobox>
   </frame>
  <hbox>
     <button><label>$(gettext 'Select')</label></button>
     <button><label>$(gettext 'Cancel')</label></button>
  </hbox>
</vbox>
</window>
"

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

if [ "$EXIT" = "$(gettext 'Select')" ]; then
  echo $COMBOPICK
else
  echo ""
fi
}

################################

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

SETFILE=$YASSMDIR/yassm-login.set
[ -f $SETFILE ] || cp /usr/local/yassm/yassm-login.set $YASSMDIR

. $SETFILE

[ -z "$USER" ] && USER=\"\"
[ -z "$PASSWORD" ] && PASSWORD=\"\"
[ -z "$SHARE" ] && SHARE=\"\"
[ -z "$SERVER" ] && SERVER=\"\"
[ -z "$OPTIONS" ] && OPTIONS=\"\"

export DIALOG="
<window title=\"YASSM v2.7\" icon-name=\"gtk-connect\">
  <vbox>
    <hbox>
      <text><label>$(gettext 'Username')</label></text>
      <entry>
        <variable>USER</variable>
        <default>$USER</default>
      </entry>
    </hbox>
    <hbox>
      <text><label>$(gettext 'Password')  </label></text>
      <entry>
         <variable>PASSWORD</variable>
         <default>$PASSWORD</default>
         <visible>password</visible>
      </entry>
    </hbox>
    <hbox>
      <text><label>$(gettext 'Share       ')</label></text>
      <entry>
        <variable>SHARE</variable>
        <default>$SHARE</default>
      </entry>
    </hbox>
    <hbox>
      <text><label>$(gettext 'Server      ')</label></text>
      <entry>
        <variable>SERVER</variable>
        <default>$SERVER</default>
      </entry>
    </hbox>
    <hbox>
      <text><label>$(gettext 'Options    ')</label></text>
      <entry>
        <variable>OPTIONS</variable>
        <default>$OPTIONS</default>
      </entry>
    </hbox>
    <hbox>
      <checkbox>
        <label>$(gettext 'Set       ')</label>
        <variable>SET</variable>
      </checkbox>
      <button><label>$(gettext 'Help')</label></button> 
      <button><label>$(gettext 'Shares')</label></button>
      <button><label>$(gettext 'Unmount')</label></button> 
      <button><label>$(gettext 'Mount')</label></button>
      <button><label>$(gettext 'Cancel')</label></button>
    </hbox>
  </vbox>
</window>"

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

if [ "$SET" = "true" ]; then
  rm $SETFILE
  for F in USER PASSWORD SHARE SERVER OPTIONS; do
    eval V=\$$F 
    if [ -n "$V" ]; then
      echo $F=\"$V\" >> $SETFILE
    else
      echo $F=\"\" >> $SETFILE
    fi
  done
fi

[ "$EXIT" = "$(gettext 'Cancel')" -o "$EXIT" = "abort" ] && exit

[ "$EXIT" = $(gettext 'Help') ] && exec defaultbrowser http://www.murga-linux.com/puppy/viewtopic.php?t=63090

if [ "$EXIT" = "$(gettext 'Shares')" ]; then
  [ -z "$USER" ] && USER="guest"
  [ -z "$SERVER" ] && SERVER="None"
  SHARES=$(smbclient -U $USER%$PASSWORD -gL $SERVER 2> /dev/null | grep "Disk" | grep -v "$." | cut -d "|" -f 2 | tr -s " " ".")
  [ -z "$SHARES" ] && SHARES="None"
  SHARE=$(COMBOWIDGET "Shares on $SERVER" "$SHARES")
  rm $SETFILE
  for F in USER PASSWORD SHARE SERVER OPTIONS; do
    eval V=\$$F 
    if [ -n "$V" ]; then
      echo $F=\"$V\" >> $SETFILE
    else
      echo $F=\"\" >> $SETFILE
    fi
  done
  exec $0
fi

if [ "$EXIT" = "$(gettext 'Unmount')" ]; then
  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
  exit
fi

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
  OPTIONS=`echo $OPTIONS | tr -d " " | tr ";" ","`
  AUTH=$AUTH","$OPTIONS
fi

MYSHARE=$HOME/YASSM/$SHARE@$SERVER
MYSHARE="${MYSHARE// /.}"		#strip out nasty Mac spaces
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') $SHARE!" 0 0
fi
