#!/bin/bash
# Program:
#   NutchEz management interface
# Author: 
#   Waue, Shunfa, Rock {waue, shunfa, rock}@nchc.org.tw
# Version:
#    1.0
# History:
#   2010/06/07  Rock    First release (1.0)

# Variables Declaration #
DIALOG=dialog
main_choice=
#LIST_Option="off"

# Functions Declaration #
## Prepare Check  ##
function prepare_check(){ 
if [ ! -e /home/nutchuser/nutch_nodes ]; then
    $DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "nutch_nodes Files:" \
    --msgbox "Fail: Don't find /home/nutchuser/nutch_nodes!!!" 10 40
    exit
fi

$DIALOG --clear --defaultno --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "/etc/host Update" \
    --yesno "Do you want to update /etc/hosts!!!" 6 40

 if [ "$?" == "0" ]; then
    ./duplicate_del /home/nutchuser/nutch_nodes
    echo -e "\nPlz input root password to modify /etc/hosts !!!"
    su root -c "./duplicate_del /etc/hosts"
    su root -c "./add_hosts /home/nutchuser/nutch_nodes /etc/hosts"
 fi

}

## Main Menu
function main_menu(){
main_choice="/tmp/main_choice"

$DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" \
    --title "management options" \
        --menu "Plz choose: " 15 55 5 \
        "cluster_setup" "Setup your datanode & tasknode" \
        "tomcat_switch" "Start/Stop/Restart Tomcat" \
        "tomcat_port" "Change Tomcat port" \
        "lang_switch" "Change language" \
        "exit" "Exit" 2>$main_choice
}

## Cluster Setup (datanode & tasknode) ##
function cluster_setup(){

node_list=$(cat /home/nutchuser/nutch_nodes | awk '{print $1}')
#echo -e $node_list
#read

#dataNodes=$($DIALOG --clear  --backtitle "= [NutchEz Management Interface] ~by NCHC  = " --title "datanode & tasknode setup" \
#    --checklist "datanode & tasknode choose: " 15 55 7 $(cat /home/nutchuser/nutch_nodes | awk '{print $1 "\t" $2 "\t" "off" }'))
#echo $dataNodes
clusterSetup="/tmp/clusterSetup"
$DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "Datanode & Tasktracker Setup" \
    --menu "Plz choose: " 10 65 3 \
    "start" "Start all datanodes & taskcrackers in cluster" \
    "stop" "Stop all datanodes & taskcrackers in cluster" \
    "exit" "Exit" 2>$clusterSetup

#echo -e "$clusterSetup"  

if [ "$(cat $clusterSetup)" == "start" ]; then
    echo "/opt/nutchez/nutch/bin/hadoop-daemon.sh start datanode"
    echo "/opt/nutchez/nutch/bin/hadoop-daemon.sh start tasktracke"
    /opt/nutchez/nutch/bin/hadoop-daemon.sh start datanode
    /opt/nutchez/nutch/bin/hadoop-daemon.sh start tasktracker 
    for node in $(echo $node_list)
    do
        echo -e "ssh $node -c /opt/nutchez/nutch/bin/hadoop-daemon.sh start datanode"
#        ssh $node -c "/opt/nutchez/nutch/bin/hadoop-daemon.sh start datanode"
        echo -e "ssh $node -c /opt/nutchez/nutch/bin/hadoop-daemon.sh start tasktracker"
#        ssh $node -c "/opt/nutchez/nutch/bin/hadoop-daemon.sh start tasktracker"
    done
elif [ "$(cat $clusterSetup)" == "stop" ]; then
    echo "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop datanode"
    echo "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop tasktracker"
#   /opt/nutchez/nutch/bin/hadoop-daemon.sh stop datanode
#   /opt/nutchez/nutch/bin/hadoop-daemon.sh stop tasktracker
    for node in $(echo $node_list)
    do
        echo -e "ssh $node -c /opt/nutchez/nutch/bin/hadoop-daemon.sh stop datanode"
#       ssh $node -c "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop datanode"
        echo -e "ssh $node -c /opt/nutchez/nutch/bin/hadoop-daemon.sh stop tasktracker"
#       ssh $node -c "/opt/nutchez/nutch/bin/hadoop-daemon.sh stop tasktracker"
    done
else
    exit 0
fi
}

## Tomcat Severice start/stop/restart  ##
function tomcat_switch(){
pid_tc=$(ps axw -eo pid,command | grep "catalina" | grep "java" | grep "start" | awk '{print $1}')
#echo $pid_tc
#read
if [ -n "$pid_tc" ]; then
    $DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "Tomcat Status" \
        --msgbox "Tomcat is runing in this system!!!" 7 50
else
    $DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "Tomcat Status" \
        --msgbox "Tomcat is not running in this system!!!" 7 50
fi
tomcatSwitch="/tmp/tomcatSwitch"
$DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "Tomcat Service Options" \
    --menu "Plz choose: " 15 55 4 \
        "start" "Start tomcat" \
        "stop" "Stop tomcat" \
        "restart" "Restart tomcat" \
        "exit" "Exit" 2>$tomcatSwitch

if [ "$(cat $tomcatSwitch)" == "start" ]; then
    echo "/opt/nutchez/tomcat/bin/startup.sh"
    /opt/nutchez/tomcat/bin/startup.sh
elif [ "$(cat $tomcatSwitch)" == "stop" ]; then
    echo "/opt/nutchez/tomcat/bin/shutdown.sh"
    /opt/nutchez/tomcat/bin/shutdown.sh
elif [ "$(cat $tomcatSwitch)" == "restart" ]; then
    echo "/opt/nutchez/tomcat/bin/restart.sh"
    /opt/nutchez/tomcat/bin/shutdown.sh
    /opt/nutchez/tomcat/bin/startup.sh
else
    exit 0
fi
}

##  Tomcat Port change ##
function tomcat_port(){

if [ ! -e /opt/nutchez/tomcat/conf/server.xml ]; then
    $DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC =" --title "Tomcat Servel.xml" \
        --msgbox "Fial: Don't find /opt/nutchez/tomcat/conf/server.xml !!!" 10 50
    exit
fi
tomcatPort="/tmp/tomcatPort"
$DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC  = " --title "Tomcat Port Change" \
    --inputbox "Plz input port number for tomcat (default is 8080)" 10 55 2>$tomcatPort

if [ -z $(cat $tomcatPort) ]; then
    exit
else
    modify_line_nu=$(cat -n /opt/nutchez/tomcat/conf/server.xml | grep -v SSL | grep 'HTTP/1.1' | grep '<Connector' | awk '{print $1}')
    sed -i "${modify_line_nu}c <Connector port="$tomcatPort" protocol="HTTP/1.1"" /opt/nutchez/tomcat/conf/server.xml
fi
}


## Language Change  ##
function lang_switch(){
echo -e "lang_switch"
langSwitch="/tmp/langSwitch"
$DIALOG --clear --backtitle "= [NutchEz Management Interface] ~by NCHC  =" --title "Language Change" \
    --menu "Plz choose: " 15 55 3 \
    "English" "English" \
    "Chinese" "Chinese" 2>$langSwitch
#
echo "source $(cat $langSwitch)"
}


# Main Code
if [ $USER != "nutchuser" ]; then
    echo -e "\nYour identify is not nutchuser, plz change to \"nutchuser\" !!!"
    exit
fi

prepare_check
main_menu
case $(cat $main_choice) in
    "cluster_setup")
        cluster_setup;;
    "tomcat_switch")
        tomcat_switch;;
    "tomcat_port")
        tomcat_port;;
    "lang_switch")
        lang_switch;;
esac
