static int action_setcdruserfield(struct mansession *s, struct message *m) { struct ast_channel *c = NULL; char *userfield = astman_get_header(m, "UserField"); char *channel = astman_get_header(m, "Channel"); char *append = astman_get_header(m, "Append"); if (ast_strlen_zero(channel)) { astman_send_error(s, m, "No Channel specified"); return 0; } if (ast_strlen_zero(userfield)) { astman_send_error(s, m, "No UserField specified"); return 0; } c = ast_get_channel_by_name_locked(channel); if (!c) { astman_send_error(s, m, "No such channel"); return 0; } if (ast_true(append)) ast_cdr_appenduserfield(c, userfield); else ast_cdr_setuserfield(c, userfield); ast_mutex_unlock(&c->lock); astman_send_ack(s, m, "CDR Userfield Set"); return 0; }
static int setcdruserfield_exec(struct ast_channel *chan, void *data) { struct localuser *u; int res = 0; LOCAL_USER_ADD(u); if (chan->cdr && data) { ast_cdr_setuserfield(chan, (char*)data); } LOCAL_USER_REMOVE(u); return res; }
static int setcdruserfield_exec(struct ast_channel *chan, void *data) { struct localuser *u; int res = 0; static int dep_warning = 0; LOCAL_USER_ADD(u); if (chan->cdr && data) { ast_cdr_setuserfield(chan, (char*)data); } if (!dep_warning) { dep_warning = 1; ast_log(LOG_WARNING, "SetCDRUserField is deprecated. Please use CDR(userfield) instead.\n"); } LOCAL_USER_REMOVE(u); return res; }
static int start_monitor_exec(struct ast_channel *chan, void *data) { char *arg = NULL; char *format = NULL; char *fname_base = NULL; char *options = NULL; char *delay = NULL; char *urlprefix = NULL; char tmp[256]; int joinfiles = 0; int waitforbridge = 0; int res = 0; /* Parse arguments. */ if (!ast_strlen_zero((char*)data)) { arg = ast_strdupa((char*)data); format = arg; fname_base = strchr(arg, '|'); if (fname_base) { *fname_base = 0; fname_base++; if ((options = strchr(fname_base, '|'))) { *options = 0; options++; if (strchr(options, 'm')) joinfiles = 1; if (strchr(options, 'b')) waitforbridge = 1; } } arg = strchr(format,':'); if (arg) { *arg++ = 0; urlprefix = arg; } } if (urlprefix) { snprintf(tmp,sizeof(tmp) - 1,"%s/%s.%s",urlprefix,fname_base, ((strcmp(format,"gsm")) ? "wav" : "gsm")); if (!chan->cdr && !(chan->cdr = ast_cdr_alloc())) return -1; ast_cdr_setuserfield(chan, tmp); } if (waitforbridge) { /* We must remove the "b" option if listed. In principle none of the following could give NULL results, but we check just to be pedantic. Reconstructing with checks for 'm' option does not work if we end up adding more options than 'm' in the future. */ delay = ast_strdupa(data); options = strrchr(delay, '|'); if (options) { arg = strchr(options, 'b'); if (arg) { *arg = 'X'; pbx_builtin_setvar_helper(chan,"AUTO_MONITOR",delay); } } return 0; } res = ast_monitor_start(chan, format, fname_base, 1); if (res < 0) res = ast_monitor_change_fname(chan, fname_base, 1); ast_monitor_setjoinfiles(chan, joinfiles); return res; }