source: verona/misc/vtims.py @ 252:690efbd91dd4

Last change on this file since 252:690efbd91dd4 was 252:690efbd91dd4, checked in by Vadim Lebedev <vadim@…>, 23 months ago

Add support for specifying explicit NAT router address
Fix handling of route for REGISTER requests
Implement support for adding user=phone to Contact header

File size: 2.7 KB
Line 
1# import local account info module, so we don't store sceret info in public repository
2import imspasswd
3
4import os, py_verona, tempfile 
5import socket
6verona=py_verona
7import ctypes
8
9def get_address():
10    try:
11        address = socket.gethostbyname(socket.gethostname())
12        # On my system, this always gives me 127.0.0.1. Hence...
13    except:
14        address = ''
15    if not address or address.startswith('127.'):
16        # ...the hard way.
17        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
18        s.connect(('4.2.2.1', 0))
19        address = s.getsockname()[0]
20    return address
21
22CID = -1
23class phapi(py_verona.phapi):
24
25   def onRegProgress(self, cid, status):
26       print "Reg: %d status %d\n" % (cid, status)
27
28   def onCallProgress2(self, cid, status, uri, err):
29        global CID
30        print "OnCallprogress" +  str((cid, status, uri, err)) + "\n"
31        CID = cid
32
33   def onPhLogCsl(self, msg):
34        print "CSL: "+msg + "\n";
35
36
37   
38
39
40
41DEBUGLEVEL="9"
42VLID = 0
43API = phapi()
44MYIPADDR = get_address()
45NULL = ctypes.c_void_p(0)
46USERNAME="Vadim Lebedev"
47
48if True:
49   #testsip3 server
50   NDI=imspasswd.NDI
51   ZNDI = "0" + NDI
52   USERNAME=ZNDI
53   USER="+33999" + NDI
54   IMSUSERID="NDI" + ZNDI + ".TST.9TALK@sfr.fr"
55   SERVER="ims.mnc010.mcc208.3gppnetwork.org"
56   PASSWD=imspasswd.PASSWORD
57   PROXY="<sip:91.68.5.52;lr>"
58   REALM="sfr.fr"
59else:
60   # external server
61   USER="5000"
62   TARGET="5001"
63
64
65def nosrtp():
66    global SRTP
67    SRTP = False
68
69def putenv(k,v):
70    os.environ[k] = v
71
72def setupenv():
73    srvnoport = SERVER.split(':')[0]
74    putenv("PH_DEBUG_LEVEL", DEBUGLEVEL)
75 
76
77def apiinit():
78    cfg = API.getConfig()
79    cfg.public_ip_addr = "217.128.124.171"
80    if 0 < API.init():
81       print "Init failed\n"
82
83def reg1():
84    global VLID
85    API.addAuthInfo(USER, IMSUSERID, PASSWD, REALM)
86    VLID = API.addVline(USERNAME, USER, SERVER, PROXY, 900, verona.PH_LINE_MOBILITY_PHONE)
87    print "vlid = ", VLID
88
89#
90#       virtual int placeCall(int vlid, const char*  uri, void* userdata =0 , int rcid = 0, int streams = PH_STREAM_AUDIO,
91#                       const char* adev = 0, const char* audio_addr = 0, const char* video_addr = 0);
92
93
94def dial(target = None):
95    global CID
96    if not target:
97        target=TARGET
98
99    uri = "sip:%s@%s" % (target,SERVER)
100    CID = API.placeCall(VLID, uri, None, 0, 1, None, MYIPADDR)
101    print "Placed call: %d to %s\n" % (CID, uri)
102
103
104#       virtual int acceptCall(int cid, void* userData = 0, int streams = PH_STREAM_AUDIO,
105#                       const char* audio_addr = 0, const char* video_addr = 0);
106
107def ans(cid = None):
108    API.acceptCall(cid or CID, None, 1, MYIPADDR)
109
110def ring(cid = None):
111    API.ringingCall(cid or CID)
112
113
114
115
116def setup():
117    setupenv()
118    apiinit()
119    reg1()
120       
121
122def setup1():
123    setup()
124
125
126
127def hup(cid = None):
128    API.closeCall(cid or CID)
129
130
Note: See TracBrowser for help on using the repository browser.