mirror of https://github.com/asterisk/asterisk
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
332 lines
14 KiB
332 lines
14 KiB
;
|
|
; AMI - The Asterisk Manager Interface
|
|
;
|
|
; Third party application call management support and PBX event supervision
|
|
;
|
|
; 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
|
|
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
|
|
;
|
|
;tlsenable=no ; set to YES to enable it
|
|
;tlsbindaddr=0.0.0.0:5039 ; address and port to bind to, default to bindaddr and port 5039
|
|
;tlscertfile=/tmp/asterisk.pem ; path to the certificate.
|
|
;tlsprivatekey=/tmp/private.pem ; path to the private key, if no private given,
|
|
; if no tlsprivatekey is given, default is to search
|
|
; tlscertfile for private key.
|
|
;tlscipher=<cipher string> ; string specifying which SSL ciphers to use or not use
|
|
;
|
|
;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
|
|
|
|
;brokeneventsaction = yes ; Restore previous behavior that caused the events
|
|
; action to not return a response in certain
|
|
; circumstances. Defaults to 'no'.
|
|
|
|
;
|
|
; Display certain channel variables every time a channel-oriented
|
|
; event is emitted:
|
|
;
|
|
; Note that this does incur a performance penalty and should be avoided if possible.
|
|
;
|
|
;channelvars = var1,var2,var3
|
|
|
|
; debug = on ; enable some debugging info in AMI messages (default off).
|
|
; Also accessible through the "manager debug" CLI command.
|
|
|
|
; authtimeout specifies the maximum number of seconds a client has to
|
|
; authenticate. If the client does not authenticate beofre this timeout
|
|
; expires, the client will be disconnected. (default: 30 seconds)
|
|
|
|
;authtimeout = 30
|
|
|
|
; authlimit specifies the maximum number of unauthenticated sessions that will
|
|
; be allowed to connect at any given time.
|
|
|
|
;authlimit = 50
|
|
|
|
;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
|
|
;
|
|
; disabledevents specifies AMI events which should be completely globally disabled.
|
|
; These events will not be available to any AMI listeners. Use this to disable
|
|
; frequent events which are not desired for any listeners. Default
|
|
; is no events are globally disabled. Event names are case-sensitive.
|
|
; Events disabled in stasis.conf do not also need to be disabled here.
|
|
; If you don't want to completely disable an AMI event, also consider the
|
|
; filter option available on a per-manager user basis to block unwanted
|
|
; events from being received in a stream (as opposed to this option which
|
|
; would prevent specified events from being generated at all).
|
|
|
|
;disabledevents = Newexten,Varset
|
|
|
|
;[mark]
|
|
;secret = mysecret
|
|
;deny=0.0.0.0/0.0.0.0
|
|
;permit=209.16.236.73/255.255.255.0
|
|
;acl=named_acl_example ; use a named ACL from acl.conf
|
|
;
|
|
;
|
|
;setvar=PBXACCOUNT=edvina
|
|
; The setvar option defines channel variables that will be set when this account
|
|
; originates a call. You can define multiple setvar= commands for one manager
|
|
; user.
|
|
;
|
|
|
|
;--
|
|
-- eventfilter --------------------------------------------------------
|
|
Include and/or exclude events for this user.
|
|
|
|
There are two ways to use this feature... Legacy and Advanced.
|
|
|
|
Legacy Event Filtering:
|
|
|
|
This is the original method of filtering events. It's no longer
|
|
recommended but still supported for backwards compatibility. The filter
|
|
is a regular expression, optionally prefixed with an exclamation point (!).
|
|
The regular expression is applied to the entire payload of every event.
|
|
If any part of the event payload matches, the event is included. If the
|
|
first character of the filter is an exclamation point (!), the event is
|
|
excluded. On a busy system, this is a resource intensive process and the
|
|
reason it's no longer recommended.
|
|
|
|
Another issue with legacy filtering is that regexes are very sensitive to
|
|
whitespace and separators. "Event:Newchannel" will NOT work because of
|
|
the missing space after the ':'. Neither will "Event: Newchannel" or
|
|
"Event Newchannel" because of the extra space in the first expression
|
|
and the missing ':' in the second.
|
|
|
|
Advanced Event Filtering:
|
|
|
|
Advanced filtering still allows you to use regular expressions but adds
|
|
the ability to pre-select certain events and constrain the regular
|
|
expression to matching the contents of a specific event header.
|
|
The syntax is:
|
|
|
|
eventfilter(<match_criteria>) = [ <match_expression> ]
|
|
|
|
<match_criteria> : [ action(include|exclude) | name(<event_name>) |
|
|
header(<header_name>) | method(<match_method>) ][, ...]
|
|
|
|
You can specify at most one of each of the following in any order,
|
|
separated by commas.
|
|
|
|
action(include|exclude): Default: 'include'. Instead of using '!' to
|
|
exclude matching events, specify 'action(exclude)'. Although the
|
|
default is "include" if "action" isn't specified, adding
|
|
"action(include)" will help with readability.
|
|
|
|
name(<event_name>): Include only events with a name exactly matching
|
|
<event_name>. This is actually implemented using the "hash" of the
|
|
event names and is therefore much more efficient than using a regular
|
|
expression.
|
|
|
|
header(<header_name>): Include only events that have a header exactly
|
|
matching <header_name>. Additionally, the data to be searched will
|
|
be constrained to the value of this header instead of the entire
|
|
event payload.
|
|
|
|
method(regex | exact | starts_with | ends_with | contains | none ):
|
|
How should <match_expression> be applied to the event data? The data may
|
|
be the entire event payload or, if header(<header_name>) was used, the
|
|
value of that specific header. If 'action(exclude)' was specified, a
|
|
"match" here will cause the event to be excluded instead of included.
|
|
|
|
regex: As a regular expression that, if matched anywhere in the
|
|
data, constitutes a match.
|
|
|
|
exact: As a simple string that must match all of the data.
|
|
Probably only useful when the data is constrained to a specific header
|
|
and the data itself is a simple value.
|
|
|
|
starts_with: As a simple string that, if found at the beginning of the
|
|
data, constitutes a match.
|
|
|
|
ends_with: As a simple string that, if found at the end of the data,
|
|
constitutes a match.
|
|
|
|
contains: As a simple string that, if found anywhere in the data,
|
|
constitutes a match.
|
|
|
|
none: Ignore <match_expression> altogether. This is the default
|
|
because the majority of use cases for event filtering involve
|
|
including or excluding events by event name without regard to the
|
|
event payload. In this case, you can just leave <match_expression>
|
|
empty.
|
|
|
|
TIP: Although match criteria order doesn't matter to Asterisk, using the
|
|
order shown can help you read them. For instance...
|
|
eventfilter(action(exclude),name(Newchannel),header(Channel),method(starts_with)) = Local/
|
|
...means "Exclude Newchannel events with a Channel header that starts with Local/"
|
|
|
|
Event Filter Processing Ordering:
|
|
|
|
Both Legacy and Advanced filter entries are processed as follows:
|
|
- If no filters are configured, all events are reported as normal.
|
|
|
|
- If there are 'include' filters only, an event that matches ANY filter
|
|
will be reported.
|
|
|
|
- If there are 'exclude' filters only, an event that matched ANY filter
|
|
will be excluded.
|
|
|
|
- If there are both 'include' and 'exclude' filters, all 'include' filters
|
|
are matched first, then the 'exclude' filters will be applied to the
|
|
resulting set.
|
|
--;
|
|
|
|
; ----- Legacy Filter Examples:
|
|
; Every legacy filter expression results in regular expression matching
|
|
; on the entire payload of every event even if no regular expression
|
|
; meta-characters were used.
|
|
|
|
; Only include Newchannel events
|
|
;eventfilter=Event: Newchannel
|
|
|
|
; Only include events of any type with a "Channel" header that matches
|
|
; the regular expression.
|
|
;eventfilter=Channel: (PJ)?SIP/(james|jim|john)-
|
|
|
|
; Only include Newchannel events which contain a "Channel" header
|
|
; for PJSIP channels.
|
|
;eventfilter = Event: Newchannel.*Channel: PJSIP/
|
|
|
|
; Only include Newchannel or Hangup events whose "Channel" header doesn't start
|
|
; with Local/. All other events are filtered out.
|
|
;eventfilter = Event: Newchannel
|
|
;eventfilter = Event: Hangup
|
|
;eventfilter = !Channel: Local/
|
|
; This causes three regexes to be searched for on every event!
|
|
|
|
; Include ALL events EXCEPT Newchannel and Hangup events whose "Channel" header
|
|
; starts with Local/.
|
|
; Other Newchannel and Hangup events ARE reported.
|
|
;eventfilter = !Event: (Newchannel|Hangup).*Channel: Local/
|
|
; This causes one regex to be searched for but it's a fairly expensive
|
|
; one.
|
|
|
|
; Exclude any event that has a "Channel" header whose value starts with "DADHI/"
|
|
;eventfilter=!Channel: DAHDI/
|
|
|
|
; ----- Advanced Filter Examples:
|
|
; All of these examples are WAY more efficient than their legacy
|
|
; equivalents.
|
|
|
|
; Include only "Newchannel" events.
|
|
; eventfilter(name(Newchannel)) =
|
|
; Note that there's nothing to the right of the '=' because you don't care
|
|
; what's in the payload. You still need the '=' though or the config file
|
|
; parser will complain. 'action(include)' and 'method(none)' are implied.
|
|
|
|
; Only include events of any type with a "Channel" header that matches
|
|
; the regular expression.
|
|
;eventfilter(action(include),header(Channel),method(regex)) = (PJ)?SIP/(james|jim|john)-
|
|
; We're still testing every event but because we only apply the regex to the
|
|
; value of the Channel header this is still more efficient than using the
|
|
; legacy method.
|
|
|
|
; Only include Newchannel and Hangup events whose "Channel" header doesn't
|
|
; start with Local/.
|
|
;eventfilter(action(include),name(Newchannel)) =
|
|
;eventfilter(action(include),name(Hangup)) =
|
|
;eventfilter(header(Channel),action(exclude),method(starts_with)) = Local/
|
|
; No regexes at all. We do the hash match against the event names first and
|
|
; only mathcing events are passed to the next filter.
|
|
; Then, in only those events, we look for a Channel header by exact match, then
|
|
; look for 'Local/' at the beginning of its value.
|
|
|
|
; Include ALL events EXCEPT Newchannel and Hangup events whose "Channel" header
|
|
; starts with Local/.
|
|
; Other Newchannel and Hangup events ARE reported.
|
|
;eventfilter(action(exclude),name(Newchannel),header(Channel),method(starts_with)) = Local/
|
|
;eventfilter(action(exclude),name(Hangup),header(Channel),method(starts_with)) = Local/
|
|
; Again, no regexes. Very efficient because the filters start by looking for
|
|
; a hash match on the event name.
|
|
|
|
; Exclude any event that has a "Channel" header whose value starts with "DADHI/"
|
|
;eventfilter(action(exclude),header(Channel),method(starts_with)) = DAHDI/
|
|
; We're still testing every event but there are no regexes involved at all.
|
|
|
|
;--
|
|
-- eventfilter end ----------------------------------------------------
|
|
--;
|
|
|
|
;
|
|
; 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:
|
|
;
|
|
; all - All event classes below (including any we may have missed).
|
|
; system - General information about the system and ability to run system
|
|
; management commands, such as Shutdown, Restart, and Reload. This
|
|
; class also includes dialplan manipulation actions such as
|
|
; DialplanExtensionAdd and DialplanExtensionRemove.
|
|
; call - Information about channels and ability to set information in a
|
|
; running channel.
|
|
; log - Logging information. Read-only. (Defined but not yet used.)
|
|
; verbose - Verbose information. Read-only. (Defined but not yet used.)
|
|
; 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.
|
|
; originate - Permission to originate new calls. Write-only.
|
|
; agi - Output AGI commands executed. Input AGI command to execute.
|
|
; cc - Call Completion events. Read-only.
|
|
; aoc - Permission to send Advice Of Charge messages and receive Advice
|
|
; - Of Charge events.
|
|
; test - Ability to read TestEvent notifications sent to the Asterisk Test
|
|
; Suite. Note that this is only enabled when the TEST_FRAMEWORK
|
|
; compiler flag is defined.
|
|
; security - Security Events. Read-only.
|
|
; message - Permissions to send out of call messages. Write-only
|
|
;
|
|
;read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
|
|
;write = system,call,agent,user,config,command,reporting,originate,message
|