Merge privacy enhancements (bug #2091)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4433 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Spencer
2004-12-12 01:24:35 +00:00
parent 33cf4bcb0f
commit fd0b9cc522
3 changed files with 29 additions and 9 deletions

View File

@@ -36,27 +36,34 @@ static char *synopsis = "Require phone number to be entered, if no CallerID sent
static char *descrip = static char *descrip =
" PrivacyManager: If no Caller*ID is sent, PrivacyManager answers the\n" " PrivacyManager: If no Caller*ID is sent, PrivacyManager answers the\n"
"channel and asks the caller to enter their 10 digit phone number.\n" "channel and asks the caller to enter their phone number.\n"
"The caller is given 3 attempts. If after 3 attempts, they do not enter\n" "The caller is given 3 attempts. If after 3 attempts, they do not enter\n"
"their 10 digit phone number, and if there exists a priority n + 101,\n" "at least a 10 digit phone number, and if there exists a priority n + 101,\n"
"where 'n' is the priority of the current instance, then the\n" "where 'n' is the priority of the current instance, then the\n"
"channel will be setup to continue at that priority level.\n" "channel will be setup to continue at that priority level.\n"
"Otherwise, it returns 0. Does nothing if Caller*ID was received on the\n" "Otherwise, it returns 0. Does nothing if Caller*ID was received on the\n"
"channel.\n"; "channel.\n"
" Configuration file privacy.conf contains two variables:\n"
" maxretries default 3 -maximum number of attempts the caller is allowed to input a callerid.\n"
" minlength default 10 -minimum allowable digits in the input callerid number.\n"
;
STANDARD_LOCAL_USER; STANDARD_LOCAL_USER;
LOCAL_USER_DECL; LOCAL_USER_DECL;
static int static int
privacy_exec (struct ast_channel *chan, void *data) privacy_exec (struct ast_channel *chan, void *data)
{ {
int res=0; int res=0;
int retries; int retries;
int maxretries = 3; int maxretries = 3;
int minlength = 10;
int x; int x;
char *s; char *s;
char phone[10]; char phone[30];
char new_cid[144]; char new_cid[144];
struct localuser *u; struct localuser *u;
struct ast_config *cfg; struct ast_config *cfg;
@@ -95,16 +102,29 @@ privacy_exec (struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "Invalid max retries argument\n"); ast_log(LOG_WARNING, "Invalid max retries argument\n");
} }
} }
if (cfg && (s = ast_variable_retrieve(cfg, "general", "minlength"))) {
if (sscanf(s, "%d", &x) == 1) {
minlength = x;
} else {
ast_log(LOG_WARNING, "Invalid min length argument\n");
}
}
/*Ask for 10 digit number, give 3 attempts*/ /*Ask for 10 digit number, give 3 attempts*/
for (retries = 0; retries < maxretries; retries++) { for (retries = 0; retries < maxretries; retries++) {
if (!res) if (!res)
res = ast_app_getdata(chan, "privacy-prompt", phone, sizeof(phone), 0); res = ast_streamfile(chan, "privacy-prompt", chan->language);
if (!res)
res = ast_waitstream(chan, "");
if (!res )
res = ast_readstring(chan, phone, sizeof(phone) - 1, /* digit timeout ms */ 3200, /* first digit timeout */ 5000, "#");
if (res < 0) if (res < 0)
break; break;
/*Make sure we get 10 digits*/ /*Make sure we get at least digits*/
if (strlen(phone) == 10) if (strlen(phone) >= minlength )
break; break;
else { else {
res = ast_streamfile(chan, "privacy-incorrect", chan->language); res = ast_streamfile(chan, "privacy-incorrect", chan->language);
@@ -114,7 +134,7 @@ privacy_exec (struct ast_channel *chan, void *data)
} }
/*Got a number, play sounds and send them on their way*/ /*Got a number, play sounds and send them on their way*/
if ((retries < maxretries) && !res) { if ((retries < maxretries) && res == 1 ) {
res = ast_streamfile(chan, "privacy-thankyou", chan->language); res = ast_streamfile(chan, "privacy-thankyou", chan->language);
if (!res) if (!res)
res = ast_waitstream(chan, ""); res = ast_waitstream(chan, "");

View File

@@ -246,7 +246,7 @@
%privacy-unident.gsm%The party you are trying to reach does not accept unidentified calls. %privacy-unident.gsm%The party you are trying to reach does not accept unidentified calls.
%privacy-prompt.gsm%Please enter your 10 digit phone number, starting with the area code. %privacy-prompt.gsm%Please enter your phone number, starting with the area code.
%privacy-incorrect.gsm%I'm sorry, that number is not valid. %privacy-incorrect.gsm%I'm sorry, that number is not valid.

Binary file not shown.