#begin part2
[[ $PARAMS == *edit-config* ]] && exec defaulttexteditor .config
init_app2
yad_options1="--timeout=20 --button=gtk-ok --center --text-align=center"
TRY=/tmp/smb-browser
UNC="//$Server/$Share" # Note that we will mount //$IP/$Share
! get_subnets >/dev/null && exit_no_subnets
APPDIR_PARENT=${APPDIR%/*}
if ! mountpoint -q "$APPDIR/$MOUNTNAME" 2>/dev/null; then
  [[ $PARAMS =~ un?mount ]] && exit
  if [ -z "$SUBNETSALT" ]; then
    IP=$(nmblookup $Server | grep "<00>" | cut -d " " -f 1) #Ip address may change so look it up by netbios name.
  else
    for IP in $(mpscan $TIMEOUT -p $PORT ${SUBNETSALT}.1 - ${SUBNETSALT}.254 2>/dev/null | cut -d " " -f 2); do
      nmblookup -A $IP | grep -q $Server && break
    done
  fi
  ! [ "$IP" ] && IP=$Server # firewalled!
  case $MountOptions in
    *gid=[a-zA-Z]* )
      grp=${MountOptions##*gid=}; grp=${grp%%,*}
      MountOptions=${MountOptions/gid=$grp/}
      getgid=",gid=\$(awk -F: '\$1==\"$grp\" {print \$3; exit}' /etc/group)"
      ;;
    * ) unset getgid ;;
  esac
  if [ guest != "$Username" ]; then
    if [ "$Password" ]; then
      [ "$ClearText" = '' ] && Password="$(printf %s "$Password"|base64 -d)"
    else
      set_Username_Password
    fi
  fi
  TRY+="-mount.$$"
  echo > $TRY "#!/bin/dash
[ \$(id -u) -ne 0 ] && exec gtksu \"\$(printf '$i18n_p2_GtksuTitleMount' '$UNC')\" \"\$0\" \"\$@\"
mount.cifs '//$IP/$Share' '$APPDIR/$MOUNTNAME' -o \"$MountOptions$getgid\"
mountpoint -q '$APPDIR/$MOUNTNAME' 2>/dev/null; retval=\$?
[ 0 = \$retval ] && ln -sfT $ICON_MOUNTED .DirIcon || ln -sfT $ICON_UNMOUNTED .DirIcon
rm \"\$0\"
[ 0 = \$retval ] # exit 0 if mounted
"
  chmod +x $TRY && USER=$Username PASSWD=$Password $TRY 2> $TRY.err; retval=$?
  is_firewalled && NOTICE="\r\r<b><u>$i18n_p2_this_firewall_enabled</u></b>" || NOTICE=
  [ $retval != 0 ] && yad --text="$(printf "$i18n_p2_Could_not_mount\r\r$i18n_p2_Hints\r\r<span color=\"red\">$(< $TRY.err)</span>$NOTICE\r" "$UNC")" \
    $yad_options1 --button="gtk-help:defaultbrowser /usr/share/doc/faqs/smb-browser.html"
  rm -f $TRY.err;
  [ $retval != 0 ] && exit $retval
  rox -d "$APPDIR/$MOUNTNAME" # rox -d preserves symlink name's path if any
  # rox -x must follow rox -d otherwise rox -d will time out when two ROX-Filer
  # processes owned by different users keep $MOUNTNAME open. Covers a corner case.
  rox -x "$APPDIR_PARENT" # refresh mount point container window so new icon shows up.
else # if already mounted
  if [[ $PARAMS =~ un?mount ]]; then
    TRY+="-unmount.$$"
    echo > $TRY "#!/bin/dash
[ \$(id -u) -ne 0 ] && exec gtksu \"\$(printf '$i18n_p2_GtksuTitleUnmount' '$UNC')\" \"\$0\" \"\$@\"
umount -n '$APPDIR/$MOUNTNAME'
mountpoint -q '$APPDIR/$MOUNTNAME' 2>/dev/null; retval=\$?
[ 0 = \$retval ] && ln -sfT $ICON_MOUNTED .DirIcon || ln -sfT $ICON_UNMOUNTED .DirIcon
rm \"\$0\"
[ 1 = \$retval ] # exit 0 if unmounted
"
    chmod +x $TRY && $TRY > $TRY.err; retval=$?
    [ $retval != 0 ] && yad --text="$(printf "$i18n_p2_Could_not_unmount\r<span color=\"red\">$(cat $TRY.err)</span>\r" "$UNC")" \
      $yad_options1 --button="gtk-help:defaultbrowser /usr/share/doc/faqs/smb-browser.html"
    rm -f $TRY.err;
    [ $retval != 0 ] && exit $retval
    rox -D "$APPDIR/$MOUNTNAME"
    # Even if rox -x follows rox -D (likewise the mount case) rox -D times out when two
    # ROX-Filer processes owned by different users keep $MOUNTNAME open. So be it.
    rox -x "$APPDIR_PARENT"
  else
    rox -d "$APPDIR/$MOUNTNAME"
  fi
fi
#end part2
# vim:ft=sh:

