#!/bin/bash

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>

# (c) Antonio Sánchez León <introlinux[fix@]gmail[fix.]com>
# (c) Miguel Anxo Bouzada <mbouzada[fix@]gmail[fix.]com>
# (c) GALPon MinNo Team <minino[fix@]galpon[fix.]org>
# july 2012, revisited february 2014

## -

case $LANG in
  ca*)
    TIT="Ajuda remota"
    TEXT="Esculli l'opció: "
    OPT1="Sol·licitar ajuda"
    OPT2="Oferir asistència"
    BUT0="Acceptar"
    BUT1="Cancel"
  ;;
  es*)
    TIT="Ayuda remota"
    TEXT="Escoja la opción: "
    OPT1="Solicitar ayuda"
    OPT2="Ofrecer asistencia"
    BUT0="Aceptar"
    BUT1="Cancelar"
  ;;
  gl*)
    TIT="Axuda remota"
    TEXT="Escolla a opción: "
    OPT1="Solicitar axuda"
    OPT2="Ofrecer asistencia"
    BUT0="Aceptar"
    BUT1="Cancelar"
  ;;
  *)
    TIT="Remote assistant"
    TEXT="Choose an option: "
    OPT1="Help wanted"
    OPT2="Offer assistance"
    BUT0="Ok"
    BUT1="Cancel"
  ;;
esac

ICON="gnome-remote-desktop-server"

needHelp(){
	case $LANG in
		es*)
			TEXT1="Introduzca la numeración IP \nque le ha enviado su ayudante. \n "
			TEXT2="Al pulsar «<b>Solicitar ayuda</b>» dará todo el control de \nsu ordenador a la persona que está detrás de la IP: \n"
			TEXT3="¿Seguro que quiere hacer esto? "
			TEXT4="Su petición de ayuda fué enviada. \nEspere unos segundos a que se establezca la conexión. "
			BUT0="Solicitar ayuda"
			BUT1="Abandonar"
			BUT2="Aceptar"
			ENTTXT="Escriba aquí el núm. IP"
		;;
		gl*)
			TEXT1="Introduza a numeración IP \nque lle enviou o seu axudante. \n "
			TEXT2="Ao premer «<b>Solicitar axuda</b>» daralle todo o control \ndo seu computador á persoa que está detras do IP: \n"
			TEXT3="Confirma que quere facer isto? "
			TEXT4="A súa petición de axuda foi enviada. \nAgarde un chisco a que se estabeleza a conexión. "
			BUT0="Solicitar axuda"
			BUT1="Abandonar"
			BUT2="Aceptar"
			ENTTXT="Escriba aquí o núm. IP"
		;;
		ca*)
 	       TEXT1="Introdueix la numeració IP \nque t'ha enviat el seu ajudant. \n "
 	       TEXT2="En prémer «<b>Sol·licitar ajuda</b>» donaràs tot el control del \nteu ordinador a la persona que està darrere de la IP: \n"
 	       TEXT3="¿Segur que vols fer-ho? "
	        TEXT4="La teva petició d'ajuda fou enviada. \nEspera uns segons a que s'estableixi la connexió. "
	        BUT0="Sol·licitar ajuda"
	        BUT1="Abandonar"
	        BUT2="Acceptar"
	        ENTTXT="Escriu aquí el núm. IP"
		;;
		*)
			TEXT1="Enter the IP number that your assistant sent you. \n "
			TEXT2="When you click on «<b>Help!</b>» will give computer control\nto the person behind IP: \n"
			TEXT3="Are you sure you want to do this? "
			TEXT4="Your request for help was sent. \nWait a few seconds to connect. "
			BUT0="Help!"
			BUT1="Quit"
			BUT2="Ok"
			ENTTXT="Write he the IP numbers"
		;;
	esac

	IP_REMOTA=$(yad --entry --text "$TEXT1" --title "$TIT" \
		--entry-text="$ENTTXT" \
		--image="$ICO" --window-icon="$ICO" \
		--button="${BUT0}:0" --button="${BUT1}:1" )

	if [ "$?" != "0" ]; then exit 0; fi 

	echo $IP_REMOTA

	if [ "$?" == "0" ];then
	    yad --info --text "\n$TEXT2\n\t\t\t<b>$IP_REMOTA</b> \n\n$TEXT3\n" \
			--image="$ICO" --window-icon="$ICO" \
			--button="${BUT0}:0" --button="${BUT1}:1"
	    if [ "$?" == "0" ];then
			x11vnc -connect $IP_REMOTA:5500 &
			yad --info --text "$TEXT4" --image="$ICO" \
				--window-icon="$ICO"\
				--button="${BUT2}:0" --button="${BUT1}:1"
		else
			exit 0
	    fi
	else
		exit 0
	fi
}

giveHelp(){
	IP_EXT=`curl http://ipecho.net/plain`

	if [ "$IP_EXT" = "" ]; then
		IP_EXT=`wget -q -O - checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`
	fi

	if [ "$IP_EXT" = "" ]; then
		IP_EXT=`curl ifconfig.me/ip`
	fi

	IP_LOCAL=`ip -s route | cut -d" " -f12 | tail -n1`

	echo $IP_EXT
	echo $IP_LOCAL

	case $LANG in
 	   es*)
            TEXT5="
Con esta utilidad podrá ayudar de forma remota a otro usuario.

Para ello, debe configurar su encaminador (router) para que el servidor VNC use el puerto <b>5500</b> y envíe la información a su ordenador local (<b>$IP_LOCAL</b>). Es lo que se conoce como hacer NAT, abrir o asignar (mapear) puertos. Esta configuración sólo tiene que hacerla una única vez, si no sabe cómo realizarla busque información en Internet o pregunte en el <a href='http://minino.galpon.org/es/forum'>foro de GALPon MiniNo</a>. 

Una vez configurado su encaminador, debe comunicar su IP externa \n\n\t\t\t<b><big>$IP_EXT</big></b>\n\na la persona que quiera ayudar. Y ésta, lo único que tiene que hacer es introducirla en la aplicación de «<b><i>Ayuda remota</i></b>». 

Unos segundos después, en la ventana del programa que se abrirá a continuación, aparecerá el escritorio remoto compartido. "
  	  ;;
 	   gl*)
            TEXT5="
Con esta utilidade poderá axudar de xeito remoto a outro usuario. 

Para elo, ten que configurar o seu encamiñador (router) para que o servidor VNC use o porto <b>5500</b> e envíe a información cara o seu computador local (<b>$IP_LOCAL</b>). É o que se coñece como facer NAT, abrir ou asignar (mapear) portos. Esta configuración só terá que facela unha única vez, se non sabe como realizala busque información na Internet ou pregunte no <a href='http://minino.galpon.org/gl/forum'>foro de GALPon MiniNo</a>. 

Unha vez configurado o seu encamiñador, ten que comunicarlle o seu IP externo \n\n\t\t\t<b><big>$IP_EXT</big></b>\n\ná persoa que queira axudar. E esta, o único que terá que facer é introducila no seu aplicativo de «<b><i>Axuda remota</i></b>». 

Uns segundos despois, na xanela do programa que se abrirá a seguir, aparecerá o escritorio remoto compartido. "
 	   ;;
 	   ca*)
            TEXT5="
Amb aquesta aplicació podràs ajudar remotament a un altre usuari. 

Per a això, has de configurar el teu encaminador (router) perquè el servidor VNC utilitzi el port <b>5500</b> i enviï la informació al teu ordinador local (<b>$IP_LOCAL</b>). És el que es coneix com fer NAT, obrir o assignar (mapejar) ports. Aquesta configuració només ha de fer-la una única vegada, si no saps com fer-la busca informació a Internet o pregunta al <a href='http://minino.galpon.org/es/forum'>fòrum de GALPon MiniNo</a>. 

Un cop configurat el encaminador, has de comunicar teva IP externa \n\n\t\t\t<b><big>$IP_EXT</big></b>\n\na la persona que volgui ajudar. I aquesta, l'únic que ha de fer és introduir-la en l'aplicació de «<b><i>Ajuda remota</i></b>». 

Uns segons després, a la finestra del programa que s'obrirà a continuació, apareixerà l'escriptori remot compartit. "
	    ;;
 	   *)
            TEXT5="
With this application you can help another user remotely. 

To do this, you must configure in your router the VNC server to use <b>5500</b> port and send the information to your local computer (<b>$IP_LOCAL</b>). This is known as doing NAT, open or map ports. This setting you only have to do it once, if you don't know how to do this, searching the Internet or ask in <a href='http://minino.galpon.org/en/forum'>GALPon MiniNo forum</a>. 

After configuring your router, you must communicate your external IP \n\n\t\t\t<b><big>$IP_EXT</big></b>\n\n to the person who wants to be helped. Person helped only have to enter it in the application <b><i>Remote assistant </i></b>. 

A few seconds later, in the program window will appear the remote desktop. "
 	   ;;
	esac

	yad --title="$TIT" --text="$TEXT5" \
		--width 500 --height 400 \
		--image="$ICON" --window-icon="$ICON"

	if [ "$?" == "0" ];then
	vinagre
	fi
}

MODE=$(yad --window-icon "$ICON" --image="$ICON" \
    --title "$TIT" --text "$TEXT" \
	--width "250" \
    --list --print-column 1 --no-headers \
	--button "$BUT1":1 --button "$BUT0":0 \
    --column "control" --column "acción":tip --hide-column 1 \
	NeedHelp "$OPT1" \
	GiveHelp "$OPT2")
ret=$?

if [ "$ret" == "1" ];then exit 0;fi

echo $MODE

case $MODE in
	'NeedHelp|') needHelp ;;
	'GiveHelp|') giveHelp ;;
esac
