#!/bin/bash
# AUTHOR: Vovchik
# PURPOSE: GUI to show IP config info
# DATE: 14 May 2009
#120201 BK: internationalized.
#120323 replace 'xmessage' with 'yaf-splash'.
#130216 mavrothal: < > mess up gtkdialog.
#171212 sfs PRA

export TEXTDOMAIN=ipinfo
export OUTPUT_CHARSET=UTF-8

# --------------
# functions
# --------------

# --------------
get_data()
# --------------
{
	nl='
'
	# external ip
	var0="`wget -O - -q icanhazip.com`"
	var0="$(gettext 'External IP:') ""$var0"
	# tab 1 - interfaces
	var01=`echo $(gettext 'Hostname:') "$HOSTNAME"`
	var02="`ifconfig -a | tr '>' ')' | tr '<' '('`

`inxi -nc0| grep -v "\-\-recommends"`" #130216 mavrothal: < > mess up gtkdialog.
	# tab 3 - routing
	var03="`route -n | sed -e 's%Kernel IP routing table%%'`"
	# tab 2
	var04="DNS:"
	var05=`cat /etc/resolv.conf`
	# tab 4 - collect wireless data
	wifi="`iwgetid -a | gawk '{print $1}'`"
	# echo "mywifi: ""$wifi"
	spaces="     "
	if [ -n "$wifi" ]; then 
		var06=`iwgetid -a 2>&1`
		var07=`iwgetid -c 2>&1`
		var08=`iwgetid -f 2>&1`
		var09=`iwgetid -m 2>&1`
		var10=`iwlist encryption 2>&1 | grep -v "no encryption"`
		var11=`iwlist rate 2>&1 | grep Current`
		# concatenate wireless data for display
		var12="$var06""$nl""$var07""$nl""$var08""$nl""$var09""$nl""$var10""$nl""$var11""$nl"
		var12="`echo "$var12" | tr '>' ')' | tr '<' '(' | sed '/^$/d'`" #130216 mavrothal: < > mess up gtkdialog.
	else
		var12="<b>$(gettext 'No wireless extensions detected.')</b>"
	fi
	# tab 5 - collect connection data
	var13="`netstat -tan`"
NCS0(){
p="`netctl list |sed 's/*//'`"

for i in $p ;do
    echo "$i:`netctl status $i |awk -F "Active:" '/Active:/ {print $2}'`"
done

}
NCS(){ #from netctl.sh
p="`netctl list |sed 's/^*\ //' |tr -d " "`"
for i in $p ;do
    if [ `which rc` ];then
	#i="`echo $i|tr -d " "`"
	[ -x "`find /etc/rc.d/ -maxdepth 1 -type f |egrep '/net-'$i'$'`" ] && as=" ; автостарт" || as=

	. /etc/netctl/$i ; [ "`echo $Interface |grep USB`" ] && Interface=ppp0
	[ -f "/tmp/netctl/$i" ] && st="запущен" ||st="остановлен"
        echo "<u>$i:</u> $st $as"
    else
	[ "`netctl status $i |awk  '/Loaded:/ {print $4}'`" = "enabled)" ] && as=" ; автостарт" || as=
        echo "<u>$i:</u> `netctl status $i |awk  '/Active:/ {print $2}' |sed 's/inactive/остановлен/' |sed 's/active/запущен/'`$as"
    fi
done
} #; export -f NCS

	var14="`NCS`"
#	var15="$(sudo ping -c2 -W 3 `ip route |awk '/^default/ {print $3}'`)"
	var15="$(`which sudo` ping -c2 -W 3 `route -n| awk '/^0.0.0.0 / {print $2}'`)"
[ "$?" = "0" ] && dgw=yes || dgw=no
echo "===ping-dgw=$dgw"

CHK(){
## Check for good connection
if [ "$METHOD" == "wifi" -o "$METHOD" == "wired" ]; then
  sudo ping -c2 -W3 "$1"
  chk="$?"
  if [ "$chk" = "0" ] ;then
  #if (wget -q --spider --force-html --inet4-only http://www.google.com >/dev/null 2>&1); then
    connected=1
  else
    unset connected
  fi
fi
}


	var16="$(sudo ping -c2 -W 3 ya.ru)"
	var17="`ip route`"
}	
# --------------
show_data()
# --------------
{
	echo "$var01"
	echo
	echo "$var02"
	echo
	echo "$var03"
	echo
	echo "$var04"
	echo "$var05"
	echo
	echo "$var12"
	echo "$var13"
	echo "$var14"
	echo "$var15"
	echo "$var16"
	echo "$var17"
}

# --------------
make_gui()
# --------------
{
export show_ip_info="
<window title=\"$(gettext 'IP Info')\" icon-name=\"gtk-about\">
	<vbox>
	  <vbox scrollable=\"true\">
		<frame $(gettext 'Network Configuration')>
			<notebook labels=\"$(gettext 'Ping')|$(gettext 'Interfaces')|$(gettext 'DNS')|$(gettext 'Routing')|$(gettext 'Wireless')|$(gettext 'Statistics')|$(gettext 'Netctl')\">
				<vbox>
<text use-markup=\"true\" wrap=\"false\"><label>\"<tt>${nl}<b>$(gettext 'ping gateway:')</b>${nl}${var15}
${nl}<b>$(gettext 'ping ya.ru:')</b>${nl}${nl}${var16}</tt>\"</label></text>
				</vbox>
				<vbox>
					<text use-markup=\"true\" wrap=\"false\">
						<label>\"${nl}${var01}${nl}${var0}${nl}${nl}${var02}\"</label>
					</text>
				</vbox>
				<vbox>
					<text use-markup=\"true\" wrap=\"false\">
						<label>\"<tt><b>${nl}${var04}${nl}</b>${nl}${var05}</tt>\"</label>
					</text>
				</vbox>
				<vbox>
					<text use-markup=\"true\" wrap=\"false\">
						<label>\"<tt>${nl}<b>$(gettext 'Kernel IP routing table')</b>${nl}${var03}${nl}
			${nl}<b>$(gettext 'ip route:')</b>${nl}${var17}${nl}${nl}</tt>\"</label>
					</text>
				</vbox>
				<vbox>
					<text use-markup=\"true\" wrap=\"false\">
						<label>\"<tt><b>${nl}$(gettext 'Wireless configuration:')${nl}</b>${nl}${var12}</tt>\"</label>
					</text>
				</vbox>
				<vbox>
<text use-markup=\"true\" wrap=\"false\"><label>\"<tt>${nl}<b>$(gettext 'Network statistics:')</b>${nl}${nl}${var13}</tt>\"</label></text>
				</vbox>
				<vbox>
<text use-markup=\"true\" wrap=\"false\"><label>\"<tt>${nl}<b>$(gettext 'netctl list:')</b>${nl}${nl}${var14}</tt>\"</label></text>
				</vbox>
			</notebook>
		</frame>
		</vbox>
		<hbox>
			<button><input file stock=\"gtk-quit\"></input><label>Выход</label></button>
		</hbox>
	</vbox>
</window>
"
}

#  
# --------------
display_gui()
# --------------
{
	gtkdialog --program=show_ip_info --center --geometry=600x400
}

# --------------
# end functions
# --------------

# --------------
# main
# --------------

#xmessage -buttons "" -center -bg orange "$(gettext 'Please wait, probing...')" &
#yaf-splash -close never -bg orange -text "$(gettext 'Please wait, probing...')" &
    wt -s "sleep 10000000" "ipinfo 
$(gettext 'Please wait, probing...')" &
#XPID=$!
get_data
show_data
make_gui
#kill $XPID
    wt -kill
display_gui
exit 0

# --------------
# end main
# --------------
