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
57 lines
1.5 KiB
#!/usr/bin/python
|
|
|
|
import socketserver
|
|
|
|
|
|
class RequestHandler(socketserver.BaseRequestHandler):
|
|
|
|
def handle(self):
|
|
# self.request - TCP socket connected to the client
|
|
print("Hl")
|
|
self.data = self.request.recv(1024).strip()
|
|
print("{} sent:".format(self.client_address[0]))
|
|
print(self.data.decode())
|
|
# just send back ACK for data arrival confirmation
|
|
self.request.sendall("ACK from TCP Server".encode())
|
|
|
|
def ping(self, param):
|
|
return "PONG"
|
|
|
|
def command_pass(self, desired_password):
|
|
return desired_password == self.password
|
|
|
|
def command_nickname(self, user, desired_nickname):
|
|
|
|
if desired_nickname not in self.user_dict.keys():
|
|
self.user_dict[desired_nickname] = dict()
|
|
self.user_dict.pop(user)
|
|
return True
|
|
else:
|
|
self.user_dict.pop(desired_nickname)
|
|
if user in self.user_dict:
|
|
self.user_dict.pop(user)
|
|
# issue kill command (?)
|
|
return True
|
|
|
|
|
|
class IRCServer(socketserver.TCPServer):
|
|
"""
|
|
The TCP Server class for demonstration.
|
|
|
|
Note: We need to implement the Handle method to exchange data
|
|
with TCP client.
|
|
|
|
"""
|
|
|
|
def __init__(self, server_adress):
|
|
self.servername = 'localhost'
|
|
self.channels = {}
|
|
self.clients = {}
|
|
socketserver.TCPServer.__init__(self, server_adress, RequestHandler)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
HOST, PORT = "localhost", 9999
|
|
|
|
ircserver = IRCServer((HOST, PORT))
|
|
ircserver.serve_forever()
|