From 1fc153fb5ed4c41336071842872aaf2937de9ac7 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Thu, 18 Jul 2013 02:33:33 +0000 Subject: [PATCH] Enable inbound SIP calls Enable inbound SIP calls. There are a few steps to this. 1) iptables config. Open UDP and TCP port 5060 for SIP, as well as UDP ports 10000-20000 for RTP. 2) Add a custom sip.conf which makes chan_sip listen on all address, including IPv4 and IPv6. Also enable unauthenticated inbound calls and send them to the 'public' dialplan context. 3) Create the dialplan. Right now it just plays a sound prompt called 'spam'. You'll have to call in to find out what it says. Note that this required installing the extra sounds. There's a bunch of good stuff in there that may be handy, other than just 'spam'. Change-Id: I6b62511317603eedf9280b55a00ba5cee0611b62 --- modules/asterisk/manifests/init.pp | 5 ++++ .../files/pbx/asterisk/extensions.conf | 8 ++++++ .../files/pbx/asterisk/sip.conf | 14 ++++++++++ modules/openstack_project/manifests/pbx.pp | 26 ++++++++++++++++++- 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 modules/openstack_project/files/pbx/asterisk/extensions.conf create mode 100644 modules/openstack_project/files/pbx/asterisk/sip.conf diff --git a/modules/asterisk/manifests/init.pp b/modules/asterisk/manifests/init.pp index 8ef293eedd..cfcdf69f46 100644 --- a/modules/asterisk/manifests/init.pp +++ b/modules/asterisk/manifests/init.pp @@ -63,6 +63,11 @@ class asterisk ( require => Yumrepo['asteriskcurrent'], } + package { 'asterisk-sounds-extra-en-ulaw' : + ensure => present, + require => Yumrepo['asteriskcurrent'], + } + file {'/etc/asterisk/asterisk.conf': ensure => present, owner => 'asterisk', diff --git a/modules/openstack_project/files/pbx/asterisk/extensions.conf b/modules/openstack_project/files/pbx/asterisk/extensions.conf new file mode 100644 index 0000000000..4451486ae5 --- /dev/null +++ b/modules/openstack_project/files/pbx/asterisk/extensions.conf @@ -0,0 +1,8 @@ +; extensions.conf customizations for pbx.openstack.org + +[public] + +exten => s,1,Answer() + same => n,Playback(spam) + +exten => _X.,1,Goto(s,1) diff --git a/modules/openstack_project/files/pbx/asterisk/sip.conf b/modules/openstack_project/files/pbx/asterisk/sip.conf new file mode 100644 index 0000000000..b3a1adbdef --- /dev/null +++ b/modules/openstack_project/files/pbx/asterisk/sip.conf @@ -0,0 +1,14 @@ +; sip.conf customizations for pbx.openstack.org + +[general](+) +udpbindaddr=:: +tcpenable=yes +tcpbindaddr=:: +context=public +allowguest=yes +disallow=all +allow=g722 +allow=ulaw +allow=alaw +allow=gsm +videosupport=yes diff --git a/modules/openstack_project/manifests/pbx.pp b/modules/openstack_project/manifests/pbx.pp index 7452c56eca..49d3542ae5 100644 --- a/modules/openstack_project/manifests/pbx.pp +++ b/modules/openstack_project/manifests/pbx.pp @@ -19,7 +19,13 @@ class openstack_project::pbx ( $sysadmins = [], ) { class { 'openstack_project::server': - sysadmins => $sysadmins, + sysadmins => $sysadmins, + # SIP signaling is either TCP or UDP port 5060. + # RTP media (audio/video) uses a range of UDP ports. + iptables_public_tcp_ports => [5060], + iptables_public_udp_ports => [5060], + iptables_rules4 => ['-m udp -p udp --dport 10000:20000 -j ACCEPT'], + iptables_rules6 => ['-m udp -p udp --dport 10000:20000 -j ACCEPT'], } class { 'selinux': @@ -34,4 +40,22 @@ class openstack_project::pbx ( asterisk_conf_source => 'puppet:///modules/openstack_project/pbx/asterisk/asterisk.conf', modules_conf_source => 'puppet:///modules/openstack_project/pbx/asterisk/modules.conf', } + + file {'/etc/asterisk/sip.conf.d/sip.conf': + ensure => present, + owner => 'asterisk', + group => 'asterisk', + mode => '0660', + source => 'puppet:///modules/openstack_project/pbx/asterisk/sip.conf', + require => File['/etc/asterisk/'], + } + + file {'/etc/asterisk/extensions.conf.d/extensions.conf': + ensure => present, + owner => 'asterisk', + group => 'asterisk', + mode => '0660', + source => 'puppet:///modules/openstack_project/pbx/asterisk/extensions.conf', + require => File['/etc/asterisk/'], + } }