#!/bin/bash echo "=========================================" echo " Asterisk container starting up " echo "=========================================" if [[ ! -f /etc/asterisk/asterisk.conf ]] then # extract default distro config in volume echo " -- No asterisk.conf found, unpacking distribution config for production" cd /etc/asterisk tar zxf /etc/ast-conf.tgz # (also) extract default distro config in dpkg-dist for easy reference rm -rf dpkg-dist mkdir dpkg-dist cd dpkg-dist tar zxf /etc/ast-conf.tgz else # extract default distro config in dpkg-dist for easy reference echo " -- Existing asterisk.conf found, unpacking distribution config in reference folder" cd /etc/asterisk rm -rf dpkg-dist mkdir dpkg-dist cd dpkg-dist tar zxf /etc/ast-conf.tgz fi # ensure cdr-csv subdir exists mkdir -p /var/log/asterisk/cdr-csv # fix permissions chown -R asterisk:asterisk /etc/asterisk chmod -R o+r /etc/asterisk chown -R asterisk:asterisk /var/spool/asterisk chmod -R o+r /var/spool/asterisk chown -R asterisk:asterisk /var/log/asterisk chmod -R o+r /var/log/asterisk # detect public IPv4 address and configure for sip if [ -z "$IP4" ]; then IP4=`curl -4 -s http://icanhazip.com/` echo " -- Detected external (public) IPv4 address $IP4 (requested from icanhazip)" echo " -- You can override this by passing the IP4 environment variable with the desired address" else echo " -- Detected external (public) IPv4 address $IP4 (set from environment)" fi sed -ri "s/external_media_address=(([0-9]{1,3}\.){3}[0-9]{1,3})/external_media_address=$IP4/g" /etc/asterisk/pjsip.conf sed -ri "s/external_signaling_address=(([0-9]{1,3}\.){3}[0-9]{1,3})/external_signaling_address=$IP4/g" /etc/asterisk/pjsip.conf # configure msmtp echo "account default" > /etc/msmtprc if [ -n "$SMARTHOST" ]; then IFS=: read -r SMARTHOST_HOST SMARTHOST_PORT <<< "$SMARTHOST" echo " -- Expanding '$SMARTHOST' as default SMTP relay" fi if [ -n "$SMARTHOST_HOST" ]; then echo "host $SMARTHOST_HOST" >> /etc/msmtprc echo " -- Set '$SMARTHOST_HOST' as default SMTP relay host" else echo "host mail" >> /etc/msmtprc echo " -- Using 'mail' as default SMTP relay host" fi if [ -n "$SMARTHOST_PORT" ]; then echo "port $SMARTHOST_PORT" >> /etc/msmtprc echo " -- Set $SMARTHOST_PORT as default SMTP relay port" else echo "port 587" >> /etc/msmtprc echo " -- Using 587 as default SMTP relay port" fi echo "from msmtp@asterisk" >> /etc/msmtprc # create symlink for asterisk to use ln -s /usr/bin/msmtp /usr/sbin/sendmail # go live echo " -- Launching Asterisk" /usr/sbin/asterisk -f -p -U asterisk