#!/usr/bin/env bash

echo 
echo "*** install Thirdlane Communications Manager ***"
echo 

echo Check Asterisk Version...
/usr/sbin/asterisk -rx "core show version"
echo

touch /etc/asterisk/sip_peers.include

mkdir -p /etc/asterisk/user_provisioning/
chown asterisk:asterisk /etc/asterisk/ -R

mkdir -p /usr/local/share/perl5/
mkdir -p /var/log/thirdlane/

# install kernel-devel  - required by rtpengine-dkms
time \
  yum -y install kernel-devel-$(uname -r)

time \
  yum -y install turnserver thirdlane-prosody rtpengine rtpengine-kernel rtpengine-dkms thirdlane-api-core thirdlane-uniserver thirdlane-api-server-ng thirdlane-kamailio-config thirdlane-system-updates --enablerepo=epel
#  yum -y install thirdlane-ha-cluster-scripts turnserver thirdlane-prosody rtpengine thirdlane-cacher --enablerepo=epel
# thirdlane-jitsi-videobridge 

# fix kamailio config
sed -i 's/^#!define LOG_LEVEL L_DBG.*$/#!define LOG_LEVEL L_INFO/' /etc/kamailio/local.cfg 

systemctl stop prosody turnserver rtpengine jvb cacher
systemctl mask jvb

# fix turnserver config
turn_pass=`openssl rand -hex 32`
echo -e "\n\nno-cli\ncli-password=$turn_pass\n" >> /etc/turnserver/turnserver.conf
echo pidfile=\"/var/run/turnserver/turnserver.pid\" >> /etc/turnserver/turnserver.conf
sed -i 's/^listening-device=.*/#&/g' /etc/turnserver/turnserver.conf 
chmod -x /usr/lib/systemd/system/turnserver.service
echo "d /run/turnserver   710 turnserver turnserver" > /etc/tmpfiles.d/turnserver.conf 

# fix rtpengine
mkdir -p /var/lib/ngcp-rtpengine/

# fix prosody
pkill luajit
xmpp_pass=`openssl rand -hex 32`
cat >>/etc/prosody/components.cfg.lua <<-EOF

Component "sms-api.default.local"
component_secret = "$xmpp_pass"

EOF

# save my.cnf
cp -f /etc/my.cnf /etc/my.cnf.sav

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

#exit

yum -y install pbxm-perl-lib awscli google-cloud-sdk

# pbxm debug -  'error' => 0, 'warn' => 1, 'info' => 2, 'debug' => 3, 'trace' => 4, 'default' => 3 
/usr/local/sbin/debug_adm --action=enable --object=debug --level=debug

mkdir /tmp/rpms && cd /tmp/rpms && \
    yumdownloader pbxmw-${WBMTYPE} thirdlane-call-us thirdlane-connect-${WBMTYPE} thirdlane-documentation thirdlane-user-scripts thirdlane-connect-downloads && rpm -ivh --nodeps *.rpm
rm -rf /tmp/rpms/

#cat /etc/webmin/asterisk/install.log

# restore my.cnf
cp -f /etc/my.cnf.sav /etc/my.cnf

# api-server-ng fix
sed -i "s/^VAL=.*redhat-release.*$/VAL=8/" /etc/sysconfig/api-server-ng.sh

yum install -y thirdlane-pbxprotect

systemctl restart nginx
systemctl restart webmin
systemctl restart syslog-ng

cat >/usr/libexec/webmin/asterisk/wizard_finished.sh <<-EOF
#!/bin/bash
log=/tmp/daemons.log
echo \$(date +'%F %T.%N') run wizard_restart_daemons.sh
echo \$(date +'%F %T.%N') run wizard_restart_daemons.sh >>\$log

#echo /usr/libexec/webmin/asterisk/wizard_restart_daemons.sh | at now

job="* * * * * /usr/libexec/webmin/asterisk/wizard_restart_daemons.sh; /usr/bin/crontab -l | /bin/grep -iv wizard_restart_daemons | /usr/bin/crontab -"
tmp=/tmp/crontab
/usr/bin/crontab -l >\$tmp && echo "\${job}" >>\$tmp && cat \$tmp | /usr/bin/crontab -
EOF

chmod +x /usr/libexec/webmin/asterisk/wizard_finished.sh

cat >/usr/libexec/webmin/asterisk/wizard_restart_daemons.sh <<-EOF
#!/bin/bash
log=/tmp/daemons.log

list='prosody asterisk kamailio memcached2 cacher api-server-ng rtpengine turnserver uniserver jvb license api munin munin-node munin-cgi-graph tarantool@pbxm-watcher tarantool@crm-connector'

for x in \$list; do
  echo \$(date +'%F %T.%N') systemctl restart \$x
  echo \$(date +'%F %T.%N') systemctl restart \$x >>\$log 
  /usr/bin/systemctl restart \$x 
done
#/usr/bin/sed -i  /etc/odbc.ini -e 's/^Driver = MariaDB/Driver = MySQL/g'
EOF

# fix /etc/odbcinst.ini
grep MariaDB /etc/odbcinst.ini >/dev/null || cat >> /etc/odbcinst.ini <<-EOF

[MariaDB]
Description     = ODBC for MariaDB
Driver          = /usr/lib/libmaodbc.so
Driver64        = /usr/lib64/libmaodbc.so
FileUsage       = 1
EOF

chmod +x /usr/libexec/webmin/asterisk/wizard_restart_daemons.sh

# fix nginx 
usermod -a -G asterisk nginx

if [ -e /var/thirdlane_load/xmpp_split_config.pl ]; then
echo Fix prosody configs...
cd /
/bin/perl /var/thirdlane_load/xmpp_split_config.pl
systemctl stop  prosody
systemctl start prosody
fi

exit

# fix odbc.ini
grep pbxlogs /etc/odbc.ini >/dev/null || cat >>/etc/odbc.ini <<-EOF

[pbxlogs]
Description = pbxlogs MySQL ODBC
Driver = MariaDB
Socket = /var/lib/mysql/mysql.sock
User = root
Password = passw0rd
Database = pbxlogs
Option = 3

EOF

