From c5def15e4ed046d3798261e98b4d27deb8ab06c1 Mon Sep 17 00:00:00 2001 From: PhilipTrauner Date: Mon, 2 Nov 2015 22:35:31 +0100 Subject: [PATCH] Foundation for command system --- Server/Server.py | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/Server/Server.py b/Server/Server.py index be6b41c..c4262fc 100644 --- a/Server/Server.py +++ b/Server/Server.py @@ -2,17 +2,45 @@ import Logging import DataTypes from .AsyncServer import Server +from .Broadcast import Broadcast -class vHandler(Server.Handler): +class Command: + def __init__(self, prefix, auth_required=True): + self.prefix = prefix + self.auth_required = auth_required + + def run(self, handler): + pass + + def __eq__(self, other): + return self.prefix == other.prefix + + +class Info(Command): + def __init__(self): + super().__init__("info", auth_required=False) + + 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): def setup(self): Logging.info("Handler for '%s' initalised." % self.info[0]) - self.authed = False self.users = self.kwargs.pop("users") + self.commands = self.kwargs.pop("commands") + self.sublime_broadcast = self.kwargs.pop("sublime_broadcast") + self.link_broadcast = self.kwargs.pop("link_broadcast") + self.client_type = None + self.authed = False + def handle(self, data, type): - if not self.authed: - if type == DataTypes.json: - self.auth(data) + if self.client_type == None: + temp = self.sock.recv() + if def finish(self): @@ -24,9 +52,10 @@ class vHandler(Server.Handler): 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" : "success"}) + self.sock.send({"auth" : 1}) self.authed = True return + self.sock.send({"auth" : 0}) self.sock.close() @@ -44,4 +73,6 @@ class User: return self.username -server = Server("127.0.0.1", 1337, vHandler, {"users" : [User("test", "123")]}) \ No newline at end of file +server = Server(("127.0.0.1", 3077), fl0wHandler, + {"users" : [User("test", "123")], "commands" : [Info()], + "sublime_broadcast" : Broadcast(), "link_broadcast" : Broadcast()}) \ No newline at end of file