You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.5 KiB

  1. #!/usr/bin/python
  2. import socketserver
  3. class RequestHandler(socketserver.BaseRequestHandler):
  4. def handle(self):
  5. # self.request - TCP socket connected to the client
  6. print("Hl")
  7. self.data = self.request.recv(1024).strip()
  8. print("{} sent:".format(self.client_address[0]))
  9. print(self.data.decode())
  10. # just send back ACK for data arrival confirmation
  11. self.request.sendall("ACK from TCP Server".encode())
  12. def ping(self, param):
  13. return "PONG"
  14. def command_pass(self, desired_password):
  15. return desired_password == self.password
  16. def command_nickname(self, user, desired_nickname):
  17. if desired_nickname not in self.user_dict.keys():
  18. self.user_dict[desired_nickname] = dict()
  19. self.user_dict.pop(user)
  20. return True
  21. else:
  22. self.user_dict.pop(desired_nickname)
  23. if user in self.user_dict:
  24. self.user_dict.pop(user)
  25. # issue kill command (?)
  26. return True
  27. class IRCServer(socketserver.TCPServer):
  28. """
  29. The TCP Server class for demonstration.
  30. Note: We need to implement the Handle method to exchange data
  31. with TCP client.
  32. """
  33. def __init__(self, server_adress):
  34. self.servername = 'localhost'
  35. self.channels = {}
  36. self.clients = {}
  37. socketserver.TCPServer.__init__(self, server_adress, RequestHandler)
  38. if __name__ == "__main__":
  39. HOST, PORT = "localhost", 9999
  40. ircserver = IRCServer((HOST, PORT))
  41. ircserver.serve_forever()