@@ -382,6 +382,11 @@ def __chatMessage(self, serverObj, address):
382
382
if clientMessage ["user" ] in self .__destHostKey :
383
383
self .__destHostKey .pop (clientMessage ["user" ])
384
384
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 )
385
390
386
391
387
392
@@ -457,6 +462,26 @@ def __talkToHost(self):
457
462
self .__addressUserNameMap [message ["address" ]] = destHost
458
463
self .__destHostKey [destHost ] = [message ["address" ], message ["Key" ]] # Username , Address, Key
459
464
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\n Get back soon:)\n " )
483
+ sys .exit (0 )
484
+
460
485
def handleClientMessage (self ,message ):
461
486
'''
462
487
handleClientMessage(String):
@@ -470,6 +495,8 @@ def handleClientMessage(self,message):
470
495
self .__listUsers ()
471
496
elif message == "connect" :
472
497
self .__talkToHost ()
498
+ elif message == "logout" :
499
+ self .logout ()
473
500
else :
474
501
print "Unknown Message"
475
502
@@ -493,4 +520,4 @@ def sendMessageToClient(self,message):
493
520
"IV" : iv ,
494
521
"data" : obj ,
495
522
"Nonce" : str (int (binascii .hexlify (os .urandom (8 )), base = 16 ))}
496
- ), self .__destHostKey [user ][0 ])
523
+ ), self .__destHostKey [user ][0 ])
0 commit comments