#!/bin/sh

key=$1

if [ "$key" = "WROC_3GStatus" ]; then
	dev_3g=`ls /dev/ttyUSB* 2>/dev/null | wc -l`
	wanIP=`cat /proc/net/phystat | sed -n "/.*IP_ADDR.*/p" | sed "s/.*IP_ADDR=//"`
	G3_Mode=`nvram_get wanConnectionMode`
	G3_Interface=`cat /proc/net/phystat | sed -n "/.*3G.*/s/.*- //p"`
	G3_Dev=`cat /proc/net/phystat | sed -n "/WAN_DEV/s/.*=\([0-9A-Z]*\),.*/\1/p"`
	if [ "$dev_3g" = "0" ]; then
		echo -n {\"3GStatus\":\"1\"}
	else
		if [ "$G3_Mode" = "3G" -a "$G3_Interface" = "Link up" -a "$G3_Dev" = "3G" -a ! "$wanIP" = "" ]; then 
			echo -n {\"3GStatus\":\"2\"}
		else
			echo -n {\"3GStatus\":\"3\"}
		fi
	fi
fi

if [ "$key" = "WROC_sysStatus" ];then
	getMemStat()
	{
		memtotal=`cat /proc/meminfo | grep MemTotal | awk -F ":" '{printf $2}' | sed 's/[ ]*//g'`
		memfree=`cat /proc/meminfo | grep MemFree | awk -F ":" '{printf ","$2}' | sed 's/[ ]*//g'`
		echo -n $memtotal$memfree"\""
	}
	getUsbFlashStat()
	{
		FST=$1
		if [ "${FST:1:13}" = "/dev/mtdblock" ];then
			echo -n ",\"Flashinfo\":\""
			flash=`echo -n $FST | awk -F "," '{printf $4","$5"\""}'`
			echo -n $flash
		elif [ "${FST:1:7}" = "/dev/sd" ];then
			num=$((num+1))
			echo -n ",\"Usb$num""info\":\""
			usb=`echo -n $FST | awk -F "," '{printf $2","$4","$5"\""}'`
			echo -n $usb
		else
			return 0
		fi
	}
	num=0
	echo -n {\"meminfo\":\"
	getMemStat
	sd=`mount | grep "/dev/sd" | wc -l`
	if [ "$sd" -le "0" ]; then
		df -h 2>/dev/null | sed 's/[ ]*/,/g' | while read line
		do
			getUsbFlashStat $line
		done
		echo -n ",\"Usbinfo\":\"\""
	else	
		df -h 2>/dev/null | sed 's/[ ]*/,/g' | while read line
		do
			getUsbFlashStat $line
		done
	fi
	echo -n }

fi

if [ "$key" = "WROC_pppDisconnect" ];then
        killall -q pppd 1>/dev/null 2>&1
        echo "success"
fi

if [ "$key" = "WROC_pppConnect" ];then
        wan.sh dialUP 1>/dev/null 2>&1
        sleep 2
        echo "success"
fi

if [ "$key" = "WROC_wanStatus" ];then
        wanIP=`cat /proc/net/phystat | sed  -n "/.*IP_ADDR.*/p" | sed "s/.*IP_ADDR=//"`
        if [ ! "$wanIP" = "" ];then
        	echo -n {\"wanStatus\":\"1\"}
        	exit
        fi
        workmode=`nvram_get OperationMode`
        if [ "$workmode" = "1" ]; then
		        ethSTAT=`cat /proc/net/phystat | sed  -n "/.*ETH5.*/p" | sed "s/.*- //"`
		        wanmode=`nvram_get 2860 wanConnectionMode`
		        if [ ! "$wanmode" = "3G" -a "$ethSTAT" = "Link Down" ];then
		        	echo -n {\"wanStatus\":\"2\"}
		        	exit
		        fi
		        if [ "$wanmode" = "3G" -o "$wanmode" = "PPPOE" -o "$wanmode" = "L2TP" -o "$wanmode" = "PPTP" ];then
		        	ps > /tmp/pspsps
		        	isdial=`cat /tmp/pspsps | grep pppd | wc -l`
		        	if [ ! "$isdial" = "0" ];then
		        		echo -n {\"wanStatus\":\"4\"}
		        		exit
		        	fi
		        fi
		        conflict=`cat /tmp/wanStat`
		        if [ "$conflict" = "5" ];then
		        	echo -n {\"wanStatus\":\"5\"}
		        	exit
		        fi
		        echo -n {\"wanStatus\":\"3\"}
		    elif [ "$workmode" = "2" ]; then  
		        conflict=`cat /tmp/wanStat`
		        if [ "$conflict" = "5" ];then
		        	echo -n {\"wanStatus\":\"5\"}
		        	exit
		        fi
		        echo -n {\"wanStatus\":\"3\"}
		    fi
fi

if [ "$key" = "WROC_time" ];then
        uptime
fi

if [ "$key" = "WROC_date" ];then
	echo -n {\"systime\":\"
    echo -n `date +"%Y-%m-%d %H:%M:%S"`
    echo -n \"}
fi	

if [ "$key" = "WROC_ResetNET" ];then
	ralink_init clear 2860 1>/dev/null 2>&1
	ralink_init renew 2860 /etc/Wireless/RT2860AP/RT2860_default_vlan 1>/dev/null 2>&1
	echo " "
	echo "success"
fi

if [ "$key" = "WROC_ResetVOIP" ];then
	cd /var/config/
	for i in `ls *.fac`
	do
		cp $i ${i%.*}.ini 1>/dev/null 2>&1
	done
	cd /etc/
	cp resolv.fac resolv.conf 1>/dev/null 2>&1
	cp shadow.fac shadow 1>/dev/null 2>&1
	cp rdated.fac rdated.conf 1>/dev/null 2>&1
	cp nsswitch.fac nsswitch.conf 1>/dev/null 2>&1
	echo " "
	echo "success"
fi

if [ "$key" = "WROC_ResetALL" ];then
	ralink_init clear 2860 1>/dev/null 2>&1
	ralink_init renew 2860 /etc/Wireless/RT2860AP/RT2860_default_vlan 1>/dev/null 2>&1
	cd /var/config/
	for i in `ls *.fac`
	do
		cp $i ${i%.*}.ini 1>/dev/null 2>&1
	done
	cd /etc/
	cp resolv.fac resolv.conf 1>/dev/null 2>&1
	cp shadow.fac shadow 1>/dev/null 2>&1
	cp rdated.fac rdated.conf 1>/dev/null 2>&1
	cp nsswitch.fac nsswitch.conf 1>/dev/null 2>&1
	cd /etc/network
	cp network.fac network 1>/dev/null 2>&1
	echo " "
	echo "success"
fi

if [ "$key" = "WROC_DHCPClients" ];then
	killall -q -USR1 udhcpd 1>/dev/null 2>&1
    echo " "
	/tmp/web/cgi-bin/stat dhcpclients | sed -n "/Content/d;/^$/d;p;"
fi

if [ "$key" = "WROC_siteSurvey" ];then
	getSiteinfo()
	{
	        if [ ! $# = 9 ] || [ "$1" = "Ch" ];then
	                #echo Invalid parameters.
	                return 0
	        fi
	        echo -n $1,$2,$3,$4,$5,$6,$7,$8,$9\;
	}
	
	iwpriv ra0 set SiteSurvey=1 1>/dev/null 2>&1
	echo -n {\"siteSurvey\":\"
	iwpriv ra0 get_site_survey 2>/dev/null | while read line
	do
	        #echo $line
	        getSiteinfo $line
	done
	echo -n \"}
fi

if [ "$key" = "WROC_wdsInfo" ];then
	getwdsInfo()
	{
	        if [ ! $# = 12 ] || [ "$1" = "MAC" ] ;then
	                return 0;
	        fi
			echo -n $1,$9,$11,$12\;
	}
	
	echo -n {\"wdsinfo\":\"
	iwpriv ra0 get_wds_info 2>/dev/null | while read line
	do
	        getwdsInfo $line
	done
	echo -n \"}
fi

if [ "$key" = "WROC_usbDevInfo" ];then
        getusbinfo()
        {
                FST=$1
                if [ ! "${FST:0:7}" = "/dev/sd" ];then
                        return 0;
                fi

          			cat /tmp/blkid | while read sline
          			do
		       					device=`echo $sline | awk -F ':' '{print $1} '`
		        				lable=`echo $sline | awk -F '"' '{print $2} '`
	          				if [ "$device" = "$FST" ]; then
	          					echo -n $lable
          					fi
          			done
        				echo -n ,$1,$2,$3,$4,$5,$6\;
                
        }
				blkid >tmp
        echo -n {\"usbDevInfo\":\"
        df -h 2>/dev/null | while read line
        do
                getusbinfo $line
        done
        echo -n \"}
fi

if [ "$key" = "WROC_printerInfo" ];then
		echo -n {\"printerInfo\":\"
		line=`sed -n '/usblp/=' /proc/bus/usb/devices`	
		for i in $line
		do
				ii=`expr $i - 4`
				Manufacturer=`cat /proc/bus/usb/devices | sed -n "$ii"p | awk -F '=' '{print $2}'`
				jj=`expr $i - 3`
				Product=`cat /proc/bus/usb/devices | sed -n "$jj"p | awk -F '=' '{print $2}'`
				kk=`expr $i - 2`
				SerialNumber=`cat /proc/bus/usb/devices | sed -n "$kk"p | awk -F '=' '{print $2}'`
				echo -n $Manufacturer,$Product,$SerialNumber\;
		done
		echo -n \"}
fi

if [ "$key" = "WROC_wifisiteSurvey" ];then
	getWifiSiteinfo()
	{
	        if [ $# -lt 5 ] || [ "$1" = "Ch" ];then
	                #echo Invalid parameters.
	                return 0
	        fi
	        echo -n $1,$2,$3,$4,$5,$6,$7\;
	}
	
	iwpriv ra0 set SiteSurvey=1 1>/dev/null 2>&1
	echo -n {\"wificlient\":\"
	iwpriv ra0 get_site_survey 2>/dev/null | while read line
	do
	        #echo $line
	        getWifiSiteinfo $line
	done
	echo -n \"}
fi

if [ "$key" = "WROC_Shortcutstate" ];then 			
 
 	wifi_status=`nvram_get WiFiOff`
 	G3_Mode=`nvram_get wanConnectionMode`
	G3_Interface=`cat /proc/net/phystat | sed  -n "/.*3G.*/s/.*- //p"`
	G3_Dev=`cat /proc/net/phystat | sed  -n "/WAN_DEV/s/.*=\([0-9A-Z]*\),.*/\1/p"`
	netsw=`nvram_get NetSwitchEn`
	switch_net=`cat /tmp/switchNet.state`
	if [ "$netsw" = "off" ]; then
		 	if [ "$G3_Mode" = "3G" -a  "$G3_Dev" = "3G"  ];then
		     status_3g="on"
		  else
		     status_3g="off"
		 	fi
 	else [ "$netsw" = "on" ]
 			if [ "$switch_net" = "NET_3G" ]; then 
 					status_3g="on"
		  else
		     status_3g="off"
		 	fi
 	fi
 	signal_3g="24"
 
 	lp=`ls /dev/lp* 2>/dev/null | wc -l`
	if [  "$lp" -eq "0" ]; then
      printer_status="off" 
  else
      printer_status="on" 
 	fi
 	
 	wan_IP=`cat /proc/net/phystat | sed  -n "/.*IP_ADDR.*/p" | sed "s/.*IP_ADDR=//"`
 	if [ ! "$wan_IP" = "" ]; then
      wan_status="on"
  else 
  		wan_status="off"
  fi
  
#scsi_dev=`cat /proc/bus/usb/devices | grep Driver=usb-storage | awk -F "=" '{print $8}'`
#sd=`ls /dev/sd*  2>/dev/null | wc -l`
sd=` mount | grep "/dev/sd" | wc -l`
 	if [  "$sd" -le "0" ]; then
      usb_status="off" 
 	else
      usb_status="on" 
 	fi

	echo -n {\"wifi_switch\":\"$wifi_status\",\"3G_switch\":\"$status_3g\",\"3G_signal\":\"$signal_3g\",\"printer_status\":\"$printer_status\",\"wan_status\":\"$wan_status\",\"wan_ip\":\"$wan_IP\",\"usb_status\":\"$usb_status\"
	echo -n }
fi

if [ "$key" = "WROC_wlanDisconnect" ]; then
        wpa_cli terminate 1>/dev/null 2>&1
        killall udhcpc  >/dev/null 2>&1
        ifconfig ra0 0.0.0.0 1>/dev/null 2>&1
        nvram_set WlanState off 1>/dev/null 2>&1
        echo "success"
fi

if [ "$key" = "WROC_wlanConState" ]; then
	WlanBssid=`nvram_get WlanBssid`
	WlanStatus=`wpa_cli status | sed -n '/wpa_state=/s/.*=//p'`
	WlanIP=`wpa_cli status | sed -n '/ip_address=/s/.*=//p'`
	if [ "$WlanStatus" = "COMPLETED" ]; then
		userStatus=1
		if [ -n "$WlanIP" ]; then
				userStatus=3
		fi
	elif [ "$WlanStatus" = "4WAY_HANDSHAKE" -a "$WlanStatus" = "SCANNING" ]; then
	  userStatus=1
	elif [ "$WlanStatus" = "DISCONNECTED" ]; then
		userStatus=0	
	else
	  userStatus=2
	fi	
	echo -n {\"wlanbssid\":\"$WlanBssid\",\"wlanstatus\":\"$userStatus\",\"wlanip\":\"$WlanIP\"
	echo -n }
fi

if [ "$key" = "WROC_check3G" ]; then
	dev_3g=`ls /dev/ttyUSB* | wc -l`
	echo "$dev_3g"
fi

if [ "$key" = "WROC_appClasses" ];then 
	usbname=`mount | grep "/media/sd" | sed -n "s#/dev/\([^ ]*\) .*#\1#p"`
  if [ -s "/media/$usbname/Database/mccsdb" ]; then 
  	app=1 
  else 
  	app=0 
	fi    
 	echo -n {\"appClasses\":\"$app\"}
fi

if [ "$key" = "WROC_bridgeInfo" ];then 
  	workmode=`nvram_get OperationMode`
	if [ "$workmode" = "1" ]; then
		udhcpc -i eth2.2 -s /sbin/udhcpc_bridge.sh -q -n 1>/dev/null 2>&1
	   	sleep 10
	   	param=`cat /tmp/bridgeInfo`
 		if [ -n "$param" ]; then
 		 	echo -n $param
	    else 
	        echo -n fail
		fi
  elif [ "$workmode" = "0" ]; then
       udhcpc -i br0 -s /sbin/udhcpc_bridge.sh -q -n 1>/dev/null 2>&1
	   sleep 10
	   param=`cat /tmp/bridgeInfo`
 		if [ -n "$param" ]; then
 		 	echo -n $param
	    else 
	        echo -n {\"bridgeInfo\":\"fail\"}
		fi
  rm -rf /tmp/bridgeInfo
  fi
fi
