aboutsummaryrefslogtreecommitdiffstats
path: root/trunk/configs
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/configs')
-rw-r--r--trunk/configs/adsi.conf.sample8
-rw-r--r--trunk/configs/adtranvofr.conf.sample39
-rw-r--r--trunk/configs/agents.conf.sample105
-rw-r--r--trunk/configs/alarmreceiver.conf.sample80
-rw-r--r--trunk/configs/alsa.conf.sample62
-rw-r--r--trunk/configs/amd.conf.sample18
-rw-r--r--trunk/configs/asterisk.adsi159
-rw-r--r--trunk/configs/cdr.conf.sample148
-rw-r--r--trunk/configs/cdr_adaptive_odbc.conf.sample40
-rw-r--r--trunk/configs/cdr_custom.conf.sample10
-rw-r--r--trunk/configs/cdr_manager.conf.sample15
-rw-r--r--trunk/configs/cdr_odbc.conf.sample12
-rw-r--r--trunk/configs/cdr_pgsql.conf.sample9
-rw-r--r--trunk/configs/cdr_sqlite3_custom.conf.sample7
-rw-r--r--trunk/configs/cdr_tds.conf.sample11
-rw-r--r--trunk/configs/codecs.conf.sample65
-rw-r--r--trunk/configs/console.conf.sample68
-rw-r--r--trunk/configs/dnsmgr.conf.sample5
-rw-r--r--trunk/configs/dundi.conf.sample261
-rw-r--r--trunk/configs/enum.conf.sample22
-rw-r--r--trunk/configs/extconfig.conf.sample63
-rw-r--r--trunk/configs/extensions.ael.sample448
-rw-r--r--trunk/configs/extensions.conf.sample614
-rw-r--r--trunk/configs/extensions.lua.sample208
-rw-r--r--trunk/configs/extensions_minivm.conf.sample159
-rw-r--r--trunk/configs/features.conf.sample124
-rw-r--r--trunk/configs/festival.conf.sample35
-rw-r--r--trunk/configs/followme.conf.sample86
-rw-r--r--trunk/configs/func_odbc.conf.sample77
-rw-r--r--trunk/configs/gtalk.conf.sample19
-rw-r--r--trunk/configs/h323.conf.sample207
-rw-r--r--trunk/configs/http.conf.sample71
-rw-r--r--trunk/configs/iax.conf.sample434
-rw-r--r--trunk/configs/iaxprov.conf.sample81
-rw-r--r--trunk/configs/indications.conf.sample733
-rw-r--r--trunk/configs/jabber.conf.sample21
-rw-r--r--trunk/configs/jingle.conf.sample19
-rw-r--r--trunk/configs/logger.conf.sample96
-rw-r--r--trunk/configs/manager.conf.sample97
-rw-r--r--trunk/configs/meetme.conf.sample45
-rw-r--r--trunk/configs/mgcp.conf.sample110
-rw-r--r--trunk/configs/minivm.conf.sample218
-rw-r--r--trunk/configs/misdn.conf.sample455
-rw-r--r--trunk/configs/modules.conf.sample39
-rw-r--r--trunk/configs/musiconhold.conf.sample79
-rw-r--r--trunk/configs/muted.conf.sample39
-rw-r--r--trunk/configs/osp.conf.sample90
-rw-r--r--trunk/configs/oss.conf.sample138
-rw-r--r--trunk/configs/phone.conf.sample51
-rw-r--r--trunk/configs/phoneprov.conf.sample60
-rw-r--r--trunk/configs/queuerules.conf.sample20
-rw-r--r--trunk/configs/queues.conf.sample403
-rw-r--r--trunk/configs/res_config_sqlite.conf11
-rw-r--r--trunk/configs/res_odbc.conf.sample48
-rw-r--r--trunk/configs/res_pgsql.conf.sample14
-rw-r--r--trunk/configs/res_snmp.conf.sample10
-rw-r--r--trunk/configs/rpt.conf.sample193
-rw-r--r--trunk/configs/rtp.conf.sample22
-rw-r--r--trunk/configs/say.conf.sample200
-rw-r--r--trunk/configs/sip.conf.sample896
-rw-r--r--trunk/configs/sip_notify.conf.sample22
-rw-r--r--trunk/configs/skinny.conf.sample120
-rw-r--r--trunk/configs/sla.conf.sample140
-rw-r--r--trunk/configs/smdi.conf.sample43
-rw-r--r--trunk/configs/telcordia-1.adsi83
-rw-r--r--trunk/configs/udptl.conf.sample30
-rw-r--r--trunk/configs/unistim.conf.sample76
-rw-r--r--trunk/configs/usbradio.conf.sample54
-rw-r--r--trunk/configs/users.conf.sample79
-rw-r--r--trunk/configs/voicemail.conf.sample307
-rw-r--r--trunk/configs/vpb.conf.sample108
-rw-r--r--trunk/configs/zapata.conf.sample909
72 files changed, 9848 insertions, 0 deletions
diff --git a/trunk/configs/adsi.conf.sample b/trunk/configs/adsi.conf.sample
new file mode 100644
index 000000000..0f36f80da
--- /dev/null
+++ b/trunk/configs/adsi.conf.sample
@@ -0,0 +1,8 @@
+;
+; Sample ADSI Configuration file
+;
+[intro]
+alignment = center
+greeting => Welcome to the
+greeting => Asterisk
+greeting => Open Source PBX
diff --git a/trunk/configs/adtranvofr.conf.sample b/trunk/configs/adtranvofr.conf.sample
new file mode 100644
index 000000000..dc7bcfc7c
--- /dev/null
+++ b/trunk/configs/adtranvofr.conf.sample
@@ -0,0 +1,39 @@
+;
+; Voice over Frame Relay (Adtran style)
+;
+; Configuration file
+
+[interfaces]
+;
+; Default language
+;
+;language=en
+;
+; Lines for which we are the user termination. They accept incoming
+; and outgoing calls. We use the default context on the first 8 lines
+; used by internal phones.
+;
+context=default
+;user => voice00
+;user => voice01
+;user => voice02
+;user => voice03
+;user => voice04
+;user => voice05
+;user => voice06
+;user => voice07
+; Calls on 16 and 17 come from the outside world, so they get
+; a little bit special treatment
+context=remote
+;user => voice16
+;user => voice17
+;
+; Next we have lines which we only accept calls on, and typically
+; do not send outgoing calls on (i.e. these are where we are the
+; network termination)
+;
+;network => voice08
+;network => voice09
+;network => voice10
+;network => voice11
+;network => voice12
diff --git a/trunk/configs/agents.conf.sample b/trunk/configs/agents.conf.sample
new file mode 100644
index 000000000..eb0383f3c
--- /dev/null
+++ b/trunk/configs/agents.conf.sample
@@ -0,0 +1,105 @@
+;
+; Agent configuration
+;
+
+[general]
+;
+; Define whether callbacklogins should be stored in astdb for
+; persistence. Persistent logins will be reloaded after
+; Asterisk restarts.
+;
+persistentagents=yes
+
+; Enable or disable a single extension from logging in as multiple agents.
+; The default value is "yes".
+;multiplelogin=yes
+
+[agents]
+;
+; Define maxlogintries to allow agent to try max logins before
+; failed.
+; default to 3
+;
+;maxlogintries=5
+;
+;
+; Define autologoff times if appropriate. This is how long
+; the phone has to ring with no answer before the agent is
+; automatically logged off (in seconds)
+;
+;autologoff=15
+;
+; Define autologoffunavail to have agents automatically logged
+; out when the extension that they are at returns a CHANUNAVAIL
+; status when a call is attempted to be sent there.
+; Default is "no".
+;
+;autologoffunavail=yes
+;
+; Define ackcall to require an acknowledgement by '#' when
+; an agent logs in using agentcallbacklogin. Default is "no".
+;
+;ackcall=no
+;
+; Define endcall to allow an agent to hangup a call by '*'.
+; Default is "yes". Set this to "no" to ignore '*'.
+;
+;endcall=yes
+;
+; Define wrapuptime. This is the minimum amount of time when
+; after disconnecting before the caller can receive a new call
+; note this is in milliseconds.
+;
+;wrapuptime=5000
+;
+; Define the default musiconhold for agents
+; musiconhold => music_class
+;
+;musiconhold => default
+;
+; Define the default good bye sound file for agents
+; default to vm-goodbye
+;
+;agentgoodbye => goodbye_file
+;
+; Define updatecdr. This is whether or not to change the source
+; channel in the CDR record for this call to agent/agent_id so
+; that we know which agent generates the call
+;
+;updatecdr=no
+;
+; Group memberships for agents (may change in mid-file)
+;
+;group=3
+;group=1,2
+;group=
+;
+; --------------------------------------------------
+; This section is devoted to recording agent's calls
+; The keywords are global to the chan_agent channel driver
+;
+; Enable recording calls addressed to agents. It's turned off by default.
+;recordagentcalls=yes
+;
+; The format to be used to record the calls: wav, gsm, wav49.
+; By default its "wav".
+;recordformat=gsm
+;
+; The text to be added to the name of the recording. Allows forming a url link.
+;urlprefix=http://localhost/calls/
+;
+; The optional directory to save the conversations in. The default is
+; /var/spool/asterisk/monitor
+;savecallsin=/var/calls
+;
+; An optional custom beep sound file to play to always-connected agents.
+;custom_beep=beep
+;
+; --------------------------------------------------
+;
+; This section contains the agent definitions, in the form:
+;
+; agent => agentid,agentpassword,name
+;
+;agent => 1001,4321,Mark Spencer
+;agent => 1002,4321,Will Meadows
diff --git a/trunk/configs/alarmreceiver.conf.sample b/trunk/configs/alarmreceiver.conf.sample
new file mode 100644
index 000000000..bf767dea3
--- /dev/null
+++ b/trunk/configs/alarmreceiver.conf.sample
@@ -0,0 +1,80 @@
+;
+; alarmreceiver.conf
+;
+; Sample configuration file for the Asterisk alarm receiver application.
+;
+
+
+[general]
+
+;
+; Specify a timestamp format for the metadata section of the event files
+; Default is %a %b %d, %Y @ %H:%M:%S %Z
+
+timestampformat = %a %b %d, %Y @ %H:%M:%S %Z
+
+;
+; Specify a command to execute when the caller hangs up
+;
+; Default is none
+;
+
+;eventcmd = yourprogram -yourargs ...
+
+;
+; Specify a spool directory for the event files. This setting is required
+; if you want the app to be useful. Event files written to the spool
+; directory will be of the template event-XXXXXX, where XXXXXX is a random
+; and unique alphanumeric string.
+;
+; Default is none, and the events will be dropped on the floor.
+;
+
+eventspooldir = /tmp
+
+;
+; The alarmreceiver app can either log the events one-at-a-time to individual
+; files in the spool directory, or it can store them until the caller
+; disconnects and write them all to one file.
+;
+; The default setting for logindividualevents is no.
+;
+
+logindividualevents = no
+
+;
+; The timeout for receiving the first DTMF digit is adjustable from 1000 msec.
+; to 10000 msec. The default is 2000 msec. Note: if you wish to test the
+; receiver by entering digits manually, set this to a reasonable time out
+; like 10000 milliseconds.
+
+fdtimeout = 2000
+
+;
+; The timeout for receiving subsequent DTMF digits is adjustable from
+; 110 msec. to 4000 msec. The default is 200 msec. Note: if you wish to test
+; the receiver by entering digits manually, set this to a reasonable time out
+; like 4000 milliseconds.
+;
+
+sdtimeout = 200
+
+;
+; The loudness of the ACK and Kissoff tones is adjustable from 100 to 8192.
+; The default is 8192. This shouldn't need to be messed with, but is included
+; just in case there are problems with signal levels.
+;
+
+loudness = 8192
+
+;
+; The db-family setting allows the user to capture statistics on the number of
+; calls, and the errors the alarm receiver sees. The default is for no
+; db-family name to be defined and the database logging to be turned off.
+;
+
+;db-family = yourfamily:
+
+;
+; End of alarmreceiver.conf
+;
diff --git a/trunk/configs/alsa.conf.sample b/trunk/configs/alsa.conf.sample
new file mode 100644
index 000000000..f55030618
--- /dev/null
+++ b/trunk/configs/alsa.conf.sample
@@ -0,0 +1,62 @@
+;
+; Open Sound System Console Driver Configuration File
+;
+[general]
+;
+; Automatically answer incoming calls on the console? Choose yes if
+; for example you want to use this as an intercom.
+;
+autoanswer=yes
+;
+; Default context (is overridden with @context syntax)
+;
+context=local
+;
+; Default extension to call
+;
+extension=s
+;
+; Default language
+;
+;language=en
+;
+; Default Music on Hold class to use when this channel is placed on hold in
+; the case that the music class is not set on the channel with
+; Set(CHANNEL(musicclass)=whatever) in the dialplan and the peer channel
+; putting this one on hold did not suggest a class to use.
+;
+;mohinterpret=default
+;
+; Silence suppression can be enabled when sound is over a certain threshold.
+; The value for the threshold should probably be between 500 and 2000 or so,
+; but your mileage may vary. Use the echo test to evaluate the best setting.
+;silencesuppression = yes
+;silencethreshold = 1000
+;
+; To set which ALSA device to use, change this parameter
+;input_device=hw:0,0
+;output_device=hw:0,0
+
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an
+ ; ALSA channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The ALSA channel can't accept jitter,
+ ; thus an enabled jitterbuffer on the receive ALSA side will always
+ ; be used if the sending side can create jitter.
+
+; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usually sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP
+ ; channel. Two implementations are currently available - "fixed"
+ ; (with size always equals to jbmax-size) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
+
diff --git a/trunk/configs/amd.conf.sample b/trunk/configs/amd.conf.sample
new file mode 100644
index 000000000..ce4808a0c
--- /dev/null
+++ b/trunk/configs/amd.conf.sample
@@ -0,0 +1,18 @@
+;
+; Answering Machine Detection Configuration
+;
+
+[general]
+initial_silence = 2500 ; Maximum silence duration before the greeting.
+ ; If exceeded then MACHINE.
+greeting = 1500 ; Maximum length of a greeting. If exceeded then MACHINE.
+after_greeting_silence = 800 ; Silence after detecting a greeting.
+ ; If exceeded then HUMAN
+total_analysis_time = 5000 ; Maximum time allowed for the algorithm to decide
+ ; on a HUMAN or MACHINE
+min_word_length = 100 ; Minimum duration of Voice to considered as a word
+between_words_silence = 50 ; Minimum duration of silence after a word to consider
+ ; the audio what follows as a new word
+maximum_number_of_words = 3 ; Maximum number of words in the greeting.
+ ; If exceeded then MACHINE
+silence_threshold = 256
diff --git a/trunk/configs/asterisk.adsi b/trunk/configs/asterisk.adsi
new file mode 100644
index 000000000..a275502ac
--- /dev/null
+++ b/trunk/configs/asterisk.adsi
@@ -0,0 +1,159 @@
+;
+; Asterisk default ADSI script
+;
+;
+; Begin with the preamble requirements
+;
+DESCRIPTION "Asterisk PBX" ; Name of vendor
+VERSION 0x00 ; Version of stuff
+;SECURITY "_AST" ; Security code
+SECURITY 0X9BDBF7AC ; Security code
+FDN 0x0000000F ; Descriptor number
+
+;
+; Flags
+;
+FLAG "nocallwaiting"
+
+;
+; Predefined strings
+;
+DISPLAY "titles" IS "** Asterisk PBX **"
+DISPLAY "talkingto" IS "Call active." JUSTIFY LEFT
+DISPLAY "callname" IS "$Call1p" JUSTIFY LEFT
+DISPLAY "callnum" IS "$Call1s" JUSTIFY LEFT
+DISPLAY "incoming" IS "Incoming call!" JUSTIFY LEFT
+DISPLAY "ringing" IS "Calling... " JUSTIFY LEFT
+DISPLAY "callended" IS "Call ended." JUSTIFY LEFT
+DISPLAY "missedcall" IS "Missed call." JUSTIFY LEFT
+DISPLAY "busy" IS "Busy." JUSTIFY LEFT
+DISPLAY "reorder" IS "Reorder." JUSTIFY LEFT
+DISPLAY "cwdisabled" IS "Callwait disabled"
+DISPLAY "empty" IS "asdf"
+
+;
+; Begin soft key definitions
+;
+KEY "callfwd" IS "CallFwd" OR "Call Forward"
+ OFFHOOK
+ VOICEMODE
+ WAITDIALTONE
+ SENDDTMF "*60"
+ GOTO "offHook"
+ENDKEY
+
+KEY "vmail_OH" IS "VMail" OR "Voicemail"
+ OFFHOOK
+ VOICEMODE
+ WAITDIALTONE
+ SENDDTMF "8500"
+ENDKEY
+
+KEY "vmail" IS "VMail" OR "Voicemail"
+ SENDDTMF "8500"
+ENDKEY
+
+KEY "backspace" IS "BackSpc" OR "Backspace"
+ BACKSPACE
+ENDKEY
+
+KEY "cwdisable" IS "CWDsble" OR "Disable Call Wait"
+ SENDDTMF "*70"
+ SETFLAG "nocallwaiting"
+ SHOWDISPLAY "cwdisabled" AT 4
+ TIMERCLEAR
+ TIMERSTART 1
+ENDKEY
+
+KEY "cidblock" IS "CIDBlk" OR "Block Callerid"
+ SENDDTMF "*67"
+ SETFLAG "nocallwaiting"
+ENDKEY
+
+;
+; Begin main subroutine
+;
+
+SUB "main" IS
+ IFEVENT NEARANSWER THEN
+ CLEAR
+ SHOWDISPLAY "titles" AT 1 NOUPDATE
+ SHOWDISPLAY "talkingto" AT 2 NOUPDATE
+ SHOWDISPLAY "callname" AT 3
+ SHOWDISPLAY "callnum" AT 4
+ GOTO "stableCall"
+ ENDIF
+ IFEVENT OFFHOOK THEN
+ CLEAR
+ CLEARFLAG "nocallwaiting"
+ CLEARDISPLAY
+ SHOWDISPLAY "titles" AT 1
+ SHOWKEYS "vmail"
+ SHOWKEYS "cidblock"
+ SHOWKEYS "cwdisable" UNLESS "nocallwaiting"
+ GOTO "offHook"
+ ENDIF
+ IFEVENT IDLE THEN
+ CLEAR
+ SHOWDISPLAY "titles" AT 1
+ SHOWKEYS "vmail_OH"
+ ENDIF
+ IFEVENT CALLERID THEN
+ CLEAR
+; SHOWDISPLAY "titles" AT 1 NOUPDATE
+; SHOWDISPLAY "incoming" AT 2 NOUPDATE
+ SHOWDISPLAY "callname" AT 3 NOUPDATE
+ SHOWDISPLAY "callnum" AT 4
+ ENDIF
+ IFEVENT RING THEN
+ CLEAR
+ SHOWDISPLAY "titles" AT 1 NOUPDATE
+ SHOWDISPLAY "incoming" AT 2
+ ENDIF
+ IFEVENT ENDOFRING THEN
+ SHOWDISPLAY "missedcall" AT 2
+ CLEAR
+ SHOWDISPLAY "titles" AT 1
+ SHOWKEYS "vmail_OH"
+ ENDIF
+ IFEVENT TIMER THEN
+ CLEAR
+ SHOWDISPLAY "empty" AT 4
+ ENDIF
+ENDSUB
+
+SUB "offHook" IS
+ IFEVENT FARRING THEN
+ CLEAR
+ SHOWDISPLAY "titles" AT 1 NOUPDATE
+ SHOWDISPLAY "ringing" AT 2 NOUPDATE
+ SHOWDISPLAY "callname" at 3 NOUPDATE
+ SHOWDISPLAY "callnum" at 4
+ ENDIF
+ IFEVENT FARANSWER THEN
+ CLEAR
+ SHOWDISPLAY "talkingto" AT 2
+ GOTO "stableCall"
+ ENDIF
+ IFEVENT BUSY THEN
+ CLEAR
+ SHOWDISPLAY "titles" AT 1 NOUPDATE
+ SHOWDISPLAY "busy" AT 2 NOUPDATE
+ SHOWDISPLAY "callname" at 3 NOUPDATE
+ SHOWDISPLAY "callnum" at 4
+ ENDIF
+ IFEVENT REORDER THEN
+ CLEAR
+ SHOWDISPLAY "titles" AT 1 NOUPDATE
+ SHOWDISPLAY "reorder" AT 2 NOUPDATE
+ SHOWDISPLAY "callname" at 3 NOUPDATE
+ SHOWDISPLAY "callnum" at 4
+ ENDIF
+ENDSUB
+
+SUB "stableCall" IS
+ IFEVENT REORDER THEN
+ SHOWDISPLAY "callended" AT 2
+ ENDIF
+ENDSUB
+
diff --git a/trunk/configs/cdr.conf.sample b/trunk/configs/cdr.conf.sample
new file mode 100644
index 000000000..c2882c1f0
--- /dev/null
+++ b/trunk/configs/cdr.conf.sample
@@ -0,0 +1,148 @@
+;
+; Asterisk Call Detail Record engine configuration
+;
+; CDR is Call Detail Record, which provides logging services via a variety of
+; pluggable backend modules. Detailed call information can be recorded to
+; databases, files, etc. Useful for billing, fraud prevention, compliance with
+; Sarbanes-Oxley aka The Enron Act, QOS evaluations, and more.
+;
+
+[general]
+
+; Define whether or not to use CDR logging. Setting this to "no" will override
+; any loading of backend CDR modules. Default is "yes".
+;enable=yes
+
+; Define whether or not to log unanswered calls. Setting this to "yes" will
+; report every attempt to ring a phone in dialing attempts, when it was not
+; answered. For example, if you try to dial 3 extensions, and this option is "yes",
+; you will get 3 CDR's, one for each phone that was rung. Default is "no". Some
+; find this information horribly useless. Others find it very valuable. Note, in "yes"
+; mode, you will see one CDR, with one of the call targets on one side, and the originating
+; channel on the other, and then one CDR for each channel attempted. This may seem
+; redundant, but cannot be helped.
+;unanswered = no
+
+; Define the CDR batch mode, where instead of posting the CDR at the end of
+; every call, the data will be stored in a buffer to help alleviate load on the
+; asterisk server. Default is "no".
+;
+; WARNING WARNING WARNING
+; Use of batch mode may result in data loss after unsafe asterisk termination
+; ie. software crash, power failure, kill -9, etc.
+; WARNING WARNING WARNING
+;
+;batch=no
+
+; Define the maximum number of CDRs to accumulate in the buffer before posting
+; them to the backend engines. 'batch' must be set to 'yes'. Default is 100.
+;size=100
+
+; Define the maximum time to accumulate CDRs in the buffer before posting them
+; to the backend engines. If this time limit is reached, then it will post the
+; records, regardless of the value defined for 'size'. 'batch' must be set to
+; 'yes'. Note that time is in seconds. Default is 300 (5 minutes).
+;time=300
+
+; The CDR engine uses the internal asterisk scheduler to determine when to post
+; records. Posting can either occur inside the scheduler thread, or a new
+; thread can be spawned for the submission of every batch. For small batches,
+; it might be acceptable to just use the scheduler thread, so set this to "yes".
+; For large batches, say anything over size=10, a new thread is recommended, so
+; set this to "no". Default is "no".
+;scheduleronly=no
+
+; When shutting down asterisk, you can block until the CDRs are submitted. If
+; you don't, then data will likely be lost. You can always check the size of
+; the CDR batch buffer with the CLI "cdr status" command. To enable blocking on
+; submission of CDR data during asterisk shutdown, set this to "yes". Default
+; is "yes".
+;safeshutdown=yes
+
+; Normally, CDR's are not closed out until after all extensions are finished
+; executing. By enabling this option, the CDR will be ended before executing
+; the "h" extension so that CDR values such as "end" and "billsec" may be
+; retrieved inside of of this extension.
+;endbeforehexten=no
+
+;
+;
+; CHOOSING A CDR "BACKEND" (what kind of output to generate)
+;
+; To choose a backend, you have to make sure either the right category is
+; defined in this file, or that the appropriate config file exists, and has the
+; proper definitions in it. If there are any problems, usually, the entry will
+; silently ignored, and you get no output.
+;
+; Also, please note that you can generate CDR records in as many formats as you
+; wish. If you configure 5 different CDR formats, then each event will be logged
+; in 5 different places! In the example config files, all formats are commented
+; out except for the cdr-csv format.
+;
+; Here are all the possible back ends:
+;
+; csv, custom, manager, odbc, pgsql, radius, sqlite, tds
+; (also, mysql is available via the asterisk-addons, due to licensing
+; requirements)
+; (please note, also, that other backends can be created, by creating
+; a new backend module in the source cdr/ directory!)
+;
+; Some of the modules required to provide these backends will not build or install
+; unless some dependency requirements are met. Examples of this are pgsql, odbc,
+; etc. If you are not getting output as you would expect, the first thing to do
+; is to run the command "make menuselect", and check what modules are available,
+; by looking in the "2. Call Detail Recording" option in the main menu. If your
+; backend is marked with XXX, you know that the "configure" command could not find
+; the required libraries for that option.
+;
+; To get CDRs to be logged to the plain-jane /var/log/asterisk/cdr-csv/Master.csv
+; file, define the [csv] category in this file. No database necessary. The example
+; config files are set up to provide this kind of output by default.
+;
+; To get custom csv CDR records, make sure the cdr_custom.conf file
+; is present, and contains the proper [mappings] section. The advantage to
+; using this backend, is that you can define which fields to output, and in
+; what order. By default, the example configs are set up to mimic the cdr-csv
+; output. If you don't make any changes to the mappings, you are basically generating
+; the same thing as cdr-csv, but expending more CPU cycles to do so!
+;
+; To get manager events generated, make sure the cdr_manager.conf file exists,
+; and the [general] section is defined, with the single variable 'enabled = yes'.
+;
+; For odbc, make sure all the proper libs are installed, that "make menuselect"
+; shows that the modules are available, and the cdr_odbc.conf file exists, and
+; has a [global] section with the proper variables defined.
+;
+; For pgsql, make sure all the proper libs are installed, that "make menuselect"
+; shows that the modules are available, and the cdr_pgsql.conf file exists, and
+; has a [global] section with the proper variables defined.
+;
+; For logging to radius databases, make sure all the proper libs are installed, that
+; "make menuselect" shows that the modules are available, and the [radius]
+; category is defined in this file, and in that section, make sure the 'radiuscfg'
+; variable is properly pointing to an existing radiusclient.conf file.
+;
+; For logging to sqlite databases, make sure the 'cdr.db' file exists in the log directory,
+; which is usually /var/log/asterisk. Of course, the proper libraries should be available
+; during the 'configure' operation.
+;
+; For tds logging, make sure the proper libraries are available during the 'configure'
+; phase, and that cdr_tds.conf exists and is properly set up with a [global] category.
+;
+; Also, remember, that if you wish to log CDR info to a database, you will have to define
+; a specific table in that databse to make things work! See the doc directory for more details
+; on how to create this table in each database.
+;
+
+[csv]
+usegmtime=yes ; log date/time in GMT. Default is "no"
+loguniqueid=yes ; log uniqueid. Default is "no
+loguserfield=yes ; log user field. Default is "no
+
+;[radius]
+;usegmtime=yes ; log date/time in GMT
+;loguniqueid=yes ; log uniqueid
+;loguserfield=yes ; log user field
+; Set this to the location of the radiusclient-ng configuration file
+; The default is /etc/radiusclient-ng/radiusclient.conf
+;radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf
diff --git a/trunk/configs/cdr_adaptive_odbc.conf.sample b/trunk/configs/cdr_adaptive_odbc.conf.sample
new file mode 100644
index 000000000..a16626e58
--- /dev/null
+++ b/trunk/configs/cdr_adaptive_odbc.conf.sample
@@ -0,0 +1,40 @@
+;
+; This configuration defines the connections and tables for which CDRs may
+; be populated. Each context specifies a different CDR table to be used.
+;
+; The columns in the tables should match up word-for-word (case-insensitive)
+; to the CDR variables set in the dialplan. The natural advantage to this
+; system is that beyond setting up the configuration file to tell you what
+; tables to look at, there isn't anything more to do beyond creating the
+; columns for the fields that you want, and populating the corresponding
+; CDR variables in the dialplan. For the builtin variables only, you may
+; create aliases for the real column name.
+;
+; Please note that after adding columns to the database, it is necessary to
+; reload this module to get the new column names and types read.
+;
+; Warning: if you specify two contexts with exactly the same connection and
+; table names, you will get duplicate records in that table. So be careful.
+;
+
+;[first]
+;connection=mysql1
+;table=cdr
+
+;[second]
+;connection=mysql1
+;table=extracdr
+
+;[third]
+;connection=sqlserver
+;table=AsteriskCDR
+;alias src => source
+;alias channel => source_channel
+;alias dst => dest
+;alias dstchannel => dest_channel
+;
+; Any filter specified MUST match exactly or the CDR will be discarded
+;filter accountcode => somename
+;filter src => 123
+
+
diff --git a/trunk/configs/cdr_custom.conf.sample b/trunk/configs/cdr_custom.conf.sample
new file mode 100644
index 000000000..8bc2cb34e
--- /dev/null
+++ b/trunk/configs/cdr_custom.conf.sample
@@ -0,0 +1,10 @@
+;
+; Mappings for custom config file
+;
+; to get your csv output in a format tailored to your liking, uncomment the following
+; and look for the output in the cdr-custom/Master.csv file (usually in /var/log/asterisk).
+;
+;
+;[mappings]
+;Master.csv => "${CDR(clid)}","${CDR(src)}","${CDR(dst)}","${CDR(dcontext)}","${CDR(channel)}","${CDR(dstchannel)}","${CDR(lastapp)}","${CDR(lastdata)}","${CDR(start)}","${CDR(answer)}","${CDR(end)}","${CDR(duration)}","${CDR(billsec)}","${CDR(disposition)}","${CDR(amaflags)}","${CDR(accountcode)}","${CDR(uniqueid)}","${CDR(userfield)}"
+
diff --git a/trunk/configs/cdr_manager.conf.sample b/trunk/configs/cdr_manager.conf.sample
new file mode 100644
index 000000000..aa596b718
--- /dev/null
+++ b/trunk/configs/cdr_manager.conf.sample
@@ -0,0 +1,15 @@
+;
+; Asterisk Call Management CDR
+;
+[general]
+enabled = no
+
+; The "mappings" category can be used to define additional "key: value" pairs
+; that will be included in the manager event. (after AccountCode, Source, etc).
+;
+; Each line like "varname => label" will include a "label: ${CDR(varname)}"
+; in the generated event where ${CDR(varname)} its replaced with its value
+;
+;[mappings]
+;rate => Rate
+;carrier => Carrier
diff --git a/trunk/configs/cdr_odbc.conf.sample b/trunk/configs/cdr_odbc.conf.sample
new file mode 100644
index 000000000..6245e37eb
--- /dev/null
+++ b/trunk/configs/cdr_odbc.conf.sample
@@ -0,0 +1,12 @@
+;
+; cdr_odbc.conf
+;
+
+;[global]
+;dsn=MySQL-test
+;username=username
+;password=password
+;loguniqueid=yes
+;dispositionstring=yes
+;table=cdr ;"cdr" is default table name
+;usegmtime=no ; set to "yes" to log in GMT
diff --git a/trunk/configs/cdr_pgsql.conf.sample b/trunk/configs/cdr_pgsql.conf.sample
new file mode 100644
index 000000000..0784c7b08
--- /dev/null
+++ b/trunk/configs/cdr_pgsql.conf.sample
@@ -0,0 +1,9 @@
+; Sample Asterisk config file for CDR logging to PostgresSQL
+
+[global]
+;hostname=localhost
+;port=5432
+;dbname=asterisk
+;password=password
+;user=postgres
+;table=cdr ;SQL table where CDRs will be inserted
diff --git a/trunk/configs/cdr_sqlite3_custom.conf.sample b/trunk/configs/cdr_sqlite3_custom.conf.sample
new file mode 100644
index 000000000..55872b383
--- /dev/null
+++ b/trunk/configs/cdr_sqlite3_custom.conf.sample
@@ -0,0 +1,7 @@
+;
+; Mappings for custom config file
+;
+[master] ; currently, only file "master.db" is supported, with only one table at a time.
+table => cdr
+columns => calldate, clid, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield, test
+values => '${CDR(start)}','${CDR(clid)}','${CDR(dcontext)}','${CDR(channel)}','${CDR(dstchannel)}','${CDR(lastapp)}','${CDR(lastdata)}','${CDR(duration)}','${CDR(billsec)}','${CDR(disposition)}','${CDR(amaflags)}','${CDR(accountcode)}','${CDR(uniqueid)}','${CDR(userfield)}','${CDR(test)}'
diff --git a/trunk/configs/cdr_tds.conf.sample b/trunk/configs/cdr_tds.conf.sample
new file mode 100644
index 000000000..d8c7d075c
--- /dev/null
+++ b/trunk/configs/cdr_tds.conf.sample
@@ -0,0 +1,11 @@
+; Sample Asterisk config file for CDR logging to FreeTDS
+
+;[global]
+;hostname=fs.malico.loc
+;port=1433
+;dbname=MalicoHN
+;user=mangUsr
+;password=
+;charset=BIG5
+;table=cdr
+
diff --git a/trunk/configs/codecs.conf.sample b/trunk/configs/codecs.conf.sample
new file mode 100644
index 000000000..c8caeab60
--- /dev/null
+++ b/trunk/configs/codecs.conf.sample
@@ -0,0 +1,65 @@
+[speex]
+; CBR encoding quality [0..10]
+; used only when vbr = false
+quality => 3
+
+; codec complexity [0..10]
+; tradeoff between cpu/quality
+complexity => 2
+
+; perceptual enhancement [true / false]
+; improves clarity of decoded speech
+enhancement => true
+
+; voice activity detection [true / false]
+; reduces bitrate when no voice detected, used only for CBR
+; (implicit in VBR/ABR)
+vad => true
+
+; variable bit rate [true / false]
+; uses bit rate proportionate to voice complexity
+vbr => true
+
+; available bit rate [bps, 0 = off]
+; encoding quality modulated to match this target bit rate
+; not recommended with dtx or pp_vad - may cause bandwidth spikes
+abr => 0
+
+; VBR encoding quality [0-10]
+; floating-point values allowed
+vbr_quality => 4
+
+; discontinuous transmission [true / false]
+; stops transmitting completely when silence is detected
+; pp_vad is far more effective but more CPU intensive
+dtx => false
+
+; preprocessor configuration
+; these options only affect Speex v1.1.8 or newer
+
+; enable preprocessor [true / false]
+; allows dsp functionality below but incurs CPU overhead
+preprocess => false
+
+; preproc voice activity detection [true / false]
+; more advanced equivalent of DTX, based on voice frequencies
+pp_vad => false
+
+; preproc automatic gain control [true / false]
+pp_agc => false
+pp_agc_level => 8000
+
+; preproc denoiser [true / false]
+pp_denoise => false
+
+; preproc dereverb [true / false]
+pp_dereverb => false
+pp_dereverb_decay => 0.4
+pp_dereverb_level => 0.3
+
+
+[plc]
+; for all codecs which do not support native PLC
+; this determines whether to perform generic PLC
+; there is a minor performance penalty for this
+genericplc => true
diff --git a/trunk/configs/console.conf.sample b/trunk/configs/console.conf.sample
new file mode 100644
index 000000000..820a04dd9
--- /dev/null
+++ b/trunk/configs/console.conf.sample
@@ -0,0 +1,68 @@
+;
+; Configuration for chan_console, a cross-platform console channel driver.
+;
+
+[general]
+
+; Set this option to "yes" to enable automatically answering calls on the
+; console. This is very useful if the console is used as an intercom.
+; The default value is "no".
+;
+;autoanswer = no
+
+; Set the default context to use for outgoing calls. This can be overridden by
+; dialing some extension@context, unless the overridecontext option is enabled.
+; The default is "default".
+;
+;context = default
+
+; Set the default extension to use for outgoing calls. The default is "s".
+;
+;extension = s
+
+; Set the default CallerID for created channels.
+;
+;callerid = MyName Here <(256) 428-6000>
+
+; Set the default language for created channels.
+;
+;language = en
+
+; If you set overridecontext to 'yes', then the whole dial string
+; will be interpreted as an extension, which is extremely useful
+; to dial SIP, IAX and other extensions which use the '@' character.
+; The default is "no".
+;
+;overridecontext = no ; if 'no', the last @ will start the context
+ ; if 'yes' the whole string is an extension.
+
+
+; Default Music on Hold class to use when this channel is placed on hold in
+; the case that the music class is not set on the channel with
+; Set(CHANNEL(musicclass)=whatever) in the dialplan and the peer channel
+; putting this one on hold did not suggest a class to use.
+;
+;mohinterpret=default
+
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an
+ ; Console channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The Console channel can't accept jitter,
+ ; thus an enabled jitterbuffer on the receive Console side will always
+ ; be used if the sending side can create jitter.
+
+; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usually sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a Console
+ ; channel. Two implementations are currently available - "fixed"
+ ; (with size always equals to jbmax-size) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
diff --git a/trunk/configs/dnsmgr.conf.sample b/trunk/configs/dnsmgr.conf.sample
new file mode 100644
index 000000000..e34dbcf0a
--- /dev/null
+++ b/trunk/configs/dnsmgr.conf.sample
@@ -0,0 +1,5 @@
+[general]
+;enable=yes ; enable creation of managed DNS lookups
+ ; default is 'no'
+;refreshinterval=1200 ; refresh managed DNS lookups every <n> seconds
+ ; default is 300 (5 minutes) \ No newline at end of file
diff --git a/trunk/configs/dundi.conf.sample b/trunk/configs/dundi.conf.sample
new file mode 100644
index 000000000..f62210659
--- /dev/null
+++ b/trunk/configs/dundi.conf.sample
@@ -0,0 +1,261 @@
+;
+; DUNDi configuration file
+;
+; For more information about DUNDi, see http://www.dundi.com
+;
+;
+[general]
+;
+; The "general" section contains general parameters relating
+; to the operation of the dundi client and server.
+;
+; The first part should be your complete contact information
+; should someone else in your peer group need to contact you.
+;
+;department=Your Department
+;organization=Your Company, Inc.
+;locality=Your City
+;stateprov=ST
+;country=US
+;email=your@email.com
+;phone=+12565551212
+;
+;
+; Specify bind address and port number. Default is
+; 4520
+;
+;bindaddr=0.0.0.0
+;port=4520
+;
+; See qos.tex or Quality of Service section of asterisk.pdf for a description of the tos parameter.
+;tos=ef
+;
+; Our entity identifier (Should generally be the MAC address of the
+; machine it's running on. Defaults to the first eth address, but you
+; can override it here, as long as you set it to the MAC of *something*
+; you own!)
+;
+;entityid=00:07:E9:3B:76:60
+;
+; Peers shall cache our query responses for the specified time,
+; given in seconds. Default is 3600.
+;
+;cachetime=3600
+;
+; This defines the max depth in which to search the DUNDi system.
+; Note that the maximum time that we will wait for a response is
+; (2000 + 200 * ttl) ms.
+;
+ttl=32
+;
+; If we don't get ACK to our DPDISCOVER within 2000ms, and autokill is set
+; to yes, then we cancel the whole thing (that's enough time for one
+; retransmission only). This is used to keep things from stalling for a long
+; time for a host that is not available, but would be ill advised for bad
+; connections. In addition to 'yes' or 'no' you can also specify a number
+; of milliseconds. See 'qualify' for individual peers to turn on for just
+; a specific peer.
+;
+autokill=yes
+;
+; pbx_dundi creates a rotating key called "secret", under the family
+; 'secretpath'. The default family is dundi (resulting in
+; the key being held at dundi/secret).
+;
+;secretpath=dundi
+;
+; The 'storehistory' option (also changeable at runtime with
+; 'dundi store history' and 'dundi no store history') will
+; cause the DUNDi engine to keep track of the last several
+; queries and the amount of time each query took to execute
+; for the purpose of tracking slow nodes. This option is
+; off by default due to performance impacts.
+;
+;storehistory=yes
+
+[mappings]
+;
+; The "mappings" section maps DUNDi contexts
+; to contexts on the local asterisk system. Remember
+; that numbers that are made available under the e164
+; DUNDi context are regulated by the DUNDi General Peering
+; Agreement (GPA) if you are a member of the DUNDi E.164
+; Peering System.
+;
+; dundi_context => local_context,weight,tech,dest[,options]]
+;
+; 'dundi_context' is the name of the context being requested
+; within the DUNDi request
+;
+; 'local_context' is the name of the context on the local system
+; in which numbers can be looked up for which responses shall be given.
+;
+; 'weight' is the weight to use for the responses provided from this
+; mapping. The number must be >= 0 and < 60000. Since it is totally
+; valid to receive multiple responses to a query, responses received
+; with a lower weight are tried first. Note that the weight has a
+; special meaning in the e164 context - see the GPA for more details.
+;
+; 'tech' is the technology to use (IAX, SIP, H323)
+;
+; 'dest' is the destination to supply for reaching that number. The
+; following variables can be used in the destination string and will
+; be automatically substituted:
+; ${NUMBER}: The number being requested
+; ${IPADDR}: The IP address to connect to
+; ${SECRET}: The current rotating secret key to be used
+;
+; Further options may include:
+;
+; nounsolicited: No unsolicited calls of any type permitted via this
+; route
+; nocomunsolicit: No commercial unsolicited calls permitted via
+; this route
+; residential: This number is known to be a residence
+; commercial: This number is known to be a business
+; mobile: This number is known to be a mobile phone
+; nocomunsolicit: No commercial unsolicited calls permitted via
+; this route
+; nopartial: Do not search for partial matches
+;
+; There *must* exist an entry in mappings for DUNDi to respond
+; to any request, although it may be empty.
+;
+;e164 => dundi-e164-canonical,0,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
+;e164 => dundi-e164-customers,100,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
+;e164 => dundi-e164-via-pstn,400,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
+
+;digexten => default,0,IAX2,guest@lappy/${NUMBER}
+;asdf =>
+
+;
+; Weights for mappings can be set a few different ways:
+;
+; 1) It can be set as a static number.
+;testmap1 => context1,222,IAX2,guest@peer1/${NUMBER}
+;
+; 2) It can be an Asterisk global variable.
+;testmap2 => context2,${DUNDITESTVAR},IAX2,guest@peer2${NUMBER}
+;
+; 3) It can be retrieved using a dialplan function. This can be extremely
+; useful if you want to let an external script decide what the weight
+; in a response shouuld be.
+;testmap3 => context3,${SHELL(echo 123)},IAX2,guest@peer3/${NUMBER}
+;
+; Note than when using a global variable or dialplan function to set the
+; weight for a mapping, that response caching should be disabled if you
+; plan for these values to change frequently at all. If the results are
+; cached, then any change in value will not take effect until the cache
+; has expired.
+;
+
+;
+; The remaining sections represent the peers
+; that we fundamentally trust. The section name
+; represents the name and optionally at a specific
+; DUNDi context if you want the trust to be established
+; for only a specific DUNDi context.
+;
+; inkey - What key they will be authenticating to us with
+;
+; outkey - What key we use to authenticate to them
+;
+; host - What their host is
+;
+; order - What search order to use. May be 'primary', 'secondary',
+; 'tertiary' or 'quartiary'. In large systems, it is beneficial
+; to only query one up-stream host in order to maximize caching
+; value. Adding one with primary and one with secondary gives you
+; redundancy without sacrificing performance.
+;
+; include - Includes this peer when searching a particular context
+; for lookup (set "all" to perform all lookups with that
+; host. This is also the context in which peers are permitted
+; to precache.
+;
+; noinclude - Disincludes this peer when searching a particular context
+; for lookup (set "all" to perform no lookups with that
+; host.
+;
+; permit - Permits this peer to search a given DUNDi context on
+; the local system. Set "all" to permit this host to
+; lookup all contexts. This is also a context for which
+; we will create/forward PRECACHE commands.
+;
+; deny - Denies this peer to search a given DUNDi context on
+; the local system. Set "all" to deny this host to
+; lookup all contexts.
+;
+; model - inbound, outbound, or symmetric for whether we receive
+; requests only, transmit requests only, or do both.
+;
+; precache - Utilize/Permit precaching with this peer (to pre
+; cache means to provide an answer when no request
+; was made and is used so that machines with few
+; routes can push those routes up a to a higher level).
+; outgoing means we send precache routes to this peer,
+; incoming means we permit this peer to send us
+; precache routes. symmetric means we do both.
+;
+; Note: You cannot mix symmetric/outbound model with symmetric/inbound
+; precache, nor can you mix symmetric/inbound model with symmetric/outbound
+; precache.
+;
+;
+; The '*' peer is special and matches an unspecified entity
+;
+
+;
+; Sample Primary e164 DUNDi peer
+;
+;[00:50:8B:F3:75:BB]
+;model = symmetric
+;host = 64.215.96.114
+;inkey = digium
+;outkey = misery
+;include = e164
+;permit = e164
+;qualify = yes
+
+;
+; Sample Secondary e164 DUNDi peer
+;
+;[00:A0:C9:96:92:84]
+;model = symmetric
+;host = misery.digium.com
+;inkey = misery
+;outkey = ourkey
+;include = e164
+;permit = e164
+;qualify = yes
+;order = secondary
+
+;
+; Sample "push mode" downstream host
+;
+;[00:0C:76:96:75:28]
+;model = inbound
+;host = dynamic
+;precache = inbound
+;inkey = littleguy
+;outkey = ourkey
+;include = e164 ; In this case used only for precaching
+;permit = e164
+;qualify = yes
+
+;
+; Sample "push mode" upstream host
+;
+;[00:07:E9:3B:76:60]
+;model = outbound
+;precache = outbound
+;host = 216.207.245.34
+;register = yes
+;inkey = dhcp34
+;permit = all ; In this case used only for precaching
+;include = all
+;qualify = yes
+;outkey=foo
+
+;[*]
+;
diff --git a/trunk/configs/enum.conf.sample b/trunk/configs/enum.conf.sample
new file mode 100644
index 000000000..39c723175
--- /dev/null
+++ b/trunk/configs/enum.conf.sample
@@ -0,0 +1,22 @@
+;
+; ENUM Configuration for resolving phone numbers over DNS
+;
+; Sample config for Asterisk
+; This file is reloaded at "module reload enum" in the CLI
+;
+[general]
+;
+; The search list for domains may be customized. Domains are searched
+; in the order they are listed here.
+;
+search => e164.arpa
+;
+; If you'd like to use the E.164.org public ENUM registry in addition
+; to the official e164.arpa one, uncomment the following line
+;
+;search => e164.org
+;
+; As there are more H323 drivers available you have to select to which
+; drive a H323 URI will map. Default is "H323".
+;
+h323driver => H323
diff --git a/trunk/configs/extconfig.conf.sample b/trunk/configs/extconfig.conf.sample
new file mode 100644
index 000000000..4c3899fcd
--- /dev/null
+++ b/trunk/configs/extconfig.conf.sample
@@ -0,0 +1,63 @@
+;
+; Static and realtime external configuration
+; engine configuration
+;
+; Please read doc/extconfig.txt for basic table
+; formatting information.
+;
+[settings]
+;
+; Static configuration files:
+;
+; file.conf => driver,database[,table]
+;
+; maps a particular configuration file to the given
+; database driver, database and table (or uses the
+; name of the file as the table if not specified)
+;
+;uncomment to load queues.conf via the odbc engine.
+;
+;queues.conf => odbc,asterisk,ast_config
+;extensions.conf => sqlite,asterisk,ast_config
+;
+; The following files CANNOT be loaded from Realtime storage:
+; asterisk.conf
+; extconfig.conf (this file)
+; logger.conf
+;
+; Additionally, the following files cannot be loaded from
+; Realtime storage unless the storage driver is loaded
+; early using 'preload' statements in modules.conf:
+; manager.conf
+; cdr.conf
+; rtp.conf
+;
+;
+; Realtime configuration engine
+;
+; maps a particular family of realtime
+; configuration to a given database driver,
+; database and table (or uses the name of
+; the family if the table is not specified
+;
+;example => odbc,asterisk,alttable
+;example2 => ldap,"dc=oxymium,dc=net",example2
+;
+; "odbc" is shown in the examples below, but is not the only valid realtime
+; engine. There is:
+; odbc ... res_config_odbc
+; sqlite ... res_config_sqlite
+; pgsql ... res_config_pgsql
+;
+;iaxusers => odbc,asterisk
+;iaxpeers => odbc,asterisk
+;sipusers => odbc,asterisk
+;sippeers => odbc,asterisk
+;sipregs => odbc,asterisk
+;voicemail => odbc,asterisk
+;extensions => odbc,asterisk
+;queues => odbc,asterisk
+;queue_members => odbc,asterisk
+;musiconhold => mysql,asterisk
+;queue_log => mysql,aasterisk
+
diff --git a/trunk/configs/extensions.ael.sample b/trunk/configs/extensions.ael.sample
new file mode 100644
index 000000000..89436dc21
--- /dev/null
+++ b/trunk/configs/extensions.ael.sample
@@ -0,0 +1,448 @@
+//
+// Example AEL config file
+//
+//
+// Static extension configuration file, used by
+// the pbx_ael module. This is where you configure all your
+// inbound and outbound calls in Asterisk.
+//
+// This configuration file is reloaded
+// - With the "ael reload" command in the CLI
+// - With the "reload" command (that reloads everything) in the CLI
+
+// The "Globals" category contains global variables that can be referenced
+// in the dialplan by using the GLOBAL dialplan function:
+// ${GLOBAL(VARIABLE)}
+// ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid
+// Unix/Linux environmental variables are reached with the ENV dialplan
+// function: ${ENV(VARIABLE)}
+//
+
+globals {
+ CONSOLE="Console/dsp"; // Console interface for demo
+ //CONSOLE=Zap/1
+ //CONSOLE=Phone/phone0
+ IAXINFO=guest; // IAXtel username/password
+ //IAXINFO="myuser:mypass";
+ TRUNK="Zap/g2"; // Trunk interface
+ //
+ // Note the 'g2' in the TRUNK variable above. It specifies which group (defined
+ // in zapata.conf) to dial, i.e. group 2, and how to choose a channel to use in
+ // the specified group. The four possible options are:
+ //
+ // g: select the lowest-numbered non-busy Zap channel
+ // (aka. ascending sequential hunt group).
+ // G: select the highest-numbered non-busy Zap channel
+ // (aka. descending sequential hunt group).
+ // r: use a round-robin search, starting at the next highest channel than last
+ // time (aka. ascending rotary hunt group).
+ // R: use a round-robin search, starting at the next lowest channel than last
+ // time (aka. descending rotary hunt group).
+ //
+ TRUNKMSD=1; // MSD digits to strip (usually 1 or 0)
+ //TRUNK=IAX2/user:pass@provider
+};
+
+//
+// Any category other than "General" and "Globals" represent
+// extension contexts, which are collections of extensions.
+//
+// Extension names may be numbers, letters, or combinations
+// thereof. If an extension name is prefixed by a '_'
+// character, it is interpreted as a pattern rather than a
+// literal. In patterns, some characters have special meanings:
+//
+// X - any digit from 0-9
+// Z - any digit from 1-9
+// N - any digit from 2-9
+// [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
+// . - wildcard, matches anything remaining (e.g. _9011. matches
+// anything starting with 9011 excluding 9011 itself)
+// ! - wildcard, causes the matching process to complete as soon as
+// it can unambiguously determine that no other matches are possible
+//
+// For example the extension _NXXXXXX would match normal 7 digit dialings,
+// while _1NXXNXXXXXX would represent an area code plus phone number
+// preceded by a one.
+//
+// Each step of an extension is ordered by priority, which must
+// always start with 1 to be considered a valid extension. The priority
+// "next" or "n" means the previous priority plus one, regardless of whether
+// the previous priority was associated with the current extension or not.
+// The priority "same" or "s" means the same as the previously specified
+// priority, again regardless of whether the previous entry was for the
+// same extension. Priorities may be immediately followed by a plus sign
+// and another integer to add that amount (most useful with 's' or 'n').
+// Priorities may then also have an alias, or label, in
+// parenthesis after their name which can be used in goto situations
+//
+// Contexts contain several lines, one for each step of each
+// extension, which can take one of two forms as listed below,
+// with the first form being preferred. One may include another
+// context in the current one as well, optionally with a
+// date and time. Included contexts are included in the order
+// they are listed.
+//
+//context name {
+// exten-name => {
+// application(arg1,arg2,...);
+//
+// Timing list for includes is
+//
+// <time range>|<days of week>|<days of month>|<months>
+//
+// includes {
+// daytime|9:00-17:00|mon-fri|*|*;
+// };
+//
+// ignorepat can be used to instruct drivers to not cancel dialtone upon
+// receipt of a particular pattern. The most commonly used example is
+// of course '9' like this:
+//
+// ignorepat => 9;
+//
+// so that dialtone remains even after dialing a 9.
+//};
+
+
+//
+// Sample entries for extensions.conf
+//
+//
+context ael-dundi-e164-canonical {
+ //
+ // List canonical entries here
+ //
+ // 12564286000 => &ael-std-exten(6000,IAX2/foo);
+ // _125642860XX => Dial(IAX2/otherbox/${EXTEN:7});
+};
+
+context ael-dundi-e164-customers {
+ //
+ // If you are an ITSP or Reseller, list your customers here.
+ //
+ //_12564286000 => Dial(SIP/customer1);
+ //_12564286001 => Dial(IAX2/customer2);
+};
+
+context ael-dundi-e164-via-pstn {
+ //
+ // If you are freely delivering calls to the PSTN, list them here
+ //
+ //_1256428XXXX => Dial(Zap/g2/${EXTEN:7}); // Expose all of 256-428
+ //_1256325XXXX => Dial(Zap/g2/${EXTEN:7}); // Ditto for 256-325
+};
+
+context ael-dundi-e164-local {
+ //
+ // Context to put your dundi IAX2 or SIP user in for
+ // full access
+ //
+ includes {
+ ael-dundi-e164-canonical;
+ ael-dundi-e164-customers;
+ ael-dundi-e164-via-pstn;
+ };
+};
+
+context ael-dundi-e164-switch {
+ //
+ // Just a wrapper for the switch
+ //
+
+ switches {
+ DUNDi/e164;
+ };
+};
+
+context ael-dundi-e164-lookup {
+ //
+ // Locally to lookup, try looking for a local E.164 solution
+ // then try DUNDi if we don't have one.
+ //
+ includes {
+ ael-dundi-e164-local;
+ ael-dundi-e164-switch;
+ };
+ //
+};
+
+//
+// DUNDi can also be implemented as a Macro instead of using
+// the Local channel driver.
+//
+macro ael-dundi-e164(exten) {
+//
+// ARG1 is the extension to Dial
+//
+ goto ${exten}|1;
+ return;
+};
+
+//
+// Here are the entries you need to participate in the IAXTEL
+// call routing system. Most IAXTEL numbers begin with 1-700, but
+// there are exceptions. For more information, and to sign
+// up, please go to www.gnophone.com or www.iaxtel.com
+//
+context ael-iaxtel700 {
+ _91700XXXXXXX => Dial(IAX2/${IAXINFO}@iaxtel.com/${EXTEN:1}@iaxtel);
+};
+
+//
+// The SWITCH statement permits a server to share the dialplan with
+// another server. Use with care: Reciprocal switch statements are not
+// allowed (e.g. both A -> B and B -> A), and the switched server needs
+// to be on-line or else dialing can be severly delayed.
+//
+context ael-iaxprovider {
+ switches {
+ // IAX2/user:[key]@myserver/mycontext;
+ };
+};
+
+context ael-trunkint {
+ //
+ // International long distance through trunk
+ //
+ includes {
+ ael-dundi-e164-lookup;
+ };
+ _9011. => {
+ &ael-dundi-e164(${EXTEN:4});
+ Dial(${TRUNK}/${EXTEN:${TRUNKMSD}});
+ };
+};
+
+context ael-trunkld {
+ //
+ // Long distance context accessed through trunk
+ //
+ includes {
+ ael-dundi-e164-lookup;
+ };
+ _91NXXNXXXXXX => {
+ &ael-dundi-e164(${EXTEN:1});
+ Dial(${TRUNK}/${EXTEN:${TRUNKMSD}});
+ };
+};
+
+context ael-trunklocal {
+ //
+ // Local seven-digit dialing accessed through trunk interface
+ //
+ _9NXXXXXX => {
+ Dial(${TRUNK}/${EXTEN:${TRUNKMSD}});
+ };
+};
+
+context ael-trunktollfree {
+ //
+ // Long distance context accessed through trunk interface
+ //
+
+ _91800NXXXXXX => Dial(${TRUNK}/${EXTEN:${TRUNKMSD}});
+ _91888NXXXXXX => Dial(${TRUNK}/${EXTEN:${TRUNKMSD}});
+ _91877NXXXXXX => Dial(${TRUNK}/${EXTEN:${TRUNKMSD}});
+ _91866NXXXXXX => Dial(${TRUNK}/${EXTEN:${TRUNKMSD}});
+};
+
+context ael-international {
+ //
+ // Master context for international long distance
+ //
+ ignorepat => 9;
+ includes {
+ ael-longdistance;
+ ael-trunkint;
+ };
+};
+
+context ael-longdistance {
+ //
+ // Master context for long distance
+ //
+ ignorepat => 9;
+ includes {
+ ael-local;
+ ael-trunkld;
+ };
+};
+
+context ael-local {
+ //
+ // Master context for local, toll-free, and iaxtel calls only
+ //
+ ignorepat => 9;
+ includes {
+ ael-default;
+ ael-trunklocal;
+ ael-iaxtel700;
+ ael-trunktollfree;
+ ael-iaxprovider;
+ };
+};
+
+//
+// You can use an alternative switch type as well, to resolve
+// extensions that are not known here, for example with remote
+// IAX switching you transparently get access to the remote
+// Asterisk PBX
+//
+// switch => IAX2/user:password@bigserver/local
+//
+// An "lswitch" is like a switch but is literal, in that
+// variable substitution is not performed at load time
+// but is passed to the switch directly (presumably to
+// be substituted in the switch routine itself)
+//
+// lswitch => Loopback/12${EXTEN}@othercontext
+//
+// An "eswitch" is like a switch but the evaluation of
+// variable substitution is performed at runtime before
+// being passed to the switch routine.
+//
+// eswitch => IAX2/context@${CURSERVER}
+
+
+macro ael-std-exten-ael( ext , dev ) {
+ Dial(${dev}/${ext},20);
+ switch(${DIALSTATUS}) {
+ case BUSY:
+ Voicemail(${ext},b);
+ break;
+ default:
+ Voicemail(${ext},u);
+ };
+ catch a {
+ VoiceMailMain(${ext});
+ return;
+ };
+ return;
+};
+
+context ael-demo {
+ s => {
+ Wait(1);
+ Answer();
+ Set(TIMEOUT(digit)=5);
+ Set(TIMEOUT(response)=10);
+restart:
+ Background(demo-congrats);
+instructions:
+ for (x=0; ${x} < 3; x=${x} + 1) {
+ Background(demo-instruct);
+ WaitExten();
+ };
+ };
+ 2 => {
+ Background(demo-moreinfo);
+ goto s|instructions;
+ };
+ 3 => {
+ Set(LANGUAGE()=fr);
+ goto s|restart;
+ };
+ 1000 => {
+ goto ael-default|s|1;
+ };
+ 500 => {
+ Playback(demo-abouttotry);
+ Dial(IAX2/guest@misery.digium.com/s@default);
+ Playback(demo-nogo);
+ goto s|instructions;
+ };
+ 600 => {
+ Playback(demo-echotest);
+ Echo();
+ Playback(demo-echodone);
+ goto s|instructions;
+ };
+ _1234 => &ael-std-exten-ael(${EXTEN}, "IAX2");
+ 8500 => {
+ VoicemailMain();
+ goto s|instructions;
+ };
+ # => {
+ Playback(demo-thanks);
+ Hangup();
+ };
+ t => goto #|1;
+ i => Playback(invalid);
+};
+
+
+//
+// If you wish to use AEL for your default context, remove it
+// from extensions.conf (or change its name or comment it out)
+// and then uncomment the one here.
+//
+
+context ael-default {
+
+// By default we include the demo. In a production system, you
+// probably don't want to have the demo there.
+
+ includes {
+ ael-demo;
+ };
+//
+// Extensions like the two below can be used for FWD, Nikotel, sipgate etc.
+// Note that you must have a [sipprovider] section in sip.conf whereas
+// the otherprovider.net example does not require such a peer definition
+//
+//_41X. => Dial(SIP/${EXTEN:2}@sipprovider,,r);
+//_42X. => Dial(SIP/user:passwd@${EXTEN:2}@otherprovider.net,30,rT);
+
+// Real extensions would go here. Generally you want real extensions to be
+// 4 or 5 digits long (although there is no such requirement) and start with a
+// single digit that is fairly large (like 6 or 7) so that you have plenty of
+// room to overlap extensions and menu options without conflict. You can alias
+// them with names, too, and use global variables
+
+// 6245 => {
+// hint(SIP/Grandstream1&SIP/Xlite1,Joe Schmoe); // Channel hints for presence
+// Dial(SIP/Grandstream1,20,rt); // permit transfer
+// Dial(${HINT}/5245},20,rtT); // Use hint as listed
+// switch(${DIALSTATUS}) {
+// case BUSY:
+// Voicemail(6245,b);
+// return;
+// default:
+// Voicemail(6245,u);
+// return;
+// };
+// };
+
+// 6361 => Dial(IAX2/JaneDoe,,rm); // ring without time limit
+// 6389 => Dial(MGCP/aaln/1@192.168.0.14);
+// 6394 => Dial(Local/6275/n); // this will dial ${MARK}
+
+// 6275 => &ael-stdexten(6275,${MARK}); // assuming ${MARK} is something like Zap/2
+// mark => goto 6275|1; // alias mark to 6275
+// 6536 => &ael-stdexten(6236,${WIL}); // Ditto for wil
+// wil => goto 6236|1;
+//
+// Some other handy things are an extension for checking voicemail via
+// voicemailmain
+//
+// 8500 => {
+// VoicemailMain();
+// Hangup();
+// };
+//
+// Or a conference room (you'll need to edit meetme.conf to enable this room)
+//
+// 8600 => Meetme(1234);
+//
+// Or playing an announcement to the called party, as soon it answers
+//
+// 8700 => Dial(${MARK},30,A(/path/to/my/announcemsg))
+//
+// For more information on applications, just type "show applications" at your
+// friendly Asterisk CLI prompt.
+//
+// 'show application <command>' will show details of how you
+// use that particular application in this file, the dial plan.
+//
+}
diff --git a/trunk/configs/extensions.conf.sample b/trunk/configs/extensions.conf.sample
new file mode 100644
index 000000000..c6f9ad046
--- /dev/null
+++ b/trunk/configs/extensions.conf.sample
@@ -0,0 +1,614 @@
+; extensions.conf - the Asterisk dial plan
+;
+; Static extension configuration file, used by
+; the pbx_config module. This is where you configure all your
+; inbound and outbound calls in Asterisk.
+;
+; This configuration file is reloaded
+; - With the "dialplan reload" command in the CLI
+; - With the "reload" command (that reloads everything) in the CLI
+
+;
+; The "General" category is for certain variables.
+;
+[general]
+;
+; If static is set to no, or omitted, then the pbx_config will rewrite
+; this file when extensions are modified. Remember that all comments
+; made in the file will be lost when that happens.
+;
+; XXX Not yet implemented XXX
+;
+static=yes
+;
+; if static=yes and writeprotect=no, you can save dialplan by
+; CLI command "dialplan save" too
+;
+writeprotect=no
+;
+; If autofallthrough is set, then if an extension runs out of
+; things to do, it will terminate the call with BUSY, CONGESTION
+; or HANGUP depending on Asterisk's best guess. This is the default.
+;
+; If autofallthrough is not set, then if an extension runs out of
+; things to do, Asterisk will wait for a new extension to be dialed
+; (this is the original behavior of Asterisk 1.0 and earlier).
+;
+;autofallthrough=no
+;
+;
+;
+; If extenpatternmatchnew is set (true, yes, etc), then a new algorithm that uses
+; a Trie to find the best matching pattern is used. In dialplans
+; with more than about 20-40 extensions in a single context, this
+; new algorithm can provide a noticeable speedup.
+; With 50 extensions, the speedup is 1.32x
+; with 88 extensions, the speedup is 2.23x
+; with 138 extensions, the speedup is 3.44x
+; with 238 extensions, the speedup is 5.8x
+; with 438 extensions, the speedup is 10.4x
+; With 1000 extensions, the speedup is ~25x
+; with 10,000 extensions, the speedup is 374x
+; Basically, the new algorithm provides a flat response
+; time, no matter the number of extensions.
+;
+; By default, the old pattern matcher is used.
+;
+; ****This is a new feature! *********************
+; The new pattern matcher is for the brave, the bold, and
+; the desperate. If you have large dialplans (more than about 50 extensions
+; in a context), and/or high call volume, you might consider setting
+; this value to "yes" !!
+; Please, if you try this out, and are forced to return to the
+; old pattern matcher, please report your reasons in a bug report
+; on bugs.digium.com. We have made good progress in providing something
+; compatible with the old matcher; help us finish the job!
+;
+; This value can be switched at runtime using the cli command "dialplan set extenpatternmatchnew true"
+; or "dialplan set extenpatternmatchnew false", so you can experiment to your hearts content.
+;
+;extenpatternmatchnew=no
+;
+; If clearglobalvars is set, global variables will be cleared
+; and reparsed on an extensions reload, or Asterisk reload.
+;
+; If clearglobalvars is not set, then global variables will persist
+; through reloads, and even if deleted from the extensions.conf or
+; one of its included files, will remain set to the previous value.
+;
+; NOTE: A complication sets in, if you put your global variables into
+; the AEL file, instead of the extensions.conf file. With clearglobalvars
+; set, a "reload" will often leave the globals vars cleared, because it
+; is not unusual to have extensions.conf (which will have no globals)
+; load after the extensions.ael file (where the global vars are stored).
+; So, with "reload" in this particular situation, first the AEL file will
+; clear and then set all the global vars, then, later, when the extensions.conf
+; file is loaded, the global vars are all cleared, and then not set, because
+; they are not stored in the extensions.conf file.
+;
+clearglobalvars=no
+;
+; If priorityjumping is set to 'yes', then applications that support
+; 'jumping' to a different priority based on the result of their operations
+; will do so (this is backwards compatible behavior with pre-1.2 releases
+; of Asterisk). Individual applications can also be requested to do this
+; by passing a 'j' option in their arguments.
+;
+;priorityjumping=yes
+;
+; User context is where entries from users.conf are registered. The
+; default value is 'default'
+;
+;userscontext=default
+;
+; You can include other config files, use the #include command
+; (without the ';'). Note that this is different from the "include" command
+; that includes contexts within other contexts. The #include command works
+; in all asterisk configuration files.
+;#include "filename.conf"
+
+; The "Globals" category contains global variables that can be referenced
+; in the dialplan with the GLOBAL dialplan function:
+; ${GLOBAL(VARIABLE)}
+; ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid
+; Unix/Linux environmental variables can be reached with the ENV dialplan
+; function: ${ENV(VARIABLE)}
+;
+[globals]
+CONSOLE=Console/dsp ; Console interface for demo
+;CONSOLE=Zap/1
+;CONSOLE=Phone/phone0
+IAXINFO=guest ; IAXtel username/password
+;IAXINFO=myuser:mypass
+TRUNK=Zap/g2 ; Trunk interface
+;
+; Note the 'g2' in the TRUNK variable above. It specifies which group (defined
+; in zapata.conf) to dial, i.e. group 2, and how to choose a channel to use in
+; the specified group. The four possible options are:
+;
+; g: select the lowest-numbered non-busy Zap channel
+; (aka. ascending sequential hunt group).
+; G: select the highest-numbered non-busy Zap channel
+; (aka. descending sequential hunt group).
+; r: use a round-robin search, starting at the next highest channel than last
+; time (aka. ascending rotary hunt group).
+; R: use a round-robin search, starting at the next lowest channel than last
+; time (aka. descending rotary hunt group).
+;
+TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)
+;TRUNK=IAX2/user:pass@provider
+
+;
+; Any category other than "General" and "Globals" represent
+; extension contexts, which are collections of extensions.
+;
+; Extension names may be numbers, letters, or combinations
+; thereof. If an extension name is prefixed by a '_'
+; character, it is interpreted as a pattern rather than a
+; literal. In patterns, some characters have special meanings:
+;
+; X - any digit from 0-9
+; Z - any digit from 1-9
+; N - any digit from 2-9
+; [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
+; . - wildcard, matches anything remaining (e.g. _9011. matches
+; anything starting with 9011 excluding 9011 itself)
+; ! - wildcard, causes the matching process to complete as soon as
+; it can unambiguously determine that no other matches are possible
+;
+; For example the extension _NXXXXXX would match normal 7 digit dialings,
+; while _1NXXNXXXXXX would represent an area code plus phone number
+; preceded by a one.
+;
+; Each step of an extension is ordered by priority, which must
+; always start with 1 to be considered a valid extension. The priority
+; "next" or "n" means the previous priority plus one, regardless of whether
+; the previous priority was associated with the current extension or not.
+; The priority "same" or "s" means the same as the previously specified
+; priority, again regardless of whether the previous entry was for the
+; same extension. Priorities may be immediately followed by a plus sign
+; and another integer to add that amount (most useful with 's' or 'n').
+; Priorities may then also have an alias, or label, in
+; parenthesis after their name which can be used in goto situations
+;
+; Contexts contain several lines, one for each step of each
+; extension, which can take one of two forms as listed below,
+; with the first form being preferred. One may include another
+; context in the current one as well, optionally with a
+; date and time. Included contexts are included in the order
+; they are listed.
+;
+;[context]
+;exten => someexten,{priority|label{+|-}offset}[(alias)],application(arg1,arg2,...)
+;exten => someexten,{priority|label{+|-}offset}[(alias)],application,arg1|arg2...
+;
+; Timing list for includes is
+;
+; <time range>|<days of week>|<days of month>|<months>
+;
+; Note that ranges may be specified to wrap around the ends. Also, minutes are
+; fine-grained only down to the closest even minute.
+;
+;include => daytime|9:00-17:00|mon-fri|*|*
+;include => weekend|*|sat-sun|*|*
+;include => weeknights|17:02-8:58|mon-fri|*|*
+;
+; ignorepat can be used to instruct drivers to not cancel dialtone upon
+; receipt of a particular pattern. The most commonly used example is
+; of course '9' like this:
+;
+;ignorepat => 9
+;
+; so that dialtone remains even after dialing a 9.
+;
+
+;
+; Sample entries for extensions.conf
+;
+;
+[dundi-e164-canonical]
+;
+; List canonical entries here
+;
+;exten => 12564286000,1,Macro(stdexten,6000,IAX2/foo)
+;exten => _125642860XX,1,Dial(IAX2/otherbox/${EXTEN:7})
+
+[dundi-e164-customers]
+;
+; If you are an ITSP or Reseller, list your customers here.
+;
+;exten => _12564286000,1,Dial(SIP/customer1)
+;exten => _12564286001,1,Dial(IAX2/customer2)
+
+[dundi-e164-via-pstn]
+;
+; If you are freely delivering calls to the PSTN, list them here
+;
+;exten => _1256428XXXX,1,Dial(Zap/g2/${EXTEN:7}) ; Expose all of 256-428
+;exten => _1256325XXXX,1,Dial(Zap/g2/${EXTEN:7}) ; Ditto for 256-325
+
+[dundi-e164-local]
+;
+; Context to put your dundi IAX2 or SIP user in for
+; full access
+;
+include => dundi-e164-canonical
+include => dundi-e164-customers
+include => dundi-e164-via-pstn
+
+[dundi-e164-switch]
+;
+; Just a wrapper for the switch
+;
+switch => DUNDi/e164
+
+[dundi-e164-lookup]
+;
+; Locally to lookup, try looking for a local E.164 solution
+; then try DUNDi if we don't have one.
+;
+include => dundi-e164-local
+include => dundi-e164-switch
+;
+; DUNDi can also be implemented as a Macro instead of using
+; the Local channel driver.
+;
+[macro-dundi-e164]
+;
+; ARG1 is the extension to Dial
+;
+; Extension "s" is not a wildcard extension that matches "anything".
+; In macros, it is the start extension. In most other cases,
+; you have to goto "s" to execute that extension.
+;
+; For wildcard matches, see above - all pattern matches start with
+; an underscore.
+exten => s,1,Goto(${ARG1},1)
+include => dundi-e164-lookup
+
+;
+; Here are the entries you need to participate in the IAXTEL
+; call routing system. Most IAXTEL numbers begin with 1-700, but
+; there are exceptions. For more information, and to sign
+; up, please go to www.gnophone.com or www.iaxtel.com
+;
+[iaxtel700]
+exten => _91700XXXXXXX,1,Dial(IAX2/${GLOBAL(IAXINFO)}@iaxtel.com/${EXTEN:1}@iaxtel)
+
+;
+; The SWITCH statement permits a server to share the dialplan with
+; another server. Use with care: Reciprocal switch statements are not
+; allowed (e.g. both A -> B and B -> A), and the switched server needs
+; to be on-line or else dialing can be severly delayed.
+;
+[iaxprovider]
+;switch => IAX2/user:[key]@myserver/mycontext
+
+[trunkint]
+;
+; International long distance through trunk
+;
+exten => _9011.,1,Macro(dundi-e164,${EXTEN:4})
+exten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
+
+[trunkld]
+;
+; Long distance context accessed through trunk
+;
+exten => _91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1})
+exten => _91NXXNXXXXXX,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
+
+[trunklocal]
+;
+; Local seven-digit dialing accessed through trunk interface
+;
+exten => _9NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
+
+[trunktollfree]
+;
+; Long distance context accessed through trunk interface
+;
+exten => _91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
+exten => _91888NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
+exten => _91877NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
+exten => _91866NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
+
+[international]
+;
+; Master context for international long distance
+;
+ignorepat => 9
+include => longdistance
+include => trunkint
+
+[longdistance]
+;
+; Master context for long distance
+;
+ignorepat => 9
+include => local
+include => trunkld
+
+[local]
+;
+; Master context for local, toll-free, and iaxtel calls only
+;
+ignorepat => 9
+include => default
+include => trunklocal
+include => iaxtel700
+include => trunktollfree
+include => iaxprovider
+
+;Include parkedcalls (or the context you define in features conf)
+;to enable call parking.
+include => parkedcalls
+;
+; You can use an alternative switch type as well, to resolve
+; extensions that are not known here, for example with remote
+; IAX switching you transparently get access to the remote
+; Asterisk PBX
+;
+; switch => IAX2/user:password@bigserver/local
+;
+; An "lswitch" is like a switch but is literal, in that
+; variable substitution is not performed at load time
+; but is passed to the switch directly (presumably to
+; be substituted in the switch routine itself)
+;
+; lswitch => Loopback/12${EXTEN}@othercontext
+;
+; An "eswitch" is like a switch but the evaluation of
+; variable substitution is performed at runtime before
+; being passed to the switch routine.
+;
+; eswitch => IAX2/context@${CURSERVER}
+
+[macro-trunkdial]
+;
+; Standard trunk dial macro (hangs up on a dialstatus that should
+; terminate call)
+; ${ARG1} - What to dial
+;
+exten => s,1,Dial(${ARG1})
+exten => s,n,Goto(s-${DIALSTATUS},1)
+exten => s-NOANSWER,1,Hangup
+exten => s-BUSY,1,Hangup
+exten => _s-.,1,NoOp
+
+[macro-stdexten];
+;
+; Standard extension macro:
+; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well
+; ${ARG2} - Device(s) to ring
+;
+exten => s,1,Dial(${ARG2},20) ; Ring the interface, 20 seconds maximum
+exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
+
+exten => s-NOANSWER,1,Voicemail(${ARG1},u) ; If unavailable, send to voicemail w/ unavail announce
+exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start
+
+exten => s-BUSY,1,Voicemail(${ARG1},b) ; If busy, send to voicemail w/ busy announce
+exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start
+
+exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer
+
+exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain
+
+[macro-stdPrivacyexten];
+;
+; Standard extension macro:
+; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well
+; ${ARG2} - Device(s) to ring
+; ${ARG3} - Optional DONTCALL context name to jump to (assumes the s,1 extension-priority)
+; ${ARG4} - Optional TORTURE context name to jump to (assumes the s,1 extension-priority)`
+;
+exten => s,1,Dial(${ARG2},20|p) ; Ring the interface, 20 seconds maximum, call screening
+ ; option (or use P for databased call screening)
+exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
+
+exten => s-NOANSWER,1,Voicemail(${ARG1},u) ; If unavailable, send to voicemail w/ unavail announce
+exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start
+
+exten => s-BUSY,1,Voicemail(${ARG1},b) ; If busy, send to voicemail w/ busy announce
+exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start
+
+exten => s-DONTCALL,1,Goto(${ARG3},s,1) ; Callee chose to send this call to a polite "Don't call again" script.
+
+exten => s-TORTURE,1,Goto(${ARG4},s,1) ; Callee chose to send this call to a telemarketer torture script.
+
+exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer
+
+exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain
+
+[macro-page];
+;
+; Paging macro:
+;
+; Check to see if SIP device is in use and DO NOT PAGE if they are
+;
+; ${ARG1} - Device to page
+
+exten => s,1,ChanIsAvail(${ARG1}|js) ; j is for Jump and s is for ANY call
+exten => s,n,GoToIf([${AVAILSTATUS} = "1"]?autoanswer:fail)
+exten => s,n(autoanswer),Set(_ALERT_INFO="RA") ; This is for the PolyComs
+exten => s,n,SIPAddHeader(Call-Info: Answer-After=0) ; This is for the Grandstream, Snoms, and Others
+exten => s,n,NoOp() ; Add others here and Post on the Wiki!!!!
+exten => s,n,Dial(${ARG1}||)
+exten => s,n(fail),Hangup
+
+
+[demo]
+;
+; We start with what to do when a call first comes in.
+;
+exten => s,1,Wait(1) ; Wait a second, just for fun
+exten => s,n,Answer ; Answer the line
+exten => s,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
+exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
+exten => s,n(restart),BackGround(demo-congrats) ; Play a congratulatory message
+exten => s,n(instruct),BackGround(demo-instruct) ; Play some instructions
+exten => s,n,WaitExten ; Wait for an extension to be dialed.
+
+exten => 2,1,BackGround(demo-moreinfo) ; Give some more information.
+exten => 2,n,Goto(s,instruct)
+
+exten => 3,1,Set(LANGUAGE()=fr) ; Set language to french
+exten => 3,n,Goto(s,restart) ; Start with the congratulations
+
+exten => 1000,1,Goto(default,s,1)
+;
+; We also create an example user, 1234, who is on the console and has
+; voicemail, etc.
+;
+exten => 1234,1,Playback(transfer,skip) ; "Please hold while..."
+ ; (but skip if channel is not up)
+exten => 1234,n,Macro(stdexten,1234,${GLOBAL(CONSOLE)})
+
+exten => 1235,1,Voicemail(1234,u) ; Right to voicemail
+
+exten => 1236,1,Dial(Console/dsp) ; Ring forever
+exten => 1236,n,Voicemail(1234,b) ; Unless busy
+
+;
+; # for when they're done with the demo
+;
+exten => #,1,Playback(demo-thanks) ; "Thanks for trying the demo"
+exten => #,n,Hangup ; Hang them up.
+
+;
+; A timeout and "invalid extension rule"
+;
+exten => t,1,Goto(#,1) ; If they take too long, give up
+exten => i,1,Playback(invalid) ; "That's not valid, try again"
+
+;
+; Create an extension, 500, for dialing the
+; Asterisk demo.
+;
+exten => 500,1,Playback(demo-abouttotry); Let them know what's going on
+exten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default) ; Call the Asterisk demo
+exten => 500,n,Playback(demo-nogo) ; Couldn't connect to the demo site
+exten => 500,n,Goto(s,6) ; Return to the start over message.
+
+;
+; Create an extension, 600, for evaluating echo latency.
+;
+exten => 600,1,Playback(demo-echotest) ; Let them know what's going on
+exten => 600,n,Echo ; Do the echo test
+exten => 600,n,Playback(demo-echodone) ; Let them know it's over
+exten => 600,n,Goto(s,6) ; Start over
+
+;
+; You can use the Macro Page to intercom a individual user
+exten => 76245,1,Macro(page,SIP/Grandstream1)
+; or if your peernames are the same as extensions
+exten => _7XXX,1,Macro(page,SIP/${EXTEN})
+;
+;
+; System Wide Page at extension 7999
+;
+exten => 7999,1,Set(TIMEOUT(absolute)=60)
+exten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n|d)
+
+; Give voicemail at extension 8500
+;
+exten => 8500,1,VoicemailMain
+exten => 8500,n,Goto(s,6)
+;
+; Here's what a phone entry would look like (IXJ for example)
+;
+;exten => 1265,1,Dial(Phone/phone0,15)
+;exten => 1265,n,Goto(s,5)
+
+;
+; The page context calls up the page macro that sets variables needed for auto-answer
+; It is in is own context to make calling it from the Page() application as simple as
+; Local/{peername}@page
+;
+[page]
+exten => _X.,1,Macro(page,SIP/${EXTEN})
+
+;[mainmenu]
+;
+; Example "main menu" context with submenu
+;
+;exten => s,1,Answer
+;exten => s,n,Background(thanks) ; "Thanks for calling press 1 for sales, 2 for support, ..."
+;exten => s,n,WaitExten
+;exten => 1,1,Goto(submenu,s,1)
+;exten => 2,1,Hangup
+;include => default
+;
+;[submenu]
+;exten => s,1,Ringing ; Make them comfortable with 2 seconds of ringback
+;exten => s,n,Wait,2
+;exten => s,n,Background(submenuopts) ; "Thanks for calling the sales department. Press 1 for steve, 2 for..."
+;exten => s,n,WaitExten
+;exten => 1,1,Goto(default,steve,1)
+;exten => 2,1,Goto(default,mark,2)
+
+[default]
+;
+; By default we include the demo. In a production system, you
+; probably don't want to have the demo there.
+;
+include => demo
+
+;
+; An extension like the one below can be used for FWD, Nikotel, sipgate etc.
+; Note that you must have a [sipprovider] section in sip.conf
+;
+;exten => _41X.,1,Dial(SIP/${EXTEN:2}@sipprovider,,r)
+
+; Real extensions would go here. Generally you want real extensions to be
+; 4 or 5 digits long (although there is no such requirement) and start with a
+; single digit that is fairly large (like 6 or 7) so that you have plenty of
+; room to overlap extensions and menu options without conflict. You can alias
+; them with names, too, and use global variables
+
+;exten => 6245,hint,SIP/Grandstream1&SIP/Xlite1(Joe Schmoe) ; Channel hints for presence
+;exten => 6245,1,Dial(SIP/Grandstream1,20,rt) ; permit transfer
+;exten => 6245,n(dial),Dial(${HINT},20,rtT) ; Use hint as listed
+;exten => 6245,n,Voicemail(6245,u) ; Voicemail (unavailable)
+;exten => 6245,s+1,Hangup ; s+1, same as n
+;exten => 6245,dial+101,Voicemail(6245,b) ; Voicemail (busy)
+;exten => 6361,1,Dial(IAX2/JaneDoe,,rm) ; ring without time limit
+;exten => 6389,1,Dial(MGCP/aaln/1@192.168.0.14)
+;exten => 6390,1,Dial(JINGLE/caller/callee) ; Dial via jingle using labels
+;exten => 6391,1,Dial(JINGLE/asterisk@digium.com/mogorman@astjab.org) ;Dial via jingle using asterisk as the transport and calling mogorman.
+;exten => 6394,1,Dial(Local/6275/n) ; this will dial ${MARK}
+
+;exten => 6275,1,Macro(stdexten,6275,${MARK}) ; assuming ${MARK} is something like Zap/2
+;exten => mark,1,Goto(6275|1) ; alias mark to 6275
+;exten => 6536,1,Macro(stdexten,6236,${WIL}) ; Ditto for wil
+;exten => wil,1,Goto(6236|1)
+
+;If you want to subscribe to the status of a parking space, this is
+;how you do it. Subscribe to extension 6600 in sip, and you will see
+;the status of the first parking lot with this extensions' help
+;exten => 6600,hint,park:701@parkedcalls
+;exten => 6600,1,noop
+;
+; Some other handy things are an extension for checking voicemail via
+; voicemailmain
+;
+;exten => 8500,1,VoicemailMain
+;exten => 8500,n,Hangup
+;
+; Or a conference room (you'll need to edit meetme.conf to enable this room)
+;
+;exten => 8600,1,Meetme(1234)
+;
+; Or playing an announcement to the called party, as soon it answers
+;
+;exten = 8700,1,Dial(${MARK},30,A(/path/to/my/announcemsg))
+;
+; For more information on applications, just type "core show applications" at your
+; friendly Asterisk CLI prompt.
+;
+; "core show application <command>" will show details of how you
+; use that particular application in this file, the dial plan.
+; "core show functions" will list all dialplan functions
+; "core show function <COMMAND>" will show you more information about
+; one function. Remember that function names are UPPER CASE.
diff --git a/trunk/configs/extensions.lua.sample b/trunk/configs/extensions.lua.sample
new file mode 100644
index 000000000..691e461fb
--- /dev/null
+++ b/trunk/configs/extensions.lua.sample
@@ -0,0 +1,208 @@
+
+
+CONSOLE = "Console/dsp" -- Console interface for demo
+--CONSOLE = "Zap/1"
+--CONSOLE = "Phone/phone0"
+
+IAXINFO = "guest" -- IAXtel username/password
+--IAXINFO = "myuser:mypass"
+
+TRUNK = "Zap/g2"
+TRUNKMSD = 1
+-- TRUNK = "IAX2/user:pass@provider"
+
+
+--
+-- Extensions are expected to be defined in a global table named 'extensions'.
+-- The 'extensions' table should have a group of tables in it, each
+-- representing a context. Extensions are defined in each context. See below
+-- for examples.
+--
+-- This file can be automatically included in the extensions.conf file using
+-- the 'utils/build-extensions-conf.lua' script and a #exec statement in
+-- extensions.conf.
+--
+-- #exec /usr/bin/utils/build-extensions.conf.lua -c
+--
+-- The 'execincludes' option must be set to 'yes' in the [options] section of
+-- asterisk.conf for this to work properly.
+--
+-- Extension names may be numbers, letters, or combinations thereof. If
+-- an extension name is prefixed by a '_' character, it is interpreted as
+-- a pattern rather than a literal. In patterns, some characters have
+-- special meanings:
+--
+-- X - any digit from 0-9
+-- Z - any digit from 1-9
+-- N - any digit from 2-9
+-- [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
+-- . - wildcard, matches anything remaining (e.g. _9011. matches
+-- anything starting with 9011 excluding 9011 itself)
+-- ! - wildcard, causes the matching process to complete as soon as
+-- it can unambiguously determine that no other matches are possible
+--
+-- For example the extension _NXXXXXX would match normal 7 digit
+-- dialings, while _1NXXNXXXXXX would represent an area code plus phone
+-- number preceded by a one.
+--
+-- If your extension has special characters in it such as '.' and '!' you must
+-- explicitly make it a string in the tabale definition:
+--
+-- ["_special."] = function;
+-- ["_special!"] = function;
+--
+-- There are no priorities. All extensions to asterisk appear to have a single
+-- priority as if they consist of a single priority.
+--
+-- Each context is defined as a table in the extensions table. The
+-- context names should be strings.
+--
+-- One context may be included in another context using the 'includes'
+-- extension. This extension should be set to a table containing a list
+-- of context names. Do not put references to tables in the includes
+-- table.
+--
+-- include = {"a", "b", "c"};
+--
+-- Channel variables can be accessed thorugh the global 'channel' table.
+--
+-- v = channel.var_name
+-- v = channel["var_name"]
+-- v.value
+-- v:get()
+--
+-- channel.var_name = "value"
+-- channel["var_name"] = "value"
+-- v:set("value")
+--
+-- channel.func_name(1,2,3):set("value")
+-- value = channel.func_name(1,2,3):get()
+--
+-- channel["func_name(1,2,3)"]:set("value")
+-- channel["func_name(1,2,3)"] = "value"
+-- value = channel["func_name(1,2,3)"]:get()
+--
+-- Note the use of the ':' operator to access the get() and set()
+-- methods.
+--
+-- Also notice the absence of the following constructs from the examples above:
+-- channel.func_name(1,2,3) = "value" -- this will NOT work
+-- value = channel.func_name(1,2,3) -- this will NOT work as expected
+--
+--
+-- Dialplan applications can be accessed through the global 'app' table.
+--
+-- app.Dial("Zap/1")
+-- app.dial("Zap/1")
+--
+-- More examples can be found below.
+--
+-- Before starting long running operations, an autoservice should be started
+-- using the autoservice_start() function. This autoservice will automatically
+-- be stopped before executing applications and dialplan functions and will be
+-- restarted afterwards. The autoservice can be stopped using
+-- autoservice_stop() and the autoservice_status() function will return true if
+-- an autoservice is currently running.
+--
+
+function outgoing_local(c, e)
+ app.dial("zap/1/" .. e, "", "")
+end
+
+function demo_instruct()
+ app.background("demo-instruct")
+ app.waitexten()
+end
+
+function demo_congrats()
+ app.background("demo-congrats")
+ demo_instruct()
+end
+
+-- Answer the chanel and play the demo sound files
+function demo_start(context, exten)
+ app.wait(1)
+ app.answer()
+
+ channel.TIMEOUT("digit"):set(5)
+ channel.TIMEOUT("response"):set(10)
+ -- app.set("TIMEOUT(digit)=5")
+ -- app.set("TIMEOUT(response)=10")
+
+ demo_congrats(context, exten)
+end
+
+function demo_hangup()
+ app.playback("demo-thanks")
+ app.hangup()
+end
+
+extensions = {
+ demo = {
+ s = demo_start;
+
+ ["2"] = function()
+ app.background("demo-moreinfo")
+ demo_instruct()
+ end;
+ ["3"] = function ()
+ channel.LANGUAGE():set("fr") -- set the language to french
+ demo_congrats()
+ end;
+
+ ["1000"] = function()
+ app.goto("default", "s", 1)
+ end;
+
+ ["1234"] = function()
+ app.playback("transfer", "skip")
+ -- do a dial here
+ end;
+
+ ["1235"] = function()
+ app.voicemail("1234", "u")
+ end;
+
+ ["1236"] = function()
+ app.dial("Console/dsp")
+ app.voicemail(1234, "b")
+ end;
+
+ ["#"] = demo_hangup;
+ t = demo_hangup;
+ i = function()
+ app.playback("invalid")
+ demo_instruct()
+ end;
+
+ ["500"] = function()
+ app.playback("demo-abouttotry")
+ app.dial("IAX2/guest@misery.digium.com/s@default")
+ app.playback("demo-nogo")
+ demo_instruct()
+ end;
+
+ ["600"] = function()
+ app.playback("demo-echotest")
+ app.echo()
+ app.playback("demo-echodone")
+ demo_instruct()
+ end;
+
+ ["8500"] = function()
+ app.voicemailmain()
+ demo_instruct()
+ end;
+
+ };
+
+ default = {
+ -- by default, do the demo
+ include = {"demo"};
+ };
+
+ ["local"] = {
+ ["_NXXXXXX"] = outgoing_local;
+ };
+}
+
diff --git a/trunk/configs/extensions_minivm.conf.sample b/trunk/configs/extensions_minivm.conf.sample
new file mode 100644
index 000000000..75f87c165
--- /dev/null
+++ b/trunk/configs/extensions_minivm.conf.sample
@@ -0,0 +1,159 @@
+; MINI-VOICEMAIL dialplan example
+; ---------------------------------------------------------------------------------------
+; ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+;
+;
+; This is an example on how to use the Mini-Voicemail system to build
+; voicemail systems.
+;
+;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
+; A macro to test the MINIVMACCOUNT dialplan function
+; Currently, accountcode and pincode is not used in the application
+; They where added to be used in dialplan scripting
+;
+;
+[macro-minivmfunctest]
+exten => s,1,set(account=${ARGV1})
+exten => minivm,n,verbose(1,-------------------- Minivm Function test - Accoutn ${account} -------------)
+exten => s,n,verbose(1,---- Has account: ${MINIVMACCOUNT(${account}:hasaccount)})
+exten => s,n,verbose(1,---- Fullname: ${MINIVMACCOUNT(${account}:fullname)})
+exten => s,n,verbose(1,---- Email: ${MINIVMACCOUNT(${account}:email)})
+exten => s,n,verbose(1,---- Pager: ${MINIVMACCOUNT(${account}:pager)})
+exten => s,n,verbose(1,---- E-mail template: ${MINIVMACCOUNT(${account}:etemplate)})
+exten => s,n,verbose(1,---- Pager template: ${MINIVMACCOUNT(${account}:ptemplate)})
+exten => s,n,verbose(1,---- Account code: ${MINIVMACCOUNT(${account}:accountcode)})
+exten => s,n,verbose(1,---- Path: ${MINIVMACCOUNT(${account}:path)})
+exten => s,n,verbose(1,---- Pincode: ${MINIVMACCOUNT(${account}:pincode)})
+exten => s,n,verbose(1,---- Time zone: ${MINIVMACCOUNT(${account}:timezone)})
+exten => s,n,verbose(1,---- Language: ${MINIVMACCOUNT(${account}:language)})
+; This requires setvar=customerclass=gold in the account configuration
+exten => s,n,verbose(1,---- Var:customerclass: ${MINIVMACCOUNT(${account}:customerclass)})
+
+[minivm-scenario1]
+; minivmtest tests the dialplan function MINIVMACCOUNT
+; Check the output in the console with verbose set
+exten => minivmtest,1,answer
+exten => minivmtest,n,wait(0.5)
+exten => minivmtest,n,set(ACCOUNT=do-not-spam-me@example.com)
+exten => minivmtest,n,macro(minivmfunctest, ${ACCOUNT})
+exten => minivmtest,n,playback(beep)
+exten => minivmtest,n,hangup
+
+;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
+; "minivm" tests a full scenario
+; Remember that users may hangup
+; This works both for users with accounts in minivm.conf and by just giving an e-mail address
+; without configuring an account
+exten => minivm,1,answer
+exten => minivm,n,wait(0.5) ; Wait for Voip channels to settle
+exten => minivm,n,set(account=oej@example.com)
+exten => minivm,n,noop(------------------------------------------- Minivm Greet -------------)
+exten => minivm,n,minivmgreet(${account})
+exten => minivm,n,verbose(1,-- MINIVM_GREET_STATUS = ${MINIVM_GREET_STATUS} )
+exten => minivm,n,noop(------------------------------------------- Minivm Record -------------)
+exten => minivm,n,minivmRecord(${account},b)
+exten => minivm,n,goto(minivmcleanup,1)
+
+; Cleanup after recording or hangup
+exten => minivmcleanup,1,noop(------------------------------------------- Minivm Notify -------------)
+;Increment voicemail counter with 1. The counter will be used in the e-mail message
+;and in the filename
+exten => minivmcleanup,n,gotoif($[${MINIVM_RECORD_STATUS} != SUCCESS]?minivmrecordfailure,1)
+exten => minivmcleanup,n,set(MINIVMCOUNTER(${account}:voicemailcounter:inc)=1)
+exten => minivmcleanup,n,set(MVM_COUNTER = ${MINIVMCOUNTER(${account}:voicemailcounter)})
+exten => minivmcleanup,n,minivmNotify(${account})
+exten => minivmcleanup,n,verbose(1,-- MINIVM_NOTIFY_STATUS = ${MINIVM_NOTIFY_STATUS} )
+; Now, clean up after sending voicemail
+exten => minivmcleanup,n,noop(------------------------------------------- Minivm Delete -------------)
+exten => minivmcleanup,n,minivmdelete()
+exten => minivmcleanup,n,verbose(1,-- MINIVM_DELETE_STATUS = ${MINIVM_DELETE_STATUS} )
+
+;Recording failed
+exten => minivmrecordfailure,1,playback(vm-sorry)
+exten => minivmrecordfailure,n,wait(1)
+exten => minivmrecordfailure,n,hangup
+
+; If the user hangs up during the recording, we need to clean up
+; And send notifications
+exten => h,1,gotoif($[x${MINIVM_DELETE_STATUS} != x] ?h,stop)
+exten => h,n,noop(------------------------------------------- HANGUP during voicemail recording -------------)
+exten => h,n,goto(minivmcleanup,1)
+exten => h,n(stop),noop(---Minivm DONE----)
+
+;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
+; Extension to record a greeting message
+; Call this like:
+; macro(recordgreetings,alice@atlanta.example.com)
+;
+[macro-recordgreetings]
+exten => s,1,answer
+exten => s,n,wait(0.5)
+exten => s,n,set(account=${ARGV1])
+; This file give extra options not available here, needs to be edited
+; Change of password does not work
+exten => s,n(menu),background(vm-options)
+exten => 1,1,setvar(option=u)
+exten => 1,n,macro(minivmrec,${account},${option})
+exten => 1,n,goto(menu)
+exten => 2,1,setvar(option=b)
+exten => 2,n,macro(minivmrec,${account},${option})
+exten => 2,n,goto(menu)
+exten => 3,1,setvar(option=n)
+exten => 3,n,macro(minivmrec,${account},${option})
+exten => 3,n,goto(menu)
+exten => 4,1,setvar(option=t)
+exten => 4,n,macro(minivmrec,${account},${option})
+exten => 4,n,goto(menu)
+exten => *,1,playback(vm-thankyou)
+exten => *,n,wait(1)
+exten => *,n,hangup
+
+exten => i,1,playback(invalid)
+exten => i,n,goto(menu)
+
+[macro-minivmrec]
+exten => s,1,gotoif(${MINIVMACCOUNT(${account}:hasaccount)}?record)
+; Account is not configured in minivm.conf or realtime
+; Phony message, add something useful here
+exten => s,n,playback(privacy-incorrect)
+exten => s,n,macroreturn
+exten => record,1,minivmappmess(${ARGV1},${ARGV2})
+exten => record,n,noop(Recording status: ${MINIVM_APPMESS_STATUS})
+exten => record,n,macroreturn
+
+;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
+; To set a counter and use a template for voicemail to users without acounts
+; use something like this
+;
+; email address is in the "account" channel variable. Set from ast_db or a script
+; based on called ID
+
+exten => sendvoicemail,1,answer
+exten => sendvoicemail,n,wait(0.5)
+exten => sendvoicemail,n,set(domain=${CUT(account,@,2)})
+exten => sendvoicemail,n,set(country=${CUT(domain,.,2)})
+exten => sendvoicemail,n,minivmgreet(${account})
+exten => sendvoicemail,n,minivmRecord(${account},b)
+exten => sendvoicemail,n,goto(sendvmcleanup)
+
+exten => sendvmcleanup,1,gotoif($[${MINIVM_RECORD_STATUS} != SUCCESS]?done)
+; The counter is set in the domain directory, so we don't create one directory per user
+; The counter has the email in the name of the counter, increase it
+; Set the MVM_COUNTER variable that we use in the template
+exten => sendvmcleanup,n,set(MINIVMCOUNTER(${account}:voicemailcounter:inc)=1)
+exten => sendvmcleanup,n,set(MVM_COUNTER = ${MINIVMCOUNTER(${account}:voicemailcounter)})
+; Increase a domain counter too, to see how many voicemails are sent to this domain
+; This is just for statistics
+exten => sendvmcleanup,n,set(MINIVMCOUNTER(${domain}:${domain}-all:inc) = 1)
+
+; Send voicemail in e-mail with country-specific template
+; The template need to be defined in minivm.conf
+;
+exten => sendvmcleanup,n,minivmNotify(${account}, ${country}_email)
+exten => sendvmcleanup,n,minivmDelete()
+
+exten => sendvmcleanup,n(done),wait(0.5)
+exten => sendvmcleanup,n,hangup
+
+exten => h,1,gotoif($[${MINIVM_RECORD_STATUS} = SUCCESS]?sendvmcleanup,1))
+
diff --git a/trunk/configs/features.conf.sample b/trunk/configs/features.conf.sample
new file mode 100644
index 000000000..c3026adda
--- /dev/null
+++ b/trunk/configs/features.conf.sample
@@ -0,0 +1,124 @@
+;
+; Sample Call Features (parking, transfer, etc) configuration
+;
+
+[general]
+parkext => 700 ; What extension to dial to park
+parkpos => 701-720 ; What extensions to park calls on. These needs to be
+ ; numeric, as Asterisk starts from the start position
+ ; and increments with one for the next parked call.
+context => parkedcalls ; Which context parked calls are in
+;parkingtime => 45 ; Number of seconds a call can be parked for
+ ; (default is 45 seconds)
+;courtesytone = beep ; Sound file to play to the parked caller
+ ; when someone dials a parked call
+ ; or the Touch Monitor is activated/deactivated.
+;parkedplay = caller ; Who to play the courtesy tone to when picking up a parked call
+ ; one of: parked, caller, both (default is caller)
+;parkedcalltransfers = caller ; Enables or disables DTMF based transfers when picking up a parked call.
+ ; one of: callee, caller, both, no (default is no)
+;parkedcallreparking = caller ; Enables or disables DTMF based parking when picking up a parked call.
+ ; one of: callee, caller, both, no (default is no)
+;adsipark = yes ; if you want ADSI parking announcements
+;findslot => next ; Continue to the 'next' free parking space.
+ ; Defaults to 'first' available
+;parkedmusicclass=default ; This is the MOH class to use for the parked channel
+ ; as long as the class is not set on the channel directly
+ ; using Set(CHANNEL(musicclass)=whatever) in the dialplan
+
+;transferdigittimeout => 3 ; Number of seconds to wait between digits when transferring a call
+ ; (default is 3 seconds)
+;xfersound = beep ; to indicate an attended transfer is complete
+;xferfailsound = beeperr ; to indicate a failed transfer
+;pickupexten = *8 ; Configure the pickup extension. (default is *8)
+;featuredigittimeout = 500 ; Max time (ms) between digits for
+ ; feature activation (default is 500 ms)
+;atxfernoanswertimeout = 15 ; Timeout for answer on attended transfer default is 15 seconds.
+;atxferdropcall = no ; If someone does an attended transfer, then hangs up before the transferred
+ ; caller is connected, then by default, the system will try to call back the
+ ; person that did the transfer. If this is set to "yes", the callback will
+ ; not be attempted and the transfer will just fail.
+;atxferloopdelay = 10 ; Number of seconds to sleep between retries (if atxferdropcall = no)
+;atxfercallbackretries = 2 ; Number of times to attempt to send the call back to the transferer.
+ ; By default, this is 2.
+
+; Note that the DTMF features listed below only work when two channels have answered and are bridged together.
+; They can not be used while the remote party is ringing or in progress. If you require this feature you can use
+; chan_local in combination with Answer to accomplish it.
+
+[featuremap]
+;blindxfer => #1 ; Blind transfer (default is #)
+;disconnect => *0 ; Disconnect (default is *)
+;automon => *1 ; One Touch Record a.k.a. Touch Monitor
+;atxfer => *2 ; Attended transfer
+;parkcall => #72 ; Park call (one step parking)
+;automixmon => *3 ; One Touch Record a.k.a. Touch MixMonitor
+
+[applicationmap]
+; Note that the DYNAMIC_FEATURES channel variable must be set to use the features
+; defined here. The value of DYNAMIC_FEATURES should be the names of the features
+; to allow the channel to use separated by '#'. For example:
+;
+; Set(DYNAMIC_FEATURES=myfeature1#myfeature2#myfeature3)
+;
+;
+; The syntax for declaring a dynamic feature is the following:
+;
+;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>[,<AppArguments>[,MOH_Class]]
+;
+; FeatureName -> This is the name of the feature used in when setting the
+; DYNAMIC_FEATURES variable to enable usage of this feature.
+; DTMF_sequence -> This is the key sequence used to activate this feature.
+; ActivateOn -> This is the channel of the call that the application will be executed
+; on. Valid values are "self" and "peer". "self" means run the
+; application on the same channel that activated the feature. "peer"
+; means run the application on the opposite channel from the one that
+; has activated the feature.
+; ActivatedBy -> This is which channel is allowed to activate this feature. Valid
+; values are "caller", "callee", and "both". "both" is the default.
+; The "caller" is the channel that executed the Dial application, while
+; the "callee" is the channel called by the Dial application.
+; Application -> This is the application to execute.
+; AppArguments -> These are the arguments to be passed into the application.
+; MOH_Class -> This is the music on hold class to play while the idle
+; channel waits for the feature to complete. If left blank,
+; no music will be played.
+;
+;
+; IMPORTANT NOTE: The applicationmap is not intended to be used for all Asterisk
+; applications. When applications are used in extensions.conf, they are executed
+; by the PBX core. In this case, these applications are executed outside of the
+; PBX core, so it does *not* make sense to use any application which has any
+; concept of dialplan flow. Examples of this would be things like Macro, Goto,
+; Background, WaitExten, and many more.
+;
+; Enabling these features means that the PBX needs to stay in the media flow and
+; media will not be re-directed if DTMF is sent in the media stream.
+;
+; Example Usage:
+;
+;testfeature => #9,peer,Playback,tt-monkeys ;Allow both the caller and callee to play
+; ;tt-monkeys to the opposite channel
+;
+;pauseMonitor => #1,self/callee,Pausemonitor ;Allow the callee to pause monitoring
+; ;on their channel
+;unpauseMonitor => #3,self/callee,UnPauseMonitor ;Allow the callee to unpause monitoring
+; ;on their channel
+;
+; GROUPS
+; Groups are groupings of features defined in [applicationmap]
+; that can have their own key mappings.
+;
+; Groups are defined as a configuration section,
+; and can be set as part of DYNAMIC_FEATURES in
+; the same way that a normal feature can...
+; etc:
+;
+; Set(DYNAMIC_FEATURES=myGroupName);
+;
+; example:
+; [myGroupName] ; defines the group named myGroupName
+; testfeature => #9 ; associates testfeature with the group and the keycode #9
+; pauseMonitor ; associates pauseMonitor with the group and the keycode
+; ; defined in [applicationmap]
+
diff --git a/trunk/configs/festival.conf.sample b/trunk/configs/festival.conf.sample
new file mode 100644
index 000000000..774f1a16c
--- /dev/null
+++ b/trunk/configs/festival.conf.sample
@@ -0,0 +1,35 @@
+;
+; Festival Configuration
+;
+[general]
+;
+; Host which runs the festival server (default : localhost);
+;
+;host=localhost
+;
+; Port on host where the festival server runs (default : 1314)
+;
+;port=1314
+;
+; Use cache (yes, no - defaults to no)
+;
+;usecache=yes
+;
+; If usecache=yes, a directory to store waveform cache files.
+; The cache is never cleared (yet), so you must take care of cleaning it
+; yourself (just delete any or all files from the cache).
+; THIS DIRECTORY *MUST* EXIST and must be writable from the asterisk process.
+; Defaults to /tmp/
+;
+;cachedir=/var/lib/asterisk/festivalcache/
+;
+; Festival command to send to the server.
+; Defaults to: (tts_textasterisk "%s" 'file)(quit)\n
+; %s is replaced by the desired text to say. The command MUST end with a
+; (quit) directive, or the cache handling mechanism will hang. Do not
+; forget the \n at the end.
+;
+;festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n
+;
+;
+
diff --git a/trunk/configs/followme.conf.sample b/trunk/configs/followme.conf.sample
new file mode 100644
index 000000000..697e5a69c
--- /dev/null
+++ b/trunk/configs/followme.conf.sample
@@ -0,0 +1,86 @@
+; Find-Me / Follow-Me Configuration File
+[general]
+;
+featuredigittimeout=>5000
+; The number of ms to wait for a digit input for the callee on whether to take the call or
+; not before we consider them "done" entering digits.
+;
+takecall=>1
+; The global default keypress for the callee to take taking the current call. This can be
+; a single digit or multiple digits. Default is "1".
+;
+declinecall=>2
+; The global default keypress for the callee to decline taking the current call. This can
+; be a single digit or multiple digits. Default is "2".
+;
+call-from-prompt=>followme/call-from
+; The global default for the 'Incoming call from' message.
+;
+norecording-prompt=>followme/no-recording
+; The global default for the 'You have an incoming call' message when the caller elects
+; not to leave their name or the option isn't set for them to do so.
+;
+options-prompt=>followme/options
+; The global default for the 'Press 1 to accept this call or press 2 to decline it' message.
+;
+pls-hold-prompt=>followme/pls-hold-while-try
+; The global default for 'Please hold while we try and connect your call' message.
+;
+status-prompt=>followme/status
+; The global default for 'The party you're calling isn't at their desk' message.
+;
+sorry-prompt=>followme/sorry
+; The global default for 'I'm sorry, but we were unable to locate your party' message.
+;
+;
+[default]
+musicclass=>default
+; The moh class that should be used for the caller while they are waiting to be connected.
+context=>default
+; The context to dial the numbers from
+number=>01233456,25
+; The a follow-me number to call. The format is:
+; number=> <number to call[&2nd #[&3rd #]]> [, <timeout value in seconds> [, <order in follow-me>] ]
+; You can specify as many of these numbers as you like. They will be dialed in the
+; order that you specify them in the config file OR as specified with the order field
+; on the number prompt. As you can see from the example, forked dialing of multiple
+; numbers in the same step is supported with this application if you'd like to dial
+; multiple numbers in the same followme step.
+; It's also important to note that the timeout value is not the same
+; as the timeout value you would use in app_dial. This timeout value is the amount of
+; time allowed between the time the dialing step starts and the callee makes a choice
+; on whether to take the call or not. That being the case, you may want to account for
+; this time, and make this timeout longer than a timeout you might specify in app_dial.
+takecall=>1
+; The keypress for the callee to take taking the current call. This can be
+; a single digit or multiple digits. Default is the global default.
+;
+declinecall=>2
+; The keypress for the callee to decline taking the current call. This can
+; be a single digit or multiple digits. Default is the global default.
+;
+call-from-prompt=>followme/call-from
+; The 'Incoming call from' message prompt. Default is the global default.
+;
+followme-norecording-prompt=>followme/no-recording
+; The 'You have an incoming call' message prompt when the caller elects
+; not to leave their name or the option isn't set for them to do so. Default
+; is the global default.
+;
+followme-options-prompt=>followme/options
+; The 'Press 1 to accept this call or press 2 to decline it' message prompt.
+; Default is the global default.
+;
+followme-pls-hold-prompt=>followme/pls-hold-while-try
+; The 'Please hold while we try and connect your call' message prompt.
+; Default is the global default.
+;
+followme-status-prompt=>followme/status
+; The 'The party you're calling isn't at their desk' message prompt.
+; Default is the global default.
+;
+followme-sorry-prompt=>followme/sorry
+; The 'I'm sorry, but we were unable to locate your party' message prompt. Default
+; is the global default.
+
+
diff --git a/trunk/configs/func_odbc.conf.sample b/trunk/configs/func_odbc.conf.sample
new file mode 100644
index 000000000..ff9e1c17b
--- /dev/null
+++ b/trunk/configs/func_odbc.conf.sample
@@ -0,0 +1,77 @@
+;
+; func_odbc.conf
+;
+; Each context is a separately defined function. By convention, all
+; functions are entirely uppercase, so the defined contexts should also
+; be all-uppercase, but there is nothing that enforces this. All functions
+; are case-sensitive, however.
+;
+; For substitution, you have ${ARG1}, ${ARG2} ... ${ARGn}
+; for the arguments to each SQL statement.
+;
+; In addition, for write statements, you have ${VAL1}, ${VAL2} ... ${VALn}
+; parsed, just like arguments, for the values. In addition, if you want the
+; whole value, never mind the parsing, you can get that with ${VALUE}.
+;
+;
+; If you have data which may potentially contain single ticks, you may wish
+; to use the dialplan function SQL_ESC() to escape the data prior to its
+; inclusion in the SQL statement.
+;
+;
+; The following variables are available in this configuration file:
+;
+; readhandle A comma-separated list of DSNs (from res_odbc.conf) to use when
+; executing the readsql statement. Each DSN is tried, in
+; succession, until the statement succeeds. You may specify up to
+; 5 DSNs per function class. If not specified, it will default to
+; the value of writehandle or dsn, if specified.
+; writehandle A comma-separated list of DSNs (from res_odbc.conf) to use when
+; executing the writesql statement. The same rules apply as to
+; readhandle. "dsn" is a synonym for "writehandle".
+; readsql The statement to execute when reading from the function class.
+; writesql The statement to execute when writing to the function class.
+; prefix Normally, all function classes are prefixed with "ODBC" to keep
+; them uniquely named. You may choose to change this prefix, which
+; may be useful to segregate a collection of certain function
+; classes from others.
+; escapecommas This option may be used to turn off the default behavior of
+; escaping commas which occur within a field. If commas are
+; escaped (the default behavior), then fields containing commas
+; will be treated as a single value when assigning to ARRAY() or
+; HASH(). If commas are not escaped, then values will be separated
+; at the comma within fields. Please note that turning this option
+; off is incompatible with the functionality of HASH().
+
+
+; ODBC_SQL - Allow an SQL statement to be built entirely in the dialplan
+[SQL]
+dsn=mysql1
+readsql=${ARG1}
+
+; ODBC_ANTIGF - A blacklist.
+[ANTIGF]
+dsn=mysql1,mysql2 ; Use mysql1 as the primary handle, but fall back to mysql2
+ ; if mysql1 is down. Supports up to 5 comma-separated
+ ; DSNs. "dsn" may also be specified as "readhandle" and
+ ; "writehandle", if it is important to separate reads and
+ ; writes to different databases.
+readsql=SELECT COUNT(*) FROM exgirlfriends WHERE callerid='${SQL_ESC(${ARG1})}'
+
+; ODBC_PRESENCE - Retrieve and update presence
+[PRESENCE]
+dsn=mysql1
+readsql=SELECT location FROM presence WHERE id='${SQL_ESC(${ARG1})}'
+writesql=UPDATE presence SET location='${SQL_ESC(${VAL1})}' WHERE id='${SQL_ESC(${ARG1})}'
+;prefix=OFFICE ; Changes this function from ODBC_PRESENCE to OFFICE_PRESENCE
+;escapecommas=no ; Normally, commas within a field are escaped such that each
+ ; field may be separated into individual variables with ARRAY.
+ ; This option turns that behavior off [default=yes].
+;mode=multirow ; Enable multirow fetching. Instead of returning results directly,
+ ; mode=multirow queries will return a result-id, which can be passed
+ ; multiple times to ODBC_FETCH, and that function will return each
+ ; row, in order. You can add to this the following parameter:
+;rowlimit=5 ; rowlimit will limit the number of rows retrieved and stored from
+ ; the database. If not specified, all rows, up to available memory,
+ ; will be retrieved and stored.
+
diff --git a/trunk/configs/gtalk.conf.sample b/trunk/configs/gtalk.conf.sample
new file mode 100644
index 000000000..da629b626
--- /dev/null
+++ b/trunk/configs/gtalk.conf.sample
@@ -0,0 +1,19 @@
+;[general]
+;context=default ;;Context to dump call into
+;allowguest=yes ;;Allow calls from people not in
+ ;;list of peers
+;
+;[guest] ;;special account for options on guest account
+;disallow=all
+;allow=ulaw
+;context=guest
+;
+;[ogorman]
+;username=ogorman@gmail.com ;;username of the peer your
+ ;;calling or accepting calls from
+;disallow=all
+;allow=ulaw
+;context=default
+;connection=asterisk ;;client or component in jabber.conf
+ ;;for the call to leave on.
+;
diff --git a/trunk/configs/h323.conf.sample b/trunk/configs/h323.conf.sample
new file mode 100644
index 000000000..5be321f33
--- /dev/null
+++ b/trunk/configs/h323.conf.sample
@@ -0,0 +1,207 @@
+; The NuFone Network's
+; Open H.323 driver configuration
+;
+[general]
+port = 1720
+;bindaddr = 1.2.3.4 ; this SHALL contain a single, valid IP address for this machine
+;
+; See qos.tex or Quality of Service section of asterisk.pdf for a description of these parameters.
+;tos_audio=ef ; Sets TOS for RTP audio packets.
+;cos_audio=5 ; Sets 802.1p priority for RTP audio packets.
+;
+; You may specify a global default AMA flag for iaxtel calls. It must be
+; one of 'default', 'omit', 'billing', or 'documentation'. These flags
+; are used in the generation of call detail records.
+;
+;amaflags = default
+;
+; You may specify a default account for Call Detail Records in addition
+; to specifying on a per-user basis
+;
+;accountcode=lss0101
+;
+; You can fine tune codecs here using "allow" and "disallow" clauses
+; with specific codecs. Use "all" to represent all formats.
+;
+;disallow=all
+;allow=all ; turns on all installed codecs
+;disallow=g723.1 ; Hm... Proprietary, don't use it...
+;allow=gsm ; Always allow GSM, it's cool :)
+;allow=ulaw ; see doc/rtp-packetization for framing options
+;
+; User-Input Mode (DTMF)
+;
+; valid entries are: rfc2833, inband, cisco, h245-signal
+; default is rfc2833
+;dtmfmode=rfc2833
+;
+; Default RTP Payload to send RFC2833 DTMF on. This is used to
+; interoperate with broken gateways which cannot successfully
+; negotiate a RFC2833 payload type in the TerminalCapabilitySet.
+; To specify required payload type, put it after colon in dtmfmode
+; option like
+;dtmfmode=rfc2833:101
+; or
+;dtmfmode=cisco:121
+;
+; Set the gatekeeper
+; DISCOVER - Find the Gk address using multicast
+; DISABLE - Disable the use of a GK
+; <IP address> or <Host name> - The acutal IP address or hostname of your GK
+;gatekeeper = DISABLE
+;
+;
+; Tell Asterisk whether or not to accept Gatekeeper
+; routed calls or not. Normally this should always
+; be set to yes, unless you want to have finer control
+; over which users are allowed access to Asterisk.
+; Default: YES
+;
+;AllowGKRouted = yes
+;
+; When the channel works without gatekeeper, there is possible to
+; reject calls from anonymous (not listed in users) callers.
+; Default is to allow anonymous calls.
+;
+;AcceptAnonymous = yes
+;
+; Optionally you can determine a user by Source IP versus its H.323 alias.
+; Default behavour is to determine user by H.323 alias.
+;
+;UserByAlias=no
+;
+; Default context gets used in siutations where you are using
+; the GK routed model or no type=user was found. This gives you
+; the ability to either play an invalid message or to simply not
+; use user authentication at all.
+;
+;context=default
+;
+; Use this option to help Cisco (or other) gateways to setup backward voice
+; path to pass inband tones to calling user (see, for example,
+; http://www.cisco.com/warp/public/788/voip/ringback.html)
+;
+; Add PROGRESS information element to SETUP message sent on outbound calls
+; to notify about required backward voice path. Valid values are:
+; 0 - don't add PROGRESS information element (default);
+; 1 - call is not end-end ISDN, further call progress information can
+; possibly be available in-band;
+; 3 - origination address is non-ISDN (Cisco accepts this value only);
+; 8 - in-band information or an appropriate pattern is now available;
+;progress_setup = 3
+;
+; Add PROGRESS information element (IE) to ALERT message sent on incoming
+; calls to notify about required backwared voice path. Valid values are:
+; 0 - don't add PROGRESS IE (default);
+; 8 - in-band information or an appropriate pattern is now available;
+;progress_alert = 8
+;
+; Generate PROGRESS message when H.323 audio path has established to create
+; backward audio path at other end of a call.
+;progress_audio = yes
+;
+; Specify how to inject non-standard information into H.323 messages. When
+; the channel receives messages with tunneled information, it automatically
+; enables the same option for all further outgoing messages independedly on
+; options has been set by the configuration. This behavior is required, for
+; example, for Cisco CallManager when Q.SIG tunneling is enabled for a
+; gateway where Asterisk lives.
+; The option can be used multiple times, one option per line.
+;tunneling=none ; Totally disable tunneling (default)
+;tunneling=cisco ; Enable Cisco-specific tunneling
+;tunneling=qsig ; Enable tunneling via Q.SIG messages
+;
+; Specify how to pass hold notification to remote party. Default is to
+; use H.450.4 supplementary service message.
+;hold=none ; Do not pass hold/retrieve notifications
+;hold=notify ; Use H.225 NOTIFY message
+;hold=q931only ; Use stripped H.225 NOTIFY message (Q.931 part
+; ; only, usable for Cisco CallManager)
+;hold=h450 ; Pass notification as H.450.4 supplementary
+; ; service
+;
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
+ ; H323 channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The H323 channel can accept jitter,
+ ; thus an enabled jitterbuffer on the receive H323 side will only
+ ; be used if the sending side can create jitter and jbforce is
+ ; also set to yes.
+
+; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a H323
+ ; channel. Defaults to "no".
+
+; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usualy sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a H323
+ ; channel. Two implementations are currenlty available - "fixed"
+ ; (with size always equals to jbmax-size) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
+;
+; H.323 Alias definitions
+;
+; Type 'h323' will register aliases to the endpoint
+; and Gatekeeper, if there is one.
+;
+; Example: if someone calls time@your.asterisk.box.com
+; Asterisk will send the call to the extension 'time'
+; in the context default
+;
+; [default]
+; exten => time,1,Answer
+; exten => time,2,Playback,current-time
+;
+; Keyword's 'prefix' and 'e164' are only make sense when
+; used with a gatekeeper. You can specify either a prefix
+; or E.164 this endpoint is responsible for terminating.
+;
+; Example: The H.323 alias 'det-gw' will tell the gatekeeper
+; to route any call with the prefix 1248 to this alias. Keyword
+; e164 is used when you want to specifiy a full telephone
+; number. So a call to the number 18102341212 would be
+; routed to the H.323 alias 'time'.
+;
+;[time]
+;type=h323
+;e164=18102341212
+;context=default
+;
+;[det-gw]
+;type=h323
+;prefix=1248,1313
+;context=detroit
+;
+;
+; Inbound H.323 calls from BillyBob would land in the incoming
+; context with a maximum of 4 concurrent incoming calls
+;
+;
+; Note: If keyword 'incominglimit' are omitted Asterisk will not
+; enforce any maximum number of concurrent calls.
+;
+;[BillyBob]
+;type=user
+;host=192.168.1.1
+;context=incoming
+;incominglimit=4
+;h245Tunneling=no
+;
+;
+; Outbound H.323 call to Larry using SlowStart
+;
+;[Larry]
+;type=peer
+;host=192.168.2.1
+;fastStart=no
+
+
+
diff --git a/trunk/configs/http.conf.sample b/trunk/configs/http.conf.sample
new file mode 100644
index 000000000..b0c0047aa
--- /dev/null
+++ b/trunk/configs/http.conf.sample
@@ -0,0 +1,71 @@
+;
+; Asterisk Builtin mini-HTTP server
+;
+;
+; Note about Asterisk documentation:
+; If Asterisk was installed from a tarball, then the HTML documentation should
+; be installed in the static-http/docs directory which is
+; (/var/lib/asterisk/static-http/docs) on linux by default. If the Asterisk
+; HTTP server is enabled in this file by setting the "enabled", "bindaddr",
+; and "bindport" options, then you should be able to view the documentation
+; remotely by browsing to:
+; http://<server_ip>:<bindport/asterisk/static/docs/index.html
+;
+[general]
+;
+; Whether HTTP/HTTPS interface is enabled or not. Default is no.
+; This also affects manager/rawman/mxml access (see manager.conf)
+;
+;enabled=yes
+;
+; Address to bind to, both for HTTP and HTTPS. Default is 0.0.0.0
+;
+bindaddr=127.0.0.1
+;
+; Port to bind to for HTTP sessions (default is 8088)
+;
+;bindport=8088
+;
+; Prefix allows you to specify a prefix for all requests
+; to the server. The default is "asterisk" so that all
+; requests must begin with /asterisk
+;
+;prefix=asterisk
+;
+; Whether Asterisk should serve static content from http-static
+; Default is no.
+;
+;enablestatic=yes
+;
+; Redirect one URI to another. This is how you would set a
+; default page.
+; Syntax: redirect=<from here> <to there>
+; For example, if you are using the Asterisk-gui,
+; it is convenient to enable the following redirect:
+;
+;redirect = / /asterisk/static/config/cfgbasic.html
+;
+; HTTPS support. In addition to enabled=yes, you need to
+; explicitly enable ssl, define the port to use,
+; and have a certificate somewhere.
+; sslenable=yes ; enable ssl - default no.
+; sslbindport=4433 ; port to use - default is 8089
+; sslbindaddr=0.0.0.0 ; address to bind to - default is bindaddr.
+;
+; sslcert=/tmp/foo.pem ; path to the certificate
+;
+; To produce a certificate you can e.g. use openssl
+; openssl req -new -x509 -days 365 -nodes -out /tmp/foo.pem -keyout /tmp/foo.pem
+;
+
+; The post_mappings section maps URLs to real paths on the filesystem. If a
+; POST is done from within an authenticated manager session to one of the
+; configured POST mappings, then any files in the POST will be placed in the
+; configured directory.
+;
+;[post_mappings]
+;
+; In this example, if the prefix option is set to "asterisk", then using the
+; POST URL: /asterisk/uploads will put files in /var/lib/asterisk/uploads/.
+;uploads = /var/lib/asterisk/uploads/
+;
diff --git a/trunk/configs/iax.conf.sample b/trunk/configs/iax.conf.sample
new file mode 100644
index 000000000..2441f2cf4
--- /dev/null
+++ b/trunk/configs/iax.conf.sample
@@ -0,0 +1,434 @@
+
+; Inter-Asterisk eXchange driver definition
+;
+; This configuration is re-read at reload
+; or with the CLI command
+; reload chan_iax2.so
+;
+; General settings, like port number to bind to, and
+; an option address (the default is to bind to all
+; local addresses).
+;
+[general]
+;bindport=4569 ; bindport and bindaddr may be specified
+; ; NOTE: bindport must be specified BEFORE
+ ; bindaddr or may be specified on a specific
+ ; bindaddr if followed by colon and port
+ ; (e.g. bindaddr=192.168.0.1:4569)
+;bindaddr=192.168.0.1 ; more than once to bind to multiple
+; ; addresses, but the first will be the
+; ; default
+;
+; Set iaxcompat to yes if you plan to use layered switches or
+; some other scenario which may cause some delay when doing a
+; lookup in the dialplan. It incurs a small performance hit to
+; enable it. This option causes Asterisk to spawn a separate thread
+; when it receives an IAX DPREQ (Dialplan Request) instead of
+; blocking while it waits for a response.
+;
+;iaxcompat=yes
+;
+; Disable UDP checksums (if nochecksums is set, then no checkums will
+; be calculated/checked on systems supporting this feature)
+;
+;nochecksums=no
+;
+;
+; For increased security against brute force password attacks
+; enable "delayreject" which will delay the sending of authentication
+; reject for REGREQ or AUTHREP if there is a password.
+;
+;delayreject=yes
+;
+; You may specify a global default AMA flag for iaxtel calls. It must be
+; one of 'default', 'omit', 'billing', or 'documentation'. These flags
+; are used in the generation of call detail records.
+;
+;amaflags=default
+;
+; ADSI (Analog Display Services Interface) can be enabled if you have
+; (or may have) ADSI compatible CPE equipment
+;
+;adsi=no
+;
+; Perform an SRV lookup on outbound calls
+;
+;srvlookup=yes
+;
+; You may specify a default account for Call Detail Records in addition
+; to specifying on a per-user basis
+;
+;accountcode=lss0101
+;
+; You may specify a global default language for users.
+; Can be specified also on a per-user basis
+; If omitted, will fallback to english
+;
+;language=en
+;
+; This option specifies a preference for which music on hold class this channel
+; should listen to when put on hold if the music class has not been set on the
+; channel with Set(CHANNEL(musicclass)=whatever) in the dialplan, and the peer
+; channel putting this one on hold did not suggest a music class.
+;
+; If this option is set to "passthrough", then the hold message will always be
+; passed through as signalling instead of generating hold music locally.
+;
+; This option may be specified globally, or on a per-user or per-peer basis.
+;
+;mohinterpret=default
+;
+; This option specifies which music on hold class to suggest to the peer channel
+; when this channel places the peer on hold. It may be specified globally or on
+; a per-user or per-peer basis.
+;
+;mohsuggest=default
+;
+; Specify bandwidth of low, medium, or high to control which codecs are used
+; in general.
+;
+bandwidth=low
+;
+; You can also fine tune codecs here using "allow" and "disallow" clauses
+; with specific codecs. Use "all" to represent all formats.
+;
+;allow=all ; same as bandwidth=high
+;disallow=g723.1 ; Hm... Proprietary, don't use it...
+disallow=lpc10 ; Icky sound quality... Mr. Roboto.
+;allow=gsm ; Always allow GSM, it's cool :)
+;
+
+; You can adjust several parameters relating to the jitter buffer.
+; The jitter buffer's function is to compensate for varying
+; network delay.
+;
+; All the jitter buffer settings are in milliseconds.
+; The jitter buffer works for INCOMING audio - the outbound audio
+; will be dejittered by the jitter buffer at the other end.
+;
+; jitterbuffer=yes|no: global default as to whether you want
+; the jitter buffer at all.
+;
+; forcejitterbuffer=yes|no: in the ideal world, when we bridge VoIP channels
+; we don't want to do jitterbuffering on the switch, since the endpoints
+; can each handle this. However, some endpoints may have poor jitterbuffers
+; themselves, so this option will force * to always jitterbuffer, even in this
+; case.
+;
+; maxjitterbuffer: a maximum size for the jitter buffer.
+; Setting a reasonable maximum here will prevent the call delay
+; from rising to silly values in extreme situations; you'll hear
+; SOMETHING, even though it will be jittery.
+;
+; resyncthreshold: when the jitterbuffer notices a significant change in delay
+; that continues over a few frames, it will resync, assuming that the change in
+; delay was caused by a timestamping mix-up. The threshold for noticing a
+; change in delay is measured as twice the measured jitter plus this resync
+; threshold.
+; Resyncing can be disabled by setting this parameter to -1.
+;
+; maxjitterinterps: the maximum number of interpolation frames the jitterbuffer
+; should return in a row. Since some clients do not send CNG/DTX frames to
+; indicate silence, the jitterbuffer will assume silence has begun after
+; returning this many interpolations. This prevents interpolating throughout
+; a long silence.
+;
+;
+; jittertargetextra: number of milliseconds by which the new jitter buffer
+; will pad its size. the default is 40, so without modification, the new
+; jitter buffer will set its size to the jitter value plus 40 milliseconds.
+; increasing this value may help if your network normally has low jitter,
+; but occasionally has spikes.
+;
+
+jitterbuffer=no
+forcejitterbuffer=no
+;maxjitterbuffer=1000
+;maxjitterinterps=10
+;resyncthreshold=1000
+;jittertargetextra=40
+
+;trunkfreq=20 ; How frequently to send trunk msgs (in ms)
+
+; Should we send timestamps for the individual sub-frames within trunk frames?
+; There is a small bandwidth use for these (less than 1kbps/call), but they
+; ensure that frame timestamps get sent end-to-end properly. If both ends of
+; all your trunks go directly to TDM, _and_ your trunkfreq equals the frame
+; length for your codecs, you can probably suppress these. The receiver must
+; also support this feature, although they do not also need to have it enabled.
+;
+; trunktimestamps=yes
+;
+; Minimum and maximum amounts of time that IAX peers can request as
+; a registration expiration interval (in seconds).
+; minregexpire = 60
+; maxregexpire = 60
+;
+; With a large amount of traffic on IAX2 trunks, there is a risk of bad voice quality due to
+; the fact that the IAX2 trunking scheme depends on the Linux system to handle fragmentation of
+; UDP packets. This may not be very efficient.
+; This setting sets the maximum transmission unit for IAX2 UDP trunking.
+; default is 1240 bytes. Zero disables this functionality and let's the O/S handle fragmentation.
+;
+; trunkmtu = 0
+;
+
+; This option defines the maximum size an IAX2 trunk can grow to. The default value is 128000 bytes which
+; represents 40ms uncompressed linear with 200 channels. Depending on different things though
+; (codec in use and channels) you may need to make this value larger.
+; trunkmaxsize = 128000
+
+; IAX helper threads
+
+; Establishes the number of iax helper threads to handle I/O.
+; iaxthreadcount = 10
+; Establishes the number of extra dynamic threads that may be spawned to handle I/O
+; iaxmaxthreadcount = 100
+;
+; We can register with another IAX server to let him know where we are
+; in case we have a dynamic IP address for example
+;
+; Register with tormenta using username marko and password secretpass
+;
+;register => marko:secretpass@tormenta.linux-support.net
+;
+; Register joe at remote host with no password
+;
+;register => joe@remotehost:5656
+;
+; Register marko at tormenta.linux-support.net using RSA key "torkey"
+;
+;register => marko:[torkey]@tormenta.linux-support.net
+;
+; Sample Registration for iaxtel
+;
+; Visit http://www.iaxtel.com to register with iaxtel. Replace "user"
+; and "pass" with your username and password for iaxtel. Incoming
+; calls arrive at the "s" extension of "default" context.
+;
+;register => user:pass@iaxtel.com
+;
+; Sample Registration for IAX + FWD
+;
+; To register using IAX with FWD, it must be enabled by visiting the URL
+; http://www.fwdnet.net/index.php?section_id=112
+;
+; Note that you need an extension in you default context which matches
+; your free world dialup number. Please replace "FWDNumber" with your
+; FWD number and "passwd" with your password.
+;
+;register => FWDNumber:passwd@iax.fwdnet.net
+;
+;
+; You can disable authentication debugging to reduce the amount of
+; debugging traffic.
+;
+;authdebug=no
+;
+; See qos.tex or Quality of Service section of asterisk.pdf for a description of these parameters.
+;tos=ef
+;cos=5
+;
+; If regcontext is specified, Asterisk will dynamically create and destroy
+; a NoOp priority 1 extension for a given peer who registers or unregisters
+; with us. The actual extension is the 'regexten' parameter of the registering
+; peer or its name if 'regexten' is not provided. More than one regexten
+; may be supplied if they are separated by '&'. Patterns may be used in
+; regexten.
+;
+;regcontext=iaxregistrations
+;
+; If we don't get ACK to our NEW within 2000ms, and autokill is set to yes,
+; then we cancel the whole thing (that's enough time for one retransmission
+; only). This is used to keep things from stalling for a long time for a host
+; that is not available, but would be ill advised for bad connections. In
+; addition to 'yes' or 'no' you can also specify a number of milliseconds.
+; See 'qualify' for individual peers to turn on for just a specific peer.
+;
+autokill=yes
+;
+; codecpriority controls the codec negotiation of an inbound IAX call.
+; This option is inherited to all user entities. It can also be defined
+; in each user entity separately which will override the setting in general.
+;
+; The valid values are:
+;
+; caller - Consider the callers preferred order ahead of the host's.
+; host - Consider the host's preferred order ahead of the caller's.
+; disabled - Disable the consideration of codec preference altogether.
+; (this is the original behaviour before preferences were added)
+; reqonly - Same as disabled, only do not consider capabilities if
+; the requested format is not available the call will only
+; be accepted if the requested format is available.
+;
+; The default value is 'host'
+;
+;codecpriority=host
+
+;rtcachefriends=yes ; Cache realtime friends by adding them to the internal list
+ ; just like friends added from the config file only on a
+ ; as-needed basis? (yes|no)
+
+;rtupdate=yes ; Send registry updates to database using realtime? (yes|no)
+ ; If set to yes, when a IAX2 peer registers successfully,
+ ; the ip address, the origination port, the registration period,
+ ; and the username of the peer will be set to database via realtime.
+ ; If not present, defaults to 'yes'.
+
+;rtautoclear=yes ; Auto-Expire friends created on the fly on the same schedule
+ ; as if it had just registered? (yes|no|<seconds>)
+ ; If set to yes, when the registration expires, the friend will
+ ; vanish from the configuration until requested again.
+ ; If set to an integer, friends expire within this number of
+ ; seconds instead of the registration interval.
+
+;rtignoreregexpire=yes ; When reading a peer from Realtime, if the peer's registration
+ ; has expired based on its registration interval, used the stored
+ ; address information regardless. (yes|no)
+
+; Guest sections for unauthenticated connection attempts. Just specify an
+; empty secret, or provide no secret section.
+;
+[guest]
+type=user
+context=default
+callerid="Guest IAX User"
+
+;
+; Trust Caller*ID Coming from iaxtel.com
+;
+[iaxtel]
+type=user
+context=default
+auth=rsa
+inkeys=iaxtel
+
+;
+; Trust Caller*ID Coming from iax.fwdnet.net
+;
+[iaxfwd]
+type=user
+context=default
+auth=rsa
+inkeys=freeworlddialup
+
+;
+; Trust callerid delivered over DUNDi/e164
+;
+;
+;[dundi]
+;type=user
+;dbsecret=dundi/secret
+;context=dundi-e164-local
+
+;
+; Further user sections may be added, specifying a context and a secret used
+; for connections with that given authentication name. Limited IP based
+; access control is allowed by use of "allow" and "deny" keywords. Multiple
+; rules are permitted. Multiple permitted contexts may be specified, in
+; which case the first will be the default. You can also override caller*ID
+; so that when you receive a call you set the Caller*ID to be what you want
+; instead of trusting what the remote user provides
+;
+; There are three authentication methods that are supported: md5, plaintext,
+; and rsa. The least secure is "plaintext", which sends passwords cleartext
+; across the net. "md5" uses a challenge/response md5 sum arrangement, but
+; still requires both ends have plain text access to the secret. "rsa" allows
+; unidirectional secret knowledge through public/private keys. If "rsa"
+; authentication is used, "inkeys" is a list of acceptable public keys on the
+; local system that can be used to authenticate the remote peer, separated by
+; the ":" character. "outkey" is a single, private key to use to authenticate
+; to the other side. Public keys are named /var/lib/asterisk/keys/<name>.pub
+; while private keys are named /var/lib/asterisk/keys/<name>.key. Private
+; keys should always be 3DES encrypted.
+;
+;
+; NOTE: All hostnames and IP addresses in this file are for example purposes
+; only; you should not expect any of them to actually be available for
+; your use.
+;
+;
+;[markster]
+;type=user
+;context=default
+;context=local
+;auth=md5,plaintext,rsa
+;secret=markpasswd
+;setvar=foo=bar
+;dbsecret=mysecrets/place ; Secrets can be stored in astdb, too
+;transfer=no ; Disable IAX native transfer
+;transfer=mediaonly ; When doing IAX native transfers, transfer
+ ; only media stream
+;jitterbuffer=yes ; Override global setting an enable jitter buffer
+; ; for this user
+;maxauthreq=10 ; Set maximum number of outstanding AUTHREQs waiting for replies. Any further authentication attempts will be blocked
+; ; if this limit is reached until they expire or a reply is received.
+;callerid="Mark Spencer" <(256) 428-6275>
+;deny=0.0.0.0/0.0.0.0
+;accountcode=markster0101
+;permit=209.16.236.73/255.255.255.0
+;language=en ; Use english as default language
+;
+; Peers may also be specified, with a secret and
+; a remote hostname.
+;
+[demo]
+type=peer
+username=asterisk
+secret=supersecret
+host=216.207.245.47
+;sendani=no
+;host=asterisk.linux-support.net
+;port=5036
+;mask=255.255.255.255
+;qualify=yes ; Make sure this peer is alive
+;qualifysmoothing = yes ; use an average of the last two PONG
+ ; results to reduce falsely detected LAGGED hosts
+ ; Default: Off
+;qualifyfreqok = 60000 ; how frequently to ping the peer when
+ ; everything seems to be ok, in milliseconds
+;qualifyfreqnotok = 10000 ; how frequently to ping the peer when it's
+ ; either LAGGED or UNAVAILABLE, in milliseconds
+;jitterbuffer=no ; Turn off jitter buffer for this peer
+
+;
+; Peers can remotely register as well, so that they can be mobile. Default
+; IP's can also optionally be given but are not required. Caller*ID can be
+; suggested to the other side as well if it is for example a phone instead of
+; another PBX.
+;
+
+;[dynamichost]
+;host=dynamic
+;secret=mysecret
+;mailbox=1234 ; Notify about mailbox 1234
+;inkeys=key1:key2
+;peercontext=local ; Default context to request for calls to peer
+;defaultip=216.207.245.34
+;callerid="Some Host" <(256) 428-6011>
+;
+
+;
+;[biggateway]
+;type=peer
+;host=192.168.0.1
+;context=*
+;secret=myscret
+;trunk=yes ; Use IAX2 trunking with this host
+;timezone=America/New_York ; Set a timezone for the date/time IE
+;
+
+;
+; Friends are a short cut for creating a user and
+; a peer with the same values.
+;
+;[marko]
+;type=friend
+;host=dynamic
+;regexten=1234
+;secret=moofoo ; Multiple secrets may be specified. For a "user", all
+;secret=foomoo ; specified entries will be accepted as valid. For a "peer",
+;secret=shazbot ; only the last specified secret will be used.
+;context=default
+;permit=0.0.0.0/0.0.0.0
+
diff --git a/trunk/configs/iaxprov.conf.sample b/trunk/configs/iaxprov.conf.sample
new file mode 100644
index 000000000..06891d785
--- /dev/null
+++ b/trunk/configs/iaxprov.conf.sample
@@ -0,0 +1,81 @@
+;
+; IAX2 Provisioning Information
+;
+; Contains provisioning information for templates and for specific service
+; entries.
+;
+; Templates provide a group of settings from which provisioning takes place.
+; A template may be based upon any template that has been specified before
+; it. If the template that an entry is based on is not specified then it is
+; presumed to be 'default' (unless it is the first of course).
+;
+; Templates which begin with 'si-' are used for provisioning units with
+; specific service identifiers. For example the entry "si-000364000126"
+; would be used when the device with the corresponding service identifier of
+; "000364000126" attempts to register or make a call.
+;
+[default]
+;
+; The port number the device should use to bind to. The default is 4569.
+;
+;port=4569
+;
+; server is our PRIMARY server for registration and placing calls
+;
+;server=192.168.69.3
+;
+; altserver is the BACKUP server for registration and placing calls in the
+; event the primary server is unavailable.
+;
+;altserver=192.168.69.4
+;
+; port is the port number to use for IAX2 outbound. The connections to the
+; server and altserver -- default is of course 4569.
+;serverport=4569
+;
+; language is the preferred language for the device
+;
+;language=en
+;
+; codec is the requested codec. The iaxy supports ulaw and adpcm
+;
+codec=ulaw
+;
+; flags is a comma separated list of flags which the device should
+; use and may contain any of the following keywords:
+;
+; "register" - Register with server
+; "secure" - Do not accept calls / provisioning not originated by the server
+; "heartbeat" - Generate status packets on port 9999 sent to 255.255.255.255
+; "debug" - Output extra debugging to port 9999
+;
+; Note that use can use += and -= to adjust parameters
+;
+flags=register,heartbeat
+;
+; See qos.tex or Quality of Service section of asterisk.pdf for a description of this parameter.
+;tos=ef
+;
+; Example iaxy provisioning
+;
+;[si-000364000126]
+;user=iaxy
+;pass=bitsy
+;flags += debug
+
+;[si-000364000127]
+;user=iaxy2
+;pass=bitsy2
+;template=si-000364000126
+;flags += debug
+
+;
+;[*]
+;
+; If specified, the '*' provisioning is used for all devices which do not
+; have another provisioning entry within the file. If unspecified, no
+; provisioning will take place for devices which have no entry. DO NOT
+; USE A '*' PROVISIONING ENTRY UNLESS YOU KNOW WHAT YOU'RE DOING.
+;
+;template=default
+
diff --git a/trunk/configs/indications.conf.sample b/trunk/configs/indications.conf.sample
new file mode 100644
index 000000000..03a3fadb5
--- /dev/null
+++ b/trunk/configs/indications.conf.sample
@@ -0,0 +1,733 @@
+; indications.conf
+; Configuration file for location specific tone indications
+; used by the pbx_indications module.
+;
+; NOTE:
+; When adding countries to this file, please keep them in alphabetical
+; order according to the 2-character country codes!
+;
+; The [general] category is for certain global variables.
+; All other categories are interpreted as location specific indications
+;
+;
+[general]
+country=us ; default location
+
+
+; [example]
+; description = string
+; The full name of your country, in English.
+; alias = iso[,iso]*
+; List of other countries 2-letter iso codes, which have the same
+; tone indications.
+; ringcadence = num[,num]*
+; List of durations the physical bell rings.
+; dial = tonelist
+; Set of tones to be played when one picks up the hook.
+; busy = tonelist
+; Set of tones played when the receiving end is busy.
+; congestion = tonelist
+; Set of tones played when there is some congestion (on the network?)
+; callwaiting = tonelist
+; Set of tones played when there is a call waiting in the background.
+; dialrecall = tonelist
+; Not well defined; many phone systems play a recall dial tone after hook
+; flash.
+; record = tonelist
+; Set of tones played when call recording is in progress.
+; info = tonelist
+; Set of tones played with special information messages (e.g., "number is
+; out of service")
+; 'name' = tonelist
+; Every other variable will be available as a shortcut for the "PlayList" command
+; but will not be used automatically by Asterisk.
+;
+;
+; The tonelist itself is defined by a comma-separated sequence of elements.
+; Each element consist of a frequency (f) with an optional duration (in ms)
+; attached to it (f/duration). The frequency component may be a mixture of two
+; frequencies (f1+f2) or a frequency modulated by another frequency (f1*f2).
+; The implicit modulation depth is fixed at 90%, though.
+; If the list element starts with a !, that element is NOT repeated,
+; therefore, only if all elements start with !, the tonelist is time-limited,
+; all others will repeat indefinitely.
+;
+; concisely:
+; element = [!]freq[+|*freq2][/duration]
+; tonelist = element[,element]*
+;
+; Please note that SPACES ARE NOT ALLOWED in tone lists!
+;
+
+[at]
+description = Austria
+ringcadence = 1000,5000
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+dial = 420
+busy = 420/400,0/400
+ring = 420/1000,0/5000
+congestion = 420/200,0/200
+callwaiting = 420/40,0/1960
+dialrecall = 420
+; RECORDTONE - not specified
+record = 1400/80,0/14920
+info = 950/330,1450/330,1850/330,0/1000
+stutter = 380+420
+
+[au]
+description = Australia
+; Reference http://www.acif.org.au/__data/page/3303/S002_2001.pdf
+; Normal Ring
+ringcadence = 400,200,400,2000
+; Distinctive Ring 1 - Forwarded Calls
+; 400,400,200,200,400,1400
+; Distinctive Ring 2 - Selective Ring 2 + Operator + Recall
+; 400,400,200,2000
+; Distinctive Ring 3 - Multiple Subscriber Number 1
+; 200,200,400,2200
+; Distinctive Ring 4 - Selective Ring 1 + Centrex
+; 400,2600
+; Distinctive Ring 5 - Selective Ring 3
+; 400,400,200,400,200,1400
+; Distinctive Ring 6 - Multiple Subscriber Number 2
+; 200,400,200,200,400,1600
+; Distinctive Ring 7 - Multiple Subscriber Number 3 + Data Privacy
+; 200,400,200,400,200,1600
+; Tones
+dial = 413+438
+busy = 425/375,0/375
+ring = 413+438/400,0/200,413+438/400,0/2000
+; XXX Congestion: Should reduce by 10 db every other cadence XXX
+congestion = 425/375,0/375,420/375,0/375
+callwaiting = 425/200,0/200,425/200,0/4400
+dialrecall = 413+438
+; Record tone used for Call Intrusion/Recording or Conference
+record = !425/1000,!0/15000,425/360,0/15000
+info = 425/2500,0/500
+; Other Australian Tones
+; The STD "pips" indicate the call is not an untimed local call
+std = !525/100,!0/100,!525/100,!0/100,!525/100,!0/100,!525/100,!0/100,!525/100
+; Facility confirmation tone (eg. Call Forward Activated)
+facility = 425
+; Message Waiting "stutter" dialtone
+stutter = 413+438/100,0/40
+; Ringtone for calls to Telstra mobiles
+ringmobile = 400+450/400,0/200,400+450/400,0/2000
+
+[bg]
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+description = Bulgaria
+ringdance = 1000,4000
+;
+dial = 425
+busy = 425/500,0/500
+ring = 425/1000,0/4000
+congestion = 425/250,0/250
+callwaiting = 425/150,0/150,425/150,0/4000
+dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+record = 1400/425,0/15000
+info = 950/330,1400/330,1800/330,0/1000
+stutter = 425/1500,0/100
+
+[br]
+description = Brazil
+ringcadence = 1000,4000
+dial = 425
+busy = 425/250,0/250
+ring = 425/1000,0/4000
+congestion = 425/250,0/250,425/750,0/250
+callwaiting = 425/50,0/1000
+; Dialrecall not used in Brazil standard (using UK standard)
+dialrecall = 350+440
+; Record tone is not used in Brazil, use busy tone
+record = 425/250,0/250
+; Info not used in Brazil standard (using UK standard)
+info = 950/330,1400/330,1800/330
+stutter = 350+440
+
+[be]
+description = Belgium
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1000,3000
+dial = 425
+busy = 425/500,0/500
+ring = 425/1000,0/3000
+congestion = 425/167,0/167
+callwaiting = 1400/175,0/175,1400/175,0/3500
+; DIALRECALL - not specified
+dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440"
+; RECORDTONE - not specified
+record = 1400/500,0/15000
+info = 900/330,1400/330,1800/330,0/1000
+stutter = 425/1000,0/250
+
+[ch]
+description = Switzerland
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1000,4000
+dial = 425
+busy = 425/500,0/500
+ring = 425/1000,0/4000
+congestion = 425/200,0/200
+callwaiting = 425/200,0/200,425/200,0/4000
+; DIALRECALL - not specified
+dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+; RECORDTONE - not specified
+record = 1400/80,0/15000
+info = 950/330,1400/330,1800/330,0/1000
+stutter = 425+340/1100,0/1100
+
+[cl]
+description = Chile
+; According to specs from Telefonica CTC Chile
+ringcadence = 1000,3000
+dial = 400
+busy = 400/500,0/500
+ring = 400/1000,0/3000
+congestion = 400/200,0/200
+callwaiting = 400/250,0/8750
+dialrecall = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
+record = 1400/500,0/15000
+info = 950/333,1400/333,1800/333,0/1000
+stutter = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
+
+[cn]
+description = China
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1000,4000
+dial = 450
+busy = 450/350,0/350
+ring = 450/1000,0/4000
+congestion = 450/700,0/700
+callwaiting = 450/400,0/4000
+dialrecall = 450
+record = 950/400,0/10000
+info = 450/100,0/100,450/100,0/100,450/100,0/100,450/400,0/400
+; STUTTER - not specified
+stutter = 450+425
+
+[cz]
+description = Czech Republic
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1000,4000
+dial = 425/330,0/330,425/660,0/660
+busy = 425/330,0/330
+ring = 425/1000,0/4000
+congestion = 425/165,0/165
+callwaiting = 425/330,0/9000
+; DIALRECALL - not specified
+dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425/330,0/330,425/660,0/660
+; RECORDTONE - not specified
+record = 1400/500,0/14000
+info = 950/330,0/30,1400/330,0/30,1800/330,0/1000
+; STUTTER - not specified
+stutter = 425/450,0/50
+
+[de]
+description = Germany
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1000,4000
+dial = 425
+busy = 425/480,0/480
+ring = 425/1000,0/4000
+congestion = 425/240,0/240
+callwaiting = !425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,0
+; DIALRECALL - not specified
+dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+; RECORDTONE - not specified
+record = 1400/80,0/15000
+info = 950/330,1400/330,1800/330,0/1000
+stutter = 425+400
+
+[dk]
+description = Denmark
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1000,4000
+dial = 425
+busy = 425/500,0/500
+ring = 425/1000,0/4000
+congestion = 425/200,0/200
+callwaiting = !425/200,!0/600,!425/200,!0/3000,!425/200,!0/200,!425/200,0
+; DIALRECALL - not specified
+dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+; RECORDTONE - not specified
+record = 1400/80,0/15000
+info = 950/330,1400/330,1800/330,0/1000
+; STUTTER - not specified
+stutter = 425/450,0/50
+
+[ee]
+description = Estonia
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1000,4000
+dial = 425
+busy = 425/300,0/300
+ring = 425/1000,0/4000
+congestion = 425/200,0/200
+; CALLWAIT not in accordance to ITU
+callwaiting = 950/650,0/325,950/325,0/30,1400/1300,0/2600
+; DIALRECALL - not specified
+dialrecall = 425/650,0/25
+; RECORDTONE - not specified
+record = 1400/500,0/15000
+; INFO not in accordance to ITU
+info = 950/650,0/325,950/325,0/30,1400/1300,0/2600
+; STUTTER not specified
+stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+
+[es]
+description = Spain
+ringcadence = 1500,3000
+dial = 425
+busy = 425/200,0/200
+ring = 425/1500,0/3000
+congestion = 425/200,0/200,425/200,0/200,425/200,0/600
+callwaiting = 425/175,0/175,425/175,0/3500
+dialrecall = !425/200,!0/200,!425/200,!0/200,!425/200,!0/200,425
+record = 1400/500,0/15000
+info = 950/330,0/1000
+dialout = 500
+
+
+[fi]
+description = Finland
+ringcadence = 1000,4000
+dial = 425
+busy = 425/300,0/300
+ring = 425/1000,0/4000
+congestion = 425/200,0/200
+callwaiting = 425/150,0/150,425/150,0/8000
+dialrecall = 425/650,0/25
+record = 1400/500,0/15000
+info = 950/650,0/325,950/325,0/30,1400/1300,0/2600
+stutter = 425/650,0/25
+
+[fr]
+description = France
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1500,3500
+; Dialtone can also be 440+330
+dial = 440
+busy = 440/500,0/500
+ring = 440/1500,0/3500
+; CONGESTION - not specified
+congestion = 440/250,0/250
+callwait = 440/300,0/10000
+; DIALRECALL - not specified
+dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+; RECORDTONE - not specified
+record = 1400/500,0/15000
+info = !950/330,!1400/330,!1800/330
+stutter = !440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,440
+
+[gr]
+description = Greece
+ringcadence = 1000,4000
+dial = 425/200,0/300,425/700,0/800
+busy = 425/300,0/300
+ring = 425/1000,0/4000
+congestion = 425/200,0/200
+callwaiting = 425/150,0/150,425/150,0/8000
+dialrecall = 425/650,0/25
+record = 1400/400,0/15000
+info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
+stutter = 425/650,0/25
+
+[hu]
+description = Hungary
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1250,3750
+dial = 425
+busy = 425/300,0/300
+ring = 425/1250,0/3750
+congestion = 425/300,0/300
+callwaiting = 425/40,0/1960
+dialrecall = 425+450
+; RECORDTONE - not specified
+record = 1400/400,0/15000
+info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
+stutter = 350+375+400
+
+[il]
+description = Israel
+ringcadence = 1000,3000
+dial = 414
+busy = 414/500,0/500
+ring = 414/1000,0/3000
+congestion = 414/250,0/250
+callwaiting = 414/100,0/100,414/100,0/100,414/600,0/3000
+dialrecall = !414/100,!0/100,!414/100,!0/100,!414/100,!0/100,414
+record = 1400/500,0/15000
+info = 1000/330,1400/330,1800/330,0/1000
+stutter = !414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,414
+
+
+[in]
+description = India
+ringcadence = 400,200,400,2000
+dial = 400*25
+busy = 400/750,0/750
+ring = 400*25/400,0/200,400*25/400,0/2000
+congestion = 400/250,0/250
+callwaiting = 400/200,0/100,400/200,0/7500
+dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+record = 1400/500,0/15000
+info = !950/330,!1400/330,!1800/330,0/1000
+stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+
+[it]
+description = Italy
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1000,4000
+dial = 425/200,0/200,425/600,0/1000
+busy = 425/500,0/500
+ring = 425/1000,0/4000
+congestion = 425/200,0/200
+callwaiting = 425/400,0/100,425/250,0/100,425/150,0/14000
+dialrecall = 470/400,425/400
+record = 1400/400,0/15000
+info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
+stutter = 470/400,425/400
+
+[lt]
+description = Lithuania
+ringcadence = 1000,4000
+dial = 425
+busy = 425/350,0/350
+ring = 425/1000,0/4000
+congestion = 425/200,0/200
+callwaiting = 425/150,0/150,425/150,0/4000
+; DIALRECALL - not specified
+dialrecall = 425/500,0/50
+; RECORDTONE - not specified
+record = 1400/500,0/15000
+info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
+; STUTTER - not specified
+stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+
+[jp]
+description = Japan
+ringcadence = 1000,2000
+dial = 400
+busy = 400/500,0/500
+ring = 400+15/1000,0/2000
+congestion = 400/500,0/500
+callwaiting = 400+16/500,0/8000
+dialrecall = !400/200,!0/200,!400/200,!0/200,!400/200,!0/200,400
+record = 1400/500,0/15000
+info = !950/330,!1400/330,!1800/330,0
+stutter = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
+
+[mx]
+description = Mexico
+ringcadence = 2000,4000
+dial = 425
+busy = 425/250,0/250
+ring = 425/1000,0/4000
+congestion = 425/250,0/250
+callwaiting = 425/200,0/600,425/200,0/10000
+dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+record = 1400/500,0/15000
+info = 950/330,0/30,1400/330,0/30,1800/330,0/1000
+stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+
+[my]
+description = Malaysia
+ringcadence = 2000,4000
+dial = 425
+busy = 425/500,0/500
+ring = 425/400,0/200
+congestion = 425/500,0/500
+
+[nl]
+description = Netherlands
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+ringcadence = 1000,4000
+; Most of these 425's can also be 450's
+dial = 425
+busy = 425/500,0/500
+ring = 425/1000,0/4000
+congestion = 425/250,0/250
+callwaiting = 425/500,0/9500
+; DIALRECALL - not specified
+dialrecall = 425/500,0/50
+; RECORDTONE - not specified
+record = 1400/500,0/15000
+info = 950/330,1400/330,1800/330,0/1000
+stutter = 425/500,0/50
+
+[no]
+description = Norway
+ringcadence = 1000,4000
+dial = 425
+busy = 425/500,0/500
+ring = 425/1000,0/4000
+congestion = 425/200,0/200
+callwaiting = 425/200,0/600,425/200,0/10000
+dialrecall = 470/400,425/400
+record = 1400/400,0/15000
+info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
+stutter = 470/400,425/400
+
+[nz]
+description = New Zealand
+;NOTE - the ITU has different tonesets for NZ, but according to some residents there,
+; this is, indeed, the correct way to do it.
+ringcadence = 400,200,400,2000
+dial = 400
+busy = 400/250,0/250
+ring = 400+450/400,0/200,400+450/400,0/2000
+congestion = 400/375,0/375
+callwaiting = !400/200,!0/3000,!400/200,!0/3000,!400/200,!0/3000,!400/200
+dialrecall = !400/100!0/100,!400/100,!0/100,!400/100,!0/100,400
+record = 1400/425,0/15000
+info = 400/750,0/100,400/750,0/100,400/750,0/100,400/750,0/400
+stutter = !400/100!0/100,!400/100,!0/100,!400/100,!0/100,!400/100!0/100,!400/100,!0/100,!400/100,!0/100,400
+unobtainable = 400/75,0/100,400/75,0/100,400/75,0/100,400/75,0/400
+
+[ph]
+
+; reference http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+
+description = Philippines
+ringcadence = 1000,4000
+dial = 425
+busy = 480+620/500,0/500
+ring = 425+480/1000,0/4000
+congestion = 480+620/250,0/250
+callwaiting = 440/300,0/10000
+; DIALRECALL - not specified
+dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+; RECORDTONE - not specified
+record = 1400/500,0/15000
+; INFO - not specified
+info = !950/330,!1400/330,!1800/330,0
+; STUTTER - not specified
+stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+
+
+[pl]
+description = Poland
+ringcadence = 1000,4000
+dial = 425
+busy = 425/500,0/500
+ring = 425/1000,0/4000
+congestion = 425/500,0/500
+callwaiting = 425/150,0/150,425/150,0/4000
+; DIALRECALL - not specified
+dialrecall = 425/500,0/50
+; RECORDTONE - not specified
+record = 1400/500,0/15000
+; 950/1400/1800 3x0.33 on 1.0 off repeated 3 times
+info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000
+; STUTTER - not specified
+stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+
+[pt]
+description = Portugal
+ringcadence = 1000,5000
+dial = 425
+busy = 425/500,0/500
+ring = 425/1000,0/5000
+congestion = 425/200,0/200
+callwaiting = 440/300,0/10000
+dialrecall = 425/1000,0/200
+record = 1400/500,0/15000
+info = 950/330,1400/330,1800/330,0/1000
+stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+
+[ru]
+; References:
+; http://www.minsvyaz.ru/site.shtml?id=1806
+; http://www.aboutphone.info/lib/gost/45-223-2001.html
+description = Russian Federation / ex Soviet Union
+ringcadence = 1000,4000
+dial = 425
+busy = 425/350,0/350
+ring = 425/1000,0/4000
+congestion = 425/175,0/175
+callwaiting = 425/200,0/5000
+record = 1400/400,0/15000
+info = 950/330,1400/330,1800/330,0/1000
+dialrecall = 425/400,0/40
+stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+
+[se]
+description = Sweden
+ringcadence = 1000,5000
+dial = 425
+busy = 425/250,0/250
+ring = 425/1000,0/5000
+congestion = 425/250,0/750
+callwaiting = 425/200,0/500,425/200,0/9100
+dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+record = 1400/500,0/15000
+info = !950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,0
+stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
+; stutter = 425/320,0/20 ; Real swedish standard, not used for now
+
+[sg]
+description = Singapore
+; Singapore
+; Reference: http://www.ida.gov.sg/idaweb/doc/download/I397/ida_ts_pstn1_i4r2.pdf
+; Frequency specs are: 425 Hz +/- 20Hz; 24 Hz +/- 2Hz; modulation depth 100%; SIT +/- 50Hz
+ringcadence = 400,200,400,2000
+dial = 425
+ring = 425*24/400,0/200,425*24/400,0/2000 ; modulation should be 100%, not 90%
+busy = 425/750,0/750
+congestion = 425/250,0/250
+callwaiting = 425*24/300,0/200,425*24/300,0/3200
+stutter = !425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,425
+info = 950/330,1400/330,1800/330,0/1000 ; not currently in use acc. to reference
+dialrecall = 425*24/500,0/500,425/500,0/2500 ; unspecified in IDA reference, use repeating Holding Tone A,B
+record = 1400/500,0/15000 ; unspecified in IDA reference, use 0.5s tone every 15s
+; additionally defined in reference
+nutone = 425/2500,0/500
+intrusion = 425/250,0/2000
+warning = 425/624,0/4376 ; end of period tone, warning
+acceptance = 425/125,0/125
+holdinga = !425*24/500,!0/500 ; followed by holdingb
+holdingb = !425/500,!0/2500
+
+[th]
+description = Thailand
+ringcadence = 1000,4000
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+dial = 400*50
+busy = 400/500,0/500
+ring = 420/1000,0/5000
+congestion = 400/300,0/300
+callwaiting = 1000/400,10000/400,1000/400
+; DIALRECALL - not specified - use special dial tone instead.
+dialrecall = 400*50/400,0/100,400*50/400,0/100
+; RECORDTONE - not specified
+record = 1400/500,0/15000
+; INFO - specified as an announcement - use special information tones instead
+info = 950/330,1400/330,1800/330
+; STUTTER - not specified
+stutter = !400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,400
+
+[uk]
+description = United Kingdom
+ringcadence = 400,200,400,2000
+; These are the official tones taken from BT SIN350. The actual tones
+; used by BT include some volume differences so sound slightly different
+; from Asterisk-generated ones.
+dial = 350+440
+; Special dial is the intermittent dial tone heard when, for example,
+; you have a divert active on the line
+specialdial = 350+440/750,440/750
+; Busy is also called "Engaged"
+busy = 400/375,0/375
+; "Congestion" is the Beep-bip engaged tone
+congestion = 400/400,0/350,400/225,0/525
+; "Special Congestion" is not used by BT very often if at all
+specialcongestion = 400/200,1004/300
+unobtainable = 400
+ring = 400+450/400,0/200,400+450/400,0/2000
+callwaiting = 400/100,0/4000
+; BT seem to use "Special Call Waiting" rather than just "Call Waiting" tones
+specialcallwaiting = 400/250,0/250,400/250,0/250,400/250,0/5000
+; "Pips" used by BT on payphones. (Sounds wrong, but this is what BT claim it
+; is and I've not used a payphone for years)
+creditexpired = 400/125,0/125
+; These two are used to confirm/reject service requests on exchanges that
+; don't do voice announcements.
+confirm = 1400
+switching = 400/200,0/400,400/2000,0/400
+; This is the three rising tones Doo-dah-dee "Special Information Tone",
+; usually followed by the BT woman saying an appropriate message.
+info = 950/330,0/15,1400/330,0/15,1800/330,0/1000
+; Not listed in SIN350
+record = 1400/500,0/60000
+stutter = 350+440/750,440/750
+
+[us]
+description = United States / North America
+ringcadence = 2000,4000
+dial = 350+440
+busy = 480+620/500,0/500
+ring = 440+480/2000,0/4000
+congestion = 480+620/250,0/250
+callwaiting = 440/300,0/10000
+dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+record = 1400/500,0/15000
+info = !950/330,!1400/330,!1800/330,0
+stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+
+[us-old]
+description = United States Circa 1950/ North America
+ringcadence = 2000,4000
+dial = 600*120
+busy = 500*100/500,0/500
+ring = 420*40/2000,0/4000
+congestion = 500*100/250,0/250
+callwaiting = 440/300,0/10000
+dialrecall = !600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120
+record = 1400/500,0/15000
+info = !950/330,!1400/330,!1800/330,0
+stutter = !600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120
+
+[tw]
+description = Taiwan
+; http://nemesis.lonestar.org/reference/telecom/signaling/dialtone.html
+; http://nemesis.lonestar.org/reference/telecom/signaling/busy.html
+; http://www.iproducts.com.tw/ee/kylink/06ky-1000a.htm
+; http://www.pbx-manufacturer.com/ky120dx.htm
+; http://www.nettwerked.net/tones.txt
+; http://www.cisco.com/univercd/cc/td/doc/product/tel_pswt/vco_prod/taiw_sup/taiw2.htm
+;
+; busy tone 480+620Hz 0.5 sec. on ,0.5 sec. off
+; reorder tone 480+620Hz 0.25 sec. on,0.25 sec. off
+; ringing tone 440+480Hz 1 sec. on ,2 sec. off
+;
+ringcadence = 1000,4000
+dial = 350+440
+busy = 480+620/500,0/500
+ring = 440+480/1000,0/2000
+congestion = 480+620/250,0/250
+callwaiting = 350+440/250,0/250,350+440/250,0/3250
+dialrecall = 300/1500,0/500
+record = 1400/500,0/15000
+info = !950/330,!1400/330,!1800/330,0
+stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
+
+[ve]
+; Tone definition source for ve found on
+; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
+description = Venezuela / South America
+ringcadence = 1000,4000
+dial = 425
+busy = 425/500,0/500
+ring = 425/1000,0/4000
+congestion = 425/250,0/250
+callwaiting = 400+450/300,0/6000
+dialrecall = 425
+record = 1400/500,0/15000
+info = !950/330,!1440/330,!1800/330,0/1000
+
+
+[za]
+description = South Africa
+; http://www.cisco.com/univercd/cc/td/doc/product/tel_pswt/vco_prod/safr_sup/saf02.htm
+; (definitions for other countries can also be found there)
+; Note, though, that South Africa uses two switch types in their network --
+; Alcatel switches -- mainly in the Western Cape, and Siemens elsewhere.
+; The former use 383+417 in dial, ringback etc. The latter use 400*33
+; I've provided both, uncomment the ones you prefer
+ringcadence = 400,200,400,2000
+; dial/ring/callwaiting for the Siemens switches:
+dial = 400*33
+ring = 400*33/400,0/200,400*33/400,0/2000
+callwaiting = 400*33/250,0/250,400*33/250,0/250,400*33/250,0/250,400*33/250,0/250
+; dial/ring/callwaiting for the Alcatel switches:
+; dial = 383+417
+; ring = 383+417/400,0/200,383+417/400,0/2000
+; callwaiting = 383+417/250,0/250,383+417/250,0/250,383+417/250,0/250,383+417/250,0/250
+congestion = 400/250,0/250
+busy = 400/500,0/500
+dialrecall = 350+440
+; XXX Not sure about the RECORDTONE
+record = 1400/500,0/10000
+info = 950/330,1400/330,1800/330,0/330
+stutter = !400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,400*33
diff --git a/trunk/configs/jabber.conf.sample b/trunk/configs/jabber.conf.sample
new file mode 100644
index 000000000..7d45083f9
--- /dev/null
+++ b/trunk/configs/jabber.conf.sample
@@ -0,0 +1,21 @@
+[general]
+;debug=yes ;;Turn on debugging by default.
+;autoprune=yes ;;Auto remove users from buddy list.
+;autoregister=yes ;;Auto register users from buddy list.
+
+;[asterisk] ;;label
+;type=client ;;Client or Component connection
+;serverhost=astjab.org ;;Route to server for example,
+ ;; talk.google.com
+;username=asterisk@astjab.org/asterisk ;;Username with optional roster.
+;secret=blah ;;Password
+;priority=1 ;;Resource priority
+;port=5222 ;;Port to use defaults to 5222
+;usetls=yes ;;Use tls or not
+;usesasl=yes ;;Use sasl or not
+;buddy=mogorman@astjab.org ;;Manual addition of buddy to list.
+;status=available ;;One of: chat, available, away,
+ ;; xaway, or dnd
+;statusmessage="I am available" ;;Have custom status message for
+ ;;Asterisk.
+;timeout=100 ;;Timeout on the message stack.
diff --git a/trunk/configs/jingle.conf.sample b/trunk/configs/jingle.conf.sample
new file mode 100644
index 000000000..da629b626
--- /dev/null
+++ b/trunk/configs/jingle.conf.sample
@@ -0,0 +1,19 @@
+;[general]
+;context=default ;;Context to dump call into
+;allowguest=yes ;;Allow calls from people not in
+ ;;list of peers
+;
+;[guest] ;;special account for options on guest account
+;disallow=all
+;allow=ulaw
+;context=guest
+;
+;[ogorman]
+;username=ogorman@gmail.com ;;username of the peer your
+ ;;calling or accepting calls from
+;disallow=all
+;allow=ulaw
+;context=default
+;connection=asterisk ;;client or component in jabber.conf
+ ;;for the call to leave on.
+;
diff --git a/trunk/configs/logger.conf.sample b/trunk/configs/logger.conf.sample
new file mode 100644
index 000000000..a441ebd8f
--- /dev/null
+++ b/trunk/configs/logger.conf.sample
@@ -0,0 +1,96 @@
+;
+; Logging Configuration
+;
+; In this file, you configure logging to files or to
+; the syslog system.
+;
+; "logger reload" at the CLI will reload configuration
+; of the logging system.
+
+[general]
+;
+; Customize the display of debug message time stamps
+; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
+;
+; see strftime(3) Linux manual for format specifiers. Note that there is also
+; a fractional second parameter which may be used in this field. Use %1q
+; for tenths, %2q for hundredths, etc.
+;
+;dateformat=%F %T ; ISO 8601 date format
+;dateformat=%F %T.%3q ; with milliseconds
+;
+; This appends the hostname to the name of the log files.
+;appendhostname = yes
+;
+; This determines whether or not we log queue events to a file
+; (defaults to yes).
+;queue_log = no
+;
+; Set the queue_log filename
+; (defaults to queue_log)
+;queue_log_name = queue_log
+;
+; Log rotation strategy:
+; sequential: Rename archived logs in order, such that the newest
+; has the highest sequence number [default].
+; rotate: Rotate all the old files, such that the oldest has the
+; highest sequence number [this is the expected behavior
+; for Unix administrators].
+; timestamp: Rename the logfiles using a timestamp instead of a
+; sequence number when "logger rotate" is executed.
+;rotatestrategy = rotate
+;
+; Run a system command after rotating the files. This is mainly
+; useful for rotatestrategy=rotate. The example allows the last
+; two archive files to remain uncompressed, but after that point,
+; they are compressed on disk.
+;
+; exec_after_rotate=gzip -9 ${filename}.2
+;
+; This determines whether or not we log generic events to a file
+; (defaults to yes).
+;event_log = no
+;
+;
+; For each file, specify what to log.
+;
+; For console logging, you set options at start of
+; Asterisk with -v for verbose and -d for debug
+; See 'asterisk -h' for more information.
+;
+; Directory for log files is configures in asterisk.conf
+; option astlogdir
+;
+[logfiles]
+;
+; Format is "filename" and then "levels" of debugging to be included:
+; debug
+; notice
+; warning
+; error
+; verbose
+; dtmf
+;
+; Special filename "console" represents the system console
+;
+; We highly recommend that you DO NOT turn on debug mode if you are simply
+; running a production system. Debug mode turns on a LOT of extra messages,
+; most of which you are unlikely to understand without an understanding of
+; the underlying code. Do NOT report debug messages as code issues, unless
+; you have a specific issue that you are attempting to debug. They are
+; messages for just that -- debugging -- and do not rise to the level of
+; something that merit your attention as an Asterisk administrator. Debug
+; messages are also very verbose and can and do fill up logfiles quickly;
+; this is another reason not to have debug mode on a production system unless
+; you are in the process of debugging a specific issue.
+;
+;debug => debug
+console => notice,warning,error
+;console => notice,warning,error,debug
+messages => notice,warning,error
+;full => notice,warning,error,debug,verbose
+
+;syslog keyword : This special keyword logs to syslog facility
+;
+;syslog.local0 => notice,warning,error
+;
diff --git a/trunk/configs/manager.conf.sample b/trunk/configs/manager.conf.sample
new file mode 100644
index 000000000..80bea5a70
--- /dev/null
+++ b/trunk/configs/manager.conf.sample
@@ -0,0 +1,97 @@
+;
+; AMI - The Asterisk Manager Interface
+;
+; Third party application call management support and PBX event supervision
+;
+; This configuration file is read every time someone logs in
+;
+; Use the "manager show commands" at the CLI to list available manager commands
+; and their authorization levels.
+;
+; "manager show command <command>" will show a help text.
+;
+; ---------------------------- SECURITY NOTE -------------------------------
+; Note that you should not enable the AMI on a public IP address. If needed,
+; block this TCP port with iptables (or another FW software) and reach it
+; with IPsec, SSH, or SSL vpn tunnel. You can also make the manager
+; interface available over http/https if Asterisk's http server is enabled in
+; http.conf and if both "enabled" and "webenabled" are set to yes in
+; this file. Both default to no. httptimeout provides the maximum
+; timeout in seconds before a web based session is discarded. The
+; default is 60 seconds.
+;
+[general]
+enabled = no
+;webenabled = yes
+port = 5038
+
+;httptimeout = 60
+; a) httptimeout sets the Max-Age of the http cookie
+; b) httptimeout is the amount of time the webserver waits
+; on a action=waitevent request (actually its httptimeout-10)
+; c) httptimeout is also the amount of time the webserver keeps
+; a http session alive after completing a successful action
+
+bindaddr = 0.0.0.0
+
+; Parameters that control AMI over TLS. ("enabled" must be set too).
+; You can open a connection to this socket with e.g.
+;
+; openssl s_client -connect my_host:5039
+;
+; sslenable=no ; set to YES to enable it
+; sslbindport=5039 ; the port to bind to
+; sslbindaddr=0.0.0.0 ; address to bind to, default to bindaddr
+; sslcert=/tmp/asterisk.pem ; path to the certificate.
+
+
+;
+;allowmultiplelogin = yes ; IF set to no, rejects manager logins that are already in use.
+; ; The default is yes.
+;
+;displayconnects = yes
+;
+; Add a Unix epoch timestamp to events (not action responses)
+;
+;timestampevents = yes
+
+; debug = on ; enable some debugging info in AMI messages (default off).
+ ; Also accessible through the "manager debug" CLI command.
+;[mark]
+;secret = mysecret
+;deny=0.0.0.0/0.0.0.0
+;permit=209.16.236.73/255.255.255.0
+;
+; If the device connected via this user accepts input slowly,
+; the timeout for writes to it can be increased to keep it
+; from being disconnected (value is in milliseconds)
+;
+; writetimeout = 100
+;
+;displayconnects = yes ; Display on CLI user login/logoff
+;
+; Authorization for various classes
+;
+; Read authorization permits you to receive asynchronous events, in general.
+; Write authorization permits you to send commands and get back responses. The
+; following classes exist:
+;
+; system - General information about the system and ability to run system
+; management commands, such as Shutdown, Restart, and Reload.
+; call - Information about channels and ability to set information in a
+; running channel.
+; log - Logging information. Read-only.
+; verbose - Verbose information. Read-only.
+; agent - Information about queues and agents and ability to add queue
+; members to a queue.
+; user - Permission to send and receive UserEvent.
+; config - Ability to read and write configuration files.
+; command - Permission to run CLI commands. Write-only.
+; dtmf - Receive DTMF events. Read-only.
+; reporting - Ability to get information about the system.
+; cdr - Output of cdr_manager, if loaded. Read-only.
+; dialplan - Receive NewExten and VarSet events. Read-only.
+;
+;read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
+;write = system,call,agent,user,config,command,reporting
+
diff --git a/trunk/configs/meetme.conf.sample b/trunk/configs/meetme.conf.sample
new file mode 100644
index 000000000..a28c5d3c9
--- /dev/null
+++ b/trunk/configs/meetme.conf.sample
@@ -0,0 +1,45 @@
+;
+; Configuration file for MeetMe simple conference rooms for Asterisk of course.
+;
+; This configuration file is read every time you call app meetme()
+
+[general]
+;audiobuffers=32 ; The number of 20ms audio buffers to be used
+ ; when feeding audio frames from non-Zap channels
+ ; into the conference; larger numbers will allow
+ ; for the conference to 'de-jitter' audio that arrives
+ ; at different timing than the conference's timing
+ ; source, but can also allow for latency in hearing
+ ; the audio from the speaker. Minimum value is 2,
+ ; maximum value is 32.
+;
+; Conferences may be scheduled from realtime?
+;schedule=yes
+;
+; Update realtime when members login/out of the conference
+;logmembercount=no
+;
+; How much earlier than the start time should we allow participants to
+; join the conference (in seconds)?
+;fuzzystart=300
+;
+; If the participants join too early, how much time should we allow
+; to tell them that they've joined too early, rather than telling them
+; the conference simply doesn't exist (in seconds)?
+;earlyalert=3600
+;
+; How many seconds before the scheduled end of the conference should
+; the participants be warned?
+;endalert=120
+;
+[rooms]
+;
+; Usage is conf => confno[,pin][,adminpin]
+;
+; Note that once a participant has called the conference, a change to the pin
+; number done in this file will not take effect until there are no more users
+; in the conference and it goes away. When it is created again, it will have
+; the new pin number.
+;
+;conf => 1234
+;conf => 2345,9938
diff --git a/trunk/configs/mgcp.conf.sample b/trunk/configs/mgcp.conf.sample
new file mode 100644
index 000000000..104891e8a
--- /dev/null
+++ b/trunk/configs/mgcp.conf.sample
@@ -0,0 +1,110 @@
+;
+; MGCP Configuration for Asterisk
+;
+[general]
+;port = 2427
+;bindaddr = 0.0.0.0
+
+; See qos.tex or Quality of Service section of asterisk.pdf for a description of these parameters.
+;tos=cs3 ; Sets TOS for signaling packets.
+;tos_audio=ef ; Sets TOS for RTP audio packets.
+;cos=3 ; Sets 802.1p priority for signaling packets.
+;cos_audio=5 ; Sets 802.1p priority for RTP audio packets.
+
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
+ ; MGCP channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The MGCP channel can accept jitter,
+ ; thus an enabled jitterbuffer on the receive MGCP side will only
+ ; be used if the sending side can create jitter and jbforce is
+ ; also set to yes.
+
+; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a MGCP
+ ; channel. Defaults to "no".
+
+; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usually sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a MGCP
+ ; channel. Two implementations are currently available - "fixed"
+ ; (with size always equals to jbmax-size) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
+
+;[dlinkgw]
+;host = 192.168.0.64
+;context = default
+;canreinvite = no
+;line => aaln/2
+;line => aaln/1
+
+;; The MGCP channel supports the following service codes:
+;; # - Transfer
+;; *67 - Calling Number Delivery Blocking
+;; *70 - Cancel Call Waiting
+;; *72 - Call Forwarding Activation
+;; *73 - Call Forwarding Deactivation
+;; *78 - Do Not Disturb Activation
+;; *79 - Do Not Disturb Deactivation
+;; *8 - Call pick-up
+;
+; known to work with Swissvoice IP10s
+;[192.168.1.20]
+;context=local
+;host=192.168.1.20
+;callerid = "John Doe" <123>
+;callgroup=0 ; in the range from 0 to 63
+;pickupgroup=0 ; in the range from 0 to 63
+;nat=no
+;threewaycalling=yes
+;transfer=yes ; transfer requires threewaycalling=yes. Use FLASH to transfer
+;callwaiting=yes ; this might be a cause of trouble for ip10s
+;cancallforward=yes
+;line => aaln/1
+;
+
+;[dph100]
+;
+; Supporting the DPH100M requires defining DLINK_BUGGY_FIRMWARE in
+; chan_mgcp.c in addition to enabling the slowsequence mode due to
+; bugs in the D-Link firmware
+;
+;context=local
+;host=dynamic
+;dtmfmode=none ; DTMF Mode can be 'none', 'rfc2833', or 'inband' or
+ ; 'hybrid' which starts in none and moves to inband. Default is none.
+;slowsequence=yes ; The DPH100M does not follow MGCP standards for sequencing
+;line => aaln/1
+
+; known to work with wave7optics FTTH LMGs
+;[192.168.1.20]
+;accountcode = 1000 ; record this in cdr as account identification for billing
+;amaflags = billing ; record this in cdr as flagged for 'billing',
+ ; 'documentation', or 'omit'
+;context = local
+;host = 192.168.1.20
+;wcardep = aaln/* ; enables wildcard endpoint and sets it to 'aaln/*'
+ ; another common format is '*'
+;callerid = "Duane Cox" <123> ; now lets setup line 1 using per endpoint configuration...
+;callwaiting = no
+;callreturn = yes
+;cancallforward = yes
+;canreinvite = no
+;transfer = no
+;dtmfmode = inband
+;line => aaln/1 ; now lets save this config to line1 aka aaln/1
+;callerid = "Duane Cox" <456> ; now lets setup line 2
+;callwaiting = no
+;callreturn = yes
+;cancallforward = yes
+;canreinvite = no
+;transfer = no
+;dtmfmode = inband
+;line => aaln/2 ; now lets save this config to line2 aka aaln/2
diff --git a/trunk/configs/minivm.conf.sample b/trunk/configs/minivm.conf.sample
new file mode 100644
index 000000000..21d18e0c6
--- /dev/null
+++ b/trunk/configs/minivm.conf.sample
@@ -0,0 +1,218 @@
+;
+; Mini-Voicemail Configuration
+; for the MiniVM set of applications
+;
+; MiniVM consists of the following dialplan applications
+; MinivmGreet Play personal prompts for busy/unavailable/temporary messages or default prompts
+; MinivmRecord Record voice prompts to account directory or default directory
+; MinivmNotify Notify via e-mail or pager - with or without attachment
+; MinivmDelete Delete voice prompt (filename as argument or channel variable set by MinivmRecord)
+;
+; MiniVM works without accounts (just give e-mail address as argument) or with accounts in
+; this configuration file or realtime. The idea is to build voicemail as building blocks so that
+; a complete and adaptive voicemail system can be built in the dialplan
+;
+;------------------------------ Variables to use in subject, from and message body ------------------
+; Change the from, body and/or subject, variables:
+; MVM_NAME, MVM_DUR, MVM_MSGNUM, VM_MAILBOX, MVM_CALLERID, MVM_CIDNUM,
+; MVM_CIDNAME, MVM_DATE
+;
+; In addition to these, you can set the MVM_COUNTER channel variable in the
+; dial plan and use that as a counter. It will also be used in the file name
+; of the media file attached to the message
+;
+; Note: The emailbody config row can only be up to 512 characters due to a
+; limitation in the Asterisk configuration subsystem.
+; To create longer mails, use the templatefile option when creating the template
+;----------------------------------------------------------------------------------------------------
+
+[general]
+; Default format for storing and sending voicemail
+; (only one format. Can also be set on a per-mailbox level)
+format=wav49
+;format=gsm
+;
+;Turn on logfile with the following syntax. One line per voicemail received
+;with minivmRecord()
+; Mailbox:domain:macrocontext:exten:priority:callerchan:callerid:origdate:origtime:duration:durationstatus:accountcode
+;logfile=/var/log/asterisk/minivm.log
+; Who the e-mail notification should appear to come from
+serveremail=asterisk
+;serveremail=asterisk@asterisk.example.com
+; Minimum length of a voicemail message in seconds for the message to be kept
+; The default is no minimum.
+;minmessage=3
+; How many seconds of silence before we end the recording
+maxsilence=10
+; Silence threshold (what we consider silence: the lower, the more sensitive)
+silencethreshold=128
+; How long greeting messages (busy/unavailable/temp/name) are allowed to be, in seconds
+;maxgreet=120
+; If you need to have an external program, i.e. /usr/bin/myapp called when a
+; voicemail is received by the server. The arguments are
+;
+; <app> <username@domain> <callerid-number> <callerid-name>
+;
+;externnotify=/usr/bin/myapp
+; The character set for voicemail messages can be specified here
+;charset=ISO-8859-1
+; Skip the "[PBX]:" string from the message title
+;pbxskip=yes
+; Change the From: string
+
+; You can override the default program to send e-mail if you wish, too
+; This is used both for e-mail and pager messages
+;mailcmd=/usr/sbin/sendmail -t
+;
+;--------------Default e-mail message template (used if no templates are used) ------
+;fromstring=The Asterisk PBX
+;
+
+;emailsubject=[PBX]: New message ${MVM_COUNER} in mailbox ${VM_MAILBOX}
+; The following definition is very close to the default, but the default shows
+; just the CIDNAME, if it is not null, otherwise just the CIDNUM, or "an unknown
+; caller", if they are both null.
+;emailbody=Dear ${MVM_NAME}:\n\n\tjust wanted to let you know you were just left a ${MVM_DUR} long message (number ${MVM_COUNTER})\nin mailbox ${MVM_MAILBOX} from ${MVM_CALLERID}, on ${MVM_DATE}, so you might\nwant to check it when you get a chance. Thanks!\n\n\t\t\t\t--Asterisk\n
+;
+; Set the date format on outgoing mails. Valid arguments can be found on the
+; strftime(3) man page
+;
+; Default
+emaildateformat=%A, %B %d, %Y at %r
+; 24h date format
+;emaildateformat=%A, %d %B %Y at %H:%M:%S
+;
+;--------------Default pager message template (used if no templates are used) ------
+; You can also change the Pager From: string, the pager body and/or subject.
+; The above defined variables also can be used here
+;pagerfromstring=The Asterisk PBX
+;pagersubject=New VM ${MVM_COUNTER}
+;pagerbody=New ${MVM_DUR} long msg in box ${MVM_MAILBOX}\nfrom ${MVM_CALLERID}, on ${MVM_DATE}
+;
+;
+;--------------Timezone definitions (used in voicemail accounts) -------------------
+;
+; Users may be located in different timezones, or may have different
+; message announcements for their introductory message when they enter
+; the voicemail system. Set the message and the timezone each user
+; hears here. Set the user into one of these zones with the tz= attribute
+; in the options field of the mailbox. Of course, language substitution
+; still applies here so you may have several directory trees that have
+; alternate language choices.
+;
+; Look in /usr/share/zoneinfo/ for names of timezones.
+; Look at the manual page for strftime for a quick tutorial on how the
+; variable substitution is done on the values below.
+;
+; Supported values:
+; 'filename' filename of a soundfile (single ticks around the filename
+; required)
+; ${VAR} variable substitution
+; A or a Day of week (Saturday, Sunday, ...)
+; B or b or h Month name (January, February, ...)
+; d or e numeric day of month (first, second, ..., thirty-first)
+; Y Year
+; I or l Hour, 12 hour clock
+; H Hour, 24 hour clock (single digit hours preceded by "oh")
+; k Hour, 24 hour clock (single digit hours NOT preceded by "oh")
+; M Minute, with 00 pronounced as "o'clock"
+; N Minute, with 00 pronounced as "hundred" (US military time)
+; P or p AM or PM
+; Q "today", "yesterday" or ABdY
+; (*note: not standard strftime value)
+; q "" (for today), "yesterday", weekday, or ABdY
+; (*note: not standard strftime value)
+; R 24 hour time, including minute
+;
+; The message here is not used in mini-voicemail, but stays for
+; backwards compatibility
+
+[zonemessages]
+eastern=America/New_York|'vm-received' Q 'digits/at' IMp
+central=America/Chicago|'vm-received' Q 'digits/at' IMp
+central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
+military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'
+
+;----------------------- Message body templates---------------------
+; [template-name] ; "template-" is a verbatim marker
+; fromaddress = Your Friendly Asterisk Server
+; fromemail = asteriskvm@digium.com
+; subject = <string>
+; attachmedia = yes | no ; Add media file as attachment?
+; dateformat = <formatstring> ; See above
+; charset = <charset> ; Mime charset definition for e-mail messages
+; locale = <locale> ; Locale for LC_TIME - to get weekdays in local language
+; ; See your O/S documentation for proper settings for setlocale()
+; templatefile = <filename> ; File name (relative to Asterisk configuration directory,
+ ; or absolute
+; messagebody = Format ; Message body definition with variables
+;
+[template-sv_SE_email]
+messagebody=Hej ${MVM_NAME}:\n\n\tDu har fått ett röstbrevlåde-meddelande från ${MVM_CALLERID}.\nLängd: ${MVM_DUR}\nMailbox ${MVM_MAILBOX}\nDatum: ${MVM_DATE}. \nMeddelandet bifogas det här brevet. Om du inte kan läsa det, kontakta intern support. \nHälsningar\n\n\t\t\t\t--Asterisk\n
+subject = Du har fått röstmeddelande (se bilaga)
+fromemail = swedish-voicemail-service@stockholm.example.com
+fromaddress = Asterisk Röstbrevlåda
+charset=iso-8859-1
+attachmedia=yes
+dateformat=%A, %d %B %Y at %H:%M:%S
+locale=sv_SE
+
+[template-en_US_email]
+messagebody=Dear ${MVM_NAME}:\n\n\tjust wanted to let you know you were just left a ${MVM_DUR} long message \nin mailbox ${MVM_MAILBOX} from ${MVM_CALLERID}, on ${MVM_DATE}, so you might\nwant to check it when you get a chance. Thanks!\n\n\t\t\t\t--Asterisk\n
+subject = New voicemail
+charset=ascii
+attachmedia=yes
+dateformat=%A, %B %d, %Y at %r
+
+;[template-sv_SE_pager]
+;templatefile = templates/pager_sv_se.txt
+;subject = Du har fått voicemail
+;charset=iso-8859-1
+;attachmedia=no
+;locale=sv_SE
+
+;[template-nb_NO_email]
+;templatefile = templates/email_nb_NO.txt
+;subject = Du har fått voicemail
+;charset=iso-8859-1
+;locale=nb_NO
+
+;[template-en_US_email_southern]
+;templatefile = templates/email_en_US.txt
+;subject = Y'all got voicemail, honey!
+;charset=ascii
+
+;[template-en_UK_email]
+;templatefile = templates/email_en_us.txt
+;subject = Dear old chap, you've got an electronic communique
+;charset=ascii
+
+;----------------------- Mailbox accounts --------------------------
+;Template for mailbox definition - all options
+;
+; [username@domain] ; Has to be unique within domain (MWM_USERNAME, MWM_DOMAIN)
+; etemplate = sv_SE ; Email template from [templates]
+; ptemplate = en_US ; Pager template from [templates]
+; email = userpart@domain ; Extra e-mail address (overrides mailbox name)
+; pager = pageremail@domain ; E-mail address for pager messages
+; fullname = Mark Spencer ; Full name (MWM_NAME)
+; options = ; E-mail options, se below
+; accountcode = ; Account code (read in dialplan function MINIVMACCOUNT)
+; pincode = ; Numeric pin code (read in dialplan function MINIVMACCOUNT)
+; timezone=se ; Time zone
+; serveremail = asterisk@digium.com ; Who to send email from (overrides template if set)
+; externnotify = <application> ; External application for this account
+; volgain = ; Volume gain setting (requires "sox")
+; setvar=SERVICENAME=Voop.com Networks ; Extra variables to use in template
+
+; Remember that you can use Asterisk Configuration Templates (ACT)
+
+; [template@example.com](!) ; Declare template
+; setvar=customerdomain=example.com
+; setvar=customerclass=gold
+; etemplate = sv_se_email
+; serveremail = voicemail@example.com
+
+; [user2@example.com](template@example.com) ; Declare user2 account using template
+; fullname = Olle E. Johansson
+; ; User inherits everything from template
diff --git a/trunk/configs/misdn.conf.sample b/trunk/configs/misdn.conf.sample
new file mode 100644
index 000000000..65bdda3ea
--- /dev/null
+++ b/trunk/configs/misdn.conf.sample
@@ -0,0 +1,455 @@
+;
+; chan_misdn sample config
+;
+
+; general section:
+;
+; for debugging and general setup, things that are not bound to port groups
+;
+
+[general]
+;
+; Sets the Path to the misdn-init.conf (for nt_ptp mode checking)
+;
+misdn_init=/etc/misdn-init.conf
+
+; set debugging flag:
+; 0 - No Debug
+; 1 - mISDN Messages and * - Messages, and * - State changes
+; 2 - Messages + Message specific Informations (e.g. bearer capability)
+; 3 - very Verbose, the above + lots of Driver specific infos
+; 4 - even more Verbose than 3
+;
+; default value: 0
+;
+debug=0
+
+
+
+; set debugging file and flags for mISDNuser (NT-Stack)
+;
+; flags can be or'ed with the following values:
+;
+; DBGM_NET 0x00000001
+; DBGM_MSG 0x00000002
+; DBGM_FSM 0x00000004
+; DBGM_TEI 0x00000010
+; DBGM_L2 0x00000020
+; DBGM_L3 0x00000040
+; DBGM_L3DATA 0x00000080
+; DBGM_BC 0x00000100
+; DBGM_TONE 0x00000200
+; DBGM_BCDATA 0x00000400
+; DBGM_MAN 0x00001000
+; DBGM_APPL 0x00002000
+; DBGM_ISDN 0x00004000
+; DBGM_SOCK 0x00010000
+; DBGM_CONN 0x00020000
+; DBGM_CDATA 0x00040000
+; DBGM_DDATA 0x00080000
+; DBGM_SOUND 0x00100000
+; DBGM_SDATA 0x00200000
+; DBGM_TOPLEVEL 0x40000000
+; DBGM_ALL 0xffffffff
+;
+
+ntdebugflags=0
+ntdebugfile=/var/log/misdn-nt.log
+
+
+; some pbx systems do cut the L1 for some milliseconds, to avoid
+; dropping running calls, we can set this flag to yes and tell
+; mISDNuser not to drop the calls on L2_RELEASE
+ntkeepcalls=no
+
+; the big trace
+;
+; default value: [not set]
+;
+;tracefile=/var/log/asterisk/misdn.log
+
+
+; set to yes if you want mISDN_dsp to bridge the calls in HW
+;
+; default value: yes
+;
+bridging=no
+
+
+;
+; watches the L1s of every port. If one l1 is down it tries to
+; get it up. The timeout is given in seconds. with 0 as value it
+; does not watch the l1 at all
+;
+; default value: 0
+;
+; this option is only read at loading time of chan_misdn,
+; which means you need to unload and load chan_misdn to change the
+; value, an asterisk restart should do the trick
+;
+l1watcher_timeout=0
+
+; stops dialtone after getting first digit on nt Port
+;
+; default value: yes
+;
+stop_tone_after_first_digit=yes
+
+; whether to append overlapdialed Digits to Extension or not
+;
+; default value: yes
+;
+append_digits2exten=yes
+
+;;; CRYPTION STUFF
+
+; Whether to look for dynamic crypting attempt
+;
+; default value: no
+;
+dynamic_crypt=no
+
+; crypt_prefix, what is used for crypting Protocol
+;
+; default value: [not set]
+;
+crypt_prefix=**
+
+; Keys for cryption, you reference them in the dialplan
+; later also in dynamic encr.
+;
+; default value: [not set]
+;
+crypt_keys=test,muh
+
+; users sections:
+;
+; name your sections as you which but not "general" !
+; the sections are Groups, you can dial out in extensions.conf
+; with Dial(mISDN/g:extern/101) where extern is a section name,
+; chan_misdn tries every port in this section to find a
+; new free channel
+;
+
+; The default section is not a group section, it just contains config elements
+; which are inherited by group sections.
+;
+
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
+ ; SIP channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The SIP channel can accept jitter,
+ ; thus a jitterbuffer on the receive SIP side will be used only
+ ; if it is forced and enabled.
+
+; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a SIP
+ ; channel. Defaults to "no".
+
+; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usually sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP
+ ; channel. Two implementations are currently available - "fixed"
+ ; (with size always equals to jbmaxsize) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
+
+[default]
+
+; define your default context here
+;
+; default value: default
+;
+context=misdn
+
+; language
+;
+; default value: en
+;
+language=en
+
+;
+; sets the musiconhold class
+;
+musicclass=default
+
+;
+; Either if we should produce DTMF Tones ourselves
+;
+senddtmf=yes
+
+;
+; If we should generate Ringing for chan_sip and others
+;
+far_alerting=no
+
+
+;
+; here you can define which bearers should be allowed
+;
+allowed_bearers=all
+
+; Prefixes for national and international, those are put before the
+; oad if an according dialplan is set by the other end.
+;
+; default values: nationalprefix : 0
+; internationalprefix : 00
+;
+nationalprefix=0
+internationalprefix=00
+
+; set rx/tx gains between -8 and 8 to change the RX/TX Gain
+;
+; default values: rxgain: 0
+; txgain: 0
+;
+rxgain=0
+txgain=0
+
+; some telcos especially in NL seem to need this set to yes, also in
+; switzerland this seems to be important
+;
+; default value: no
+;
+te_choose_channel=no
+
+
+
+;
+; This option defines, if chan_misdn should check the L1 on a PMP
+; before making a group call on it. The L1 may go down for PMP Ports
+; so we might need this.
+; But be aware! a broken or plugged off cable might be used for a group call
+; as well, since chan_misdn has no chance to distinguish if the L1 is down
+; because of a lost Link or because the Provider shut it down...
+;
+; default: no
+;
+pmp_l1_check=no
+
+
+;
+; in PMP this option defines which cause should be sent out to
+; the 3. caller. chan_misdn does not support callwaiting on TE
+; PMP side. This allows to modify the RELEASE_COMPLETE cause
+; at least.
+;
+reject_cause=16
+
+
+;
+; Send Setup_Acknowledge on incoming calls anyway (instead of PROCEEDING),
+; this requests additional Infos, so we can waitfordigits
+; without much issues. This works only for PTP Ports
+;
+; default value: no
+;
+need_more_infos=no
+
+
+;
+; set this to yes if you want to disconnect calls when a timeout occurs
+; for example during the overlapdial phase
+;
+nttimeout=no
+
+; set the method to use for channel selection:
+; standard - always choose the first free channel with the lowest number
+; round_robin - use the round robin algorithm to select a channel. use this
+; if you want to balance your load.
+;
+; default value: standard
+;
+method=standard
+
+
+; specify if chan_misdn should collect digits before going into the
+; dialplan, you can choose yes=4 Seconds, no, or specify the amount
+; of seconds you need;
+;
+overlapdial=yes
+
+;
+; dialplan means Type Of Number in ISDN Terms (for outgoing calls)
+;
+; there are different types of the dialplan:
+;
+; dialplan -> outgoing Number
+; localdialplan -> callerid
+; cpndialplan -> connected party number
+;
+; dialplan options:
+;
+; 0 - unknown
+; 1 - International
+; 2 - National
+; 4 - Subscriber
+;
+; This setting is used for outgoing calls
+;
+; default value: 0
+;
+dialplan=0
+localdialplan=0
+cpndialplan=0
+
+
+
+;
+; turn this to no if you don't mind correct handling of Progress Indicators
+;
+early_bconnect=yes
+
+
+;
+; turn this on if you like to send Tone Indications to a Incoming
+; isdn channel on a TE Port. Rarely used, only if the Telco allows
+; you to send indications by yourself, normally the Telco sends the
+; indications to the remote party.
+;
+; default: no
+;
+incoming_early_audio=no
+
+; uncomment the following to get into s extension at extension conf
+; there you can use DigitTimeout if you can't or don't want to use
+; isdn overlap dial.
+; note: This will jump into the s exten for every exten!
+;
+; default value: no
+;
+;always_immediate=no
+
+;
+; set this to yes if you want to generate your own dialtone
+; with always_immediate=yes, else chan_misdn generates the dialtone
+;
+; default value: no
+;
+nodialtone=no
+
+
+; uncomment the following if you want callers which called exactly the
+; base number (so no extension is set) jump to the s extension.
+; if the user dials something more it jumps to the correct extension
+; instead
+;
+; default value: no
+;
+;immediate=no
+
+; uncomment the following to have hold and retrieve support
+;
+; default value: no
+;
+;hold_allowed=yes
+
+; Pickup and Callgroup
+;
+; default values: not set = 0
+; range: 0-63
+;
+;callgroup=1
+;pickupgroup=1
+
+
+;
+; these are the exact isdn screening and presentation indicators
+; if -1 is given for both values the presentation indicators are used
+; from asterisks SetCallerPres application.
+; s=0, p=0 -> callerid presented not screened
+; s=1, p=1 -> callerid presented but screened (the remote end does not see it!)
+;
+; default values s=-1, p=-1
+presentation=-1
+screen=-1
+
+; this enables echocancellation, with the given number of taps
+; be aware, move this setting only to outgoing portgroups!
+; A value of zero turns echocancellation off.
+;
+; possible values are: 0,32,64,128,256,yes(=128),no(=0)
+;
+; default value: no
+;
+;echocancel=no
+
+; Set this to no to disable echotraining. You can enter a number > 10
+; the value is a multiple of 0.125 ms.
+;
+; default value: no
+; yes = 2000
+; no = 0
+;
+echotraining=no
+
+;
+; chan_misdns jitterbuffer, default 4000
+;
+jitterbuffer=4000
+
+;
+; change this threshold to enable dejitter functionality
+;
+jitterbuffer_upper_threshold=0
+
+
+;
+; change this to yes, if you want to bridge a mISDN data channel to
+; another channel type or to an application.
+;
+hdlc=no
+
+
+;
+; defines the maximum amount of incoming calls per port for
+; this group. Calls which exceed the maximum will be marked with
+; the channel variable MAX_OVERFLOW. It will contain the amount of
+; overflowed calls
+;
+max_incoming=-1
+
+;
+; defines the maximum amount of outgoing calls per port for this group
+; exceeding calls will be rejected
+;
+max_outgoing=-1
+
+[intern]
+; define your ports, e.g. 1,2 (depends on mISDN-driver loading order)
+ports=1,2
+; context where to go to when incoming Call on one of the above ports
+context=Intern
+
+[internPP]
+;
+; adding the postfix 'ptp' to a port number is obsolete now, chan_misdn
+; parses /etc/misdn-init.conf and sets the ptp mode to the corresponding
+; configs. For backwards compatibility you can still set ptp here.
+;
+ports=3
+
+[first_extern]
+; again port defs
+ports=4
+; again a context for incoming calls
+context=Extern1
+; msns for te ports, listen on those numbers on the above ports, and
+; indicate the incoming calls to asterisk
+; here you can give a comma separated list or simply an '*' for
+; any msn.
+msns=*
+
+; here an example with given msns
+[second_extern]
+ports=5
+context=Extern2
+callerid=15
+msns=102,144,101,104
diff --git a/trunk/configs/modules.conf.sample b/trunk/configs/modules.conf.sample
new file mode 100644
index 000000000..2ca3c03d4
--- /dev/null
+++ b/trunk/configs/modules.conf.sample
@@ -0,0 +1,39 @@
+;
+; Asterisk configuration file
+;
+; Module Loader configuration file
+;
+
+[modules]
+autoload=yes
+;
+; Any modules that need to be loaded before the Asterisk core has been
+; initialized (just after the logger has been initialized) can be loaded
+; using 'preload'. This will frequently be needed if you wish to map all
+; module configuration files into Realtime storage, since the Realtime
+; driver will need to be loaded before the modules using those configuration
+; files are initialized.
+;
+; An example of loading ODBC support would be:
+;preload => res_odbc.so
+;preload => res_config_odbc.so
+;
+; res_phoneprov requires func_strings.so to be loaded:
+preload => func_strings.so
+;
+; Uncomment the following if you wish to use the Speech Recognition API
+;preload => res_speech.so
+;
+; If you want, load the GTK console right away.
+;
+noload => pbx_gtkconsole.so
+;load => pbx_gtkconsole.so
+;
+load => res_musiconhold.so
+;
+; Load one of: chan_oss, alsa, or console (portaudio).
+; By default, load chan_oss only (automatically).
+;
+noload => chan_alsa.so
+;noload => chan_oss.so
+;noload => chan_console.so
diff --git a/trunk/configs/musiconhold.conf.sample b/trunk/configs/musiconhold.conf.sample
new file mode 100644
index 000000000..4df1afd4f
--- /dev/null
+++ b/trunk/configs/musiconhold.conf.sample
@@ -0,0 +1,79 @@
+;
+; Music on Hold -- Sample Configuration
+;
+[general]
+;cachertclasses=yes ; use 1 instance of moh class for all users who are using it,
+ ; decrease consumable cpu cycles and memory
+ ; disabled by default
+
+
+; valid mode options:
+; files -- read files from a directory in any Asterisk supported
+; media format
+; quietmp3 -- default
+; mp3 -- loud
+; mp3nb -- unbuffered
+; quietmp3nb -- quiet unbuffered
+; custom -- run a custom application (See examples below)
+
+; =========
+; File-based (native) music on hold
+; =========
+;
+; This plays files directly from the specified directory, no external
+; processes are required. Files are played in normal sorting order
+; (same as a sorted directory listing), and no volume or other
+; sound adjustments are available. If the file is available in
+; the same format as the channel's codec, then it will be played
+; without transcoding (same as Playback would do in the dialplan).
+; Files can be present in as many formats as you wish, and the
+; 'best' format will be chosen at playback time.
+;
+; NOTE:
+; If you are not using "autoload" in modules.conf, then you
+; must ensure that the format modules for any formats you wish
+; to use are loaded _before_ res_musiconhold. If you do not do
+; this, res_musiconhold will skip the files it is not able to
+; understand when it loads.
+;
+
+[default]
+mode=files
+directory=/var/lib/asterisk/moh
+;
+;[native-random]
+;mode=files
+;directory=/var/lib/asterisk/moh
+;digit=# ; If this option is set for a class, then when callers are
+; ; listening to music on hold, they can press this digit, and
+; ; they will switch to listening to this music class.
+;sort=random ; Sort the files in random order
+
+;[native-alphabetical]
+;mode=files
+;directory=/var/lib/asterisk/moh
+;sort=alpha ; Sort the files in alphabetical order. If this option is
+; ; not specified, the sort order is undefined.
+
+; =========
+; Other (non-native) playback methods
+; =========
+
+;[manual]
+;mode=custom
+; Note that with mode=custom, a directory is not required, such as when reading
+; from a stream.
+;directory=/var/lib/asterisk/mohmp3
+;application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s
+
+;[ulawstream]
+;mode=custom
+;application=/usr/bin/streamplayer 192.168.100.52 888
+;format=ulaw
+
+; mpg123 on Solaris does not always exit properly; madplay may be a better
+; choice
+;[solaris]
+;mode=custom
+;directory=/var/lib/asterisk/mohmp3
+;application=/site/sw/bin/madplay -Q -o raw:- --mono -R 8000 -a -12
diff --git a/trunk/configs/muted.conf.sample b/trunk/configs/muted.conf.sample
new file mode 100644
index 000000000..a5e869b99
--- /dev/null
+++ b/trunk/configs/muted.conf.sample
@@ -0,0 +1,39 @@
+#
+# Sample muted configuration file
+#
+# Copyright (C) 2004 Digium, Inc.
+#
+# First you have the host, username, and password
+# we use to connect to the asterisk system
+#
+# What is this? Well, haven't you ever wished you could automatically
+# turn down the volume on your stereo, CDPlayer, etc, when a call comes in,
+# and then return it to normal when the call ends? Well, this is a possible
+# mechanism to make this happen!
+# You have to fire up the new utils/muted, which runs as a daemon in the
+# background. This daemon connects to asterisk via a manager interface, and
+# also reads this config file from /etc/muted.conf. when the channels mentioned
+# are activated, it tweaks the sound levels on the sound card(s).
+# So, depending on the sound card, you may be able to run all your sound
+# generating devices thru your sound card, and use this mechanism to quiet
+# them down while you are on the phone. If anyone figures out how to make
+# this work with kids, please inform!!
+#
+host localhost
+user user
+pass pass
+#
+# List each channel we're supposed to watch
+#
+channel Zap/1
+channel Zap/2
+channel SIP/mark
+#
+# Mute level is the percentage of the current volume we should
+# lower the music to.
+#
+mutelevel 20
+#
+# Smooth fade makes the fadein/fadeout nicer sounding
+#
+smoothfade
diff --git a/trunk/configs/osp.conf.sample b/trunk/configs/osp.conf.sample
new file mode 100644
index 000000000..e3423373d
--- /dev/null
+++ b/trunk/configs/osp.conf.sample
@@ -0,0 +1,90 @@
+;
+; Open Settlement Protocol Sample Configuration File
+;
+; This file contains configuration of OSP server providers that are used by the
+; Asterisk OSP module. The section "general" is reserved for global options.
+; All other sections describe specific OSP Providers. The provider "default"
+; is used when no provider is otherwise specified.
+;
+; The "servicepoint" and "source" parameters must be configured. For most
+; implementations the other parameters in this file can be left unchanged.
+;
+[general]
+;
+; Enable cryptographic acceleration hardware.
+;
+;accelerate=no
+;
+; Defines the status of tokens that Asterisk will validate.
+; 0 - signed tokens only
+; 1 - unsigned tokens only
+; 2 - both signed and unsigned
+; The default value is 0, i.e. the Asterisk will only validate signed tokens.
+;
+;tokenformat=0
+;
+;[default]
+;
+; List all service points (OSP servers) for this provider.
+; Use either domain name or IP address. Most OSP servers use port 1080.
+;
+;servicepoint=http://osptestserver.transnexus.com:1080/osp
+;
+; Define the "source" device for requesting OSP authorization.
+; This value is usually the domain name or IP address of the the Asterisk server.
+;
+;source=domain name or [IP address in brackets]
+;
+; Define path and file name of crypto files.
+; The default path for crypto file is /var/lib/asterisk/keys. If no path is
+; defined, crypto files will in /var/lib/asterisk/keys directory.
+;
+; Specify the private key file name.
+; If this parameter is unspecified or not present, the default name will be the
+; osp.conf section name followed by "-privatekey.pem" (for example:
+; default-privatekey.pem)
+;
+;privatekey=pkey.pem
+;
+; Specify the local certificate file.
+; If this parameter is unspecified or not present, the default name will be the
+; osp.conf section name followed by "- localcert.pem " (for example:
+; default-localcert.pem)
+;
+;localcert=localcert.pem
+;
+; Specify one or more Certificate Authority key file names. If none are listed,
+; a single Certificate Authority key file name is added with the default name of
+; the osp.conf section name followed by "-cacert_0.pem " (for example:
+; default-cacert_0.pem)
+;
+;cacert=cacert_0.pem
+;
+; Configure parameters for OSP communication between Asterisk OSP client and OSP
+; servers.
+;
+; maxconnections: Max number of simultaneous connections to the provider OSP
+; server (default=20)
+; retrydelay: Extra delay between retries (default=0)
+; retrylimit: Max number of retries before giving up (default=2)
+; timeout: Timeout for response in milliseconds (default=500)
+;
+;maxconnections=20
+;retrydelay=0
+;retrylimit=2
+;timeout=500
+;
+; Set the authentication policy.
+; 0 - NO - Accept all calls.
+; 1 - YES - Accept calls with valid token or no token. Block calls with
+; invalid token.
+; 2 - EXCLUSIVE - Accept calls with valid token. Block calls with invalid token
+; or no token.
+; Default is 1,
+;
+;authpolicy=1
+;
+; Set the default destination protocol. The OSP module supports SIP, H323, and
+; IAX protocols. The default protocol is set to SIP.
+;
+;defaultprotocol=SIP
diff --git a/trunk/configs/oss.conf.sample b/trunk/configs/oss.conf.sample
new file mode 100644
index 000000000..24b0b38ee
--- /dev/null
+++ b/trunk/configs/oss.conf.sample
@@ -0,0 +1,138 @@
+;
+; Automatically generated from ../channels/chan_oss.c
+;
+
+[general]
+ ; General config options, with default values shown.
+ ; You should use one section per device, with [general] being used
+ ; for the first device and also as a template for other devices.
+ ;
+ ; All but 'debug' can go also in the device-specific sections.
+ ;
+ ; debug = 0x0 ; misc debug flags, default is 0
+
+ ; Set the device to use for I/O
+ ; device = /dev/dsp
+
+ ; Optional mixer command to run upon startup (e.g. to set
+ ; volume levels, mutes, etc.
+ ; mixer =
+
+ ; Software mic volume booster (or attenuator), useful for sound
+ ; cards or microphones with poor sensitivity. The volume level
+ ; is in dB, ranging from -20.0 to +20.0
+ ; boost = n ; mic volume boost in dB
+
+ ; Set the callerid for outgoing calls
+ ; callerid = John Doe <555-1234>
+
+ ; autoanswer = no ; no autoanswer on call
+ ; autohangup = yes ; hangup when other party closes
+ ; extension = s ; default extension to call
+ ; context = default ; default context for outgoing calls
+ ; language = "" ; default language
+
+ ; If you set overridecontext to 'yes', then the whole dial string
+ ; will be interpreted as an extension, which is extremely useful
+ ; to dial SIP, IAX and other extensions which use the '@' character.
+ ; The default is 'no' just for backward compatibility, but the
+ ; suggestion is to change it.
+ ; overridecontext = no ; if 'no', the last @ will start the context
+ ; if 'yes' the whole string is an extension.
+
+ ; low level device parameters in case you have problems with the
+ ; device driver on your operating system. You should not touch these
+ ; unless you know what you are doing.
+ ; queuesize = 10 ; frames in device driver
+ ; frags = 8 ; argument to SETFRAGMENT
+
+ ;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+ ; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an
+ ; OSS channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The OSS channel can't accept jitter,
+ ; thus an enabled jitterbuffer on the receive OSS side will always
+ ; be used if the sending side can create jitter.
+
+ ; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+ ; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usually sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+ ; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of an OSS
+ ; channel. Two implementations are currently available - "fixed"
+ ; (with size always equals to jbmax-size) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+ ; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+ ;-----------------------------------------------------------------------------------
+
+; Below are the settings to support video. You can include them
+; in your general configuration as [general](+,video)
+; The parameters are all available through the CLI as "console name value"
+; Section names used here are only examples.
+
+[my_video](!) ; you can just include in your config
+ videodevice = /dev/video0 ; uses your V4L webcam as video source
+ videodevice = X11 ; X11 grabber. Dragging on the local display moves the origin.
+ videocodec = h263 ; also h261, h263p, h264, mpeg4, ...
+
+ ; video_size is the geometry used by the encoder.
+ ; Depending on the codec your choice is restricted.
+ video_size = 352x288 ; the format WIDTHxHEIGHT is also ok
+ video_size = cif ; sqcif, qcif, cif, qvga, vga, ...
+
+ ; You can also set the geometry used for the camera, local display and remote display.
+ ; The local window is on the right, the remote window is on the left.
+ ; Right clicking with the mouse on a video window increases the size,
+ ; center-clicking reduces the size.
+ camera_size = cif
+ remote_size = cif
+ local_size = qcif
+
+ bitrate = 60000 ; rate told to ffmpeg.
+ fps = 5 ; frames per second from the source.
+ ; qmin = 3 ; quantizer value passed to the encoder.
+
+; The keypad is made of an image (in any format supported by SDL_image)
+; and some configuration entries indicating the location and function of buttons.
+; These entries can also be contained in the comment field of the image,
+; which is a lot more convenient to manage.
+; E.g. for jpeg you can write them with wrjpgcom (part of libjpeg).
+; The format to define keys is
+; region = <event> <shape> x0 y0 x1 y1 h
+; where <event> is the event to be generated (a digit, pickup, hangup,...)
+; <shape> is the shape of the region (currently 'rect' and 'circle' are
+; supported, the latter is really an ellipse), x0 y0 x1 y1 are the
+; coordinates of the base of the rectangle or main diameter of the ellipse,
+; (they can be rotated) while h is the height of the rectangle or the other
+; diameter of the ellipse.
+;
+[my_skin](!)
+ keypad = /tmp/keypad.jpg
+ region = 1 rect 19 18 67 18 28
+ region = 2 rect 84 18 133 18 28
+ region = 3 rect 152 18 201 18 28
+ region = 4 rect 19 60 67 60 28
+ region = 5 rect 84 60 133 60 28
+ region = 6 rect 152 60 201 60 28
+ region = 7 rect 19 103 67 103 28
+ region = 8 rect 84 103 133 103 28
+ region = 9 rect 152 103 201 103 28
+ region = * rect 19 146 67 146 28
+ region = 0 rect 84 146 133 146 28
+ region = # rect 152 146 201 146 28
+ region = pickup rect 229 15 267 15 40
+ region = hangup rect 230 66 270 64 40
+ region = mute circle 232 141 264 141 33
+ region = sendvideo circle 235 185 266 185 33
+ region = autoanswer rect 228 212 275 212 50
+
+; uncomment this line to add video support
+; [default](+,my_video,my_skin)
+
+[card1]
+ ; device = /dev/dsp1 ; alternate device
+
diff --git a/trunk/configs/phone.conf.sample b/trunk/configs/phone.conf.sample
new file mode 100644
index 000000000..17204501e
--- /dev/null
+++ b/trunk/configs/phone.conf.sample
@@ -0,0 +1,51 @@
+;
+; Linux Telephony Interface
+;
+; Configuration file
+;
+[interfaces]
+;
+; Select a mode, either the phone jack provides dialtone, reads digits,
+; then starts PBX with the given extension (dialtone mode), or
+; immediately provides the PBX without reading any digits or providing
+; any dialtone (this is the immediate mode, the default). Also, you
+; can set the mode to "fxo" if you have a linejack to make it operate
+; properly. If you are using a Sigma Designs board you may set this to
+; "sig".
+;
+mode=immediate
+;mode=dialtone
+;mode=fxo
+;mode=sig
+;
+; You can decide which format to use by default, "g723.1", "g729", or "slinear".
+; Note that g729 is only supported for Sigma Designs boards.
+; XXX Be careful, sometimes the card causes kernel panics when running
+; in signed linear mode for some reason... XXX
+;
+format=slinear
+;format=g723.1
+;format=g729
+;
+; And set the echo cancellation to "off", "low", "medium", and "high".
+; This is not supported on all phones.
+;
+echocancel=medium
+;
+; You can optionally use VAD/CNG silence suppression
+;
+;silencesupression=yes
+;
+; List all devices we can use. Contexts may also be specified
+;
+;context=local
+;
+; You can set txgain and rxgain for each device in the same way as context.
+; If you want to change default gain value (1.0 =~ 100%) for device, simple
+; add txgain or rxgain line before device line. But remember, if you change
+; volume all cards listed below will be affected by these values. You can
+; use float values (1.0, 0.5, 2.0) or percentage values (100%, 150%, 50%).
+;
+;txgain=100%
+;rxgain=1.0
+;device => /dev/phone0
diff --git a/trunk/configs/phoneprov.conf.sample b/trunk/configs/phoneprov.conf.sample
new file mode 100644
index 000000000..8f55fa88b
--- /dev/null
+++ b/trunk/configs/phoneprov.conf.sample
@@ -0,0 +1,60 @@
+[general]
+; The default behavior of res_phoneprov will be to set the SERVER template variable to
+; the IP address that the phone uses to contact the provisioning server and the
+; SERVER_PORT variable to the bindport setting in sip.conf. Unless you have a very
+; unusual setup, you should not need to set serveraddr, serveriface, or serverport.
+
+;serveraddr=192.168.1.1 ; Override address to send to the phone to use as server address.
+;serveriface=eth0 ; Same as above, except an ethernet interface.
+ ; Useful for when the interface uses DHCP and the asterisk http
+ ; server listens on a different IP than chan_sip.
+;serverport=5060 ; Override port to send to the phone to use as server port.
+default_profile=polycom ; The default profile to use if none specified in users.conf
+
+; You can define profiles for different phones specifying what files to register
+; with the provisioning server. You can define either static files, or dynamically
+; generated files that can have dynamic names and point to templates that variables
+; can be substituted into. You can also set arbitrary variables for the profiles
+; templates to have access to. Example:
+
+;[example]
+;mime_type => application/octet-stream
+;static_file => example/firmware
+;static_file => example/default.cfg,text/xml
+;${TOUPPER(${MAC})}.cfg => templates/example-mac.cfg
+;setvar => DB_CIDNAME=${ODBC_CID_NAME_LOOKUP(${USERNAME})}
+
+; Dynamically generated files have a filename registered with variable substitution
+; with variables obtained while reading users.conf.
+
+; Built in variables and the options in users.conf that they come from
+; MAC (macaddress)
+; USERNAME (username)
+; DISPLAY_NAME (fullname)
+; SECRET (secret)
+; LABEL (label)
+; CALLERID (cid_number)
+; VOCIEMAIL_EXTEN (vmexten)
+; EXTENSION_LENGTH (localextenlength)
+
+; Built-in variables and the options in phoneprov.conf that they come from
+; SERVER (server)
+; SERVER_PORT (serverport)
+
+[polycom]
+staticdir => configs/ ; Sub directory of AST_DATA_DIR/phoneprov that static files reside
+ ; in. This allows a request to /phoneprov/sip.cfg to pull the file
+ ; from /phoneprov/configs/sip.cfg
+mime_type => text/xml ; Default mime type to use if one isn't specified or the
+ ; extension isn't recognized
+static_file => bootrom.ld,application/octet-stream ; Static files the phone will download
+static_file => bootrom.ver,plain/text ; static_file => filename,mime-type
+static_file => sip.ld,application/octet-stream
+static_file => sip.ver,plain/text
+static_file => sip.cfg
+static_file => custom.cfg
+${TOLOWER(${MAC})}.cfg => 000000000000.cfg ; Dynamically generated files.
+${TOLOWER(${MAC})}-phone.cfg => 000000000000-phone.cfg ; (relative to AST_DATA_DIR/phoneprov)
+config/${TOLOWER(${MAC})} => polycom.xml ; Dynamic Filename => template file
+${TOLOWER(${MAC})}-directory.xml => 000000000000-directory.xml
+setvar => CUSTOM_CONFIG=/var/lib/asterisk/phoneprov/configs/custom.cfg ; Custom variable
diff --git a/trunk/configs/queuerules.conf.sample b/trunk/configs/queuerules.conf.sample
new file mode 100644
index 000000000..5ab794be7
--- /dev/null
+++ b/trunk/configs/queuerules.conf.sample
@@ -0,0 +1,20 @@
+; It is possible to change the value of the QUEUE_MAX_PENALTY and QUEUE_MIN_PENALTY
+; channel variables in mid-call by defining rules in the queue for when to do so. This can allow for
+; a call to be opened to more members or potentially a different set of members.
+; The advantage to changing members this way as opposed to inserting the caller into a
+; different queue with more members or reinserting the caller into the same queue with a different
+; QUEUE_MAX_PENALTY or QUEUE_MIN_PENALTY set is that the caller does not lose his place in the queue.
+;
+; Note: There is a limitation to these rules; a caller will follow the penaltychange rules for
+; the queue that were defined at the time the caller entered the queue. If an update to the rules is
+; made during the the caller's stay in the queue, these will not be reflected for that caller.
+;
+; The syntax for these rules is
+; penaltychange => <number of seconds into the call>,<absolute or relative change to QUEUE_MAX_PENALTY>[,absolute or relative change to QUEUE_MIN_PENALTY]
+;
+; Example:
+; [myrule]
+; penaltychange => 30,+3 ; 30 seconds into the call increase the QUEUE_MAX_PENALTY by 3, no change to QUEUE_MIN_PENALTY
+; penaltychange => 60,10,5 ; 60 seconds into the call increase the QUEUE_MAX_PENALTY to 10 and increase the QUEUE_MIN_PENALTY to 5
+; penaltychange => 75,,7 ; 75 seconds into the call keep the QUEUE_MAX_PENALTY the same and increase the QUEUE_MIN_PENALTY to 7
+
diff --git a/trunk/configs/queues.conf.sample b/trunk/configs/queues.conf.sample
new file mode 100644
index 000000000..92c323773
--- /dev/null
+++ b/trunk/configs/queues.conf.sample
@@ -0,0 +1,403 @@
+[general]
+;
+; Global settings for call queues
+;
+; Persistent Members
+; Store each dynamic member in each queue in the astdb so that
+; when asterisk is restarted, each member will be automatically
+; read into their recorded queues. Default is 'yes'.
+;
+persistentmembers = yes
+;
+; Keep Stats
+; Keep queue statistics during a reload. Default is 'no'
+;
+keepstats = no
+;
+; AutoFill Behavior
+; The old/current behavior of the queue has a serial type behavior
+; in that the queue will make all waiting callers wait in the queue
+; even if there is more than one available member ready to take
+; calls until the head caller is connected with the member they
+; were trying to get to. The next waiting caller in line then
+; becomes the head caller, and they are then connected with the
+; next available member and all available members and waiting callers
+; waits while this happens. The new behavior, enabled by setting
+; autofill=yes makes sure that when the waiting callers are connecting
+; with available members in a parallel fashion until there are
+; no more available members or no more waiting callers. This is
+; probably more along the lines of how a queue should work and
+; in most cases, you will want to enable this behavior. If you
+; do not specify or comment out this option, it will default to no
+; to keep backward compatibility with the old behavior.
+;
+autofill = yes
+;
+; Monitor Type
+; By setting monitor-type = MixMonitor, when specifying monitor-format
+; to enable recording of queue member conversations, app_queue will
+; now use the new MixMonitor application instead of Monitor so
+; the concept of "joining/mixing" the in/out files now goes away
+; when this is enabled. You can set the default type for all queues
+; here, and then also change monitor-type for individual queues within
+; queue by using the same configuration parameter within a queue
+; configuration block. If you do not specify or comment out this option,
+; it will default to the old 'Monitor' behavior to keep backward
+; compatibility.
+;
+monitor-type = MixMonitor
+;
+; UpdateCDR behavior.
+; This option is implemented to mimic chan_agents behavior of populating
+; CDR dstchannel field of a call with an agent name, which you can set
+; at the login time with AddQueueMember membername parameter.
+;
+; updatecdr = no
+
+;
+; Note that a timeout to fail out of a queue may be passed as part of
+; an application call from extensions.conf:
+; Queue(queuename|[options]|[optionalurl]|[announceoverride]|[timeout])
+; example: Queue(dave|t|||45)
+
+; shared_lastcall will make the lastcall and calls received be the same in
+; members logged in more than one queue.
+; This is useful to make the queue respect the wrapuptime of another queue
+; for a shared member
+;
+shared_lastcall=no
+;
+;[markq]
+;
+; A sample call queue
+;
+; Musicclass sets which music applies for this particular call queue.
+; The only class which can override this one is if the MOH class is set
+; directly on the channel using Set(CHANNEL(musicclass)=whatever) in the
+; dialplan.
+;
+;musicclass = default
+;
+; An announcement may be specified which is played for the member as
+; soon as they answer a call, typically to indicate to them which queue
+; this call should be answered as, so that agents or members who are
+; listening to more than one queue can differentiated how they should
+; engage the customer
+;
+;announce = queue-markq
+;
+; A strategy may be specified. Valid strategies include:
+;
+; ringall - ring all available channels until one answers (default)
+; leastrecent - ring interface which was least recently called by this queue
+; fewestcalls - ring the one with fewest completed calls from this queue
+; random - ring random interface
+; rrmemory - round robin with memory, remember where we left off last ring pass
+; linear - rings interfaces in the order specified in this configuration file.
+; If you use dynamic members, the members will be rung in the order in
+; which they were added
+; wrandom - rings random interface, but uses the member's penalty as a weight
+; when calculating their metric. So a member with penalty 0 will have
+; a metric somewhere between 0 and 1000, and a member with penalty 1 will
+; have a metric between 0 and 2000, and a member with penalty 2 will have
+; a metric between 0 and 3000. Please note, if using this strategy, the member
+; penalty is not the same as when using other queue strategies. It is ONLY used
+; as a weight for calculating metric.
+;
+;strategy = ringall
+;
+; Second settings for service level (default 0)
+; Used for service level statistics (calls answered within service level time
+; frame)
+;servicelevel = 60
+;
+; A context may be specified, in which if the user types a SINGLE
+; digit extension while they are in the queue, they will be taken out
+; of the queue and sent to that extension in this context.
+;
+;context = qoutcon
+;
+; How long do we let the phone ring before we consider this a timeout...
+;
+;timeout = 15
+;
+; How long do we wait before trying all the members again?
+;
+;retry = 5
+;
+; Weight of queue - when compared to other queues, higher weights get
+; first shot at available channels when the same channel is included in
+; more than one queue.
+;
+;weight=0
+;
+; After a successful call, how long to wait before sending a potentially
+; free member another call (default is 0, or no delay)
+;
+;wrapuptime=15
+;
+; Autofill will follow queue strategy but push multiple calls through
+; at same time until there are no more waiting callers or no more
+; available members. The per-queue setting of autofill allows you
+; to override the default setting on an individual queue level.
+;
+;autofill=yes
+;
+; Autopause will pause a queue member if they fail to answer a call
+;
+;autopause=yes
+;
+; Maximum number of people waiting in the queue (0 for unlimited)
+;
+;maxlen = 0
+;
+; If set to yes, just prior to the caller being bridged with a queue member
+; the following variables will be set
+; MEMBERINTERFACE is the interface name (eg. Agent/1234)
+; MEMBERNAME is the member name (eg. Joe Soap)
+; MEMBERCALLS is the number of calls that interface has taken,
+; MEMBERLASTCALL is the last time the member took a call.
+; MEMBERPENALTY is the penalty of the member
+; MEMBERDYNAMIC indicates if a member is dynamic or not
+; MEMBERREALTIME indicates if a member is realtime or not
+;
+;setinterfacevar=no
+;
+; If set to yes, just prior to the caller being bridged with a queue member
+; the following variables will be set:
+; QEHOLDTIME callers hold time
+; QEORIGINALPOS original position of the caller in the queue
+;
+;setqueueentryvar=no
+;
+; If set to yes, the following variables will be set
+; just prior to the caller being bridged with a queue member
+; and just prior to the caller leaving the queue
+; QUEUEMAX maxmimum number of calls allowed
+; QUEUESTRATEGY the strategy of the queue;
+; QUEUECALLS number of calls currently in the queue
+; QUEUEHOLDTIME current average hold time
+; QUEUECOMPLETED number of completed calls for the queue
+; QUEUEABANDONED number of abandoned calls
+; QUEUESRVLEVEL queue service level
+; QUEUESRVLEVELPERF current service level performance
+;
+;setqueuevar=no
+;
+; if set, run this macro when connected to the queue member
+; you can override this macro by setting the macro option on
+; the queue application
+;
+; membermacro=somemacro
+
+; How often to announce queue position and/or estimated
+; holdtime to caller (0=off)
+; Note that this value is ignored if the caller's queue
+; position has changed (see min-announce-frequency)
+;
+;announce-frequency = 90
+;
+; The absolute minimum time between the start of each
+; queue position and/or estimated holdtime announcement
+; This is useful for avoiding constant announcements
+; when the caller's queue position is changing frequently
+; (see announce-frequency)
+;
+;min-announce-frequency = 15
+;
+; How often to make any periodic announcement (see periodic-announce)
+;
+;periodic-announce-frequency=60
+;
+; Should we include estimated hold time in position announcements?
+; Either yes, no, or only once.
+; Hold time will be announced as the estimated time,
+; or "less than 2 minutes" when appropriate.
+;
+;announce-holdtime = yes|no|once
+;
+; Queue position announce?
+; Either yes or no. If turned off, only the holdtime will be announced (as
+; configured in announce-holdtime)
+;
+;announce-position = yes
+;
+; What's the rounding time for the seconds?
+; If this is non-zero, then we announce the seconds as well as the minutes
+; rounded to this value.
+; Valid values are 0, 1, 5, 10, 15, 20, and 30.
+;
+; announce-round-seconds = 10
+;
+; Use these sound files in making position/holdtime announcements. The
+; defaults are as listed below -- change only if you need to.
+;
+ ; ("You are now first in line.")
+;queue-youarenext = queue-youarenext
+ ; ("There are")
+;queue-thereare = queue-thereare
+ ; ("calls waiting.")
+;queue-callswaiting = queue-callswaiting
+ ; ("The current est. holdtime is")
+;queue-holdtime = queue-holdtime
+ ; ("minutes.")
+;queue-minutes = queue-minutes
+ ; ("seconds.")
+;queue-seconds = queue-seconds
+ ; ("Thank you for your patience.")
+;queue-thankyou = queue-thankyou
+ ; ("less than")
+;queue-lessthan = queue-less-than
+ ; ("Hold time")
+;queue-reporthold = queue-reporthold
+ ; ("All reps busy / wait for next")
+;periodic-announce = queue-periodic-announce
+;
+; A set of periodic announcements can be defined by separating
+; periodic announcements to reproduce by commas. For example:
+;periodic-announce = queue-periodic-announce,your-call-is-important,please-wait
+;
+; The announcements will be played in the order in which they are defined. After
+; playing the last announcement, the announcements begin again from the beginning.
+;
+; Calls may be recorded using Asterisk's monitor/MixMonitor resource
+; This can be enabled from within the Queue application, starting recording
+; when the call is actually picked up; thus, only successful calls are
+; recorded, and you are not recording while people are listening to MOH.
+; To enable monitoring, simply specify "monitor-format"; it will be disabled
+; otherwise.
+;
+; You can specify the monitor filename with by calling
+; Set(MONITOR_FILENAME=foo)
+; Otherwise it will use MONITOR_FILENAME=${UNIQUEID}
+;
+; Pick any one valid extension for monitor format recording. If you leave
+; monitor-format commented out, it will not record calls.
+;
+; monitor-format = gsm|wav|wav49
+;
+; Monitor Type
+; By setting monitor-type = MixMonitor, when specifying monitor-format
+; to enable recording of queue member conversations, app_queue will
+; now use the new MixMonitor application instead of Monitor so
+; the concept of "joining/mixing" the in/out files now goes away
+; when this is enabled. If you do not specify or comment out this option,
+; it will default to the old 'Monitor' behavior to keep backward
+; compatibility.
+;
+; monitor-type = MixMonitor
+;
+; ----------------------- TYPE MIXMONITOR OPTIONS -----------------------------
+;
+;
+; You can specify the options supplied to MixMonitor by calling
+; Set(MONITOR_OPTIONS=av(<x>)V(<x>)W(<x>))
+; The 'b' option for MixMonitor (only save audio to the file while bridged) is
+; implied.
+;
+; You can specify a post recording command to be executed after the end of
+; recording by calling
+; Set(MONITOR_EXEC=mv /var/spool/asterisk/monitor/^{MONITOR_FILENAME} /tmp/^{MONITOR_FILENAME})
+;
+; The command specified within the contents of MONITOR_EXEC will be executed when
+; the recording is over. Any strings matching ^{X} will be unescaped to ${X} and
+; all variables will be evaluated just prior to recording being started.
+;
+; The contents of MONITOR_FILENAME will also be unescaped from ^{X} to ${X} and
+; all variables will be evaluated just prior to recording being started.
+;
+;
+; This setting controls whether callers can join a queue with no members. There
+; are three choices:
+;
+; yes - callers can join a queue with no members or only unavailable members
+; no - callers cannot join a queue with no members
+; strict - callers cannot join a queue with no members or only unavailable
+; members
+; loose - same as strict, but paused queue members do not count as unavailable
+;
+; joinempty = yes
+;
+;
+; If you wish to remove callers from the queue when new callers cannot join,
+; set this setting to one of the same choices for 'joinempty'
+;
+; leavewhenempty = yes
+;
+;
+; If this is set to yes, the following manager events will be generated:
+; AgentCalled, AgentDump, AgentConnect, AgentComplete; setting this to
+; vars also sends all channel variables with the event.
+; (may generate some extra manager events, but probably ones you want)
+;
+; eventwhencalled = yes|no|vars
+;
+; If this is set to yes, the following manager events will be generated:
+; QueueMemberStatus
+; (may generate a WHOLE LOT of extra manager events)
+;
+; eventmemberstatus = no
+;
+; If you wish to report the caller's hold time to the member before they are
+; connected to the caller, set this to yes.
+;
+; reportholdtime = no
+;
+; If you want the queue to avoid sending calls to members whose devices are
+; known to be 'in use' (via the channel driver supporting that device state)
+; uncomment this option. (Note: only the SIP channel driver currently is able
+; to report 'in use'.)
+;
+; ringinuse = no
+;
+; If you wish to have a delay before the member is connected to the caller (or
+; before the member hears any announcement messages), set this to the number of
+; seconds to delay.
+;
+; memberdelay = 0
+;
+; If timeoutrestart is set to yes, then the timeout for an agent to answer is
+; reset if a BUSY or CONGESTION is received. This can be useful if agents
+; are able to cancel a call with reject or similar.
+;
+; timeoutrestart = no
+;
+; If you wish to implement a rule defined in queuerules.conf (see
+; configs/queuerules.conf.sample from the asterisk source directory for
+; more information about penalty rules) by default, you may specify this
+; by setting defaultrule to the rule's name
+;
+; defaultrule = myrule
+;
+; Each member of this call queue is listed on a separate line in
+; the form technology/dialstring. "member" means a normal member of a
+; queue. An optional penalty may be specified after a comma, such that
+; entries with higher penalties are considered last. An optional member
+; name may also be specified after a second comma, which is used in log
+; messages as a "friendly name". Multiple interfaces may share a single
+; member name. An optional state interface may be specified after a third
+; comma. This interface will be the one for which app_queue receives device
+; state notifications, even though the first interface specified is the one
+; that is actually called.
+;
+; It is important to ensure that channel drivers used for members are loaded
+; before app_queue.so itself or they may be marked invalid until reload. This
+; can be accomplished by explicitly listing them in modules.conf before app_queue.so
+;
+;member => Zap/1
+;member => Zap/2,10
+;member => Zap/3,10,Bob Johnson
+;member => Agent/1001
+;member => Agent/1002
+;member => Local/1000@default,0,John Smith,SIP/1000
+
+;
+; Note that using agent groups is probably not what you want. Strategies do
+; not propagate down to the Agent system so if you want round robin, least
+; recent, etc, you should list all the agents in this file individually and not
+; use agent groups.
+;
+;member => Agent/@1 ; Any agent in group 1
+;member => Agent/:1,1 ; Any agent in group 1, wait for first
+ ; available, but consider with penalty
+
diff --git a/trunk/configs/res_config_sqlite.conf b/trunk/configs/res_config_sqlite.conf
new file mode 100644
index 000000000..04e6ae2e7
--- /dev/null
+++ b/trunk/configs/res_config_sqlite.conf
@@ -0,0 +1,11 @@
+[general]
+
+; The database file.
+dbfile => /var/lib/asterisk/sqlite.db
+
+; Both config_table and cdr_table are optional. If config_table is omitted,
+; you must specify it in extconfig.conf. If it is both provided here and in
+; extconfig.conf, the value given here is used. If cdr_table is omitted, CDR
+; support is simply disabled.
+config_table => ast_config
+cdr_table => ast_cdr
diff --git a/trunk/configs/res_odbc.conf.sample b/trunk/configs/res_odbc.conf.sample
new file mode 100644
index 000000000..2fd9aa702
--- /dev/null
+++ b/trunk/configs/res_odbc.conf.sample
@@ -0,0 +1,48 @@
+;;; odbc setup file
+
+; ENV is a global set of environmental variables that will get set.
+; Note that all environmental variables can be seen by all connections,
+; so you can't have different values for different connections.
+[ENV]
+INFORMIXSERVER => my_special_database
+INFORMIXDIR => /opt/informix
+
+; All other sections are arbitrary names for database connections.
+
+[asterisk]
+enabled => no
+dsn => asterisk
+;username => myuser
+;password => mypass
+pre-connect => yes
+; What should we execute to ensure that our connection is still alive? The
+; statement should return a non-zero value in the first field of its first
+; record. The default is "select 1".
+;sanitysql => select 1
+
+
+[mysql2]
+enabled => no
+dsn => MySQL-asterisk
+username => myuser
+password => mypass
+pre-connect => yes
+
+; Certain servers, such as MS SQL Server and Sybase use the TDS protocol, which
+; limits the number of active queries per connection to 1. By setting up pools
+; of connections, Asterisk can be made to work with these servers.
+[sqlserver]
+enabled => no
+dsn => mickeysoft
+pooling => yes
+limit => 5
+username => oscar
+password => thegrouch
+pre-connect => yes
+sanitysql => select count(*) from systables
+; Many databases have a default of '\' to escape special characters. MS SQL
+; Server does not.
+backslash_is_escape => no
+
+
+
diff --git a/trunk/configs/res_pgsql.conf.sample b/trunk/configs/res_pgsql.conf.sample
new file mode 100644
index 000000000..1ec2293e2
--- /dev/null
+++ b/trunk/configs/res_pgsql.conf.sample
@@ -0,0 +1,14 @@
+;
+; Sample configuration for res_config_pgsql
+;
+; The value of dbhost may be either a hostname or an IP address.
+; If dbhost is commented out or the string "localhost", a connection
+; to the local host is assumed and dbsock is used instead of TCP/IP
+; to connect to the server.
+;
+[general]
+dbhost=127.0.0.1
+dbport=5432
+dbname=asterisk
+dbuser=asterisk
+dbpass=password
diff --git a/trunk/configs/res_snmp.conf.sample b/trunk/configs/res_snmp.conf.sample
new file mode 100644
index 000000000..5ca09d576
--- /dev/null
+++ b/trunk/configs/res_snmp.conf.sample
@@ -0,0 +1,10 @@
+;
+; Configuration file for res_snmp
+;
+
+[general]
+; We run as a subagent per default -- to run as a full agent
+; we must run as root (to be able to bind to port 161)
+;subagent = yes
+; SNMP must be explicitly enabled to be active
+;enabled = yes
diff --git a/trunk/configs/rpt.conf.sample b/trunk/configs/rpt.conf.sample
new file mode 100644
index 000000000..6aee784dc
--- /dev/null
+++ b/trunk/configs/rpt.conf.sample
@@ -0,0 +1,193 @@
+; Radio Repeater / Remote Base configuration file (for use with app_rpt)
+; As of app_rpt version 0.39, 12/20/2005
+;
+
+;[000] ; Node ID of first repeater
+
+;rxchannel = Zap/1 ; Rx audio/signalling channel
+; Note: if you use a unified interface (tx/rx on one channel), only
+; specify the rxchannel and the txchannel will be assumed from the rxchannel
+;txchannel = Zap/2 ; Tx audio/signalling channel
+;duplex = 2 ; (Optional) set duplex operating mode
+;; 0 = half duplex (telemetry and courtesy tones do not transmit)
+;; 1 = semi-half duplex (telemetry and courtesy tones transmit, but not
+;; repeated audio
+;; 2 = normal full-duplex mode (Default)
+;; 3 = full-duplex mode, without repeated audio from main input source
+;functions = functions-repeater ; DTMF function list
+;; specify this for a different function list then local when on link
+;;link_functions = functions-different ; DTMF function list for link
+;;phone_functions = functions-phone ; (optional) different functions for 'P' mode
+;;dphone_functions = functions-dphone ; (optional) different functions for 'D' mode
+;;nodes = nodes-different ; (optional) different node list
+;tonezone = us ; use US tones (default)
+;context = default ; dialing context for phone
+;callerid = "WB6NIL Repeater" <(213) 555-0123> ; Callerid for phone calls
+;idrecording = wb6nil ; id recording
+;accountcode=RADIO ; account code (optional)
+;funcchar = * ; function lead-in character (defaults to '*')
+;endchar = # ; command mode end character (defaults to '#')
+;;nobusyout=yes ; (optional) Do not busy-out reverse-patch when
+ ; normal patch in use
+;hangtime=1000 ; squelch tail hang time (in ms) (optional)
+;totime=100000 ; transmit time-out time (in ms) (optional)
+;idtime=30000 ; id interval time (in ms) (optional)
+;politeid=30000 ; time in milliseconds before ID timer
+ ; expires to try and ID in the tail.
+ ; (optional, default is 30000).
+;idtalkover=|iwb6nil/rpt ; Talkover ID (optional) default is none
+;unlinkedct=ct2 ; unlinked courtesy tone (optional) default is none
+
+;; The tailmessagetime,tailsquashedtime, and tailmessages need to be set
+;; to support tail messages. They can be omitted otherwise.
+;tailmessagetime=300000 ; Play a tail message every 5 mins
+;tailsquashedtime=30000 ; If squashed by another user,
+;; try again after 30 seconds
+;tailmessages=msg1,msg2,msg3 ;list of messages to be played for tail message
+
+; The default values for hangtime, time-out time, and id interval time are
+; 5 seconds (5000 ms), 3 minutes (180000 ms), and 5 minutes (300000 ms)
+; respectively
+
+;[001] ; Node ID of first repeater
+
+;rxchannel = Zap/3 ; Rx audio/signalling channel
+; Note: if you use a unified interface (tx/rx on one channel), only
+; specify the rxchannel and the txchannel will be assumed from the rxchannel
+;txchannel = Zap/4 ; Tx audio/signalling channel
+;functions = functions-repeater ; DTMF function list
+;; specify this for a different function list then local when on link
+;;link_functions = functions-different ; DTMF function list for link
+;;phone_functions = functions-phone ; (optional) different functions for 'P' mode
+;;dphone_functions = functions-dphone ; (optional) different functions for 'D' mode
+;;nodes = nodes-different ; (optional) different node list
+;tonezone = us ; use US tones (default)
+;context = default ; dialing context for phone
+;callerid = "WB6NIL Repeater" <(213) 555-0123> ; Callerid for phone calls
+;idrecording = wb6nil ; id recording
+;accountcode=RADIO ; account code (optional)
+;funcchar = * ; function lead-in character (defaults to '*')
+;endchar = # ; command mode end character (defaults to '#')
+;;nobusyout=yes ; (optional) Do not busy-out reverse-patch when
+ ; normal patch in use
+;hangtime=1000 ; squelch tail hang time (in ms) (optional)
+;totime=100000 ; transmit time-out time (in ms) (optional)
+;idtime=30000 ; id interval time (in ms) (optional)
+;politeid=30000 ; time in milliseconds before ID timer
+ ; expires to try and ID in the tail.
+ ; (optional, default is 30000).
+;idtalkover=|iwb6nil/rpt ; Talkover ID (optional) default is none
+;unlinkedct=ct2 ; unlinked courtesy tone (optional) default is none
+
+;[002] ; Node ID of remote base
+
+;rxchannel = Zap/5 ; Rx audio/signalling channel
+; Note: if you use a unified interface (tx/rx on one channel), only
+; specify the rxchannel and the txchannel will be assumed from the rxchannel
+;txchannel = Zap/6 ; Tx audio/signalling channel
+;functions = functions-remote
+;remote = ft897 ; Set remote=y for dumb remote or
+ ; remote=ft897 for Yaesu FT-897 or
+ ; remote=rbi for Doug Hall RBI1
+;iobase = 0x378 ; Specify IO port for parallel port (optional)
+
+;[functions-repeater]
+;1=ilink,1 ; Specific link disconnect
+;2=ilink,2 ; Specific Link connect - monitor only
+;3=ilink,3 ; Specific Link connect - transceive
+;4=ilink,4 ; Enter command mode on a specific link
+;7=ilink,5 ; Link status
+;;XX=ilink,6 ; Disconnect all links (not used here)
+
+;80=status,1 ; System info
+;81=status,2 ; Time
+;82=status,3 ; app_rpt.c Version
+
+;6=autopatchup ; Autopatch up
+;0=autopatchdn ; Autopatch down
+
+;90=cop,1 ; System warm boot
+;91=cop,2 ; System enable
+;92=cop,3 ; System disable
+
+;[functions-remote]
+
+;0=remote,1 ; Retrieve Memory
+;1=remote,2 ; Set freq.
+;2=remote,3 ; Set Rx PL tone.
+;40=remote,100 ; Rx PL off
+;41=remote,101 ; Rx PL on
+;42=remote,102 ; Tx PL off
+;43=remote,103 ; Tx PL on
+;44=remote,104 ; Low Pwr
+;45=remote,105 ; Med Pwr
+;46=remote,106 ; Hi Pwr
+;5=remote,5 ; Status
+
+;[telemetry]
+
+; Telemetry entries are shared across all repeaters
+; Can be a tone sequence, morse string, or a file
+;
+; |t - Tone escape sequence
+;
+; Tone sequences consist of 1 or more 4-tuple entries (freq1, freq2, duration, amplitude)
+; Single frequencies are created by setting freq1 or freq2 to zero.
+;
+; |m - Morse escape sequence
+;
+; Sends Morse code at the telemetry amplitude and telemetry frequency as defined in the
+; [morse] section.
+;
+; Follow with an alphanumeric string
+;
+; |i - Morse ID escape sequence
+;
+; Sends Morse code at the ID amplitude and ID frequency as defined in the
+; [morse] section.
+;
+; Follow with an alphanumeric string
+
+
+;ct1=|t(350,0,100,2048)(500,0,100,2048)(660,0,100,2048)
+;ct2=|t(660,880,150,2048)
+;ct3=|t(440,0,150,2048)
+;ct4=|t(550,0,150,2048)
+;ct5=|t(660,0,150,2048)
+;ct6=|t(880,0,150,2048)
+;ct7=|t(660,440,150,2048)
+;ct8=|t(700,1100,150,2048)
+;remotetx=|t(2000,0,75,2048)(0,0,75,0)(1600,0,75,2048);
+;remotemon=|t(1600,0,75,2048)
+;cmdmode=|t(900,903,200,2048)
+;functcomplete=|t(1000,0,100,2048)(0,0,100,0)(1000,0,100,2048)
+
+
+;[morse]
+
+;speed=20 ; Approximate speed in WPM
+;frequency=800 ; Morse Telemetry Frequency
+;amplitude=4096 ; Morse Telemetry Amplitude
+;idfrequency=330 ; Morse ID Frequency
+;idamplitude=2048 ; Morse ID Amplitude
+
+;[nodes]
+
+;000 = context_A@foo.bar.com/1234,foo.bar.com
+;001 = context_B@baz.waldo.com/4321,baz.waldo.com
+;002 = context_C@pepper.salt.com/5678,pepper.salt.com,y ; this is a remote
+
+;of course, you can also specify these with domain names, but why rely
+;on DNS working unnecessarily?
+
+;[memory]
+
+;; this example gives you 146.460, simplex, 100.0 HZ PL, hi-power, transmit PL
+;00 = 146.460,100.0,sht
+;; this example gives you 146.940, minus offset, 100.0 HZ PL, low-power, no PL
+;01 = 146.940,100.0,-l
+
+; The format for these entries is: Receive-Freq,Receive-PL,Attrbutes
+; Attributes: l=low power, m=medium power, h=high power, -=minus offset,
+; s=simplex, +=plus offset, t=tx PL enable, r=rx PL enable
+
diff --git a/trunk/configs/rtp.conf.sample b/trunk/configs/rtp.conf.sample
new file mode 100644
index 000000000..a96a0a09b
--- /dev/null
+++ b/trunk/configs/rtp.conf.sample
@@ -0,0 +1,22 @@
+;
+; RTP Configuration
+;
+[general]
+;
+; RTP start and RTP end configure start and end addresses
+;
+; Defaults are rtpstart=5000 and rtpend=31000
+;
+rtpstart=10000
+rtpend=20000
+;
+; Whether to enable or disable UDP checksums on RTP traffic
+;
+;rtpchecksums=no
+;
+; The amount of time a DTMF digit with no 'end' marker should be
+; allowed to continue (in 'samples', 1/8000 of a second)
+;
+;dtmftimeout=3000
+; rtcpinterval = 5000 ; Milliseconds between rtcp reports
+ ;(min 500, max 60000, default 5000)
diff --git a/trunk/configs/say.conf.sample b/trunk/configs/say.conf.sample
new file mode 100644
index 000000000..e8b8ed7ae
--- /dev/null
+++ b/trunk/configs/say.conf.sample
@@ -0,0 +1,200 @@
+;
+; language configuration
+;
+
+[general]
+mode=old ; method for playing numbers and dates
+ ; old - using asterisk core function
+ ; new - using this configuration file
+
+; The new language routines produce strings of the form
+; prefix:[format:]data
+; that are matched against the rules in this file to produce
+; an output.
+;
+; The data is generally the string to be spelled (either a number,
+; an ascii string or a date/time in the format specified below).
+; It is available, in the right hand side of a rule, as variable ${SAY}.
+;
+; The format is optional and normally used only for date/time.
+; The prefix is used to select the pronunciation - standard
+; prefixes are
+; num used for numbers
+; enum used for enumerations
+; date for dates
+; time for times
+; datetime for dates and times
+; char for character strings
+; phonetic for phonetic strings
+; digit for digit strings
+;
+; but others can be used at will.
+;
+; Processing occurs as follows:
+; If the format is empty, or there is no format, the entire
+; string is matched against one of the pattern on the left hand side.
+; On the first match, the various comma-separated components on the right
+; hand side are pronounced, as follows:
+; + a component starting with a prefix: (i.e. with a ':' in it)
+; is re-processed according to these rules;
+; + a component without a ':' in it is considered a filename and
+; the corresponding file is played.
+;
+; If the format is non-empty, the format is split into its components
+; (individual characters, or filenames in single quotes), and then
+; filenames are played, whereas single characters are used to
+; generate a new string format:pat:data to be processed.
+;
+; DATES/AND TIMES assume that the date info is available in
+; the form YYYYMMDDHHmm.ss-dow-doy
+; with 4 digits for the year, 2 for month, day, hour, minutes, seconds,
+; one digit for the day-of-week, and 3 digits for the day-of-year.
+;
+; Example:
+; datetime::200604172030.00-4-102
+; (typical format for a date) is first matched against the line
+; datetime::. => date:AdBY 'digits/at' IMp:${SAY}
+; which is normally present with the default format for dates.
+; In turn, the format string "AdBY 'digits/at' IMp" results in
+; the sequence
+; date:A:200604172030.00-4-102
+; date:d:200604172030.00-4-102
+; date:B:200604172030.00-4-102
+; date:Y:200604172030.00-4-102
+; digits/at
+; date:I:200604172030.00-4-102
+; date:M:200604172030.00-4-102
+; date:p:200604172030.00-4-102
+;
+;
+; Remember, normally X Z N are special, and the search is
+; case insensitive, so you must use [X] [N] [Z] .. if you
+; want exact match.
+
+; We start with the basic rules that might be more-or-less
+; language-independent
+
+[digit-base](!) ; base rule for digit strings
+ ; XXX incomplete yet
+ _digit:[0-9] => digits/${SAY}
+ _digit:[-] => letters/dash
+ _digit:[*] => letters/star
+ _digit:[@] => letters/at
+ _digit:[0-9]. => digit:${SAY:0:1}, digit:${SAY:1}
+
+[date-base](!) ; base rules for dates and times
+ ; the 'SAY' variable contains YYYYMMDDHHmm.ss-dow-doy
+ ; these rule map the strftime attributes.
+ _date:Y:. => num:${SAY:0:4} ; year, 19xx
+ _date:[Bb]:. => digits/mon-$[${SAY:4:2}-1] ; month name, 0..11
+ _date:[Aa]:. => digits/day-${SAY:16:1} ; day of week
+ _date:[de]:. => num:${SAY:6:2} ; day of month
+ _date:[hH]:. => num:${SAY:8:2} ; hour
+ _date:[I]:. => num:$[${SAY:8:2} % 12] ; hour 0-12
+ _date:[M]:. => num:${SAY:10:2} ; minute
+ ; XXX too bad the '?' function does not remove the quotes
+ ; _date:[pP]:. => digits/$[ ${SAY:10:2} > 12 ? "p-m" :: "a-m"] ; am pm
+ _date:[pP]:. => digits/p-m ; am pm
+ _date:[S]:. => num:${SAY:13:2} ; seconds
+
+[en-base](!)
+ _[n]um:0. => num:${SAY:1}
+ _[n]um:X => digits/${SAY}
+ _[n]um:1X => digits/${SAY}
+ _[n]um:[2-9]0 => digits/${SAY}
+ _[n]um:[2-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1}
+ _[n]um:XXX => num:${SAY:0:1}, digits/hundred, num:${SAY:1}
+
+ _[n]um:XXXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1}
+ _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2}
+ _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3}
+
+ _[n]um:XXXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
+ _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2}
+ _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3}
+
+ _[n]um:XXXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1}
+ _[n]um:XXXXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2}
+ _[n]um:XXXXXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3}
+
+ ; enumeration
+ _e[n]um:X => digits/h-${SAY}
+ _e[n]um:1X => digits/h-${SAY}
+ _e[n]um:[2-9]0 => digits/h-${SAY}
+ _e[n]um:[2-9][1-9] => num:${SAY:0:1}0, digits/h-${SAY:1}
+ _e[n]um:[1-9]XX => num:${SAY:0:1}, digits/hundred, enum:${SAY:1}
+
+[it](digit-base,date-base)
+ _[n]um:0. => num:${SAY:1}
+ _[n]um:X => digits/${SAY}
+ _[n]um:1X => digits/${SAY}
+ _[n]um:[2-9]0 => digits/${SAY}
+ _[n]um:[2-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1}
+ _[n]um:1XX => digits/hundred, num:${SAY:1}
+ _[n]um:[2-9]XX => num:${SAY:0:1}, digits/hundred, num:${SAY:1}
+
+ _[n]um:1XXX => digits/thousand, num:${SAY:1}
+ _[n]um:[2-9]XXX => num:${SAY:0:1}, digits/thousands, num:${SAY:1}
+ _[n]um:XXXXX => num:${SAY:0:2}, digits/thousands, num:${SAY:2}
+ _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousands, num:${SAY:3}
+
+ _[n]um:1XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
+ _[n]um:[2-9]XXXXXX => num:${SAY:0:1}, digits/millions, num:${SAY:1}
+ _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2}
+ _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3}
+
+ _datetime::. => date:AdBY 'digits/at' IMp:${SAY}
+ _date::. => date:AdBY:${SAY}
+ _time::. => date:IMp:${SAY}
+
+[en](en-base,date-base,digit-base)
+ _datetime::. => date:AdBY 'digits/at' IMp:${SAY}
+ _date::. => date:AdBY:${SAY}
+ _time::. => date:IMp:${SAY}
+
+[de](date-base,digit-base)
+ _[n]um:0. => num:${SAY:1}
+ _[n]um:X => digits/${SAY}
+ _[n]um:1X => digits/${SAY}
+ _[n]um:[2-9]0 => digits/${SAY}
+ _[n]um:[2-9][1-9] => digits/${SAY:1}-and, digits/${SAY:0:1}0
+ _[n]um:1XX => digits/ein, digits/hundred, num:${SAY:1}
+ _[n]um:[2-9]XX => digits/${SAY:0:1}, digits/hundred, num:${SAY:1}
+ _[n]um:1XXX => digits/ein, digits/thousand, num:${SAY:1}
+ _[n]um:[2-9]XXX => digits/${SAY:0:1}, digits/thousand, num:${SAY:1}
+ _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2}
+ _[n]um:X00XXX => digits/${SAY:0:1}, digits/hundred, digits/thousand, num:${SAY:3}
+ _[n]um:XXXXXX => digits/${SAY:0:1}, digits/hundred, num:${SAY:1}
+ _[n]um:1XXXXXX => digits/eine, digits/million, num:${SAY:1}
+ _[n]um:[2-9]XXXXXX => digits/${SAY:0:1}, digits/millions, num:${SAY:1}
+ _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2}
+ _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3}
+
+ _datetime::. => date:AdBY 'digits/at' IMp:${SAY}
+ _date::. => date:AdBY:${SAY}
+ _time::. => date:IMp:${SAY}
+
+[hu](digit-base,date-base)
+ _[n]um:0. => num:${SAY:1}
+ _[n]um:X => digits/${SAY}
+ _[n]um:1[1-9] => digits/10en, digits/${SAY:1}
+ _[n]um:2[1-9] => digits/20on, digits/${SAY:1}
+ _[n]um:[1-9]0 => digits/${SAY}
+ _[n]um:[3-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1}
+ _[n]um:XXX => num:${SAY:0:1}, digits/hundred, num:${SAY:1}
+
+ _[n]um:XXXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1}
+ _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2}
+ _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3}
+
+ _[n]um:XXXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
+ _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2}
+ _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3}
+
+ _[n]um:XXXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1}
+ _[n]um:XXXXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2}
+ _[n]um:XXXXXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3}
+
+ _datetime::. => date:YBdA k 'ora' M 'perc':${SAY}
+ _date::. => date:YBdA:${SAY}
+ _time::. => date:k 'ora' M 'perc':${SAY}
diff --git a/trunk/configs/sip.conf.sample b/trunk/configs/sip.conf.sample
new file mode 100644
index 000000000..62eee41bb
--- /dev/null
+++ b/trunk/configs/sip.conf.sample
@@ -0,0 +1,896 @@
+;
+; SIP Configuration example for Asterisk
+;
+; SIP dial strings
+;-----------------------------------------------------------
+; In the dialplan (extensions.conf) you can use several
+; syntaxes for dialing SIP devices.
+; SIP/devicename
+; SIP/username@domain (SIP uri)
+; SIP/username@host:port
+; SIP/devicename/extension
+;
+;
+; Devicename
+; devicename is defined as a peer in a section below.
+;
+; username@domain
+; Call any SIP user on the Internet
+; (Don't forget to enable DNS SRV records if you want to use this)
+;
+; devicename/extension
+; If you define a SIP proxy as a peer below, you may call
+; SIP/proxyhostname/user or SIP/user@proxyhostname
+; where the proxyhostname is defined in a section below
+; This syntax also works with ATA's with FXO ports
+;
+; All of these dial strings specify the SIP request URI.
+; In addition, you can specify a specific To: header by adding an
+; exclamation mark after the dial string, like
+;
+; SIP/sales@mysipproxy!sales@edvina.net
+;
+; CLI Commands
+; -------------------------------------------------------------
+; Useful CLI commands to check peers/users:
+; sip show peers Show all SIP peers (including friends)
+; sip show users Show all SIP users (including friends)
+; sip show registry Show status of hosts we register with
+;
+; sip set debug Show all SIP messages
+;
+; sip reload Reload configuration file
+; Active SIP peers will not be reconfigured
+;
+
+; ** Deprecated configuration options **
+; The "call-limit" configuation option is deprecated. It still works in
+; this version of Asterisk, but will disappear in the next version.
+; You are encouraged to use the dialplan groupcount functionality
+; to enforce call limits instead of using this channel-specific method.
+;
+; You can still set limits per device in sip.conf or in a database by using
+; "setvar" to set variables that can be used in the dialplan for various limits.
+
+[general]
+context=default ; Default context for incoming calls
+;allowguest=no ; Allow or reject guest calls (default is yes)
+;match_auth_username=yes ; if available, match user entry using the
+ ; 'username' field from the authentication line
+ ; instead of the From: field.
+
+allowoverlap=no ; Disable overlap dialing support. (Default is yes)
+;allowtransfer=no ; Disable all transfers (unless enabled in peers or users)
+ ; Default is enabled
+;realm=mydomain.tld ; Realm for digest authentication
+ ; defaults to "asterisk". If you set a system name in
+ ; asterisk.conf, it defaults to that system name
+ ; Realms MUST be globally unique according to RFC 3261
+ ; Set this to your host name or domain name
+bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
+ ; bindport is the local UDP port that Asterisk will listen on
+bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
+
+tcpenable=yes ; Enable server for incoming TCP connections (default is yes)
+tcpbindaddr=0.0.0.0 ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces)
+ ; Optionally add a port number, 192.168.1.1:5062 (default is port 5060)
+
+;tlsenable=no ; Enable server for incoming TLS (secure) connections (default is no)
+;tlsbindaddr=0.0.0.0 ; IP address for TLS server to bind to (0.0.0.0) binds to all interfaces)
+ ; Optionally add a port number, 192.168.1.1:5063 (default is port 5061)
+;tlscertfile=asterisk.pem ; Certificate file (*.pem only) to use for TLS connections
+ ; default is to look for "asterisk.pem" in current directory
+srvlookup=yes ; Enable DNS SRV lookups on outbound calls
+ ; Note: Asterisk only uses the first host
+ ; in SRV records
+ ; Disabling DNS SRV lookups disables the
+ ; ability to place SIP calls based on domain
+ ; names to some other SIP users on the Internet
+
+;domain=mydomain.tld ; Set default domain for this host
+ ; If configured, Asterisk will only allow
+ ; INVITE and REFER to non-local domains
+ ; Use "sip show domains" to list local domains
+;pedantic=yes ; Enable checking of tags in headers,
+ ; international character conversions in URIs
+ ; and multiline formatted headers for strict
+ ; SIP compatibility (defaults to "no")
+
+; See qos.tex or Quality of Service section of asterisk.pdf for a description of these parameters.
+;tos_sip=cs3 ; Sets TOS for SIP packets.
+;tos_audio=ef ; Sets TOS for RTP audio packets.
+;tos_video=af41 ; Sets TOS for RTP video packets.
+;tos_text=af41 ; Sets TOS for RTP text packets.
+
+;cos_sip=3 ; Sets 802.1p priority for SIP packets.
+;cos_audio=5 ; Sets 802.1p priority for RTP audio packets.
+;cos_video=4 ; Sets 802.1p priority for RTP video packets.
+;cos_text=3 ; Sets 802.1p priority for RTP text packets.
+
+;maxexpiry=3600 ; Maximum allowed time of incoming registrations
+ ; and subscriptions (seconds)
+;minexpiry=60 ; Minimum length of registrations/subscriptions (default 60)
+;defaultexpiry=120 ; Default length of incoming/outgoing registration
+;qualifyfreq=60 ; Qualification: How often to check for the
+ ; host to be up in seconds
+ ; Set to low value if you use low timeout for
+ ; NAT of UDP sessions
+;notifymimetype=text/plain ; Allow overriding of mime type in MWI NOTIFY
+;buggymwi=no ; Cisco SIP firmware doesn't support the MWI RFC
+ ; fully. Enable this option to not get error messages
+ ; when sending MWI to phones with this bug.
+;vmexten=voicemail ; dialplan extension to reach mailbox sets the
+ ; Message-Account in the MWI notify message
+ ; defaults to "asterisk"
+;disallow=all ; First disallow all codecs
+;allow=ulaw ; Allow codecs in order of preference
+;allow=ilbc ; see doc/rtp-packetization for framing options
+;
+; This option specifies a preference for which music on hold class this channel
+; should listen to when put on hold if the music class has not been set on the
+; channel with Set(CHANNEL(musicclass)=whatever) in the dialplan, and the peer
+; channel putting this one on hold did not suggest a music class.
+;
+; This option may be specified globally, or on a per-user or per-peer basis.
+;
+;mohinterpret=default
+;
+; This option specifies which music on hold class to suggest to the peer channel
+; when this channel places the peer on hold. It may be specified globally or on
+; a per-user or per-peer basis.
+;
+;mohsuggest=default
+;
+;language=en ; Default language setting for all users/peers
+ ; This may also be set for individual users/peers
+;relaxdtmf=yes ; Relax dtmf handling
+;trustrpid = no ; If Remote-Party-ID should be trusted
+;sendrpid = yes ; If Remote-Party-ID should be sent
+;progressinband=never ; If we should generate in-band ringing always
+ ; use 'never' to never use in-band signalling, even in cases
+ ; where some buggy devices might not render it
+ ; Valid values: yes, no, never Default: never
+;useragent=Asterisk PBX ; Allows you to change the user agent string
+ ; The default user agent string also contains the Asterisk
+ ; version. If you don't want to expose this, change the
+ ; useragent string.
+;sdpsession=Asterisk PBX ; Allows you to change the SDP session name string, (s=)
+ ; Like the useragent parameter, the default user agent string
+ ; also contains the Asterisk version.
+;sdpowner=root ; Allows you to change the username field in the SDP owner string, (o=)
+ ; This field MUST NOT contain spaces
+;promiscredir = no ; If yes, allows 302 or REDIR to non-local SIP address
+ ; Note that promiscredir when redirects are made to the
+ ; local system will cause loops since Asterisk is incapable
+ ; of performing a "hairpin" call.
+;usereqphone = no ; If yes, ";user=phone" is added to uri that contains
+ ; a valid phone number
+;dtmfmode = rfc2833 ; Set default dtmfmode for sending DTMF. Default: rfc2833
+ ; Other options:
+ ; info : SIP INFO messages (application/dtmf-relay)
+ ; shortinfo : SIP INFO messages (application/dtmf)
+ ; inband : Inband audio (requires 64 kbit codec -alaw, ulaw)
+ ; auto : Use rfc2833 if offered, inband otherwise
+
+;compactheaders = yes ; send compact sip headers.
+;
+;videosupport=yes ; Turn on support for SIP video. You need to turn this on
+ ; in the this section to get any video support at all.
+ ; You can turn it off on a per peer basis if the general
+ ; video support is enabled, but you can't enable it for
+ ; one peer only without enabling in the general section.
+;maxcallbitrate=384 ; Maximum bitrate for video calls (default 384 kb/s)
+ ; Videosupport and maxcallbitrate is settable
+ ; for peers and users as well
+;callevents=no ; generate manager events when sip ua
+ ; performs events (e.g. hold)
+;alwaysauthreject = yes ; When an incoming INVITE or REGISTER is to be rejected,
+ ; for any reason, always reject with '401 Unauthorized'
+ ; instead of letting the requester know whether there was
+ ; a matching user or peer for their request
+
+;g726nonstandard = yes ; If the peer negotiates G726-32 audio, use AAL2 packing
+ ; order instead of RFC3551 packing order (this is required
+ ; for Sipura and Grandstream ATAs, among others). This is
+ ; contrary to the RFC3551 specification, the peer _should_
+ ; be negotiating AAL2-G726-32 instead :-(
+;outboundproxy=proxy.provider.domain ; send outbound signaling to this proxy, not directly to the devices
+;outboundproxy=proxy.provider.domain:8080 ; send outbound signaling to this proxy, not directly to the devices
+;outboundproxy=proxy.provider.domain,force ; Send ALL outbound signalling to proxy, ignoring route: headers
+;matchexterniplocally = yes ; Only substitute the externip or externhost setting if it matches
+ ; your localnet setting. Unless you have some sort of strange network
+ ; setup you will not need to enable this.
+
+;
+; If regcontext is specified, Asterisk will dynamically create and destroy a
+; NoOp priority 1 extension for a given peer who registers or unregisters with
+; us and have a "regexten=" configuration item.
+; Multiple contexts may be specified by separating them with '&'. The
+; actual extension is the 'regexten' parameter of the registering peer or its
+; name if 'regexten' is not provided. If more than one context is provided,
+; the context must be specified within regexten by appending the desired
+; context after '@'. More than one regexten may be supplied if they are
+; separated by '&'. Patterns may be used in regexten.
+;
+;regcontext=sipregistrations
+;regextenonqualify=yes ; Default "no"
+ ; If you have qualify on and the peer becomes unreachable
+ ; this setting will enforce inactivation of the regexten
+ ; extension for the peer
+;
+;--------------------------- SIP timers ----------------------------------------------------
+; These timers are used primarily in INVITE transactions.
+; The default for Timer T1 is 500 ms or the measured run-trip time between
+; Asterisk and the device if you have qualify=yes for the device.
+;
+;t1min=100 ; Minimum roundtrip time for messages to monitored hosts
+ ; Defaults to 100 ms
+;timert1=500 ; Default T1 timer
+ ; Defaults to 500 ms
+;timerb=32000 ; Call setup timer. If a provisional response is not received
+ ; in this amount of time, the call will autocongest
+ ; Defaults to 64*timert1
+
+;--------------------------- RTP timers ----------------------------------------------------
+; These timers are currently used for both audio and video streams. The RTP timeouts
+; are only applied to the audio channel.
+; The settings are settable in the global section as well as per device
+;
+;rtptimeout=60 ; Terminate call if 60 seconds of no RTP or RTCP activity
+ ; on the audio channel
+ ; when we're not on hold. This is to be able to hangup
+ ; a call in the case of a phone disappearing from the net,
+ ; like a powerloss or grandma tripping over a cable.
+;rtpholdtimeout=300 ; Terminate call if 300 seconds of no RTP or RTCP activity
+ ; on the audio channel
+ ; when we're on hold (must be > rtptimeout)
+;rtpkeepalive=<secs> ; Send keepalives in the RTP stream to keep NAT open
+ ; (default is off - zero)
+
+;--------------------------- SIP Session-Timers (RFC 4028)------------------------------------
+; SIP Session-Timers provide an end-to-end keep-alive mechanism for active SIP sessions.
+; This mechanism can detect and reclaim SIP channels that do not terminate through normal
+; signaling procedures. Session-Timers can be configured globally or at a user/peer level.
+; The operation of Session-Timers is driven by the following configuration parameters:
+;
+; * session-timers - Session-Timers feature operates in the following three modes:
+; originate : Request and run session-timers always
+; accept : Run session-timers only when requested by other UA
+; refuse : Do not run session timers in any case
+; The default mode of operation is 'accept'.
+; * session-expires - Maximum session refresh interval in seconds. Defaults to 1800 secs.
+; * session-minse - Minimum session refresh interval in seconds. Defualts to 90 secs.
+; * session-refresher - The session refresher (uac|uas). Defaults to 'uas'.
+;
+;session-timers=originate
+;session-expires=600
+;session-minse=90
+;session-refresher=uas
+
+
+;--------------------------- SIP DEBUGGING ---------------------------------------------------
+;sipdebug = yes ; Turn on SIP debugging by default, from
+ ; the moment the channel loads this configuration
+;recordhistory=yes ; Record SIP history by default
+ ; (see sip history / sip no history)
+;dumphistory=yes ; Dump SIP history at end of SIP dialogue
+ ; SIP history is output to the DEBUG logging channel
+
+
+;--------------------------- STATUS NOTIFICATIONS (SUBSCRIPTIONS) ----------------------------
+; You can subscribe to the status of extensions with a "hint" priority
+; (See extensions.conf.sample for examples)
+; chan_sip support two major formats for notifications: dialog-info and SIMPLE
+;
+; You will get more detailed reports (busy etc) if you have a call counter enabled
+; for a device.
+;
+; If you set the busylevel, we will indicate busy when we have a number of calls that
+; matches the busylevel treshold.
+;
+; For queues, you will need this level of detail in status reporting, regardless
+; if you use SIP subscriptions. Queues and manager use the same internal interface
+; for reading status information.
+;
+; Note: Subscriptions does not work if you have a realtime dialplan and use the
+; realtime switch.
+;
+;allowsubscribe=no ; Disable support for subscriptions. (Default is yes)
+;subscribecontext = default ; Set a specific context for SUBSCRIBE requests
+ ; Useful to limit subscriptions to local extensions
+ ; Settable per peer/user also
+;notifyringing = yes ; Notify subscriptions on RINGING state (default: no)
+;notifyhold = yes ; Notify subscriptions on HOLD state (default: no)
+ ; Turning on notifyringing and notifyhold will add a lot
+ ; more database transactions if you are using realtime.
+;callcounter = yes ; Enable call counters on devices. This can be set per
+ ; device too.
+;counteronpeer = yes ; Apply call counting on peers only. This will improve
+ ; status notification when you are using type=friend
+ ; Inbound calls, that really apply to the user part
+ ; of a friend will now be added to and compared with
+ ; the peer counter instead of applying two call counters,
+ ; one for the peer and one for the user.
+ ; "sip show inuse" will only show active calls on
+ ; the peer side of a "type=friend" object if this
+ ; setting is turned on.
+
+;----------------------------------------- T.38 FAX PASSTHROUGH SUPPORT -----------------------
+;
+; This setting is available in the [general] section as well as in device configurations.
+; Setting this to yes, enables T.38 fax (UDPTL) passthrough on SIP to SIP calls, provided
+; both parties have T38 support enabled in their Asterisk configuration
+; This has to be enabled in the general section for all devices to work. You can then
+; disable it on a per device basis.
+;
+; T.38 faxing only works in SIP to SIP calls, with no local or agent channel being used.
+;
+; t38pt_udptl = yes ; Default false
+;
+;----------------------------------------- OUTBOUND SIP REGISTRATIONS ------------------------
+; Asterisk can register as a SIP user agent to a SIP proxy (provider)
+; Format for the register statement is:
+; register => [transport://]user[:secret[:authuser]]@host[:port][/extension]
+;
+;
+;
+; If no extension is given, the 's' extension is used. The extension needs to
+; be defined in extensions.conf to be able to accept calls from this SIP proxy
+; (provider).
+;
+; host is either a host name defined in DNS or the name of a section defined
+; below.
+;
+; A similar effect can be achieved by adding a "callbackextension" option in a peer section.
+; this is equivalent to having the following line in the general section:
+;
+; register => username:secret@host/callbackextension
+;
+; and more readable because you don't have to write the parameters in two places
+; (note that the "port" is ignored - this is a bug that should be fixed).
+;
+; Examples:
+;
+;register => 1234:password@mysipprovider.com
+;
+; This will pass incoming calls to the 's' extension
+;
+;
+;register => 2345:password@sip_proxy/1234
+;
+; Register 2345 at sip provider 'sip_proxy'. Calls from this provider
+; connect to local extension 1234 in extensions.conf, default context,
+; unless you configure a [sip_proxy] section below, and configure a
+; context.
+; Tip 1: Avoid assigning hostname to a sip.conf section like [provider.com]
+; Tip 2: Use separate type=peer and type=user sections for SIP providers
+; (instead of type=friend) if you have calls in both directions
+
+;registertimeout=20 ; retry registration calls every 20 seconds (default)
+;registerattempts=10 ; Number of registration attempts before we give up
+ ; 0 = continue forever, hammering the other server
+ ; until it accepts the registration
+ ; Default is 0 tries, continue forever
+
+;----------------------------------------- NAT SUPPORT ------------------------
+;
+; WARNING: SIP operation behind a NAT is tricky and you really need
+; to read and understand well the following section.
+;
+; When Asterisk is behind a NAT device, the "local" address (and port) that
+; a socket is bound to has different values when seen from the inside or
+; from the outside of the NATted network. Unfortunately this address must
+; be communicated to the outside (e.g. in SIP and SDP messages), and in
+; order to determine the correct value Asterisk needs to know:
+;
+; + whether it is talking to someone "inside" or "outside" of the NATted network.
+; This is configured by assigning the "localnet" parameter with a list
+; of network addresses that are considered "inside" of the NATted network.
+; IF LOCALNET IS NOT SET, THE EXTERNAL ADDRESS WILL NOT BE SET CORRECTLY.
+; Multiple entries are allowed, e.g. a reasonable set is the following:
+;
+; localnet=192.168.0.0/255.255.0.0 ; RFC 1918 addresses
+; localnet=10.0.0.0/255.0.0.0 ; Also RFC1918
+; localnet=172.16.0.0/12 ; Another RFC1918 with CIDR notation
+; localnet=169.254.0.0/255.255.0.0 ; Zero conf local network
+;
+; + the "externally visible" address and port number to be used when talking
+; to a host outside the NAT. This information is derived by one of the
+; following (mutually exclusive) config file parameters:
+;
+; a. "externip = hostname[:port]" specifies a static address[:port] to
+; be used in SIP and SDP messages.
+; The hostname is looked up only once, when [re]loading sip.conf .
+; If a port number is not present, use the "bindport" value (which is
+; not guaranteed to work correctly, because a NAT box might remap the
+; port number as well as the address).
+; This approach can be useful if you have a NAT device where you can
+; configure the mapping statically. Examples:
+;
+; externip = 12.34.56.78 ; use this address.
+; externip = 12.34.56.78:9900 ; use this address and port.
+; externip = mynat.my.org:12600 ; Public address of my nat box.
+;
+; b. "externhost = hostname[:port]" is similar to "externip" except
+; that the hostname is looked up every "externrefresh" seconds
+; (default 10s). This can be useful when your NAT device lets you choose
+; the port mapping, but the IP address is dynamic.
+; Beware, you might suffer from service disruption when the name server
+; resolution fails. Examples:
+;
+; externhost=foo.dyndns.net ; refreshed periodically
+; externrefresh=180 ; change the refresh interval
+;
+; c. "stunaddr = stun.server[:port]" queries the STUN server specified
+; as an argument to obtain the external address/port.
+; Queries are also sent periodically every "externrefresh" seconds
+; (as a side effect, sending the query also acts as a keepalive for
+; the state entry on the nat box):
+;
+; stunaddr = foo.stun.com:3478
+; externrefresh = 15
+;
+; Note that at the moment all these mechanism work only for the SIP socket.
+; The IP address discovered with externip/externhost/STUN is reused for
+; media sessions as well, but the port numbers are not remapped so you
+; may still experience problems.
+;
+; NOTE 1: in some cases, NAT boxes will use different port numbers in
+; the internal<->external mapping. In these cases, the "externip" and
+; "externhost" might not help you configure addresses properly, and you
+; really need to use STUN.
+;
+; NOTE 2: when using "externip" or "externhost", the address part is
+; also used as the external address for media sessions.
+; If you use "stunaddr", STUN queries will be sent to the same server
+; also from media sockets, and this should permit a correct mapping of
+; the port numbers as well.
+;
+; In addition to the above, Asterisk has an additional "nat" parameter to
+; address NAT-related issues in incoming SIP or media sessions.
+; In particular, depending on the 'nat= ' settings described below, Asterisk
+; may override the address/port information specified in the SIP/SDP messages,
+; and use the information (sender address) supplied by the network stack instead.
+; However, this is only useful if the external traffic can reach us.
+; The following settings are allowed (both globally and in individual sections):
+;
+; nat = no ; default. Use NAT mode only according to RFC3581 (;rport)
+; nat = yes ; Always ignore info and assume NAT
+; nat = never ; Never attempt NAT mode or RFC3581 support
+; nat = route ; route = Assume NAT, don't send rport
+; ; (work around more UNIDEN bugs)
+
+;----------------------------------- MEDIA HANDLING --------------------------------
+; By default, Asterisk tries to re-invite the audio to an optimal path. If there's
+; no reason for Asterisk to stay in the media path, the media will be redirected.
+; This does not really work with in the case where Asterisk is outside and have
+; clients on the inside of a NAT. In that case, you want to set canreinvite=nonat
+;
+;canreinvite=yes ; Asterisk by default tries to redirect the
+ ; RTP media stream (audio) to go directly from
+ ; the caller to the callee. Some devices do not
+ ; support this (especially if one of them is behind a NAT).
+ ; The default setting is YES. If you have all clients
+ ; behind a NAT, or for some other reason wants Asterisk to
+ ; stay in the audio path, you may want to turn this off.
+
+ ; This setting also affect direct RTP
+ ; at call setup (a new feature in 1.4 - setting up the
+ ; call directly between the endpoints instead of sending
+ ; a re-INVITE).
+
+;directrtpsetup=yes ; Enable the new experimental direct RTP setup. This sets up
+ ; the call directly with media peer-2-peer without re-invites.
+ ; Will not work for video and cases where the callee sends
+ ; RTP payloads and fmtp headers in the 200 OK that does not match the
+ ; callers INVITE. This will also fail if canreinvite is enabled when
+ ; the device is actually behind NAT.
+
+;canreinvite=nonat ; An additional option is to allow media path redirection
+ ; (reinvite) but only when the peer where the media is being
+ ; sent is known to not be behind a NAT (as the RTP core can
+ ; determine it based on the apparent IP address the media
+ ; arrives from).
+
+;canreinvite=update ; Yet a third option... use UPDATE for media path redirection,
+ ; instead of INVITE. This can be combined with 'nonat', as
+ ; 'canreinvite=update,nonat'. It implies 'yes'.
+
+;----------------------------------------- REALTIME SUPPORT ------------------------
+; For additional information on ARA, the Asterisk Realtime Architecture,
+; please read realtime.txt and extconfig.txt in the /doc directory of the
+; source code.
+;
+;rtcachefriends=yes ; Cache realtime friends by adding them to the internal list
+ ; just like friends added from the config file only on a
+ ; as-needed basis? (yes|no)
+
+;rtsavesysname=yes ; Save systemname in realtime database at registration
+ ; Default= no
+
+;rtupdate=yes ; Send registry updates to database using realtime? (yes|no)
+ ; If set to yes, when a SIP UA registers successfully, the ip address,
+ ; the origination port, the registration period, and the username of
+ ; the UA will be set to database via realtime.
+ ; If not present, defaults to 'yes'.
+;rtautoclear=yes ; Auto-Expire friends created on the fly on the same schedule
+ ; as if it had just registered? (yes|no|<seconds>)
+ ; If set to yes, when the registration expires, the friend will
+ ; vanish from the configuration until requested again. If set
+ ; to an integer, friends expire within this number of seconds
+ ; instead of the registration interval.
+
+;ignoreregexpire=yes ; Enabling this setting has two functions:
+ ;
+ ; For non-realtime peers, when their registration expires, the
+ ; information will _not_ be removed from memory or the Asterisk database
+ ; if you attempt to place a call to the peer, the existing information
+ ; will be used in spite of it having expired
+ ;
+ ; For realtime peers, when the peer is retrieved from realtime storage,
+ ; the registration information will be used regardless of whether
+ ; it has expired or not; if it expires while the realtime peer
+ ; is still in memory (due to caching or other reasons), the
+ ; information will not be removed from realtime storage
+
+;----------------------------------------- SIP DOMAIN SUPPORT ------------------------
+; Incoming INVITE and REFER messages can be matched against a list of 'allowed'
+; domains, each of which can direct the call to a specific context if desired.
+; By default, all domains are accepted and sent to the default context or the
+; context associated with the user/peer placing the call.
+; Domains can be specified using:
+; domain=<domain>[,<context>]
+; Examples:
+; domain=myasterisk.dom
+; domain=customer.com,customer-context
+;
+; In addition, all the 'default' domains associated with a server should be
+; added if incoming request filtering is desired.
+; autodomain=yes
+;
+; To disallow requests for domains not serviced by this server:
+; allowexternaldomains=no
+
+;domain=mydomain.tld,mydomain-incoming
+ ; Add domain and configure incoming context
+ ; for external calls to this domain
+;domain=1.2.3.4 ; Add IP address as local domain
+ ; You can have several "domain" settings
+;allowexternaldomains=no ; Disable INVITE and REFER to non-local domains
+ ; Default is yes
+;autodomain=yes ; Turn this on to have Asterisk add local host
+ ; name and local IP to domain list.
+
+; fromdomain=mydomain.tld ; When making outbound SIP INVITEs to
+ ; non-peers, use your primary domain "identity"
+ ; for From: headers instead of just your IP
+ ; address. This is to be polite and
+ ; it may be a mandatory requirement for some
+ ; destinations which do not have a prior
+ ; account relationship with your server.
+
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
+ ; SIP channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The SIP channel can accept jitter,
+ ; thus a jitterbuffer on the receive SIP side will be used only
+ ; if it is forced and enabled.
+
+; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a SIP
+ ; channel. Defaults to "no".
+
+; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usually sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP
+ ; channel. Two implementations are currently available - "fixed"
+ ; (with size always equals to jbmaxsize) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
+
+[authentication]
+; Global credentials for outbound calls, i.e. when a proxy challenges your
+; Asterisk server for authentication. These credentials override
+; any credentials in peer/register definition if realm is matched.
+;
+; This way, Asterisk can authenticate for outbound calls to other
+; realms. We match realm on the proxy challenge and pick an set of
+; credentials from this list
+; Syntax:
+; auth = <user>:<secret>@<realm>
+; auth = <user>#<md5secret>@<realm>
+; Example:
+;auth=mark:topsecret@digium.com
+;
+; You may also add auth= statements to [peer] definitions
+; Peer auth= override all other authentication settings if we match on realm
+
+;------------------------------------------------------------------------------
+; Users and peers have different settings available. Friends have all settings,
+; since a friend is both a peer and a user
+;
+; User config options: Peer configuration:
+; -------------------- -------------------
+; context context
+; callingpres callingpres
+; permit permit
+; deny deny
+; secret secret
+; md5secret md5secret
+; dtmfmode dtmfmode
+; canreinvite canreinvite
+; nat nat
+; callgroup callgroup
+; pickupgroup pickupgroup
+; language language
+; allow allow
+; disallow disallow
+; insecure insecure
+; trustrpid trustrpid
+; progressinband progressinband
+; promiscredir promiscredir
+; useclientcode useclientcode
+; accountcode accountcode
+; setvar setvar
+; callerid callerid
+; amaflags amaflags
+; call-limit call-limit (deprecated)
+; callcounter callcounter
+; allowoverlap allowoverlap
+; allowsubscribe allowsubscribe
+; allowtransfer allowtransfer
+; subscribecontext subscribecontext
+; videosupport videosupport
+; maxcallbitrate maxcallbitrate
+; rfc2833compensate mailbox
+; session-timers busylevel
+; session-expires
+; session-minse template
+; session-refresher fromdomain
+; regexten
+; fromuser
+; host
+; port
+; qualify
+; defaultip
+; defaultuser
+; rtptimeout
+; rtpholdtimeout
+; sendrpid
+; outboundproxy
+; rfc2833compensate
+; callbackextension
+; registertrying
+; session-timers
+; session-expires
+; session-minse
+; session-refresher
+; timert1
+; timerb
+; qualifyfreq
+
+
+;[sip_proxy]
+; For incoming calls only. Example: FWD (Free World Dialup)
+; We match on IP address of the proxy for incoming calls
+; since we can not match on username (caller id)
+;type=peer
+;context=from-fwd
+;host=fwd.pulver.com
+
+;[sip_proxy-out]
+;type=peer ; we only want to call out, not be called
+;secret=guessit
+;defaultuser=yourusername ; Authentication user for outbound proxies
+;fromuser=yourusername ; Many SIP providers require this!
+;fromdomain=provider.sip.domain
+;host=box.provider.com
+;usereqphone=yes ; This provider requires ";user=phone" on URI
+;callcounter=yes ; Enable call counter
+;busylevel=2 ; Signal busy at 2 or more calls
+;outboundproxy=proxy.provider.domain ; send outbound signaling to this proxy, not directly to the peer
+;port=80 ; The port number we want to connect to on the remote side
+ ; Also used as "defaultport" in combination with "defaultip" settings
+
+;--- sample definition for a provider
+;[provider1]
+;type=peer
+;host=sip.provider1.com
+;fromuser=4015552299 ; how your provider knows you
+;secret=youwillneverguessit
+;callbackextension=123 ; Register with this server and require calls coming back to this extension
+
+;------------------------------------------------------------------------------
+; Definitions of locally connected SIP devices
+;
+; type = user a device that authenticates to us by "from" field to place calls
+; type = peer a device we place calls to or that calls us and we match by host
+; type = friend two configurations (peer+user) in one
+;
+; For device names, we recommend using only a-z, numerics (0-9) and underscore
+;
+; For local phones, type=friend works most of the time
+;
+; If you have one-way audio, you probably have NAT problems.
+; If Asterisk is on a public IP, and the phone is inside of a NAT device
+; you will need to configure nat option for those phones.
+; Also, turn on qualify=yes to keep the nat session open
+;
+; Because you might have a large number of similar sections, it is generally
+; convenient to use templates for the common parameters, and add them
+; the the various sections. Examples are below, and we can even leave
+; the templates uncommented as they will not harm:
+
+[basic-options](!) ; a template
+ dtmfmode=rfc2833
+ context=from-office
+ type=friend
+
+[natted-phone](!,basic-options) ; another template inheriting basic-options
+ nat=yes
+ canreinvite=no
+ host=dynamic
+
+[public-phone](!,basic-options) ; another template inheriting basic-options
+ nat=no
+ canreinvite=yes
+
+[my-codecs](!) ; a template for my preferred codecs
+ disallow=all
+ allow=ilbc
+ allow=g729
+ allow=gsm
+ allow=g723
+ allow=ulaw
+
+[ulaw-phone](!) ; and another one for ulaw-only
+ disallow=all
+ allow=ulaw
+
+; and finally instantiate a few phones
+;
+; [2133](natted-phone,my-codecs)
+; secret = peekaboo
+; [2134](natted-phone,ulaw-phone)
+; secret = not_very_secret
+; [2136](public-phone,ulaw-phone)
+; secret = not_very_secret_either
+; ...
+;
+
+; Standard configurations not using templates look like this:
+;
+;[grandstream1]
+;type=friend
+;context=from-sip ; Where to start in the dialplan when this phone calls
+;callerid=John Doe <1234> ; Full caller ID, to override the phones config
+ ; on incoming calls to Asterisk
+;host=192.168.0.23 ; we have a static but private IP address
+ ; No registration allowed
+;nat=no ; there is not NAT between phone and Asterisk
+;canreinvite=yes ; allow RTP voice traffic to bypass Asterisk
+;dtmfmode=info ; either RFC2833 or INFO for the BudgeTone
+;call-limit=1 ; permit only 1 outgoing call and 1 incoming call at a time
+ ; from the phone to asterisk (deprecated)
+ ; 1 for the explicit peer, 1 for the explicit user,
+ ; remember that a friend equals 1 peer and 1 user in
+ ; memory
+ ; There is no combined call counter for a "friend"
+ ; so there's currently no way in sip.conf to limit
+ ; to one inbound or outbound call per phone. Use
+ ; the group counters in the dial plan for that.
+ ;
+;mailbox=1234@default ; mailbox 1234 in voicemail context "default"
+;disallow=all ; need to disallow=all before we can use allow=
+;allow=ulaw ; Note: In user sections the order of codecs
+ ; listed with allow= does NOT matter!
+;allow=alaw
+;allow=g723.1 ; Asterisk only supports g723.1 pass-thru!
+;allow=g729 ; Pass-thru only unless g729 license obtained
+;callingpres=allowed_passed_screen ; Set caller ID presentation
+ ; See README.callingpres for more information
+
+;[xlite1]
+; Turn off silence suppression in X-Lite ("Transmit Silence"=YES)!
+; Note that Xlite sends NAT keep-alive packets, so qualify=yes is not needed
+;type=friend
+;regexten=1234 ; When they register, create extension 1234
+;callerid="Jane Smith" <5678>
+;host=dynamic ; This device needs to register
+;nat=yes ; X-Lite is behind a NAT router
+;canreinvite=no ; Typically set to NO if behind NAT
+;disallow=all
+;allow=gsm ; GSM consumes far less bandwidth than ulaw
+;allow=ulaw
+;allow=alaw
+;mailbox=1234@default,1233@default ; Subscribe to status of multiple mailboxes
+;registertrying=yes ; Send a 100 Trying when the device registers.
+
+;[snom]
+;type=friend ; Friends place calls and receive calls
+;context=from-sip ; Context for incoming calls from this user
+;secret=blah
+;subscribecontext=localextensions ; Only allow SUBSCRIBE for local extensions
+;language=de ; Use German prompts for this user
+;host=dynamic ; This peer register with us
+;dtmfmode=inband ; Choices are inband, rfc2833, or info
+;defaultip=192.168.0.59 ; IP used until peer registers
+;mailbox=1234@context,2345 ; Mailbox(-es) for message waiting indicator
+;subscribemwi=yes ; Only send notifications if this phone
+ ; subscribes for mailbox notification
+;vmexten=voicemail ; dialplan extension to reach mailbox
+ ; sets the Message-Account in the MWI notify message
+ ; defaults to global vmexten which defaults to "asterisk"
+;disallow=all
+;allow=ulaw ; dtmfmode=inband only works with ulaw or alaw!
+
+
+;[polycom]
+;type=friend ; Friends place calls and receive calls
+;context=from-sip ; Context for incoming calls from this user
+;secret=blahpoly
+;host=dynamic ; This peer register with us
+;dtmfmode=rfc2833 ; Choices are inband, rfc2833, or info
+;defaultuser=polly ; Username to use in INVITE until peer registers
+;defaultip=192.168.40.123
+ ; Normally you do NOT need to set this parameter
+;disallow=all
+;allow=ulaw ; dtmfmode=inband only works with ulaw or alaw!
+;progressinband=no ; Polycom phones don't work properly with "never"
+
+
+;[pingtel]
+;type=friend
+;secret=blah
+;host=dynamic
+;insecure=port ; Allow matching of peer by IP address without
+ ; matching port number
+;insecure=invite ; Do not require authentication of incoming INVITEs
+;insecure=port,invite ; (both)
+;qualify=1000 ; Consider it down if it's 1 second to reply
+ ; Helps with NAT session
+ ; qualify=yes uses default value
+;qualifyfreq=60 ; Qualification: How often to check for the
+ ; host to be up in seconds
+ ; Set to low value if you use low timeout for
+ ; NAT of UDP sessions
+;
+; Call group and Pickup group should be in the range from 0 to 63
+;
+;callgroup=1,3-4 ; We are in caller groups 1,3,4
+;pickupgroup=1,3-5 ; We can do call pick-p for call group 1,3,4,5
+;defaultip=192.168.0.60 ; IP address to use if peer has not registered
+;deny=0.0.0.0/0.0.0.0 ; ACL: Control access to this account based on IP address
+;permit=192.168.0.60/255.255.255.0
+
+;[cisco1]
+;type=friend
+;secret=blah
+;qualify=200 ; Qualify peer is no more than 200ms away
+;nat=yes ; This phone may be natted
+ ; Send SIP and RTP to the IP address that packet is
+ ; received from instead of trusting SIP headers
+;host=dynamic ; This device registers with us
+;canreinvite=no ; Asterisk by default tries to redirect the
+ ; RTP media stream (audio) to go directly from
+ ; the caller to the callee. Some devices do not
+ ; support this (especially if one of them is
+ ; behind a NAT).
+;defaultip=192.168.0.4 ; IP address to use until registration
+;defaultuser=goran ; Username to use when calling this device before registration
+ ; Normally you do NOT need to set this parameter
+;setvar=CUSTID=5678 ; Channel variable to be set for all calls from this device
+
+;[pre14-asterisk]
+;type=friend
+;secret=digium
+;host=dynamic
+;rfc2833compensate=yes ; Compensate for pre-1.4 DTMF transmission from another Asterisk machine.
+ ; You must have this turned on or DTMF reception will work improperly.
diff --git a/trunk/configs/sip_notify.conf.sample b/trunk/configs/sip_notify.conf.sample
new file mode 100644
index 000000000..ca7dbe3d0
--- /dev/null
+++ b/trunk/configs/sip_notify.conf.sample
@@ -0,0 +1,22 @@
+[polycom-check-cfg]
+Event=>check-sync
+Content-Length=>0
+
+; Untested
+[sipura-check-cfg]
+Event=>resync
+Content-Length=>0
+
+; Untested
+[grandstream-check-cfg]
+Event=>sys-control
+
+; Untested
+[cisco-check-cfg]
+Event=>check-sync
+Content-Length=>0
+
+; Tested
+[snom-check-cfg]
+Event=>check-sync\;reboot=false
+Content-Length=>0
diff --git a/trunk/configs/skinny.conf.sample b/trunk/configs/skinny.conf.sample
new file mode 100644
index 000000000..26a6db6c7
--- /dev/null
+++ b/trunk/configs/skinny.conf.sample
@@ -0,0 +1,120 @@
+;
+; Skinny Configuration for Asterisk
+;
+[general]
+bindaddr=0.0.0.0 ; Address to bind to
+bindport=2000 ; Port to bind to, default tcp/2000
+dateformat=M-D-Y ; M,D,Y in any order (6 chars max)
+ ; "A" may also be used, but it must be at the end.
+ ; Use M for month, D for day, Y for year, A for 12-hour time.
+keepalive=120
+
+;vmexten=8500 ; Systemwide voicemailmain pilot number
+ ; It must be in the same context as the calling
+ ; device/line
+
+; If regcontext is specified, Asterisk will dynamically create and destroy a
+; NoOp priority 1 extension for a given line which registers or unregisters with
+; us and have a "regexten=" configuration item.
+; Multiple contexts may be specified by separating them with '&'. The
+; actual extension is the 'regexten' parameter of the registering line or its
+; name if 'regexten' is not provided. If more than one context is provided,
+; the context must be specified within regexten by appending the desired
+; context after '@'. More than one regexten may be supplied if they are
+; separated by '&'. Patterns may be used in regexten.
+;
+;regcontext=skinnyregistrations
+
+;allow=all ; see doc/rtp-packetization for framing options
+;disallow=
+
+; See qos.tex or Quality of Service section of asterisk.pdf for a description of these parameters.
+;tos=cs3 ; Sets TOS for signaling packets.
+;tos_audio=ef ; Sets TOS for RTP audio packets.
+;tos_video=af41 ; Sets TOS for RTP video packets.
+;cos=3 ; Sets 802.1p priority for signaling packets.
+;cos_audio=5 ; Sets 802.1p priority for RTP audio packets.
+;cos_video=4 ; Sets 802.1p priority for RTP video packets.
+
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+;jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
+ ; skinny channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The skinny channel can accept
+ ; jitter, thus a jitterbuffer on the receive skinny side will be
+ ; used only if it is forced and enabled.
+
+;jbforce = no ; Forces the use of a jitterbuffer on the receive side of a skinny
+ ; channel. Defaults to "no".
+
+;jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+;jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usually sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+;jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a
+ ; skinny channel. Two implementations are currently available
+ ; - "fixed" (with size always equals to jbmaxsize)
+ ; - "adaptive" (with variable size, actually the new jb of IAX2).
+ ; Defaults to fixed.
+
+;jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
+
+
+; Typical config for 12SP+
+;[florian]
+;device=SEP00D0BA847E6B
+;version=P002G204 ; Thanks critch
+;context=did
+;canreinvite=yes ; Allow media to go directly between two RTP endpoints.
+;line => 120 ; Dial(Skinny/120@florian)
+
+
+; Typical config for a 7910
+;[duba] ; Device name
+;device=SEP0007EB463101 ; Official identifier
+;version=P002F202 ; Firmware version identifier
+;host=192.168.1.144
+;permit=192.168.0/24 ; Optional, used for authentication
+;nat=yes
+;callerid="George W. Bush" <202-456-1414>
+;setvar=CUSTID=5678 ; Channel variable to be set for all calls from this device
+;mailbox=500
+;callwaiting=yes
+;transfer=yes
+;threewaycalling=yes
+;context=default
+;line => 500 ; Dial(Skinny/500@duba)
+;mohinterpret=default ; This option specifies a default music on hold class to
+ ; use when put on hold if the channel's moh class was not
+ ; explicitly set with Set(CHANNEL(musicclass)=whatever) and
+ ; the peer channel did not suggest a class to use.
+;mohsuggest=default ; This option specifies which music on hold class to suggest to the peer channel
+ ; when this channel places the peer on hold. It may be specified globally or on
+ ; a per-user or per-peer basis.
+
+; Typical config for a 7940 with dual 7914s
+;[support]
+;device=SEP0007EB463121
+;nat=yes
+;callerid="Customer Support" <810-234-1212>
+;mailbox=100
+;vmexten=8500 ; Device level voicemailmain pilot number
+;regexten=100
+;context=inbound
+;linelabel="Support Line" ; Displays next to the line
+ ; button on 7940's and 7960s
+;line => 100
+;callerid="John Chambers" <408-526-4000>
+;context=did
+;regexten=110
+;linelabel="John"
+;mailbox=110
+;line => 110
+;speeddial => 111,Jack Smith ; Adds a speeddial button to a device.
+;speeddial => 112@hints,Bob Peterson ; When a context is specified, the speeddial watches a dialplan hint.
+;addon => 7914
+;addon => 7914
diff --git a/trunk/configs/sla.conf.sample b/trunk/configs/sla.conf.sample
new file mode 100644
index 000000000..75acc2bc4
--- /dev/null
+++ b/trunk/configs/sla.conf.sample
@@ -0,0 +1,140 @@
+;
+; Configuration for Shared Line Appearances (SLA).
+;
+; See doc/asterisk.pdf for more information.
+;
+
+; ---- General Options ----------------
+[general]
+
+;attemptcallerid=no ; Attempt CallerID handling. The default value for this
+ ; is "no" because CallerID handling with an SLA setup is
+ ; known to not work properly in some situations. However,
+ ; feel free to enable it if you would like. If you do, and
+ ; you find problems, please do not report them.
+; -------------------------------------
+
+
+; ---- Trunk Declarations -------------
+;
+;[line1] ; Provide a name for this trunk.
+
+;type=trunk ; This line is what marks this entry as a trunk.
+
+;device=Zap/3 ; Map this trunk declaration to a specific device.
+ ; NOTE: You can not just put any type of channel here.
+ ; Zap channels can be directly used. IP trunks
+ ; require some indirect configuration which is
+ ; described in doc/asterisk.pdf.
+
+;autocontext=line1 ; This supports automatic generation of the dialplan entries
+ ; if the autocontext option is used. Each trunk should have
+ ; a unique context name. Then, in zapata.conf, this device
+ ; should be configured to have incoming calls go to this context.
+
+;ringtimeout=30 ; Set how long to allow this trunk to ring on an inbound call before hanging
+ ; it up as an unanswered call. The value is in seconds.
+
+;barge=no ; If this option is set to "no", then no station will be
+ ; allowed to join a call that is in progress. The default
+ ; value is "yes".
+
+;hold=private ; This option configure hold permissions for this trunk.
+ ; "open" - This means that any station can put this trunk
+ ; on hold, and any station can retrieve it from
+ ; hold. This is the default.
+ ; "private" - This means that once a station puts the
+ ; trunk on hold, no other station will be
+ ; allowed to retrieve the call from hold.
+
+;[line2]
+;type=trunk
+;device=Zap/4
+;autocontext=line2
+
+;[line3]
+;type=trunk
+;device=Zap/3
+;autocontext=line3
+
+;[line4]
+;type=trunk
+;device=Local/disa@line4_outbound ; A Local channel in combination with the Disa
+ ; application can be used to support IP trunks.
+ ; See doc/asterisk.pdf on more information on how
+ ; IP trunks work.
+;autocontext=line4
+; --------------------------------------
+
+
+; ---- Station Declarations ------------
+
+;[station1] ; Define a name for this station.
+
+;type=station ; This line indicates that this entry is a station.
+
+;device=SIP/station1 ; Each station must be mapped to a device.
+
+;autocontext=sla_stations ; This supports automatic generation of the dialplan entries if
+ ; the autocontext option is used. All stations can use the same
+ ; context without conflict. The device for this station should
+ ; have its context configured to the same one listed here.
+
+;ringtimeout=10 ; Set a timeout for how long to allow the station to ring for an
+ ; incoming call, in seconds.
+
+;ringdelay=10 ; Set a time for how long to wait before beginning to ring this station
+ ; once there is an incoming call, in seconds.
+
+;hold=private ; This option configure hold permissions for this station. Note
+ ; that if private hold is set in the trunk entry, that will override
+ ; anything here. However, if a trunk has open hold access, but this
+ ; station is set to private hold, then the private hold will be in
+ ; effect.
+ ; "open" - This means that once this station puts a call
+ ; on hold, any other station is allowed to retrieve
+ ; it. This is the default.
+ ; "private" - This means that once this station puts a
+ ; call on hold, no other station will be
+ ; allowed to retrieve the call from hold.
+
+
+;trunk=line1 ; Individually list all of the trunks that will appear on this station. This
+ ; order is significant. It should be the same order as they appear on the
+ ; phone. The order here defines the order of preference that the trunks will
+ ; be used.
+;trunk=line2
+;trunk=line3,ringdelay=5 ; A ring delay for the station can also be specified for a specific trunk.
+ ; If a ring delay is specified both for the whole station and for a specific
+ ; trunk on a station, the setting for the specific trunk will take priority.
+ ; This value is in seconds.
+
+;trunk=line4,ringtimeout=5 ; A ring timeout for the station can also be specified for a specific trunk.
+ ; If a ring timeout is specified both for the whole station and for a specific
+ ; trunk on a station, the setting for the specific trunk will take priority.
+ ; This value is in seconds.
+
+
+;[station](!) ; When there are a lot of stations that are configured the same way,
+ ; it is convenient to use a configuration template like this so that
+ ; the common settings stay in one place.
+;type=station
+;autocontext=sla_stations
+;trunk=line1
+;trunk=line2
+;trunk=line3
+;trunk=line4
+
+;[station2](station) ; Define a station that uses the configuration from the template "station".
+;device=SIP/station2
+;
+;[station3](station)
+;device=SIP/station3
+;
+;[station4](station)
+;device=SIP/station4
+;
+;[station5](station)
+;device=SIP/station5
+; --------------------------------------
+
diff --git a/trunk/configs/smdi.conf.sample b/trunk/configs/smdi.conf.sample
new file mode 100644
index 000000000..0325eba48
--- /dev/null
+++ b/trunk/configs/smdi.conf.sample
@@ -0,0 +1,43 @@
+; Asterisk SMDI configuration
+
+[interfaces]
+; Specify serial ports to listen for SMDI messages on below. These will be
+; referenced later in zapata.conf. If you do not specify any interfaces then
+; SMDI will be disabled. Interfaces can have several different attributes
+; associated with them.
+
+; Set the number of stop bits to use per character here. The default is no,
+; in which case one stop bit will be used.
+
+;twostopbits = no
+
+; Character size or bit length is the size of each character sent across the
+; link. Character size can be 7 or 8. The default is 7.
+
+;charsize = 7
+
+; If you need parity checking enabled you can turn it on here. Acceptable
+; values are even, odd, and none. The default is even.
+
+;paritybit = even
+
+; The baudrate to use for this port. Acceptable values are 1200, 2400, 4800,
+; and 9600. The default is 9600.
+
+;baudrate = 1200
+
+; Often the numbering scheme for a set of mailboxes or extensions will not be 7
+; or 10 digits (as SMDI requires). Use the msdstrip option to strip unused
+; digits from the start of numbers.
+
+;msdstrip = 0
+
+; Occasionally Asterisk and the SMDI switch may become out of sync. If this
+; happens, Asterisk will appear one or several calls behind as it processes
+; voicemail requests. To prevent this from happening, adjust the msgexpirytime.
+; This will make Asterisk discard old SMDI messages that have not yet been
+; processed. The default expiry time is 30000 milliseconds.
+
+;msgexpirytime = 30000
+
+;smdiport => /dev/ttyS0
diff --git a/trunk/configs/telcordia-1.adsi b/trunk/configs/telcordia-1.adsi
new file mode 100644
index 000000000..1486aa95e
--- /dev/null
+++ b/trunk/configs/telcordia-1.adsi
@@ -0,0 +1,83 @@
+;
+; Asterisk default ADSI script
+;
+;
+; Begin with the preamble requirements
+;
+DESCRIPTION "Telcordia Demo" ; Name of vendor
+VERSION 0x02 ; Version of stuff
+;SECURITY "_AST" ; Security code
+SECURITY 0x0000 ; Security code
+FDN 0x0000000f ; Descriptor number
+
+;
+; Predefined strings
+;
+DISPLAY "talkingto" IS "Talking To" "$Call1p" WRAP
+DISPLAY "titles" IS "20th Century IQ Svc"
+DISPLAY "newcall" IS "New Call From" "$Call1p" WRAP
+DISPLAY "ringing" IS "Ringing"
+
+;
+; Begin state definitions
+;
+STATE "callup" ; Call is currently up
+STATE "inactive" ; No active call
+
+;
+; Begin soft key definitions
+;
+KEY "CB_OH" IS "Block" OR "Call Block"
+ OFFHOOK
+ VOICEMODE
+ WAITDIALTONE
+ SENDDTMF "*60"
+ SUBSCRIPT "offHook"
+ENDKEY
+
+KEY "CB" IS "Block" OR "Call Block"
+ SENDDTMF "*60"
+ENDKEY
+
+;
+; Begin main subroutine
+;
+
+SUB "main" IS
+ IFEVENT NEARANSWER THEN
+ CLEAR
+ SHOWDISPLAY "talkingto" AT 1
+ GOTO "stableCall"
+ ENDIF
+ IFEVENT OFFHOOK THEN
+ CLEAR
+ SHOWDISPLAY "titles" AT 1
+ SHOWKEYS "CB"
+ GOTO "offHook"
+ ENDIF
+ IFEVENT IDLE THEN
+ CLEAR
+ SHOWDISPLAY "titles" AT 1
+ SHOWKEYS "CB_OH"
+ ENDIF
+ IFEVENT CALLERID THEN
+ CLEAR
+ SHOWDISPLAY "newcall" AT 1
+ ENDIF
+ENDSUB
+
+SUB "offHook" IS
+ IFEVENT FARRING THEN
+ CLEAR
+ SHOWDISPLAY "ringing" AT 1
+ ENDIF
+ IFEVENT FARANSWER THEN
+ CLEAR
+ SHOWDISPLAY "talkingto" AT 1
+ GOTO "stableCall"
+ ENDIF
+ENDSUB
+
+SUB "stableCall" IS
+
+ENDSUB
diff --git a/trunk/configs/udptl.conf.sample b/trunk/configs/udptl.conf.sample
new file mode 100644
index 000000000..05a38d54e
--- /dev/null
+++ b/trunk/configs/udptl.conf.sample
@@ -0,0 +1,30 @@
+;
+; UDPTL Configuration (UDPTL is one of the transports for T.38)
+;
+[general]
+;
+; UDPTL start and UDPTL end configure start and end addresses
+;
+udptlstart=4000
+udptlend=4999
+;
+; Whether to enable or disable UDP checksums on UDPTL traffic
+;
+;udptlchecksums=no
+;
+; The error correction type to be sent
+;
+T38FaxUdpEC = t38UDPFEC
+;T38FaxUdpEC = t38UDPRedundancy
+;
+; The maximum length of a UDPTL packet
+;
+T38FaxMaxDatagram = 400
+;
+; The number of error correction entries in a UDPTL packet
+;
+udptlfecentries = 3
+;
+; The span over which parity is calculated for FEC in a UDPTL packet
+;
+udptlfecspan = 3
diff --git a/trunk/configs/unistim.conf.sample b/trunk/configs/unistim.conf.sample
new file mode 100644
index 000000000..649737317
--- /dev/null
+++ b/trunk/configs/unistim.conf.sample
@@ -0,0 +1,76 @@
+;
+; chan_unistim configuration file.
+;
+
+[general]
+port=5000 ; UDP port
+;
+; See qos.tex or Quality of Service section of asterisk.pdf for a description of these parameters.
+;tos=cs3 ; Sets TOS for signaling packets.
+;tos_audio=ef ; Sets TOS for RTP audio packets.
+;cos=3 ; Sets 802.1p priority for signaling packets.
+;cos_audio=5 ; Sets 802.1p priority for RTP audio packets.
+;
+;keepalive=120 ; in seconds, default = 120
+;public_ip= ; if asterisk is behind a nat, specify your public IP
+;autoprovisioning=no ; Allow undeclared phones to register an extension. See README for important
+ ; informations. no (default), yes, tn.
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
+ ; SIP channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The SIP channel can accept jitter,
+ ; thus a jitterbuffer on the receive SIP side will be used only
+ ; if it is forced and enabled.
+
+; jbforce = no ; Forces the use of a jitterbuffer on the receive side of a SIP
+ ; channel. Defaults to "no".
+
+; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usually sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP
+ ; channel. Two implementations are currently available - "fixed"
+ ; (with size always equals to jbmaxsize) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
+
+
+;[black] ; name of the device
+;device=000ae4012345 ; mac address of the phone
+;rtp_port=10000 ; RTP port used by the phone, default = 10000. RTCP = rtp_port+1
+;rtp_method=0 ; If you don't have sound, you can try 1, 2 or 3, default = 0
+;status_method=0 ; If you don't see status text, try 1, default = 0
+;titledefault=Asterisk ; default = "TimeZone (your time zone)". 12 characters max
+;maintext0="you can insert" ; default = "Welcome", 24 characters max
+;maintext1="a custom text" ; default = the name of the device, 24 characters max
+;maintext2="(main page)" ; default = the public IP of the phone, 24 characters max
+;dateformat=1 ; 0 = month/day, 1 (default) = day/month
+;timeformat=1 ; 0 = 0:00am ; 1 (default) = 0h00, 2 = 0:00
+;contrast=8 ; define the contrast of the LCD. From 0 to 15. Default = 8
+;country=us ; country (ccTLD) for dial tone frequency. See README, default = us
+;ringvolume=2 ; ring volume : 0,1,2,3, can be overrided by Dial(), default = 2
+;ringstyle=3 ; ring style : 0 to 7, can be overrided by Dial(), default = 3
+;callhistory=1 ; 0 = disable, 1 = enable call history, default = 1
+;callerid="Customer Support" <555-234-5678>
+;context=default ; context, default="default"
+;mailbox=1234 ; Specify the mailbox number. Used by Message Waiting Indication
+;linelabel="Support" ; Softkey label for the next line=> entry, 9 char max.
+;extension=none ; Add an extension into the dialplan. Only valid in context specified previously.
+ ; none=don't add (default), ask=prompt user, line=use the line number
+;line => 100 ; Only one line by device is currently supported.
+ ; Beware ! only bookmark and softkey entries are allowed after line=>
+;bookmark=Hans C.@123 ; Use a softkey to dial 123. Name : 9 char max
+;bookmark=Mailbox@011@54 ; 54 shows a mailbox icon. See #define FAV_ICON_ for other values (32 to 63)
+;bookmark=Test@*@USTM/violet ; Display an icon if violet is connected (dynamic), only for unistim device
+;bookmark=4@Pager@54321@51 ; Display a pager icon and dial 54321 when softkey 4 is pressed
+
+;[violet]
+;device=006038abcdef
+;line => 102
diff --git a/trunk/configs/usbradio.conf.sample b/trunk/configs/usbradio.conf.sample
new file mode 100644
index 000000000..5ba9815ca
--- /dev/null
+++ b/trunk/configs/usbradio.conf.sample
@@ -0,0 +1,54 @@
+[general]
+
+; General config options, with default values shown.
+; You should use one section per device, with [general] being used
+; for the device.
+
+; debug = 0x0 ; misc debug flags, default is 0
+
+; Set the device to use for I/O
+; devicenum = 0
+; Set hardware type here
+; hdwtype=0 ; 0=limey, 1=sph
+
+; rxboost=0 ; no rx gain boost
+; rxctcssrelax=1 ; reduce talkoff from radios w/o CTCSS Tx HPF
+; rxctcssfreq=100.0 ; rx ctcss freq in floating point. must be in table
+; txctcssfreq=100.0 ; tx ctcss freq, any frequency permitted
+
+; carrierfrom=dsp ;no,usb,usbinvert,dsp,vox
+; ctcssfrom=dsp ;no,usb,dsp
+
+; rxdemod=flat ; input type from radio: no,speaker,flat
+; txprelim=yes ; output is pre-emphasised and limited
+; txtoctype=no ; no,phase,notone
+
+; txmixa=composite ;no,voice,tone,composite,auxvoice
+; txmixb=no ;no,voice,tone,composite,auxvoice
+
+; invertptt=0
+
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an
+ ; USBRADIO channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The USBRADIO channel can't accept jitter,
+ ; thus an enabled jitterbuffer on the receive USBRADIO side will always
+ ; be used if the sending side can create jitter.
+
+; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usualy sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of an USBRADIO
+ ; channel. Two implementations are currenlty available - "fixed"
+ ; (with size always equals to jbmax-size) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
+
+
diff --git a/trunk/configs/users.conf.sample b/trunk/configs/users.conf.sample
new file mode 100644
index 000000000..2a816d7e4
--- /dev/null
+++ b/trunk/configs/users.conf.sample
@@ -0,0 +1,79 @@
+;
+; User configuration
+;
+; Creating entries in users.conf is a "shorthand" for creating individual
+; entries in each configuration file. Using users.conf is not intended to
+; provide you with as much flexibility as using the separate configuration
+; files (e.g. sip.conf, iax.conf, etc) but is intended to accelerate the
+; simple task of adding users. Note that creating individual items (e.g.
+; custom SIP peers, IAX friends, etc.) will allow you to override specific
+; parameters within this file. Parameter names here are the same as they
+; appear in the other configuration files. There is no way to change the
+; value of a parameter here for just one subsystem.
+;
+
+[general]
+;
+; Full name of a user
+;
+fullname = New User
+;
+; Starting point of allocation of extensions
+;
+userbase = 6000
+;
+; Create voicemail mailbox and use use macro-stdexten
+;
+hasvoicemail = yes
+;
+; Set voicemail mailbox 6000 password to 1234
+;
+vmsecret = 1234
+;
+; Create SIP Peer
+;
+hassip = yes
+;
+; Create IAX friend
+;
+hasiax = yes
+;
+; Create H.323 friend
+;
+;hash323 = yes
+;
+; Create manager entry
+;
+hasmanager = no
+;
+; Set permissions for manager entry (see manager.conf.sample for documentation)
+; (defaults to *all* permissions)
+;managerread = system,call,log,verbose,command,agent,user,config
+;managerwrite = system,call,log,verbose,command,agent,user,config
+;
+; Remaining options are not specific to users.conf entries but are general.
+;
+callwaiting = yes
+threewaycalling = yes
+callwaitingcallerid = yes
+transfer = yes
+canpark = yes
+cancallforward = yes
+callreturn = yes
+callgroup = 1
+pickupgroup = 1
+
+
+;[6000]
+;fullname = Joe User
+;email = joe@foo.bar
+;secret = 1234
+;zapchan = 1
+;hasvoicemail = yes
+;vmsecret = 1234
+;hassip = yes
+;hasiax = no
+;hash323 = no
+;hasmanager = no
+;callwaiting = no
+;context = international
diff --git a/trunk/configs/voicemail.conf.sample b/trunk/configs/voicemail.conf.sample
new file mode 100644
index 000000000..ce403fe8e
--- /dev/null
+++ b/trunk/configs/voicemail.conf.sample
@@ -0,0 +1,307 @@
+;
+; Voicemail Configuration
+;
+
+;
+; NOTE: Asterisk has to edit this file to change a user's password. This does
+; not currently work with the "#include <file>" directive for Asterisk
+; configuration files, nor when using realtime static configuration.
+; Do not use them with this configuration file.
+;
+
+[general]
+; Formats for writing Voicemail. Note that when using IMAP storage for
+; voicemail, only the first format specified will be used.
+;format=g723sf|wav49|wav
+format=wav49|gsm|wav
+;
+; WARNING:
+; If you change the list of formats that you record voicemail in
+; when you have mailboxes that contain messages, you _MUST_ absolutely
+; manually go through those mailboxes and convert/delete/add the
+; the message files so that they appear to have been stored using
+; your new format list. If you don't do this, very unpleasant
+; things may happen to your users while they are retrieving and
+; manipulating their voicemail.
+;
+; In other words: don't change the format list on a production system
+; unless you are _VERY_ sure that you know what you are doing and are
+; prepared for the consequences.
+;
+; Who the e-mail notification should appear to come from
+serveremail=asterisk
+;serveremail=asterisk@linux-support.net
+; Should the email contain the voicemail as an attachment
+attach=yes
+; Maximum number of messages per folder. If not specified, a default value
+; (100) is used. Maximum value for this option is 9999.
+;maxmsg=100
+; Maximum length of a voicemail message in seconds
+;maxsecs=180
+; Minimum length of a voicemail message in seconds for the message to be kept
+; The default is no minimum.
+;minsecs=3
+; Maximum length of greetings in seconds
+;maxgreet=60
+; How many milliseconds to skip forward/back when rew/ff in message playback
+skipms=3000
+; How many seconds of silence before we end the recording
+maxsilence=10
+; Silence threshold (what we consider silence: the lower, the more sensitive)
+silencethreshold=128
+; Max number of failed login attempts
+maxlogins=3
+;
+; Move heard messages to the 'Old' folder automagically. Defaults to on.
+;moveheard=yes
+;
+; User context is where entries from users.conf are registered. The
+; default value is 'default'
+;
+;userscontext=default
+;
+; If you need to have an external program, i.e. /usr/bin/myapp
+; called when a voicemail is left, delivered, or your voicemailbox
+; is checked, uncomment this.
+;externnotify=/usr/bin/myapp
+
+; If you would also like to enable SMDI notification then set smdienable to yes.
+; You will also need to make sure smdiport is set to a valid port as specified in
+; smdi.conf.
+;smdienable=yes
+;smdiport=/dev/ttyS0
+
+; If you need to have an external program, i.e. /usr/bin/myapp
+; called when a voicemail password is changed, uncomment this:
+; Note: If this is set, the password will NOT be changed in voicemail.conf
+; If you would like to also change the password in voicemail.conf, use
+; the externpassnotify option below instead.
+;externpass=/usr/bin/myapp
+;externpassnotify=/usr/bin/myapp
+; For the directory, you can override the intro file if you want
+;directoryintro=dir-intro
+; The character set for voicemail messages can be specified here
+;charset=ISO-8859-1
+; The ADSI feature descriptor number to download to
+;adsifdn=0000000F
+; The ADSI security lock code
+;adsisec=9BDBF7AC
+; The ADSI voicemail application version number.
+;adsiver=1
+; Skip the "[PBX]:" string from the message title
+;pbxskip=yes
+; Change the From: string
+;fromstring=The Asterisk PBX
+; Permit finding entries for forward/compose from the directory
+;usedirectory=yes
+; Voicemail can be stored in a database using the ODBC driver.
+; The value of odbcstorage is the database connection configured
+; in res_odbc.conf.
+;odbcstorage=asterisk
+; The default table for ODBC voicemail storage is voicemessages.
+;odbctable=voicemessages
+;
+; Change the from, body and/or subject, variables:
+; VM_NAME, VM_DUR, VM_MSGNUM, VM_MAILBOX, VM_CALLERID, VM_CIDNUM,
+; VM_CIDNAME, VM_DATE
+;
+; Note: The emailbody config row can only be up to 512 characters due to a
+; limitation in the Asterisk configuration subsystem.
+;emailsubject=[PBX]: New message ${VM_MSGNUM} in mailbox ${VM_MAILBOX}
+; The following definition is very close to the default, but the default shows
+; just the CIDNAME, if it is not null, otherwise just the CIDNUM, or "an unknown
+; caller", if they are both null.
+;emailbody=Dear ${VM_NAME}:\n\n\tjust wanted to let you know you were just left a ${VM_DUR} long message (number ${VM_MSGNUM})\nin mailbox ${VM_MAILBOX} from ${VM_CALLERID}, on ${VM_DATE}, so you might\nwant to check it when you get a chance. Thanks!\n\n\t\t\t\t--Asterisk\n
+;
+; You can also change the Pager From: string, the pager body and/or subject.
+; The above defined variables also can be used here
+;pagerfromstring=The Asterisk PBX
+;pagersubject=New VM
+;pagerbody=New ${VM_DUR} long msg in box ${VM_MAILBOX}\nfrom ${VM_CALLERID}, on ${VM_DATE}
+;
+; Set the date format on outgoing mails. Valid arguments can be found on the
+; strftime(3) man page
+;
+; Default
+emaildateformat=%A, %B %d, %Y at %r
+; 24h date format
+;emaildateformat=%A, %d %B %Y at %H:%M:%S
+;
+; You can override the default program to send e-mail if you wish, too
+;
+;mailcmd=/usr/sbin/sendmail -t
+;
+;pollmailboxes=no ; If mailboxes are changed anywhere outside of app_voicemail,
+; ; then this option must be enabled for MWI to work. This
+; ; enables polling mailboxes for changes. Normally, it will
+; ; expect that changes are only made when someone called in
+; ; to one of the voicemail applications.
+; ; Examples of situations that would require this option are
+; ; web interfaces to voicemail or an email client in the case
+; ; of using IMAP storage.
+;
+;pollfreq=30 ; If the "pollmailboxes" option is enabled, this option
+; ; sets the polling frequency. The default is once every
+; ; 30 seconds.
+; If using IMAP storage, specify whether voicemail greetings should be stored
+; via IMAP. If no, then greetings are stored as if IMAP storage were not enabled
+;imapgreetings=no
+; If imapgreetings=yes, then specify which folder to store your greetings in. If
+; you do not specify a folder, then INBOX will be used
+;greetingsfolder=INBOX
+;
+; Users may be located in different timezones, or may have different
+; message announcements for their introductory message when they enter
+; the voicemail system. Set the message and the timezone each user
+; hears here. Set the user into one of these zones with the tz= attribute
+; in the options field of the mailbox. Of course, language substitution
+; still applies here so you may have several directory trees that have
+; alternate language choices.
+;
+; Look in /usr/share/zoneinfo/ for names of timezones.
+; Look at the manual page for strftime for a quick tutorial on how the
+; variable substitution is done on the values below.
+;
+; Supported values:
+; 'filename' filename of a soundfile (single ticks around the filename
+; required)
+; ${VAR} variable substitution
+; A or a Day of week (Saturday, Sunday, ...)
+; B or b or h Month name (January, February, ...)
+; d or e numeric day of month (first, second, ..., thirty-first)
+; Y Year
+; I or l Hour, 12 hour clock
+; H Hour, 24 hour clock (single digit hours preceded by "oh")
+; k Hour, 24 hour clock (single digit hours NOT preceded by "oh")
+; M Minute, with 00 pronounced as "o'clock"
+; N Minute, with 00 pronounced as "hundred" (US military time)
+; P or p AM or PM
+; Q "today", "yesterday" or ABdY
+; (*note: not standard strftime value)
+; q "" (for today), "yesterday", weekday, or ABdY
+; (*note: not standard strftime value)
+; R 24 hour time, including minute
+;
+;
+;
+; Each mailbox is listed in the form <mailbox>=<password>,<name>,<email>,<pager_email>,<options>
+; if the e-mail is specified, a message will be sent when a message is
+; received, to the given mailbox. If pager is specified, a message will be
+; sent there as well. If the password is prefixed by '-', then it is
+; considered to be unchangeable.
+;
+; Advanced options example is extension 4069
+; NOTE: All options can be expressed globally in the general section, and
+; overridden in the per-mailbox settings, unless listed otherwise.
+;
+; tz=central ; Timezone from zonemessages below. Irrelevant if envelope=no.
+; attach=yes ; Attach the voicemail to the notification email *NOT* the pager email
+; attachfmt=wav49 ; Which format to attach to the email. Normally this is the
+ ; first format specified in the format parameter above, but this
+ ; option lets you customize the format sent to particular mailboxes.
+ ; Useful if Windows users want wav49, but Linux users want gsm.
+ ; [per-mailbox only]
+; saycid=yes ; Say the caller id information before the message. If not described,
+ ; or set to no, it will be in the envelope
+; cidinternalcontexts=intern ; Internal Context for Name Playback instead of
+ ; extension digits when saying caller id.
+; sayduration=no ; Turn on/off the duration information before the message. [ON by default]
+; saydurationm=2 ; Specify the minimum duration to say. Default is 2 minutes
+; dialout=fromvm ; Context to dial out from [option 4 from mailbox's advanced menu].
+ ; If not specified, option 4 will not be listed and dialing out
+ ; from within VoiceMailMain() will not be permitted.
+sendvoicemail=yes ; Allow the user to compose and send a voicemail while inside
+ ; VoiceMailMain() [option 5 from mailbox's advanced menu].
+ ; If set to 'no', option 5 will not be listed.
+; searchcontexts=yes ; Current default behavior is to search only the default context
+ ; if one is not specified. The older behavior was to search all contexts.
+ ; This option restores the old behavior [DEFAULT=no]
+; callback=fromvm ; Context to call back from
+ ; if not listed, calling the sender back will not be permitted
+; review=yes ; Allow sender to review/rerecord their message before saving it [OFF by default
+; operator=yes ; Allow sender to hit 0 before/after/during leaving a voicemail to
+ ; reach an operator [OFF by default]
+; envelope=no ; Turn on/off envelope playback before message playback. [ON by default]
+ ; This does NOT affect option 3,3 from the advanced options menu
+; delete=yes ; After notification, the voicemail is deleted from the server. [per-mailbox only]
+ ; This is intended for use with users who wish to receive their
+ ; voicemail ONLY by email. Note: "deletevoicemail" is provided as an
+ ; equivalent option for Realtime configuration.
+; volgain=0.0 ; Emails bearing the voicemail may arrive in a volume too
+ ; quiet to be heard. This parameter allows you to specify how
+ ; much gain to add to the message when sending a voicemail.
+ ; NOTE: sox must be installed for this option to work.
+; nextaftercmd=yes ; Skips to the next message after hitting 7 or 9 to delete/save current message.
+ ; [global option only at this time]
+; forcename=yes ; Forces a new user to record their name. A new user is
+ ; determined by the password being the same as
+ ; the mailbox number. The default is "no".
+; forcegreetings=no ; This is the same as forcename, except for recording
+ ; greetings. The default is "no".
+; hidefromdir=yes ; Hide this mailbox from the directory produced by app_directory
+ ; The default is "no".
+; tempgreetwarn=yes ; Remind the user that their temporary greeting is set
+; vm-password=custom_sound
+ ; Customize which sound file is used instead of the default
+ ; prompt that says: "password"
+; vm-newpassword=custom_sound
+ ; Customize which sound file is used instead of the default
+ ; prompt that says: "Please enter your new password followed by
+ ; the pound key."
+; vm-passchanged=custom_sound
+ ; Customize which sound file is used instead of the default
+ ; prompt that says: "Your password has been changed."
+; vm-reenterpassword=custom_sound
+ ; Customize which sound file is used instead of the default
+ ; prompt that says: "Please re-enter your password followed by
+ ; the pound key"
+; vm-mismatch=custom_sound
+ ; Customize which sound file is used instead of the default
+ ; prompt that says: "The passwords you entered and re-entered
+ ; did not match. Please try again."
+; listen-control-forward-key=# ; Customize the key that fast-forwards message playback
+; listen-control-reverse-key=* ; Customize the key that rewinds message playback
+; listen-control-pause-key=0 ; Customize the key that pauses/unpauses message playback
+; listen-control-restart-key=2 ; Customize the key that restarts message playback
+; listen-control-stop-key=13456789 ; Customize the keys that interrupt message playback, probably all keys not set above
+
+; Maximum number of messages allowed in the 'Deleted' folder. If set to 0
+; or no then no deleted messages will be moved. If non-zero (max 9999) then up
+; to this number of messages will be automagically saved when they are
+; 'deleted' on a FIFO basis.
+; defaults to being off
+; backupdeleted=100
+
+
+[zonemessages]
+eastern=America/New_York|'vm-received' Q 'digits/at' IMp
+central=America/Chicago|'vm-received' Q 'digits/at' IMp
+central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
+military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'
+european=Europe/Copenhagen|'vm-received' a d b 'digits/at' HM
+
+
+
+[default]
+; Define maximum number of messages per folder for a particular context.
+;maxmsg=50
+
+1234 => 4242,Example Mailbox,root@localhost
+;4200 => 9855,Mark Spencer,markster@linux-support.net,mypager@digium.com,attach=no|serveremail=myaddy@digium.com|tz=central|maxmsg=10
+;4300 => 3456,Ben Rigas,ben@american-computer.net
+;4310 => -5432,Sales,sales@marko.net
+;4069 => 6522,Matt Brooks,matt@marko.net,,|tz=central|attach=yes|saycid=yes|dialout=fromvm|callback=fromvm|review=yes|operator=yes|envelope=yes|moveheard=yes|sayduration=yes|saydurationm=1
+;4073 => 1099,Bianca Paige,bianca@biancapaige.com,,delete=1
+;4110 => 3443,Rob Flynn,rflynn@blueridge.net
+;4235 => 1234,Jim Holmes,jim@astricon.ips,,Tz=european
+
+
+;
+; Mailboxes may be organized into multiple contexts for
+; voicemail virtualhosting
+;
+
+[other]
+;The intro can be customized on a per-context basis
+;directoryintro=dir-company2
+1234 => 5678,Company2 User,root@localhost
diff --git a/trunk/configs/vpb.conf.sample b/trunk/configs/vpb.conf.sample
new file mode 100644
index 000000000..4a9b0b36a
--- /dev/null
+++ b/trunk/configs/vpb.conf.sample
@@ -0,0 +1,108 @@
+;
+; V6PCI/V12PCI config file for VoiceTronix Hardware
+;
+; Options for [general] section
+;
+; type = v12pci|v6pci|v4pci
+; cards = number of cards
+; To use Asterisk indication tones
+; indication = 1
+; none,-24db,-18db only for use with OpenLine4
+; ecsuppthres = 0|2048|4096
+; Inter Digit Delay timeout for when collecting DTMF tones for dialling
+; from a Station port, in ms
+; dtmfidd = 3000
+; To use Asterisk DTMF detection
+; ast-dtmf-det=1
+; Used with ast-dtmf-det
+; relaxdtmf=1
+; When a native bridge occurs between 2 vpb channels, it will only break
+; the connection for '#' and '*'
+; break-for-dtmf=no
+; Set the maximum period between received rings, default 4000ms
+; timer_period_ring=4000
+;
+; Options for [interface] section
+; board = board_number (1, 2, 3, ...)
+; channel = channel_number (1,2,3...)
+; mode = fxo|immediate|dialtone -- for type of line and line handling
+; context = starting context
+; echocancel = on|off (on by default of v4pci, off by default for others)
+; callerid = on|off|v23|bell (on => to collect caller ID if available between 1st/2nd rings using vpb functions)
+; (v23|bell => collect caller ID using asterisk functions)
+; Or for use with FXS channels a '"name" <location>' format can be used to set the channels CID
+;
+; UseLoopDrop = 0|1 (enables the use of Loop Drop detection, on by default in
+; some cases spurious loop-drops can cause unexpected
+; hangup detection)
+;
+; Gain settings
+; txgain => Transmit Software Gain (-12 => 12)
+; rxgain => Receive Software Gain (-12 => 12)
+; txhwgain => Transmit hardware gain (-12 => 12)
+; rxhwgain => Receive Hardware gain (-12 => 12)
+;
+; These are advanced settings and only mentioned for completeness.
+; bal1 => Hybrid balance codec register 1
+; bal2 => Hybrid balance codec register 2
+; bal3 => Hybrid balance codec register 3
+;
+; Dial translations - if you want a pause or hook-flash in your dial string
+; you can use "w" for pause (wait) or "f" for "hook-flash", eg:
+; exten => _9XXX,1,Dial(vpb/g1/ww${EXTEN:${TRUNKMSD}})
+;
+;
+
+[general]
+type = v12pci
+;type = v6pci
+;type = v4pci
+cards = 1
+
+[interfaces]
+
+board = 0
+echocancel = on
+
+
+; For OpenLine4 cards
+;context = demo
+;mode = fxo
+;channel = 0
+;channel = 1
+;channel = 2
+;channel = 3
+
+; For OpenSwith12 with jumpers at factory default
+context = demo
+mode = fxo
+channel = 8
+channel = 9
+channel = 10
+channel = 11
+
+context = local
+mode = dialtone
+channel = 0
+channel = 1
+channel = 2
+channel = 3
+channel = 4
+channel = 5
+channel = 6
+channel = 7
+;
+; For OpenSwitch6
+; Note that V6PCI channel numbers start at 7!
+;context = demo
+;mode = fxo
+;channel = 6
+;channel = 7
+
+;mode = dialtone
+;channel = 8
+;channel = 9
+;channel = 10
+;channel = 11
+
+
diff --git a/trunk/configs/zapata.conf.sample b/trunk/configs/zapata.conf.sample
new file mode 100644
index 000000000..b2146b6b5
--- /dev/null
+++ b/trunk/configs/zapata.conf.sample
@@ -0,0 +1,909 @@
+;
+; Zapata telephony interface
+;
+; Configuration file
+;
+; You need to restart Asterisk to re-configure the Zap channel
+; CLI> reload chan_zap.so
+; will reload the configuration file,
+; but not all configuration options are
+; re-configured during a reload (signalling, as well as
+; PRI and SS7-related settings cannot be changed on a
+; reload.
+;
+; This file documents many configuration variables. Normally unless you
+; know what a variable means or that it should be changed, there's no
+; reason to unrem lines.
+;
+; remmed-out examples below (those lines that begin with a ';' but no
+; space afterwards) typically show a value that is not the defauult value,
+; but would make sense under cetain circumstances. The default values
+; are usually sane. Thus you should typically not touch them unless you
+; know what they mean or you know you should change them.
+
+
+[trunkgroups]
+;
+; Trunk groups are used for NFAS or GR-303 connections.
+;
+; Group: Defines a trunk group.
+; trunkgroup => <trunkgroup>,<dchannel>[,<backup1>...]
+;
+; trunkgroup is the numerical trunk group to create
+; dchannel is the zap channel which will have the
+; d-channel for the trunk.
+; backup1 is an optional list of backup d-channels.
+;
+;trunkgroup => 1,24,48
+;trunkgroup => 1,24
+;
+; Spanmap: Associates a span with a trunk group
+; spanmap => <zapspan>,<trunkgroup>[,<logicalspan>]
+;
+; zapspan is the zap span number to associate
+; trunkgroup is the trunkgroup (specified above) for the mapping
+; logicalspan is the logical span number within the trunk group to use.
+; if unspecified, no logical span number is used.
+;
+;spanmap => 1,1,1
+;spanmap => 2,1,2
+;spanmap => 3,1,3
+;spanmap => 4,1,4
+
+[channels]
+;
+; Default language
+;
+;language=en
+;
+; Context for calls. Defaults to 'default'
+;
+;context=incoming
+;
+; Switchtype: Only used for PRI.
+;
+; national: National ISDN 2 (default)
+; dms100: Nortel DMS100
+; 4ess: AT&T 4ESS
+; 5ess: Lucent 5ESS
+; euroisdn: EuroISDN (common in Europe)
+; ni1: Old National ISDN 1
+; qsig: Q.SIG
+;
+;switchtype=euroisdn
+;
+; Some switches (AT&T especially) require network specific facility IE
+; supported values are currently 'none', 'sdn', 'megacom', 'tollfreemegacom', 'accunet'
+;
+; nsf cannot be changed on a reload.
+;
+;nsf=none
+;
+; PRI Dialplan: Only RARELY used for PRI.
+; PRI Local Dialplan: Only RARELY used for PRI (sets the calling number's
+; numbering plan)
+; pridialplan and prilocaldialplan cannot be changed on a reload.
+;
+; unknown: Unknown
+; private: Private ISDN
+; local: Local ISDN
+; national: National ISDN
+; international: International ISDN
+; dynamic: Dynamically selects the appropriate dialplan
+; redundant: Same as dynamic, except that the underlying number is not
+; changed (not common)
+;
+;pridialplan=national
+;prilocaldialplan=national
+;
+; pridialplan may be also set at dialtime, by prefixing the dialled number with
+; one of the following letters:
+; U - Unknown
+; I - International
+; N - National
+; L - Local (Net Specific)
+; S - Subscriber
+; V - Abbreviated
+; R - Reserved (should probably never be used but is included for completeness)
+;
+; Additionally, you may also set the following NPI bits (also by prefixing the
+; dialled string with one of the following letters):
+; u - Unknown
+; e - E.163/E.164 (ISDN/telephony)
+; x - X.121 (Data)
+; f - F.69 (Telex)
+; n - National
+; p - Private
+; r - Reserved (should probably never be used but is included for completeness)
+;
+; You may also set the prilocaldialplan in the same way, but by prefixing the
+; Caller*ID Number, rather than the dialled number. Please note that telcos
+; which require this kind of additional manipulation of the TON/NPI are *rare*.
+; Most telco PRIs will work fine simply by setting pridialplan to unknown or
+; dynamic.
+;
+;
+; PRI caller ID prefixes based on the given TON/NPI (dialplan)
+; This is especially needed for EuroISDN E1-PRIs
+;
+; None of the prefix settings can be changed on reload.
+;
+; sample 1 for Germany
+;internationalprefix = 00
+;nationalprefix = 0
+;localprefix = 0711
+;privateprefix = 07115678
+;unknownprefix =
+;
+; sample 2 for Germany
+;internationalprefix = +
+;nationalprefix = +49
+;localprefix = +49711
+;privateprefix = +497115678
+;unknownprefix =
+;
+; PRI resetinterval: sets the time in seconds between restart of unused
+; B channels; defaults to 'never'.
+;
+;resetinterval = 3600
+;
+; Overlap dialing mode (sending overlap digits)
+; Cannot be changed on a reload.
+;
+;overlapdial=yes
+;
+; PRI Out of band indications.
+; Enable this to report Busy and Congestion on a PRI using out-of-band
+; notification. Inband indication, as used by Asterisk doesn't seem to work
+; with all telcos.
+;
+; outofband: Signal Busy/Congestion out of band with RELEASE/DISCONNECT
+; inband: Signal Busy/Congestion using in-band tones (default)
+;
+; priindication cannot be changed on a reload.
+;
+;priindication = outofband
+;
+; If you need to override the existing channels selection routine and force all
+; PRI channels to be marked as exclusively selected, set this to yes.
+;
+; priexclusive cannot be changed on a reload.
+;
+;priexclusive = yes
+;
+; ISDN Timers
+; All of the ISDN timers and counters that are used are configurable. Specify
+; the timer name, and its value (in ms for timers).
+; K: Layer 2 max number of outstanding unacknowledged I frames (default 7)
+; N200: Layer 2 max number of retransmissions of a frame (default 3)
+; T200: Layer 2 max time before retransmission of a frame (default 1000 ms)
+; T203: Layer 2 max time without frames being exchanged (default 10000 ms)
+; T305: Wait for DISCONNECT acknowledge (default 30000 ms)
+; T308: Wait for RELEASE acknowledge (default 4000 ms)
+; T309: Maintain active calls on Layer 2 disconnection (default -1,
+; Asterisk clears calls)
+; EuroISDN: 6000 to 12000 ms, according to (N200 + 1) x T200 + 2s
+; May vary in other ISDN standards (Q.931 1993 : 90000 ms)
+; T313: Wait for CONNECT acknowledge, CPE side only (default 3000 ms)
+;
+;pritimer => t200,1000
+;pritimer => t313,4000
+;
+; To enable transmission of facility-based ISDN supplementary services (such
+; as caller name from CPE over facility), enable this option.
+; Cannot be changed on a reload.
+;
+;facilityenable = yes
+;
+; pritimer cannot be changed on a reload.
+;
+; Signalling method. The default is "auto". Valid values:
+; auto: Use the current value from Zaptel.
+; em: E & M
+; em_e1: E & M E1
+; em_w: E & M Wink
+; featd: Feature Group D (The fake, Adtran style, DTMF)
+; featdmf: Feature Group D (The real thing, MF (domestic, US))
+; featdmf_ta: Feature Group D (The real thing, MF (domestic, US)) through
+; a Tandem Access point
+; featb: Feature Group B (MF (domestic, US))
+; fgccama Feature Group C-CAMA (DP DNIS, MF ANI)
+; fgccamamf Feature Group C-CAMA MF (MF DNIS, MF ANI)
+; fxs_ls: FXS (Loop Start)
+; fxs_gs: FXS (Ground Start)
+; fxs_ks: FXS (Kewl Start)
+; fxo_ls: FXO (Loop Start)
+; fxo_gs: FXO (Ground Start)
+; fxo_ks: FXO (Kewl Start)
+; pri_cpe: PRI signalling, CPE side
+; pri_net: PRI signalling, Network side
+; gr303fxoks_net: GR-303 Signalling, FXO Loopstart, Network side
+; gr303fxsks_cpe: GR-303 Signalling, FXS Loopstart, CPE side
+; sf: SF (Inband Tone) Signalling
+; sf_w: SF Wink
+; sf_featd: SF Feature Group D (The fake, Adtran style, DTMF)
+; sf_featdmf: SF Feature Group D (The real thing, MF (domestic, US))
+; sf_featb: SF Feature Group B (MF (domestic, US))
+; e911: E911 (MF) style signalling
+; ss7: Signalling System 7
+;
+; The following are used for Radio interfaces:
+; fxs_rx: Receive audio/COR on an FXS kewlstart interface (FXO at the
+; channel bank)
+; fxs_tx: Transmit audio/PTT on an FXS loopstart interface (FXO at the
+; channel bank)
+; fxo_rx: Receive audio/COR on an FXO loopstart interface (FXS at the
+; channel bank)
+; fxo_tx: Transmit audio/PTT on an FXO groundstart interface (FXS at
+; the channel bank)
+; em_rx: Receive audio/COR on an E&M interface (1-way)
+; em_tx: Transmit audio/PTT on an E&M interface (1-way)
+; em_txrx: Receive audio/COR AND Transmit audio/PTT on an E&M interface
+; (2-way)
+; em_rxtx: Same as em_txrx (for our dyslexic friends)
+; sf_rx: Receive audio/COR on an SF interface (1-way)
+; sf_tx: Transmit audio/PTT on an SF interface (1-way)
+; sf_txrx: Receive audio/COR AND Transmit audio/PTT on an SF interface
+; (2-way)
+; sf_rxtx: Same as sf_txrx (for our dyslexic friends)
+; ss7: Signalling System 7
+;
+; signalling of a channel can not be changed on a reload.
+;
+;signalling=fxo_ls
+;
+; If you have an outbound signalling format that is different from format
+; specified above (but compatible), you can specify outbound signalling format,
+; (see below). The 'signalling' format specified will be the inbound signalling
+; format. If you only specify 'signalling', then it will be the format for
+; both inbound and outbound.
+;
+; outsignalling can only be one of:
+; em, em_e1, em_w, sf, sf_w, sf_featd, sf_featdmf, sf_featb, featd,
+; featdmf, featdmf_ta, e911, fgccama, fgccamamf
+;
+; outsignalling cannot be changed on a reload.
+;
+;signalling=featdmf
+;
+;outsignalling=featb
+;
+; For Feature Group D Tandem access, to set the default CIC and OZZ use these
+; parameters (Will not be updated on reload):
+;
+;defaultozz=0000
+;defaultcic=303
+;
+; A variety of timing parameters can be specified as well
+; The default values for those are "-1", which is to use the
+; compile-time defaults of the Zaptel kernel modules. The timing
+; parameters, (with the standard default from Zaptel):
+;
+; prewink: Pre-wink time (default 50ms)
+; preflash: Pre-flash time (default 50ms)
+; wink: Wink time (default 150ms)
+; flash: Flash time (default 750ms)
+; start: Start time (default 1500ms)
+; rxwink: Receiver wink time (default 300ms)
+; rxflash: Receiver flashtime (default 1250ms)
+; debounce: Debounce timing (default 600ms)
+;
+; None of them will update on a reload.
+;
+; How long generated tones (DTMF and MF) will be played on the channel
+; (in milliseconds).
+;
+; This is a global, rather than a per-channel setting. It will not be
+; updated on a reload.
+;
+;toneduration=100
+;
+; Whether or not to do distinctive ring detection on FXO lines:
+;
+;usedistinctiveringdetection=yes
+;
+; enable dring detection after caller ID for those countries like Australia
+; where the ring cadence is changed *after* the caller ID spill:
+;
+;distinctiveringaftercid=yes
+;
+; Whether or not to use caller ID:
+;
+usecallerid=yes
+;
+; Hide the name part and leave just the number part of the caller ID
+; string. Only applies to PRI channels.
+;hidecalleridname=yes
+;
+; Type of caller ID signalling in use
+; bell = bell202 as used in US (default)
+; v23 = v23 as used in the UK
+; v23_jp = v23 as used in Japan
+; dtmf = DTMF as used in Denmark, Sweden and Netherlands
+; smdi = Use SMDI for caller ID. Requires SMDI to be enabled (usesmdi).
+;
+;cidsignalling=v23
+;
+; What signals the start of caller ID
+; ring = a ring signals the start (default)
+; polarity = polarity reversal signals the start
+; polarity_IN = polarity reversal signals the start, for India,
+; for dtmf dialtone detection; using DTMF.
+; (see doc/India-CID.txt)
+;
+;cidstart=polarity
+;
+; Whether or not to hide outgoing caller ID (Override with *67 or *82)
+; (If your dialplan doesn't catch it)
+;
+;hidecallerid=yes
+;
+; The following option enables receiving MWI on FXO lines. The default
+; value is no. When this is enabled, and MWI notification indicates on or off,
+; the script specified by the mwimonitornotify option is executed. Also, an
+; internal Asterisk MWI event will be generated so that any other part of
+; Asterisk that cares about MWI state changes will get notified, just as if
+; the state change came from app_voicemail. The energy level that must be seen
+; before starting the MWI detection process can be set with 'mwilevel'.
+;
+;mwimonitor=no
+;mwilevel=512
+;
+; This option is used in conjunction with mwimonitor. This will get executed
+; when incoming MWI state changes. The script is passed 2 arguments. The
+; first is the corresponding mailbox, and the second is 1 or 0, indicating if
+; there are messages waiting or not.
+;
+;mwimonitornotify=/usr/local/bin/zapnotify.sh
+;
+; Whether or not to enable call waiting on internal extensions
+; With this set to 'yes', busy extensions will hear the call-waiting
+; tone, and can use hook-flash to switch between callers. The Dial()
+; app will not return the "BUSY" result for extensions.
+;
+callwaiting=yes
+;
+; Whether or not restrict outgoing caller ID (will be sent as ANI only, not
+; available for the user)
+; Mostly use with FXS ports
+;
+;restrictcid=no
+;
+; Whether or not use the caller ID presentation for the outgoing call that the
+; calling switch is sending.
+; See README.callingpres. FIXME: file no longer exists.
+;
+usecallingpres=yes
+;
+; Some countries (UK) have ring tones with different ring tones (ring-ring),
+; which means the caller ID needs to be set later on, and not just after
+; the first ring, as per the default (1).
+;
+;sendcalleridafter = 2
+;
+;
+; Support caller ID on Call Waiting
+;
+callwaitingcallerid=yes
+;
+; Support three-way calling
+;
+threewaycalling=yes
+;
+; Support flash-hook call transfer (requires three way calling)
+; Also enables call parking (overrides the 'canpark' parameter)
+;
+transfer=yes
+;
+; Allow call parking
+; ('canpark=no' is overridden by 'transfer=yes')
+;
+canpark=yes
+;
+; Support call forward variable
+;
+cancallforward=yes
+;
+; Whether or not to support Call Return (*69, if your dialplan doesn't
+; catch this first)
+;
+callreturn=yes
+;
+; Stutter dialtone support: If a mailbox is specified without a voicemail
+; context, then when voicemail is received in a mailbox in the default
+; voicemail context in voicemail.conf, taking the phone off hook will cause a
+; stutter dialtone instead of a normal one.
+;
+; If a mailbox is specified *with* a voicemail context, the same will result
+; if voicemail received in mailbox in the specified voicemail context.
+;
+; for default voicemail context, the example below is fine:
+;
+;mailbox=1234
+;
+; for any other voicemail context, the following will produce the stutter tone:
+;
+;mailbox=1234@context
+;
+; Enable echo cancellation
+; Use either "yes", "no", or a power of two from 32 to 256 if you wish to
+; actually set the number of taps of cancellation.
+;
+; Note that when setting the number of taps, the number 256 does not translate
+; to 256 ms of echo cancellation. echocancel=256 means 256 / 8 = 32 ms.
+;
+; Note that if any of your Zaptel cards have hardware echo cancellers,
+; then this setting only turns them on and off; numeric settings will
+; be treated as "yes". There are no special settings required for
+; hardware echo cancellers; when present and enabled in their kernel
+; modules, they take precedence over the software echo canceller compiled
+; into Zaptel automatically.
+;
+;
+echocancel=yes
+;
+; As of Zaptel 1.4.8, some Zaptel echo cancellers (software and hardware)
+; support adjustable parameters; these parameters can be supplied as
+; additional options to the 'echocancel' setting. Note that Asterisk
+; does not attempt to validate the parameters or their values, so if you
+; supply an invalid parameter you will not know the specific reason it
+; failed without checking the kernel message log for the error(s)
+; put there by Zaptel.
+;
+;echocancel=128,param1=32,param2=0,param3=14
+;
+; Generally, it is not necessary (and in fact undesirable) to echo cancel when
+; the circuit path is entirely TDM. You may, however, change this behavior
+; by enabling the echo canceller during pure TDM bridging below.
+;
+echocancelwhenbridged=yes
+;
+; In some cases, the echo canceller doesn't train quickly enough and there
+; is echo at the beginning of the call. Enabling echo training will cause
+; Zaptel to briefly mute the channel, send an impulse, and use the impulse
+; response to pre-train the echo canceller so it can start out with a much
+; closer idea of the actual echo. Value may be "yes", "no", or a number of
+; milliseconds to delay before training (default = 400)
+;
+; WARNING: In some cases this option can make echo worse! If you are
+; trying to debug an echo problem, it is worth checking to see if your echo
+; is better with the option set to yes or no. Use whatever setting gives
+; the best results.
+;
+; Note that these parameters do not apply to hardware echo cancellers.
+;
+;echotraining=yes
+;echotraining=800
+;
+; If you are having trouble with DTMF detection, you can relax the DTMF
+; detection parameters. Relaxing them may make the DTMF detector more likely
+; to have "talkoff" where DTMF is detected when it shouldn't be.
+;
+;relaxdtmf=yes
+;
+; You may also set the default receive and transmit gains (in dB)
+;
+; Gain Settings: increasing / decreasing the volume level on a channel.
+; The values are in db (decibells). A positive number
+; increases the volume level on a channel, and a
+; negavive value decreases volume level.
+;
+; There are several independent gain settings:
+; rxgain: gain for the rx (receive - into Asterisk) channel. Default: 0.0
+; txgain: gain for the tx (transmit - out of Asterisk Asterisk) channel.
+; Default: 0.0
+; cid_rxgain: set the gain just for the caller ID sounds Asterisk
+; emits. Default: 5.0 .
+
+;rxgain=2.0
+;txgain=3.0
+;
+; Logical groups can be assigned to allow outgoing roll-over. Groups range
+; from 0 to 63, and multiple groups can be specified. By default the
+; channel is not a member of any group.
+;
+; Note that an explicit empty value for 'group' is invalid, and will not
+; override a previous non-empty one. The same applies to callgroup and
+; pickupgroup as well.
+;
+group=1
+;
+; Ring groups (a.k.a. call groups) and pickup groups. If a phone is ringing
+; and it is a member of a group which is one of your pickup groups, then
+; you can answer it by picking up and dialing *8#. For simple offices, just
+; make these both the same. Groups range from 0 to 63.
+;
+callgroup=1
+pickupgroup=1
+
+; Channel variable to be set for all calls from this channel
+;setvar=CHANNEL=42
+
+;
+; Specify whether the channel should be answered immediately or if the simple
+; switch should provide dialtone, read digits, etc.
+; Note: If immediate=yes the dialplan execution will always start at extension
+; 's' priority 1 regardless of the dialed number!
+;
+;immediate=yes
+;
+; Specify whether flash-hook transfers to 'busy' channels should complete or
+; return to the caller performing the transfer (default is yes).
+;
+;transfertobusy=no
+;
+; caller ID can be set to "asreceived" or a specific number if you want to
+; override it. Note that "asreceived" only applies to trunk interfaces.
+; fullname sets just the
+;
+; fullname: sets just the name part.
+; cid_number: sets just the number part:
+;
+;callerid = 123456
+;
+;callerid = My Name <2564286000>
+; Which can also be written as:
+;cid_number = 2564286000
+;fullname = My Name
+;
+;callerid = asreceived
+;
+; should we use the caller ID from incoming call on zap transfer?
+;
+;useincomingcalleridonzaptransfer = yes
+;
+; AMA flags affects the recording of Call Detail Records. If specified
+; it may be 'default', 'omit', 'billing', or 'documentation'.
+;
+;amaflags=default
+;
+; Channels may be associated with an account code to ease
+; billing
+;
+;accountcode=lss0101
+;
+; ADSI (Analog Display Services Interface) can be enabled on a per-channel
+; basis if you have (or may have) ADSI compatible CPE equipment
+;
+;adsi=yes
+;
+; SMDI (Simplified Message Desk Interface) can be enabled on a per-channel
+; basis if you would like that channel to behave like an SMDI message desk.
+; The SMDI port specified should have already been defined in smdi.conf. The
+; default port is /dev/ttyS0.
+;
+;usesmdi=yes
+;smdiport=/dev/ttyS0
+;
+; On trunk interfaces (FXS) and E&M interfaces (E&M, Wink, Feature Group D
+; etc, it can be useful to perform busy detection either in an effort to
+; detect hangup or for detecting busies. This enables listening for
+; the beep-beep busy pattern.
+;
+;busydetect=yes
+;
+; If busydetect is enabled, it is also possible to specify how many busy tones
+; to wait for before hanging up. The default is 3, but it might be
+; safer to set to 6 or even 8. Mind that the higher the number, the more
+; time that will be needed to hangup a channel, but lowers the probability
+; that you will get random hangups.
+;
+;busycount=6
+;
+; If busydetect is enabled, it is also possible to specify the cadence of your
+; busy signal. In many countries, it is 500msec on, 500msec off. Without
+; busypattern specified, we'll accept any regular sound-silence pattern that
+; repeats <busycount> times as a busy signal. If you specify busypattern,
+; then we'll further check the length of the sound (tone) and silence, which
+; will further reduce the chance of a false positive.
+;
+;busypattern=500,500
+;
+; NOTE: In make menuselect, you'll find further options to tweak the busy
+; detector. If your country has a busy tone with the same length tone and
+; silence (as many countries do), consider enabling the
+; BUSYDETECT_COMPARE_TONE_AND_SILENCE option.
+;
+; To further detect which hangup tone your telco provider is sending, it is
+; useful to use the ztmonitor utility to record the audio that main/dsp.c
+; is receiving after the caller hangs up.
+;
+; Use a polarity reversal to mark when a outgoing call is answered by the
+; remote party.
+;
+;answeronpolarityswitch=yes
+;
+; In some countries, a polarity reversal is used to signal the disconnect of a
+; phone line. If the hanguponpolarityswitch option is selected, the call will
+; be considered "hung up" on a polarity reversal.
+;
+;hanguponpolarityswitch=yes
+;
+; polarityonanswerdelay: minimal time period (ms) between the answer
+; polarity switch and hangup polarity switch.
+; (default: 600ms)
+;
+; On trunk interfaces (FXS) it can be useful to attempt to follow the progress
+; of a call through RINGING, BUSY, and ANSWERING. If turned on, call
+; progress attempts to determine answer, busy, and ringing on phone lines.
+; This feature is HIGHLY EXPERIMENTAL and can easily detect false answers,
+; so don't count on it being very accurate.
+;
+; Few zones are supported at the time of this writing, but may be selected
+; with "progzone".
+;
+; progzone also affects the pattern used for buzydetect (unless
+; busypattern is set explicitly). The possible values are:
+; us (default)
+; ca (alias for 'us')
+; cr (Costa Rica)
+; br (Brazil, alias for 'cr')
+; uk
+;
+; This feature can also easily detect false hangups. The symptoms of this is
+; being disconnected in the middle of a call for no reason.
+;
+;callprogress=yes
+;progzone=uk
+;
+; Set the tonezone. Equivalent of the defaultzone settings in
+; /etc/zaptel.conf . This sets the tone zone by number.
+; Note that you'd still need to load tonezones (loadzone in zaptel.conf).
+; The default is -1: not to set anything.
+;tonezone = 0 ; 0 is US
+;
+; FXO (FXS signalled) devices must have a timeout to determine if there was a
+; hangup before the line was answered. This value can be tweaked to shorten
+; how long it takes before Zap considers a non-ringing line to have hungup.
+;
+; ringtimeout will not update on a reload.
+;
+;ringtimeout=8000
+;
+; For FXO (FXS signalled) devices, whether to use pulse dial instead of DTMF
+; Pulse digits from phones (FXS devices, FXO signalling) are always
+; detected.
+;
+;pulsedial=yes
+;
+; For fax detection, uncomment one of the following lines. The default is *OFF*
+;
+;faxdetect=both
+;faxdetect=incoming
+;faxdetect=outgoing
+;faxdetect=no
+;
+; This option specifies a preference for which music on hold class this channel
+; should listen to when put on hold if the music class has not been set on the
+; channel with Set(CHANNEL(musicclass)=whatever) in the dialplan, and the peer
+; channel putting this one on hold did not suggest a music class.
+;
+; If this option is set to "passthrough", then the hold message will always be
+; passed through as signalling instead of generating hold music locally. This
+; setting is only valid when used on a channel that uses digital signalling.
+;
+;mohinterpret=default
+;
+; This option specifies which music on hold class to suggest to the peer channel
+; when this channel places the peer on hold.
+;
+;mohsuggest=default
+;
+; PRI channels can have an idle extension and a minunused number. So long as
+; at least "minunused" channels are idle, chan_zap will try to call "idledial"
+; on them, and then dump them into the PBX in the "idleext" extension (which
+; is of the form exten@context). When channels are needed the "idle" calls
+; are disconnected (so long as there are at least "minidle" calls still
+; running, of course) to make more channels available. The primary use of
+; this is to create a dynamic service, where idle channels are bundled through
+; multilink PPP, thus more efficiently utilizing combined voice/data services
+; than conventional fixed mappings/muxings.
+;
+; Those settings cannot be changed on reload.
+;
+;idledial=6999
+;idleext=6999@dialout
+;minunused=2
+;minidle=1
+;
+; Configure jitter buffers in Zapata (each one is 20ms, default is 4)
+; This is set globally, rather than per-channel.
+;
+;jitterbuffers=4
+;
+;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
+; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
+ ; ZAP channel. Defaults to "no". An enabled jitterbuffer will
+ ; be used only if the sending side can create and the receiving
+ ; side can not accept jitter. The ZAP channel can't accept jitter,
+ ; thus an enabled jitterbuffer on the receive ZAP side will always
+ ; be used if the sending side can create jitter.
+
+; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
+
+; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
+ ; resynchronized. Useful to improve the quality of the voice, with
+ ; big jumps in/broken timestamps, usually sent from exotic devices
+ ; and programs. Defaults to 1000.
+
+; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a ZAP
+ ; channel. Two implementations are currently available - "fixed"
+ ; (with size always equals to jbmax-size) and "adaptive" (with
+ ; variable size, actually the new jb of IAX2). Defaults to fixed.
+
+; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
+;-----------------------------------------------------------------------------------
+;
+; You can define your own custom ring cadences here. You can define up to 8
+; pairs. If the silence is negative, it indicates where the caller ID spill is
+; to be placed. Also, if you define any custom cadences, the default cadences
+; will be turned off.
+;
+; This setting is global, rather than per-channel. It will not update on
+; a reload.
+;
+; Syntax is: cadence=ring,silence[,ring,silence[...]]
+;
+; These are the default cadences:
+;
+;cadence=125,125,2000,-4000
+;cadence=250,250,500,1000,250,250,500,-4000
+;cadence=125,125,125,125,125,-4000
+;cadence=1000,500,2500,-5000
+;
+; Each channel consists of the channel number or range. It inherits the
+; parameters that were specified above its declaration.
+;
+; For GR-303, CRV's are created like channels except they must start with the
+; trunk group followed by a colon, e.g.:
+;
+; crv => 1:1
+; crv => 2:1-2,5-8
+;
+;
+;callerid="Green Phone"<(256) 428-6121>
+;channel => 1
+;callerid="Black Phone"<(256) 428-6122>
+;channel => 2
+;callerid="CallerID Phone" <(630) 372-1564>
+;channel => 3
+;callerid="Pac Tel Phone" <(256) 428-6124>
+;channel => 4
+;callerid="Uniden Dead" <(256) 428-6125>
+;channel => 5
+;callerid="Cortelco 2500" <(256) 428-6126>
+;channel => 6
+;callerid="Main TA 750" <(256) 428-6127>
+;channel => 44
+;
+; For example, maybe we have some other channels which start out in a
+; different context and use E & M signalling instead.
+;
+;context=remote
+;sigalling=em
+;channel => 15
+;channel => 16
+
+;signalling=em_w
+;
+; All those in group 0 I'll use for outgoing calls
+;
+; Strip most significant digit (9) before sending
+;
+;stripmsd=1
+;callerid=asreceived
+;group=0
+;signalling=fxs_ls
+;channel => 45
+
+;signalling=fxo_ls
+;group=1
+;callerid="Joe Schmoe" <(256) 428-6131>
+;channel => 25
+;callerid="Megan May" <(256) 428-6132>
+;channel => 26
+;callerid="Suzy Queue" <(256) 428-6233>
+;channel => 27
+;callerid="Larry Moe" <(256) 428-6234>
+;channel => 28
+;
+; Sample PRI (CPE) config: Specify the switchtype, the signalling as either
+; pri_cpe or pri_net for CPE or Network termination, and generally you will
+; want to create a single "group" for all channels of the PRI.
+;
+; switchtype cannot be changed on a reload.
+;
+; switchtype = national
+; signalling = pri_cpe
+; group = 2
+; channel => 1-23
+
+;
+
+; Used for distinctive ring support for x100p.
+; You can see the dringX patterns is to set any one of the dringXcontext fields
+; and they will be printed on the console when an inbound call comes in.
+;
+; dringXrange is used to change the acceptable ranges for "tone offsets". Defaults to 10.
+; Note: a range of 0 is NOT what you might expect - it instead forces it to the default.
+; A range of -1 will force it to always match.
+; Anything lower than -1 would presumably cause it to never match.
+;
+;dring1=95,0,0
+;dring1context=internal1
+;dring1range=10
+;dring2=325,95,0
+;dring2context=internal2
+;dring2range=10
+; If no pattern is matched here is where we go.
+;context=default
+;channel => 1
+
+; ---------------- Options for use with signalling=ss7 -----------------
+; None of them can be changed by a reload.
+;
+; Variant of SS7 signalling:
+; Options are itu and ansi
+;ss7type = itu
+
+; SS7 Called Nature of Address Indicator
+;
+; unknown: Unknown
+; subscriber: Subscriber
+; national: National
+; international: International
+; dynamic: Dynamically selects the appropriate dialplan
+;
+;ss7_called_nai=dynamic
+;
+; SS7 Calling Nature of Address Indicator
+;
+; unknown: Unknown
+; subscriber: Subscriber
+; national: National
+; international: International
+; dynamic: Dynamically selects the appropriate dialplan
+;
+;ss7_calling_nai=dynamic
+;
+;
+; sample 1 for Germany
+;ss7_internationalprefix = 00
+;ss7_nationalprefix = 0
+;ss7_subscriberprefix =
+;ss7_unknownprefix =
+;
+
+; All settings apply to linkset 1
+;linkset = 1
+
+; Point code of the linkset. For ITU, this is the decimal number
+; format of the point code. For ANSI, this can either be in decimal
+; number format or in the xxx-xxx-xxx format
+;pointcode = 1
+
+; Point code of node adjacent to this signalling link (Possibly the STP between you and
+; your destination). Point code format follows the same rules as above.
+;adjpointcode = 2
+
+; Default point code that you would like to assign to outgoing messages (in case of
+; routing through STPs, or using A links). Point code format follows the same rules
+; as above.
+;defaultdpc = 3
+
+; Begin CIC (Circuit indication codes) count with this number
+;cicbeginswith = 1
+
+; What the MTP3 network indicator bits should be set to. Choices are
+; national, national_spare, international, international_spare
+;networkindicator=international
+
+; First signalling channel
+;sigchan = 48
+
+; Channels to associate with CICs on this linkset
+;channel = 25-47
+;
+; For more information on setting up SS7, see the README file in libss7 or
+; the doc/ss7.txt file in the Asterisk source tree.
+; ----------------- SS7 Options ----------------------------------------