#!/bin/sh  
#Function:administrator login
#Writer:liutiansi
#Mail:lliutiansi@gmail.com
#Date:2007-10-27 16:25

source config
source checkonline

#获取主对话框PID；
main_pid=$$

#定义成全局变量；
export main_pid

#定义临时文件及关闭对话框后处理；
main_tempfile=`main_tempfile 2>/dev/null` || main_tempfile=/tmp/main$$
trap "rm -f $main_tempfile" 0 1 2 5 15

#读取系统服务表；
mysql_result=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "select * from sysadmin.ty_system_service order by ID;" | awk 'NR>1 {print NR,$0}'|awk '{print $2" "$3" "$4}'`

main_returncode=0
#循环选择菜单项；
while test $main_returncode != 1 && test $main_returncode != 250
do
	dialog --clear --item-help --colors --backtitle "$copyright_info" --title "$system_info" \
	--menu "\n\n" 20 70 15 \
	$mysql_result \
	2>$main_tempfile
	main_retval=$?
	
	#对用户选择类型进行选择，0为OK；
	case $main_retval in
	0)
  	main_value=`cat $main_tempfile`
	export main_value
  	case $main_value in
  	
  	#调用服务器类型选择对话框；
		1|2|3|4|7|9|10|11)
			r_server_class
			;;
		5)
		##########################################连接状态########################################
			checkconn
			;;	
		##########################################更改证书########################################
		6)
				server_value=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "select * from sysadmin.ty_server order by SERVER;" | awk 'NR>1 {print NR,$0}'|awk '{print $2" "}'`
				for slist in $server_value
 				do
 					counter=`expr $counter + 1`
 					server_value_str=$server_value_str" "$slist
				done;
				Gap=`expr 100 / $counter`
				num=0
				cd $sysadmin_path
				mv identity key/identitybak
				ssh-keygen -t dsa -b 2048 -f identity
				cat identity.pub >> authorized_keys
				rm -rf identity.pub
				chmod +600 identity authorized_keys
				PCT=$Gap
				(
				while test $PCT -le 100
				do
					num=`expr $num + 1`
					vlist=`echo "$server_value_str"|awk -F " " '{print $'$num'}'`
					scp -S sshto -oConnectTimeout=$ConnectTimeout -i $sysadmin_path/key/identitybak $sysadmin_path/authorized_keys root@$vlist:~/.ssh/		
					sleep 2
					result_do=$?
					if [ $result_do -eq 0 ]; then						
						result_up_str="[√]ok:$vlist：更新证书成功！"
					else
						result_up_str="[×]error:$vlist：更新证书失败，连接远程主机$vlist失败！"	
					fi
					echo "XXX"
					echo $PCT
					echo "\n正在更改$vlist主机证书...\n$result_up_str"
					echo "XXX"
					PCT=`expr $PCT + $Gap`
					#sleep 1
					
					#写运行结果到日志；
					logs="[$(date +'%Y-%m-%d %H:%M:%S')]$result_up_str"
					RecordLog					
				done
				) |dialog --title "$system_info" --gauge "\n\n\n\n\n　　　　　　　　　　　　　准备更新....." 18 70 0
				outmessage="证书更新完毕，需要退出系统！"
				export outmessage
				msgbox
				exit
				;;
		8)
			exec 3>&1
			LOGDATE=`dialog --title "$system_info" --calendar "\n请选择系统日志的日期：" 0 0 2>&1 1>&3`
			exec 3>&-
			year=`echo "$LOGDATE"|awk -F "/" '{print $3}'`
			month=`echo "$LOGDATE"|awk -F "/" '{print $2}'`
			day=`echo "$LOGDATE"|awk -F "/" '{print $1}'`
			if [ -e $sysadmin_path/logs/log$year-$month-$day.log ];then
					dialog --title "$system_info" --clear \
      		--textbox $sysadmin_path/logs/log$year-$month-$day.log 40 100
			else
				outmessage="没有$year-$month-$day的系统日志；"
				export outmessage
				msgbox
			fi

      ;;		
		12)
			echo $main_value
			;;
		13)
			echo $main_value
			;;
		14)
			echo $main_value
			;;
		15)
			dialog \
     	--clear \
     	--title "$system_info" \
     	--yesno "\n\n确定要退出管理平台？" 10 30
     	case $? in
     	0)
           break
           ;;
     	1)
           main_returncode=99
           ;;
     	esac
			;;
	esac
	;;
	1)
     dialog \
     --clear \
     --title "$system_info" \
     --yesno "\n\n确定要退出管理平台？" 10 30
     case $? in
     0)
           break
           ;;
     1)
           main_returncode=99
           ;;
     esac
	;;
	esac
done
