#!/bin/bash

PATH=$PATH:/sbin
SCRIPTS_PATH=/opt/Avaya/scripts
delimiter="#------------------------------------------#"


UPDATES_FILE=/etc/yum.repos.d/Avaya_Inside.repo
LAST_UPDATE_FILE=/opt/Avaya/last_os_update

log_files=()
binary_names=()
display_names=()
services=()
rpm_names=()
last_output=()
log_binary_names=()


function updateData()
{
    case "$1" in
    ipoffice)
        . /etc/sysconfig/ipoffice
        log_files=(${log_files[@]} ${IPOFFICE_LOGFILE})
        log_binary_names=(${log_binary_names[@]} "isa")
        binary_names=(${binary_names[@]} "ipoffice" "initacms")
        display_names=(${display_names[@]} "IPOffice")
        services=(${services[@]} "isa")
        rpm_names=(${rpm_names[@]} "ipoffice") 
        #this should be read from a config file        
        last_output=(${last_output[@]} "$SCRIPTS_PATH/ipo_out.txt")
    ;;
    ipoffice-demo)
        . /etc/sysconfig/ipoffice
        log_files=(${log_files[@]} ${IPOFFICE_LOGFILE})
        log_binary_names=(${log_binary_names[@]} "isa")
        binary_names=(${binary_names[@]} "ipoffice" "initacms")
        display_names=(${display_names[@]} "IPOffice")
        services=(${services[@]} "isa")
        rpm_names=(${rpm_names[@]} "ipoffice-demo") 
        #this should be read from a config file        
        last_output=(${last_output[@]} "$SCRIPTS_PATH/ipo_out.txt")
    ;;
    ipoffice-sees)
        . /etc/sysconfig/ipoffice
        log_files=(${log_files[@]} ${IPOFFICE_LOGFILE})
        log_binary_names=(${log_binary_names[@]} "isa")
        binary_names=(${binary_names[@]} "ipoffice" "initacms")
        display_names=(${display_names[@]} "IPOffice")
        services=(${services[@]} "isa")
        rpm_names=(${rpm_names[@]} "ipoffice-sees") 
        #this should be read from a config file        
        last_output=(${last_output[@]} "$SCRIPTS_PATH/ipo_out.txt")
    ;;
    ms)
        display_names=(${display_names[@]} "MediaServer")
        services=(${services[@]} "isa")
        rpm_names=(${rpm_names[@]} "ms")
    ;;
    voicemail)
        . /etc/sysconfig/vmpro
        for log_file in "${VMPRO_PATH}logs"/*
        do
            if [ -f ${log_file} ]; then
                if [ "${log_file}" != "." -a "${log_file}" != ".." ]; then
                    log_files=(${log_files[@]} "${log_file}")
                    log_binary_names=(${log_binary_names[@]} "vmpro")
                fi
            fi
        done
        binary_names=(${binary_names[@]} "vmpro")
        display_names=(${display_names[@]} "VoicemailPro")
        services=(${services[@]} "vmpro")
        rpm_names=(${rpm_names[@]} "vmpro")
        #this should be read from a config file
        last_output=(${last_output[@]} "$SCRIPTS_PATH/vmpro_out.txt")
    ;;
    onexportal)
        . /etc/sysconfig/onexportal
        log_files=(${log_files[@]} "${ONEX_PATH}/apache-tomcat/logs/1XOverallRollingFile.log")
        log_binary_names=(${log_binary_names[@]} "onexportal")
        binary_names=(${binary_names[@]} "java")
        display_names=(${display_names[@]} "One-XPortal")
        services=(${services[@]} "onexportal")
        rpm_names=(${rpm_names[@]} "oneXportal")
        #this should be read from a config file
        last_output=(${last_output[@]} "$SCRIPTS_PATH/onex_out.txt")
    ;;
    openfire)
        . /etc/sysconfig/onexportal
        log_files=(${log_files[@]} "${ONEX_PATH}/apache-tomcat/logs/sipxopenfire.log")
        log_binary_names=(${log_binary_names[@]} "openfire")
        binary_names=(${binary_names[@]} "openfire")
        display_names=(${display_names[@]} "Openfire")
        services=(${services[@]} "onexportal")
        rpm_names=(${rpm_names[@]} "oneXportal")
        #this should be read from a config file
        last_output=(${last_output[@]} "$SCRIPTS_PATH/onex_out.txt")
    ;;
    watchdog)
        display_names=(${display_names[@]} "Watchdog")
        services=(${services[@]} "watchdog")
        rpm_names=(${rpm_names[@]} "watchdog") 
    ;;
    csipo)
        display_names=(${display_names[@]} "Contact Recorder")
        services=(${services[@]} "csipo")
        rpm_names=(${rpm_names[@]} "csipo") 
    ;;
    webmanager)
        display_names=(${display_names[@]} "")
        services=(${services[@]} "WebManager")
        rpm_names=(${rpm_names[@]} "webmanagement") 
    ;;
    cli)
        display_names=(${display_names[@]} "CLI")
        rpm_names=(${rpm_names[@]} "cli")
    ;;
    cli_commands)
        display_names=("CLI_commands")
        rpm_names=(${rpm_names[@]} "cli-commands")
    ;;
    weblm)
        display_names=(${display_names[@]} "Web License Manager")
        rpm_names=(${rpm_names[@]} "WebLM")
        services=(${services[@]} "WebLM")
        binary_names=(${binary_names[@]} "WebLM" )
        log_file="/opt/Avaya/apache-tomcat/webapps/WebLM/data/log/weblmserveroperational.log"
        if [ -f $log_file ]; then
            log_files=(${log_files[@]} "$log_file")
            log_binary_names=(${log_binary_names[@]} "WebLM")
        fi
    ;;
    webrtcgw)
        display_names=(${display_names[@]} "webRTC Gateway")
        services=(${services[@]} "webrtcgw")
        rpm_names=(${rpm_names[@]} "webRTCGateway")
        for log_file in "/opt/Avaya/webRTC/MediaGw/logs"/*
        do
            if [ -f ${log_file} ]; then
                if [ "${log_file}" != "." -a "${log_file}" != ".." ]; then
                    log_files=(${log_files[@]} "${log_file}")
                    log_binary_names=(${log_binary_names[@]} "webrtcgw")
                fi
            fi
        done
        for log_file in "/opt/Avaya/webRTC/SigGw/logs"/*
        do
            if [ -f ${log_file} ]; then
                if [ "${log_file}" != "." -a "${log_file}" != ".." ]; then
                    log_files=(${log_files[@]} "${log_file}")
                    log_binary_names=(${log_binary_names[@]} "webrtcgw")
                fi
            fi
        done
         binary_names=(${binary_names[@]} "mgwebrtc" "java")
    ;;
    ipora)
        . /etc/sysconfig/onexportal
        display_names=(${display_names[@]} "Integrated Contact Reporter")
        rpm_names=(${rpm_names[@]} "IPO-Reporting-Analytics")
        services=(${services[@]} "ipora")
        binary_names=(${binary_names[@]} "java" )
        log_file="${ONEX_PATH}/apache-tomcat/logs/helsinki_reporter/helsinki_operational.log"
        if [ -f $log_file ]; then
            log_files=(${log_files[@]} "$log_file")
            log_binary_names=(${log_binary_names[@]} "java")
        fi
    ;;
    mediamanager)
        display_names=(${display_names[@]} "Media Manager")
        rpm_names=(${rpm_names[@]} "MediaManager")
        services=(${services[@]} "mediamanager")
        binary_names=(${binary_names[@]} "java" )
        log_file="/opt/Avaya/apache-tomcat/logs/MediaManager.log"
        if [ -f $log_file ]; then
            log_files=(${log_files[@]} "$log_file")
            log_binary_names=(${log_binary_names[@]} "java")
        fi
    ;;

    esac
}


if [ "$1" == "all" ];then

    if [ -e /etc/sysconfig/ipoffice ];then
        if [ -z "`rpm -qa | grep ipoffice-demo`" ];then
            updateData ipoffice
        else 
            updateData ipoffice-demo
        fi
    fi

    updateData ms
    updateData voicemail
    updateData onexportal
    updateData openfire
    updateData webrtcgw
    updateData weblm
#    updateData watchdog
#    updateData cli
#    updateData cli-commands
else
    updateData $1
fi


#load config from "custom" directory
#this config will generate "custom_*" arrays which are appended to the existing arrays

#. custom/config $1
#log_files = (${log_files[@]} ${custom_log_files[@]})
#binary_names = (${binary_names[@]} ${custom_binary_names[@]})
#display_names = (${display_names[@]} ${custom_display_names[@]})
#services = (${services[@]} ${custom_services[@]})
#rpm_names = (${rpm_names[@]} ${custom_rpm_names[@]})
#last_output=(${last_output[@]} ${custom_last_output[@]})



for ((i=0;i<${#rpm_names[@]};i++)); do
		versions[${i}]=`rpm -q ${rpm_names[${i}]} | sed -n -e "s/${rpm_names[${i}]}-\(.*\)/\1/p"`
done

function watchdog_alarms()
{
	element_count=${#services[@]}

	for ((i=0;i<$element_count;i++)); do
		echo ${delimiter}
		echo "Watchdog alarms for ${services[${i}]}" 
        if [ ! -z "`sudo rpm -q ${rpm_names[${i}]} | grep -v "not installed"`" ]; then
    		sudo cat /var/log/messages | grep IPOfficeWatchdog | grep ${binary_names[${i}]} 
        fi
		echo -e "\n\n" 
	done
}


