| 1 | # import local account info module, so we don't store sceret info in public repository |
|---|
| 2 | import imspasswd |
|---|
| 3 | |
|---|
| 4 | import os, py_verona, tempfile |
|---|
| 5 | import socket |
|---|
| 6 | verona=py_verona |
|---|
| 7 | import ctypes |
|---|
| 8 | |
|---|
| 9 | def 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 | |
|---|
| 22 | CID = -1 |
|---|
| 23 | class 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 | |
|---|
| 41 | DEBUGLEVEL="9" |
|---|
| 42 | VLID = 0 |
|---|
| 43 | API = phapi() |
|---|
| 44 | MYIPADDR = get_address() |
|---|
| 45 | NULL = ctypes.c_void_p(0) |
|---|
| 46 | USERNAME="Vadim Lebedev" |
|---|
| 47 | |
|---|
| 48 | if 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" |
|---|
| 59 | else: |
|---|
| 60 | # external server |
|---|
| 61 | USER="5000" |
|---|
| 62 | TARGET="5001" |
|---|
| 63 | |
|---|
| 64 | |
|---|
| 65 | def nosrtp(): |
|---|
| 66 | global SRTP |
|---|
| 67 | SRTP = False |
|---|
| 68 | |
|---|
| 69 | def putenv(k,v): |
|---|
| 70 | os.environ[k] = v |
|---|
| 71 | |
|---|
| 72 | def setupenv(): |
|---|
| 73 | srvnoport = SERVER.split(':')[0] |
|---|
| 74 | putenv("PH_DEBUG_LEVEL", DEBUGLEVEL) |
|---|
| 75 | |
|---|
| 76 | |
|---|
| 77 | def 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 | |
|---|
| 83 | def 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 | |
|---|
| 94 | def 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 | |
|---|
| 107 | def ans(cid = None): |
|---|
| 108 | API.acceptCall(cid or CID, None, 1, MYIPADDR) |
|---|
| 109 | |
|---|
| 110 | def ring(cid = None): |
|---|
| 111 | API.ringingCall(cid or CID) |
|---|
| 112 | |
|---|
| 113 | |
|---|
| 114 | |
|---|
| 115 | |
|---|
| 116 | def setup(): |
|---|
| 117 | setupenv() |
|---|
| 118 | apiinit() |
|---|
| 119 | reg1() |
|---|
| 120 | |
|---|
| 121 | |
|---|
| 122 | def setup1(): |
|---|
| 123 | setup() |
|---|
| 124 | |
|---|
| 125 | |
|---|
| 126 | |
|---|
| 127 | def hup(cid = None): |
|---|
| 128 | API.closeCall(cid or CID) |
|---|
| 129 | |
|---|
| 130 | |
|---|