summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-pbx/root/etc/init.d/pbx-asterisk
diff options
context:
space:
mode:
Diffstat (limited to 'applications/luci-pbx/root/etc/init.d/pbx-asterisk')
-rwxr-xr-xapplications/luci-pbx/root/etc/init.d/pbx-asterisk136
1 files changed, 111 insertions, 25 deletions
diff --git a/applications/luci-pbx/root/etc/init.d/pbx-asterisk b/applications/luci-pbx/root/etc/init.d/pbx-asterisk
index e20c33916..fdd01d76b 100755
--- a/applications/luci-pbx/root/etc/init.d/pbx-asterisk
+++ b/applications/luci-pbx/root/etc/init.d/pbx-asterisk
@@ -34,6 +34,7 @@ ASTDIRSRECURSIVE="/var/run/asterisk /var/log/asterisk /var/spool/asterisk"
ASTDIRS="/usr/lib/asterisk"
TEMPLATEDIR=/etc/${MODULENAME}-asterisk
+VMTEMPLATEDIR=/etc/${MODULENAME}-voicemail
ASTERISKDIR=/etc/asterisk
WORKDIR=/tmp/$MODULENAME.$$
MD5SUMSFILE=/tmp/$MODULENAME-sums.$$
@@ -54,10 +55,16 @@ TMPL_EXTCTHRU=$TEMPLATEDIR/extensions_disa.conf.TEMPLATE
TMPL_EXTENSIONS=$TEMPLATEDIR/extensions.conf.TEMPLATE
+TMPL_EXTVMDISABLED=$TEMPLATEDIR/extensions_voicemail_disabled.conf.TEMPLATE
+TMPL_EXTVMENABLED=$TEMPLATEDIR/extensions_voicemail_enabled.conf.TEMPLATE
+
TMPL_EXTBLKLIST=$TEMPLATEDIR/extensions_blacklist.conf.TEMPLATE
TMPL_EXTBLKLISTFTR=$TEMPLATEDIR/extensions_blacklist_footer.conf.TEMPLATE
TMPL_EXTBLKLISTHDR=$TEMPLATEDIR/extensions_blacklist_header.conf.TEMPLATE
+TMPL_EXTDEFAULT=$TEMPLATEDIR/extensions_default.conf.TEMPLATE
+TMPL_EXTDEFAULTUSER=$TEMPLATEDIR/extensions_default_user.conf.TEMPLATE
+
TMPL_EXTINCNTXTSIP=$TEMPLATEDIR/extensions_incoming_context_sip.conf.TEMPLATE
TMPL_EXTINCNTXTGTALKHDR=$TEMPLATEDIR/extensions_incoming_context_gtalk_header.conf.TEMPLATE
TMPL_EXTINCNTXTGTALK=$TEMPLATEDIR/extensions_incoming_context_gtalk.conf.TEMPLATE
@@ -78,11 +85,18 @@ TMPL_SIPPEER=$TEMPLATEDIR/sip_peer.TEMPLATE
TMPL_SIPREG=$TEMPLATEDIR/sip_registration.TEMPLATE
TMPL_SIPUSR=$TEMPLATEDIR/sip_user.TEMPLATE
+TMPL_MSMTPDEFAULT=$VMTEMPLATEDIR/pbx-msmtprc-defaults.TEMPLATE
+TMPL_MSMTPACCOUNT=$VMTEMPLATEDIR/pbx-msmtprc-account.TEMPLATE
+TMPL_MSMTPAUTH=$VMTEMPLATEDIR/pbx-msmtprc-account-auth.TEMPLATE
+TMPL_MSMTPACCTDFLT=$VMTEMPLATEDIR/pbx-msmtprc-account-default.TEMPLATE
+
+
INCLUDED_FILES="$WORKDIR/extensions_blacklist.conf $WORKDIR/extensions_callthrough.conf\
$WORKDIR/extensions_incoming.conf $WORKDIR/extensions_incoming_gtalk.conf\
$WORKDIR/extensions_user.conf $WORKDIR/jabber_users.conf\
$WORKDIR/sip_peers.conf $WORKDIR/sip_registrations.conf\
- $WORKDIR/sip_users.conf"
+ $WORKDIR/sip_users.conf $WORKDIR/extensions_voicemail.conf\
+ $WORKDIR/extensions_default.conf"
# In this string, we concatenate all local users enabled to receive calls
@@ -102,12 +116,15 @@ outbound_providers=""
# Copies the template files which we don't edit.
copy_unedited_templates_over()
{
- cp $TMPL_ASTERISK $WORKDIR/asterisk.conf
- cp $TMPL_GTALK $WORKDIR/gtalk.conf
- cp $TMPL_INDICATIONS $WORKDIR/indications.conf
- cp $TMPL_LOGGER $WORKDIR/logger.conf
- cp $TMPL_MANAGER $WORKDIR/manager.conf
- cp $TMPL_MODULES $WORKDIR/modules.conf
+ cp $TMPL_ASTERISK $WORKDIR/asterisk.conf
+ cp $TMPL_GTALK $WORKDIR/gtalk.conf
+ cp $TMPL_INDICATIONS $WORKDIR/indications.conf
+ cp $TMPL_LOGGER $WORKDIR/logger.conf
+ cp $TMPL_MANAGER $WORKDIR/manager.conf
+ cp $TMPL_MODULES $WORKDIR/modules.conf
+ # If this file isn't present at this stage, voicemail is disabled.
+ [ ! -f $WORKDIR/extensions_voicemail.conf ] && \
+ cp $TMPL_EXTVMDISABLED $WORKDIR/extensions_voicemail.conf
}
# Touches all the included files, to prevent asterisk from refusing to
@@ -120,22 +137,29 @@ create_included_files()
# Puts together all the extensions.conf related configuration.
pbx_create_extensions_config()
{
- sed "s/|LOCALUSERS|/$localusers_to_ring/g" $TMPL_EXTENSIONS > $WORKDIR/extensions.conf
- mv $WORKDIR/inext.TMP $WORKDIR/extensions_incoming.conf
- cp $TMPL_EXTINCNTXTGTALKHDR $WORKDIR/extensions_incoming_gtalk.conf
- cat $WORKDIR/outextgtalk.TMP >> $WORKDIR/extensions_incoming_gtalk.conf 2>/dev/null
+ local ringtime
+ config_get ringtime advanced ringtime
+
+ sed "s/|RINGTIME|/$ringtime/" $TMPL_EXTENSIONS > $WORKDIR/extensions.conf
+ mv $WORKDIR/inext.TMP $WORKDIR/extensions_incoming.conf
+ cp $TMPL_EXTINCNTXTGTALKHDR $WORKDIR/extensions_incoming_gtalk.conf
+ cat $WORKDIR/outextgtalk.TMP >> $WORKDIR/extensions_incoming_gtalk.conf 2>/dev/null
rm -f $WORKDIR/outextgtalk.TMP
- mv $WORKDIR/blacklist.TMP $WORKDIR/extensions_blacklist.conf
- mv $WORKDIR/userext.TMP $WORKDIR/extensions_user.conf
- cp $TMPL_EXTCTHRUHDR $WORKDIR/extensions_callthrough.conf
- cat $WORKDIR/callthrough.TMP >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
+ mv $WORKDIR/blacklist.TMP $WORKDIR/extensions_blacklist.conf
+ mv $WORKDIR/userext.TMP $WORKDIR/extensions_user.conf
+ cp $TMPL_EXTCTHRUHDR $WORKDIR/extensions_callthrough.conf
+ cat $WORKDIR/callthrough.TMP >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
rm -f $WORKDIR/callthrough.TMP
- cat $TMPL_EXTCTHRUCHECKHDR >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
- cat $WORKDIR/callthroughcheck.TMP >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
+ cat $TMPL_EXTCTHRUCHECKHDR >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
+ cat $WORKDIR/callthroughcheck.TMP >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
rm -f $WORKDIR/callthroughcheck.TMP
- cat $TMPL_EXTCTHRUCHECKFTR >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
+ cat $TMPL_EXTCTHRUCHECKFTR >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
rm -f $WORKDIR/outext-*.TMP
rm -f $WORKDIR/localext.TMP
+ sed "s/|LOCALUSERS|/$localusers_to_ring/g" $TMPL_EXTDEFAULT \
+ > $WORKDIR/extensions_default.conf
+ cat $WORKDIR/inextuser.TMP >> $WORKDIR/extensions_default.conf
+ rm -f $WORKDIR/inextuser.TMP
}
# Puts together all the sip.conf related configuration.
@@ -224,11 +248,11 @@ pbx_add_user()
local ring
local can_call
- config_get fullname $1 fullname
+ config_get fullname $1 fullname
config_get defaultuser $1 defaultuser
- config_get secret $1 secret
- config_get ring $1 ring
- config_get can_call $1 can_call
+ config_get secret $1 secret
+ config_get ring $1 ring
+ config_get can_call $1 can_call
[ -z "$defaultuser" -o -z "$secret" ] && return
[ -z "$fullname" ] && fullname="$defaultuser"
@@ -245,7 +269,7 @@ pbx_add_user()
# Add this user's configuration to the temp file containing all user configs.
sed "s/|FULLNAME|/$fullname/" $WORKDIR/sip_user.tmp |\
- sed "s/|SECRET|/$secret/g" >> $WORKDIR/sip_users.TMP
+ sed "s/|SECRET|/$secret/g" >> $WORKDIR/sip_users.TMP
if [ "$ring" = "yes" ] ; then
if [ -z "$localusers_to_ring" ] ; then
@@ -256,7 +280,11 @@ pbx_add_user()
fi
# Add configuration which allows local users to call each other.
- sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_EXTOUTLOCAL >> $WORKDIR/localext.TMP
+ sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_EXTOUTLOCAL >> $WORKDIR/localext.TMP
+
+ # Add configuration which puts calls to users through the default
+ # context, so that blacklists and voicemail take effect for this user.
+ sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_EXTDEFAULTUSER >> $WORKDIR/inextuser.TMP
rm -f $WORKDIR/sip_user.tmp
}
@@ -556,6 +584,57 @@ pbx_fix_ownership()
}
+# Creates voicemail config if installed and enabled.
+pbx_configure_voicemail()
+{
+ local enabled
+ local global_timeout
+ local global_email_addresses
+
+ local smtp_tls
+ local smtp_server
+ local smtp_port
+ local smtp_auth
+ local smtp_user
+ local smtp_password
+
+ config_get enabled global_voicemail enabled
+
+ # First check if voicemail is enabled.
+ [ "$enabled" != "yes" ] && exit
+
+ config_get global_timeout global_voicemail global_timeout
+ #config_get global_email_addresses global_voicemail global_email_addresses
+ config_get smtp_auth voicemail_smtp smtp_auth
+ config_get smtp_tls voicemail_smtp smtp_tls
+ config_get smtp_server voicemail_smtp smtp_server
+ config_get smtp_port voicemail_smtp smtp_port
+ config_get smtp_user voicemail_smtp smtp_user
+ config_get smtp_password voicemail_smtp smtp_password
+
+ sed "s/|AUTH|/$smtp_auth/" $TMPL_MSMTPDEFAULT |\
+ sed "s/|TLS|/$smtp_tls/" > $WORKDIR/pbx-msmtprc
+
+ sed "s/|HOST|/$smtp_server/" $TMPL_MSMTPACCOUNT |\
+ sed "s/|PORT|/$smtp_port/" >> $WORKDIR/pbx-msmtprc
+
+ if [ "$smtp_auth" = "on" ] ; then
+ sed "s/|USER|/$smtp_user/" $TMPL_MSMTPAUTH |\
+ sed "s/|PASSWORD|/$smtp_password/" >> $WORKDIR/pbx-msmtprc
+ fi
+
+ cat $TMPL_MSMTPACCTDFLT >> $WORKDIR/pbx-msmtprc
+
+ [ ! -f /etc/pbx-msmtprc ] && cp $WORKDIR/pbx-msmtprc /etc/pbx-msmtprc
+ diff -q $WORKDIR/pbx-msmtprc /etc/pbx-msmtprc 1>/dev/null \
+ || mv $WORKDIR/pbx-msmtprc /etc/pbx-msmtprc
+ chmod 600 /etc/pbx-msmtprc
+
+ # Copy over the extensions file which has voicemail enabled.
+ cp $TMPL_EXTVMENABLED $WORKDIR/extensions_voicemail.conf
+}
+
+
start() {
mkdir -p $WORKDIR
@@ -586,9 +665,16 @@ start() {
pbx_cook_sip_template
pbx_cook_rtp_template
+ # Prepare sip.conf using settings from the "advanced" section.
+ config_unset
+ config_load ${MODULENAME}-voicemail
+ pbx_configure_voicemail
+
# Assemble the configuration, and copy changed files over.
+ config_unset
+ config_load ${MODULENAME}-advanced
pbx_assemble_and_copy_config
# Enforce ownership of specified files and directories.
pbx_fix_ownership
-} \ No newline at end of file
+}