manager: The eventfilter= option now takes an extended regex.

In pre-trunk versions (...12) it accepts a basic regex, which is
confusing because all other regexes in asterisk are of the
extended kind.

Review: https://reviewboard.asterisk.org/r/3147/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@406618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Walter Doekes
2014-01-27 08:17:22 +00:00
parent 33071d636c
commit cc42229f26
3 changed files with 11 additions and 7 deletions

View File

@@ -47,5 +47,8 @@ Configuration Files:
again set the root console verbose level and affect the verbose level
logged.
- The manager.conf 'eventfilter' now takes an "extended" regular expression
instead of a "basic" one.
===========================================================
===========================================================

View File

@@ -94,13 +94,14 @@ bindaddr = 0.0.0.0
; user.
;
;eventfilter=Event: Newchannel
;eventfilter=!Channel: DAHDI.*
;eventfilter=Channel: (PJ)?SIP/(james|jim|john)-
;eventfilter=!Channel: DAHDI/
; The eventfilter option is used to whitelist or blacklist events per user.
; A filter consists of a (basic/old-style and unanchored) regular expression
; that is run on the entire event data. If the first character of the filter
; is an exclamation mark (!), the filter is appended to the blacklist instead
; of the whitelist. After first checking the read access below, the regular
; expression filters are processed as follows:
; A filter consists of an (unanchored) regular expression that is run on the
; entire event data. If the first character of the filter is an exclamation
; mark (!), the filter is appended to the blacklist instead of the whitelist.
; After first checking the read access below, the regular expression filters
; are processed as follows:
; - If no filters are configured all events are reported as normal.
; - If there are white filters only: implied black all filter processed first,
; then white filters.

View File

@@ -5121,7 +5121,7 @@ static enum add_filter_result manager_add_filter(const char *filter_pattern, str
is_blackfilter = 0;
}
if (regcomp(new_filter, filter_pattern, 0)) { /* XXX: the only place we use non-REG_EXTENDED */
if (regcomp(new_filter, filter_pattern, REG_EXTENDED | REG_NOSUB)) {
ao2_t_ref(new_filter, -1, "failed to make regex");
return FILTER_COMPILE_FAIL;
}