Got Command system working \(^^)/
This commit is contained in:
parent
9de404cafe
commit
6bab8cf8f8
1 changed files with 30 additions and 49 deletions
|
@ -5,74 +5,55 @@ from .AsyncServer import Server
|
||||||
from .Broadcast import Broadcast
|
from .Broadcast import Broadcast
|
||||||
|
|
||||||
class Command:
|
class Command:
|
||||||
def __init__(self, prefix, auth_required=True):
|
def __init__(self):
|
||||||
self.prefix = prefix
|
self.setup()
|
||||||
self.auth_required = auth_required
|
|
||||||
|
|
||||||
def run(self, handler):
|
def setup(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def __eq__(self, other):
|
def run(self, data, handler):
|
||||||
return self.prefix == other.prefix
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Info(Command):
|
class Info(Command):
|
||||||
def __init__(self):
|
def run(self, data, handler):
|
||||||
super().__init__("info", auth_required=False)
|
handler.sock.send("Currently connected: %d" % len(handler.broadcast.socks))
|
||||||
|
|
||||||
def run(self, handler):
|
|
||||||
return ["Link Clients connected: %d | Sublime Clients connected: %d" %
|
|
||||||
(len(handler.link_broadcast), len(handler.sublime_broadcast)]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class fl0wHandler(Server.Handler):
|
|
||||||
|
|
||||||
|
class SublimeHandler(Server.Handler):
|
||||||
def setup(self):
|
def setup(self):
|
||||||
Logging.info("Handler for '%s' initalised." % self.info[0])
|
Logging.info("Handler for '%s' initalised." % self.info[0])
|
||||||
self.users = self.kwargs.pop("users")
|
|
||||||
self.commands = self.kwargs.pop("commands")
|
self.commands = self.kwargs.pop("commands")
|
||||||
self.sublime_broadcast = self.kwargs.pop("sublime_broadcast")
|
self.broadcast = self.kwargs.pop("broadcast")
|
||||||
self.link_broadcast = self.kwargs.pop("link_broadcast")
|
self.broadcast.add(self.sock)
|
||||||
self.client_type = None
|
self.current_prefix = None
|
||||||
self.authed = False
|
|
||||||
|
|
||||||
|
|
||||||
def handle(self, data, type):
|
|
||||||
if self.client_type == None:
|
def handle(self, data):
|
||||||
temp = self.sock.recv()
|
if type(data) == dict:
|
||||||
if
|
data_keys = list(data.keys())
|
||||||
|
if len(data_keys) == 1:
|
||||||
|
if data_keys[0] in self.commands:
|
||||||
|
self.current_prefix = data_keys[0]
|
||||||
|
self.commands[self.current_prefix].run(data[data_keys[0]], self)
|
||||||
|
else:
|
||||||
|
if self.current_prefix != None:
|
||||||
|
self.commands[self.current_prefix].run(data, self)
|
||||||
|
else:
|
||||||
|
if self.current_prefix != None:
|
||||||
|
self.commands[self.current_prefix].run(data, self)
|
||||||
|
|
||||||
|
|
||||||
def finish(self):
|
def finish(self):
|
||||||
|
self.broadcast.remove(self.sock)
|
||||||
Logging.info("%s disconnected." % self.info[0])
|
Logging.info("%s disconnected." % self.info[0])
|
||||||
|
|
||||||
|
|
||||||
def auth(self, collection):
|
|
||||||
if "auth" in collection:
|
|
||||||
if "user" and "pw" in collection["auth"]:
|
|
||||||
temp_user = User(collection["auth"]["user"], collection["auth"]["pw"])
|
|
||||||
if temp_user in self.users:
|
|
||||||
self.sock.send({"auth" : 1})
|
|
||||||
self.authed = True
|
|
||||||
return
|
|
||||||
self.sock.send({"auth" : 0})
|
|
||||||
self.sock.close()
|
|
||||||
|
|
||||||
|
|
||||||
class User:
|
server = Server(("127.0.0.1", 3077), SublimeHandler,
|
||||||
def __init__(self, username, password):
|
{"commands" : {"info" : Info()}, "broadcast" : Broadcast()})
|
||||||
self.username = username
|
|
||||||
self.password = password
|
|
||||||
|
|
||||||
def __eq__(self, other):
|
|
||||||
if self.username == other.username and self.password == other.password:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return self.username
|
|
||||||
|
|
||||||
|
|
||||||
server = Server(("127.0.0.1", 3077), fl0wHandler,
|
|
||||||
{"users" : [User("test", "123")], "commands" : [Info()],
|
|
||||||
"sublime_broadcast" : Broadcast(), "link_broadcast" : Broadcast()})
|
|
Reference in a new issue