#!/opt/bin/sh

install_ast() {
mkdir /opt/var/lib
mkdir /opt/var/lib/asterisk
mkdir /opt/var/spool
mkdir /opt/var/spool/asterisk
for ipk in asterisk asterisk-pjsip asterisk-chan-rtp asterisk-res-rtp-asterisk asterisk-res-stasis-playback asterisk-bridge-simple asterisk-res-audiosocket asterisk-format-wav asterisk-format-pcm asterisk-format-sln asterisk-codec-ulaw openssl-util asterisk-app-system asterisk-app-read asterisk-app-record asterisk-app-stack asterisk-app-channelredirect asterisk-func-channel asterisk-app-originate asterisk-app-mixmonitor asterisk-app-voicemail asterisk-bridge-builtin-features asterisk-app-waitforsilence asterisk-bridge-native-rtp asterisk-app-confbridge asterisk-res-musiconhold asterisk-pbx-spool asterisk-res-srtp lame
 do
	echo "Info: Installing \"$ipk\" package..."
  if ! opkg install $ipk >/dev/null 2>&1
    then
	echo "Critical error: An error occurred while installing the \"$ipk\" package."
	echo 'Exit.'
	exit 1
    else
	echo "Info: The \"$ipk\" package has been installed."
	sleep 1
  fi
done
rm /opt/share/asterisk/sounds/*.gsm
}

copy_conf() {
cd /opt/etc/asterisk
mv ./asterisk.conf ./asterisk.default
mv ./codecs.conf ./codecs.default
mv ./confbridge.conf ./confbridge.default
mv ./extensions.conf ./extensions.default
mv ./features.conf ./features.default
mv ./modules.conf ./modules.default
mv ./musiconhold.conf ./musiconhold.default
mv ./pjsip.conf ./pjsip.default
mv ./rtp.conf ./rtp.default
mv ./users.conf ./users.default
mv ./voicemail.conf ./voicemail.default
cp /opt/tmp/asterisk/asterisk.conf ./ 
cp /opt/tmp/asterisk/codecs.conf ./
cp /opt/tmp/asterisk/confbridge.conf ./
cp /opt/tmp/asterisk/extensions.conf ./
cp /opt/tmp/asterisk/features.conf ./
cp /opt/tmp/asterisk/modules.conf ./
cp /opt/tmp/asterisk/musiconhold.conf ./
cp /opt/tmp/asterisk/pjsip.conf ./
cp /opt/tmp/asterisk/rtp.conf ./
cp /opt/tmp/asterisk/users.conf ./
cp /opt/tmp/asterisk/logger.conf ./
cp /opt/tmp/asterisk/voicemail.conf ./
}

set_path() {
cat /opt/tmp/asterisk/path-to-ast-scripts >> /opt/etc/profile
}

clear_tmp() {
rm /opt/tmp/asterisk/ -r
}

add_hostname_res() {
ndmc -c "ip host $(hostname) $(ifconfig br0 | grep "inet addr" | cut -d ":" -f2 | grep -oz '[0-9.]')"
ndmc -c "copy running-config startup-config"
}

start_ast() {
/opt/etc/init.d/S31asterisk start
#/opt/etc/init.d/S31asterisk status
}

echo 'Installing Asterisk..'
opkg update
opkg upgrade
install_ast
copy_conf
set_path
clear_tmp
add_hostname_res
start_ast
rm "$0"
/opt/etc/asterisk/scripts/mobile
/opt/etc/asterisk/scripts/nvox-trunks
/opt/etc/asterisk/scripts/nvox-lines
/opt/bin/logger 'Asterisk installed!'


