#include "asterisk.h"
#include <stdlib.h>
#include <stdio.h>
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/utils.h"
#include "asterisk/lock.h"
#include "asterisk/file.h"
#include "asterisk/logger.h"
#include "asterisk/options.h"
#include "asterisk/enum.h"
#include "asterisk/app.h"
Include dependency graph for func_enum.c:
Go to the source code of this file.
Functions | |
AST_MODULE_INFO_STANDARD (ASTERISK_GPL_KEY,"ENUM related dialplan functions") | |
static int | function_enum (struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) |
static int | function_txtcidname (struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) |
static int | load_module (void) |
static int | unload_module (void) |
Variables | |
static struct ast_custom_function | enum_function |
static char * | synopsis = "Syntax: ENUMLOOKUP(number[|Method-type[|options[|record#[|zone-suffix]]]])\n" |
static struct ast_custom_function | txtcidname_function |
Definition in file func_enum.c.
AST_MODULE_INFO_STANDARD | ( | ASTERISK_GPL_KEY | , | |
"ENUM related dialplan functions" | ||||
) |
static int function_enum | ( | struct ast_channel * | chan, | |
char * | cmd, | |||
char * | data, | |||
char * | buf, | |||
size_t | len | |||
) | [static] |
Definition at line 55 of file func_enum.c.
References AST_APP_ARG, AST_DECLARE_APP_ARGS, ast_get_enum(), ast_log(), AST_MAX_EXTENSION, ast_module_user_add, ast_module_user_remove, AST_STANDARD_APP_ARGS, ast_strlen_zero(), ast_module_user::chan, LOG_WARNING, s, and ast_channel::zone.
00057 { 00058 AST_DECLARE_APP_ARGS(args, 00059 AST_APP_ARG(number); 00060 AST_APP_ARG(tech); 00061 AST_APP_ARG(options); 00062 AST_APP_ARG(record); 00063 AST_APP_ARG(zone); 00064 ); 00065 int res = 0; 00066 char tech[80]; 00067 char dest[256] = "", tmp[2] = "", num[AST_MAX_EXTENSION] = ""; 00068 struct ast_module_user *u; 00069 char *s, *p; 00070 unsigned int record = 1; 00071 00072 buf[0] = '\0'; 00073 00074 if (ast_strlen_zero(data)) { 00075 ast_log(LOG_WARNING, synopsis); 00076 return -1; 00077 } 00078 00079 AST_STANDARD_APP_ARGS(args, data); 00080 00081 if (args.argc < 1) { 00082 ast_log(LOG_WARNING, synopsis); 00083 return -1; 00084 } 00085 00086 u = ast_module_user_add(chan); 00087 00088 ast_copy_string(tech, args.tech ? args.tech : "sip", sizeof(tech)); 00089 00090 if (!args.zone) 00091 args.zone = "e164.arpa"; 00092 00093 if (!args.options) 00094 args.options = ""; 00095 00096 if (args.record) 00097 record = atoi(args.record); 00098 00099 /* strip any '-' signs from number */ 00100 for (s = p = args.number; *s; s++) { 00101 if (*s != '-') { 00102 snprintf(tmp, sizeof(tmp), "%c", *s); 00103 strncat(num, tmp, sizeof(num)); 00104 } 00105 00106 } 00107 00108 res = ast_get_enum(chan, num, dest, sizeof(dest), tech, sizeof(tech), args.zone, 00109 args.options, record); 00110 00111 p = strchr(dest, ':'); 00112 if (p && strcasecmp(tech, "ALL")) 00113 ast_copy_string(buf, p + 1, len); 00114 else 00115 ast_copy_string(buf, dest, len); 00116 00117 ast_module_user_remove(u); 00118 00119 return 0; 00120 }
static int function_txtcidname | ( | struct ast_channel * | chan, | |
char * | cmd, | |||
char * | data, | |||
char * | buf, | |||
size_t | len | |||
) | [static] |
Definition at line 137 of file func_enum.c.
References ast_get_txt(), ast_log(), ast_module_user_add, ast_module_user_remove, ast_strlen_zero(), ast_module_user::chan, and LOG_WARNING.
00139 { 00140 int res; 00141 char tech[80]; 00142 char txt[256] = ""; 00143 char dest[80]; 00144 struct ast_module_user *u; 00145 00146 buf[0] = '\0'; 00147 00148 00149 if (ast_strlen_zero(data)) { 00150 ast_log(LOG_WARNING, "TXTCIDNAME requires an argument (number)\n"); 00151 return -1; 00152 } 00153 00154 u = ast_module_user_add(chan); 00155 00156 res = ast_get_txt(chan, data, dest, sizeof(dest), tech, sizeof(tech), txt, 00157 sizeof(txt)); 00158 00159 if (!ast_strlen_zero(txt)) 00160 ast_copy_string(buf, txt, len); 00161 00162 ast_module_user_remove(u); 00163 00164 return 0; 00165 }
static int load_module | ( | void | ) | [static] |
Definition at line 190 of file func_enum.c.
References ast_custom_function_register(), enum_function, and txtcidname_function.
00191 { 00192 int res = 0; 00193 00194 res |= ast_custom_function_register(&enum_function); 00195 res |= ast_custom_function_register(&txtcidname_function); 00196 00197 return res; 00198 }
static int unload_module | ( | void | ) | [static] |
Definition at line 178 of file func_enum.c.
References ast_custom_function_unregister(), ast_module_user_hangup_all, enum_function, and txtcidname_function.
00179 { 00180 int res = 0; 00181 00182 res |= ast_custom_function_unregister(&enum_function); 00183 res |= ast_custom_function_unregister(&txtcidname_function); 00184 00185 ast_module_user_hangup_all(); 00186 00187 return res; 00188 }
struct ast_custom_function enum_function [static] |
char* synopsis = "Syntax: ENUMLOOKUP(number[|Method-type[|options[|record#[|zone-suffix]]]])\n" [static] |
Definition at line 53 of file func_enum.c.
struct ast_custom_function txtcidname_function [static] |