Difference between pages "Asterisk" and "Res ldap.conf"

From Wikislax
(Difference between pages)
Jump to: navigation, search
(Created page with "{{RightTOC}} == What is Asterisk ? == [http://www.asterisk.org/ Asterisk] is an Open Source telephony server. Asterisk can handle traditional telephony hardware and be conne...")
 
(Adding Asterisk users)
 
Line 1: Line 1:
 
{{RightTOC}}
 
{{RightTOC}}
  
== What is Asterisk ? ==
+
== LDAP configuration ==
  
[http://www.asterisk.org/ Asterisk] is an Open Source telephony server. Asterisk can handle traditional telephony hardware and be connected to your telephony provider, but Asterisk can also be used to connect VoIP phones locally and on the Internet. In case a SIP subscription is included with your Internet access, you will be able to use it to access the telephony network. And if you need simultaneous calls, then you will be able to use a multi-channel "SIP trunk", that you can get from one of the many SIP providers on the market. Among various applications, Asterisk affords leaving recorded messages and sending them by mail, or doing some conferencing.
+
The [http://studioware.com/wikislax/index.php?title=OpenLDAP OpenLDAP] directory built earlier must be modified to include the asterisk schema, that can be copied from '''/usr/local/asterisk-x.y.z.t/contrib/scripts/asterisk.ldap-schema''' into '''/usr/local/etc/openldap/schema'''. The schema must then be included from '''/usr/local/etc/openldap/slapd.conf''':
  
From a practical viewpoint, Asterisk is easy to install but requires quite some efforts to understand and properly configure, as it is massive and the available documentation is not easy to understand, or some key points are sometimes missing. Also the configuration files are sensitive to syntax errors and the software will stop working, with no clue on what's wrong. However these syntax difficulties are during configuration only. When fixed, the software seems to be quite stable.
+
#
 +
# See slapd.conf(5) for details on configuration options.
 +
# This file should NOT be world readable.
 +
#
 +
include        /usr/local/etc/openldap/schema/core.schema
 +
include        /usr/local/etc/openldap/schema/cosine.schema
 +
include        /usr/local/etc/openldap/schema/inetorgperson.schema
 +
'''include        /usr/local/etc/openldap/schema/asterisk.schema'''
 +
. . .
  
== Installing Dahdi ==
+
A restart is required:
  
Dahdi-linux is a set of Asterisk linux modules required only when using telephony hardware. It was once also required to provide timing functions to the rest of the sofware but this is no longer the case so you probably don't need to install it. If you do, [http://www.asterisk.org/downloads download] then untar and install.
+
# /etc/rc.d/rc.slapd restart
  
# tar -C /usr/local -xvf dahdi-linux-x.y.z.tar.gz
+
We need to define a structure in the OpenLDAP directory where to store the asterisk information. For example we can put our '''users''' and '''extentions''' under entries by the same name just below the root of the directory. This can be done with the following LDIF file that we add to the directory using the '''ldapadd''' command:
# cd /usr/local/include
 
# ln -s ../dahdi-linux-x.y.z/linux/include/dahdi .
 
# cd /usr/local/dahdi-linux-x.y.z
 
# make
 
# make install
 
# make clean
 
  
That's it. <u>Note</u> : the other package Dahdi-tools is not required. <u>Other note</u> : Dahdi requires a kernel compiled with CONFIG_CRC_CCITT=y.
+
#OU users
 +
dn: ou=users,dc=studioware,dc=com
 +
objectClass: top
 +
objectClass: organizationalUnit
 +
ou: users
 +
# OU extensions
 +
dn: ou=extensions,dc=studioware,dc=com
 +
objectClass: top
 +
objectClass: organizationalUnit
 +
ou: extensions
 +
 +
# '''ldapadd -x -D "cn=Manager,dc=studioware,dc=com" -W -f yourLDIFpath'''
  
== Installing Jansson ==
+
* '''-x''' : affords using a simple authentication (as opposed to SASL tricky schemes)
 +
* '''-D''' : affords defining the user (here cn=Manager,dc=studioware,dc=com)
 +
* '''-W''' : affords being prompted to enter the password
 +
* '''-f''' : affords specifying the LDIF file name
  
Jansson is a required Json development library. [http://www.digip.org/jansson/releases/ Download] then untar and install.
+
== res_ldap.conf ==
  
# tar -C /usr/local -xvf jansson-x.y.z.tar.gz
+
The '''res_ldap.conf''' file affords detailing how to access the LDAP database and which schema variables to use. Let's start with the LDAP connection information, located in the '''[_general]''' context:
# cd /usr/local/jansson-linux-x.y.z
 
# ./configure --prefix=/usr/local --libdir=/usr/local/lib64
 
# make
 
# make install
 
# make clean
 
  
== Installing c-client ==
+
[_general]
 +
;
 +
; Specify one of either host and port OR url.  URL is preferred, as you can
 +
; use more options.
 +
host=localhost                      ; LDAP host
 +
port=389
 +
url=ldap://localhost
 +
protocol=3                          ; Version of the LDAP protocol to use; default is 3.
 +
basedn=dc=studioware,dc=com          ; Base DN
 +
user=cn=Manager,dc=studioware,dc=com ; Bind DN
 +
pass=mysecret                        ; Bind password
  
The asterisk imap option requires presence of library c-lient.a, which is part of Imap-uw, by the University of Washington. The University of Washington seems to be no longer distributing the software so we keep a copy for your convenience. [{{SERVER}}/wikislax/download/c-client.tar.Z Download] then untar and install :
+
The other contexts, '''[extensions]''', '''[sip]''', and '''[IAX]''', afford defining the correspondance between the variable names in Asterisk (on the left) and the variable names in the LDAP schema (on the right). Here is an example for the '''[extensions]''' context:
  
  # gunzip c-client.tar.Z
+
  ;
  # tar -C /usr/local -xvf c-client.tar
+
  ; Extensions Table
  # cd /usr/local
+
  ;
  # chown -R root:root imap-2007f
+
  [extensions]
  # chmod -R o-w imap-2007f
+
  ;context  =  AstExtensionContext
  # cd imap2007f
+
;exten  =  AstExtensionExten
  # make slx EXTRACFLAGS="-I/usr/include/openssl -g -O2 -fPIC" SSLCERTS=/etc/ssl/certs SSLKEYS=/etc/ssl/private
+
  ;priority = AstExtensionPriority
 +
  ;app = AstExtensionApplication
 +
;appdata = AstExtensionApplicationData
 +
;additionalFilter=(objectClass=AstExtension)
 +
context  =  AstContext
 +
exten  =  AstExtension
 +
priority = AstPriority
 +
app = AstApplication
 +
appdata = AstApplicationData
 +
additionalFilter=(objectClass=AsteriskExtension)
  
== Installing Speex ==
+
For a full content example of the res_ldap.conf file please click [{{SERVER}}/wikislax/download/res_ldap.conf here]. But please note that some names in your particular situation might differ from the names listed in this file and you could have to fix it.
  
Speex is a required free codec. [https://www.speex.org/downloads/ Download] speex source code then untar and install.
+
== extconfig.conf ==
  
# tar -C /usr/local -xvf speex-x.y.z.tar.gz
+
The '''[settings]''' context of '''extconfig.conf''' affords defining in which subtrees Asterisk should get the '''users''' and '''extension''' entries:
# cd /usr/local/speex-x.y.z
 
# ./configure --prefix=/usr/local --libdir=/usr/local/lib64
 
# make
 
# make install
 
# make clean
 
  
== Installing Asterisk ==
+
;
 
+
; Static and realtime external configuration
[http://www.asterisk.org/downloads Download Asterisk] then untar and install. Make menuselect affords choosing which components to use. If using mysql, be sure to read the next paragraph before invoking make. Otherwise proceed. make samples affords creating the configuration files in /usr/local/etc/asterisk.
+
; engine configuration
 
+
;
  # groupadd asterisk
+
; See https://wiki.asterisk.org/wiki/display/AST/Realtime+Database+Configuration
  # useradd -g asterisk asterisk
+
  ; for basic table formatting information.
  # tar -C /usr/local --no-same-permissions --no-same-owner -xvf asterisk-x.y.z.t.tar.gz
+
  ;
  # cd /usr/local/asterisk-x.y.z.t
+
  [settings]
  # ./configure --prefix=/usr/local --libdir=/usr/local/lib64 --mandir=/usr/local/man \
+
   
  --with-asound --with-crypto --with-iconv --with-imap=/usr/local/imap-2007f \
+
  '''sipusers => ldap,"ou=users,dc=studioware,dc=com",sip'''
  --with-jansson --with-ldap --with-speex --with-ssl
+
  '''sippeers => ldap,"ou=users,dc=studioware,dc=com",sip'''
# make menuselect
+
  '''extensions => ldap,"ou=extensions,dc=studioware,dc=com",extensions'''
# make
+
  . . .
# make install
 
# make install-logrotate
 
# make samples
 
# make clean
 
# chown -R asterisk:asterisk /usr/local/lib64/asterisk
 
# chown -R asterisk:asterisk /usr/local/var/lib/asterisk
 
# chown -R asterisk:asterisk /usr/local/var/log/asterisk
 
# chown -R asterisk:asterisk /usr/local/var/run/asterisk
 
# chown -R asterisk:asterisk /usr/local/var/spool/asterisk
 
# chmod o+x /usr/local/etc/asterisk
 
# chmod o-x /usr/local/lib64/asterisk
 
# chmod o-x /usr/local/var/lib/asterisk
 
# chmod o-x /usr/local/var/log/asterisk
 
# chmod o-x /usr/local/var/run/asterisk
 
  # chmod o-x /usr/local/var/spool/asterisk
 
 
 
If using mysql modules, there might be a glitch with the mysql include path. Replace in the files below the lines with "#include <mysql/mysql.h>" by lines with "#include <mysql.h>" (removing the directory) :
 
  
addons/app_mysql.c
+
== sip.conf ==
addons/cdr_mysql.c
 
addons/res_config_mysql.c
 
  
It is then possible to launch asterisk in the foreground with various levels of verbosity (depending on the number of v's). However the default configuration files include a number of options that we don't want, so we'll rename them first and start with empty files. Asterisk includes a console and then proposes a shell  :
+
For OpenLDAP to properly work these options must be added to the '''[general]''' context of the '''sip.conf''' file:
  
  # cd /usr/local/etc/asterisk
+
  [general]
  # mv extensions.conf extensions.conf.sample
+
  rtcachefriends=yes
  # mv extensions.ael extensions.ael.sample
+
  callevents=yes
  # mv sip.conf sip.conf.sample
+
  realm=studioware.com
# sudo -u asterisk asterisk -vvvc
 
 
  . . .
 
  . . .
*CLI>
 
  
Type '''help''' to view the available commands, however before doing anything useful we'll need to modify the configuration files so let's just '''core stop gracefully''' here.
+
* rtcachefriends=yes // affords putting in cache the user info (mandatory at it affords keeping in memory the IP address with which the user connected).
 +
* callevents=yes // affords raising information about a call
 +
* realm=studioware.com // LDAP domain name
  
== Running asterisk ==
+
== extensions.conf ==
  
Asterisk runs as a daemon so must be launched at startup and stopped at shutdown. Update /etc/rc.d/rc.local and /etc/rc.d/rc.local_shutdown accordingly :
+
The switch statement can be declared in one or more contexts to include the users or extensions LDAP records that have an '''AstAccountContext''' field matching the context name, for example:
  
  # vi /etc/rc.d/rc.local
+
  [internal]
 +
'''switch => Realtime/@'''
 +
. . .
 +
 +
[freephonie]
 
  . . .
 
  . . .
  # start asterisk
+
  '''switch => Realtime/@'''
if [ -x /usr/local/sbin/safe_asterisk ]; then
 
        echo "Starting asterisk: /usr/local/sbin/safe_asterisk -G asterisk -U asterisk -p"
 
        /usr/local/sbin/safe_asterisk -G asterisk -U asterisk -p
 
fi
 
<esc>
 
:x
 
# vi /etc/rc.d/rc.local_shutdown
 
 
  . . .
 
  . . .
# stop asterisk
 
if [ -r /usr/local/var/run/asterisk/asterisk.pid ]; then
 
        echo "Stopping asterisk: kill -INT `cat /usr/local/var/run/asterisk/asterisk.pid`"
 
        kill -INT `cat /usr/local/var/run/asterisk/asterisk.pid`
 
fi
 
<esc>
 
:x
 
 
== Configuring Asterisk ==
 
 
Asterisk running in the backgroung, it's possible to attach to the process using '''asterisk -r''' and to exit the asterisk shell by typing '''exit'''. Most of the configuration files can be modified externally then reloaded using commands such as '''dialplan reload''', '''sip reload''', or '''voicemail reload'''. A few files however cannot (example confbridge.conf), and require restarting using '''core restart now'''. Type '''help''' to get a complete list of commands.
 
  
The configuration files are created under EPREFIX/etc and there are many of them (112 in version 1.15.0.0 !). The bad news is that they must be all reviewed and modified to remove unneeded configuration options. When done though, modifying only a few will afford getting a working system with a reasonnable set of features. We decided to use LDAP to configure our users so this is what is detailed below.
+
<u>Note</u> : including the extensions LDAP records in several contexts is possible thanks to the fact the the '''AstAccountContext''' field is multivalued.
  
<u>Note</u> : the asterisk configuration files are organized in contexts whose names are enclosed in square brackets on a line of its own. Definitions in these contexts - otherwise mentionned - are valid inside these contexts only.
+
== Making sure ==
  
{| {{thead}}
+
At this point Asterisk should be able to take the new configuration into account (with no user defined). Connect to the asterisk console, reload the modules and the configuration files and display the ldap status:
|-
 
! {{chead}} width="150" | Configuration file
 
! {{chead}} | Usage
 
|-
 
| [[Sip.conf|sip.conf]]
 
| to configure sip accounts
 
|-
 
| [[Res_ldap.conf|res_ldap.conf]]
 
| to configure LDAP users
 
|-
 
| [[Confbridge.conf|confbridge.conf]]
 
| to configure conferences
 
|-
 
| [[Voicemail.conf|voicemail.conf]]
 
| to configure voicemail boxes
 
|-
 
| [[Extensions.conf|extensions.conf]]
 
| to configure the dialplan
 
|}
 
  
<br clear=all>
+
# '''asterisk -r'''
 +
Asterisk 15.0.0, Copyright (C) 1999 - 2016, Digium, Inc. and others.
 +
Created by Mark Spencer <markster@digium.com>
 +
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
 +
This is free software, with components licensed under the GNU General Public
 +
License version 2 and other licenses; you are welcome to redistribute it under
 +
certain conditions. Type 'core show license' for details.
 +
=========================================================================
 +
Connected to Asterisk 15.0.0 currently running on inner (pid = 2563)
 +
inner*CLI> '''module reload'''
 +
[Nov 28 21:29:09] NOTICE[2827]: sorcery.c:1407 sorcery_object_load: Type 'system' is not reloadable, maintaining previous values
 +
[Nov 28 21:29:09] WARNING[2818]: res_phoneprov.c:1230 get_defaults: Unable to find a valid server address or name.
 +
[Nov 28 21:29:09] NOTICE[2818]: chan_skinny.c:8445 config_load: Configuring skinny from skinny.conf
 +
[Nov 28 21:29:09] NOTICE[2818]: cel_custom.c:95 load_config: No mappings found in cel_custom.conf. Not logging CEL to custom CSVs.
 +
[Nov 28 21:29:09] NOTICE[2818]: app_queue.c:8999 reload_queue_rules: queuerules.conf has not changed since it was last loaded. Not taking any action.
 +
inner*CLI> '''sip reload'''
 +
inner*CLI> '''dialplan reload'''
 +
Dialplan reloaded.
 +
inner*CLI> '''realtime show ldap status'''
 +
Connected to 'ldap://localhost', baseDN dc=studioware,dc=com with username cn=Manager,dc=studioware,dc=com for 40 seconds
 +
inner*CLI> quit
 +
Asterisk cleanly ending (0).
 +
Executing last minute cleanups
 +
root@inner:/usr/local/etc/asterisk#
  
== Documentation ==
+
== Adding Asterisk users ==
  
[https://wiki.asterisk.org/wiki/display/AST/Asterisk+15+Documentation Asterisk Wiki]
+
A small [{{SERVER}}/wikislax/download/cu.sh script] will afford adding users to the '''users''' and '''extensions''' subtrees of the directory. In this script we create users in context '''[internal]''' and extensions in contexts '''[internal]''' and '''[freephonie]''', creating two values in multivalued field '''AstAccountContext'''. Once the user created in LDAP,  SIP registration can be checked on the display of the phone and on the Asterisk console:
  
[{{SERVER}}/slax/download/Asterisk.pdf Asterisk Book]
+
root@inner:/usr/local/etc/asterisk# '''asterisk -r'''
 +
Asterisk 15.0.0, Copyright (C) 1999 - 2016, Digium, Inc. and others.
 +
Created by Mark Spencer <markster@digium.com>
 +
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
 +
This is free software, with components licensed under the GNU General Public
 +
License version 2 and other licenses; you are welcome to redistribute it under
 +
certain conditions. Type 'core show license' for details.
 +
=========================================================================
 +
Connected to Asterisk 15.0.0 currently running on inner (pid = 2563)
 +
[Nov 28 21:39:46] NOTICE[2678]: chan_sip.c:24648 handle_response_peerpoke: Peer 'jp' is now Reachable. (9ms / 2000ms)
 +
inner*CLI> '''quit'''
 +
Asterisk cleanly ending (0).
 +
Executing last minute cleanups
 +
root@inner:/usr/local/etc/asterisk#
  
 
<br/>
 
<br/>
  
{{pFoot|[[Sucknews]]|[[Main Page]]|[[Sip.conf]]}}
+
{{pFoot|[[Sip.conf]]|[[Main Page]]|[[Confbridge.conf]]}}

Latest revision as of 09:57, 7 July 2018

LDAP configuration

The OpenLDAP directory built earlier must be modified to include the asterisk schema, that can be copied from /usr/local/asterisk-x.y.z.t/contrib/scripts/asterisk.ldap-schema into /usr/local/etc/openldap/schema. The schema must then be included from /usr/local/etc/openldap/slapd.conf:

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/asterisk.schema
. . .

A restart is required:

# /etc/rc.d/rc.slapd restart

We need to define a structure in the OpenLDAP directory where to store the asterisk information. For example we can put our users and extentions under entries by the same name just below the root of the directory. This can be done with the following LDIF file that we add to the directory using the ldapadd command:

#OU users
dn: ou=users,dc=studioware,dc=com
objectClass: top
objectClass: organizationalUnit
ou: users
# OU extensions
dn: ou=extensions,dc=studioware,dc=com
objectClass: top
objectClass: organizationalUnit
ou: extensions

# ldapadd -x -D "cn=Manager,dc=studioware,dc=com" -W -f yourLDIFpath
  • -x : affords using a simple authentication (as opposed to SASL tricky schemes)
  • -D : affords defining the user (here cn=Manager,dc=studioware,dc=com)
  • -W : affords being prompted to enter the password
  • -f : affords specifying the LDIF file name

res_ldap.conf

The res_ldap.conf file affords detailing how to access the LDAP database and which schema variables to use. Let's start with the LDAP connection information, located in the [_general] context:

[_general]
;
; Specify one of either host and port OR url.  URL is preferred, as you can
; use more options.
host=localhost                       ; LDAP host
port=389
url=ldap://localhost
protocol=3                           ; Version of the LDAP protocol to use; default is 3.
basedn=dc=studioware,dc=com          ; Base DN
user=cn=Manager,dc=studioware,dc=com ; Bind DN
pass=mysecret                        ; Bind password

The other contexts, [extensions], [sip], and [IAX], afford defining the correspondance between the variable names in Asterisk (on the left) and the variable names in the LDAP schema (on the right). Here is an example for the [extensions] context:

;
; Extensions Table
;
[extensions]
;context  =  AstExtensionContext
;exten  =  AstExtensionExten
;priority = AstExtensionPriority
;app = AstExtensionApplication
;appdata = AstExtensionApplicationData
;additionalFilter=(objectClass=AstExtension)
context  =  AstContext
exten  =  AstExtension
priority = AstPriority
app = AstApplication
appdata = AstApplicationData
additionalFilter=(objectClass=AsteriskExtension)

For a full content example of the res_ldap.conf file please click here. But please note that some names in your particular situation might differ from the names listed in this file and you could have to fix it.

extconfig.conf

The [settings] context of extconfig.conf affords defining in which subtrees Asterisk should get the users and extension entries:

;
; Static and realtime external configuration
; engine configuration
;
; See https://wiki.asterisk.org/wiki/display/AST/Realtime+Database+Configuration
; for basic table formatting information.
;
[settings]

sipusers => ldap,"ou=users,dc=studioware,dc=com",sip
sippeers => ldap,"ou=users,dc=studioware,dc=com",sip
extensions => ldap,"ou=extensions,dc=studioware,dc=com",extensions
. . .

sip.conf

For OpenLDAP to properly work these options must be added to the [general] context of the sip.conf file:

[general]
rtcachefriends=yes
callevents=yes
realm=studioware.com
. . .
  • rtcachefriends=yes // affords putting in cache the user info (mandatory at it affords keeping in memory the IP address with which the user connected).
  • callevents=yes // affords raising information about a call
  • realm=studioware.com // LDAP domain name

extensions.conf

The switch statement can be declared in one or more contexts to include the users or extensions LDAP records that have an AstAccountContext field matching the context name, for example:

[internal]
switch => Realtime/@
. . .

[freephonie]
. . .
switch => Realtime/@
. . .

Note : including the extensions LDAP records in several contexts is possible thanks to the fact the the AstAccountContext field is multivalued.

Making sure

At this point Asterisk should be able to take the new configuration into account (with no user defined). Connect to the asterisk console, reload the modules and the configuration files and display the ldap status:

# asterisk -r
Asterisk 15.0.0, Copyright (C) 1999 - 2016, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 15.0.0 currently running on inner (pid = 2563)
inner*CLI> module reload
[Nov 28 21:29:09] NOTICE[2827]: sorcery.c:1407 sorcery_object_load: Type 'system' is not reloadable, maintaining previous values
[Nov 28 21:29:09] WARNING[2818]: res_phoneprov.c:1230 get_defaults: Unable to find a valid server address or name.
[Nov 28 21:29:09] NOTICE[2818]: chan_skinny.c:8445 config_load: Configuring skinny from skinny.conf
[Nov 28 21:29:09] NOTICE[2818]: cel_custom.c:95 load_config: No mappings found in cel_custom.conf. Not logging CEL to custom CSVs.
[Nov 28 21:29:09] NOTICE[2818]: app_queue.c:8999 reload_queue_rules: queuerules.conf has not changed since it was last loaded. Not taking any action.
inner*CLI> sip reload
inner*CLI> dialplan reload
Dialplan reloaded.
inner*CLI> realtime show ldap status
Connected to 'ldap://localhost', baseDN dc=studioware,dc=com with username cn=Manager,dc=studioware,dc=com for 40 seconds
inner*CLI> quit
Asterisk cleanly ending (0).
Executing last minute cleanups
root@inner:/usr/local/etc/asterisk#

Adding Asterisk users

A small script will afford adding users to the users and extensions subtrees of the directory. In this script we create users in context [internal] and extensions in contexts [internal] and [freephonie], creating two values in multivalued field AstAccountContext. Once the user created in LDAP, SIP registration can be checked on the display of the phone and on the Asterisk console:

root@inner:/usr/local/etc/asterisk# asterisk -r
Asterisk 15.0.0, Copyright (C) 1999 - 2016, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 15.0.0 currently running on inner (pid = 2563)
[Nov 28 21:39:46] NOTICE[2678]: chan_sip.c:24648 handle_response_peerpoke: Peer 'jp' is now Reachable. (9ms / 2000ms)
inner*CLI> quit
Asterisk cleanly ending (0).
Executing last minute cleanups
root@inner:/usr/local/etc/asterisk#


Sip.conf Main Page Confbridge.conf