Sat Aug 6 00:39:37 2011

Asterisk developer's documentation


app_setcdruserfield.c File Reference

Applictions connected with CDR engine. More...

#include "asterisk.h"
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
#include "asterisk/channel.h"
#include "asterisk/cdr.h"
#include "asterisk/module.h"
#include "asterisk/pbx.h"
#include "asterisk/logger.h"
#include "asterisk/config.h"
#include "asterisk/manager.h"
#include "asterisk/utils.h"

Go to the source code of this file.

Functions

static void __reg_module (void)
static void __unreg_module (void)
static int action_setcdruserfield (struct mansession *s, const struct message *m)
static int appendcdruserfield_exec (struct ast_channel *chan, void *data)
static int load_module (void)
static int setcdruserfield_exec (struct ast_channel *chan, void *data)
static int unload_module (void)

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT | AST_MODFLAG_BUILDSUM, .description = "CDR user field apps" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "361d7bb937402d51e4658efb5b4d76e4" , .load = load_module, .unload = unload_module, }
static char * appendcdruserfield_app = "AppendCDRUserField"
static char * appendcdruserfield_descrip
static char * appendcdruserfield_synopsis = "Append to the CDR user field"
static const struct ast_module_infoast_module_info = &__mod_info
static char * setcdruserfield_app = "SetCDRUserField"
static char * setcdruserfield_descrip
static char * setcdruserfield_synopsis = "Set the CDR user field"


Detailed Description

Applictions connected with CDR engine.

Author:
Justin Huff <jjhuff@mspin.net>

Definition in file app_setcdruserfield.c.


Function Documentation

static void __reg_module ( void   )  [static]

Definition at line 175 of file app_setcdruserfield.c.

static void __unreg_module ( void   )  [static]

Definition at line 175 of file app_setcdruserfield.c.

static int action_setcdruserfield ( struct mansession s,
const struct message m 
) [static]

Definition at line 78 of file app_setcdruserfield.c.

References ast_cdr_appenduserfield(), ast_cdr_setuserfield(), ast_get_channel_by_name_locked(), ast_mutex_unlock(), ast_strlen_zero(), ast_true(), astman_get_header(), astman_send_ack(), astman_send_error(), and s.

Referenced by load_module().

00079 {
00080    struct ast_channel *c = NULL;
00081    const char *userfield = astman_get_header(m, "UserField");
00082    const char *channel = astman_get_header(m, "Channel");
00083    const char *append = astman_get_header(m, "Append");
00084 
00085    if (ast_strlen_zero(channel)) {
00086       astman_send_error(s, m, "No Channel specified");
00087       return 0;
00088    }
00089    if (ast_strlen_zero(userfield)) {
00090       astman_send_error(s, m, "No UserField specified");
00091       return 0;
00092    }
00093    c = ast_get_channel_by_name_locked(channel);
00094    if (!c) {
00095       astman_send_error(s, m, "No such channel");
00096       return 0;
00097    }
00098    if (ast_true(append))
00099       ast_cdr_appenduserfield(c, userfield);
00100    else
00101       ast_cdr_setuserfield(c, userfield);
00102    ast_mutex_unlock(&c->lock);
00103    astman_send_ack(s, m, "CDR Userfield Set");
00104    return 0;
00105 }

static int appendcdruserfield_exec ( struct ast_channel chan,
void *  data 
) [static]

Definition at line 129 of file app_setcdruserfield.c.

References ast_cdr_appenduserfield(), ast_log(), ast_module_user_add, ast_module_user_remove, ast_channel::cdr, ast_module_user::chan, and LOG_WARNING.

Referenced by load_module().

00130 {
00131    struct ast_module_user *u;
00132    int res = 0;
00133    static int dep_warning = 0;
00134    
00135    u = ast_module_user_add(chan);
00136 
00137    if (chan->cdr && data) {
00138       ast_cdr_appenduserfield(chan, (char*)data);
00139    }
00140 
00141    if (!dep_warning) {
00142       dep_warning = 1;
00143       ast_log(LOG_WARNING, "AppendCDRUserField is deprecated.  Please use CDR(userfield) instead.\n");
00144    }
00145 
00146    ast_module_user_remove(u);
00147    
00148    return res;
00149 }

static int load_module ( void   )  [static]

Definition at line 164 of file app_setcdruserfield.c.

References action_setcdruserfield(), appendcdruserfield_exec(), ast_manager_register, ast_register_application(), EVENT_FLAG_CALL, and setcdruserfield_exec().

static int setcdruserfield_exec ( struct ast_channel chan,
void *  data 
) [static]

Definition at line 107 of file app_setcdruserfield.c.

References ast_cdr_setuserfield(), ast_log(), ast_module_user_add, ast_module_user_remove, ast_channel::cdr, ast_module_user::chan, and LOG_WARNING.

Referenced by load_module().

00108 {
00109    struct ast_module_user *u;
00110    int res = 0;
00111    static int dep_warning = 0;
00112    
00113    u = ast_module_user_add(chan);
00114 
00115    if (chan->cdr && data) {
00116       ast_cdr_setuserfield(chan, (char*)data);
00117    }
00118 
00119    if (!dep_warning) {
00120       dep_warning = 1;
00121       ast_log(LOG_WARNING, "SetCDRUserField is deprecated.  Please use CDR(userfield) instead.\n");
00122    }
00123 
00124    ast_module_user_remove(u);
00125    
00126    return res;
00127 }

static int unload_module ( void   )  [static]

Definition at line 151 of file app_setcdruserfield.c.

References ast_manager_unregister(), ast_module_user_hangup_all, and ast_unregister_application().

00152 {
00153    int res;
00154    
00155    res = ast_unregister_application(setcdruserfield_app);
00156    res |= ast_unregister_application(appendcdruserfield_app);
00157    res |= ast_manager_unregister("SetCDRUserField");
00158 
00159    ast_module_user_hangup_all();
00160 
00161    return res;
00162 }


Variable Documentation

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT | AST_MODFLAG_BUILDSUM, .description = "CDR user field apps" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "361d7bb937402d51e4658efb5b4d76e4" , .load = load_module, .unload = unload_module, } [static]

Definition at line 175 of file app_setcdruserfield.c.

char* appendcdruserfield_app = "AppendCDRUserField" [static]

Definition at line 74 of file app_setcdruserfield.c.

char* appendcdruserfield_descrip [static]

Definition at line 62 of file app_setcdruserfield.c.

char* appendcdruserfield_synopsis = "Append to the CDR user field" [static]

Definition at line 75 of file app_setcdruserfield.c.

const struct ast_module_info* ast_module_info = &__mod_info [static]

Definition at line 175 of file app_setcdruserfield.c.

char* setcdruserfield_app = "SetCDRUserField" [static]

Definition at line 59 of file app_setcdruserfield.c.

char* setcdruserfield_descrip [static]

Definition at line 46 of file app_setcdruserfield.c.

char* setcdruserfield_synopsis = "Set the CDR user field" [static]

Definition at line 60 of file app_setcdruserfield.c.


Generated on Sat Aug 6 00:39:37 2011 for Asterisk - the Open Source PBX by  doxygen 1.4.7