Skip to content
Snippets Groups Projects
Commit 523c95e1 authored by Richard Mudgett's avatar Richard Mudgett
Browse files

Add missing CEL logging fields to various CEL backends.

Multiple revisions 350555,350571

........
  r350555 | rmudgett | 2012-01-13 11:12:51 -0600 (Fri, 13 Jan 2012) | 12 lines
  
  Add missing CEL logging fields to various CEL backends.
  
  * Add missing eventextra to cel_psql.c and cel_odbc.c.
  
  * Add missing PeerAccount and EventExtra to cel_manager.c.
  
  * Add missing userdeftype support for cel_custom.conf.sample and
  cel_sqlite3_custom.conf.sample.
  
  (closes issue ASTERISK-17190)
  Reported by: Bryant Zimmerman
........
  r350571 | rmudgett | 2012-01-13 11:23:57 -0600 (Fri, 13 Jan 2012) | 8 lines
  
  Use compatible names for event extra data for various CEL backends.
  
  * Change eventextra to extra in cel_psql.c and cel_odbc.c.
  
  * Change EventExtra to Extra in cel_manager.c.
  
  (issue ASTERISK-17190)
........

Merged revisions 350555,350571 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 350585 from http://svn.asterisk.org/svn/asterisk/branches/10


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@350605 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent 9c4821f4
Branches
Tags
No related merge requests found
...@@ -61,11 +61,11 @@ static void manager_log(const struct ast_event *event, void *userdata) ...@@ -61,11 +61,11 @@ static void manager_log(const struct ast_event *event, void *userdata)
.version = AST_CEL_EVENT_RECORD_VERSION, .version = AST_CEL_EVENT_RECORD_VERSION,
}; };
if (ast_cel_fill_record(event, &record)) { if (!enablecel) {
return; return;
} }
if (!enablecel) { if (ast_cel_fill_record(event, &record)) {
return; return;
} }
...@@ -90,13 +90,29 @@ static void manager_log(const struct ast_event *event, void *userdata) ...@@ -90,13 +90,29 @@ static void manager_log(const struct ast_event *event, void *userdata)
"UniqueID: %s\r\n" "UniqueID: %s\r\n"
"LinkedID: %s\r\n" "LinkedID: %s\r\n"
"Userfield: %s\r\n" "Userfield: %s\r\n"
"Peer: %s\r\n", "Peer: %s\r\n"
record.event_name, record.account_code, record.caller_id_num, "PeerAccount: %s\r\n"
record.caller_id_name, record.caller_id_ani, record.caller_id_rdnis, "Extra: %s\r\n",
record.caller_id_dnid, record.extension, record.context, record.channel_name, record.event_name,
record.application_name, record.application_data, start_time, record.account_code,
ast_cel_get_ama_flag_name(record.amaflag), record.unique_id, record.linked_id, record.caller_id_num,
record.user_field, record.peer); record.caller_id_name,
record.caller_id_ani,
record.caller_id_rdnis,
record.caller_id_dnid,
record.extension,
record.context,
record.channel_name,
record.application_name,
record.application_data,
start_time,
ast_cel_get_ama_flag_name(record.amaflag),
record.unique_id,
record.linked_id,
record.user_field,
record.peer,
record.peer_account,
record.extra);
} }
static int load_config(int reload) static int load_config(int reload)
......
...@@ -438,6 +438,8 @@ static void odbc_log(const struct ast_event *event, void *userdata) ...@@ -438,6 +438,8 @@ static void odbc_log(const struct ast_event *event, void *userdata)
ast_copy_string(colbuf, record.peer, sizeof(colbuf)); ast_copy_string(colbuf, record.peer, sizeof(colbuf));
} else if (strcmp(entry->celname, "amaflags") == 0) { } else if (strcmp(entry->celname, "amaflags") == 0) {
snprintf(colbuf, sizeof(colbuf), "%d", record.amaflag); snprintf(colbuf, sizeof(colbuf), "%d", record.amaflag);
} else if (strcmp(entry->celname, "extra") == 0) {
ast_copy_string(colbuf, record.extra, sizeof(colbuf));
} else { } else {
colbuf[0] = 0; colbuf[0] = 0;
} }
......
...@@ -56,13 +56,17 @@ apps=dial,park ...@@ -56,13 +56,17 @@ apps=dial,park
; PARK_END -- Unpark event ; PARK_END -- Unpark event
; BRIDGE_START -- The time a bridge is started ; BRIDGE_START -- The time a bridge is started
; BRIDGE_END -- The time a bridge is ended ; BRIDGE_END -- The time a bridge is ended
; 3WAY_START -- When a 3-way conference starts (usually via attended xfer) ; BRIDGE_UPDATE -- This is a replacement channel (Masquerade)
; 3WAY_START -- When a 3-way conference starts (usually via attended transfer)
; 3WAY_END -- When one or all exit a 3-way conference ; 3WAY_END -- When one or all exit a 3-way conference
; BLINDTRANSFER -- When a blind transfer is initiated ; BLINDTRANSFER -- When a blind transfer is initiated
; ATTENDEDTRANSFER -- When an attended transfer is initiated ; ATTENDEDTRANSFER -- When an attended transfer is initiated
; TRANSFER -- Generic transfer initiated; not used yet...? ; TRANSFER -- Generic transfer initiated; not used yet...?
; PICKUP -- This channel picked up the peer channel
; FORWARD -- This channel is being forwarded somewhere else
; HOOKFLASH -- So far, when a hookflash event occurs on a DAHDI ; HOOKFLASH -- So far, when a hookflash event occurs on a DAHDI
; interface ; interface
; LINKEDID_END -- The last channel with the given linkedid is retired
; USER_DEFINED -- Triggered from the dialplan, and has a name given by the ; USER_DEFINED -- Triggered from the dialplan, and has a name given by the
; user ; user
; ;
......
...@@ -22,10 +22,13 @@ ...@@ -22,10 +22,13 @@
; details from the CEL event. There are also a few variables created by this ; details from the CEL event. There are also a few variables created by this
; module that can be used in a mapping: ; module that can be used in a mapping:
; ;
; eventtype - The name of the CEL event. ; eventtype - The name of the CEL event.
; eventtime - The timestamp of the CEL event. ; eventtime - The timestamp of the CEL event.
; eventextra - Extra data included with this CEL event, typically along with ; userdeftype - User defined event type name from CELGenUserEvent().
; an event of type USER_DEFINED from CELGenUserEvent(). ; eventextra - Extra data included with this CEL event, typically along with
; an event of type USER_DEFINED from CELGenUserEvent().
; BRIDGEPEER - Bridged peer channel name at the time of the CEL event.
; CHANNEL(peer) could also be used.
; ;
[mappings] [mappings]
;Master.csv => ${CSV_QUOTE(${eventtype})},${CSV_QUOTE(${eventtime})},${CSV_QUOTE(${CALLERID(name)})},${CSV_QUOTE(${CALLERID(num)})},${CSV_QUOTE(${CALLERID(ANI)})},${CSV_QUOTE(${CALLERID(RDNIS)})},${CSV_QUOTE(${CALLERID(DNID)})},${CSV_QUOTE(${CHANNEL(exten)})},${CSV_QUOTE(${CHANNEL(context)})},${CSV_QUOTE(${CHANNEL(channame)})},${CSV_QUOTE(${CHANNEL(appname)})},${CSV_QUOTE(${CHANNEL(appdata)})},${CSV_QUOTE(${CHANNEL(amaflags)})},${CSV_QUOTE(${CHANNEL(accountcode)})},${CSV_QUOTE(${CHANNEL(uniqueid)})},${CSV_QUOTE(${CHANNEL(linkedid)})},${CSV_QUOTE(${CHANNEL(peer)})},${CSV_QUOTE(${CHANNEL(userfield)})},${CSV_QUOTE(${eventextra})} ;Master.csv => ${CSV_QUOTE(${eventtype})},${CSV_QUOTE(${eventtime})},${CSV_QUOTE(${CALLERID(name)})},${CSV_QUOTE(${CALLERID(num)})},${CSV_QUOTE(${CALLERID(ANI)})},${CSV_QUOTE(${CALLERID(RDNIS)})},${CSV_QUOTE(${CALLERID(DNID)})},${CSV_QUOTE(${CHANNEL(exten)})},${CSV_QUOTE(${CHANNEL(context)})},${CSV_QUOTE(${CHANNEL(channame)})},${CSV_QUOTE(${CHANNEL(appname)})},${CSV_QUOTE(${CHANNEL(appdata)})},${CSV_QUOTE(${CHANNEL(amaflags)})},${CSV_QUOTE(${CHANNEL(accountcode)})},${CSV_QUOTE(${CHANNEL(uniqueid)})},${CSV_QUOTE(${CHANNEL(linkedid)})},${CSV_QUOTE(${BRIDGEPEER})},${CSV_QUOTE(${CHANNEL(userfield)})},${CSV_QUOTE(${userdeftype})},${CSV_QUOTE(${eventextra})}
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
; amaflags (an int) ; amaflags (an int)
; userfield ; userfield
; peer ; peer
; extra
; The point of this module is to allow you log whatever you like in terms of the ; The point of this module is to allow you log whatever you like in terms of the
; CEL variables. Do you want to log uniqueid? Then simply ensure that your ; CEL variables. Do you want to log uniqueid? Then simply ensure that your
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
; peeraccount ; peeraccount
; uniqueid ; uniqueid
; linkedid ; linkedid
; amaflag (an int) ; amaflags (an int)
; userfield ; userfield
; peer ; peer
; extra ; extra
......
...@@ -5,7 +5,19 @@ ...@@ -5,7 +5,19 @@
; ;
; Mappings for sqlite3 config file ; Mappings for sqlite3 config file
; ;
; Within a mapping, use the CALLERID() and CHANNEL() functions to retrieve
; details from the CEL event. There are also a few variables created by this
; module that can be used in a mapping:
;
; eventtype - The name of the CEL event.
; eventtime - The timestamp of the CEL event.
; userdeftype - User defined event type name from CELGenUserEvent().
; eventextra - Extra data included with this CEL event, typically along with
; an event of type USER_DEFINED from CELGenUserEvent().
; BRIDGEPEER - Bridged peer channel name at the time of the CEL event.
; CHANNEL(peer) could also be used.
;
;[master] ; currently, only file "master.db" is supported, with only one table at a time. ;[master] ; currently, only file "master.db" is supported, with only one table at a time.
;table => cel ;table => cel
;columns => eventtype, eventtime, cidname, cidnum, cidani, cidrdnis, ciddnid, context, exten, channame, appname, appdata, amaflags, accountcode, uniqueid, userfield, peer ;columns => eventtype, eventtime, cidname, cidnum, cidani, cidrdnis, ciddnid, context, exten, channame, appname, appdata, amaflags, accountcode, uniqueid, userfield, peer, userdeftype, eventextra
;values => '${eventtype}','${eventtime}','${CALLERID(name)}','${CALLERID(num)}','${CALLERID(ANI)}','${CALLERID(RDNIS)}','${CALLERID(DNID)}','${CHANNEL(context)}','${CHANNEL(exten)}','${CHANNEL(channame)}','${CHANNEL(appname)}','${CHANNEL(appdata)}','${CHANNEL(amaflags)}','${CHANNEL(accountcode)}','${CHANNEL(uniqueid)}','${CHANNEL(userfield)}','${CHANNEL(peer)}' ;values => '${eventtype}','${eventtime}','${CALLERID(name)}','${CALLERID(num)}','${CALLERID(ANI)}','${CALLERID(RDNIS)}','${CALLERID(DNID)}','${CHANNEL(context)}','${CHANNEL(exten)}','${CHANNEL(channame)}','${CHANNEL(appname)}','${CHANNEL(appdata)}','${CHANNEL(amaflags)}','${CHANNEL(accountcode)}','${CHANNEL(uniqueid)}','${CHANNEL(userfield)}','${BRIDGEPEER}','${userdeftype}','${eventextra}'
...@@ -47,7 +47,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") ...@@ -47,7 +47,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
static unsigned char cel_enabled; static unsigned char cel_enabled;
/*! \brief CEL is off by default */ /*! \brief CEL is off by default */
static const unsigned char CEL_ENALBED_DEFAULT = 0; #define CEL_ENABLED_DEFAULT 0
/*! /*!
* \brief which events we want to track * \brief which events we want to track
...@@ -65,12 +65,12 @@ static int64_t eventset; ...@@ -65,12 +65,12 @@ static int64_t eventset;
/*! /*!
* \brief Track no events by default. * \brief Track no events by default.
*/ */
static const int64_t CEL_DEFAULT_EVENTS = 0; #define CEL_DEFAULT_EVENTS 0
/*! /*!
* \brief Number of buckets for the appset container * \brief Number of buckets for the appset container
*/ */
static const int NUM_APP_BUCKETS = 97; #define NUM_APP_BUCKETS 97
/*! /*!
* \brief Container of Asterisk application names * \brief Container of Asterisk application names
...@@ -298,7 +298,7 @@ static int do_reload(void) ...@@ -298,7 +298,7 @@ static int do_reload(void)
ast_mutex_lock(&reload_lock); ast_mutex_lock(&reload_lock);
/* Reset all settings before reloading configuration */ /* Reset all settings before reloading configuration */
cel_enabled = CEL_ENALBED_DEFAULT; cel_enabled = CEL_ENABLED_DEFAULT;
eventset = CEL_DEFAULT_EVENTS; eventset = CEL_DEFAULT_EVENTS;
*cel_dateformat = '\0'; *cel_dateformat = '\0';
ao2_callback(appset, OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE, NULL, NULL); ao2_callback(appset, OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE, NULL, NULL);
...@@ -439,6 +439,9 @@ struct ast_channel *ast_cel_fabricate_channel_from_event(const struct ast_event ...@@ -439,6 +439,9 @@ struct ast_channel *ast_cel_fabricate_channel_from_event(const struct ast_event
AST_LIST_INSERT_HEAD(headp, newvariable, entries); AST_LIST_INSERT_HEAD(headp, newvariable, entries);
} }
if ((newvariable = ast_var_assign("userdeftype", record.user_defined_name))) {
AST_LIST_INSERT_HEAD(headp, newvariable, entries);
}
if ((newvariable = ast_var_assign("eventextra", record.extra))) { if ((newvariable = ast_var_assign("eventextra", record.extra))) {
AST_LIST_INSERT_HEAD(headp, newvariable, entries); AST_LIST_INSERT_HEAD(headp, newvariable, entries);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment