This file is indexed.

/etc/asterisk/features.conf is in asterisk-config 1:11.13.1~dfsg-2+deb8u5.

This file is owned by root:root, with mode 0o640.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
;
; Sample Call Features (parking, transfer, etc) configuration
;

[general]

; OPTIONS THAT CAN ONLY BE SET IN THE GENERAL CONTEXT

;featuredigittimeout = 1000     ; Max time (ms) between digits for
                                ; feature activation  (default is 1000 ms)

; Pickup Options
;
;pickupexten = *8               ; Configure the pickup extension. (default is *8)
;pickupsound = beep             ; to indicate a successful pickup (default: no sound)
;pickupfailsound = beeperr      ; to indicate that the pickup failed (default: no sound)

; Transfer Options
;
;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
;atxfernoanswertimeout = 15     ; Timeout for answer on attended transfer default is 15 seconds.
;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.
;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.
                                ; For atxferdropcall=no to work properly, you also need to
                                ; define ATXFER_NULL_TECH in main/features.c.  The reason the
                                ; code is not enabled by default is spelled out in the comment
                                ; block near the top of main/features.c describing ATXFER_NULL_TECH.

; Parking Options
;
; These options apply to all parking lots, including the default lot defined in
; the general context.
;
;courtesytone = beep            ; Sound file to play to when someone picks up a parked call
                                ; and also when the Touch Monitor is activated/deactivated.
                                ; Default is no tone.
;parkedplay = caller            ; Who to play courtesytone to when picking up a parked call.
                                ; One of: parked, caller, both  (default is caller)
;parkeddynamic = yes            ; Enables dynamically created parkinglots. (default is no)
;adsipark = yes                 ; if you want ADSI parking announcements


; OPTIONS THAT CAN BE SET PER PARKING LOT
;
; If these options are set in the general context, they will *only* apply to the default
; parking lot. If set in any other lot, they will *only* apply to that lot.

parkext => 700                  ; What extension to dial to park. This option can take any alphanumeric string.
                                ; (default is 700 for all lots)
;parkext_exclusive=yes          ; Specify that the parkext created for this parking lot
                                ; will only access this parking lot. (default is no for all lots)
parkpos => 701-750              ; What extensions to park calls on.
                                ; (default is 701-750 for the default lot and blank for custom lots)
                                ; These need to be numeric, as Asterisk starts from the start position
                                ; and increments with one for the next parked call. Hence, leading zeros
                                ; and non-numerical characters will be ignored.
context => parkedcalls          ; Which context parked calls are in (default is parkedcalls for the default lot and blank for custom lots)
;parkinghints = no              ; Add hints priorities automatically for parking slots (default is no for all lots).
;parkingtime => 45              ; Number of seconds a call can be parked before returning.
                                ; (default is 45 for all lots)
;parkedcalltransfers = caller   ; Enables or disables DTMF based transfers when picking up a parked call.
                                ; one of: callee, caller, both, no (default is no for all lots)
;parkedcallreparking = caller   ; Enables or disables DTMF based parking when picking up a parked call.
                                ; one of: callee, caller, both, no (default is no for all lots)
;parkedcallhangup = caller      ; Enables or disables DTMF based hangups when picking up a parked call.
                                ; one of: callee, caller, both, no (default is no for all lots)
;parkedcallrecording = caller   ; Enables or disables DTMF based one-touch recording when picking up a parked call.
                                ; one of: callee, caller, both, no (default is no for all lots)
;findslot => next               ; Continue to the 'next' free parking space.
                                ; (Default is 'first' for all lots)
;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.
                                ; (Default is 'default' for the default parking lot. Non-default parkinglots
                                ; don't specify a class so the class is picked by the channel put on hold
                                ; which has the 'default' class by default.)
;comebacktoorigin = yes         ; Setting this option configures the behavior of call parking when the
                                ; parked call times out (See the parkingtime option).  The default value is 'yes'.
                                ;
                                ; 'yes' - When the parked call times out, attempt to send the call back to the peer
                                ;         that parked this call. This is done by saving off the name of the channel
                                ;         that parked the call. The call will return to the context 'park-dial' and
                                ;         an extension created based on the name of the channel that originally parked
                                ;         the call.  This extension will be created automatically to do a Dial() to the
                                ;         device that originally parked the call for comebacktodialtime seconds. If the
                                ;         call is not answered, the call will proceed to 'park-dial,t,1'.
                                ;
                                ; 'no'  - This option is useful for performing custom dialplan functionality prior to
                                ;         sending the call back to the extension that initially parked the call, or to
                                ;         an entirely different destination.
                                ;
                                ;         When the parked call times out, send it back to the dialplan.  The location
                                ;         will be defined by the comebackcontext option. The extension will be built from
                                ;         the saved channel name that parked the call. For example, if a SIP peer named
                                ;         '0004F2040001' parked this call, the extension will be 'SIP_0004F2040001'.
                                ;         (Note that an underscore is used here because the '/' character has a special
                                ;         meaning in extension names for CallerID matching.)  If this extension does not
                                ;         exist, the call will be sent to the 's' extension, instead.  Finally, if the 's'
                                ;         extension of 'parkedcallstimeout' does not exist, the call will fall back to the
                                ;         's' extension of the 'default' context.
                                ;
                                ;         Additionally, in this example an extension of 'SIP_0004F2040001' will be
                                ;         created in the 'park-dial' context.  This extension will be set up to do a
                                ;         Dial() to 'SIP/0004F2040001'.
                                ;
                                ;         During the timeout procedure, the following variables are set
                                ;         PARKINGSLOT - extension that the call was parked in prior to timing out
                                ;         PARKEDLOT - name of the lot that the call was parked in prior to timing out
                                ;         PARKER - name of the device that parked the call

;comebackdialtime = 30          ; When a parked call times out, this is the number of seconds to dial the device that
                                ; originally parked the call.  It is also available as a channel variable COMEBACKDIALTIME
                                ; after a parked call has timed out.
                                ; The default value is 30 seconds.
;comebackcontext = parkedcallstimeout
                                ; The context a timed out call will return to if comebcktoorigin=no.
                                ; The default value is 'parkedcallstimeout'.


; EXAMPLE NON-DEFAULT PARKING LOT DEFINITION
;
; You can set parkinglot with the CHANNEL dialplan function
; or by setting 'parkinglot' directly in the channel configuration file.
;
; (Note: Leading '0's and any non-numerical characters on parkpos extensions
;  will be ignored.  Parkext on the other hand can be any string.)
;
;[parkinglot_edvina]
;context => edvinapark
;parkext => 799
;parkpos => 800-850
;findslot => next
;comebacktoorigin = no
;comebackdialtime = 90
;comebackcontext = edvinapark-timeout ; Make sure you create the context!
;parkedmusicclass = edvina

; EXAMPLE DTMF FEATURE MAP
;
; 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 #) -- Make sure to set the T and/or t option in the Dial() or Queue() app call!
;disconnect => *0               ; Disconnect  (default is *) -- Make sure to set the H and/or h option in the Dial() or Queue() app call!
;automon => *1                  ; One Touch Record a.k.a. Touch Monitor -- Make sure to set the W and/or w option in the Dial() or Queue() app call!
;atxfer => *2                   ; Attended transfer  -- Make sure to set the T and/or t option in the Dial() or Queue()  app call!
;parkcall => #72                ; Park call (one step parking)  -- Make sure to set the K and/or k option in the Dial() app call!
;automixmon => *3               ; One Touch Record a.k.a. Touch MixMonitor -- Make sure to set the X and/or x option in the Dial() or Queue() app call!

; EXAMPLE DYNAMIC FEATURES APPLICATION MAP
;

[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)
;
; (Note: The two leading underscores allow these feature settings to be set on
;  on the outbound channels, as well.  Otherwise, only the original channel
;  will have access to these features.)
;
; The syntax for declaring a dynamic feature is any of the following:
;
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>[,<AppArguments>[,MOH_Class]]
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>[,"<AppArguments>"[,MOH_Class]]
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>([<AppArguments>])[,MOH_Class]

;
;  FeatureName   -> This is the name of the feature used 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.  If you need
;                   commas in your arguments, you should use either the second or third
;                   syntax, above.
;  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
;
; Set arbitrary channel variables, based upon CALLERID number (Note that the application
; argument contains commas)
;retrieveinfo => #8,peer,Set(ARRAY(CDR(mark),CDR(name))=${ODBC_FOO(${CALLERID(num)})})
;
;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

; Dynamic Feature Groups:
;   Dynamic feature groups are groupings of features defined in [applicationmap]
;   that can have their own custom key mappings.  To give a channel access to a dynamic
;   feature group, add the group name to the value of the DYNAMIC_FEATURES variable.
;
; 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 uses the keycode specified
;                       ; in the [applicationmap].