Exemplo n.º 1
0
 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()
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
 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