def dccloop(self, event, s): sockfile = s.makefile('rw') #s.setblocking(True) self.register_fd(s) while 1: try: res = sockfile.readline() if not res: break res = res.rstrip() logging.info("< %s %s" % (event.origin, res)) e = Event() e.btype = "DCC" e.txt = res e.outer = sockfile e.origin = event.origin super().dispatch(e) except socket.timeout: time.sleep(0.01) except socket.error as ex: if ex.errno in [ socket.EAGAIN, ]: continue else: raise except Exception as ex: logging.error(get_exception()) sockfile.close()
def event(self): event = Event() event.btype = sname(self) event.txt = str(os.read(fd, 512), "utf-8") event.txt = event.txt.rstrip() event.origin = "root@shell" yield event
def cmnd(self, txt): event = Event() event._server = self._cfg.server event.btype = sname(self) event.origin = "user@bot" event.txt = txt self.dispatch(event) return event
def event(self): e = Event() e.server = self._cfg.server e.btype = sname(self) e.txt = input() e.txt = e.txt.rstrip() e.origin = "root@shell" return e
def testcmnds(event): cfg.workdir = "test.data" for cmnd in sorted(kernel._handlers.keys()): e = Event() e.btype = event.btype e.txt = "%s %s" % (cmnd, randomname()) e.origin = "test@bot" e.parse() event.reply("put %s" % e.txt) kernel.put(e)
def cmndrun(event): cfg.workdir = "test.data" for name in sorted(kernel.modules()): if name in ["meds.plugs.test", "meds.plugs.rss"]: continue mod = kernel.direct(name) for n in dir(mod): if n in exclude: continue func = getattr(mod, n, None) if func and type(func) in [types.FunctionType, types.MethodType]: if "event" in func.__code__.co_varnames: e = Event() e.btype = event.btype e._funcs.append(func) e.workdir = "test.data" e.origin = "test@bot" kernel.put(e)
def parsing(self, txt): rawstr = str(txt) obj = Event() obj.server = self._cfg.server obj.cc = self.cc obj.btype = sname(self) obj.arguments = [] arguments = rawstr.split() obj.origin = arguments[0] if obj.origin.startswith(":"): obj.origin = obj.origin[1:] if len(arguments) > 1: obj.command = arguments[1] if len(arguments) > 2: txtlist = [] adding = False for arg in arguments[2:]: if arg.startswith(":"): adding = True txtlist.append(arg[1:]) continue if adding: txtlist.append(arg) else: obj.arguments.append(arg) obj.txt = " ".join(txtlist) else: obj.command = obj.origin obj.origin = self._cfg.server try: obj.nick, obj.userhost = obj.origin.split("!") except: pass if obj.arguments: obj.target = obj.arguments[-1] else: obj.target = "" if obj.target.startswith("#"): obj.channel = obj.target if not obj.txt and len(arguments) == 1: obj.txt = arguments[1] if not obj.txt: obj.txt = rawstr.split(":")[-1] return obj