Function to lookup the callerid number, and see if it is blacklisted. More...
#include "asterisk.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/astdb.h"
Go to the source code of this file.
Functions | |
AST_MODULE_INFO_STANDARD (ASTERISK_GPL_KEY,"Look up Caller*ID name/number from blacklist database") | |
static int | blacklist_read (struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len) |
static int | blacklist_read2 (struct ast_channel *chan, const char *cmd, char *data, struct ast_str **str, ssize_t len) |
static int | load_module (void) |
static int | unload_module (void) |
Variables | |
static struct ast_custom_function | blacklist_function |
Function to lookup the callerid number, and see if it is blacklisted.
Definition in file func_blacklist.c.
AST_MODULE_INFO_STANDARD | ( | ASTERISK_GPL_KEY | , | |
"Look up Caller*ID name/number from blacklist database" | ||||
) |
static int blacklist_read | ( | struct ast_channel * | chan, | |
const char * | cmd, | |||
char * | data, | |||
char * | buf, | |||
size_t | len | |||
) | [static] |
Definition at line 59 of file func_blacklist.c.
References ast_db_get(), ast_log(), ast_channel::caller, ast_party_caller::id, LOG_WARNING, ast_party_id::name, ast_party_id::number, ast_party_name::str, ast_party_number::str, ast_party_name::valid, and ast_party_number::valid.
Referenced by blacklist_read2().
00060 { 00061 char blacklist[1]; 00062 int bl = 0; 00063 00064 if (!chan) { 00065 ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); 00066 return -1; 00067 } 00068 00069 if (chan->caller.id.number.valid && chan->caller.id.number.str) { 00070 if (!ast_db_get("blacklist", chan->caller.id.number.str, blacklist, sizeof (blacklist))) 00071 bl = 1; 00072 } 00073 if (chan->caller.id.name.valid && chan->caller.id.name.str) { 00074 if (!ast_db_get("blacklist", chan->caller.id.name.str, blacklist, sizeof (blacklist))) 00075 bl = 1; 00076 } 00077 00078 snprintf(buf, len, "%d", bl); 00079 return 0; 00080 }
static int blacklist_read2 | ( | struct ast_channel * | chan, | |
const char * | cmd, | |||
char * | data, | |||
struct ast_str ** | str, | |||
ssize_t | len | |||
) | [static] |
Definition at line 82 of file func_blacklist.c.
References ast_str_buffer(), ast_str_make_space(), ast_str_size(), ast_str_strlen(), ast_str_update(), and blacklist_read().
00083 { 00084 /* 2 bytes is a single integer, plus terminating null */ 00085 if (ast_str_size(*str) - ast_str_strlen(*str) < 2) { 00086 if (len > ast_str_size(*str) || len == 0) { 00087 ast_str_make_space(str, len ? len : ast_str_strlen(*str) + 2); 00088 } 00089 } 00090 if (ast_str_size(*str) - ast_str_strlen(*str) >= 2) { 00091 int res = blacklist_read(chan, cmd, data, ast_str_buffer(*str) + ast_str_strlen(*str), 2); 00092 ast_str_update(*str); 00093 return res; 00094 } 00095 return -1; 00096 }
static int load_module | ( | void | ) | [static] |
Definition at line 109 of file func_blacklist.c.
References ast_custom_function_register.
00110 { 00111 return ast_custom_function_register(&blacklist_function); 00112 }
static int unload_module | ( | void | ) | [static] |
Definition at line 104 of file func_blacklist.c.
References ast_custom_function_unregister().
00105 { 00106 return ast_custom_function_unregister(&blacklist_function); 00107 }
struct ast_custom_function blacklist_function [static] |
{ .name = "BLACKLIST", .read = blacklist_read, .read2 = blacklist_read2, }
Definition at line 98 of file func_blacklist.c.