Skip to content

Commit c0782c9

Browse files
Logout done
1 parent df37296 commit c0782c9

File tree

3 files changed

+48
-2
lines changed

3 files changed

+48
-2
lines changed

Client/client.py

+2
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ def __parseMessageHelper(self, message):
8383
return [True, "list"]
8484
elif message[0] == "connect":
8585
return [True, "connect"]
86+
elif message[0] == "logout":
87+
return [True, "logout"]
8688
elif message[0] == "send":
8789
if len(message) > 1 and message is not "":
8890
return [False, message[1:]]

Client/serverConnection.py

+28-1
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,11 @@ def __chatMessage(self, serverObj, address):
382382
if clientMessage["user"] in self.__destHostKey:
383383
self.__destHostKey.pop(clientMessage["user"])
384384
self.__addressUserNameMap.pop(address)
385+
if clientMessage["message"] == "logout":
386+
self.__writeMessage(clientMessage["user"]+" Just left\n")
387+
if clientMessage["user"] in self.__destHostKey:
388+
self.__destHostKey.pop(clientMessage["user"])
389+
self.__addressUserNameMap.pop(address)
385390

386391

387392

@@ -457,6 +462,26 @@ def __talkToHost(self):
457462
self.__addressUserNameMap[message["address"]] = destHost
458463
self.__destHostKey[destHost] = [message["address"], message["Key"]] # Username , Address, Key
459464

465+
466+
def logout(self):
467+
for user in self.__destHostKey :
468+
self.___disconnectClient("logout",self.__destHostKey[user][1],self.__destHostKey[user][0])
469+
iv = os.urandom(16)
470+
message = self.__encryptSymetric(
471+
self.__sharedSecret, iv,
472+
pickle.dumps({"request": "logout",
473+
"Nonce": str(int(binascii.hexlify(os.urandom(8)), base=16))
474+
}))
475+
obj = {
476+
"user": self.__username,
477+
"message": message,
478+
"IV": iv,
479+
"type": "sym"
480+
}
481+
self.__sendData(pickle.dumps(obj))
482+
self.__writeMessage("It was a pleasure having you here\nGet back soon:)\n")
483+
sys.exit(0)
484+
460485
def handleClientMessage(self,message):
461486
'''
462487
handleClientMessage(String):
@@ -470,6 +495,8 @@ def handleClientMessage(self,message):
470495
self.__listUsers()
471496
elif message == "connect":
472497
self.__talkToHost()
498+
elif message == "logout":
499+
self.logout()
473500
else:
474501
print "Unknown Message"
475502

@@ -493,4 +520,4 @@ def sendMessageToClient(self,message):
493520
"IV" : iv,
494521
"data" : obj,
495522
"Nonce" : str(int(binascii.hexlify(os.urandom(8)), base=16))}
496-
), self.__destHostKey[user][0])
523+
), self.__destHostKey[user][0])

Server/handelConnection.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,21 @@ def __genKeyPair(self, senderObj, address):
362362
else:
363363
return [False, address]
364364

365+
def __xxx(self, senderObj, address):
366+
'''
367+
368+
:param senderObj:
369+
:param address:
370+
:return:
371+
'''
372+
message = senderObj["message"]
373+
if message["Nonce"] not in self.__userNonceHistor:
374+
if senderObj["user"] in self.__sessionKeyDict:
375+
self.__sessionKeyDict.pop(senderObj["user"])
376+
self.__userNonceHistor[message["Nonce"]] = True
377+
print "\nUser " + senderObj["user"] + " Just left\n"
378+
print self.__sessionKeyDict
379+
return True, ""
365380

366381
def __establishedConnection(self, senderObj, address):
367382
'''
@@ -380,8 +395,10 @@ def __establishedConnection(self, senderObj, address):
380395
)
381396
if senderObj["message"]["request"] == "list":
382397
return self.__listUsers(senderObj, address)
383-
if senderObj["message"]["request"] == "talk":
398+
elif senderObj["message"]["request"] == "talk":
384399
return self.__genKeyPair(senderObj, address)
400+
elif senderObj["message"]["request"] == "logout":
401+
return self.__xxx(senderObj, address)
385402

386403

387404

0 commit comments

Comments
 (0)