mirror of https://github.com/asterisk/asterisk
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
5.4 KiB
226 lines
5.4 KiB
\subsubsection{Introduction}
|
|
|
|
The Asterisk configuration parser in the 1.2 version
|
|
and beyond series has been improved in a number of ways. In
|
|
addition to the realtime architecture, we now have the ability to create
|
|
templates in configuration files, and use these as templates when we
|
|
configure phones, voicemail accounts and queues.
|
|
|
|
These changes are general to the configuration parser, and works in
|
|
all configuration files.
|
|
|
|
\subsubsection{General syntax}
|
|
Asterisk configuration files are defined as follows:
|
|
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[section]
|
|
label = value
|
|
label2 = value
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
In some files, (e.g. mgcp.conf, zapata.conf and agents.conf), the syntax
|
|
is a bit different. In these files the syntax is as follows:
|
|
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[section]
|
|
label1 = value1
|
|
label2 = value2
|
|
object => name
|
|
|
|
label3 = value3
|
|
label2 = value4
|
|
object2 => name2
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
In this syntax, we create objects with the settings defined above the object
|
|
creation. Note that settings are inherited from the top, so in the example
|
|
above object2 has inherited the setting for "label1" from the first object.
|
|
|
|
For template configurations, the syntax for defining a section is changed
|
|
to:
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[section](options)
|
|
label = value
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
The options field is used to define templates, refer to templates and hide
|
|
templates. Any object can be used as a template.
|
|
|
|
No whitespace is allowed between the closing "]" and the parenthesis "(".
|
|
|
|
\subsubsection{Comments}
|
|
|
|
All lines that starts with semi-colon ";" is treated as comments
|
|
and is not parsed.
|
|
|
|
The "\verb!;--!" is a marker for a multi-line comment. Everything after
|
|
that marker will be treated as a comment until the end-marker "\verb!--;!"
|
|
is found. Parsing begins directly after the end-marker.
|
|
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
;This is a comment
|
|
label = value
|
|
;-- This is
|
|
a comment --;
|
|
|
|
;-- Comment --; exten=> 1000,1,dial(SIP/lisa)
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
\subsubsection{Including other files}
|
|
In all of the configuration files, you may include the content of another
|
|
file with the \#include statement. The content of the other file will be
|
|
included at the row that the \#include statement occurred.
|
|
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
#include myusers.conf
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
You may also include the output of a program with the \#exec directive,
|
|
if you enable it in asterisk.conf
|
|
|
|
In asterisk.conf, add the execincludes = yes statement in the options
|
|
section:
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[options]
|
|
execincludes=yes
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
The exec directive is used like this:
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
#exec /usr/local/bin/myasteriskconfigurator.sh
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
\subsubsection{Adding to an existing section}
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[section]
|
|
label = value
|
|
|
|
[section](+)
|
|
label2 = value2
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
In this case, the plus sign indicates that the second section (with the
|
|
same name) is an addition to the first section. The second section can
|
|
be in another file (by using the \#include statement). If the section
|
|
name referred to before the plus is missing, the configuration will fail
|
|
to load.
|
|
|
|
\subsubsection{Defining a template-only section}
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[section](!)
|
|
label = value
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
The exclamation mark indicates to the config parser that this is a only
|
|
a template and should not itself be used by the Asterisk module for
|
|
configuration. The section can be inherited by other sections (see
|
|
section "Using templates" below) but is not used by itself.
|
|
|
|
\subsubsection{Using templates (or other configuration sections)}
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[section](name[,name])
|
|
label = value
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
The name within the parenthesis refers to other sections, either
|
|
templates or standard sections. The referred sections are included
|
|
before the configuration engine parses the local settings within the
|
|
section as though their entire contents (and anything they were
|
|
previously based upon) were included in the new section. For example
|
|
consider the following:
|
|
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[foo]
|
|
permit=192.168.0.2
|
|
host=asdf
|
|
deny=192.168.0.1
|
|
|
|
[bar]
|
|
permit=192.168.1.2
|
|
host=jkl
|
|
deny=192.168.1.1
|
|
|
|
[baz](foo,bar)
|
|
permit=192.168.3.1
|
|
host=bnm
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
The [baz] section will be processed as though it had been written in the
|
|
following way:
|
|
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[baz]
|
|
permit=192.168.0.2
|
|
host=asdf
|
|
deny=192.168.0.1
|
|
permit=192.168.1.2
|
|
host=jkl
|
|
deny=192.168.1.1
|
|
permit=192.168.3.1
|
|
host=bnm
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
\subsubsection{Additional Examples}
|
|
|
|
(in top-level sip.conf)
|
|
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[defaults](!)
|
|
type=friend
|
|
nat=yes
|
|
qualify=on
|
|
dtmfmode=rfc2833
|
|
disallow=all
|
|
allow=alaw
|
|
|
|
#include accounts/*/sip.conf
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
(in \path{accounts/customer1/sip.conf})
|
|
|
|
\begin{astlisting}
|
|
\begin{verbatim}
|
|
[def-customer1](!,defaults)
|
|
secret=this_is_not_secret
|
|
context=from-customer1
|
|
callerid=Customer 1 <300>
|
|
accountcode=0001
|
|
|
|
[phone1](def-customer1)
|
|
mailbox=phone1@customer1
|
|
|
|
[phone2](def-customer1)
|
|
mailbox=phone2@customer1
|
|
\end{verbatim}
|
|
\end{astlisting}
|
|
|
|
This example defines two phones - phone1 and phone2 with settings
|
|
inherited from "def-customer1". The "def-customer1" is a template that
|
|
inherits from "defaults", which also is a template.
|