summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/Makefile33
-rw-r--r--apps/app_curl.c67
-rw-r--r--apps/app_cut.c128
-rw-r--r--apps/app_db.c135
-rw-r--r--apps/app_enumlookup.c270
-rw-r--r--apps/app_eval.c127
-rw-r--r--apps/app_groupcount.c339
-rw-r--r--apps/app_math.c297
-rw-r--r--apps/app_md5.c205
-rw-r--r--apps/app_setcallerid.c178
-rw-r--r--apps/app_setcidname.c132
-rw-r--r--apps/app_setcidnum.c131
-rw-r--r--apps/app_setrdnis.c132
-rw-r--r--apps/app_txtcidname.c164
-rw-r--r--cli.c58
-rw-r--r--pbx.c174
16 files changed, 72 insertions, 2498 deletions
diff --git a/apps/Makefile b/apps/Makefile
index 12d503245..272414f74 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -11,25 +11,20 @@
# the GNU General Public License
#
-APPS=app_dial.so app_playback.so app_voicemail.so app_directory.so app_mp3.so\
- app_system.so app_echo.so app_record.so app_image.so app_url.so app_disa.so \
- app_adsiprog.so app_getcpeid.so app_milliwatt.so \
- app_zapateller.so app_setcallerid.so app_festival.so \
- app_queue.so app_senddtmf.so app_parkandannounce.so \
- app_setcidname.so app_lookupcidname.so app_macro.so \
- app_authenticate.so app_softhangup.so app_lookupblacklist.so \
- app_waitforring.so app_privacy.so app_db.so app_chanisavail.so \
- app_enumlookup.so app_transfer.so app_setcidnum.so app_cdr.so \
- app_hasnewvoicemail.so app_sayunixtime.so app_cut.so app_read.so \
- app_setcdruserfield.so app_random.so app_ices.so app_eval.so \
- app_nbscat.so app_sendtext.so app_exec.so \
- app_groupcount.so app_txtcidname.so app_controlplayback.so \
- app_talkdetect.so app_alarmreceiver.so app_userevent.so app_verbose.so \
- app_test.so app_forkcdr.so app_math.so app_realtime.so \
- app_dumpchan.so app_waitforsilence.so app_while.so app_setrdnis.so \
- app_md5.so app_readfile.so app_chanspy.so app_settransfercapability.so \
- app_dictate.so app_externalivr.so app_directed_pickup.so \
- app_mixmonitor.so app_stack.so
+APPS=app_adsiprog.so app_alarmreceiver.so app_authenticate.so app_cdr.so \
+ app_chanisavail.so app_chanspy.so app_controlplayback.so app_db.so \
+ app_dial.so app_dictate.so app_directed_pickup.so app_directory.so \
+ app_disa.so app_dumpchan.so app_echo.so app_exec.so app_externalivr.so \
+ app_festival.so app_forkcdr.so app_getcpeid.so app_hasnewvoicemail.so \
+ app_ices.so app_image.so app_lookupblacklist.so app_lookupcidname.so \
+ app_macro.so app_milliwatt.so app_mixmonitor.so app_mp3.so app_nbscat.so \
+ app_parkandannounce.so app_playback.so app_privacy.so app_queue.so \
+ app_random.so app_read.so app_readfile.so app_realtime.so app_record.so \
+ app_sayunixtime.so app_senddtmf.so app_sendtext.so app_setcdruserfield.so \
+ app_settransfercapability.so app_softhangup.so app_stack.so app_system.so \
+ app_talkdetect.so app_test.so app_transfer.so app_userevent.so app_url.so \
+ app_verbose.so app_voicemail.so app_waitforring.so app_waitforsilence.so \
+ app_while.so app_zapateller.so
#
# Obsolete things...
diff --git a/apps/app_curl.c b/apps/app_curl.c
index 227bea2dd..02cbd93dc 100644
--- a/apps/app_curl.c
+++ b/apps/app_curl.c
@@ -44,20 +44,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
static char *tdesc = "Load external URL";
-static char *app = "Curl";
-
-static char *synopsis = "Load an external URL";
-
-static char *descrip =
-" Curl(URL[|postdata]): This application will request the specified URL.\n"
-"It is mainly used for signalling external applications of an event.\n"
-"Parameters:\n"
-" URL - This is the external URL to request.\n"
-" postdata - This information will be treated as POST data.\n"
-"This application will set the following variable:\n"
-" CURL - This variable will contain the resulting page.\n"
-"This application has been deprecated in favor of the CURL function.\n";
-
STANDARD_LOCAL_USER;
LOCAL_USER_DECL;
@@ -117,57 +103,6 @@ static int curl_internal(struct MemoryStruct *chunk, char *url, char *post)
return 0;
}
-static int curl_exec(struct ast_channel *chan, void *data)
-{
- int res = 0;
- struct localuser *u;
- char *info;
- struct MemoryStruct chunk = { NULL, 0 };
- static int dep_warning = 0;
- AST_DECLARE_APP_ARGS(args,
- AST_APP_ARG(url);
- AST_APP_ARG(postdata);
- );
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "The application Curl is deprecated. Please use the CURL() function instead.\n");
- dep_warning = 1;
- }
-
- if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "Curl requires an argument (URL)\n");
- return -1;
- }
-
- LOCAL_USER_ADD(u);
-
- if ((info = ast_strdupa(data))) {
- AST_STANDARD_APP_ARGS(args, info);
- } else {
- ast_log(LOG_ERROR, "Out of memory\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- if (! curl_internal(&chunk, args.url, args.postdata)) {
- if (chunk.memory) {
- chunk.memory[chunk.size] = '\0';
- if (chunk.memory[chunk.size - 1] == 10)
- chunk.memory[chunk.size - 1] = '\0';
-
- pbx_builtin_setvar_helper(chan, "CURL", chunk.memory);
-
- free(chunk.memory);
- }
- } else {
- ast_log(LOG_ERROR, "Cannot allocate curl structure\n");
- res = -1;
- }
-
- LOCAL_USER_REMOVE(u);
- return res;
-}
-
static char *acf_curl_exec(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
{
struct localuser *u;
@@ -228,7 +163,6 @@ int unload_module(void)
int res;
res = ast_custom_function_unregister(&acf_curl);
- res |= ast_unregister_application(app);
STANDARD_HANGUP_LOCALUSERS;
@@ -240,7 +174,6 @@ int load_module(void)
int res;
res = ast_custom_function_register(&acf_curl);
- res |= ast_register_application(app, curl_exec, synopsis, descrip);
return res;
}
diff --git a/apps/app_cut.c b/apps/app_cut.c
index b6b457ab7..6922fc313 100644
--- a/apps/app_cut.c
+++ b/apps/app_cut.c
@@ -43,31 +43,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
static char *tdesc = "Cut out information from a string";
-static char *app_cut = "Cut";
-
-static char *cut_synopsis = "Splits a variable's contents using the specified delimiter";
-
-static char *cut_descrip =
-" Cut(newvar=varname,delimiter,fieldspec): This applicaiton will split the\n"
-"contents of a variable based on the given delimeter and store the result in\n"
-"a new variable.\n"
-"Parameters:\n"
-" newvar - new variable created from result string\n"
-" varname - variable you want cut\n"
-" delimiter - defaults to '-'\n"
-" fieldspec - number of the field you want (1-based offset)\n"
-" may also be specified as a range (with -)\n"
-" or group of ranges and fields (with &)\n"
-"This application has been deprecated in favor of the CUT function.\n";
-
-static char *app_sort = "Sort";
-static char *app_sort_synopsis = "Sorts a list of keywords and values";
-static char *app_sort_descrip =
-" Sort(newvar=key1:val1[,key2:val2[[...],keyN:valN]]): This application will\n"
-"sort the list provided in ascending order. The result will be stored in the\n"
-"specified variable name.\n"
-" This applicaiton has been deprecated in favor of the SORT function.\n";
-
STANDARD_LOCAL_USER;
LOCAL_USER_DECL;
@@ -258,105 +233,6 @@ static int cut_internal(struct ast_channel *chan, char *data, char *buffer, size
return 0;
}
-static int sort_exec(struct ast_channel *chan, void *data)
-{
- int res=0;
- struct localuser *u;
- char *varname, *strings, result[512] = "";
- static int dep_warning=0;
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "The application Sort is deprecated. Please use the SORT() function instead.\n");
- dep_warning=1;
- }
-
- if (!data) {
- ast_log(LOG_ERROR, "Sort() requires an argument\n");
- return 0;
- }
-
- LOCAL_USER_ADD(u);
-
- strings = ast_strdupa((char *)data);
- if (!strings) {
- ast_log(LOG_ERROR, "Out of memory\n");
- LOCAL_USER_REMOVE(u);
- return 0;
- }
-
- varname = strsep(&strings, "=");
- switch (sort_internal(chan, strings, result, sizeof(result))) {
- case ERROR_NOARG:
- ast_log(LOG_ERROR, "Sort() requires an argument\n");
- res = 0;
- break;
- case ERROR_NOMEM:
- ast_log(LOG_ERROR, "Out of memory\n");
- res = -1;
- break;
- case 0:
- pbx_builtin_setvar_helper(chan, varname, result);
- res = 0;
- break;
- default:
- ast_log(LOG_ERROR, "Unknown internal error\n");
- res = -1;
- }
- LOCAL_USER_REMOVE(u);
- return res;
-}
-
-static int cut_exec(struct ast_channel *chan, void *data)
-{
- int res=0;
- struct localuser *u;
- char *s, *newvar=NULL, result[512];
- static int dep_warning = 0;
-
- LOCAL_USER_ADD(u);
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "The application Cut is deprecated. Please use the CUT() function instead.\n");
- dep_warning=1;
- }
-
- /* Check and parse arguments */
- if (data) {
- s = ast_strdupa((char *)data);
- if (s) {
- newvar = strsep(&s, "=");
- } else {
- ast_log(LOG_ERROR, "Out of memory\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
- }
-
- switch (cut_internal(chan, s, result, sizeof(result))) {
- case ERROR_NOARG:
- ast_log(LOG_ERROR, "Cut() requires an argument\n");
- res = 0;
- break;
- case ERROR_NOMEM:
- ast_log(LOG_ERROR, "Out of memory\n");
- res = -1;
- break;
- case ERROR_USAGE:
- ast_log(LOG_ERROR, "Usage: %s\n", cut_synopsis);
- res = 0;
- break;
- case 0:
- pbx_builtin_setvar_helper(chan, newvar, result);
- res = 0;
- break;
- default:
- ast_log(LOG_ERROR, "Unknown internal error\n");
- res = -1;
- }
- LOCAL_USER_REMOVE(u);
- return res;
-}
-
static char *acf_sort_exec(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
{
struct localuser *u;
@@ -434,8 +310,6 @@ int unload_module(void)
res = ast_custom_function_unregister(&acf_cut);
res |= ast_custom_function_unregister(&acf_sort);
- res |= ast_unregister_application(app_sort);
- res |= ast_unregister_application(app_cut);
STANDARD_HANGUP_LOCALUSERS;
@@ -448,8 +322,6 @@ int load_module(void)
res = ast_custom_function_register(&acf_cut);
res |= ast_custom_function_register(&acf_sort);
- res |= ast_register_application(app_sort, sort_exec, app_sort_synopsis, app_sort_descrip);
- res |= ast_register_application(app_cut, cut_exec, cut_synopsis, cut_descrip);
return res;
}
diff --git a/apps/app_db.c b/apps/app_db.c
index e633cbfce..24f78f083 100644
--- a/apps/app_db.c
+++ b/apps/app_db.c
@@ -47,21 +47,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
static char *tdesc = "Database Access Functions";
-static char *g_descrip =
-" DBget(varname=family/key[|options]): This application will retrieve a value\n"
-"from the Asterisk database and store it in the given variable.\n"
-" Options:\n"
-" j - Jump to priority n+101 if the requested family/key isn't found.\n"
-" This application sets the following channel variable upon completion:\n"
-" DBGETSTATUS - This variable will contain the status of the attempt\n"
-" FOUND | NOTFOUND \n"
-" This application has been deprecated in favor of the DB function.\n";
-
-static char *p_descrip =
-" DBput(family/key=value): This application will store the given value in the\n"
-"specified location in the Asterisk database.\n"
-" This application has been deprecated in favor of the DB function.\n";
-
static char *d_descrip =
" DBdel(family/key): This applicaiton will delete a key from the Asterisk\n"
"database.\n";
@@ -70,13 +55,9 @@ static char *dt_descrip =
" DBdeltree(family[/keytree]): This application will delete a family or keytree\n"
"from the Asterisk database\n";
-static char *g_app = "DBget";
-static char *p_app = "DBput";
static char *d_app = "DBdel";
static char *dt_app = "DBdeltree";
-static char *g_synopsis = "Retrieve a value from the database";
-static char *p_synopsis = "Store a value in the database";
static char *d_synopsis = "Delete a key from the database";
static char *dt_synopsis = "Delete a family or keytree from the database";
@@ -167,126 +148,12 @@ static int del_exec(struct ast_channel *chan, void *data)
return 0;
}
-static int put_exec(struct ast_channel *chan, void *data)
-{
- char *argv, *value, *family, *key;
- static int dep_warning = 0;
- struct localuser *u;
-
- LOCAL_USER_ADD(u);
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "This application has been deprecated, please use the ${DB(family/key)} function instead.\n");
- dep_warning = 1;
- }
-
- argv = ast_strdupa(data);
- if (!argv) {
- ast_log(LOG_ERROR, "Memory allocation failed\n");
- LOCAL_USER_REMOVE(u);
- return 0;
- }
-
- if (strchr(argv, '/') && strchr(argv, '=')) {
- family = strsep(&argv, "/");
- key = strsep(&argv, "=");
- value = strsep(&argv, "\0");
- if (!value || !family || !key) {
- ast_log(LOG_DEBUG, "Ignoring; Syntax error in argument\n");
- LOCAL_USER_REMOVE(u);
- return 0;
- }
- if (option_verbose > 2)
- ast_verbose(VERBOSE_PREFIX_3 "DBput: family=%s, key=%s, value=%s\n", family, key, value);
- if (ast_db_put(family, key, value)) {
- if (option_verbose > 2)
- ast_verbose(VERBOSE_PREFIX_3 "DBput: Error writing value to database.\n");
- }
-
- } else {
- ast_log (LOG_DEBUG, "Ignoring, no parameters\n");
- }
-
- LOCAL_USER_REMOVE(u);
-
- return 0;
-}
-
-static int get_exec(struct ast_channel *chan, void *data)
-{
- char *argv, *varname, *family, *key, *options = NULL;
- char dbresult[256];
- static int dep_warning = 0;
- int priority_jump = 0;
- struct localuser *u;
-
- LOCAL_USER_ADD(u);
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "This application has been deprecated, please use the ${DB(family/key)} function instead.\n");
- dep_warning = 1;
- }
-
- argv = ast_strdupa(data);
- if (!argv) {
- ast_log(LOG_ERROR, "Memory allocation failed\n");
- LOCAL_USER_REMOVE(u);
- return 0;
- }
-
- if (strchr(argv, '=') && strchr(argv, '/')) {
- varname = strsep(&argv, "=");
- family = strsep(&argv, "/");
- if (strchr((void *)&argv, '|')) {
- key = strsep(&argv, "|");
- options = strsep(&argv, "\0");
- } else
- key = strsep(&argv, "\0");
-
- if (!varname || !family || !key) {
- ast_log(LOG_DEBUG, "Ignoring; Syntax error in argument\n");
- LOCAL_USER_REMOVE(u);
- return 0;
- }
-
- if (options) {
- if (strchr(options, 'j'))
- priority_jump = 1;
- }
-
- if (option_verbose > 2)
- ast_verbose(VERBOSE_PREFIX_3 "DBget: varname=%s, family=%s, key=%s\n", varname, family, key);
- if (!ast_db_get(family, key, dbresult, sizeof (dbresult) - 1)) {
- pbx_builtin_setvar_helper(chan, varname, dbresult);
- if (option_verbose > 2)
- ast_verbose(VERBOSE_PREFIX_3 "DBget: set variable %s to %s\n", varname, dbresult);
- pbx_builtin_setvar_helper(chan, "DBGETSTATUS", "FOUND");
- } else {
- if (option_verbose > 2)
- ast_verbose(VERBOSE_PREFIX_3 "DBget: Value not found in database.\n");
- if (priority_jump || ast_opt_priority_jumping) {
- /* Send the call to n+101 priority, where n is the current priority */
- ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
- }
- pbx_builtin_setvar_helper(chan, "DBGETSTATUS", "NOTFOUND");
- }
- } else {
- ast_log(LOG_DEBUG, "Ignoring, no parameters\n");
- }
-
- LOCAL_USER_REMOVE(u);
-
- return 0;
-}
-
int unload_module(void)
{
int retval;
retval = ast_unregister_application(dt_app);
retval |= ast_unregister_application(d_app);
- retval |= ast_unregister_application(p_app);
- retval |= ast_unregister_application(g_app);
STANDARD_HANGUP_LOCALUSERS;
@@ -297,8 +164,6 @@ int load_module(void)
{
int retval;
- retval = ast_register_application(g_app, get_exec, g_synopsis, g_descrip);
- retval |= ast_register_application(p_app, put_exec, p_synopsis, p_descrip);
retval |= ast_register_application(d_app, del_exec, d_synopsis, d_descrip);
retval |= ast_register_application(dt_app, deltree_exec, dt_synopsis, dt_descrip);
diff --git a/apps/app_enumlookup.c b/apps/app_enumlookup.c
deleted file mode 100644
index 98e66e1a8..000000000
--- a/apps/app_enumlookup.c
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 1999 - 2005, Digium, Inc.
- *
- * Mark Spencer <markster@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*! \file
- *
- * \brief Enumlookup - lookup entry in ENUM
- *
- * \ingroup applications
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/lock.h"
-#include "asterisk/file.h"
-#include "asterisk/logger.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/options.h"
-#include "asterisk/config.h"
-#include "asterisk/module.h"
-#include "asterisk/enum.h"
-#include "asterisk/utils.h"
-#include "asterisk/app.h"
-#include "asterisk/options.h"
-
-static char *tdesc = "ENUM Lookup";
-
-static char *app = "EnumLookup";
-
-static char *synopsis = "Lookup number in ENUM";
-
-static char *descrip =
-" EnumLookup(exten[|option]): Looks up an extension via ENUM and sets\n"
-"the variable 'ENUM'. For VoIP URIs this variable will \n"
-"look like 'TECHNOLOGY/URI' with the appropriate technology.\n"
-"Currently, the enumservices SIP, H323, IAX, IAX2 and TEL are recognized. \n"
-"\nReturns status in the ENUMSTATUS channel variable:\n"
-" ERROR Failed to do a lookup\n"
-" <tech> Technology of the successful lookup: SIP, H323, IAX, IAX2 or TEL\n"
-" BADURI Got URI Asterisk does not understand.\n"
-" The option string may contain zero or the following character:\n"
-" 'j' -- jump to +101 priority if the lookup isn't successful.\n"
-" and jump to +51 priority on a TEL entry.\n";
-
-#define ENUM_CONFIG "enum.conf"
-
-static char h323driver[80] = "";
-#define H323DRIVERDEFAULT "H323"
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-/*--- enumlookup_exec: Look up number in ENUM and return result */
-static int enumlookup_exec(struct ast_channel *chan, void *data)
-{
- int res=0,priority_jump=0;
- char tech[80];
- char dest[80];
- char tmp[256];
- char *c,*t = NULL;
- static int dep_warning=0;
- struct localuser *u;
- char *parse;
- AST_DECLARE_APP_ARGS(args,
- AST_APP_ARG(d);
- AST_APP_ARG(o);
- );
-
- if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "EnumLookup requires an argument (extension)\n");
- return -1;
- }
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "The application EnumLookup is deprecated. Please use the ENUMLOOKUP() function instead.\n");
- dep_warning = 1;
- }
-
- LOCAL_USER_ADD(u);
-
- parse = ast_strdupa(data);
- if (!parse) {
- ast_log(LOG_ERROR, "Out of memory!\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- AST_STANDARD_APP_ARGS(args, parse);
-
- tech[0] = '\0';
- dest[0] = '\0';
-
- if (args.o) {
- if (strchr(args.o, 'j'))
- priority_jump = 1;
- }
-
- res = ast_get_enum(chan, args.d, dest, sizeof(dest), tech, sizeof(tech), NULL, NULL);
-
- if (!res) { /* Failed to do a lookup */
- if (priority_jump || ast_opt_priority_jumping) {
- /* Look for a "busy" place */
- ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
- }
- pbx_builtin_setvar_helper(chan, "ENUMSTATUS", "ERROR");
- LOCAL_USER_REMOVE(u);
- return 0;
- }
- pbx_builtin_setvar_helper(chan, "ENUMSTATUS", tech);
- /* Parse it out */
- if (res > 0) {
- if (!strcasecmp(tech, "SIP")) {
- c = dest;
- if (!strncmp(c, "sip:", 4))
- c += 4;
- snprintf(tmp, sizeof(tmp), "SIP/%s", c);
- pbx_builtin_setvar_helper(chan, "ENUM", tmp);
- } else if (!strcasecmp(tech, "h323")) {
- c = dest;
- if (!strncmp(c, "h323:", 5))
- c += 5;
- snprintf(tmp, sizeof(tmp), "%s/%s", h323driver, c);
-/* do a s!;.*!! on the H323 URI */
- t = strchr(c,';');
- if (t)
- *t = 0;
- pbx_builtin_setvar_helper(chan, "ENUM", tmp);
- } else if (!strcasecmp(tech, "iax")) {
- c = dest;
- if (!strncmp(c, "iax:", 4))
- c += 4;
- snprintf(tmp, sizeof(tmp), "IAX/%s", c);
- pbx_builtin_setvar_helper(chan, "ENUM", tmp);
- } else if (!strcasecmp(tech, "iax2")) {
- c = dest;
- if (!strncmp(c, "iax2:", 5))
- c += 5;
- snprintf(tmp, sizeof(tmp), "IAX2/%s", c);
- pbx_builtin_setvar_helper(chan, "ENUM", tmp);
- } else if (!strcasecmp(tech, "tel")) {
- c = dest;
- if (!strncmp(c, "tel:", 4))
- c += 4;
-
- if (c[0] != '+') {
- ast_log(LOG_NOTICE, "tel: uri must start with a \"+\" (got '%s')\n", c);
- res = 0;
- } else {
-/* now copy over the number, skipping all non-digits and stop at ; or NULL */
- t = tmp;
- while( *c && (*c != ';') && (t - tmp < (sizeof(tmp) - 1))) {
- if (isdigit(*c))
- *t++ = *c;
- c++;
- }
- *t = 0;
- pbx_builtin_setvar_helper(chan, "ENUM", tmp);
- ast_log(LOG_NOTICE, "tel: ENUM set to \"%s\"\n", tmp);
- if (priority_jump || ast_opt_priority_jumping) {
- if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 51))
- res = 0;
- }
- }
- } else if (!ast_strlen_zero(tech)) {
- ast_log(LOG_NOTICE, "Don't know how to handle technology '%s'\n", tech);
- pbx_builtin_setvar_helper(chan, "ENUMSTATUS", "BADURI");
- res = 0;
- }
- }
-
- LOCAL_USER_REMOVE(u);
-
- return 0;
-}
-
-/*--- load_config: Load enum.conf and find out how to handle H.323 */
-static int load_config(void)
-{
- struct ast_config *cfg;
- char *s;
-
- cfg = ast_config_load(ENUM_CONFIG);
- if (cfg) {
- if (!(s=ast_variable_retrieve(cfg, "general", "h323driver"))) {
- strncpy(h323driver, H323DRIVERDEFAULT, sizeof(h323driver) - 1);
- } else {
- strncpy(h323driver, s, sizeof(h323driver) - 1);
- }
- ast_config_destroy(cfg);
- return 0;
- }
- ast_log(LOG_NOTICE, "No ENUM Config file, using defaults\n");
- return 0;
-}
-
-
-/*--- unload_module: Unload this application from PBX */
-int unload_module(void)
-{
- int res;
-
- res = ast_unregister_application(app);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-/*--- load_module: Load this application into PBX */
-int load_module(void)
-{
- int res;
-
- res = ast_register_application(app, enumlookup_exec, synopsis, descrip);
-
- if (!res)
- res = load_config();
-
- return res;
-}
-
-/*--- reload: Reload configuration file */
-int reload(void)
-{
- return load_config();
-}
-
-
-/*--- description: Describe module */
-char *description(void)
-{
- return tdesc;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
-
diff --git a/apps/app_eval.c b/apps/app_eval.c
deleted file mode 100644
index 13ab0ddbc..000000000
--- a/apps/app_eval.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (c) 2004 - 2005, Tilghman Lesher. All rights reserved.
- *
- * Tilghman Lesher <app_eval__v001@the-tilghman.com>
- *
- * This code is released by the author with no restrictions on usage.
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- */
-
-/*! \file
- * \brief Eval application
- *
- * \author Tilghman Lesher <app_eval__v001@the-tilghman.com>
- *
- * \ingroup applications
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/file.h"
-#include "asterisk/logger.h"
-#include "asterisk/options.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/module.h"
-
-/* Maximum length of any variable */
-#define MAXRESULT 1024
-
-static char *tdesc = "Reevaluates strings";
-
-static char *app_eval = "Eval";
-
-static char *eval_synopsis = "Evaluates a string";
-
-static char *eval_descrip =
-"Usage: Eval(newvar=somestring)\n"
-" Normally Asterisk evaluates variables inline. But what if you want to\n"
-"store variable offsets in a database, to be evaluated later? Eval is\n"
-"the answer, by allowing a string to be evaluated twice in the dialplan,\n"
-"the first time as part of the normal dialplan, and the second using Eval.\n";
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-static int eval_exec(struct ast_channel *chan, void *data)
-{
- int res=0;
- struct localuser *u;
- char *s, *newvar=NULL, tmp[MAXRESULT];
- static int dep_warning = 0;
-
- LOCAL_USER_ADD(u);
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "This application has been deprecated in favor of the dialplan function, EVAL\n");
- dep_warning = 1;
- }
-
- /* Check and parse arguments */
- if (data) {
- s = ast_strdupa((char *)data);
- if (s) {
- newvar = strsep(&s, "=");
- if (newvar && (newvar[0] != '\0')) {
- memset(tmp, 0, MAXRESULT);
- pbx_substitute_variables_helper(chan, s, tmp, MAXRESULT - 1);
- pbx_builtin_setvar_helper(chan, newvar, tmp);
- }
- } else {
- ast_log(LOG_ERROR, "Out of memory\n");
- res = -1;
- }
- }
-
- LOCAL_USER_REMOVE(u);
- return res;
-}
-
-int unload_module(void)
-{
- int res;
-
- res = ast_unregister_application(app_eval);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-int load_module(void)
-{
- return ast_register_application(app_eval, eval_exec, eval_synopsis, eval_descrip);
-}
-
-char *description(void)
-{
- return tdesc;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
diff --git a/apps/app_groupcount.c b/apps/app_groupcount.c
deleted file mode 100644
index a85286023..000000000
--- a/apps/app_groupcount.c
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 1999 - 2005, Digium, Inc.
- *
- * Mark Spencer <markster@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*! \file
- *
- * \brief Group Manipulation Applications
- *
- * \ingroup applications
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/types.h>
-#include <regex.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/file.h"
-#include "asterisk/logger.h"
-#include "asterisk/options.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/module.h"
-#include "asterisk/utils.h"
-#include "asterisk/cli.h"
-#include "asterisk/app.h"
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-static int group_count_exec(struct ast_channel *chan, void *data)
-{
- int res = 0;
- int count;
- struct localuser *u;
- char group[80] = "";
- char category[80] = "";
- char ret[80] = "";
- static int deprecation_warning = 0;
-
- LOCAL_USER_ADD(u);
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "The GetGroupCount application has been deprecated, please use the GROUP_COUNT function.\n");
- deprecation_warning = 1;
- }
-
- ast_app_group_split_group(data, group, sizeof(group), category, sizeof(category));
-
- if (ast_strlen_zero(group)) {
- const char *grp = pbx_builtin_getvar_helper(chan, category);
- strncpy(group, grp, sizeof(group) - 1);
- }
-
- count = ast_app_group_get_count(group, category);
- snprintf(ret, sizeof(ret), "%d", count);
- pbx_builtin_setvar_helper(chan, "GROUPCOUNT", ret);
-
- LOCAL_USER_REMOVE(u);
-
- return res;
-}
-
-static int group_match_count_exec(struct ast_channel *chan, void *data)
-{
- int res = 0;
- int count;
- struct localuser *u;
- char group[80] = "";
- char category[80] = "";
- char ret[80] = "";
- static int deprecation_warning = 0;
-
- LOCAL_USER_ADD(u);
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "The GetGroupMatchCount application has been deprecated, please use the GROUP_MATCH_COUNT function.\n");
- deprecation_warning = 1;
- }
-
- ast_app_group_split_group(data, group, sizeof(group), category, sizeof(category));
-
- if (!ast_strlen_zero(group)) {
- count = ast_app_group_match_get_count(group, category);
- snprintf(ret, sizeof(ret), "%d", count);
- pbx_builtin_setvar_helper(chan, "GROUPCOUNT", ret);
- }
-
- LOCAL_USER_REMOVE(u);
-
- return res;
-}
-
-static int group_set_exec(struct ast_channel *chan, void *data)
-{
- int res = 0;
- struct localuser *u;
- static int deprecation_warning = 0;
-
- LOCAL_USER_ADD(u);
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "The SetGroup application has been deprecated, please use the GROUP() function.\n");
- deprecation_warning = 1;
- }
-
- if (ast_app_group_set_channel(chan, data))
- ast_log(LOG_WARNING, "SetGroup requires an argument (group name)\n");
-
- LOCAL_USER_REMOVE(u);
- return res;
-}
-
-static int group_check_exec(struct ast_channel *chan, void *data)
-{
- int res = 0;
- int max, count;
- struct localuser *u;
- char limit[80]="";
- char category[80]="";
- static int deprecation_warning = 0;
- char *parse;
- int priority_jump = 0;
- AST_DECLARE_APP_ARGS(args,
- AST_APP_ARG(max);
- AST_APP_ARG(options);
- );
-
- LOCAL_USER_ADD(u);
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "The CheckGroup application has been deprecated, please use a combination of the GotoIf application and the GROUP_COUNT() function.\n");
- deprecation_warning = 1;
- }
-
- if (!(parse = ast_strdupa(data))) {
- ast_log(LOG_WARNING, "Memory Error!\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- AST_STANDARD_APP_ARGS(args, parse);
-
- if (args.options) {
- if (strchr(args.options, 'j'))
- priority_jump = 1;
- }
-
- if (ast_strlen_zero(args.max)) {
- ast_log(LOG_WARNING, "CheckGroup requires an argument(max[@category][|options])\n");
- return res;
- }
-
- ast_app_group_split_group(args.max, limit, sizeof(limit), category, sizeof(category));
-
- if ((sscanf(limit, "%d", &max) == 1) && (max > -1)) {
- count = ast_app_group_get_count(pbx_builtin_getvar_helper(chan, category), category);
- if (count > max) {
- pbx_builtin_setvar_helper(chan, "CHECKGROUPSTATUS", "OVERMAX");
- if (priority_jump || ast_opt_priority_jumping) {
- if (!ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101))
- res = -1;
- }
- } else
- pbx_builtin_setvar_helper(chan, "CHECKGROUPSTATUS", "OK");
- } else
- ast_log(LOG_WARNING, "CheckGroup requires a positive integer argument (max)\n");
-
- LOCAL_USER_REMOVE(u);
- return res;
-}
-
-static int group_show_channels(int fd, int argc, char *argv[])
-{
-#define FORMAT_STRING "%-25s %-20s %-20s\n"
-
- struct ast_channel *c = NULL;
- int numchans = 0;
- struct ast_var_t *current;
- struct varshead *headp;
- regex_t regexbuf;
- int havepattern = 0;
-
- if (argc < 3 || argc > 4)
- return RESULT_SHOWUSAGE;
-
- if (argc == 4) {
- if (regcomp(&regexbuf, argv[3], REG_EXTENDED | REG_NOSUB))
- return RESULT_SHOWUSAGE;
- havepattern = 1;
- }
-
- ast_cli(fd, FORMAT_STRING, "Channel", "Group", "Category");
- while ( (c = ast_channel_walk_locked(c)) != NULL) {
- headp=&c->varshead;
- AST_LIST_TRAVERSE(headp,current,entries) {
- if (!strncmp(ast_var_name(current), GROUP_CATEGORY_PREFIX "_", strlen(GROUP_CATEGORY_PREFIX) + 1)) {
- if (!havepattern || !regexec(&regexbuf, ast_var_value(current), 0, NULL, 0)) {
- ast_cli(fd, FORMAT_STRING, c->name, ast_var_value(current),
- (ast_var_name(current) + strlen(GROUP_CATEGORY_PREFIX) + 1));
- numchans++;
- }
- } else if (!strcmp(ast_var_name(current), GROUP_CATEGORY_PREFIX)) {
- if (!havepattern || !regexec(&regexbuf, ast_var_value(current), 0, NULL, 0)) {
- ast_cli(fd, FORMAT_STRING, c->name, ast_var_value(current), "(default)");
- numchans++;
- }
- }
- }
- numchans++;
- ast_mutex_unlock(&c->lock);
- }
-
- if (havepattern)
- regfree(&regexbuf);
-
- ast_cli(fd, "%d active channel%s\n", numchans, (numchans != 1) ? "s" : "");
- return RESULT_SUCCESS;
-#undef FORMAT_STRING
-}
-
-static char *tdesc = "Group Management Routines";
-
-static char *app_group_count = "GetGroupCount";
-static char *app_group_set = "SetGroup";
-static char *app_group_check = "CheckGroup";
-static char *app_group_match_count = "GetGroupMatchCount";
-
-static char *group_count_synopsis = "Get the channel count of a group";
-static char *group_set_synopsis = "Set the channel's group";
-static char *group_check_synopsis = "Check the channel count of a group against a limit";
-static char *group_match_count_synopsis = "Get the channel count of all groups that match a pattern";
-
-static char *group_count_descrip =
-"Usage: GetGroupCount([groupname][@category])\n"
-" Calculates the group count for the specified group, or uses\n"
-"the current channel's group if not specifed (and non-empty).\n"
-"Stores result in GROUPCOUNT. \n"
-"This application has been deprecated, please use the function\n"
-"GroupCount.\n";
-
-static char *group_set_descrip =
-"Usage: SetGroup(groupname[@category])\n"
-" Sets the channel group to the specified value. Equivalent to\n"
-"Set(GROUP=group). Always returns 0.\n";
-
-static char *group_check_descrip =
-"Usage: CheckGroup(max[@category][|options])\n"
-" Checks that the current number of total channels in the\n"
-"current channel's group does not exceed 'max'. If the number\n"
-"does not exceed 'max', we continue to the next step. \n"
-" The option string may contain zero of the following character:\n"
-" 'j' -- jump to n+101 priority if the number does in fact exceed max,\n"
-" and priority n+101 exists. Execuation then continues at that\n"
-" step, otherwise -1 is returned.\n"
-" This application sets the following channel variable upon successful completion:\n"
-" CHECKGROUPSTATUS The status of the check that the current channel's\n"
-" group does not exceed 'max'. It's value is one of\n"
-" OK | OVERMAX \n";
-
-static char *group_match_count_descrip =
-"Usage: GetGroupMatchCount(groupmatch[@category])\n"
-" Calculates the group count for all groups that match the specified\n"
-"pattern. Uses standard regular expression matching (see regex(7)).\n"
-"Stores result in GROUPCOUNT. Always returns 0.\n"
-"This application has been deprecated, please use the function\n"
-"GroupMatchCount.\n";
-
-static char show_channels_usage[] =
-"Usage: group show channels [pattern]\n"
-" Lists all currently active channels with channel group(s) specified.\n Optional regular expression pattern is matched to group names for each channel.\n";
-
-static struct ast_cli_entry cli_show_channels =
- { { "group", "show", "channels", NULL }, group_show_channels, "Show active channels with group(s)", show_channels_usage};
-
-int unload_module(void)
-{
- int res;
-
- res = ast_cli_unregister(&cli_show_channels);
- res |= ast_unregister_application(app_group_count);
- res |= ast_unregister_application(app_group_set);
- res |= ast_unregister_application(app_group_check);
- res |= ast_unregister_application(app_group_match_count);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-int load_module(void)
-{
- int res;
-
- res = ast_register_application(app_group_count, group_count_exec, group_count_synopsis, group_count_descrip);
- res |= ast_register_application(app_group_set, group_set_exec, group_set_synopsis, group_set_descrip);
- res |= ast_register_application(app_group_check, group_check_exec, group_check_synopsis, group_check_descrip);
- res |= ast_register_application(app_group_match_count, group_match_count_exec, group_match_count_synopsis, group_match_count_descrip);
- res |= ast_cli_register(&cli_show_channels);
-
- return res;
-}
-
-char *description(void)
-{
- return tdesc;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
diff --git a/apps/app_math.c b/apps/app_math.c
deleted file mode 100644
index f1be8d4d1..000000000
--- a/apps/app_math.c
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 2004 - 2005, Andy Powell
- *
- * Updated by Mark Spencer <markster@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*! \file
- *
- * \brief A simple math application
- *
- * \ingroup applications
- */
-
-#include <stdlib.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <time.h>
-#include <dirent.h>
-#include <ctype.h>
-#include <sys/file.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/lock.h"
-#include "asterisk/file.h"
-#include "asterisk/logger.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/options.h"
-#include "asterisk/config.h"
-#include "asterisk/say.h"
-#include "asterisk/module.h"
-#include "asterisk/app.h"
-#include "asterisk/manager.h"
-#include "asterisk/localtime.h"
-#include "asterisk/cli.h"
-#include "asterisk/utils.h"
-#include "asterisk/module.h"
-#include "asterisk/translate.h"
-
-static char *tdesc = "Basic Math Functions";
-
-static char *app_math = "Math";
-
-static char *math_synopsis = "Performs Mathematical Functions";
-
-static char *math_descrip =
-"Math(returnvar,<number1><op><number 2>\n\n"
-"Perform floating point calculation on number 1 to number 2 and \n"
-"store the result in returnvar. Valid ops are: \n"
-" +,-,/,*,%,<,>,>=,<=,==\n"
-"and behave as their C equivalents.\n";
-
-#define ADDFUNCTION 0
-#define DIVIDEFUNCTION 1
-#define MULTIPLYFUNCTION 2
-#define SUBTRACTFUNCTION 3
-#define MODULUSFUNCTION 4
-
-#define GTFUNCTION 5
-#define LTFUNCTION 6
-#define GTEFUNCTION 7
-#define LTEFUNCTION 8
-#define EQFUNCTION 9
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-static int math_exec(struct ast_channel *chan, void *data)
-{
- float fnum1;
- float fnum2;
- float ftmp = 0;
- char *op;
- int iaction=-1;
- static int deprecation_warning = 0;
-
- /* dunno, big calulations :D */
- char user_result[30];
-
- char *s;
- char *mvar, *mvalue1, *mvalue2=NULL;
-
- struct localuser *u;
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "Math() is deprecated, please use Set(var=${MATH(...)} instead.\n");
- deprecation_warning = 1;
- }
-
- if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "No parameters passed. !\n");
- return -1;
- }
-
- LOCAL_USER_ADD(u);
-
- s = ast_strdupa(data);
- if (!s) {
- ast_log(LOG_ERROR, "Out of memory\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- mvar = strsep(&s, "|");
- mvalue1 = strsep(&s, "|");
-
- if ((op = strchr(mvalue1, '+'))) {
- iaction = ADDFUNCTION;
- *op = '\0';
- } else if ((op = strchr(mvalue1, '-'))) {
- iaction = SUBTRACTFUNCTION;
- *op = '\0';
- } else if ((op = strchr(mvalue1, '*'))) {
- iaction = MULTIPLYFUNCTION;
- *op = '\0';
- } else if ((op = strchr(mvalue1, '/'))) {
- iaction = DIVIDEFUNCTION;
- *op = '\0';
- } else if ((op = strchr(mvalue1, '>'))) {
- iaction = GTFUNCTION;
- *op = '\0';
- if (*(op+1) == '=') {
- op++;
- *op = '\0';
- iaction = GTEFUNCTION;
- }
- } else if ((op = strchr(mvalue1, '<'))) {
- iaction = LTFUNCTION;
- *op = '\0';
- if (*(op+1) == '=') {
- op++;
- *op = '\0';
- iaction = LTEFUNCTION;
- }
- } else if ((op = strchr(mvalue1, '='))) {
- iaction = GTFUNCTION;
- *op = '\0';
- if (*(op+1) == '=') {
- op++;
- *op = '\0';
- iaction = EQFUNCTION;
- } else
- op = NULL;
- }
-
- if (op)
- mvalue2 = op + 1;
-
- if (!mvar || !mvalue1 || !mvalue2) {
- ast_log(LOG_WARNING, "Supply all the parameters - just this once, please\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- if (!strcmp(mvar,"")) {
- ast_log(LOG_WARNING, "No return variable set.\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- if (sscanf(mvalue1, "%f", &fnum1) != 1) {
- ast_log(LOG_WARNING, "'%s' is not a valid number\n", mvalue1);
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- if (sscanf(mvalue2, "%f", &fnum2) != 1) {
- ast_log(LOG_WARNING, "'%s' is not a valid number\n", mvalue2);
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- switch (iaction) {
- case ADDFUNCTION :
- ftmp = fnum1 + fnum2;
- break;
- case DIVIDEFUNCTION :
- if (fnum2 <=0)
- ftmp = 0; /* can't do a divide by 0 */
- else
- ftmp = (fnum1 / fnum2);
- break;
- case MULTIPLYFUNCTION :
- ftmp = (fnum1 * fnum2);
- break;
- case SUBTRACTFUNCTION :
- ftmp = (fnum1 - fnum2);
- break;
- case MODULUSFUNCTION : {
- int inum1 = fnum1;
- int inum2 = fnum2;
-
- ftmp = (inum1 % inum2);
-
- break;
- }
- case GTFUNCTION :
- if (fnum1 > fnum2)
- strcpy(user_result, "TRUE");
- else
- strcpy(user_result, "FALSE");
- break;
- case LTFUNCTION :
- if (fnum1 < fnum2)
- strcpy(user_result, "TRUE");
- else
- strcpy(user_result, "FALSE");
- break;
- case GTEFUNCTION :
- if (fnum1 >= fnum2)
- strcpy(user_result, "TRUE");
- else
- strcpy(user_result, "FALSE");
- break;
- case LTEFUNCTION :
- if (fnum1 <= fnum2)
- strcpy(user_result, "TRUE");
- else
- strcpy(user_result, "FALSE");
- break;
- case EQFUNCTION :
- if (fnum1 == fnum2)
- strcpy(user_result, "TRUE");
- else
- strcpy(user_result, "FALSE");
- break;
- default :
- ast_log(LOG_WARNING, "Something happened that neither of us should be proud of %d\n", iaction);
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- if (iaction < GTFUNCTION || iaction > EQFUNCTION)
- snprintf(user_result,sizeof(user_result),"%f",ftmp);
-
- pbx_builtin_setvar_helper(chan, mvar, user_result);
-
- LOCAL_USER_REMOVE(u);
- return 0;
-}
-
-int unload_module(void)
-{
- int res;
-
- res = ast_unregister_application(app_math);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-int load_module(void)
-{
- return ast_register_application(app_math, math_exec, math_synopsis, math_descrip);
-}
-
-char *description(void)
-{
- return tdesc;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
-
-/* Fading everything to black and blue... */
diff --git a/apps/app_md5.c b/apps/app_md5.c
deleted file mode 100644
index 127b3d7e8..000000000
--- a/apps/app_md5.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 2005, Olle E. Johansson, Edvina.net
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-
-/*! \file
- *
- * \brief MD5 checksum application
- *
- * \todo Remove this deprecated application in 1.3dev
- * \ingroup applications
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/file.h"
-#include "asterisk/logger.h"
-#include "asterisk/utils.h"
-#include "asterisk/options.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/module.h"
-#include "asterisk/lock.h"
-#include "asterisk/app.h"
-
-static char *tdesc_md5 = "MD5 checksum applications";
-static char *app_md5 = "MD5";
-static char *desc_md5 = "Calculate MD5 checksum";
-static char *synopsis_md5 =
-" MD5(<var>=<string>): Calculates a MD5 checksum on <string>.\n"
-"Returns hash value in a channel variable. \n";
-
-static char *app_md5check = "MD5Check";
-static char *desc_md5check = "Check MD5 checksum";
-static char *synopsis_md5check =
-" MD5Check(<md5hash>|<string>[|options]): Calculates a MD5 checksum on <string>\n"
-"and compares it with the hash. Returns 0 if <md5hash> is correct for <string>.\n"
-"The option string may contain zero or more of the following characters:\n"
-" 'j' -- jump to priority n+101 if the hash and string do not match \n"
-"This application sets the following channel variable upon completion:\n"
-" CHECKMD5STATUS The status of the MD5 check, one of the following\n"
-" MATCH | NOMATCH\n";
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-/*--- md5_exec: Calculate MD5 checksum (hash) on given string and
- return it in channel variable ---*/
-static int md5_exec(struct ast_channel *chan, void *data)
-{
- int res=0;
- struct localuser *u;
- char *varname= NULL; /* Variable to set */
- char *string = NULL; /* String to calculate on */
- char retvar[50]; /* Return value */
- static int dep_warning = 0;
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "This application has been deprecated, please use the MD5 function instead.\n");
- dep_warning = 1;
- }
-
- if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "Syntax: md5(<varname>=<string>) - missing argument!\n");
- return -1;
- }
-
- LOCAL_USER_ADD(u);
-
- memset(retvar,0, sizeof(retvar));
- string = ast_strdupa(data);
- varname = strsep(&string,"=");
- if (ast_strlen_zero(varname)) {
- ast_log(LOG_WARNING, "Syntax: md5(<varname>=<string>) - missing argument!\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
- ast_md5_hash(retvar, string);
- pbx_builtin_setvar_helper(chan, varname, retvar);
- LOCAL_USER_REMOVE(u);
- return res;
-}
-
-/*--- md5check_exec: Calculate MD5 checksum and compare it with
- existing checksum. ---*/
-static int md5check_exec(struct ast_channel *chan, void *data)
-{
- int res=0;
- struct localuser *u;
- char *string = NULL; /* String to calculate on */
- char newhash[50]; /* Return value */
- static int dep_warning = 0;
- int priority_jump = 0;
- AST_DECLARE_APP_ARGS(args,
- AST_APP_ARG(md5hash);
- AST_APP_ARG(string);
- AST_APP_ARG(options);
- );
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "This application has been deprecated, please use the CHECK_MD5 function instead.\n");
- dep_warning = 1;
- }
-
- LOCAL_USER_ADD(u);
-
- if (!(string = ast_strdupa(data))) {
- ast_log(LOG_WARNING, "Memory Error!\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- AST_STANDARD_APP_ARGS(args, string);
-
- if (args.options) {
- if (strchr(args.options, 'j'))
- priority_jump = 1;
- }
-
- if (ast_strlen_zero(args.md5hash) || ast_strlen_zero(args.string)) {
- ast_log(LOG_WARNING, "Syntax: MD5Check(<md5hash>|<string>[|options]) - missing argument!\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- memset(newhash,0, sizeof(newhash));
-
- ast_md5_hash(newhash, args.string);
- if (!strcmp(newhash, args.md5hash)) { /* Verification ok */
- if (option_debug > 2)
- ast_log(LOG_DEBUG, "MD5 verified ok: %s -- %s\n", args.md5hash, args.string);
- pbx_builtin_setvar_helper(chan, "CHECKMD5STATUS", "MATCH");
- LOCAL_USER_REMOVE(u);
- return 0;
- }
- if (option_debug > 2)
- ast_log(LOG_DEBUG, "ERROR: MD5 not verified: %s -- %s\n", args.md5hash, args.string);
- pbx_builtin_setvar_helper(chan, "CHECKMD5STATUS", "NOMATCH");
- if (priority_jump || ast_opt_priority_jumping) {
- if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101))
- if (option_debug > 2)
- ast_log(LOG_DEBUG, "ERROR: Can't jump to exten+101 (e%s,p%d), sorry\n", chan->exten,chan->priority+101);
- }
- LOCAL_USER_REMOVE(u);
- return res;
-}
-
-int unload_module(void)
-{
- int res;
-
- res = ast_unregister_application(app_md5);
- res |= ast_unregister_application(app_md5check);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-int load_module(void)
-{
- int res;
-
- res = ast_register_application(app_md5check, md5check_exec, desc_md5check, synopsis_md5check);
- res |= ast_register_application(app_md5, md5_exec, desc_md5, synopsis_md5);
-
- return res;
-}
-
-char *description(void)
-{
- return tdesc_md5;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
diff --git a/apps/app_setcallerid.c b/apps/app_setcallerid.c
deleted file mode 100644
index 877efb533..000000000
--- a/apps/app_setcallerid.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 1999 - 2005, Digium, Inc.
- *
- * Mark Spencer <markster@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*! \file
- *
- * \brief App to set callerid
- *
- * \ingroup applications
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/lock.h"
-#include "asterisk/file.h"
-#include "asterisk/logger.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/module.h"
-#include "asterisk/translate.h"
-#include "asterisk/image.h"
-#include "asterisk/callerid.h"
-
-static char *app2 = "SetCallerPres";
-
-static char *synopsis2 = "Set CallerID Presentation";
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-static char *descrip2 =
-" SetCallerPres(presentation): Set Caller*ID presentation on a call.\n"
-" Valid presentations are:\n"
-"\n"
-" allowed_not_screened : Presentation Allowed, Not Screened\n"
-" allowed_passed_screen : Presentation Allowed, Passed Screen\n"
-" allowed_failed_screen : Presentation Allowed, Failed Screen\n"
-" allowed : Presentation Allowed, Network Number\n"
-" prohib_not_screened : Presentation Prohibited, Not Screened\n"
-" prohib_passed_screen : Presentation Prohibited, Passed Screen\n"
-" prohib_failed_screen : Presentation Prohibited, Failed Screen\n"
-" prohib : Presentation Prohibited, Network Number\n"
-" unavailable : Number Unavailable\n"
-"\n"
-;
-
-static int setcallerid_pres_exec(struct ast_channel *chan, void *data)
-{
- struct localuser *u;
- int pres = -1;
-
- LOCAL_USER_ADD(u);
-
- pres = ast_parse_caller_presentation(data);
-
- if (pres < 0) {
- ast_log(LOG_WARNING, "'%s' is not a valid presentation (see 'show application SetCallerPres')\n",
- (char *) data);
- LOCAL_USER_REMOVE(u);
- return 0;
- }
-
- chan->cid.cid_pres = pres;
- LOCAL_USER_REMOVE(u);
- return 0;
-}
-
-
-
-static char *tdesc = "Set CallerID Application";
-
-static char *app = "SetCallerID";
-
-static char *synopsis = "Set CallerID";
-
-static char *descrip =
-" SetCallerID(clid[|a]): Set Caller*ID on a call to a new\n"
-"value. Sets ANI as well if a flag is used. \n";
-
-static int setcallerid_exec(struct ast_channel *chan, void *data)
-{
- int res = 0;
- char *tmp = NULL;
- char name[256];
- char num[256];
- struct localuser *u;
- char *opt;
- int anitoo = 0;
-
- if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "SetCallerID requires an argument!\n");
- return 0;
- }
-
- LOCAL_USER_ADD(u);
-
- tmp = ast_strdupa(data);
- if (!tmp) {
- ast_log(LOG_ERROR, "Out of memory\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- opt = strchr(tmp, '|');
- if (opt) {
- *opt = '\0';
- opt++;
- if (*opt == 'a')
- anitoo = 1;
- }
-
- ast_callerid_split(tmp, name, sizeof(name), num, sizeof(num));
- ast_set_callerid(chan, num, name, anitoo ? num : NULL);
-
- LOCAL_USER_REMOVE(u);
-
- return res;
-}
-
-int unload_module(void)
-{
- int res;
-
- res = ast_unregister_application(app2);
- res |= ast_unregister_application(app);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-int load_module(void)
-{
- int res;
-
- res = ast_register_application(app2, setcallerid_pres_exec, synopsis2, descrip2);
- res |= ast_register_application(app, setcallerid_exec, synopsis, descrip);
-
- return res;
-}
-
-char *description(void)
-{
- return tdesc;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
diff --git a/apps/app_setcidname.c b/apps/app_setcidname.c
deleted file mode 100644
index 6906c132a..000000000
--- a/apps/app_setcidname.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 1999 - 2005, Digium, Inc.
- *
- * Mark Spencer <markster@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*! \file
- *
- * \brief App to set callerid
- *
- * \ingroup applications
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/lock.h"
-#include "asterisk/file.h"
-#include "asterisk/logger.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/module.h"
-#include "asterisk/translate.h"
-#include "asterisk/image.h"
-#include "asterisk/callerid.h"
-#include "asterisk/utils.h"
-
-static char *tdesc = "Set CallerID Name";
-
-static char *app = "SetCIDName";
-
-static char *synopsis = "Set CallerID Name";
-
-static char *descrip =
-" SetCIDName(cname[|a]): Set Caller*ID Name on a call to a new\n"
-"value, while preserving the original Caller*ID number. This is\n"
-"useful for providing additional information to the called\n"
-"party. \n"
-"SetCIDName has been deprecated in favor of the function\n"
-"CALLERID(name)\n";
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-static int setcallerid_exec(struct ast_channel *chan, void *data)
-{
- char *tmp = NULL;
- struct localuser *u;
- char *opt;
- static int deprecation_warning = 0;
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "SetCIDName is deprecated, please use Set(CALLERID(name)=value) instead.\n");
- deprecation_warning = 1;
- }
-
- if (ast_strlen_zero(data)) {
- ast_log(LOG_ERROR, "SetCIDName requires an argument!\n");
- return 0;
- }
-
- LOCAL_USER_ADD(u);
-
- tmp = ast_strdupa(data);
- if (!tmp) {
- ast_log(LOG_ERROR, "Out of memory\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- opt = strchr(tmp, '|');
- if (opt) {
- *opt = '\0';
- }
-
- ast_set_callerid(chan, NULL, tmp, NULL);
-
- LOCAL_USER_REMOVE(u);
-
- return 0;
-}
-
-int unload_module(void)
-{
- int res;
-
- res = ast_unregister_application(app);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-int load_module(void)
-{
- return ast_register_application(app, setcallerid_exec, synopsis, descrip);
-}
-
-char *description(void)
-{
- return tdesc;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
diff --git a/apps/app_setcidnum.c b/apps/app_setcidnum.c
deleted file mode 100644
index a8a7e0706..000000000
--- a/apps/app_setcidnum.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 1999 - 2005, Digium, Inc.
- *
- * Mark Spencer <markster@digium.com>
- * Oliver Daudey <traveler@xs4all.nl>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*! \file
- *
- * \brief App to set callerid number
- *
- * \ingroup applications
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/lock.h"
-#include "asterisk/file.h"
-#include "asterisk/logger.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/module.h"
-#include "asterisk/translate.h"
-#include "asterisk/image.h"
-#include "asterisk/callerid.h"
-#include "asterisk/utils.h"
-
-static char *tdesc = "Set CallerID Number";
-
-static char *app = "SetCIDNum";
-
-static char *synopsis = "Set CallerID Number";
-
-static char *descrip =
-" SetCIDNum(cnum[|a]): Set Caller*ID Number on a call to a new\n"
-"value, while preserving the original Caller*ID name. This is\n"
-"useful for providing additional information to the called\n"
-"party. Sets ANI as well if a flag is used.\n"
-"SetCIDNum has been deprecated in favor of the function\n"
-"CALLERID(number)\n";
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-static int setcallerid_exec(struct ast_channel *chan, void *data)
-{
- int res = 0;
- struct localuser *u;
- char *opt;
- int anitoo = 0;
- char *tmp = NULL;
- static int deprecation_warning = 0;
-
- LOCAL_USER_ADD(u);
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "SetCIDNum is deprecated, please use Set(CALLERID(number)=value) instead.\n");
- deprecation_warning = 1;
- }
-
- if (data)
- tmp = ast_strdupa(data);
- else
- tmp = "";
-
- opt = strchr(tmp, '|');
- if (opt) {
- *opt = '\0';
- opt++;
- if (*opt == 'a')
- anitoo = 1;
- }
-
- ast_set_callerid(chan, tmp, NULL, anitoo ? tmp : NULL);
-
- LOCAL_USER_REMOVE(u);
-
- return res;
-}
-
-int unload_module(void)
-{
- int res;
-
- res = ast_unregister_application(app);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-int load_module(void)
-{
- return ast_register_application(app, setcallerid_exec, synopsis, descrip);
-}
-
-char *description(void)
-{
- return tdesc;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
diff --git a/apps/app_setrdnis.c b/apps/app_setrdnis.c
deleted file mode 100644
index 69c3ed568..000000000
--- a/apps/app_setrdnis.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 1999 - 2005, Digium, Inc.
- *
- * Mark Spencer <markster@digium.com>
- * Oliver Daudey <traveler@xs4all.nl>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*! \file
- *
- * \brief App to set rdnis
- *
- * \ingroup applications
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/lock.h"
-#include "asterisk/file.h"
-#include "asterisk/logger.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/module.h"
-#include "asterisk/translate.h"
-#include "asterisk/image.h"
-#include "asterisk/callerid.h"
-#include "asterisk/utils.h"
-
-static char *tdesc = "Set RDNIS Number";
-
-static char *app = "SetRDNIS";
-
-static char *synopsis = "Set RDNIS Number";
-
-static char *descrip =
-" SetRDNIS(cnum): Set RDNIS Number on a call to a new\n"
-"value.\n"
-"SetRDNIS has been deprecated in favor of the function\n"
-"CALLERID(rdnis)\n";
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-static int setrdnis_exec(struct ast_channel *chan, void *data)
-{
- struct localuser *u;
- char *opt, *n, *l;
- char *tmp = NULL;
- static int deprecation_warning = 0;
-
- LOCAL_USER_ADD(u);
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "SetRDNIS is deprecated, please use Set(CALLERID(rdnis)=value) instead.\n");
- deprecation_warning = 1;
- }
-
- if (data)
- tmp = ast_strdupa(data);
- else
- tmp = "";
-
- opt = strchr(tmp, '|');
- if (opt)
- *opt = '\0';
-
- n = l = NULL;
- ast_callerid_parse(tmp, &n, &l);
- if (l) {
- ast_shrink_phone_number(l);
- ast_mutex_lock(&chan->lock);
- if (chan->cid.cid_rdnis)
- free(chan->cid.cid_rdnis);
- chan->cid.cid_rdnis = (l[0]) ? strdup(l) : NULL;
- ast_mutex_unlock(&chan->lock);
- }
-
- LOCAL_USER_REMOVE(u);
-
- return 0;
-}
-
-int unload_module(void)
-{
- int res;
-
- res = ast_unregister_application(app);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-int load_module(void)
-{
- return ast_register_application(app, setrdnis_exec, synopsis, descrip);
-}
-
-char *description(void)
-{
- return tdesc;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
diff --git a/apps/app_txtcidname.c b/apps/app_txtcidname.c
deleted file mode 100644
index f2a65dcb6..000000000
--- a/apps/app_txtcidname.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 1999 - 2005, Digium, Inc.
- *
- * Mark Spencer <markster@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*! \file
- *
- * \brief Caller*id name lookup - Look up the caller's name via DNS
- *
- * \ingroup applications
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/logger.h"
-#include "asterisk/channel.h"
-#include "asterisk/pbx.h"
-#include "asterisk/options.h"
-#include "asterisk/module.h"
-#include "asterisk/enum.h"
-#include "asterisk/utils.h"
-#include "asterisk/app.h"
-
-STANDARD_LOCAL_USER;
-
-LOCAL_USER_DECL;
-
-static char *tdesc = "TXTCIDName";
-
-static char *app = "TXTCIDName";
-
-static char *synopsis = "Lookup caller name from TXT record";
-
-static char *descrip =
-" TXTCIDName(<CallerIDNumber>[|options]): Looks up a Caller Name via DNS and sets\n"
-"the variable 'TXTCIDNAME'. TXTCIDName will either be blank\n"
-"or return the value found in the TXT record in DNS.\n"
-"The option string may contain the following character:\n"
-"'j' -- jump to n+101 priority if the lookup fails\n"
-"This application sets the following channel variable upon completion:\n"
-" TXTCIDNAMESTATUS The status of the lookup as a text string, one of\n"
-" SUCCESS | FAILED\n";
-
-static int txtcidname_exec(struct ast_channel *chan, void *data)
-{
- int res=0;
- char tech[80];
- char txt[256] = "";
- char dest[80];
- struct localuser *u;
- static int dep_warning = 0;
- char *parse = NULL;
- int priority_jump = 0;
- AST_DECLARE_APP_ARGS(args,
- AST_APP_ARG(cidnum);
- AST_APP_ARG(options);
- );
-
- LOCAL_USER_ADD(u);
-
- if (!dep_warning) {
- ast_log(LOG_WARNING, "The TXTCIDName application has been deprecated in favor of the TXTCIDNAME dialplan function.\n");
- dep_warning = 1;
- }
-
- if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "TXTCIDName requires an argument (extension[|options])\n");
- LOCAL_USER_REMOVE(u);
- return(0);
- }
-
- parse = ast_strdupa(data);
- if (!parse) {
- ast_log(LOG_ERROR, "Out of memory!\n");
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- AST_STANDARD_APP_ARGS(args,parse);
-
- if (args.options) {
- if (strchr(args.options, 'j'))
- priority_jump = 1;
- }
-
- if (!res) {
- res = ast_get_txt(chan, data, dest, sizeof(dest), tech, sizeof(tech), txt, sizeof(txt));
- }
-
- /* Parse it out */
- if (res > 0) {
- if (!ast_strlen_zero(txt)) {
- pbx_builtin_setvar_helper(chan, "TXTCIDNAME", txt);
- pbx_builtin_setvar_helper(chan, "TXTCIDNAMESTATUS", "SUCCESS");
- if (option_debug > 1)
- ast_log(LOG_DEBUG, "TXTCIDNAME got '%s'\n", txt);
- }
- }
- if (!res) {
- /* Look for a "busy" place */
- if (priority_jump || ast_opt_priority_jumping)
- ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
- pbx_builtin_setvar_helper(chan, "TXTCIDNAMESTATUS", "FAILED");
- } else if (res > 0)
- res = 0;
-
- LOCAL_USER_REMOVE(u);
-
- return res;
-}
-
-int unload_module(void)
-{
- int res;
-
- res = ast_unregister_application(app);
-
- STANDARD_HANGUP_LOCALUSERS;
-
- return res;
-}
-
-int load_module(void)
-{
- return ast_register_application(app, txtcidname_exec, synopsis, descrip);
-}
-
-char *description(void)
-{
- return tdesc;
-}
-
-int usecount(void)
-{
- int res;
- STANDARD_USECOUNT(res);
- return res;
-}
-
-char *key()
-{
- return ASTERISK_GPL_KEY;
-}
diff --git a/cli.c b/cli.c
index 8ea63ca78..f1a241e40 100644
--- a/cli.c
+++ b/cli.c
@@ -29,6 +29,7 @@
#include <signal.h>
#include <string.h>
#include <ctype.h>
+#include <regex.h>
#include "asterisk.h"
@@ -42,6 +43,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/channel.h"
#include "asterisk/manager.h"
#include "asterisk/utils.h"
+#include "asterisk/app.h"
#include "asterisk/lock.h"
/* For rl_filename_completion */
#include "editline/readline/readline.h"
@@ -125,6 +127,12 @@ static char softhangup_help[] =
" Request that a channel be hung up. The hangup takes effect\n"
" the next time the driver reads or writes from the channel\n";
+static char group_show_channels_help[] =
+"Usage: group show channels [pattern]\n"
+" Lists all currently active channels with channel group(s) specified.\n"
+" Optional regular expression pattern is matched to group names for each\n"
+" channel.\n";
+
static int handle_load(int fd, int argc, char *argv[])
{
if (argc != 2)
@@ -887,6 +895,55 @@ static char *complete_fn(char *line, char *word, int pos, int state)
return c ? strdup(c) : c;
}
+static int group_show_channels(int fd, int argc, char *argv[])
+{
+#define FORMAT_STRING "%-25s %-20s %-20s\n"
+
+ struct ast_channel *c = NULL;
+ int numchans = 0;
+ struct ast_var_t *current;
+ struct varshead *headp;
+ regex_t regexbuf;
+ int havepattern = 0;
+
+ if (argc < 3 || argc > 4)
+ return RESULT_SHOWUSAGE;
+
+ if (argc == 4) {
+ if (regcomp(&regexbuf, argv[3], REG_EXTENDED | REG_NOSUB))
+ return RESULT_SHOWUSAGE;
+ havepattern = 1;
+ }
+
+ ast_cli(fd, FORMAT_STRING, "Channel", "Group", "Category");
+ while ( (c = ast_channel_walk_locked(c)) != NULL) {
+ headp=&c->varshead;
+ AST_LIST_TRAVERSE(headp,current,entries) {
+ if (!strncmp(ast_var_name(current), GROUP_CATEGORY_PREFIX "_", strlen(GROUP_CATEGORY_PREFIX) + 1)) {
+ if (!havepattern || !regexec(&regexbuf, ast_var_value(current), 0, NULL, 0)) {
+ ast_cli(fd, FORMAT_STRING, c->name, ast_var_value(current),
+ (ast_var_name(current) + strlen(GROUP_CATEGORY_PREFIX) + 1));
+ numchans++;
+ }
+ } else if (!strcmp(ast_var_name(current), GROUP_CATEGORY_PREFIX)) {
+ if (!havepattern || !regexec(&regexbuf, ast_var_value(current), 0, NULL, 0)) {
+ ast_cli(fd, FORMAT_STRING, c->name, ast_var_value(current), "(default)");
+ numchans++;
+ }
+ }
+ }
+ numchans++;
+ ast_mutex_unlock(&c->lock);
+ }
+
+ if (havepattern)
+ regfree(&regexbuf);
+
+ ast_cli(fd, "%d active channel%s\n", numchans, (numchans != 1) ? "s" : "");
+ return RESULT_SUCCESS;
+#undef FORMAT_STRING
+}
+
static int handle_help(int fd, int argc, char *argv[]);
static struct ast_cli_entry builtins[] = {
@@ -910,6 +967,7 @@ static struct ast_cli_entry builtins[] = {
{ { "show", "version", NULL }, handle_version, "Display version info", version_help },
{ { "soft", "hangup", NULL }, handle_softhangup, "Request a hangup on a given channel", softhangup_help, complete_ch_3 },
{ { "unload", NULL }, handle_unload, "Unload a dynamic module by name", unload_help, complete_fn },
+ { { "group", "show", "channels", NULL }, group_show_channels, "Show active channels with group(s)", group_show_channels_help},
{ { NULL }, NULL, NULL, NULL }
};
diff --git a/pbx.c b/pbx.c
index 0c0cb668a..6b1e3acd3 100644
--- a/pbx.c
+++ b/pbx.c
@@ -199,14 +199,9 @@ static int pbx_builtin_answer(struct ast_channel *, void *);
static int pbx_builtin_goto(struct ast_channel *, void *);
static int pbx_builtin_hangup(struct ast_channel *, void *);
static int pbx_builtin_background(struct ast_channel *, void *);
-static int pbx_builtin_dtimeout(struct ast_channel *, void *);
-static int pbx_builtin_rtimeout(struct ast_channel *, void *);
-static int pbx_builtin_atimeout(struct ast_channel *, void *);
static int pbx_builtin_wait(struct ast_channel *, void *);
static int pbx_builtin_waitexten(struct ast_channel *, void *);
-static int pbx_builtin_setlanguage(struct ast_channel *, void *);
static int pbx_builtin_resetcdr(struct ast_channel *, void *);
-static int pbx_builtin_setaccount(struct ast_channel *, void *);
static int pbx_builtin_setamaflags(struct ast_channel *, void *);
static int pbx_builtin_ringing(struct ast_channel *, void *);
static int pbx_builtin_progress(struct ast_channel *, void *);
@@ -221,7 +216,6 @@ static int pbx_builtin_saynumber(struct ast_channel *, void *);
static int pbx_builtin_saydigits(struct ast_channel *, void *);
static int pbx_builtin_saycharacters(struct ast_channel *, void *);
static int pbx_builtin_sayphonetic(struct ast_channel *, void *);
-static int pbx_builtin_setvar_old(struct ast_channel *, void *);
int pbx_builtin_setvar(struct ast_channel *, void *);
static int pbx_builtin_importvar(struct ast_channel *, void *);
@@ -246,13 +240,6 @@ static struct pbx_builtin {
/* These applications are built into the PBX core and do not
need separate modules */
- { "AbsoluteTimeout", pbx_builtin_atimeout,
- "Set absolute maximum time of call",
- " AbsoluteTimeout(seconds): This application will set the absolute maximum\n"
- "amount of time permitted for a call. A setting of 0 disables the timeout.\n"
- " AbsoluteTimeout has been deprecated in favor of Set(TIMEOUT(absolute)=timeout)\n"
- },
-
{ "Answer", pbx_builtin_answer,
"Answer a channel if ringing",
" Answer([delay]): If the call has not been answered, this application will\n"
@@ -298,19 +285,6 @@ static struct pbx_builtin {
"Otherwise, this application will wait until the calling channel hangs up.\n"
},
- { "DigitTimeout", pbx_builtin_dtimeout,
- "Set maximum timeout between digits",
- " DigitTimeout(seconds): Set the maximum amount of time permitted between\n"
- "digits when the user is typing in an extension. When this timeout expires,\n"
- "after the user has started to type in an extension, the extension will be\n"
- "considered complete, and will be interpreted. Note that if an extension\n"
- "typed in is valid, it will not have to timeout to be tested, so typically\n"
- "at the expiry of this timeout, the extension will be considered invalid\n"
- "(and thus control would be passed to the 'i' extension, or if it doesn't\n"
- "exist the call would be terminated). The default timeout is 5 seconds.\n"
- " DigitTimeout has been deprecated in favor of Set(TIMEOUT(digit)=timeout)\n"
- },
-
{ "Goto", pbx_builtin_goto,
"Jump to a particular priority, extension, or context",
" Goto([[context|]extension|]priority): This application will cause the\n"
@@ -377,15 +351,6 @@ static struct pbx_builtin {
" v -- Save CDR variables.\n"
},
- { "ResponseTimeout", pbx_builtin_rtimeout,
- "Set maximum timeout awaiting response",
- " ResponseTimeout(seconds): This will set the maximum amount of time permitted\n"
- "to wait for an extension to dialed (see the WaitExten application), before the\n"
- "timeout occurs. If this timeout is reached, dialplan execution will continue at\n"
- "the 't' extension, if it exists.\n"
- " ResponseTimeout has been deprecated in favor of Set(TIMEOUT(response)=timeout)\n"
- },
-
{ "Ringing", pbx_builtin_ringing,
"Indicate ringing tone",
" Ringing(): This application will request that the channel indicate a ringing\n"
@@ -420,13 +385,6 @@ static struct pbx_builtin {
"alphabet that correspond to the letters in the given string.\n"
},
- { "SetAccount", pbx_builtin_setaccount,
- "Set the CDR Account Code",
- " SetAccount([account]): This application will set the channel account code for\n"
- "billing purposes.\n"
- " SetAccount has been deprecated in favor of the Set(CDR(accountcode)=account).\n"
- },
-
{ "SetAMAFlags", pbx_builtin_setamaflags,
"Set the AMA Flags",
" SetAMAFlags([flag]): This channel will set the channel's AMA Flags for billing\n"
@@ -439,19 +397,6 @@ static struct pbx_builtin {
"the specified value.\n"
},
- { "SetLanguage", pbx_builtin_setlanguage,
- "Set the channel's preferred language",
- " SetLanguage(language): This will set the channel language to the given value.\n"
- "This information is used for the syntax in generation of numbers, and to choose\n"
- "a sound file in the given language, when it is available.\n"
- " For example, if language is set to 'fr' and the file 'demo-congrats' is \n"
- "requested to be played, if the file 'fr/demo-congrats' exists, then\n"
- "it will play that file. If not, it will play the normal 'demo-congrats'.\n"
- "For some language codes, SetLanguage also changes the syntax of some\n"
- "Asterisk functions, like SayNumber.\n"
- " SetLanguage has been deprecated in favor of Set(LANGUAGE()=language)\n"
- },
-
{ "Set", pbx_builtin_setvar,
"Set channel variable(s) or function value(s)",
" Set(name1=value1|name2=value2|..[|options])\n"
@@ -466,12 +411,6 @@ static struct pbx_builtin {
" (applies only to variables, not functions)\n"
},
- { "SetVar", pbx_builtin_setvar_old,
- "Set channel variable(s)",
- " SetVar(name1=value1|name2=value2|..[|options]): This application has been\n"
- "deprecated in favor of using the Set application.\n"
- },
-
{ "ImportVar", pbx_builtin_importvar,
"Import a variable from a channel into a new variable",
" ImportVar(newvar=channelname|variable): This application imports a variable\n"
@@ -5447,25 +5386,6 @@ static int pbx_builtin_answer(struct ast_channel *chan, void *data)
return res;
}
-/*!
- * \ingroup applications
- */
-static int pbx_builtin_setlanguage(struct ast_channel *chan, void *data)
-{
- static int deprecation_warning = 0;
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "SetLanguage is deprecated, please use Set(LANGUAGE()=language) instead.\n");
- deprecation_warning = 1;
- }
-
- /* Copy the language as specified */
- if (!ast_strlen_zero(data))
- ast_copy_string(chan->language, data, sizeof(chan->language));
-
- return 0;
-}
-
AST_APP_OPTIONS(resetcdr_opts, {
AST_APP_OPTION('w', AST_CDR_FLAG_POSTED),
AST_APP_OPTION('a', AST_CDR_FLAG_LOCKED),
@@ -5497,19 +5417,6 @@ static int pbx_builtin_resetcdr(struct ast_channel *chan, void *data)
/*!
* \ingroup applications
*/
-static int pbx_builtin_setaccount(struct ast_channel *chan, void *data)
-{
- /* Copy the account code as specified */
- if (data)
- ast_cdr_setaccount(chan, (char *)data);
- else
- ast_cdr_setaccount(chan, "");
- return 0;
-}
-
-/*!
- * \ingroup applications
- */
static int pbx_builtin_setamaflags(struct ast_channel *chan, void *data)
{
/* Copy the AMA Flags as specified */
@@ -5784,75 +5691,6 @@ static int pbx_builtin_background(struct ast_channel *chan, void *data)
}
}
-/*! AbsoluteTimeout
- * \ingroup applications
- * \todo Remove in 1.3 dev
- */
-static int pbx_builtin_atimeout(struct ast_channel *chan, void *data)
-{
- static int deprecation_warning = 0;
- int x = atoi((char *) data);
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "AbsoluteTimeout is deprecated, please use Set(TIMEOUT(absolute)=timeout) instead.\n");
- deprecation_warning = 1;
- }
-
- /* Set the absolute maximum time how long a call can be connected */
- ast_channel_setwhentohangup(chan,x);
- if (option_verbose > 2)
- ast_verbose( VERBOSE_PREFIX_3 "Set Absolute Timeout to %d\n", x);
- return 0;
-}
-
-/*! ResponseTimeout
- * \ingroup applications
- * \todo Remove in 1.3 dev
- */
-static int pbx_builtin_rtimeout(struct ast_channel *chan, void *data)
-{
- static int deprecation_warning = 0;
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "ResponseTimeout is deprecated, please use Set(TIMEOUT(response)=timeout) instead.\n");
- deprecation_warning = 1;
- }
-
- /* If the channel is not in a PBX, return now */
- if (!chan->pbx)
- return 0;
-
- /* Set the timeout for how long to wait between digits */
- chan->pbx->rtimeout = atoi((char *)data);
- if (option_verbose > 2)
- ast_verbose( VERBOSE_PREFIX_3 "Set Response Timeout to %d\n", chan->pbx->rtimeout);
- return 0;
-}
-
-/*! DigitTimeout
- * \ingroup applications
- * \todo Remove in 1.3 dev
- */
-static int pbx_builtin_dtimeout(struct ast_channel *chan, void *data)
-{
- static int deprecation_warning = 0;
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "DigitTimeout is deprecated, please use Set(TIMEOUT(digit)=timeout) instead.\n");
- deprecation_warning = 1;
- }
-
- /* If the channel is not in a PBX, return now */
- if (!chan->pbx)
- return 0;
-
- /* Set the timeout for how long to wait between digits */
- chan->pbx->dtimeout = atoi((char *)data);
- if (option_verbose > 2)
- ast_verbose( VERBOSE_PREFIX_3 "Set Digit Timeout to %d\n", chan->pbx->dtimeout);
- return 0;
-}
-
/*! Goto
* \ingroup applications
*/
@@ -5975,18 +5813,6 @@ void pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const
}
}
-int pbx_builtin_setvar_old(struct ast_channel *chan, void *data)
-{
- static int deprecation_warning = 0;
-
- if (!deprecation_warning) {
- ast_log(LOG_WARNING, "SetVar is deprecated, please use Set instead.\n");
- deprecation_warning = 1;
- }
-
- return pbx_builtin_setvar(chan, data);
-}
-
int pbx_builtin_setvar(struct ast_channel *chan, void *data)
{
char *name, *value, *mydata;