/
11.sh
executable file
·183 lines (149 loc) · 4.98 KB
/
11.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#!/bin/bash
# database access and persistent storage for registrar on mysql
# Copyright (C) 2007 1&1 Internet AG
#
# This file is part of Kamailio, a free SIP server.
#
# Kamailio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version
#
# Kamailio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
. include/common
. include/require.sh
. include/database.sh
CFG=11.cfg
if ! (check_sipsak && check_kamailio && check_module "db_mysql" && check_mysql); then
exit 0
fi ;
SIPDOMAIN=127.0.0.1
$BIN -L $MOD_DIR -Y $RUN_DIR -P $PIDFILE -w . -f $CFG -a no > /dev/null
ret=$?
sleep 1
# register two contacts
sipsak -U -C sip:foobar@127.0.0.1 -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN > /dev/null 2>&1
sipsak -U -C sip:foobar1@127.0.0.1 -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN > /dev/null 2>&1
ret=$?
if [ "$ret" -eq 0 ]; then
$CTL ul show | grep "AOR:: 49721123456789" > /dev/null
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
TMP=`$MYSQL "select COUNT(*) from location where username='49721123456789';" | tail -n 1`
if [ "$TMP" -eq 0 ] ; then
ret=1
fi;
fi;
if [ "$ret" -eq 0 ]; then
# check if the contact is registered
sipsak -U -C empty -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN -q "Contact: <sip:foobar@127.0.0.1>" > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
# update the registration
sipsak -U -C sip:foobar@127.0.0.1 -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
# check if we get a hint when we try to unregister a non-existent conctact
sipsak -U -C "sip:foobar2@127.0.0.1" -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN -x 0 -q "Contact: <sip:foobar@127.0.0.1>" > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
# unregister the contact
sipsak -U -C "sip:foobar@127.0.0.1" -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN -x 0 > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
# unregister the user again should not fail
sipsak -U -C "sip:foobar@127.0.0.1" -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN -x 0 > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
# check if the other contact is still registered
sipsak -U -C empty -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN -q "Contact: <sip:foobar1@127.0.0.1>" > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
# register the other again
sipsak -U -C sip:foobar@127.0.0.1 -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
# unregister all contacts
sipsak -U -C "*" -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN -x 0 > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
# let the timer cleanup the previous registrations
sleep 2
$CTL ul show | grep "AOR:: 49721123456789" > /dev/null
ret=$?
if [ "$ret" -eq 0 ]; then
ret=1
else
ret=0
fi;
fi ;
if [ "$ret" -eq 0 ]; then
ret=`$MYSQL "select COUNT(*) from location where username='49721123456789';" | tail -n 1`
fi;
if [ "$ret" -eq 0 ]; then
# test min_expires functionality
sipsak -U -C sip:foobar@127.0.0.1 -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN -x 2 > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
sleep 3
# check if the contact is still registered
sipsak -U -C empty -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN -q "Contact: <sip:foobar@127.0.0.1>" > /dev/null 2>&1
ret=$?
fi;
if [ "$ret" -eq 0 ]; then
# register a few more contacts
sipsak -U -e 9 -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN > /dev/null 2>&1
fi;
if [ "$ret" -eq 0 ]; then
# let the timer cleanup the previous registrations
sleep 3
# and check
TMP=`$MYSQL "select COUNT(*) from location where username like '49721123456789%';" | tail -n 1`
if [ "$TMP" -eq 10 ] ; then
ret=0
else
ret=1
fi;
fi;
$MYSQL "delete from location where username like '49721123456789%';"
if [ "$ret" -eq 0 ]; then
# register again
sipsak -U -C sip:foobar@127.0.0.1 -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN > /dev/null 2>&1
ret=$?
fi;
kill_kamailio
# restart to test preload_udomain functionality
$BIN -L $MOD_DIR -Y $RUN_DIR -P $PIDFILE -w . -f $CFG -a no> /dev/null
ret=$?
sleep 1
if [ "$ret" -eq 0 ]; then
# check if the contact is still registered
sipsak -U -C empty -s sip:49721123456789@$SIPDOMAIN -H $SIPDOMAIN -q "Contact: <sip:foobar@127.0.0.1>" > /dev/null 2>&1
ret=$?
fi;
# check if the methods value is correct
if [ "$ret" -eq 0 ]; then
$CTL ul show | grep "Methods:: 4294967295" > /dev/null
ret=$?
fi;
# cleanup
$MYSQL "delete from location where username like '49721123456789%';"
kill_kamailio
exit $ret