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.

58 lines
1.6 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_list:
  18. self.user_list.append(desired_nickname)
  19. self.user_list.remove(user)
  20. message = ":" + user + " NICK " + desired_nickname
  21. return True
  22. else:
  23. self.user_list.remove(desired_nickname)
  24. if user in self.user_list:
  25. self.user_list.remove(user)
  26. # issue kill command (?)
  27. return True
  28. class IRCServer(socketserver.TCPServer):
  29. """
  30. The TCP Server class for demonstration.
  31. Note: We need to implement the Handle method to exchange data
  32. with TCP client.
  33. """
  34. def __init__(self, server_adress):
  35. self.servername = 'localhost'
  36. self.channels = {}
  37. self.clients = {}
  38. socketserver.TCPServer.__init__(self, server_adress, RequestHandler)
  39. if __name__ == "__main__":
  40. HOST, PORT = "localhost", 9999
  41. ircserver = IRCServer((HOST, PORT))
  42. ircserver.serve_forever()