mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
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
This commit is contained in:
@@ -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)
|
|||||||
"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)
|
|||||||
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
|
|||||||
; 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 @@
|
|||||||
; 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 @@
|
|||||||
; 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 @@
|
|||||||
; peeraccount
|
; peeraccount
|
||||||
; uniqueid
|
; uniqueid
|
||||||
; linkedid
|
; linkedid
|
||||||
; amaflag (an int)
|
; amaflags (an int)
|
||||||
; userfield
|
; userfield
|
||||||
; peer
|
; peer
|
||||||
; extra
|
; extra
|
||||||
|
@@ -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}'
|
||||||
|
11
main/cel.c
11
main/cel.c
@@ -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;
|
|||||||
/*!
|
/*!
|
||||||
* \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)
|
|||||||
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
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user