]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Add missing CEL logging fields to various CEL backends.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 13 Jan 2012 17:12:51 +0000 (17:12 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 13 Jan 2012 17:12:51 +0000 (17:12 +0000)
* 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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@350555 65c4cc65-6c06-0410-ace0-fbb531ad65f3

cel/cel_manager.c
cel/cel_odbc.c
cel/cel_pgsql.c
configs/cel.conf.sample
configs/cel_custom.conf.sample
configs/cel_odbc.conf.sample
configs/cel_pgsql.conf.sample
configs/cel_sqlite3_custom.conf.sample
main/cel.c

index 551b861d058dbb51724bb91a62ff71021daf9b6d..d97bfe9bb553413eb954f05437ce322241207c18 100644 (file)
@@ -61,11 +61,11 @@ static void manager_log(const struct ast_event *event, void *userdata)
                .version = AST_CEL_EVENT_RECORD_VERSION,
        };
 
-       if (ast_cel_fill_record(event, &record)) {
+       if (!enablecel) {
                return;
        }
 
-       if (!enablecel) {
+       if (ast_cel_fill_record(event, &record)) {
                return;
        }
 
@@ -90,13 +90,29 @@ static void manager_log(const struct ast_event *event, void *userdata)
                "UniqueID: %s\r\n"
                "LinkedID: %s\r\n"
                "Userfield: %s\r\n"
-               "Peer: %s\r\n",
-               record.event_name, record.account_code, record.caller_id_num,
-               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);
+               "Peer: %s\r\n"
+               "PeerAccount: %s\r\n"
+               "EventExtra: %s\r\n",
+               record.event_name,
+               record.account_code,
+               record.caller_id_num,
+               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)
index f0c70f53c5febde12816a3b860952fea1472abf4..b6ed619f3ebd92bb1f724b20d3a2a091c3d150bc 100644 (file)
@@ -438,6 +438,8 @@ static void odbc_log(const struct ast_event *event, void *userdata)
                                        ast_copy_string(colbuf, record.peer, sizeof(colbuf));
                                } else if (strcmp(entry->celname, "amaflags") == 0) {
                                        snprintf(colbuf, sizeof(colbuf), "%d", record.amaflag);
+                               } else if (strcmp(entry->celname, "eventextra") == 0) {
+                                       ast_copy_string(colbuf, record.extra, sizeof(colbuf));
                                } else {
                                        colbuf[0] = 0;
                                }
index 1b5f18238849fd7ce64d78a701c40ce39a18b078..a6d1d16a918e05327cd17ec33da61b637ffeef27 100644 (file)
@@ -234,6 +234,8 @@ static void pgsql_log(const struct ast_event *event, void *userdata)
                                        value = record.user_field;
                                } else if (strcmp(cur->name, "peer") == 0) {
                                        value = record.peer;
+                               } else if (strcmp(cur->name, "eventextra") == 0) {
+                                       value = record.extra;
                                } else {
                                        value = NULL;
                                }
index d9ba90cb52ce768b7ee5321778d52edda68c1a90..a17cf688105711eab1f210fe399fca7e276321b2 100644 (file)
@@ -56,13 +56,17 @@ apps=dial,park
 ;  PARK_END         -- Unpark event
 ;  BRIDGE_START     -- The time a bridge is started
 ;  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
 ;  BLINDTRANSFER    -- When a blind transfer is initiated
 ;  ATTENDEDTRANSFER -- When an attended transfer is initiated
 ;  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
 ;                      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
 ;
index 37491a48b8e14a05d3a029d6228f37a0ed47ca81..59c33dc5422847eeb4fe74a981c62eb0d5c4058d 100644 (file)
 ; 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.
-;    eventextra - Extra data included with this CEL event, typically along with
-;                 an event of type USER_DEFINED from CELGenUserEvent().
+;    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.
 ;
 [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})}
index 5f21326dffd4e8e314f2db09a8655bffea8a0336..6e584e5b4f3b46a9dd7e244780440fa569ab4ea2 100644 (file)
@@ -47,6 +47,7 @@
 ;        CEL_FORWARD = 25
 ;      eventtime  (timeval, includes microseconds)
 ;      userdeftype (set only if eventtype == USER_DEFINED)
+;      eventextra
 ;      cid_name
 ;      cid_num
 ;      cid_ani
index 75882118a3c00608a24416ae109c3d3cf12c95e0..2d79941bf5ef7312837ff466576fabd909914b03 100644 (file)
@@ -34,6 +34,7 @@
 ;        CEL_FORWARD = 25
 ;      eventtime  (timeval, includes microseconds)
 ;      userdeftype (set only if eventtype == USER_DEFINED)
+;      eventextra
 ;      cid_name
 ;      cid_num
 ;      cid_ani
@@ -48,7 +49,7 @@
 ;      peeraccount
 ;      uniqueid
 ;      linkedid
-;      amaflag  (an int)
+;      amaflags  (an int)
 ;      userfield
 ;      peer
 
index b1486bd5c25112d7aa836ec9c99ca2bf53549dfb..14f2dd2281c4fbea053b1cd97d6d3584ee816010 100644 (file)
@@ -5,7 +5,19 @@
 ;
 ; 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.
 ;table => cel
-;columns       => eventtype, eventtime, cidname, cidnum, cidani, cidrdnis, ciddnid, context, exten, channame, appname, appdata, amaflags, accountcode, uniqueid, userfield, 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)}','${CHANNEL(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)}','${BRIDGEPEER}','${userdeftype}','${eventextra}'
index 8606a264c849c69edb981f7bdfd0351389465b81..35e851b03c86fe38bf71384ed7b5e20017a13e20 100644 (file)
@@ -47,7 +47,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 static unsigned char cel_enabled;
 
 /*! \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 
@@ -65,12 +65,12 @@ static int64_t eventset;
 /*! 
  * \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
  */
-static const int NUM_APP_BUCKETS = 97;
+#define NUM_APP_BUCKETS                97
 
 /*!
  * \brief Container of Asterisk application names
@@ -298,7 +298,7 @@ static int do_reload(void)
        ast_mutex_lock(&reload_lock);
 
        /* Reset all settings before reloading configuration */
-       cel_enabled = CEL_ENALBED_DEFAULT;
+       cel_enabled = CEL_ENABLED_DEFAULT;
        eventset = CEL_DEFAULT_EVENTS;
        *cel_dateformat = '\0';
        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);
        }
 
+       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))) {
                AST_LIST_INSERT_HEAD(headp, newvariable, entries);
        }