def process(link): msg = parse.msg(link.read_msg()) command_name = msg[0] args = msg[1] command = commands.get(command_name, None) if command is None: link.send_msg(gen.error(210001, "Unknown command '%s'" % command_name)) return None print "found %s" % command_name # noinspection PyCallingNonCallable return command(link, args)
def handle(self): sys.stderr.write('%d: -- NEW CONNECTION --\n' % os.getpid()) msg = None try: while True: try: if self.mode == 'connect': self.url, self.client_caps, self.repos, self.base_url = client.connect(self) if self.client_caps is None or self.repos is None: return self.mode = 'auth' elif self.mode == 'auth': if self.user is None: self.user = auth.perform_auth(self, self.server.users) self.mode = 'announce' else: self.send_msg(gen.success(gen.list(), gen.string(''))) self.mode = self.data self.data = None if self.user is None: return elif self.mode == 'announce': self.send_server_id() self.mode = 'command' elif self.mode == 'command': if self.command is None: self.command = command.process(self) else: self.command = self.command.process() elif self.mode == 'editor': editor.process(self) elif self.mode == 'report': report.process(self) else: raise ModeError("unknown mode '%s'" % self.mode) except ChangeMode as cm: self.mode = cm.args[0] if len(cm.args) > 1: self.data = cm.args[1] except EOF: msg = 'EOF' except socket.error as e: errno, msg = e except Exception: try: self.send_msg(gen.error(235000, traceback.format_exc())) except Exception as e1: print e1 raise sys.stderr.write('%d: -- CLOSE CONNECTION (%s) --\n' % (os.getpid(), msg))
def handle(self): sys.stderr.write('%d: -- NEW CONNECTION --\n' % os.getpid()) msg = None try: while True: try: if self.mode == 'connect': self.url, self.client_caps, self.repos, self.base_url = client.connect( self) if self.client_caps is None or self.repos is None: return self.mode = 'auth' elif self.mode == 'auth': if self.user is None: self.user = auth.perform_auth( self, self.server.users) self.mode = 'announce' else: self.send_msg( gen.success(gen.list(), gen.string(''))) self.mode = self.data self.data = None if self.user is None: return elif self.mode == 'announce': self.send_server_id() self.mode = 'command' elif self.mode == 'command': if self.command is None: self.command = command.process(self) else: self.command = self.command.process() elif self.mode == 'editor': editor.process(self) elif self.mode == 'report': report.process(self) else: raise ModeError("unknown mode '%s'" % self.mode) except ChangeMode as cm: self.mode = cm.args[0] if len(cm.args) > 1: self.data = cm.args[1] except EOF: msg = 'EOF' except socket.error as e: errno, msg = e except Exception: try: self.send_msg(gen.error(235000, traceback.format_exc())) except Exception as e1: print e1 raise sys.stderr.write('%d: -- CLOSE CONNECTION (%s) --\n' % (os.getpid(), msg))