From 25128f34cdfae5318d1a38441bf09781ef91a2ba Mon Sep 17 00:00:00 2001 From: Triatmoko Date: Thu, 17 Nov 2011 04:24:51 +0100 Subject: update loging files for every handler and fic device configuration function --- Under-Testing/Server-Code-New/SIPHandler.py | 110 +++++++++++++--------------- 1 file changed, 51 insertions(+), 59 deletions(-) (limited to 'Under-Testing/Server-Code-New/SIPHandler.py') diff --git a/Under-Testing/Server-Code-New/SIPHandler.py b/Under-Testing/Server-Code-New/SIPHandler.py index b2343f4..6758f88 100644 --- a/Under-Testing/Server-Code-New/SIPHandler.py +++ b/Under-Testing/Server-Code-New/SIPHandler.py @@ -14,6 +14,9 @@ def log_cb(level, str, len): # Receive events from incoming Call class Account(pj.AccountCallback): + def __init__(self, account=None): + pj.AccountCallback.__init__(self, account) + def on_incoming_call(self, call): global current_call @@ -22,11 +25,12 @@ class Account(pj.AccountCallback): call_cb = Calling(current_call) current_call.set_callback(call_cb) - logger.logEvent(current_call) + server.sendData('Incoming Call') + logger.logEvent('Current Call :'+current_call) call.answer(200) logger.logEvent("Answer call") - server.sendData('CALL OK') + sleep(2) #print 'Answer Call' try : logger.logEvent("Try to Hangup the call") @@ -38,8 +42,11 @@ class Account(pj.AccountCallback): if current_call <> None: logger.logEvent("Hangup call") #print 'Hangup Call' - call.hangup() - + try: + call.hangup() + except ValueError: + message = 'cant hangup the call' + #server.sendData('CALL OK') logger.logEvent('CALL OK') #creating object for calling @@ -53,20 +60,23 @@ class Calling(pj.CallCallback): if self.call.info().state <> pj.CallState.DISCONNECTED: if self.call.info().state_text == "CONNECTING": - #print 'Call Connecting' logger.logEvent("Call Connecting") - logger.logEvent('200') + try: + logger.logEvent('Try to hangup the call') + self.call.hangup() + logger.logEvent('Hangup OK') + except ValueError: + logger.logEvent('hangup failed, waiting destination hangup the call') + server.sendData('CALL OK') if self.call.info().last_reason == "Busy Here": - #print 'Number busy or offline' logger.logEvent('Number busy or Offline') server.sendData('CALL NOT OK') logger.logEvent('CALL NOT OK') if self.call.info().state == pj.CallState.DISCONNECTED: logger.logEvent('Call Disconnected') - #print 'Call Discont' current_call = None #function to make a call @@ -77,18 +87,17 @@ def make_call(uri): return acc.make_call(uri, cb) except pj.Error, e: - #print "408 " + str(e) - logger.logEvent('408') + logger.logEvent('Error when trying to call, 408') + server.sendData('CALL NOT OK') return None def openFile(): global sipServer, username, password, ip, portadd global port - #String format: - # textFile = 'Account:username:password:server:handler:PortName:portCaller - - reader = csv.reader(open('handler.txt'), delimiter=':') + #file format: 'Account:username:password:server:handler:PortName:portCommunication + File = open('handler.txt') + reader = csv.reader(File, delimiter=':') for row in reader: if str(row[0]) == 'Account': username = str(row[1]) @@ -97,15 +106,13 @@ def openFile(): #handler = str(row[4]) #portadd = str(row[5]) port = int(row[6]) + File.close() #send greeting message to the controller def greeting(): - global server - global status - #port = sys.argv[2] + global server server = None - status = None # create socket communication object server = ServerClass.ServerHandler(port) @@ -113,15 +120,15 @@ def greeting(): conn = server.openSocket() if server.connected == 1: - #connection to the controller esatablish + #connection to the controller establish + logger.logEvent('Connection Establish') if server.receiveData(25) == 'HELLO HANDLER': - #print 'GREETING' server.sendData('HELLO CONTROLLER') - status = 'OK' + return 1 else: - status = 'NOT OK' logger.logEvent('Cant connect to Controller') - sys.exit(1) + del server + return 0 def initLogFile(sipServer): @@ -152,7 +159,6 @@ def initState(): if message == 'RECEIVER': state = 'RECEIVER' - elif message[0:6] == 'CALLER': state = 'CALLER' no = message[7:] @@ -162,31 +168,12 @@ def initState(): num = no[7:] else: num = no - print 'INIT STATE', state - -def initHandler(): - global sipServer - global username - global password - - - accConf = sys.argv[1] # need to read from text file - - username = accConf[0:accConf.find(':')] - - line = accConf[accConf.find(':')+1:] - password = line[0:line.find(':')] - - newLine = line[line.find(':')+1:] - sipServer = newLine[0:newLine.find(':')] - lib = pj.Lib() stop = False -#print 'INIT SYSTEM' +print 'INIT SYSTEM' -#initHandler() openFile() setproctitle.setproctitle('SIP Handler') initLogFile(sipServer) @@ -203,9 +190,9 @@ while stop <> True: lib.start() lib.set_null_snd_dev() - greeting() - - + if greeting() != 1: + lib.destroy() + break try: initState() acc_cfg = pj.AccountConfig(str(sipServer),str(username),str(password)) @@ -228,7 +215,7 @@ while stop <> True: print data logger.logEvent(data) - #shutting down message + #get shutting down message if data == 'TERMINATE CONNECTION': print data logger.logEvent('Terminate') @@ -251,7 +238,6 @@ while stop <> True: logger.logEvent(data) logger.logEvent('Make a call to: ' + num) number = "sip:"+num+"@"+sipServer - #print number make_call(number) else: logger.logEvent('No number to call') @@ -267,21 +253,27 @@ while stop <> True: else: logger.logEvent('Unknow Message') server.sendData('Unknow Message') - server.closeConnection() - sys.exit(0.5) + break else: logger.logEvent("488 Not Acceptable Here") - lib.destroy() + server.sendData('DEVICE NOT READY') + break - except ValueError: - #print "401 Unauthorized " + str(e) + except ValueError: logger.logEvent("401 Unauthorized ") + break logger.logEvent("Goodbye") -acc.delete() -lib.destroy() -server.closeConnection() -lib = None -acc = None + +# trying to clean everything before shutting down +try: + acc.delete() + lib.destroy() + lib = None + acc = None + server.closeConnection() + del server +except ValueError: + message = 'trying failure' -- cgit v1.2.3-55-g7522