#! /bin/bash asterisk_exist() { echo -ne "$1" _mor_aster=`which asterisk 2> /dev/null` if [ $? == 1 ]; then aster="0"; return 2; elif [ $? == 0 ]; then aster="1"; return 0; fi } report() { #parameters #1 - string what are you testing + tabs #2 {"FAILED", "OK"} prints only OK or FAILED if present if [ "$?" == "0" ]; then if [ "$2" == "FAILED" ]; then return 0; fi #causes not to print [OK] blabblabla echo -e "$1\t[\E[32m OK \E[37m]"; return 0; else ALL_OK=1 if [ "$2" == "OK" ]; then return 1; fi echo -e "$1\t[\E[31m FAILED \E[37m]"; return 1; fi } check_if_setting_match() { #PARAMETERS: #1 path to file to search #2 variable name #3 what should match? !!!!!!! WITHOUT SPACES!!!!! #RETURNS: # 0 success, requirecalltoken=no # 1 - failed, something else (not found at all?) #EXAMPLE #check_if_setting_match /etc/asterisk/iax.conf "requirecalltoken" "requirecalltoken=no" if [ ! -f "$1" ]; then echo "File $1 does not exist" return 2; fi SETTING=`awk -F";" '{ print $1}' $1 | awk -F"#" '{ print $1}' | grep $2 | sed 's/ //g' | sed 's/\t//g'` if [ "$SETTING" == "$3" ]; then return 0; else return 1; fi } #========================== check_if_settings_match_exactly() { #arguments #1 - where to look #2 - what to match #3 - how many times must to match to report OK #returns #0 - OK #1 - does not match if [ ! -z "$3" ]; then # if the setting must match x times HOW_MANY_TIMES=`grep "$2" "$1" | wc -l` if [ "$HOW_MANY_TIMES" == "$3" ]; then return 0 else return 1 fi else grep "$2" "$1" > /dev/null if [ "$?" == "0" ]; then return 0; else return 1; fi fi } #=============== asterisk_junk_files() { echo -ne "Checking for asterisk junk files" core_files=`ls -1 | grep -m 1 core\*`; if [ -z "$core_files" ]; then return 0; else if [ $TEST_SCRIPT_MODE == 0 ]; then return 1; elif [ $TEST_SCRIPT_MODE ==1 ]; then cd /tmp # rm -rf core* return 1; fi fi } #=========================================== realtime_mysql_status() { echo -n "Checking MySQL and Asterisk connectivity" _MYSQL_STAT=`asterisk -vvvvrx 'realtime mysql status' | grep "Connected to"` if [ -n "$_MYSQL_STAT" ]; then return 0; else return 1; fi unset _MYSQL_STAT ; } #====================================== codecs_status() { echo -n "Checking if g723 and g729 codecs are installed"; _g729_STATUS=`asterisk -vvvvrx 'core show translation' | grep "g729 " | cut -c 14- | cut -c -1`; _g723_STATUS=`asterisk -vvvvrx 'core show translation' | grep "g723 -" | cut -c 18- | cut -c -1` if [ $_g729_STATUS != "-" ] && [ $_g723_STATUS != "-" ]; then return 0; else return 1; fi } #============================================= h323_status() { echo -ne "Checking if H323 module is loaded\t"; _h323_STAT=`asterisk -vvvvrx 'module show like h323' | grep "1 modules loaded"` if [ -n "$_h323_STAT" ]; then return 0; else return 1; fi } #============================================= fax2email_status() { echo -n "Checking if Fax2Email modules are loaded"; _F2E_STAT=`asterisk -vvvvrx 'module show like fax' | grep "3 modules loaded"` if [ -n "$_F2E_STAT" ]; then return 0; else return 1; fi } #============================================= check_asterisk_extcfg() { check_config_line_and_execute_cmd2 "/etc/asterisk/extconfig.conf" "iaxusers = mysql,mor,devices" "Checking iaxusers\t\t\t\t" "cp /usr/src/mor/asterisk-conf/extconfig.conf /etc/asterisk/extconfig.conf" check_config_line_and_execute_cmd2 "/etc/asterisk/extconfig.conf" "iaxpeers = mysql,mor,devices" "Checking iaxpeers\t\t\t\t" "cp /usr/src/mor/asterisk-conf/extconfig.conf /etc/asterisk/extconfig.conf" check_config_line_and_execute_cmd2 "/etc/asterisk/extconfig.conf" "sipusers = mysql,mor,devices" "Checking sipusers\t\t\t\t" "cp /usr/src/mor/asterisk-conf/extconfig.conf /etc/asterisk/extconfig.conf" check_config_line_and_execute_cmd2 "/etc/asterisk/extconfig.conf" "sippeers = mysql,mor,devices" "Checking sippeers\t\t\t\t" "cp /usr/src/mor/asterisk-conf/extconfig.conf /etc/asterisk/extconfig.conf" check_config_line_and_execute_cmd2 "/etc/asterisk/extconfig.conf" "realtime_ext => mysql,mor,extlines" "Checking realtime_ext\t\t\t\t" "cp /usr/src/mor/asterisk-conf/extconfig.conf /etc/asterisk/extconfig.conf" check_config_line_and_execute_cmd2 "/etc/asterisk/extconfig.conf" "voicemail => mysql,mor,voicemail_boxes" "Checking voicemail\t\t\t\t" "cp /usr/src/mor/asterisk-conf/extconfig.conf /etc/asterisk/extconfig.conf" } #=============================================== check_sip_cfg() { if [ "$NO_SIP_CONF" == "1" ]; then if [ ! -r /etc/asterisk/sip.conf ]; then echo "/etc/asterisk/sip.conf not found!"; NO_SIP_CONF="1"; return 1; fi fi cat /etc/asterisk/sip.conf | cut -f 1 | grep -m1 $1 &> /dev/null if [ $? != 0 ]; then if [ "$1" == "videosupport" ]; then return 2; fi if [ "$1" == "t38pt_udptl" ]; then return 2; fi return 1; else return 0; fi } #===================================================================== check_sip_cfg_test() { echo -e "\E[36m==================Checking sip.conf==========================================================\E[37m"; exec_and_evaluate check_sip_cfg "allowtransfer" "Checking for allowtransfer\t\t\t" exec_and_evaluate check_sip_cfg "videosupport" "Checking for videosupport\t\t\t" exec_and_evaluate check_sip_cfg "rtptimeout" "Checking for rtptimeout\t\t\t\t" exec_and_evaluate check_sip_cfg "rtpholdtimeout" "Checking for rtpholdtimeout\t\t\t" exec_and_evaluate check_sip_cfg "t38pt_udptl" "Checking for t38pt_udptl\t\t\t" exec_and_evaluate check_sip_cfg "t38pt_rtp" "Checking for t38pt_rtp\t\t\t\t" exec_and_evaluate check_sip_cfg "t38pt_tcp" "Checking for t38pt_tcp\t\t\t\t" exec_and_evaluate check_sip_cfg "rtcachefriends" "Checking for rtcachefriends\t\t\t" exec_and_evaluate check_sip_cfg "rtsavesysname" "Checking for rtsavesysname\t\t\t" exec_and_evaluate check_sip_cfg "rtupdate" "Checking for rtupdate\t\t\t\t" exec_and_evaluate check_sip_cfg "ignoreregexpire" "Checking for ignoreregexpire\t\t\t" check_if_setting_match /etc/asterisk/sip.conf "allowtransfer" "allowtransfer=no" if [ "$?" == "0" ]; then echo -e "allowtransfer\t\t\t\t\t\t\t\t\t\t\t[\E[32m OK \E[37m]"; else echo -e "allowtransfer\t\t\t\t\t\t\t\t\t\t\t[\E[31m FAILED \E[37m]"; fi check_if_setting_match /etc/asterisk/sip.conf "alwaysauthreject" "alwaysauthreject=yes" if [ "$?" == "0" ]; then echo -e "alwaysauthreject\t\t\t\t\t\t\t\t\t\t[\E[32m OK \E[37m]"; else echo -e "alwaysauthreject\t\t\t\t\t\t\t\t\t\t[\E[31m FAILED \E[37m]"; fi echo -e "\E[36m============================================================================\E[37m" } #===================================================================== check_iax() { echo -e "\E[36m===============Checking /etc/asterisk/iax.conf for correct settings=====================\E[37m" check_if_setting_match /etc/asterisk/iax.conf "requirecalltoken" "requirecalltoken=no" if [ "$?" == "0" ]; then echo -e "requirecalltoken\t\t\t\t\t\t\t\t\t\t[\E[32m OK \E[37m]"; else echo -e "requirecalltoken\t\t\t\t\t\t\t\t\t\t[\E[31m FAILED \E[37m]"; fi echo -e "\E[36m============================================================================\E[37m" } #===================================================================== asterisk_current_version() { rasterisk -x "core show version" > /dev/null if [ "$?" != "0" ]; then echo "ERROR: IS ASTERISK STARTED?"; return 1; fi ASTERISK_VERSION=`rasterisk -x "core show version" |grep Asterisk | awk '{print $2}'` if [ "$?" != "0" ]; then echo "Some problems occoured when determining asterisk version. Is asterisk started?"; return 1; fi } #============================== check_extensions_mor.conf() { asterisk_current_version if [ "$?" != "1" ]; then /usr/bin/ruby /usr/src/mor/test/which_version_is_bigger.rb "$ASTERISK_VERSION" "1.4.18.1" if [ "$?" == "1" ]; then #first passed parameter was bigger --> we have a newer asterisk version as we wanted. echo -e "\E[36m================Checking extensions_mor.conf====================\E[37m" ALL_OK=0 #RESETTING check_if_settings_match_exactly /etc/asterisk/extensions_mor.conf ";Asterisk 1.4.24.1+ support" 1 report ';Asterisk 1.4.24.1+ support\t\t\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor.conf 'exten => h,1,Set(MOR_DIALSTATUS=${DIALSTATUS})' 1 report 'exten => h,1,Set(MOR_DIALSTATUS=${DIALSTATUS})\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor.conf 'exten => h,n,Set(MOR_RDURATION=${CDR(rduration)})' 1 report 'exten => h,n,Set(MOR_RDURATION=${CDR(rduration)})\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor.conf 'exten => h,n,Set(MOR_RBILLSEC=${CDR(rbillsec)})' 1 report 'exten => h,n,Set(MOR_RBILLSEC=${CDR(rbillsec)})\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor.conf 'exten => h,n,Set(MOR_CLID=${CALLERID(all)})' 1 report 'exten => h,n,Set(MOR_CLID=${CALLERID(all)})\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor.conf 'exten => h,n,Set(MOR_CHANNEL=${CDR(channel)})' 1 report 'exten => h,n,Set(MOR_CHANNEL=${CDR(channel)})\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor.conf 'exten => h,n,NoOp(HANGUP CAUSE: ${HANGUPCAUSE})' 1 report 'exten => h,n,NoOp(HANGUP CAUSE: ${HANGUPCAUSE}) \t\t\t\t\t' FAILED if [ "$ALL_OK" == "0" ]; then echo -e "/etc/asterisk/extensions_mor.conf\t\t\t\t\t\t\t\t[\E[32m OK \E[37m]"; else echo -e "/etc/asterisk/extensions_mor.conf\t\t\t\t\t\t\t\t[\E[31m FAILED \E[37m]"; fi fi fi } #============================== extensions_mor_ad.conf() { asterisk_current_version if [ "$?" != "1" ]; then /usr/bin/ruby /usr/src/mor/test/which_version_is_bigger.rb "$ASTERISK_VERSION" "1.4.18.1" if [ "$?" == "1" ]; then #first passed parameter was bigger --> we have a newer asterisk version as we wanted. echo -e "\E[36m==================Checking extensions_mor_ad.conf==================\E[37m" ALL_OK=0 #RESETTING check_if_settings_match_exactly /etc/asterisk/extensions_mor_ad.conf ";Asterisk 1.4.24.1+ support" 2 report ';Asterisk 1.4.24.1+ support\t\t\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor_ad.conf 'exten => h,1,Set(MOR_DIALSTATUS=${DIALSTATUS})' 2 report 'exten => h,1,Set(MOR_DIALSTATUS=${DIALSTATUS})\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor_ad.conf 'exten => h,n,Set(MOR_RDURATION=${CDR(rduration)})' 2 report 'exten => h,n,Set(MOR_RDURATION=${CDR(rduration)})\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor_ad.conf 'exten => h,n,Set(MOR_RBILLSEC=${CDR(rbillsec)})' 2 report 'exten => h,n,Set(MOR_RBILLSEC=${CDR(rbillsec)})\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor_ad.conf 'exten => h,n,Set(MOR_CLID=${CALLERID(all)})' 2 report 'exten => h,n,Set(MOR_CLID=${CALLERID(all)})\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor_ad.conf 'exten => h,n,Set(MOR_CHANNEL=${CDR(channel)})' 2 report 'exten => h,n,Set(MOR_CHANNEL=${CDR(channel)})\t\t\t\t\t\t' FAILED check_if_settings_match_exactly /etc/asterisk/extensions_mor_ad.conf 'exten => h,n,NoOp(HANGUP CAUSE: ${HANGUPCAUSE})' 2 report 'exten => h,n,NoOp(HANGUP CAUSE: ${HANGUPCAUSE})\t\t\t\t\t\t' FAILED if [ "$ALL_OK" == "0" ]; then echo -e "/etc/asterisk/extensions_mor_ad.conf\t\t\t\t\t\t\t\t[\E[32m OK \E[37m]"; else echo -e "/etc/asterisk/extensions_mor_ad.conf\t\t\t\t\t\t\t\t[\E[31m FAILED \E[37m]"; fi echo -e "\E[36m====================================\E[37m" fi fi }