annotate extensions/app_sip/libdiamsip.c @ 427:3d9f300f3b49

Added SAR/SAA and UAR/UAA
author Alexandre Westfahl <awestfahl@freediameter.net>
date Mon, 26 Jul 2010 21:39:27 +0900
parents c8a61dabea55
children f77fc3a97287
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
364
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
1 /*********************************************************************************************************
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
2 * Software License Agreement (BSD License) *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
3 * Author: Alexandre Westfahl <awestfahl@freediameter.net> *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
4 * *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
5 * Copyright (c) 2010, Alexandre Westfahl, Teraoka Laboratory (Keio University), and the WIDE Project. *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
6 * *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
7 * All rights reserved. *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
8 * *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
9 * Redistribution and use of this software in source and binary forms, with or without modification, are *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
10 * permitted provided that the following conditions are met: *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
11 * *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
12 * * Redistributions of source code must retain the above *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
13 * copyright notice, this list of conditions and the *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
14 * following disclaimer. *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
15 * *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
16 * * Redistributions in binary form must reproduce the above *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
17 * copyright notice, this list of conditions and the *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
18 * following disclaimer in the documentation and/or other *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
19 * materials provided with the distribution. *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
20 * *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
21 * * Neither the name of the Teraoka Laboratory nor the *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
22 * names of its contributors may be used to endorse or *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
23 * promote products derived from this software without *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
24 * specific prior written permission of Teraoka Laboratory *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
25 * *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
26 * *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
27 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
28 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
29 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
30 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
33 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
34 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
da11085cf6d9 Updated Copyright information of SIP extension
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 360
diff changeset
35 *********************************************************************************************************/
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
36 //#include <mysql.h>
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
37 #include "diamsip.h"
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
38
367
a2c268b2d8fe MySQL bugfix
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 364
diff changeset
39 MYSQL *conn;
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
40
409
c2fb5b26bfcb Fix for ticket 8
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 392
diff changeset
41 void clear_digest(uint8_t * digest, char * readable_digest, int digestlength)
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
42 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
43 int i=0;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
44 for(i=0;i<digestlength * 2;i++)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
45 sprintf(&readable_digest[2 * i], "%2.2hhx", digest[i]);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
46 readable_digest[2 * digestlength]='\0';
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
47
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
48 return;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
49 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
50
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
51 // You must create a table like this "char clearDigest[DIGEST_LEN*2+1];"
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
52 void calc_md5(char *clearDigest, char * data)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
53 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
54 gcry_md_hd_t md5;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
55 uint8_t * binDigest=NULL;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
56
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
57 CHECK_MALLOC_DO(binDigest=malloc(DIGEST_LEN),return);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
58
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
59 gcry_md_open(&md5,GCRY_MD_MD5, 0);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
60 gcry_md_write(md5, (char *)data, sizeof(data));
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
61 memcpy(binDigest, gcry_md_read(md5, GCRY_MD_MD5),gcry_md_get_algo_dlen(GCRY_MD_MD5));
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
62 gcry_md_close(md5);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
63
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
64 clear_digest(binDigest, clearDigest, DIGEST_LEN);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
65 free(binDigest);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
66 return;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
67 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
68
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
69
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
70 /* Search a given AVP model in an AVP (extracted from libfreediameter/message.c ) */
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
71 int fd_avp_search_avp ( struct avp * groupedavp, struct dict_object * what, struct avp ** avp )
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
72 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
73 struct avp * nextavp;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
74 struct avp_hdr * nextavphdr;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
75 struct dict_avp_data dictdata;
409
c2fb5b26bfcb Fix for ticket 8
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 392
diff changeset
76
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
77
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
78 TRACE_ENTRY("%p %p %p", groupedavp, what, avp);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
79
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
80 CHECK_FCT( fd_dict_getval(what, &dictdata) );
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
81
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
82 // Loop only in the group AVP
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
83 CHECK_FCT( fd_msg_browse(groupedavp, MSG_BRW_FIRST_CHILD, (void *)&nextavp, NULL) );
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
84 CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr ) );
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
85
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
86 while (nextavphdr) {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
87
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
88 if ( (nextavphdr->avp_code == dictdata.avp_code) && (nextavphdr->avp_vendor == dictdata.avp_vendor) ) // always 0 if no Vendor flag
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
89 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
90 break;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
91 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
92
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
93 // Otherwise move to next AVP in the grouped AVP
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
94 CHECK_FCT( fd_msg_browse(nextavp, MSG_BRW_NEXT, (void *)&nextavp, NULL) );
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
95
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
96 if(nextavp!=NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
97 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
98 CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr ) );
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
99 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
100 else
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
101 nextavphdr=NULL;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
102 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
103 if (avp)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
104 *avp = nextavp;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
105
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
106 if (avp && nextavp) {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
107 struct dictionary * dict;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
108 CHECK_FCT( fd_dict_getdict( what, &dict) );
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
109 CHECK_FCT_DO( fd_msg_parse_dict( nextavp, dict, NULL ), );
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
110 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
111
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
112 if (avp || nextavp)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
113 return 0;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
114 else
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
115 return ENOENT;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
116 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
117 struct avp_hdr *walk_digest(struct avp *avp, int avp_code)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
118 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
119 struct avp_hdr *temphdr=NULL;
409
c2fb5b26bfcb Fix for ticket 8
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 392
diff changeset
120 CHECK_FCT_DO(fd_msg_browse ( avp, MSG_BRW_WALK, &avp, NULL),return NULL);
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
121
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
122 while(avp!=NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
123 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
124
409
c2fb5b26bfcb Fix for ticket 8
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 392
diff changeset
125 CHECK_FCT_DO( fd_msg_avp_hdr( avp,&temphdr ),return NULL);
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
126
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
127 if(temphdr->avp_code==avp_code)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
128 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
129 //We found the AVP so we set avp to NULL to exit the loop
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
130 avp=NULL;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
131 return temphdr;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
132
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
133 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
134 else if(temphdr->avp_code==380)//SIP-Authorization AVP
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
135 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
136 //We didn't found the AVP but we finished browsing the Authentication AVP
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
137 avp=NULL;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
138 temphdr=NULL;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
139
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
140 return temphdr;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
141 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
142 else
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
143 {
409
c2fb5b26bfcb Fix for ticket 8
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 392
diff changeset
144 CHECK_FCT_DO(fd_msg_browse ( avp, MSG_BRW_WALK, &avp, NULL),return NULL);
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
145 temphdr=NULL;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
146
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
147 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
148 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
149
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
150 return temphdr;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
151 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
152
392
8e260030f32c Added configuration file for app_sip and test_sip
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 367
diff changeset
153 int start_mysql_connection()
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
154 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
155 conn = mysql_init(NULL);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
156
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
157 mysql_options(conn, MYSQL_OPT_RECONNECT, "true");
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
158
392
8e260030f32c Added configuration file for app_sip and test_sip
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 367
diff changeset
159 if (!mysql_real_connect(conn, as_conf->mysql_server,as_conf->mysql_login, as_conf->mysql_password, as_conf->mysql_database, as_conf->mysql_port, NULL, 0))
8e260030f32c Added configuration file for app_sip and test_sip
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 367
diff changeset
160 {//TODO: display error from mysql
8e260030f32c Added configuration file for app_sip and test_sip
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 367
diff changeset
161 TRACE_DEBUG(INFO,"Unable to connect to database (%s) with login:%s",as_conf->mysql_database,as_conf->mysql_login);
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
162 return 1;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
163 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
164 return 0;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
165
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
166 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
167
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
168
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
169 void request_mysql(char *query)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
170 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
171 //We check if the connection is still up
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
172 mysql_ping(conn);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
173
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
174 if (mysql_query(conn, query))
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
175 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
176 TRACE_DEBUG(INFO,"Query %s failed", query);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
177
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
178 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
179
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
180 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
181
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
182 void close_mysql_connection()
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
183 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
184 mysql_close(conn);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
185
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
186 }
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
187
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
188 //If password is null, we just verify this user exist
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
189 //We don't need the password length because it is a table'
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
190 int get_password(const unsigned char *username, const size_t usernamelen, char *password)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
191 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
192 CHECK_PARAMS(username && usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
193
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
194 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
195 size_t querylen, usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
196 char *query, *username_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
197
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
198 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
199 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
200 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
201 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
202 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
203 username_pure=malloc(usernamelen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
204 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
205 usernamepurelen=mysql_real_escape_string(conn, username_pure, (const char *)username, usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
206
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
207 //We copy username in query
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
208 querylen=SQL_GETPASSWORD_LEN + usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
209 query = malloc(querylen+2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
210 snprintf(query, querylen+1, SQL_GETPASSWORD, username_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
211
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
212 MYSQL_RES *res;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
213 MYSQL_ROW row;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
214
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
215 //We make the query
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
216 request_mysql(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
217 res=mysql_use_result(conn);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
218 if(res==NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
219 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
220 if(password!=NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
221 password[0]='\0';
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
222 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
223 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
224 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
225
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
226
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
227
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
228 while ((row = mysql_fetch_row(res)) != NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
229 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
230 if(strlen(row[0])>0)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
231 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
232 if(password!=NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
233 strcpy(password,row[0]);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
234
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
235 not_found=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
236 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
237 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
238 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
239 mysql_free_result(res);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
240 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
241 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
242 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
243 return not_found;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
244 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
245
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
246 int check_sipaor(const unsigned char *username, const size_t usernamelen, const char * sip_aor,const size_t sipaorlen)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
247 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
248 CHECK_PARAMS(username && usernamelen && sip_aor && sipaorlen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
249
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
250 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
251 size_t querylen, usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
252 char *query, *username_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
253
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
254 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
255 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
256 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
257 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
258 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
259 username_pure=malloc(usernamelen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
260 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
261 usernamepurelen=mysql_real_escape_string(conn, username_pure, (const char *)username, usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
262
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
263 //We get the list of AOR owned by this user
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
264 querylen=SQL_GETSIPAOR_LEN + usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
265 query = malloc(querylen+2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
266 snprintf(query, querylen+1, SQL_GETSIPAOR, username_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
267
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
268 MYSQL_RES *res;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
269 MYSQL_ROW row;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
270
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
271 //We make the query
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
272 request_mysql(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
273 res=mysql_use_result(conn);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
274 if(res==NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
275 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
276 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
277 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
278 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
279
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
280
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
281 not_found=1;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
282 while ((row = mysql_fetch_row(res)) != NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
283 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
284 if(strncmp((const char *)sip_aor,row[0],sipaorlen)==0)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
285 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
286 not_found=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
287 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
288 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
289 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
290 mysql_free_result(res);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
291 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
292 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
293 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
294 return not_found;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
295 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
296
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
297 int get_diameter_uri(const unsigned char *sip_aor, const size_t sipaorlen, char ** diameter_uri, size_t *diameterurilen)
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
298 {
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
299 CHECK_PARAMS(sip_aor && sipaorlen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
300
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
301 size_t querylen, sipaorpurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
302 char *query, *sipaor_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
303 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
304
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
305
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
306
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
307
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
308 //a sip aor must begin by "sip:" or "sips:" so it must at least be longer than 4 chars
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
309 if(sipaorlen<5)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
310 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
311
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
312 //NOTE: each method has to purify sip_aor itself. You must remove quotes or special chars for security
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
313 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
314 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
315 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
316 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
317
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
318 querylen=SQL_GETDIAMURI_LEN + sipaorlen;
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
319
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
320
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
321 //We allocate the double size of SIP-URI because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
322 CHECK_MALLOC(sipaor_pure=malloc(sipaorlen*2+1));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
323 //We purify SIP-URI not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
324 sipaorpurelen=mysql_real_escape_string(conn, sipaor_pure, (const char *)sip_aor, sipaorlen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
325
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
326
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
327 query = malloc(querylen+sipaorpurelen+ 2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
328 snprintf(query, querylen+1, SQL_GETDIAMURI, sipaor_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
329
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
330 MYSQL_RES *res;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
331 MYSQL_ROW row;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
332
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
333
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
334 //We make the query
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
335 request_mysql(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
336 res=mysql_use_result(conn);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
337 if(res==NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
338 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
339 //We couldn't make the request
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
340 diameter_uri=NULL;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
341 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
342 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
343
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
344 while ((row = mysql_fetch_row(res)) != NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
345 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
346 *diameterurilen=strlen(row[0]);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
347 if(*diameterurilen>0)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
348 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
349 CHECK_MALLOC(*diameter_uri=malloc(*diameterurilen+1));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
350 strcpy(*diameter_uri,row[0]);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
351 not_found=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
352 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
353 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
354 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
355 mysql_free_result(res);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
356 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
357 free(sipaor_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
358 break;
420
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
359
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
360 default:
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
361
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
362 //We must never go here, if so, we must stop diameter_sip
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
363 diameter_uri=NULL;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
364 return 2;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
365
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
366 break;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
367 }
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
368
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
369 //0 if it was found
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
370 return not_found;
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
371
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
372 }
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
373
c8a61dabea55 app_sip:Added LIR/LIA for SL
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 409
diff changeset
374
427
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
375 int exist_username(const unsigned char *sip_aor, const size_t sipaorlen)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
376 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
377 CHECK_PARAMS(sip_aor && sipaorlen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
378
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
379 size_t querylen, sipaorpurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
380 char *query, *sipaor_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
381 int not_found=1;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
382
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
383 //a sip aor must begin by "sip:" or "sips:" so it must at least be longer than 4 chars
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
384 if(sipaorlen<5)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
385 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
386
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
387 //NOTE: each method has to purify sip_aor itself. You must remove quotes or special chars for security
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
388
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
389 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
390 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
391 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
392 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
393
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
394 querylen=SQL_GETUSERNAME_LEN + sipaorlen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
395
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
396
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
397 //We allocate the double size of SIP-URI because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
398 CHECK_MALLOC(sipaor_pure=malloc(sipaorlen*2+1));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
399 //We purify SIP-URI not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
400 sipaorpurelen=mysql_real_escape_string(conn, sipaor_pure, (const char *)sip_aor, sipaorlen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
401
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
402
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
403 query = malloc(querylen+sipaorpurelen+ 2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
404 snprintf(query, querylen+1, SQL_GETUSERNAME, sipaor_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
405
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
406 MYSQL_RES *res;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
407 MYSQL_ROW row;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
408
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
409
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
410 //We make the query
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
411 request_mysql(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
412 res=mysql_use_result(conn);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
413 if(res==NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
414 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
415 //We couldn't make the request
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
416 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
417 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
418
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
419 while ((row = mysql_fetch_row(res)) != NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
420 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
421 if(strlen(row[0])>0)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
422 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
423 not_found=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
424 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
425 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
426 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
427 mysql_free_result(res);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
428 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
429 free(sipaor_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
430 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
431
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
432 default:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
433
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
434 //We must never go here, if so, we must stop diameter_sip
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
435 TRACE_DEBUG(INFO,"FATAL ERROR: the datasource is unknown, please check your config file!");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
436 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
437
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
438 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
439 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
440
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
441 //0 if it was found
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
442 return not_found;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
443
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
444 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
445
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
446 //We check if this user can go in the given network
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
447 int allow_roaming(const unsigned char *username, const size_t usernamelen, const char * network,const size_t networklen)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
448 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
449 CHECK_PARAMS(username && usernamelen && network && networklen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
450
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
451 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
452 size_t querylen, usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
453 char *query, *username_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
454
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
455 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
456 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
457 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
458 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
459 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
460 username_pure=malloc(usernamelen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
461 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
462 usernamepurelen=mysql_real_escape_string(conn, username_pure, (const char *)username, usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
463
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
464 //We get the list of AOR owned by this user
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
465 querylen=SQL_GETUSERNET_LEN + usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
466 query = malloc(querylen+2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
467 snprintf(query, querylen+1, SQL_GETUSERNET, username_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
468
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
469
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
470 MYSQL_RES *res;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
471 MYSQL_ROW row;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
472
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
473
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
474 //We make the query
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
475 request_mysql(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
476 res=mysql_use_result(conn);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
477 if(res==NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
478 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
479 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
480 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
481 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
482
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
483
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
484 not_found=1;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
485 while ((row = mysql_fetch_row(res)) != NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
486 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
487 if(strncmp((const char *)network,row[0],networklen)==0)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
488 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
489 not_found=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
490 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
491 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
492 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
493 mysql_free_result(res);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
494 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
495 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
496 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
497 return not_found;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
498 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
499
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
500 //SIP-Server-Capabilities for the SIP-AOR
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
501 int get_sipserver_cap(const unsigned char *sip_aor, const size_t sipaorlen, struct avp **capabilities)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
502 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
503 CHECK_PARAMS(sip_aor && sipaorlen && capabilities);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
504
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
505 size_t querylen, sipaorpurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
506 char *query, *sipaor_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
507 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
508 union avp_value value;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
509 struct avp *avp;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
510
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
511 //a sip aor must begin by "sip:" or "sips:" so it must at least be longer than 4 chars
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
512 if(sipaorlen<5)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
513 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
514
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
515 //NOTE: each method has to purify sip_aor itself. You must remove quotes or special chars for security
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
516 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
517 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
518 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
519 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
520
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
521 querylen=SQL_GETSIPSERCAP_LEN + sipaorlen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
522
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
523
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
524 //We allocate the double size of SIP-URI because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
525 CHECK_MALLOC(sipaor_pure=malloc(sipaorlen*2+1));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
526 //We purify SIP-URI not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
527 sipaorpurelen=mysql_real_escape_string(conn, sipaor_pure, (const char *)sip_aor, sipaorlen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
528
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
529
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
530 query = malloc(querylen+sipaorpurelen+ 2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
531 snprintf(query, querylen+1, SQL_GETSIPSERCAP, sipaor_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
532
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
533 MYSQL_RES *res;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
534 MYSQL_ROW row;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
535
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
536 //We make the query
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
537 request_mysql(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
538 res=mysql_use_result(conn);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
539 if(res==NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
540 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
541 //We couldn't make the request
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
542 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
543 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
544 not_found=1;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
545 while ((row = mysql_fetch_row(res)) != NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
546 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
547 if(atoi(row[0])==1)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
548 {//mandatory
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
549 CHECK_FCT( fd_msg_avp_new ( sip_dict.SIP_Mandatory_Capability, 0, &avp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
550 value.i32=(uint32_t)atoi(row[1]);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
551 CHECK_FCT( fd_msg_avp_setvalue ( avp, &value ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
552 CHECK_FCT( fd_msg_avp_add ( *capabilities, MSG_BRW_LAST_CHILD, avp) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
553
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
554 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
555 else
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
556 {//optional
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
557 CHECK_FCT( fd_msg_avp_new ( sip_dict.SIP_Optional_Capability, 0, &avp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
558 value.i32=(uint32_t)atoi(row[1]);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
559 CHECK_FCT( fd_msg_avp_setvalue ( avp, &value ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
560 CHECK_FCT( fd_msg_avp_add ( *capabilities, MSG_BRW_LAST_CHILD, avp) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
561 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
562 not_found=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
563 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
564
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
565 mysql_free_result(res);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
566 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
567 free(sipaor_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
568 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
569
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
570 default:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
571
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
572 //We must never go here, if so, we must stop diameter_sip
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
573 TRACE_DEBUG(INFO,"FATAL ERROR: the datasource is unknown, please check your config file!");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
574 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
575
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
576 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
577 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
578
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
579 //0 if it was found
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
580 return not_found;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
581
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
582 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
583
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
584
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
585 //We retrieve datatype
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
586 int get_user_datatype(const unsigned char *username, const size_t usernamelen, char **table_supported, const int num_elements, struct avp **groupedavp)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
587 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
588 CHECK_PARAMS(table_supported && num_elements && username && usernamelen && groupedavp);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
589
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
590
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
591 int counter=0, not_found=1;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
592 union avp_value value;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
593 struct avp *avp, *rootavp;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
594 size_t querylen, usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
595 char *query, *username_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
596
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
597 if(num_elements<1)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
598 return 1;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
599
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
600 //NOTE: each method has to purify sip_aor itself. You must remove quotes or special chars for security
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
601 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
602 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
603 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
604 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
605
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
606 querylen=SQL_GETUSEDATA_LEN + usernamelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
607
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
608
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
609 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
610 username_pure=malloc(usernamelen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
611 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
612 usernamepurelen=mysql_real_escape_string(conn, username_pure, (const char *)username, usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
613
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
614
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
615 query = malloc(querylen+usernamelen+ 2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
616 snprintf(query, querylen+1, SQL_GETUSEDATA, username_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
617
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
618 MYSQL_RES *res;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
619 MYSQL_ROW row;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
620
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
621 //We make the query
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
622 request_mysql(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
623 res=mysql_use_result(conn);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
624 if(res==NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
625 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
626 //We couldn't make the request
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
627 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
628 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
629 not_found=1;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
630
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
631 counter=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
632 unsigned long *length=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
633
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
634 //int index=0;//current field number
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
635
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
636 while ((row = mysql_fetch_row(res)) != NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
637 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
638 length=mysql_fetch_lengths(res);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
639
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
640 for(counter=0;counter<num_elements; counter++)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
641 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
642 //TODO: check length
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
643 if(strcmp(table_supported[counter],row[0]))
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
644 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
645 CHECK_FCT( fd_msg_avp_new ( sip_dict.SIP_User_Data, 0, &rootavp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
646
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
647 CHECK_FCT( fd_msg_avp_new ( sip_dict.SIP_User_Data_Type, 0, &avp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
648 value.os.data=(unsigned char *)table_supported[counter];
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
649 value.os.len=strlen(table_supported[counter]);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
650 CHECK_FCT( fd_msg_avp_setvalue ( avp, &value ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
651 CHECK_FCT( fd_msg_avp_add ( rootavp, MSG_BRW_LAST_CHILD, avp) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
652 //This was used
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
653 table_supported[counter]=NULL;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
654
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
655 CHECK_FCT( fd_msg_avp_new ( sip_dict.SIP_User_Data_Contents, 0, &avp ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
656 CHECK_MALLOC(value.os.data=malloc((length[1])*sizeof(unsigned char)));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
657 memcpy(value.os.data,row[1],length[1]);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
658 value.os.len=(size_t)(length[1]*sizeof(unsigned char));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
659 CHECK_FCT( fd_msg_avp_setvalue ( avp, &value ) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
660 CHECK_FCT( fd_msg_avp_add ( rootavp, MSG_BRW_LAST_CHILD, avp) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
661
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
662 CHECK_FCT( fd_msg_avp_add ( *groupedavp, MSG_BRW_LAST_CHILD, rootavp) );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
663 not_found=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
664 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
665 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
666 //index++;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
667 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
668
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
669 mysql_free_result(res);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
670 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
671 free(username_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
672 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
673
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
674 default:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
675
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
676 //We must never go here, if so, we must stop diameter_sip
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
677 TRACE_DEBUG(INFO,"FATAL ERROR: the datasource is unknown, please check your config file!");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
678 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
679
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
680 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
681 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
682
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
683 //0 if it was found
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
684 return not_found;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
685
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
686 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
687
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
688 int set_pending_flag(const unsigned char *username, const size_t usernamelen)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
689 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
690 CHECK_PARAMS(username && usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
691
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
692 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
693 size_t querylen, usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
694 char *query, *username_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
695
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
696 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
697 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
698 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
699 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
700 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
701 username_pure=malloc(usernamelen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
702 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
703 usernamepurelen=mysql_real_escape_string(conn, username_pure, (const char *)username, usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
704
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
705
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
706
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
707 //We clear the flag "authentication pending"
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
708 querylen=SQL_SETFLAG_LEN + usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
709 query = malloc(querylen+2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
710 snprintf(query, querylen+1, SQL_SETFLAG, username_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
711
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
712 if (mysql_query(conn, query))
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
713 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
714 TRACE_DEBUG(INFO,"Query %s failed", query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
715 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
716 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
717 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
718
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
719 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
720 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
721 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
722 return 0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
723 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
724 int clear_pending_flag(const unsigned char *username, const size_t usernamelen)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
725 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
726 CHECK_PARAMS(username && usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
727
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
728 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
729 size_t querylen, usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
730 char *query, *username_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
731
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
732 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
733 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
734 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
735 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
736 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
737 username_pure=malloc(usernamelen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
738 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
739 usernamepurelen=mysql_real_escape_string(conn, username_pure, (const char *)username, usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
740
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
741
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
742
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
743 //We clear the flag "authentication pending"
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
744 querylen=SQL_CLEARFLAG_LEN + usernamepurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
745 query = malloc(querylen+2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
746 snprintf(query, querylen+1, SQL_CLEARFLAG, username_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
747
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
748 if (mysql_query(conn, query))
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
749 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
750 TRACE_DEBUG(INFO,"Query %s failed", query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
751 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
752 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
753 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
754
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
755 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
756 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
757 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
758 return 0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
759 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
760
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
761
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
762
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
763 int set_sipserver_uri(const unsigned char *username, const size_t usernamelen, const unsigned char *sipserver_uri,const size_t sipserverurilen)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
764 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
765 CHECK_PARAMS(username && usernamelen && sipserver_uri && sipserverurilen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
766
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
767 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
768 size_t querylen, usernamepurelen, sipserveruripurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
769 char *query, *username_pure, *sipserveruri_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
770
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
771 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
772 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
773 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
774 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
775 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
776 username_pure=malloc(usernamelen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
777 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
778 usernamepurelen=mysql_real_escape_string(conn, username_pure, (const char *)username, usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
779
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
780 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
781 sipserveruri_pure=malloc(sipserverurilen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
782 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
783 sipserveruripurelen=mysql_real_escape_string(conn, sipserveruri_pure, (const char *)sipserver_uri, sipserverurilen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
784
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
785 //We clear the flag "authentication pending"
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
786 querylen=SQL_SETSIPURI_LEN + usernamepurelen + sipserveruripurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
787 query = malloc(querylen+2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
788 snprintf(query, querylen+1, SQL_SETSIPURI, sipserveruri_pure,username_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
789
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
790 if (mysql_query(conn, query))
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
791 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
792 TRACE_DEBUG(INFO,"Query %s failed", query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
793 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
794 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
795 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
796
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
797 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
798 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
799 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
800 return 0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
801 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
802 int remove_sipserver_uri(const unsigned char *sipserver_uri,const size_t sipserverurilen)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
803 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
804 CHECK_PARAMS(sipserver_uri && sipserverurilen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
805
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
806 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
807 size_t querylen, sipserveruripurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
808 char *query, *sipserveruri_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
809
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
810 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
811 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
812 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
813 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
814 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
815 sipserveruri_pure=malloc(sipserverurilen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
816 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
817 sipserveruripurelen=mysql_real_escape_string(conn, sipserveruri_pure, (const char *)sipserver_uri, sipserverurilen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
818
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
819 //We clear the flag "authentication pending"
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
820 querylen=SQL_RMSIPURI_LEN + sipserveruripurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
821 query = malloc(querylen+2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
822 snprintf(query, querylen+1, SQL_RMSIPURI, sipserveruri_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
823
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
824 if (mysql_query(conn, query))
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
825 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
826 TRACE_DEBUG(INFO,"Query %s failed", query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
827 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
828 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
829 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
830
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
831 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
832 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
833 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
834 return 0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
835 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
836 int set_real_sipserver_uri(const unsigned char *username, const size_t usernamelen, const unsigned char *sipserver_uri,const size_t sipserverurilen)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
837 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
838 CHECK_PARAMS(username && usernamelen && sipserver_uri && sipserverurilen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
839
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
840 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
841 size_t querylen, usernamepurelen, sipserveruripurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
842 char *query, *username_pure, *sipserveruri_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
843
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
844 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
845 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
846 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
847 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
848 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
849 username_pure=malloc(usernamelen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
850 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
851 usernamepurelen=mysql_real_escape_string(conn, username_pure, (const char *)username, usernamelen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
852
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
853 //We allocate the double size of username because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
854 sipserveruri_pure=malloc(sipserverurilen*2+1);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
855 //We purify username not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
856 sipserveruripurelen=mysql_real_escape_string(conn, sipserveruri_pure, (const char *)sipserver_uri, sipserverurilen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
857
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
858 //We clear the flag "authentication pending"
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
859 querylen=SQL_SETREALSIPURI_LEN + usernamepurelen + sipserveruripurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
860 query = malloc(querylen+2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
861 snprintf(query, querylen+1, SQL_SETREALSIPURI, sipserveruri_pure,username_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
862
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
863 if (mysql_query(conn, query))
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
864 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
865 TRACE_DEBUG(INFO,"Query %s failed", query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
866 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
867 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
868 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
869
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
870 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
871 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
872 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
873 return 0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
874 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
875
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
876 int get_sipserver_uri(const unsigned char *sip_aor, const size_t sipaorlen, char ** sipserver_uri, size_t *sipserverurilen)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
877 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
878 CHECK_PARAMS(sip_aor && sipaorlen && sipserver_uri && sipserverurilen );
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
879
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
880 size_t querylen, sipaorpurelen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
881 char *query, *sipaor_pure;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
882 int not_found=2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
883
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
884
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
885
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
886
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
887 //a sip aor must begin by "sip:" or "sips:" so it must at least be longer than 4 chars
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
888 if(sipaorlen<5)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
889 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
890
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
891 //NOTE: each method has to purify sip_aor itself. You must remove quotes or special chars for security
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
892
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
893 switch(as_conf->datasource)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
894 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
895 //MySQL
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
896 case ASMYSQL:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
897
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
898 querylen=SQL_GETSIPSERURI_LEN + sipaorlen;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
899
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
900 //We allocate the double size of SIP-URI because at worst it can be all quotes
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
901 CHECK_MALLOC(sipaor_pure=malloc(sipaorlen*2+1));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
902 //We purify SIP-URI not to have forbidden characters
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
903 sipaorpurelen=mysql_real_escape_string(conn, sipaor_pure, (const char *)sip_aor, sipaorlen);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
904
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
905
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
906 query = malloc(querylen+sipaorpurelen+ 2);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
907 snprintf(query, querylen+1, SQL_GETSIPSERURI, sipaor_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
908
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
909 MYSQL_RES *res;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
910 MYSQL_ROW row;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
911
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
912 //We make the query
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
913 request_mysql(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
914 res=mysql_use_result(conn);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
915 if(res==NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
916 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
917 //We couldn't make the request
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
918 sipserver_uri=NULL;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
919 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
920 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
921
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
922 not_found=1;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
923 while ((row = mysql_fetch_row(res)) != NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
924 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
925 *sipserverurilen=strlen(row[0]);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
926 if(*sipserverurilen>4)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
927 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
928 CHECK_MALLOC(*sipserver_uri=malloc(*sipserverurilen+1));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
929 strcpy(*sipserver_uri,row[0]);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
930 not_found=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
931 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
932 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
933 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
934 mysql_free_result(res);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
935 free(query);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
936 free(sipaor_pure);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
937 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
938
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
939 default:
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
940
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
941 //We must never go here, if so, we must stop diameter_sip
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
942 TRACE_DEBUG(INFO,"FATAL ERROR: the datasource is unknown, please check your config file!");
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
943 sipserver_uri=NULL;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
944 return 2;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
945
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
946 break;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
947 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
948
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
949 //0 if it was found
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
950 return not_found;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
951
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
952 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
953
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
954 int count_sipaor(const struct msg * message)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
955 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
956 CHECK_PARAMS(message);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
957
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
958 struct avp_hdr *temphdr;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
959 struct avp *avp;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
960 int counter=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
961
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
962 CHECK_FCT(fd_msg_browse ( &message, MSG_BRW_WALK, &avp, NULL));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
963
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
964 while(avp!=NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
965 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
966
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
967 CHECK_FCT( fd_msg_avp_hdr( avp,&temphdr ));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
968
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
969 if(temphdr->avp_code==122 && temphdr->avp_vendor==0)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
970 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
971 counter++;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
972 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
973
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
974 CHECK_FCT(fd_msg_browse ( &message, MSG_BRW_WALK, &avp, NULL));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
975 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
976 return counter;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
977 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
978 int count_supporteddatatype(const struct msg * message)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
979 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
980 CHECK_PARAMS(message);
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
981
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
982 struct avp_hdr *temphdr;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
983 struct avp *avp;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
984 int counter=0;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
985
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
986 CHECK_FCT(fd_msg_browse ( &message, MSG_BRW_WALK, &avp, NULL));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
987
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
988 while(avp!=NULL)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
989 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
990
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
991 CHECK_FCT( fd_msg_avp_hdr( avp,&temphdr ));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
992
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
993 if(temphdr->avp_code==388 && temphdr->avp_vendor==0)
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
994 {
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
995 counter++;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
996 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
997
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
998 CHECK_FCT(fd_msg_browse ( &message, MSG_BRW_WALK, &avp, NULL));
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
999 }
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
1000 return counter;
3d9f300f3b49 Added SAR/SAA and UAR/UAA
Alexandre Westfahl <awestfahl@freediameter.net>
parents: 420
diff changeset
1001 }
360
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1002 /*
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1003 void nonce_add_element(char * nonce)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1004 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1005 noncechain *newelt=malloc(sizeof(noncechain));
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1006
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1007 newelt->nonce=nonce;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1008
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1009 newelt->timestamp=(int)time(NULL);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1010 newelt->next=NULL;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1011
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1012 if(listnonce==NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1013 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1014 listnonce=newelt;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1015 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1016 else
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1017 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1018 noncechain* temp=listnonce;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1019
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1020 while(temp->next != NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1021 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1022 if(temp->timestamp < ((int)time(NULL)-300))
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1023 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1024 listnonce=temp->next;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1025 free(temp);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1026 temp=listnonce;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1027 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1028 temp = temp->next;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1029 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1030 temp->next = newelt;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1031 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1032
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1033 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1034 void nonce_del_element(char * nonce)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1035 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1036 if(listnonce!=NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1037 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1038 noncechain *temp=listnonce, *tempbefore=NULL;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1039
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1040 if(listnonce->next==NULL && strcmp(listnonce->nonce,nonce)==0)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1041 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1042 free(listnonce);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1043 listnonce=NULL;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1044 return;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1045 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1046 while(temp->next != NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1047 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1048 if(strcmp(temp->nonce,nonce)==0)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1049 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1050 if(tempbefore==NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1051 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1052 listnonce=temp->next;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1053 free(temp);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1054 return;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1055 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1056 tempbefore->next=temp->next;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1057 free(temp);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1058 break;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1059 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1060 tempbefore=temp;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1061 temp = temp->next;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1062 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1063
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1064 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1065
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1066 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1067 int nonce_check_element(char * nonce)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1068 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1069 if(listnonce==NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1070 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1071 //Not found
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1072 return 0;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1073 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1074 else
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1075 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1076 noncechain* temp=listnonce;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1077
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1078 while(temp->next != NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1079 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1080 if(strcmp(temp->nonce,nonce)==0)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1081 return 1;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1082 else
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1083 temp = temp->next;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1084 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1085 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1086 return 0;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1087 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1088
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1089 void nonce_deletelistnonce()
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1090 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1091 if(listnonce !=NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1092 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1093 noncechain* temp=listnonce;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1094
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1095 while(listnonce->next != NULL)
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1096 {
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1097 temp = listnonce->next;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1098
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1099 free(listnonce);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1100
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1101 listnonce=temp;
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1102 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1103 free(listnonce);
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1104 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1105 }
1740bee6c821 Initial App_SIP import
Alexandre Westfahl <awestfahl@freediameter.net>
parents:
diff changeset
1106 */
"Welcome to our mercurial repository"