From 7c4ab7b714beea55c200af85cb57dd2e1d0c3189 Mon Sep 17 00:00:00 2001 From: tt41 Date: Fri, 22 Jul 2011 01:24:23 +0200 Subject: The new version of SIP handler, which can handler SIP, Landline and Uni account. --- For Weekly Test/23-07-2011/sipHandler.py | 196 +++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 For Weekly Test/23-07-2011/sipHandler.py (limited to 'For Weekly Test') diff --git a/For Weekly Test/23-07-2011/sipHandler.py b/For Weekly Test/23-07-2011/sipHandler.py new file mode 100644 index 0000000..c73a621 --- /dev/null +++ b/For Weekly Test/23-07-2011/sipHandler.py @@ -0,0 +1,196 @@ +import sys +import classServer +import LogFileClass + +from time import sleep + +def log_cb(level, str, len): + print str, "SIP log" + +# Receive events from Call +class Account(pj.AccountCallback): + + def on_incoming_call(self, call): + + current_call = call + logger.logEvent(current_call) + sleep(0.5) + + call.answer(200) + logger.logEvent("Answer call") + sleep(0.5) + + if current_call <> None: + logger.logEvent("Hangup call") + call.hangup() + + server.sendData('200') + logger.logEvent('200') + +class Calling(pj.CallCallback): + + def on_state(self): + global current_call + + if self.call.info().state <> pj.CallState.DISCONNECTED: + if self.call.info().state_text == "CONNECTING": + logger.logEvent("Call Connecting") + sleep(1) + if self.call.info().state <> pj.CallState.DISCONNECTED: + logger.logEvent("will Hangup call") + current_call.hangup() + + logger.logEvent('200') + server.sendData('200') + else: + sleep(0.5) + + if self.call.info().last_reason == "Busy Here": + logger.logEvent('Number busy or Offline') + server.sendData('486') + logger.logEvent('486') + + if self.call.info().state == pj.CallState.DISCONNECTED: + logger.logEvent('Call Disconnected') + current_call = None + + +def make_call(uri): + + try: + + cb=Calling() + return acc.make_call(uri, cb) + + except pj.Error, e: + print "408 " + str(e) + logger.logEvent('408') + return None + +global acc_cfg +global handler +global state +port = sys.argv[1] + +lib = pj.Lib() +stop = False + +logger = LogFileClass.Logging('sipHandler'+port+'.log') +logger.logEvent('') + +while stop <> True: + + acc_cfg = None + + lib.init(log_cfg = pj.LogConfig(level=1, callback=log_cb)) + transport = lib.create_transport(pj.TransportType.UDP, pj.TransportConfig(0)) + + lib.start() + lib.set_null_snd_dev() + + server = classServer.ServerHandler(port) + logger.logEvent('Connect to Controller') + conn = server.openSocket() + + while 1: + message = server.receiveData(0) + handler = message[0:2] + state = message[3:5] # Receiver / caller + + if handler <> 'NO DATA': + break + + if handler == "-S": + logger.logEvent('Beeing SIP') + acc_cfg = pj.AccountConfig("132.230.4.8","mpselftest1","1mpselftest") + + elif handler == "-L": + logger.logEvent('Beeing Landline') + acc_cfg = pj.AccountConfig("sipgate.de","1289459","MMW9AX") + + elif handler == "-U": + logger.logEvent('Beeing University SIP') + acc_cfg = pj.AccountConfig("132.230.252.228", "4976120397897", "hB8M3WyFt61C") + + elif: + logger.logEvent('Unknown Message') + server.sendData('Unknown Message') + server.closeConnection() + sys.exit(1) + + try: + + logger.logEvent('Register Account to SIP server') + acc = lib.create_account(acc_cfg, cb=Account()) + + + if acc.info().reg_status < 700: + + if state == "-R": + logger.logEvent(acc.info().reg_status) + server.sendData('ready') + logger.logEvent('Receiver Handler Ready') + + while 1: + + data = server.receiveData(0) + + if data == "487": + logger.logEvent('Terminate') + stop = True + break + + elif state == "-C": + logger.logEvent(acc.info().reg_status) + server.sendData('ready') + logger.logEvent('Caller Handler Ready') + + while 1: + + data = server.receiveData(0) + event = data[0:5] + num = data[6:] + + if event == "start" and num <> "": + + logger.logEvent(event) + logger.logEvent('Make a call to: ' + num) + number = "sip:"+num+"@132.230.4.8" + make_call(number) + + if data == "487": + stop = True + logger.logEvent('Terminate') + break + + elif: + logger.logEvent('Unknow Message') + server.sendData('Unknow Message') + server.closeConnection() + sys.exit(1) + + server.closeConnection() + logger.logEvent('Close Connection to the Controller') + + else: + logger.logEvent("488 Not Acceptable Here") + lib.destroy() + lib = None + acc = None + + + server.closeConnection() + logger.logEvent('Close Connection to the Controller') + except ValueError: + print "401 Unauthorized " + str(e) + logger.logEvent("401 Unauthorized ") + +logger.logEvent("Goodbye") +acc.delete() +logger.logEvent('Un-Rigester SIP Account') +lib.destroy() +server.closeConnection() +logger.logEvent('Close Connection to the Controller') +lib = None +acc = None + -- cgit v1.2.3-55-g7522