Merged revisions 217916 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

........
  r217916 | tilghman | 2009-09-10 18:12:16 -0500 (Thu, 10 Sep 2009) | 2 lines
  
  Make calltoken support work with realtime users and peers.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@217920 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Tilghman Lesher
2009-09-10 23:17:27 +00:00
parent 8856a69934
commit 6ababb90e3
3 changed files with 55 additions and 47 deletions

View File

@@ -801,6 +801,7 @@ static AST_LIST_HEAD_STATIC(dpcache, iax2_dpcache);
static void reg_source_db(struct iax2_peer *p); static void reg_source_db(struct iax2_peer *p);
static struct iax2_peer *realtime_peer(const char *peername, struct sockaddr_in *sin); static struct iax2_peer *realtime_peer(const char *peername, struct sockaddr_in *sin);
static struct iax2_user *realtime_user(const char *username, struct sockaddr_in *sin);
static int ast_cli_netstats(struct mansession *s, int fd, int limit_fmt); static int ast_cli_netstats(struct mansession *s, int fd, int limit_fmt);
static char *complete_iax2_show_peer(const char *line, const char *word, int pos, int state); static char *complete_iax2_show_peer(const char *line, const char *word, int pos, int state);
@@ -1839,7 +1840,11 @@ static int calltoken_required(struct sockaddr_in *sin, const char *name, int sub
/* ----- Case 2 ----- */ /* ----- Case 2 ----- */
if ((subclass == IAX_COMMAND_NEW) && (user = find_user(find))) { if ((subclass == IAX_COMMAND_NEW) && (user = find_user(find))) {
calltoken_required = user->calltoken_required; calltoken_required = user->calltoken_required;
} else if ((subclass != IAX_COMMAND_NEW) && (peer = find_peer(find, 1))) { } else if ((subclass == IAX_COMMAND_NEW) && (user = realtime_user(find, sin))) {
calltoken_required = user->calltoken_required;
} else if ((subclass != IAX_COMMAND_NEW) && (peer = find_peer(find, 0))) {
calltoken_required = peer->calltoken_required;
} else if ((subclass != IAX_COMMAND_NEW) && (peer = realtime_peer(find, sin))) {
calltoken_required = peer->calltoken_required; calltoken_required = peer->calltoken_required;
} }
@@ -3921,7 +3926,7 @@ static struct iax2_peer *realtime_peer(const char *peername, struct sockaddr_in
if (!strcasecmp(tmp->name, "host")) { if (!strcasecmp(tmp->name, "host")) {
struct ast_hostent ahp; struct ast_hostent ahp;
struct hostent *hp; struct hostent *hp;
if (!(hp = ast_gethostbyname(tmp->value, &ahp)) || (memcmp(&hp->h_addr, &sin->sin_addr, sizeof(hp->h_addr)))) { if (!(hp = ast_gethostbyname(tmp->value, &ahp)) || (memcmp(hp->h_addr, &sin->sin_addr, sizeof(hp->h_addr)))) {
/* No match */ /* No match */
ast_variables_destroy(var); ast_variables_destroy(var);
var = NULL; var = NULL;
@@ -4033,7 +4038,7 @@ static struct iax2_user *realtime_user(const char *username, struct sockaddr_in
if (!strcasecmp(tmp->name, "host")) { if (!strcasecmp(tmp->name, "host")) {
struct ast_hostent ahp; struct ast_hostent ahp;
struct hostent *hp; struct hostent *hp;
if (!(hp = ast_gethostbyname(tmp->value, &ahp)) || (memcmp(&hp->h_addr, &sin->sin_addr, sizeof(hp->h_addr)))) { if (!(hp = ast_gethostbyname(tmp->value, &ahp)) || (memcmp(hp->h_addr, &sin->sin_addr, sizeof(hp->h_addr)))) {
/* No match */ /* No match */
ast_variables_destroy(var); ast_variables_destroy(var);
var = NULL; var = NULL;

View File

@@ -3896,7 +3896,7 @@ static struct sip_peer *realtime_peer(const char *newpeername, struct sockaddr_i
if (!strcasecmp(tmp->name, "host")) { if (!strcasecmp(tmp->name, "host")) {
struct hostent *hp; struct hostent *hp;
struct ast_hostent ahp; struct ast_hostent ahp;
if (!(hp = ast_gethostbyname(tmp->value, &ahp)) || (memcmp(&hp->h_addr, &sin->sin_addr, sizeof(hp->h_addr)))) { if (!(hp = ast_gethostbyname(tmp->value, &ahp)) || (memcmp(hp->h_addr, &sin->sin_addr, sizeof(hp->h_addr)))) {
/* No match */ /* No match */
ast_variables_destroy(var); ast_variables_destroy(var);
var = NULL; var = NULL;

View File

@@ -4,51 +4,54 @@
CREATE TABLE `iaxfriends` ( CREATE TABLE `iaxfriends` (
`name` varchar(40) NOT NULL default '', `name` varchar(40) NOT NULL default '',
`username` varchar(40) NOT NULL default '', `type` varchar(10) NOT NULL default 'friend', -- friend/user/peer
`secret` varchar(40) NOT NULL default '', `username` varchar(40) NULL, -- username to send as peer
`dbsecret` varchar(40) NOT NULL default '', `mailbox` varchar(40) NULL, -- mailbox@context
`context` varchar(40) NOT NULL default '', `secret` varchar(40) NULL,
`regcontext` varchar(40) NOT NULL default '', `dbsecret` varchar(40) NULL, -- In AstDB, location to store/retrieve secret
`host` varchar(40) NOT NULL default 'dynamic', `context` varchar(40) NULL,
`ipaddr` varchar(20) NOT NULL default '', `regcontext` varchar(40) NULL,
`port` int(6) NOT NULL default '0', `host` varchar(40) NULL default 'dynamic',
`defaultip` varchar(20) NOT NULL default '', `ipaddr` varchar(20) NULL, -- Must be updateable by Asterisk user
`sourceaddress` varchar(20) NOT NULL default '', `port` int(5) NULL, -- Must be updateable by Asterisk user
`mask` varchar(20) NOT NULL default '', `defaultip` varchar(20) NULL,
`regexten` varchar(40) NOT NULL default '', `sourceaddress` varchar(20) NULL,
`regseconds` int(11) NOT NULL default '0', `mask` varchar(20) NULL,
`accountcode` varchar(20) NOT NULL default '', `regexten` varchar(40) NULL,
`mohinterpret` varchar(20) NOT NULL default '', `regseconds` int(11) NULL, -- Must be updateable by Asterisk user
`mohsuggest` varchar(20) NOT NULL default '', `accountcode` varchar(20) NULL,
`inkeys` varchar(40) NOT NULL default '', `mohinterpret` varchar(20) NULL,
`outkey` varchar(40) NOT NULL default '', `mohsuggest` varchar(20) NULL,
`language` varchar(10) NOT NULL default '', `inkeys` varchar(40) NULL,
`callerid` varchar(40) NOT NULL default '', `outkey` varchar(40) NULL,
`cid_number` varchar(40) NOT NULL default '', `language` varchar(10) NULL,
`sendani` varchar(10) NOT NULL default '', `callerid` varchar(100) NULL, -- The whole callerid string, or broken down in the next 3 fields
`fullname` varchar(40) NOT NULL default '', `cid_number` varchar(40) NULL, -- The number portion of the callerid
`trunk` varchar(10) NOT NULL default '', `sendani` varchar(10) NULL, -- yes/no
`auth` varchar(20) NOT NULL default '', `fullname` varchar(40) NULL, -- The name portion of the callerid
`maxauthreq` varchar(15) NOT NULL default '', `trunk` varchar(3) NULL, -- Yes/no
`encryption` varchar(20) NOT NULL default '', `auth` varchar(20) NULL, -- RSA/md5/plaintext
`transfer` varchar(10) NOT NULL default '', `maxauthreq` varchar(5) NULL, -- Maximum outstanding AUTHREQ calls {1-32767}
`jitterbuffer` varchar(10) NOT NULL default '', `requirecalltoken` varchar(4) NULL, -- yes/no/auto
`forcejitterbuffer` varchar(10) NOT NULL default '', `encryption` varchar(20) NULL, -- aes128/yes/no
`disallow` varchar(40) NOT NULL default 'all', `transfer` varchar(10) NULL, -- mediaonly/yes/no
`allow` varchar(40) NOT NULL default '', `jitterbuffer` varchar(3) NULL, -- yes/no
`codecpriority` varchar(40) NOT NULL default '', `forcejitterbuffer` varchar(3) NULL, -- yes/no
`qualify` varchar(10) NOT NULL default '', `disallow` varchar(40) NULL, -- all/{list-of-codecs}
`qualifysmoothing` varchar(10) NOT NULL default '', `allow` varchar(40) NULL, -- all/{list-of-codecs}
`qualifyfreqok` varchar(10) NOT NULL default '', `codecpriority` varchar(40) NULL,
`qualifyfreqnotok` varchar(10) NOT NULL default '', `qualify` varchar(10) NULL, -- yes/no/{number of milliseconds}
`timezone` varchar(20) NOT NULL default '', `qualifysmoothing` varchar(10) NULL, -- yes/no
`adsi` varchar(10) NOT NULL default '', `qualifyfreqok` varchar(10) NULL, -- {number of milliseconds}|60000
`amaflags` varchar(20) NOT NULL default '', `qualifyfreqnotok` varchar(10) NULL, -- {number of milliseconds}|10000
`setvar` varchar(200) NOT NULL default '', `timezone` varchar(20) NULL,
`adsi` varchar(10) NULL, -- yes/no
`amaflags` varchar(20) NULL,
`setvar` varchar(200) NULL,
PRIMARY KEY (`name`), PRIMARY KEY (`name`),
INDEX name (name, host), INDEX name (name, host),
INDEX name2 (name, ipaddr, port), INDEX name2 (name, ipaddr, port),
INDEX ipaddr (ipaddr, port), INDEX ipaddr (ipaddr, port),
INDEX host (host, port), INDEX host (host, port)
) TYPE=MyISAM; );