#!/bin/sh
DUMP="`avahi-browse -tvpkr _rfb._tcp | grep '^=.*IPv4' | cut -d\; -s -f 4,8,9,10`"
test -r "$HOME/.VNCRC" && . "$HOME/.VNCRC"
MENU="`echo "$DUMP" | sed -E 's/([^;]*);([^;]*);([^;]*);(.*).*/\1\n\2\n\3\n\4/'`"

case "$#" in
  0|1) HOST=$(echo "${MENU}" | 
        yad --title "Подключение к демо-экрану" --list --editable \
        --height=200 --width=400 \
        --column="Сервер" \
        --column="Адрес" \
        --column="Порт" \
        --column="Ключ" \
        --hide-column=4 
       )
       test -z "$1" || NOPASSWD="*"
    ;;
    2) HOST="$1-|$1|$2|" ;;
    3) HOST="$1-$3|$1|$2|" ;;
esac

KEY="$HOST"
NAME="${KEY%%|*}"; KEY="${KEY#*|}"
PASSWORD="${NAME##*-$NOPASSWD}"
ADDR="${KEY%%|*}"; KEY="${KEY#*|}"
PORT="${KEY%%|*}"; KEY="${KEY#*|}"
case "$PORT" in
  ::*);;
  :[0-9]???*) PORT=":$PORT";;
  [0-9]???*) PORT="::$PORT";;
  :[0-9]*) ;;
  [0-9]*) PORT=":$PORT";;
esac
KEY="${KEY%\"*}"; KEY="${KEY#*\"}"
#echo "$NAME / $PASSWORD / $ADDR / $PORT / $KEY"
case "$KEY" in
    ""|"|"|*null*);;
    *) echo "$KEY" > ~/.ssh/authorized_keys2 ;;
esac

VNCOPTIONS="${VNCOPTIONS:--Shared -MenuKey Pause -RemoteResize=0 -ReconnectOnError=0}"

test -z "$ADDR$PORT" && exit 1
if [ -n "$PASSWORD" ]; then
    echo "$PASSWORD" | vncviewer $VNCOPTIONS $ADDR$PORT -passwdInput
else
	vncviewer $VNCOPTIONS $ADDR$PORT
fi

