| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import socket, sys, datetime, threading, json
-
- class Client:
- def __init__(self):
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- print("Created socket object")
-
- self.client_name = "CLI"
-
- self.server_ip = "cubes.link"
- self.server_port = 1337
- self.server_address = (self.server_ip, self.server_port)
-
- a = {"header":"connection",
- "client name":self.client_name}
- self.send(a, self.server_address)
-
- def send(self, data, addr):
- data = json.dumps(data).encode()
- self.sock.sendto(data, addr)
-
- def run(self):
- while True:
- data, addr = self.sock.recvfrom(65507)
- a = json.loads(data)
- header = a["header"]
-
- if header == "response":
- message = a["message"]
- client_name = a["client name"]
- print(client_name + " >> " + message)
-
- elif header == "connection":
- motd = a["motd"]
- client_name = a["client name"]
- print(">> " + client_name + " <<")
-
- class Commands:
- def __init__(self):
- self.commands={"test":self.test,
- "stop":self.stop}
- self.running = True
-
- def test(self, params):
- print("this is a test command")
-
- def stop(self, params):
- print("this doesn't do anything rn")
-
- def run(self):
- while self.running:
- text = input()
- if text[0] == "/":
- parts = text.split(" ")
- command = parts[0].strip("/")
- params = parts.pop(0)
- if command in self.commands:
- self.commands[command](params)
- else:
- a = {"header":"message",
- "message":text,
- "client name":client.client_name}
- client.send(a, client.server_address)
-
- client = Client()
- commands = Commands()
-
- client_thread = threading.Thread(target = client.run)
- commands_thread = threading.Thread(target = commands.run)
-
- client_thread.start()
- commands_thread.start()
|